import type { ISDKConfig } from '../config';
import type { LanguageConfig } from '../translation/types';
import type { IVideoData, IVKVideoPlayerConfig } from '../types';
import { type QualityLimits, type Seconds } from '@vkontakte/videoplayer-shared';
import { InterfaceLanguage } from '@vkontakte/videoplayer-shared';
import { type PlaybackRate } from '@vkontakte/videoplayer-core';
import type { IStatContext } from '@vkontakte/videoplayer-statistics';
import { ThinOneStat } from '@vkontakte/videoplayer-statistics';
import { AnnotationsApi } from '../utils/webAPI/annotationsApi/annotationsApi';
import type { AdditionalContextMenuItem, AdditionalSettingsMenuItem } from '../components/Menus/subMenuTabs/types';
import type { AdditionalButton } from '../components/Controls/types';
import { SlotsApi } from '../utils/webAPI/slotsApi';
import { HTMLElement } from './HTMLElement';
export declare class VKVideoPlayer extends HTMLElement {
    private svelteStubComponent?;
    private svelteRootComponent?;
    /**
     * Слой, который живет на протяжении жизни плеера, не уничтожается между переключениями видео.
     */
    private sveltePersistentLayerComponent?;
    private svelteErrorComponent?;
    private store?;
    private microStoresRoot?;
    private statistics?;
    private sentry;
    private _shadowRoot;
    private playerContainer;
    private rootContainer;
    private stateContainer;
    private shadowRootContainer;
    private playerId;
    private uiConfig;
    private coreConfig;
    private statisticsConfig;
    private metaConfig;
    private interactiveController;
    private interactiveContainer;
    private graphMadePause;
    private currentPlayingVideoIndex;
    private needToRepeatPlaylist;
    private videoConfig;
    private pictureInPictureApi;
    private mediaSessionApi;
    private unsubscribePlayerPhaseSubscription;
    private readonly logger;
    private readonly log;
    private readonly subscription;
    private readonly interactiveSubscription;
    annotationsApi: AnnotationsApi | undefined;
    slotsApi: SlotsApi | undefined;
    private focusManager;
    private prevIsid;
    private isInited;
    private postponedInitParams;
    private internalsExposure;
    private shadowDOMCallbacksDisabled;
    private readonly fatalError$;
    constructor();
    private connectedCallback;
    private updatePersistentLayerProps;
    private disconnectedCallback;
    private initPlayerRootContainers;
    private needToShowNextPrevButtons;
    private isNextButtonActive;
    private isPrevButtonActive;
    private isControlDisabled;
    private getNextVideoInfo;
    private createOneStat;
    private createThinOneStat;
    private createPlayer;
    private addPlayerInfoSubscriptions;
    playNextVideo(): void;
    playPrevVideo(): void;
    private createPlayerWithCurrentVideo;
    private playPrevChapter;
    private seekToInteractive;
    private initInteractives;
    initPlayer(videoConfig: IVKVideoPlayerConfig, sdkConfig?: Partial<ISDKConfig>): void;
    private isOneVideoPlaylist;
    private updateVideos;
    /**
     * Обновление плейлиста. Будут перезаписаны все видео до текущего
     */
    updatePrevVideos(videos: IVideoData[]): void;
    /**
     * Обновление плейлиста. Будут перезаписаны все видео после текущего
     */
    updateNextVideos(videos: IVideoData[]): void;
    private initMediaSession;
    private setupMediaSessionForVideo;
    private setupMediaSessionForAds;
    moveTo(container: HTMLElement): void;
    play(): void;
    pause(): void;
    stop(): void;
    setMuted(muted: boolean): void;
    toggleSubtitle(): void;
    changeSubtitle(enabled: boolean, id?: string): void;
    hideControls(): void;
    showControls(): void;
    setPiPEnabled(enabled: boolean): void;
    setVolume(volume: number): void;
    setRepeat(repeat: boolean): void;
    seekTime(time: number): void;
    seekEpisodeStartTime(time: number): void;
    returnFocusToEpisodes(): void;
    setPlaybackRate(playbackRate: PlaybackRate): void;
    setAutoQualityLimits(limits: QualityLimits): void;
    /** включение режима автоматического качества (это не тоггл!) */
    setAutoQuality(): void;
    /**
     * __тоггл режима экономии трафика__
     *
     * - при включении так же будет включен режим автоматического качества
     * (если был выключен, например, ручным выбором качества пользователем)
     */
    toggleTrafficSaving(value: boolean): void;
    /**
     * __тоггл режима высокого качества__
     *
     * - при включении так же будет включен режим автоматического качества
     * (если был выключен, например, ручным выбором качества пользователем)
     */
    toggleHighQuality(value: boolean): void;
    changeAudioStream(id: string): void;
    addLanguage(config: LanguageConfig): void;
    setLanguage(language: InterfaceLanguage | string): Promise<void>;
    setLiveStart(videoData: IVideoData): void;
    setLiveWaitingStart(): void;
    /**
     * Идёт доигрывание трансляции
     */
    private isLiveTailPlaying;
    /**
     * @param forceImmediate Позволяет немедленно показать состояние ожидания, не дожидаясь окончания доигрывания буффера и попыток получить поток
     */
    setLiveWaitingRecover(forceImmediate?: boolean): void;
    setLiveWaitingRecord(): void;
    setLiveEnd(videoData: IVideoData): void;
    setLiveLowLatency(isLowLatency: boolean): void;
    setLooped(looped: boolean): void;
    getDebugData(): string;
    getDeviceId(): string | undefined;
    replayInteractiveVideo(): void;
    replayInteractiveChapter(callback?: () => void): Promise<void>;
    showInteractiveIndicatorTooltip(newValue: boolean, useTimeout?: boolean): void;
    switchToActiveLive(): void;
    updateAdditionalSettingsItem(itemId: string, fields: Partial<Omit<AdditionalSettingsMenuItem, 'id' | 'type'>>): void;
    addAdditionalSettingsItem(newItem: AdditionalSettingsMenuItem): void;
    removeAdditionalSettingsItem(itemId: string): void;
    updateAdditionalContextItem(itemId: string, fields: Partial<Omit<AdditionalContextMenuItem, 'id'>>): void;
    addAdditionalContextItem(newItem: AdditionalContextMenuItem): void;
    removeAdditionalContextItem(itemId: string): void;
    updateAdditionalButton(itemId: string, fields: Partial<Omit<AdditionalButton, 'id' | 'type'>>): void;
    addAdditionalButton(newButton: AdditionalButton): void;
    removeAdditionalButton(itemId: string): void;
    updateStatContext(statContext: Partial<IStatContext | ThinOneStat.IStatContext>): void;
    handleTimerNextVideo(state: boolean): void;
    togglePictureInPicture(): void;
    focus(): void;
    /**
     * Восстанавливает фокус на последнем сфокусированном элементе в плеере.
     */
    restoreFocus(): void;
    /**
     * Обработка внешнего события клавиатуры.
     * Метод preventDefault не будет вызван при обработке внешего события.
     * @param {KeyboardEvent} event Событие из внешнего обработчика
     * @returns {boolean} Было ли событие обработано внутри плеера
     */
    handleExternalKeyboardEvent(event: KeyboardEvent): boolean;
    setAutoplayNext(autoplayNext: boolean): void;
    getTotalViewTime(): Seconds | undefined;
    private unmountComponent;
}
