import { MaybeRef, Ref, ShallowRef, UnwrapRef } from 'vue'; import type { UseScaleCallback, ViewerPdfPage } from '@/utils/types'; import { ViewMode, ZoomLevel } from '@/utils/enumerators'; import type { PDFDocumentProxy } from 'pdfjs-dist'; interface UseScaleProps { pdfDocument: ShallowRef; pagesContainerRef: ShallowRef; viewMode: Ref; focusedPage: MaybeRef; currentScale: Ref; onScaleRequest?: (newScale: number, options?: { immediate?: boolean; origin?: [number, number]; }) => Promise; } /** * Composable for handling zoom operations. * Calculates scale for ZoomLevel presets and delegates actual scaling to useVirtualPages. * * @param props - Scale-related props including PDF document, container, and callbacks * @param scaleCallback - Optional callback for external scale change listeners */ declare const useScale: (props: UnwrapRef, scaleCallback?: ((event: UseScaleCallback) => void) | undefined) => { currentScale: Ref; zoom: (scale: number | ZoomLevel, options?: { immediate?: boolean; origin?: [number, number]; }) => void; zoomControl: { scale: number; zoom: (scale: number | ZoomLevel, options?: { immediate?: boolean | undefined; origin?: [number, number] | undefined; } | undefined) => void; }; }; export default useScale;