import type { Spread as SpreadData } from "../layout/spreadLayout";
import { type WorkerClient } from "../../../worker/index.js";
import { type PageRotation, type PageInfo } from "../state";
import { type Annotation } from "../annotation";
import type { LayoutPage } from "../../../worker/index.js";
import type { SearchMatch } from "../state";
import type { I18n } from "../i18n/index.js";
export interface HighlightedAnnotation {
    pageIndex: number;
    bounds: {
        x: number;
        y: number;
        width: number;
        height: number;
    };
}
export interface SpreadRenderOptions {
    docId: string;
    scale: number;
    dpi: number;
}
/**
 * How to crop pages to contentRect in continuous view mode.
 * - "none": no cropping (paged mode)
 * - "vertical": crop top/bottom only, keep full page width (Word/PDF/PPTX continuous)
 * - "full": crop all four sides (XLSX grid continuous)
 */
export type CropMode = "none" | "vertical" | "full";
export interface SpreadLayoutOptions {
    pageInfos: readonly PageInfo[];
    scale: number;
    dpi: number;
    rotation: PageRotation;
    pageSpacing: number;
    /** How to crop pages to contentRect (continuous view mode) */
    cropMode?: CropMode;
}
/**
 * Spread component - renders one or two pages side by side.
 * Empty slots render as blank placeholders that preserve layout.
 */
export declare function createSpread(data: SpreadData, showAttribution?: boolean, i18n?: I18n): {
    el: HTMLDivElement;
    mount: (container: HTMLElement) => void;
    destroy: () => void;
    render: (workerClient: WorkerClient, options: SpreadRenderOptions) => Promise<void>;
    updateLayout: (options: SpreadLayoutOptions) => void;
    updateAnnotations: (annotations: Map<number, Annotation[]>, options: SpreadLayoutOptions, highlightedAnnotation?: HighlightedAnnotation | null) => void;
    updateTextLayer: (textContent: Map<number, LayoutPage>, options: SpreadLayoutOptions) => void;
    updateSearchHighlights: (matches: SearchMatch[], activeIndex: number, options: SpreadLayoutOptions) => void;
    resetRenderKeys: () => void;
    getElement: () => HTMLDivElement;
    getData: () => SpreadData;
};
export type SpreadComponent = ReturnType<typeof createSpread>;
//# sourceMappingURL=Spread.d.ts.map