import { IMeasurer } from '../../../measurer/measurer';
import { IModelManager } from '../../../model-manager';
import { FontInfoCache } from '../../../model/caches/hashed-caches/font-info-cache';
import { SubDocument, SubDocumentPosition } from '../../../model/sub-document';
import { MaskedCharacterPropertiesBundle } from '../../../rich-utils/properties-bundle';
import { Size } from '@devexpress/utils/lib/geometry/size';
import { FixedInterval } from '@devexpress/utils/lib/intervals/fixed';
import { RunInfo, ImportedParagraphListInfo } from './containers/runs';
import { TableInfo } from './containers/tables';
import { HtmlTagImporterBase } from './importers/base';
import { LoadFontInfo } from './load-font-info';
import { HtmlImporterMaskedCharacterProperties } from './utils/character-properties-utils';
import { ParagraphListPropertiesUtils } from './utils/paragraph-list-properties-utils';
import { FormatImagesImporter } from '../../utils/images-import';
export type TypeOfTagImporterConstructor = new (importer: HtmlImporter) => HtmlTagImporterBase;
export declare class LevelInfo {
    element: HTMLElement;
    childElements: HTMLElement[];
    tagImporter: HtmlTagImporterBase;
    allowInsertRuns: boolean;
    constructor(element: HTMLElement, childElements: HTMLElement[], allowInsertRuns: boolean);
    initTagImporter(importer: HtmlImporter): this;
    static getElementTag(elem: HTMLElement | ChildNode): string;
}
export declare class HtmlImportData {
    runsInfo: RunInfo[];
    tablesInfo: TableInfo[];
    constructor(runsInfo: RunInfo[], tablesInfo: TableInfo[]);
}
export declare class HtmlImporter {
    currPosition: number;
    htmlImporterMaskedCharacterProperties: HtmlImporterMaskedCharacterProperties;
    paragraphListPropertiesUtils: ParagraphListPropertiesUtils;
    private importedRunsInfo;
    importedTablesInfo: TableInfo[];
    loadFontInfos: LoadFontInfo[];
    tempFontInfoCache: FontInfoCache;
    get currElement(): HTMLElement;
    get currElementChildren(): HTMLElement[];
    levelInfo: LevelInfo[];
    get currLevelInfo(): LevelInfo;
    get currListItemLevelInfo(): LevelInfo | null;
    fieldsId: number;
    prevRunIsParagraph: boolean;
    listIndex: number;
    listInfos: ImportedParagraphListInfo[];
    get currListInfo(): ImportedParagraphListInfo;
    importStarted: boolean;
    modelManager: IModelManager;
    private subDocPosition;
    get subDocument(): SubDocument;
    charPropsBundle: MaskedCharacterPropertiesBundle;
    measurer: IMeasurer;
    tagImporters: Record<string, TypeOfTagImporterConstructor>;
    private static importers;
    private formatImagesImporter?;
    constructor(modelManager: IModelManager, measurer: IMeasurer, subDocPosition: SubDocumentPosition, initElements: HTMLElement[], charPropsBundle: MaskedCharacterPropertiesBundle, formatImagesImporter?: FormatImagesImporter);
    import(): FixedInterval;
    private convertChildElements;
    private getSortedTables;
    private convertElement;
    private putDownParentPropertiesToChild;
    private getStyles;
    addRun(run: RunInfo, forceAdd?: boolean): void;
    addParagraphRun(element: HTMLElement, listInfo?: ImportedParagraphListInfo, isTableCellTag?: boolean): void;
    addCurrLevelParagraphRunIfNeeded(): void;
    removeAllTrailingLineBreaks(): void;
    getLastImportedRun(): RunInfo;
    columnSize(): Size;
    private registerImageRuns;
    private findIndexImportedInlinePictureRunInfo;
    static convertHtml(html: string): string;
    private static extractBodyContent;
    private static MapMissTablePropertiesByTagNames;
    private static MapShorthandProperty;
}
