import { ComponentOptions, VueConstructor } from "vue";
import Vue from "vue";
export type ComponentDefinitionFunc = () => Promise<ComponentOptions<Vue>>;
export type ComponentDefinition = ComponentOptions<Vue> | VueConstructor<Vue>;
export interface VueCustomElementOptions {
    constructorCallback?: () => void;
    connectedCallback?: () => void;
    disconnectedCallback?: () => void;
    attributeChangedCallback?: () => void;
    beforeCreateVueInstance?: (RootComponentDefinition: any) => any;
    vueInstanceCreatedCallback?: () => void;
    destroyTimeout?: number;
}
export declare function vueCustomElement(tag: string, componentDefinition: ComponentDefinitionFunc | ComponentDefinition, options?: VueCustomElementOptions): HTMLElement;
export declare function install(Vue: any): void;
export default install;
