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<PDFDocumentProxy | undefined>;
    pagesContainerRef: ShallowRef<HTMLDivElement | undefined>;
    viewMode: Ref<ViewMode>;
    focusedPage: MaybeRef<ViewerPdfPage | undefined>;
    currentScale: Ref<number>;
    onScaleRequest?: (newScale: number, options?: {
        immediate?: boolean;
        origin?: [number, number];
    }) => Promise<void>;
}
/**
 * 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<UseScaleProps>, scaleCallback?: ((event: UseScaleCallback) => void) | undefined) => {
    currentScale: Ref<number, number>;
    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;
