import { Link, Locator, Publication, ReadingProgression } from "@readium/shared"; import { ContentProtectionConfig, PrintProtectionConfig, KeyboardPeripheral, KeyboardPeripheralEvent } from "@readium/navigator-html-injectables"; type cbb = (ok: boolean) => void; export interface KeyboardPeripheralEventData extends Omit { interactiveElement?: Element; } export type IKeyboardPeripheralsConfig = Array & { type: Exclude; }>; export interface ProgressionRange { start: number; end: number; } export interface VisualNavigatorViewport { readingOrder: string[]; progressions: Map; positions: number[] | null; } export interface IContentProtectionConfig extends ContentProtectionConfig { protectPrinting?: PrintProtectionConfig; checkAutomation?: boolean; checkIFrameEmbedding?: boolean; } export declare abstract class Navigator { abstract get publication(): Publication; abstract get currentLocator(): Locator; /** * Moves to the position in the publication corresponding to the given {Locator}. */ abstract go(locator: Locator, animated: boolean, cb: cbb): void; /** * Moves to the position in the publication targeted by the given link. */ abstract goLink(link: Link, animated: boolean, cb: cbb): void; /** * Moves to the next content portion (eg. page) in the reading progression direction. */ abstract goForward(animated: boolean, cb: cbb): void; /** * Moves to the previous content portion (eg. page) in the reading progression direction. */ abstract goBackward(animated: boolean, cb: cbb): void; /** * Destroy all resources associated with this navigator. Synonymous with "unmount" */ abstract destroy(): void; /** * Merges keyboard peripherals from content protection config with user-provided peripherals * Content protection peripherals are added first for priority, then user peripherals are added only if they don't conflict */ protected mergeKeyboardPeripherals(config: IContentProtectionConfig, keyboardPeripherals?: IKeyboardPeripheralsConfig): IKeyboardPeripheralsConfig; } export declare abstract class VisualNavigator extends Navigator { /** * Current reading progression direction. */ abstract get readingProgression(): ReadingProgression; /** * Moves to the left content portion (eg. page) relative to the reading progression direction. */ goLeft(animated: boolean | undefined, completion: cbb): void; /** * Moves to the right content portion (eg. page) relative to the reading progression direction. */ goRight(animated: boolean | undefined, completion: cbb): void; } export declare abstract class MediaNavigator extends Navigator { /** * Current playback state - is media currently playing? */ abstract get isPlaying(): boolean; /** * Current playback state - is media currently paused? */ abstract get isPaused(): boolean; /** * Duration of current media resource in seconds */ abstract get duration(): number; /** * Current time in seconds within the media resource */ abstract get currentTime(): number; /** * Play the current media resource */ abstract play(): void; /** * Pause the currently playing media */ abstract pause(): void; /** * Stop playback and reset to beginning */ abstract stop(): void; /** * Seek to specific time in seconds */ abstract seek(time: number): void; /** * Jump forward or backward by specified seconds */ abstract jump(seconds: number): void; /** * Skip forward by the configured interval */ abstract skipForward(): void; /** * Skip backward by the configured interval */ abstract skipBackward(): void; } export {};