import type { IExternalTextTrack, ISources, PlaybackRate } from '@vkontakte/videoplayer-core';
import type { IStore } from '../../store';
import type { IMicroStoresRoot, IVideoLive, IVKVideoPlayerConfig } from '../../types';
import type { IUIConfig } from '../../config';
import type { Interactives } from '@vkontakte/videoplayer-interactive';
import KeyboardControls from '../KeyboardControls.svelte';
import type { QualityLimits } from '@vkontakte/videoplayer-shared';
import type { AdmanInitParams } from '../Ads/types';
export interface RootProps {
    sources: ISources | undefined;
    store: IStore;
    microStoresRoot: IMicroStoresRoot;
    videoConfig: IVKVideoPlayerConfig;
    uiConfig: IUIConfig;
    title: string;
    thumbUrl: string | undefined;
    interactiveContainer: HTMLElement | undefined;
    interactiveController: Interactives | undefined;
    subtitles: Omit<IExternalTextTrack, 'type'>[] | undefined;
    subtitlesForcedLanguage?: string;
    live: IVideoLive | undefined;
    preload: boolean;
    autoplay: boolean;
    volume?: number | undefined;
    muted?: boolean | undefined;
    fromTime: number;
    canRewindLive: boolean;
    showAds: boolean;
    adsSlotId?: number | undefined;
    adsParams?: AdmanInitParams['params'];
    adsAutoplayParam?: boolean;
    adsExternalApi?: AdmanInitParams['externalApi'];
    adsJson?: AdmanInitParams['json'];
    duration?: number | undefined;
    logoClickable: boolean;
    logoHidden: boolean;
    isMobile: boolean;
    showNextPrevButtons?: boolean;
    nextButtonActive?: boolean;
    prevButtonActive?: boolean;
    endScreenVideoTitle?: string | undefined;
    endScreenVideoThumb?: string | undefined;
    isOneVideoPlaylist?: boolean;
    supportLink: string;
    shadowRootContainer: HTMLElement;
    outerContainerRef: HTMLElement;
    fullScreenTarget?: HTMLElement | undefined;
    failoverHosts?: string[] | undefined;
    showMiniTimer?: boolean;
    saveRate: boolean;
    seekToInteractive?: () => void;
    playPrevChapter?: () => void;
    volumeMultiplier: number;
    showEndScreen?: boolean;
    showAutoplayNext: boolean;
    keyboardControls?: KeyboardControls | undefined;
    needToRepeatPlaylist?: boolean;
    getVideoDeeplink?: (timestamp: number) => string;
}
export interface RootExports {
    play: () => void;
    pause: () => void;
    setMuted: (muted: boolean) => void;
    toggleSubtitle: () => void;
    changeSubtitle: (enabled: boolean, id?: string) => void;
    changeAudioStream: (id: string) => void;
    hideControls: () => void;
    showControls: () => void;
    setVolume: (volume: number) => void;
    seekTime: (time: number) => void;
    seekEpisodeStartTime: (time: number) => void;
    returnFocusToEpisodes: () => void;
    setPlaybackRate: (playbackRate: PlaybackRate) => void;
    setAutoQualityLimits: (limits: QualityLimits) => void;
    keyboardControls?: {
        focus: () => void;
        handleExternalKeyboardEvent: (event: KeyboardEvent) => boolean;
    };
    setAutoQuality: () => void;
    toggleTrafficSaving: (value: boolean) => void;
    toggleHighQuality: (value: boolean) => void;
}
export interface PersistentLayerExports {
    startVideoChangedAnimation: (prev: boolean) => void;
}
