import * as polytype from 'polytype';
import * as i0 from '@angular/core';
import { MXInputBaseValueComponent, MXLookComponent } from '@acorex/cdk/common';
import EditorJS, { OutputData } from '@editorjs/editorjs';

type EditorJsTool = 'header' | 'list' | 'raw' | 'image' | 'quote' | 'codeBox' | 'underline' | 'color';
type ImageToolConfig = {
    endpoints?: {
        byFile: string;
        byUrl: string;
    };
    /** Name of the uploaded image field in POST request (default: "image") */
    field?: string;
    /** Mime-types of files accepted (default: "image/*") */
    types?: string;
    /** Extra data to send with upload requests */
    additionalRequestData?: Record<string, any>;
    /** Custom headers to include in upload requests */
    additionalRequestHeaders?: Record<string, string>;
    /** Placeholder text for the caption input (default: "Caption") */
    captionPlaceholder?: string;
    /** HTML content for the “Select file” button */
    buttonContent?: string;
    /** Custom uploader methods */
    uploader?: {
        uploadByFile?: (file: File) => Promise<{
            success: number;
            file: {
                url: string;
            };
        }>;
        uploadByUrl?: (url: string) => Promise<{
            success: number;
            file: {
                url: string;
            };
        }>;
    };
    /** Custom actions for the tool's settings menu */
    actions?: Array<Record<string, any>>;
    /** Feature toggles (border, background, caption, etc.) */
    features?: {
        border?: boolean;
        background?: boolean;
        caption?: boolean;
        [key: string]: any;
    };
};

declare const AXEditorComponent_base: polytype.Polytype.ClusteredConstructor<[{
    new (): MXInputBaseValueComponent<OutputData>;
    ɵfac: i0.ɵɵFactoryDeclaration<MXInputBaseValueComponent<any>, never>;
    ɵprov: i0.ɵɵInjectableDeclaration<MXInputBaseValueComponent<any>>;
}, typeof MXLookComponent]>;
declare class AXEditorComponent extends AXEditorComponent_base {
    #private;
    private toolLoaders;
    private editorHolder;
    private platform;
    modules: i0.InputSignal<EditorJsTool[]>;
    imageConfig: i0.InputSignal<ImageToolConfig>;
    protected editorClass: EditorJS;
    private colorConfig;
    private markerConfig;
    private loadEditorJsTools;
    private get __hostClass();
    private get __hostName();
    static ɵfac: i0.ɵɵFactoryDeclaration<AXEditorComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<AXEditorComponent, "ax-editor", never, { "look": { "alias": "look"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "value": { "alias": "value"; "required": false; }; "modules": { "alias": "modules"; "required": false; "isSignal": true; }; "imageConfig": { "alias": "imageConfig"; "required": false; "isSignal": true; }; }, { "onValueChanged": "onValueChanged"; }, never, ["ax-validation-rule"], true, never>;
}

declare class EditorModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<EditorModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<EditorModule, never, [typeof AXEditorComponent], [typeof AXEditorComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<EditorModule>;
}

export { AXEditorComponent, EditorModule };
export type { EditorJsTool, ImageToolConfig };
