import { ValueSubject } from '@vkontakte/videoplayer-shared';
import type { ExternalPictureInPictureEventHandlers, IPictureInPictureApi, PictureInPictureSettings } from '../../../types';
import { PictureInPictureType } from '../../../types';
export declare class PictureInPictureApi implements IPictureInPictureApi {
    private isRequested;
    private videoElement;
    private playerContainer;
    private svelteContext;
    private externalEventHandlers;
    private readonly eventHandlers;
    info: {
        isActive$: ValueSubject<boolean>;
        isEnabled$: ValueSubject<boolean>;
        type: PictureInPictureType;
    };
    constructor({ enabled }?: PictureInPictureSettings);
    /**
     * Флаг показывает, есть ли в целом возможность использовать pip в данном браузере, поддерживается ли это.
     */
    isSupported(): boolean;
    /**
     * Флаг показывает, находится ли пользователь в режиме pip.
     */
    isActive(): boolean;
    setContext(svelteContext: Map<unknown, unknown>): void;
    revealPictureInPicture(): Promise<void>;
    request(): Promise<void>;
    exit(): Promise<void>;
    assignPlayerContainer(playerContainer: HTMLElement): void;
    updateVideoElement(): void;
    private addEventHandlers;
    setExternalEventHandlers(externalEventHandlers: ExternalPictureInPictureEventHandlers): void;
    private removeEventHandlers;
    dispose(): Promise<void>;
    private onEnterPictureInPicture;
    private onLeavePictureInPicture;
    private onResize;
    /**
     * Флаг определяет может ли пользователь переходить в pip на уровне бизнес логике.
     */
    setEnabled(enabled: boolean): void;
    /**
     * для сафари нужно корректно обновить состояние пипа, потому что если мы попали сюда
     * из за креша провайдера + клика на выход из пип-а, то сафари может не успеть прислать
     * leavepictureinpicture на старый элемент из за чего UI застрянет в неправильном состоянии
     */
    private waitForSafariLeavePictureInPicture;
}
export declare function isInstanceOfPictureInPictureApi(pictureInPictureApi?: IPictureInPictureApi): pictureInPictureApi is PictureInPictureApi;
