import { ExtractPropTypes, PropType, Ref } from "vue";
export type Mode = 'normal' | 'diff' | 'review';
export type Theme = 'light' | 'dark';
export interface Decoration {
    lineNumber: number;
    icon?: string;
    customClasses?: string;
    glyphClassName?: string;
}
export interface Comment {
    lineNumber: number;
    isExpanded: boolean;
    domNode?: HTMLElement;
    heightInPx?: number;
    allowEditorOverflow?: boolean;
    offsetLeft?: number;
}
export declare const codeEditorProps: {
    modelValue: {
        type: StringConstructor;
        default: string;
    };
    mode: {
        type: PropType<Mode>;
        default: string;
    };
    originalText: {
        type: StringConstructor;
        default: string;
    };
    theme: {
        type: PropType<Theme>;
        default: string;
    };
    autoHeight: {
        type: BooleanConstructor;
        default: boolean;
    };
    refreshAll: {
        type: BooleanConstructor;
        default: boolean;
    };
    offsetLeft: {
        type: NumberConstructor;
    };
    addCommentIcon: {
        type: StringConstructor;
        default: string;
    };
    expandCommentIcon: {
        type: StringConstructor;
        default: string;
    };
    options: {
        type: ObjectConstructor;
        default: () => {};
    };
    mouseTargetTypes: {
        type: PropType<number[]>;
        default: () => number[];
    };
    editorDecorations: {
        type: PropType<Decoration[]>;
        default: () => never[];
    };
    comments: {
        type: PropType<Comment[]>;
        default: () => never[];
    };
};
export type CodeEditorProps = ExtractPropTypes<typeof codeEditorProps>;
export interface UseCodeEditor {
    editorEl: Ref;
}
export interface PositionInfo {
    top?: number;
    height?: number;
}
export interface LayoutInfo extends PositionInfo {
    minimapWidth?: number;
    offsetLeft?: number;
}
