import Vue, { VueConstructor, VNode, ComponentOptions as Vue2ComponentOptions } from 'vue'; import { ComponentPropsOptions, ExtractPropTypes } from './componentProps'; import { UnwrapRef } from '../reactivity'; 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, UnwrapRef, ExtractPropTypes>; }; declare type VueProxy = Vue2ComponentOptions, never, never, PropsOptions, ExtractPropTypes> & VueConstructorProxy; export interface SetupContext { readonly attrs: Record; readonly slots: { [key: string]: VNode[] | undefined; }; readonly parent: ComponentInstance | null; readonly root: ComponentInstance; 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 & Omit, keyof ComponentOptions>): VueProxy; export {};