import { SubDocument } from '../../../../../model/sub-document';
import { RtfFormattingInfo } from '../../model/character/rtf-formatting-info';
import { RtfImportData } from '../../rtf-import-data';
import { DestinationType } from '../utils/destination-type';
export type TranslateControlCharHandler = (importer: RtfImportData, ch: string) => void;
export type ControlCharTranslatorTable = Record<string, TranslateControlCharHandler>;
export type TranslateKeywordHandler = (importer: RtfImportData, parameterValue: number, hasParameter: boolean) => void;
export type KeywordTranslatorTable = Record<string, TranslateKeywordHandler>;
export declare abstract class DestinationBase {
    static readonly macCodePage: number;
    static readonly pcCodePage: number;
    static readonly pcaCodePage: number;
    readonly importer: RtfImportData;
    subDocument: SubDocument;
    nonEmpty: boolean;
    static get empty(): DestinationBase;
    static defaultControlCharHT: ControlCharTranslatorTable;
    constructor(importer?: RtfImportData);
    protected createRtfFormattingInfo(): RtfFormattingInfo;
    protected abstract get destinationType(): DestinationType;
    protected abstract get controlCharHT(): ControlCharTranslatorTable;
    protected get keywordHT(): KeywordTranslatorTable;
    protected abstract createClone(): DestinationBase;
    equals(destination: DestinationBase): boolean;
    protected static onSwitchToHexChar(importer: RtfImportData, _ch: string): void;
    protected static onEscapedChar(importer: RtfImportData, ch: string): void;
    static onUnicodeKeyword(importer: RtfImportData, parameterValue: number, _hasParameter: boolean): void;
    static onOptionalGroupChar(importer: RtfImportData, _ch: string): void;
    static onBinKeyword(importer: RtfImportData, parameterValue: number, hasParameter: boolean): void;
    static onAnsiKeyword(importer: RtfImportData, _parameterValue: number, _hasParameter: boolean): void;
    static onMacKeyword(importer: RtfImportData, _parameterValue: number, _hasParameter: boolean): void;
    static onPcKeyword(importer: RtfImportData, _parameterValue: number, _hasParameter: boolean): void;
    static onPcaKeyword(importer: RtfImportData, _parameterValue: number, _hasParameter: boolean): void;
    static onAnsiCodePageKeyword(importer: RtfImportData, parameterValue: number, hasParameter: boolean): void;
    static onHyphAutoKeyword(_importer: RtfImportData, _parameterValue: number, _hasParameter: boolean): void;
    static onUnicodeCountKeyword(importer: RtfImportData, parameterValue: number, _hasParameter: boolean): void;
    get canAppendText(): boolean;
    canProcessSpecialHexChar(): boolean;
    processControlChar(ch: string): void;
    processKeyword(keyword: string, parameterValue: number | null, hasParameter: boolean): boolean;
    processChar(ch: string): void;
    processText(text: string): void;
    processBinChar(ch: string): void;
    processSpecialHexChar(ch: string): void;
    protected processControlCharCore(ch: string): void;
    protected processKeywordCore(keyword: string, parameterValue: number, hasParameter: boolean): boolean;
    protected processCharCore(_ch: string): void;
    protected processTextCore(_text: string): void;
    protected processSpecialHexCharCore(_ch: string): void;
    protected processBinCharCore(_ch: string): void;
    beforePopRtfState(): void;
    afterPopRtfState(): void;
    increaseGroupLevel(): void;
    beforeNestedGroupFinished(nestedDestination: DestinationBase): void;
    protected beforeNestedGroupFinishedCore(_nestedDestination: DestinationBase): void;
    nestedGroupFinished(_nestedDestination: DestinationBase): void;
    afterNestedGroupFinished(_nestedDestination: DestinationBase): void;
    clone(): DestinationBase;
}
