import { ComponentInternalInstance, ConcreteComponent, RootHydrateFunction, SetupContext, RenderFunction, ComputedOptions, MethodOptions, ComponentOptionsMixin, EmitsOptions, ComponentInjectOptions, ComponentOptionsWithoutProps, ComponentOptionsWithArrayProps, ComponentPropsOptions, ComponentOptionsWithObjectProps, ExtractPropTypes, ComponentPublicInstance } from '@vue/runtime-core';
interface CustomComponentInternalInstance extends ComponentInternalInstance {
host: VueElement;
renderRoot: ShadowRoot;
_setAttr: Function;
_setProp: Function;
_getProp: Function;
}
type VueElementConstructor
= {
new (initialProps?: Record): VueElement & P;
};
declare function defineCustomElement(setup: (props: Readonly, ctx: SetupContext) => RawBindings | RenderFunction): VueElementConstructor;
declare function defineCustomElement(options: ComponentOptionsWithoutProps & {
styles?: string[];
}): VueElementConstructor;
declare function defineCustomElement, EE extends string = string, I extends ComponentInjectOptions = {}, II extends string = string>(options: ComponentOptionsWithArrayProps & {
styles?: string[];
}): VueElementConstructor<{
[K in PropNames]: any;
}>;
declare function defineCustomElement, RawBindings, D, C extends ComputedOptions = {}, M extends MethodOptions = {}, Mixin extends ComponentOptionsMixin = ComponentOptionsMixin, Extends extends ComponentOptionsMixin = ComponentOptionsMixin, E extends EmitsOptions = Record, EE extends string = string, I extends ComponentInjectOptions = {}, II extends string = string>(options: ComponentOptionsWithObjectProps & {
styles?: string[];
}): VueElementConstructor>;
declare function defineCustomElement(options: {
new (...args: any[]): ComponentPublicInstance;
}): VueElementConstructor;
declare const defineSSRCustomElement: typeof defineCustomElement;
declare const BaseClass: typeof HTMLElement;
type InnerComponentDef = ConcreteComponent & {
styles?: string[];
};
declare class VueElement extends BaseClass {
private _def;
private _props;
/**
* @internal
*/
_instance: ComponentInternalInstance | null;
_renderRoot: HTMLElement | ShadowRoot;
private _connected;
private _resolved;
private _numberProps;
private _styles?;
constructor(_def: InnerComponentDef, _props?: Record, hydrate?: RootHydrateFunction);
connectedCallback(): void;
disconnectedCallback(): void;
/**
* resolve inner component definition (handle possible async component)
*/
private _resolveDef;
private _resolveProps;
protected _setAttr(key: string): void;
/**
* @internal
*/
protected _getProp(key: string): any;
/**
* @internal
*/
protected _setProp(key: string, val: any, shouldReflect?: boolean, shouldUpdate?: boolean): void;
private _update;
private _createVNode;
/**
* Patch applyStyles method to support adopted Stylesheets.
* @param styles
*/
private _applyStyles;
}
export { VueElement, defineCustomElement, defineSSRCustomElement };
export type { CustomComponentInternalInstance, VueElementConstructor };