import type { EditorConfig as LexicalEditorConfig, SerializedEditorState } from 'lexical';
import type { EditorConfig, EditorSettings } from './field/config/types';
export interface LexicalEditorProps {
    settings?: (config: EditorSettings) => EditorSettings;
    lexical?: LexicalEditorConfig;
}
export type EditorFieldProps = {
    name: string;
    id: string;
    /**
     * Accepts a plain string (EditorComponent wraps it in a Label with htmlFor/required)
     * or a pre-composed ReactNode for callers that need to inject extra elements (e.g. a
     * locale badge). When a ReactNode is passed, the caller is responsible for setting
     * htmlFor and required on any Label it renders.
     */
    label?: React.ReactNode;
    description?: string;
    required?: boolean;
    readonly?: boolean;
    placeholder?: string;
    className?: string;
    minHeight?: number | string;
    maxHeight?: number | string;
    editorConfig: EditorConfig;
    defaultValue?: SerializedEditorState;
    value?: SerializedEditorState;
    featureBeforeEditor?: React.ReactNode[];
    featureAfterEditor?: React.ReactNode[];
    featureChildren?: React.ReactNode[];
    onChange?: (value: SerializedEditorState) => void;
    validate?: (value: SerializedEditorState | undefined, options: {
        required?: boolean;
    }) => string | boolean | Promise<string | boolean>;
    onError?: (error: Error) => void;
    lexicalEditorProps?: LexicalEditorProps;
};
