import { ImageBlock, ImageMeasure, ExclusionZone, DrawingBlock, DrawingMeasure, TableBlock, TableMeasure } from '../../contracts/src/index.js';
type FloatBlock = ImageBlock | DrawingBlock;
type FloatMeasure = ImageMeasure | DrawingMeasure;
export type FloatingObjectManager = {
    /**
     * Register an anchored drawing as an exclusion zone.
     * Should be called before laying out paragraphs.
     */
    registerDrawing(drawingBlock: FloatBlock, measure: FloatMeasure, anchorParagraphY: number, columnIndex: number, pageNumber: number): void;
    /**
     * Register an anchored/floating table as an exclusion zone.
     * Should be called during Layout Pass 1 before laying out paragraphs.
     */
    registerTable(tableBlock: TableBlock, measure: TableMeasure, anchorParagraphY: number, columnIndex: number, pageNumber: number): void;
    /**
     * Get all exclusion zones that vertically overlap the given line.
     * Used during paragraph layout to detect affected lines.
     */
    getExclusionsForLine(lineY: number, lineHeight: number, columnIndex: number, pageNumber: number): ExclusionZone[];
    /**
     * Compute available width for a line considering exclusion zones.
     * Returns reduced width and horizontal offset if exclusions present.
     */
    computeAvailableWidth(lineY: number, lineHeight: number, baseWidth: number, columnIndex: number, pageNumber: number): {
        width: number;
        offsetX: number;
    };
    /**
     * Get all floating images for a page (for debugging/painting).
     */
    getAllFloatsForPage(pageNumber: number): ExclusionZone[];
    /**
     * Clear all registered exclusion zones.
     */
    clear(): void;
    /**
     * Update layout context used for positioning and wrapping (columns, margins, page width).
     */
    setLayoutContext(columns: ColumnLayout, margins?: {
        left?: number;
        right?: number;
    }, pageWidth?: number): void;
};
type ColumnLayout = {
    width: number;
    gap: number;
    count: number;
};
export declare function createFloatingObjectManager(columns: ColumnLayout, margins?: {
    left?: number;
    right?: number;
}, pageWidth?: number): FloatingObjectManager;
/**
 * Compute horizontal position of anchored image based on alignment and offsets.
 */
export declare function computeAnchorX(anchor: NonNullable<ImageBlock['anchor']>, columnIndex: number, columns: ColumnLayout, imageWidth: number, margins?: {
    left?: number;
    right?: number;
}, pageWidth?: number): number;
export {};
//# sourceMappingURL=floating-objects.d.ts.map