import { ElementRef, OnDestroy, OnInit, AfterViewInit, Injector, ChangeDetectorRef, NgZone } from '@angular/core';
import { ControlValueAccessor, Validator, AbstractControl, ValidationErrors } from '@angular/forms';
import { RichTextEditorService } from './rich-text-editor.service';
import { RTEImageTool, RTEPreset } from './rich-text-editor.constant';
import * as i0 from "@angular/core";
/**
 * Configuration options for the toolbar
 */
export interface RichTextEditorConfig {
    height?: number;
    width?: number | string;
    toolbar?: string;
    toolbar_custom?: string;
    [key: string]: any;
}
export declare class RichTextEditorComponent implements OnInit, AfterViewInit, OnDestroy, ControlValueAccessor, Validator {
    private injector;
    private rteService;
    private cdr;
    private ngZone;
    private globalLicenseKey;
    editorContainer: ElementRef;
    licenseKey: string;
    config: RichTextEditorConfig;
    rtePreset: RTEPreset | null;
    imageToolbarItems: (RTEImageTool | '/')[] | null;
    excludedToolbarItems: string[];
    initialContent: string;
    errorMessages: {
        [key: string]: string;
    };
    fileUploadHandler: (file: File, callback: (url: string | null, errorCode?: string) => void, optionalIndex?: number, optionalFiles?: File[]) => void;
    enableImageUpload: boolean;
    enableVideoEmbed: boolean;
    readonly: boolean;
    private eventManager;
    private editorInstance;
    private value;
    private ngControl;
    private changeTimer;
    private isDestroyed;
    private cleanupAttempts;
    private eventListeners;
    private domCleanupTimer;
    onChange: (value: any) => void;
    onTouched: () => void;
    constructor(injector: Injector, rteService: RichTextEditorService, cdr: ChangeDetectorRef, ngZone: NgZone, globalLicenseKey: string);
    ngOnInit(): void;
    ngAfterViewInit(): void;
    private initEditor;
    private cleanupExistingEditor;
    private setupEventListeners;
    private removeAllEventListeners;
    private updateImageToolbar;
    private checkImageSelection;
    writeValue(value: any): void;
    private normalizeHtml;
    registerOnChange(fn: any): void;
    registerOnTouched(fn: any): void;
    setDisabledState?(isDisabled: boolean): void;
    ngOnDestroy(): void;
    private performCleanup;
    validate(control: AbstractControl): ValidationErrors | null;
    private fixCharacterCount;
    getCharacterCount(): number;
    get showError(): boolean;
    get currentErrorMessage(): string | null;
    private getMobileExpandedToolbar;
    private getDefaultMobileExpandedToolbar;
    private prepareConfiguration;
    private _applyCustomStyles;
    insertContentAtCursor(content: string): void;
    hideAllFloatPanels(): void;
    excludeToolbarItems(toolbar: string): string;
    static ɵfac: i0.ɵɵFactoryDeclaration<RichTextEditorComponent, [null, null, null, null, { optional: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<RichTextEditorComponent, "lib-rich-text-editor", never, { "licenseKey": { "alias": "licenseKey"; "required": false; }; "config": { "alias": "config"; "required": false; }; "rtePreset": { "alias": "rtePreset"; "required": false; }; "imageToolbarItems": { "alias": "imageToolbarItems"; "required": false; }; "excludedToolbarItems": { "alias": "excludedToolbarItems"; "required": false; }; "initialContent": { "alias": "initialContent"; "required": false; }; "errorMessages": { "alias": "errorMessages"; "required": false; }; "fileUploadHandler": { "alias": "fileUploadHandler"; "required": false; }; "enableImageUpload": { "alias": "enableImageUpload"; "required": false; }; "enableVideoEmbed": { "alias": "enableVideoEmbed"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; }, {}, never, never, false, never>;
}
