import type { ExactVideoQuality, Seconds, IAppTracerConfig, TracerType } from "@vkontakte/videoplayer-shared"; import type { IOptionalTuningConfig as ICoreConfig } from "@vkontakte/videoplayer-core"; import { InterfaceLanguage } from "@vkontakte/videoplayer-shared"; import type { RecursivePartial } from "@vkontakte/videoplayer-shared"; import type { IOptionalConfig as IStatisticsConfig } from "@vkontakte/videoplayer-statistics"; import type { Milliseconds } from "@vkontakte/videoplayer-shared"; import type { Size } from "./types"; type ForceOrRelay = boolean | undefined; export declare enum LogoType { VK = "vk", VK_VIDEO = "vk_video", APP_STORE = "app_store", PLAY_MARKET = "play_market", VK_VIDEO_MOBILE = "vk_video_mobile" } /** * Определяет, когда показывать заголовок видео. * fullscreen - только в фулскрине(дефолтное поведение) * with-controls - показывается везде, когда контролы видны * never - не показывать * always - показыватьв всегда */ export type TitleShowBehaviour = "fullscreen" | "fullscreen-and-dpip" | "with-controls" | "never" | "always"; export interface IDpipConfig { initialSize?: Size; minimalView?: boolean; showPrevNextButtons?: boolean; showAutoplayToggle?: boolean; } export interface IAdsConfig { enable: ForceOrRelay; loadTimeout: Milliseconds; initTimeout: Milliseconds; runtimeTimeout: Milliseconds; slot?: number; /** @deprecated, Вместо этого используйте paramsOverride: { preview } */ preview?: number; paramsOverride?: Record; isMobileGoToSiteButton: boolean; useAdmanFromNPM: boolean; volumeMultiplier: number; isVsidOriginal: boolean; /** * Включает режим переиспользования видеоэлемента рекламы между инстансами плеера * (нужно для передачи разрешений браузера от одного плеера другому, например: стартовать со звуком) * (Врядли имеет смысл без такого же включенного флага в настройках ядра) */ reuseOwnVideoElement: boolean; /** * Бывает, что баннер без звука или не смог с ним стартануть * Этот флаг регулирует нужно ли передавать сомтояние мьюта в основной плеер */ preserveMutedState: boolean; } export interface IUIConfig { isMobile: ForceOrRelay; keepPlayerElement: boolean; disableInvisibleComponentsTimeout: Milliseconds; debugLog: boolean | { tag?: string; colors?: string[]; }; devNullLog: boolean; isSmoothVideoRotate: boolean; showSupport: boolean; supportLink: string; showLogo: ForceOrRelay; logoLink: string; logoType: LogoType; defaultLanguage: InterfaceLanguage; downloadVKLanguages: boolean; updateBuiltinLanguages: boolean; ads: IAdsConfig; /** * Если нет ранее сохранённого значения громкости будет использовано это */ volumeDefault: number; volumeMinRestore: number; loaderDelay: Milliseconds; allowChangingFullscreenTarget: boolean; minSubtitlesFontSize: number; autoSubtitlesTimeout: Milliseconds; trafficSavingLimit: ExactVideoQuality; highQualityLimit: ExactVideoQuality; episodeMinWidthPc: number; controls: { showOnStartupAtAutoplay: boolean; hideTimeout: Milliseconds; hideTimeoutMobile: Milliseconds; hideTimeoutInitial: Milliseconds; hideTimeoutFullscreen: Milliseconds; hideTimeoutCursor: Milliseconds; hideTimeoutTooltips: Milliseconds; collapseMobileUnmute: Milliseconds; hide360IconTimeout: Milliseconds; volumeBarTimeout: Milliseconds; hideHotKeyHelpers: Milliseconds; playbackRateMin: number; playbackRateMax: number; playbackRateStep: number; seekStepKeyboard: Milliseconds; seekStepMobile: Milliseconds; seekStepFrame: Milliseconds; volumeStepKeyboard: number; volumeStepWheel: number; }; hideThumbTimerAfterTouch: boolean; preventPauseOnVideoClick: boolean; features: { autoplay: boolean; statistics: boolean; thinStatistics: boolean; preload: boolean; subtitles: boolean; timelinePreview: boolean; episodes: boolean; fullscreen: boolean; mediaSession: boolean; /** * @deprecated Использовать slotsApi. */ annotations: boolean; /** * @deprecated Использовать slotsApi. */ annotationsInside: boolean; slots: boolean; download: boolean; pip: boolean; dpip: boolean | IDpipConfig; liveRewind: boolean; playbackRate: boolean; trafficSaving: boolean; episodesClustering: boolean; copyVideoLink: boolean; videoRotate: boolean; /** * @deprecated Используйте tracerType */ tracer: boolean; tracerType: TracerType; apptracer: IAppTracerConfig; interactiveGraph: boolean; interactiveResponsiveUi?: boolean; seekToInteractive: boolean; interactiveLastFrame: boolean; interactiveTextPermanent: boolean; interactiveHideTime: boolean; interactivePlayPrevChapter: boolean; interactiveTimeIndicator: boolean; interactiveTimeOpenUri: boolean; interactiveAreaControlShadow: boolean; interactiveControlsExpectTimeBlinkAnimation: boolean; interactiveControlsTapPlace: boolean; interactiveControlsFillAnimation: boolean; interactiveControlsHideAnimation: boolean; interactiveHistoryEndChapterFix: boolean; thumbTimer: boolean; hotKeyMapModal: boolean; hotKeyHelpers: boolean; saveDebugInfoToFile: boolean; additionalButtons: boolean; additionalButtonsDesktopControlPanelRight: boolean; additionalSettingsMenuItems: boolean; additionalContextMenuItems: boolean; contextMenuButton: boolean; audioLanguages: boolean; saveRate: boolean; fullscreenInternalTargetPlayerContainer: boolean; endScreen: boolean; autoplayNext: boolean; nextPrevButtons: boolean; previewNoEmptySpace: boolean; exposeInternalsToGlobal: boolean; qualityDetailsSubMenuEnabled: boolean; forceAutoQualityWhenSevereStallHappens: boolean; showSlowVideoNotification: boolean; maxCountShowSlowVideoNotification: number; timeoutShowSlowVideoNotification: number; forcePlayerDisplayBlock: boolean; /** * Отображать ли анимацию смены статуса проигрывания. */ playbackStatusShow: boolean; /** * Отображать ли анимацию при переключении видео на следующее или предыдущее. */ playbackStatusNextVideoShow: boolean; /** * Включает ранее выбранный язык субтитров при запуске видео */ initSubtitles: boolean; /** * При запуске предыдущего/следующего видео из MediaSession * вместо переключения на видео из конфига будут вызываться соответствубщие колбэки */ useCallbackForMediaSessionNextPrevClick: boolean; /** * Фикс производительности отрисовки. */ usePerformanceFix: boolean; /** * Включает восстановление выбранных настроек видео, * например, звуковой дорожки и субтитров */ userVideoPrefs: boolean; /** * сохраняет выбранные состояния плеера в localStorage только от user actions */ savePreferredStatesOnUserActionOnly: boolean; /** * Если включен то за зацикливание одного видео будет отвечать флаг loop */ useLoopSetting: boolean; doubleForwardAvailable: boolean; /** * Включает возможность точной перемотки. */ useRichSeek: boolean; /** * Выключает показ thumb перед запуском видео, если включен autoplay */ disableThumbUnstartedOnAutoplay: boolean; /** * При наведение на зону таймлайна таймлайн приподнимается от границ окна плеера. */ usePreviewTimelineWithHovering: boolean; /** добавляет перехват кликов (`event.stopPropagation()`) на уровне Root компонента плеера */ rootStopPropagation: boolean; /** расширяет высоту под-меню настроек в мобильной версии */ mobileSubMenuStretchHeight: boolean; /** перенос кнопки с логотипом вк из верхнего-левого угла в контролы около кнопки звука */ mobileVkLogoViewOnBottomControls: boolean; }; /** * Отключает вызов колбэка uiInfo.onPlayerSizeChanged при ресайзе обычного pip */ disablePiPResizeHandling: boolean; interactive: { historyMaxLength: number; noInteractionEventTimeout: number; }; view: { timelineSliderColor: string | null; timelineSliderHandleColor: string | null; timelineSliderFilledColor: string | null; timelineSliderLoadedColor: string | null; volumeSliderColor: string | null; volumeSliderHandleColor: string | null; volumeSliderFilledColor: string | null; controlsTimeColor: string | null; timelineSliderHandleActiveLiveColor: string | null; timelineSliderFilledActiveLiveColor: string | null; buttonColor: string | null; buttonToggleOnColor: string | null; focusedColor: string | null; font: string | null; focusedOutlineWidth: string | null; focusedOutlineRadius: string | null; controlsDesktopPaddingHorizontal: string | null; controlsDesktopPaddingHorizontalMinimalView: string | null; timelinePaddingHorizontal: string | null; settingsBackgroundColor: string | null; controlsGradientHeight: string | null; controlsGradient: string | null; }; /** уникальный идентификатор пользователя для сохранения настроек */ userSalt: string; /** * Время, которое нужно зажимать горячую клавишу, чтобы включилось х2 ускорение. */ doubleForwardActivationTime: number; playbackStatusAnimationDuration: number; /** * Продолжительность анимации для переключения видео. */ playbackStatusNextVideoAnimationDuration: number; /** * Определяет подходящую длительность видео, после которой можно использовать точную перемотку. * Передаются секунды. */ suitableDurationForUsingRichSeek: Seconds; titleShowBehaviour: TitleShowBehaviour; /** * Отключаем слоты по идентификаторам. */ disabledSlotIds: string[]; /** * Отключаем внешне переданные кнопки по идентификаторам. */ disabledAdditionalButtonIds: string[]; } export declare const defaultConfig: IUIConfig; export type IOptionalUIConfig = RecursivePartial; export declare const fillDefault: (partial: IOptionalUIConfig) => IUIConfig; export interface ISDKConfig { ui: RecursivePartial; core: ICoreConfig; statistics: IStatisticsConfig; meta?: string[]; } export declare const setConfig: (config: IUIConfig) => IUIConfig; export declare const getConfig: () => IUIConfig; export {};