import { EditorView, ViewUpdate } from "@codemirror/view";
import { Extension } from "@codemirror/state";
import "./styles/style.scss";
export interface CursorPosition {
    column: number;
    line: number;
}
export interface CodeEditorProps {
    autoFocus?: boolean;
    className?: string;
    customExtensions?: Extension[];
    lineWrapping?: boolean;
    onChange?(value: string, viewUpdate: ViewUpdate): void;
    onCursorChange?(position: CursorPosition): void;
    onEditorUpdate?: (update: ViewUpdate) => void;
    onFormat?: (formattedCode: string) => void;
    onSelectionChange?(characterCount: number): void;
    placeholder?: string | HTMLElement;
    readonly?: boolean;
    value?: string;
}
export interface CodeEditorRef {
    getCursorPosition: () => CursorPosition | null;
    getEditor: () => EditorView | null;
    getSelectedCharacterCount: () => number;
}
export declare const CodeEditor: import("react").ForwardRefExoticComponent<CodeEditorProps & import("react").RefAttributes<CodeEditorRef>>;
