import * as vue from 'vue';
import { Plugin, PropType } from 'vue-demi';
import { Mode } from 'vanilla-jsoneditor';

type SFCWithInstall<T> = T & Plugin;
declare enum UpdateModelValueEvent {
    vue3 = "update:modelValue",
    vue2 = "input"
}
declare const updateModelValueEvent: UpdateModelValueEvent;
declare const JsonEditorVue: vue.DefineComponent<vue.ExtractPropTypes<{
    modelValue: object;
    value: object;
} & {
    mode: {
        type: PropType<Mode>;
    };
    debounce: {
        type: PropType<number>;
    };
    stringified: {
        type: PropType<boolean>;
        default: undefined;
    };
} & {
    mainMenuBar: {
        type: PropType<boolean>;
        default: undefined;
    };
    navigationBar: {
        type: PropType<boolean>;
        default: undefined;
    };
    statusBar: {
        type: PropType<boolean>;
        default: undefined;
    };
    askToFormat: {
        type: PropType<boolean>;
        default: undefined;
    };
    readOnly: {
        type: PropType<boolean>;
        default: undefined;
    };
    escapeControlCharacters: {
        type: PropType<boolean>;
        default: undefined;
    };
    escapeUnicodeCharacters: {
        type: PropType<boolean>;
        default: undefined;
    };
    flattenColumns: {
        type: PropType<boolean>;
        default: undefined;
    };
}>, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
    [key: string]: any;
}>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
    [updateModelValueEvent]: (_payload: any) => boolean;
    'update:mode': (_payload: Mode) => boolean;
}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
    modelValue: object;
    value: object;
} & {
    mode: {
        type: PropType<Mode>;
    };
    debounce: {
        type: PropType<number>;
    };
    stringified: {
        type: PropType<boolean>;
        default: undefined;
    };
} & {
    mainMenuBar: {
        type: PropType<boolean>;
        default: undefined;
    };
    navigationBar: {
        type: PropType<boolean>;
        default: undefined;
    };
    statusBar: {
        type: PropType<boolean>;
        default: undefined;
    };
    askToFormat: {
        type: PropType<boolean>;
        default: undefined;
    };
    readOnly: {
        type: PropType<boolean>;
        default: undefined;
    };
    escapeControlCharacters: {
        type: PropType<boolean>;
        default: undefined;
    };
    escapeUnicodeCharacters: {
        type: PropType<boolean>;
        default: undefined;
    };
    flattenColumns: {
        type: PropType<boolean>;
        default: undefined;
    };
}>> & Readonly<{
    [x: `on${Capitalize<string>}`]: ((_payload: any) => any) | undefined;
}>, {
    mainMenuBar: boolean;
    navigationBar: boolean;
    statusBar: boolean;
    askToFormat: boolean;
    readOnly: boolean;
    escapeControlCharacters: boolean;
    escapeUnicodeCharacters: boolean;
    flattenColumns: boolean;
    stringified: boolean;
}, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
declare const _default: SFCWithInstall<typeof JsonEditorVue>;

export = _default;
