import { ObservedValueOf } from 'rxjs'; import { Reader } from '../../reader'; import { ReactiveEntity } from '../../utils/ReactiveEntity'; import { ZoomPosition } from './types'; import { ScrollNavigationController } from '../..'; export type ZoomControllerState = { isZooming: boolean; currentScale: number; currentPosition: ZoomPosition; }; export declare class ZoomController extends ReactiveEntity { protected reader: Reader; private enterSubject; private exitSubject; constructor(reader: Reader); enter(options?: ObservedValueOf): void; exit(options?: ObservedValueOf): void; move(position: { x: number; y: number; }, options?: { constrain?: "within-viewport"; }): void; scaleAt(userScale: number, options?: { constrain?: "within-viewport"; }): void; protected updateZoom(scale: number, position?: ZoomPosition, options?: { constraints?: (position: ZoomPosition, scale: number) => ZoomPosition; }): void; protected applyZoom(scale: number, position: { x: number; y: number; }): void; protected get isControlled(): boolean; protected get scrollNavigationController(): ScrollNavigationController; protected get viewport(): { element: HTMLElement; pageSize: { width: number; height: number; }; width: number; height: number; }; }