import { walk } from "./util";
export declare type ForcedBreakType = 'always' | 'page' | 'column' | 'left' | 'right' | 'recto' | 'verso' | '-ps-column-span';
export interface Flow {
    range: Range;
    pageName: string;
    pageGroupStart: boolean;
    breakType: ForcedBreakType;
    maxTextLength: boolean;
}
/** Iterate over block elements except inner SVG elements */
export declare const flowPredicate: walk.NodePredicate<HTMLElement | SVGSVGElement>;
/**
 * Iterator of continuous flow
 *
 * A continuous flow is a range of contents not interrupted by forced page breaks.
 */
export declare class FlowIterator implements Iterable<Flow> {
    elements: walk.TypedTreeWalker<Element>;
    rootPageName: string;
    remaining: Range;
    forcedBreakTypes: ForcedBreakType[];
    nextBreakType: ForcedBreakType;
    nextPageGroupStart: boolean;
    maxTextLength: number;
    resetOnNext: boolean;
    columnSpanBreak: 'box' | 'element';
    pageNames: string[];
    /**
     * ContinuousFlowIterator constructor
     * @param root              The root element to parse
     * @param forcedBreakTypes  List of values to use as forced break
     * @param maxTextLength
     * @param firstBreakType    Type of the break, usefull on repagination
     */
    constructor(root: Element, forcedBreakTypes: ForcedBreakType[], maxTextLength?: number, firstBreakType?: ForcedBreakType);
    [Symbol.iterator](): Iterator<Flow>;
    reset(): void;
    /**
     * Iterate to the next page break start
     */
    next(): Flow;
    _checkBreakAfter(currentElement: HTMLElement, flow: Flow, customStyle?: CSSStyleDeclaration): ForcedBreakType | null;
}
