import { type StyledLine } from './styled-line.js';
import { type DOMElement, type DOMNode, type StickyHeader } from './dom.js';
import Output from './output.js';
import { type OutputTransformer } from './render-node-to-output.js';
export type StickyNodeInfo = {
    node: DOMElement;
    type: 'top' | 'bottom';
    cached?: StickyHeader;
    anchor?: DOMElement;
};
export declare function getStickyDescendants(node: DOMElement): StickyNodeInfo[];
export declare function renderStickyNode(stickyNode: DOMElement, options: {
    transformers?: OutputTransformer[];
    skipStaticElements: boolean;
    selectionMap?: Map<DOMNode, {
        start: number;
        end: number;
    }>;
    selectionStyle?: (line: StyledLine, index: number) => void;
    trackSelection?: boolean;
}): {
    naturalLines: readonly StyledLine[];
    stuckLines: readonly StyledLine[] | undefined;
    naturalHeight: number;
    maxHeaderHeight: number;
};
export declare function identifyActiveStickyNodes(stickyNodes: StickyNodeInfo[], node: DOMElement, scrollTop: number, viewportBottom: number): {
    stickyNode: DOMElement;
    type: "top" | "bottom";
    nextStickyNode?: DOMElement;
    nextStickyNodeInfo?: StickyNodeInfo;
    cached?: StickyHeader;
    anchor?: DOMElement;
}[];
export declare function renderActiveStickyNodes(activeStickyNodes: Array<{
    stickyNode: DOMElement;
    type: 'top' | 'bottom';
    nextStickyNode?: DOMElement;
    nextStickyNodeInfo?: StickyNodeInfo;
    cached?: StickyHeader;
    anchor?: DOMElement;
}>, node: DOMElement, output: Output, options: {
    x: number;
    y: number;
    newTransformers: OutputTransformer[];
    skipStaticElements: boolean;
    selectionMap?: Map<DOMNode, {
        start: number;
        end: number;
    }>;
    selectionStyle?: (line: StyledLine, index: number) => void;
    trackSelection?: boolean;
}): void;
