import { IComputeRowListPayload, IDrawOption, IDrawRowPayload, IGetImageOption, IGetValueOption } from '../../interface/Draw';
import { IEditorData, IEditorOption, IEditorResult } from '../../interface/Editor';
import { IElement } from '../../interface/Element';
import { Position } from '../position/Position';
import { ImageParticle } from './particle/ImageParticle';
import { TextParticle } from './particle/TextParticle';
import { TableParticle } from './particle/table/TableParticle';
import { HyperlinkParticle } from './particle/HyperlinkParticle';
import { Header } from './frame/Header';
import { EditorMode, PaperDirection } from '../../dataset/enum/Editor';
import { CheckboxParticle } from './particle/CheckboxParticle';
import { RadioParticle } from './particle/RadioParticle';
import { DeepRequired, IPadding } from '../../interface/Common';
import { DateParticle } from './particle/date/DateParticle';
import { IMargin } from '../../interface/Margin';
import { I18n } from '../i18n/I18n';
import { ImageObserver } from '../observer/ImageObserver';
import { Footer } from './frame/Footer';
import { ListParticle } from './particle/ListParticle';
import { Group } from './interactive/Group';
import { LineBreakParticle } from './particle/LineBreakParticle';
import { default as jsPDF, Context2d } from 'jspdf';
import { IRow, IRowElement } from '../../interface/Row';
import { ITd } from '../../interface/table/Td';
import { IForceUpdateOption } from '@hufe921/canvas-editor/dist/src/editor/interface/Draw';
import { IUpdateOption } from '@hufe921/canvas-editor/dist/src/editor/interface/Editor';

export type PdfOptions = {
    loadDefaultFonts?: boolean;
};
export declare class DrawPdf {
    private fakeCanvas;
    private fakeCtx;
    private pageList;
    private ctxList;
    private ctxListInfos;
    private pageNo;
    private pagePixelRatio;
    private mode;
    private options;
    private position;
    private elementList;
    private pdf;
    private i18n;
    private margin;
    private background;
    private group;
    private underline;
    private strikeout;
    private highlight;
    private imageParticle;
    private laTexParticle;
    private textParticle;
    private tableParticle;
    private pageNumber;
    private lineNumber;
    private waterMark;
    private placeholder;
    private header;
    private footer;
    private hyperlinkParticle;
    private dateParticle;
    private separatorParticle;
    private superscriptParticle;
    private subscriptParticle;
    private checkboxParticle;
    private radioParticle;
    private blockParticle;
    private listParticle;
    private lineBreakParticle;
    private pageBorder;
    private imageObserver;
    private LETTER_REG;
    private WORD_LIKE_REG;
    private rowList;
    private pageRowList;
    private printModeData;
    defaultFontsLoadedPromise: Promise<boolean>;
    constructor(options: DeepRequired<IEditorOption>, data: IEditorData, pdfOptions?: PdfOptions);
    getCtx2d(): Context2d;
    getFakeCtx(): CanvasRenderingContext2D;
    measureText(font: string, text: string): TextMetrics;
    downloadFont(url: string, fileName: string, id: string, type: string): Promise<unknown>;
    _addDefaultFont(): Promise<boolean>;
    loadDefaultFonts(): Promise<boolean>;
    addFont(url: string, fileName: string, id: string, type: string): Promise<boolean>;
    getFont(el: IElement): string;
    getLetterReg(): RegExp;
    getMode(): EditorMode;
    filterAssistElement(elementList: IElement[]): IElement[];
    setMode(payload: EditorMode): void;
    getOriginalWidth(): number;
    getOriginalHeight(): number;
    getWidth(): number;
    getHeight(): number;
    getMainHeight(): number;
    getMainOuterHeight(): number;
    getCanvasWidth(pageNo?: number): number;
    getCanvasHeight(pageNo?: number): number;
    getInnerWidth(): number;
    getOriginalInnerWidth(): number;
    getContextInnerWidth(): number;
    getMargins(): IMargin;
    getOriginalMargins(): number[];
    getPageGap(): number;
    getOriginalPageGap(): number;
    getPageNumberBottom(): number;
    getMarginIndicatorSize(): number;
    getDefaultBasicRowMarginHeight(): number;
    getTdPadding(): IPadding;
    getPageNo(): number;
    setPageNo(payload: number): void;
    getPage(pageNo?: number): HTMLCanvasElement;
    getPageList(): HTMLCanvasElement[];
    getPageCount(): number;
    getTableRowList(sourceElementList: IElement[]): IRow[];
    getOriginalRowList(): IRow[];
    getRowList(): IRow[];
    getPageRowList(): IRow[][];
    getPdf(): jsPDF;
    getCtx(): CanvasRenderingContext2D;
    getOptions(): DeepRequired<IEditorOption>;
    getGroup(): Group;
    getPosition(): Position;
    getLineBreakParticle(): LineBreakParticle;
    getTextParticle(): TextParticle;
    getHeaderElementList(): IElement[];
    getTableElementList(sourceElementList: IElement[]): IElement[];
    getElementList(): IElement[];
    getMainElementList(): IElement[];
    getOriginalElementList(): IElement[];
    getOriginalMainElementList(): IElement[];
    getFooterElementList(): IElement[];
    getTd(): ITd | null;
    spliceElementList(elementList: IElement[], start: number, deleteCount: number, ...items: IElement[]): void;
    getImageParticle(): ImageParticle;
    getTableParticle(): TableParticle;
    getHeader(): Header;
    getFooter(): Footer;
    getHyperlinkParticle(): HyperlinkParticle;
    getDateParticle(): DateParticle;
    getListParticle(): ListParticle;
    getCheckboxParticle(): CheckboxParticle;
    getRadioParticle(): RadioParticle;
    getImageObserver(): ImageObserver;
    getI18n(): I18n;
    getRowCount(): number;
    getDataURL(payload?: IGetImageOption): Promise<string[]>;
    setValue(payload: Partial<IEditorData>): Promise<void>;
    setPageScale(payload: number): void;
    getPagePixelRatio(): number;
    setPagePixelRatio(payload: number | null): void;
    setPageDevicePixel(): void;
    setPaperSize(width: number, height: number): void;
    setPaperDirection(payload: PaperDirection): void;
    setPaperMargin(payload: IMargin): void;
    getValue(options?: IGetValueOption): IEditorResult;
    setEditorData(payload: Partial<IEditorData>): void;
    private _formatContainer;
    private _createPage;
    private _initPageContext;
    getElementFont(el: IElement, scale?: number): string;
    getElementSize(el: IElement): number;
    getElementRowMargin(el: IRowElement): number;
    forceUpdate(options?: IForceUpdateOption): void;
    updateOptions(payload: IUpdateOption): void;
    computeRowList(payload: IComputeRowListPayload): IRow[];
    private _computePageList;
    private _drawHighlight;
    drawRow(ctx2d: Context2d, payload: IDrawRowPayload): void;
    private _drawFloat;
    private _clearPage;
    private _drawPage;
    private _immediateRender;
    render(payload?: IDrawOption): void;
    destroy(): void;
    clearSideEffect(): void;
}
