import { Manifest } from '@prose-reader/shared'; import { Observable, ObservedValueOf, Subject } from 'rxjs'; import { CfiManager } from './cfi'; import { Context } from './context/Context'; import { Features } from './features/Features'; import { HookManager } from './hooks/HookManager'; import { Pagination } from './pagination/Pagination'; import { SettingsInterface } from './settings/SettingsInterface'; import { CoreInputSettings } from './settings/types'; import { Spine } from './spine/Spine'; import { SpineItemsManager } from './spine/SpineItemsManager'; import { SpineItemReference } from './spineItem/SpineItem'; import { Viewport } from './viewport/Viewport'; import { CoreHook } from './hooks'; import { InternalNavigationEntry, InternalNavigator, ScrollNavigationController, ControlledNavigationController, UserNavigationEntry, SpinePosition, SpineItemPosition, SpineItem, UnboundSpinePosition, NavigationVisibleArea, SpineBoundary, SpineItemsObserver, CoreOutputSettings } from '.'; import { getNavigationForSpineItemPage } from './navigation/resolvers/getNavigationForSpineItemPage'; import { PaginationInfo } from './pagination'; export type CreateReaderOptions = Partial & { manifest: Manifest; cfi?: string; ownerDocument?: Document; }; export type CreateReaderParameters = CreateReaderOptions; export type ContextSettings = Partial; export type ReaderInternal = ReturnType; type ReaderLayoutOptions = { immediate?: boolean; }; export declare const createReader: ({ manifest, cfi: _cfi, ownerDocument, ...inputSettings }: CreateReaderOptions) => { id: `${string}-${string}-${string}-${string}-${string}`; context: Context; spine: Spine; hookManager: HookManager< CoreHook>; cfi: CfiManager; navigation: { destroy: () => void; getNavigation: () => InternalNavigationEntry; internalNavigator: InternalNavigator; scrollNavigationController: ScrollNavigationController; controlledNavigationController: ControlledNavigationController; navigationState$: Observable<"free" | "busy">; navigate: (to: UserNavigationEntry) => void; lock: () => () => void; isLocked$: Observable; navigationResolver: { getNavigationForUrl: (url: string | URL) => { position: SpinePosition; spineItemId: string; } | undefined; getNavigationForSpineItemPage: (params: Omit[0], "spineItemsManager" | "spineItemNavigationResolver" | "spineLocator" | "viewport">) => SpinePosition; getNavigationFromSpineItemPosition: (params: { spineItemPosition: SpineItemPosition; spineItem: SpineItem; }) => SpinePosition; getNavigationForCfi: (cfi: string) => SpinePosition | undefined; getNavigationForLastPage: (spineItem: SpineItem) => SpinePosition; getNavigationForSpineIndexOrId: (indexOrId: number | string | SpineItem) => SpinePosition; getNavigationForPosition: (viewportPosition: SpinePosition | UnboundSpinePosition) => SpinePosition; getMostPredominantNavigationForPosition: (viewportPosition: SpinePosition) => SpinePosition; clampPositionInSpine: (position: SpinePosition | UnboundSpinePosition, size: NavigationVisibleArea) => UnboundSpinePosition; getBoundaryForPosition: (position: SpinePosition | UnboundSpinePosition, size?: NavigationVisibleArea) => SpineBoundary | undefined; isNavigationGoingForwardFrom: (to: SpinePosition, from: SpinePosition) => boolean; arePositionsDifferent: (a: { x: number; y: number; }, b: { x: number; y: number; }) => boolean; getAdjustedPositionForSpread: (position: SpinePosition | UnboundSpinePosition) => SpinePosition | UnboundSpinePosition; spineItemNavigator: { getNavigationForLastPage: (spineItem: SpineItem) => SpineItemPosition; getNavigationForPosition: (spineItem: SpineItem, position: SpineItemPosition) => SpineItemPosition; getNavigationFromNode: (spineItem: SpineItem, node: Node, offset: number) => SpineItemPosition; }; }; navigation$: Observable & { triggeredBy: InternalNavigationEntry["meta"]["triggeredBy"]; }>; position$: Observable< SpinePosition | UnboundSpinePosition>; }; spineItemsObserver: SpineItemsObserver; spineItemsManager: SpineItemsManager; layout: (options?: ReaderLayoutOptions) => void; mount: (containerElement: HTMLElement) => void; destroy: () => void; pagination: { readonly state: PaginationInfo; readonly state$: Observable>; }; settings: SettingsInterface, NonNullable< CoreOutputSettings | undefined>>; renderHeadless: (spineItem: SpineItemReference) => Observable<{ doc: Document; release: () => void; } | undefined>; viewport: Viewport; viewportState$: Observable<"free" | "busy">; viewportFree$: Observable<"free">; mounted$: Observable; features: Features; $: { destroy$: Subject; }; }; type Reader = ReturnType; export type { Reader };