import React from 'react';
import type { LocaleProps } from 'jamis-core';
export declare function monacoFactory(containerElement: HTMLElement, monaco: any, options: Record<string, any>): any;
export interface EditorProps extends LocaleProps {
    value?: string;
    defaultValue?: string;
    width?: number | string;
    height?: number | string;
    onChange?: (value: string, event: any) => void;
    language?: string;
    editorTheme?: string;
    allowFullscreen?: boolean;
    options: {
        [propName: string]: any;
    };
    className?: string;
    context?: any;
    style?: React.CSSProperties;
    isDiffEditor?: boolean;
    placeholder?: string;
    onFocus?: () => void;
    onBlur?: () => void;
    editorDidMount?: (editor: any, monaco: any) => void;
    editorWillMount?: (monaco: any) => void;
    editorWillUnmount?: (editor: any, monaco: any) => void;
    editorFactory?: (conatainer: HTMLElement, monaco: any, options: any) => any;
}
export interface EditorState {
    isFullscreen?: boolean;
    innerWidth?: any;
    innerHeight?: any;
}
export declare class Editor extends React.Component<EditorProps, EditorState> {
    static defaultProps: {
        language: string;
        editorTheme: string;
        width: string;
        height: string;
        allowFullscreen: boolean;
        options: {};
    };
    state: {
        isFullscreen: boolean;
        innerWidth: string;
        innerHeight: string;
    };
    editor: any;
    container: any;
    currentValue: any;
    preventTriggerChangeEvent: boolean;
    disposes: Array<{
        dispose: () => void;
    }>;
    constructor(props: EditorProps);
    componentDidUpdate(prevProps: EditorProps): void;
    componentWillUnmount(): void;
    wrapperRef(ref: any): void;
    loadMonaco(): void;
    initMonaco(monaco: any): void;
    editorWillMount(monaco: any): void;
    editorDidMount(editor: any, monaco: any): void;
    handleFullscreenModeChange(): void;
    render(): JSX.Element;
}
export default Editor;
