import type { InterfaceLanguage } from "@vkontakte/videoplayer-shared"; import type { IOptionalTuningConfig, IPlayer } from "@vkontakte/videoplayer-core"; import type { IOneStat } from "@vkontakte/videoplayer-statistics"; import type { Loaders } from "../ManifestController/Loadable"; import type { HistoryApi, HistorySettings } from "./utils/HistoryController"; import type { Chapter, ManifestVideo } from "../../manifest"; export type { VideoInfo } from "@interactiveplatform/movika-graph-editor"; export type InteractiveProjectInfo = { videoId: string; pid?: string; title?: string; variantPayloadType?: string; }; export type RequiredOptions = "parentElement" | "fullscreenTargetElement"; export type IOptionalInteractiveOptions = Partial> & Required> & { config?: Partial; }; export type AnimationsFeatureToggles = Partial<{ areaControlShadow: boolean; controlsExpectTimeBlinkAnimation: boolean; controlsTapPlace: boolean; controlsFillAnimation: boolean; controlsHideAnimation: boolean; }>; export interface IInteractiveOptions { parentElement: HTMLElement; fullscreenTargetElement: HTMLElement; lang: InterfaceLanguage | string; config: { historyMaxLength: number; noInteractionEventTimeout: number; }; graph: boolean; lastFrame: boolean; initSeamless: boolean; permanentTextControls: boolean; interactiveTimeOpenUri: boolean; loaders: Partial; initChapterId?: string; projectInfo?: InteractiveProjectInfo; historyApi?: HistoryApi; historySettings?: HistorySettings; coreConfig?: IOptionalTuningConfig; vkVideoLoader?: (owner_id: string, video_id: string) => unknown; createOneStat?: (video: any, configOverwrite?: any) => IOneStat | undefined; /** * @deprecated * */ disableControlsOnPause?: boolean; disableTextControlContainerVisibilityEvents?: boolean; isTouch?: boolean; animationsFeatureToggles?: AnimationsFeatureToggles; enableAvPlayerSupport?: boolean; endChapterHistoryFix?: boolean; } export type ChapterChangedData = { chapter: Chapter; manifestVideo: ManifestVideo; }; export type PlayerChangedData = { player: IPlayer; config: T; }; export interface EachTickData { subjectId: string; subjectName: string; range: number[]; currentTime: number; isInteractiveTime: boolean; } export type IgnoreExpectState = { isExpectTime: boolean; hasOtherExpect: boolean; hasOpenURIEvent: boolean; hasOpenURIEventInCurrentContainer: boolean; isAllOpenURIEventsValid: boolean; isExpectEventForCurrentContainer: boolean; hasShouldOpenNowEvent: boolean; };