import { BehaviorSubject, Observable, Subject } from 'rxjs'; import { Context } from '../../context/Context'; import { HookManager } from '../../hooks/HookManager'; import { ReaderSettingsManager } from '../../settings/ReaderSettingsManager'; import { Spine } from '../../spine/Spine'; import { SpinePosition, UnboundSpinePosition } from '../../spine/types'; import { AbstractPosition } from '../../types'; import { ReactiveEntity } from '../../utils/ReactiveEntity'; import { Viewport } from '../../viewport/Viewport'; import { NavigationModeController, NavigationModeControllerNavigationEntry } from '../types'; import { RelativeViewport } from '../../viewport/types'; export declare class ScrollPosition extends AbstractPosition { } export declare class UnboundScrollPosition extends AbstractPosition { readonly __symbol: symbol; } export type ScrollNavigationEntry = NavigationModeControllerNavigationEntry; export declare class ScrollNavigationController extends ReactiveEntity<{ element: HTMLElement | undefined; }> implements NavigationModeController { protected viewport: Viewport; protected settings: ReaderSettingsManager; protected hookManager: HookManager; protected spine: Spine; protected context: Context; protected navigateSubject: Subject; protected scrollingSubject: BehaviorSubject; isNavigating$: Observable; userScroll$: Observable; constructor(viewport: Viewport, settings: ReaderSettingsManager, hookManager: HookManager, spine: Spine, context: Context); protected applyNavigationPosition: ({ position }: ScrollNavigationEntry) => void; update(value: Partial<{ element: HTMLElement | undefined; }>): void; destroy(): void; navigate(navigation: NavigationModeControllerNavigationEntry): void; isActive: () => boolean; getNavigationVisibleArea: () => RelativeViewport; fromScrollPosition(position: UnboundScrollPosition | ScrollPosition): UnboundSpinePosition; fromSpinePosition(position: UnboundSpinePosition | SpinePosition): ScrollPosition; get scrollPosition(): ScrollPosition; }