import type { Nullable } from "@vkontakte/videoplayer-shared"; import { Observable, ValueSubject } from "@vkontakte/videoplayer-shared"; import { InteractiveInterfaceClick } from "@vkontakte/videoplayer-statistics"; import type { Chapter, Manifest, AnyManifest, ManifestVideo, GraphEditChapter, GraphViewChapter } from "../../manifest"; import { type GlobalEvents } from "./utils/events"; import { type InteractiveRange } from "./utils/getInteractiveRanges"; import { type HistoryControllerState } from "./utils/HistoryController"; import type { IInteractiveOptions, IOptionalInteractiveOptions, VideoInfo } from "./types"; import type { IPlayer } from "@vkontakte/videoplayer-core"; import type { InstanceStatistics } from "../SeamlessController/InstanceManager"; declare enum INTERACTIVE_APP_STATES { created = 0, initiated = 1, ready = 2, destroyed = 3 } export declare class Interactives { private playerSubscriptions; private subscriptions; private globalEventEmitter; private animation; private seekToInteractiveController; private endedRanges; private gameControllers; private rootElement; private factories; private isFirstChapterFetched; private _options; private manifestController; private resizeManager; private readonly cssVarsManager; private historyController; private player; private interactiveEvents; private selectBranches; private seamlessController; private seamlessControllerSubs; private graph; private lastFrame; private noInteractionTimeout; private blinkAnimationRef; appState: INTERACTIVE_APP_STATES; state: { prevChapter$: ValueSubject>; isInitialChapter$: ValueSubject; isFirstChapter$: ValueSubject; isEndChapter$: ValueSubject; isInteractiveExpectation$: ValueSubject; isReplay$: ValueSubject; calledByInteractive$: ValueSubject; lastChapterChangeWasInitiatedByInteractive$: ValueSubject; disabledControls$: ValueSubject; interactiveRanges$: ValueSubject; isInteractiveTime$: ValueSubject; statistics$: ValueSubject>; isSeekable$: ValueSubject; }; events: GlobalEvents; constructor(options: IOptionalInteractiveOptions); private emitErrorEvent; private clearHistoryIfEnded; private initSubscriptions; private initSeamless; private handleSeamlessPlayerChanged; private onPlaybackStarted; private handlePositionChange; private registerVideoEvents; private destroyGameControllers; private setGameControllers; private getGameControllers; private checkIfSeekable; private updateLastEventInfo; private pushChapterToHistory; private completeInteractiveRange; private handleFakeRemoval; private clearNoInteractionTimeout; private reset; private toggleBlinkAnimation; private updateControlsShadowStyles; get options(): IInteractiveOptions; init(): void; setManifest(manifest: AnyManifest | string): Promise; setPlayer(player: IPlayer): void; setChapter({ chapterId, pushToHistory, playPrev }?: { chapterId?: string; pushToHistory?: boolean; playPrev?: boolean; }): Promise; getStatEvents(): { click$: Observable; nextMovie$: Observable; }; toggleGraphView(show?: boolean): Promise; setVisitedChapters(chapterIds: string[]): void; updateGraphVideosInfo(videosInfo: VideoInfo[]): void; deadEndCheck(): boolean; /** * Проверяет, удалены ли все контроллы. * * Контрол считается удалённым, если его флаг `isRemoved` установлен в `true`. * Однако, есть исключение для `openURI` — если с ним было взаимодействие, он * получит `isRemoved = true`, но может оставаться в DOM до завершения эпизода * (`endTime`). * * Из-за этого метод может вернуть `true` (что все контроллы "удалены"), хотя * `openURI` всё ещё присутствует в DOM. * * includeWillRemovedState - нужно ли считать состояние 'willRemoved' как * 'removed' */ allControlsAreRemoved(includeWillRemovedState?: boolean): boolean; isEndedExpectation(): boolean; playPrevChapter(): void; setDisabledControls(value: boolean): void; isSupport(manifest?: Nullable): boolean; getInitialVideoInfo(): { videoId: string | null; chapterId: string; }; getHistoryState(): HistoryControllerState; /** * @deprecated Используйте this.state.isSeekable$ */ getIsSeekable(): ValueSubject; getInteractiveRanges(): InteractiveRange[]; getNextInteractiveStartTime(offsetMs?: number): number | null; getChapterBranches(chapterId?: string): Array<{ chapter: Chapter; graph: GraphEditChapter | GraphViewChapter | undefined; media: ManifestVideo; }>; getCurrentChapter(): { chapter: Nullable; media: Nullable; graph: Nullable; }; getCurrentManifest(): Nullable; on(eventName: string, fn: AnyFn): this; off(eventName: string, fn: AnyFn): this; once(eventName: string, fn: AnyFn): this; destroy(): void; } export {};