import { VueConstructor, VNode, ComponentOptions as Vue2ComponentOptions } from 'vue'; import { ComponentPropsOptions, ExtractPropTypes } from './componentProps'; import { UnwrapValue } from '../wrappers'; export declare type Data = { [key: string]: unknown; }; export declare type ComponentInstance = InstanceType; declare type ComponentRenderProxy

= { $data: S; $props: PublicProps; $attrs: Data; $refs: Data; $slots: Data; $root: ComponentInstance | null; $parent: ComponentInstance | null; $emit: (event: string, ...args: unknown[]) => void; } & P & S; declare type VueConstructorProxy = { new (): ComponentRenderProxy, UnwrapValue, ExtractPropTypes>; }; declare type VueProxy = Vue2ComponentOptions, never, never, PropsOptions, ExtractPropTypes> & VueConstructorProxy; export interface SetupContext { readonly parent: ComponentInstance; readonly root: ComponentInstance; readonly refs: { [key: string]: ComponentInstance | Element | ComponentInstance[] | Element[]; }; readonly slots: { [key: string]: VNode[] | undefined; }; readonly attrs: Record; emit(event: string, ...args: any[]): void; } declare type RenderFunction = (props: Props, ctx: SetupContext) => VNode; export declare type SetupFunction = (this: void, props: Props, ctx: SetupContext) => RawBindings | RenderFunction; export interface ComponentOptions> { props?: PropsOptions; setup?: SetupFunction; } export declare function createComponent(options: ComponentOptions): VueProxy; export {};