import { BaseElement } from '../shared/base';
import { ValidationConfig } from '../shared/validation';
/**
 * Variants of the `editor` element type. Each value here maps 1:1 to a
 * Vue file under `src/elements/editor/` via the engine's registry.
 *
 * The v2 schema spells the HTML variant as "html" — we accept both
 * "html" (legacy) and "html-editor" (canonical) by widening the style
 * accordingly. JSON authored against the platform deserialises either way.
 */
export type EditorStyle = "code-editor" | "markdown-editor" | "html-editor" | "image-editor" | "rich-text-editor";
export interface EditorElement extends BaseElement<`editor.${EditorStyle}`> {
    name: string;
    label: string;
    defaultValue?: string | number | null;
    /** Help / hint markup rendered above the editor. */
    instructions?: string;
    /** CSS height (e.g. "40vh", "320px"). */
    height?: string;
    /** For `code-editor`: language hint (e.g. "javascript", "json"). */
    language?: string;
    /** Render line numbers (code/markdown editors). */
    showLineNumbers?: boolean;
    /** Soft-wrap long lines (code/markdown editors). */
    wordWrap?: boolean;
    /** Validation rules (Laravel-style strings). */
    validation?: ValidationConfig;
}
export declare const EditorElementDefaults: {
    readonly type: "editor.code-editor";
    readonly defaultValue: "";
    readonly height: "40vh";
    readonly columns: 12;
    readonly columnsSm: 12;
    readonly columnsMd: 12;
    readonly columnsLg: 12;
    readonly columnsXl: 12;
};
export declare const EditorElementMetadata: {
    readonly icon: "file-lines";
    readonly displayLabel: "Editor";
    readonly elementCategory: "editor";
    readonly description: "Create a large text field to allow users to enter a large amount of text as either HTML, Markdown, Code or plain text.";
};
export declare const EditorElementEditConfig: {
    readonly label: {
        readonly type: "input.text";
        readonly defaultValue: "";
        readonly label: "Label";
        readonly columnsMd: 6;
        readonly columns: 12;
        readonly section: "configuration";
    };
    readonly defaultValue: {
        readonly type: "input.text";
        readonly label: "Default Value";
        readonly columnsMd: 6;
        readonly columns: 12;
        readonly section: "configuration";
    };
    readonly name: {
        readonly type: "picker.data-model";
        readonly defaultValue: "";
        readonly label: "Name";
        readonly columns: 12;
        readonly section: "advanced";
    };
    readonly style: {
        readonly type: "option-select.select";
        readonly defaultValue: "code-editor";
        readonly label: "Display Style";
        readonly section: "layout";
        readonly selectOptions: readonly [{
            readonly label: "Code Editor";
            readonly value: "code-editor";
        }, {
            readonly label: "Markdown Editor";
            readonly value: "markdown-editor";
        }, {
            readonly label: "HTML Editor";
            readonly value: "html-editor";
        }, {
            readonly label: "Image Editor";
            readonly value: "image-editor";
        }, {
            readonly label: "Rich Text Editor";
            readonly value: "rich-text-editor";
        }];
        readonly columns: 12;
    };
    readonly instructions: {
        readonly type: "editor.html-editor";
        readonly label: "Instructions";
        readonly defaultValue: "";
        readonly columns: 12;
        readonly section: "configuration";
    };
    readonly height: {
        readonly type: "input.text";
        readonly label: "Height";
        readonly defaultValue: "40vh";
        readonly columns: 6;
        readonly section: "layout";
    };
    readonly language: {
        readonly type: "input.text";
        readonly label: "Language";
        readonly columns: 6;
        readonly section: "layout";
        readonly conditionParams: [{
            readonly name: "style";
            readonly logic: "==";
            readonly value: "code-editor";
        }];
    };
    readonly showLineNumbers: {
        readonly type: "boolean.switch";
        readonly label: "Show line numbers";
        readonly columns: 6;
        readonly section: "layout";
        readonly conditionParams: [{
            readonly name: "style";
            readonly logic: "in-array";
            readonly value: readonly ["code-editor", "markdown-editor"];
        }];
    };
    readonly wordWrap: {
        readonly type: "boolean.switch";
        readonly label: "Word wrap";
        readonly columns: 6;
        readonly section: "layout";
        readonly conditionParams: [{
            readonly name: "style";
            readonly logic: "in-array";
            readonly value: readonly ["code-editor", "markdown-editor"];
        }];
    };
    readonly required: {
        readonly type: "boolean.switch";
        readonly label: "Make item required";
        readonly columns: 12;
        readonly section: "configuration";
    };
    readonly readonly: {
        readonly type: "boolean.switch";
        readonly label: "Make item read-only";
        readonly columns: 12;
        readonly section: "configuration";
    };
};
export declare const EditorStyleMetadataMap: Partial<Record<EditorStyle, {
    displayLabel: string;
    description: string;
}>>;
//# sourceMappingURL=EditorElement.d.ts.map