import { ReactNode } from 'react';
import PropTypes from 'prop-types';
import { IReactionDisposer } from 'mobx';
import { EditorConfiguration } from 'codemirror';
import { IInstance } from 'react-codemirror2';
import { FormField, FormFieldProps } from '../field/FormField';
import { CodeAreaFormatter } from './CodeAreaFormatter';
export interface CodeAreaProps extends FormFieldProps {
    options?: EditorConfiguration;
    formatHotKey?: string;
    unFormatHotKey?: string;
    formatter?: CodeAreaFormatter;
    editorDidMount?: (editor: IInstance, value: string, cb: () => void) => void;
}
export default class CodeArea extends FormField<CodeAreaProps> {
    static displayName: string;
    static propTypes: {
        id: PropTypes.Requireable<string>;
        size: PropTypes.Requireable<import("../core/enum").Size>;
        suffixCls: PropTypes.Requireable<string>;
        prefixCls: PropTypes.Requireable<string>;
        title: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        disabled: PropTypes.Requireable<boolean>;
        hidden: PropTypes.Requireable<boolean>;
        autoFocus: PropTypes.Requireable<boolean>;
        accessKey: PropTypes.Requireable<string | boolean>;
        dir: PropTypes.Requireable<string>;
        contentEditable: PropTypes.Requireable<string | boolean>;
        draggable: PropTypes.Requireable<string | boolean>;
        style: PropTypes.Requireable<object>;
        className: PropTypes.Requireable<string>;
        tabIndex: PropTypes.Requireable<number>;
        lang: PropTypes.Requireable<string>;
        spellCheck: PropTypes.Requireable<boolean>;
        onFocus: PropTypes.Requireable<(...args: any[]) => any>;
        onBlur: PropTypes.Requireable<(...args: any[]) => any>;
        onClick: PropTypes.Requireable<(...args: any[]) => any>;
        onDoubleClick: PropTypes.Requireable<(...args: any[]) => any>;
        onMouseUp: PropTypes.Requireable<(...args: any[]) => any>;
        onMouseDown: PropTypes.Requireable<(...args: any[]) => any>;
        onMouseMove: PropTypes.Requireable<(...args: any[]) => any>;
        onMouseEnter: PropTypes.Requireable<(...args: any[]) => any>;
        onMouseLeave: PropTypes.Requireable<(...args: any[]) => any>;
        onMouseOver: PropTypes.Requireable<(...args: any[]) => any>;
        onMouseOut: PropTypes.Requireable<(...args: any[]) => any>;
        onContextMenu: PropTypes.Requireable<(...args: any[]) => any>;
        onKeyDown: PropTypes.Requireable<(...args: any[]) => any>;
        onKeyUp: PropTypes.Requireable<(...args: any[]) => any>;
        onKeyPress: PropTypes.Requireable<(...args: any[]) => any>;
        dataSet: PropTypes.Requireable<object>;
        _inTable: PropTypes.Requireable<boolean>;
        type: PropTypes.Requireable<string>;
        name: PropTypes.Requireable<string>;
        value: PropTypes.Requireable<any>;
        defaultValue: PropTypes.Requireable<any>;
        required: PropTypes.Requireable<boolean>;
        readOnly: PropTypes.Requireable<boolean>;
        form: PropTypes.Requireable<string>;
        dataIndex: PropTypes.Requireable<number>;
        multiple: PropTypes.Requireable<boolean>;
        range: PropTypes.Requireable<boolean | (string | null | undefined)[]>;
        rowSpan: PropTypes.Requireable<number>;
        newLine: PropTypes.Requireable<boolean>;
        colSpan: PropTypes.Requireable<number>;
        validator: PropTypes.Requireable<(...args: any[]) => any>;
        onInvalid: PropTypes.Requireable<(...args: any[]) => any>;
        help: PropTypes.Requireable<string>;
        showHelp: PropTypes.Requireable<import("../field/enum").ShowHelp>;
        renderer: PropTypes.Requireable<(...args: any[]) => any>;
        validationRenderer: PropTypes.Requireable<(...args: any[]) => any>;
        maxTagPlaceholder: PropTypes.Requireable<string | number | boolean | {} | PropTypes.ReactElementLike | PropTypes.ReactNodeArray>;
        maxTagCount: PropTypes.Requireable<number>;
        maxTagTextLength: PropTypes.Requireable<number>;
        pristine: PropTypes.Requireable<boolean>;
        trim: PropTypes.Requireable<import("../data-set/enum").FieldTrim>;
        onBeforeChange: PropTypes.Requireable<(...args: any[]) => any>;
        onChange: PropTypes.Requireable<(...args: any[]) => any>;
        onInput: PropTypes.Requireable<(...args: any[]) => any>;
        onEnterDown: PropTypes.Requireable<(...args: any[]) => any>;
        fieldClassName: PropTypes.Requireable<string>;
        highlight: PropTypes.Requireable<string | number | boolean | {} | PropTypes.ReactElementLike | PropTypes.ReactNodeArray>;
        highlightRenderer: PropTypes.Requireable<(...args: any[]) => any>;
        useColon: PropTypes.Requireable<boolean>;
        showValidation: PropTypes.Requireable<string>;
        options: PropTypes.Requireable<object>;
        formatHotKey: PropTypes.Requireable<string>;
        unFormatHotKey: PropTypes.Requireable<string>;
        formatter: PropTypes.Requireable<object>;
        editorDidMount: PropTypes.Requireable<(...args: any[]) => any>;
    };
    static defaultProps: {
        suffixCls: string;
        formatHotKey: string;
        unFormatHotKey: string;
        readOnly: boolean;
        disabled: boolean;
        noValidate: boolean;
        showHelp: string;
        trim: import("../data-set/enum").FieldTrim;
    };
    cmOptions: EditorConfiguration;
    text?: string;
    midText: string;
    disposer: IReactionDisposer;
    constructor(props: any, content: any);
    componentWillUnmount(): void;
    handleBeforeChange(_editor: any, _data: any, value: any): void;
    handleCodeMirrorKeyDown(cm: any, e: any): void;
    getCodeMirrorOptions(options?: EditorConfiguration): EditorConfiguration;
    getOmitPropsKeys(): string[];
    getOtherProps(): any;
    componentWillReceiveProps(nextProps: any, nextContext: any): void;
    renderWrapper(): ReactNode;
    setText(text?: string): void;
    getTextNode(value?: any): ReactNode;
    processValue(value: any): ReactNode;
    /**
     * 编辑器失去焦点时，调用父类方法，同步DataSet中的内容
     *
     * @memberof CodeArea
     */
    handleCodeMirrorBlur: ((codeMirrorInstance: IInstance) => void) & import("mobx").IAction;
    /**
     * 在CodeMirror编辑器实例挂载前添加额外配置
     *
     * @memberof CodeArea
     */
    handleCodeMirrorDidMount: (editor: IInstance, value: string, cb: () => void) => void;
}
