import { Value, type TNode, SplitValue } from '@tempots/dom';
export interface PdfPageViewerOptions {
    /** PDF source: URL string, Uint8Array, or ArrayBuffer */
    source: SplitValue<string | Uint8Array | ArrayBuffer>;
    /** Page number to display (1-based, default: 1) */
    page?: Value<number>;
    /**
     * How the PDF should fit in the available space:
     * - 'none': Use explicit scale value (see scale option)
     * - 'width': Fit to container width while maintaining aspect ratio
     * - 'height': Fit to container height while maintaining aspect ratio
     * - 'contain': Fit entire page in container (like CSS object-fit: contain)
     * - 'cover': Fill container, may crop (like CSS object-fit: cover)
     * Default: 'width'
     */
    fit?: Value<'none' | 'width' | 'height' | 'contain' | 'cover'>;
    /**
     * Explicit scale factor when fit='none'
     * Ignored when fit is not 'none'
     * Default: 1
     */
    scale?: Value<number>;
    /**
     * Rotation angle in degrees (0, 90, 180, 270)
     * Default: 0
     */
    rotation?: Value<0 | 90 | 180 | 270>;
    /**
     * Rendering quality/pixel density multiplier
     * Higher values produce sharper images but use more memory
     * Default: 2 (retina quality)
     */
    quality?: Value<number>;
    /**
     * Enable text selection layer overlay
     * Default: true
     */
    renderTextLayer?: Value<boolean>;
    /**
     * Enable annotation layer (forms, links, etc.)
     * Default: false
     */
    renderAnnotationLayer?: Value<boolean>;
    /**
     * Callback when page changes
     */
    onPageChange?: (page: number) => void;
    /**
     * Callback when PDF loads successfully
     */
    onLoadComplete?: (info: {
        numPages: number;
    }) => void;
}
/**
 * PdfPageViewer component that displays a single PDF page as a canvas element.
 * Lazy loads pdf.js library only when mounted.
 * Returns a canvas element directly - you can pass additional attributes as rest parameters.
 * Automatically adapts to container size when scale is 'fit' or 'fill'.
 *
 * @example
 * PdfPageViewer({ source: pdfUrl, page: 1 }, attr.class('my-canvas'))
 */
export declare function PdfPageViewer({ source, page, fit, scale, rotation, quality, renderTextLayer, renderAnnotationLayer, onPageChange, onLoadComplete, }: PdfPageViewerOptions, ...children: TNode[]): import("@tempots/dom").Renderable;
