import { DropCapDescriptor, Line, ParagraphBlock, ParagraphMeasure, ResolvedParagraphContent, Run, SdtMetadata, SourceAnchor } from '../../../../contracts/src/index.js';
import { MinimalWordLayout } from '../../../../../shared/common/list-marker-utils.js';
import { SdtAncestorOptions, SdtBoundaryOptions } from '../sdt/container.js';
import { BetweenBorderInfo } from './borders/index.js';
export type RenderedParagraphLineInfo = {
    el: HTMLElement;
    top: number;
    height: number;
};
export type ParagraphRenderLineInput = {
    block: ParagraphBlock;
    line: Line;
    lineIndex: number;
    isLastLine: boolean;
    availableWidth?: number;
    skipJustify?: boolean;
    preExpandedRuns?: Run[];
    resolvedListTextStartPx?: number;
    indentOffsetOverride?: number;
    paragraphMarkLeftOffsetOverride?: number;
};
export type ParagraphRenderLine = (input: ParagraphRenderLineInput) => HTMLElement;
export type ParagraphRenderDropCap = (descriptor: DropCapDescriptor, measure?: {
    width: number;
    height: number;
    lines: number;
    mode: 'drop' | 'margin';
}) => HTMLElement;
export type ParagraphContainerKind = 'body-fragment' | 'table-cell';
type ParagraphSpacingPolicy = {
    isFirstBlock: boolean;
    isLastBlock: boolean;
    paddingTop: number;
};
export type RenderParagraphContentParams = {
    doc: Document;
    frameEl: HTMLElement;
    block: ParagraphBlock;
    measure: ParagraphMeasure;
    containerKind: ParagraphContainerKind;
    width: number;
    localStartLine: number;
    localEndLine: number;
    linesOverride?: Line[];
    lineIndexOffset?: number;
    continuesFromPrev?: boolean;
    continuesOnNext?: boolean;
    markerWidth?: number;
    markerTextWidth?: number;
    wordLayout?: MinimalWordLayout;
    resolvedContent?: ResolvedParagraphContent;
    betweenInfo?: BetweenBorderInfo;
    sdtBoundary?: SdtBoundaryOptions;
    spacingPolicy?: ParagraphSpacingPolicy;
    ancestorContainerKey?: string | null;
    ancestorContainerSdt?: SdtMetadata | null;
    ancestorContainerKeys?: SdtAncestorOptions['ancestorContainerKeys'];
    ancestorContainerSdts?: SdtAncestorOptions['ancestorContainerSdts'];
    onSdtContainerChrome?: () => void;
    applySdtDataset: (el: HTMLElement | null, metadata?: SdtMetadata | null) => void;
    applyContainerSdtDataset?: (el: HTMLElement | null, metadata?: SdtMetadata | null) => void;
    renderLine: ParagraphRenderLine;
    renderDropCap?: ParagraphRenderDropCap;
    captureLineSnapshot?: (lineEl: HTMLElement, options?: {
        inTableParagraph?: boolean;
        wrapperEl?: HTMLElement;
        sourceAnchor?: SourceAnchor;
    }) => void;
    convertFinalParagraphMark?: boolean;
    lineTopOffset?: number;
    sourceAnchor?: SourceAnchor;
    contentControlsChrome?: 'default' | 'none';
};
export type RenderParagraphContentResult = {
    renderedHeight: number;
    totalHeight: number;
    renderedLines: RenderedParagraphLineInfo[];
};
export declare const renderParagraphContent: (params: RenderParagraphContentParams) => RenderParagraphContentResult;
export {};
//# sourceMappingURL=renderParagraphContent.d.ts.map