import { Ref } from '@vue/composition-api'; import Vue, { VNode } from 'vue'; import { ClassAttributes, DomEvent, EventHandlers, HTMLAttributes, NativeEvents } from '../types'; declare module '@vue/composition-api/dist/component/component' { interface SetupContext { readonly refs: { [key: string]: Vue | Element | Vue[] | Element[]; }; } } declare global { namespace JSX { interface FunctionMode { } } } export declare type Intersection = T & Omit; export declare type EventBase = { [K in string]?: any; }; export declare type SlotBase = { [K in string]?: any; }; interface DefaultSlot { default?: () => VNode[]; } export interface HookContext { readonly attrs: A; readonly slots: S; readonly listeners: { [key: string]: Function; }; bindRefKey(ref?: Ref | ((value: T) => void)): string; renderSlot(event: K, fallback?: VNode[] | VNode | null, ...args: Parameters>): VNode[]; emit(event: K, ...args: Parameters>): void; } export declare type HookSetupFunction = (this: void, props: P, ctx: HookContext, Intersection, S>) => () => VNode | null; export declare type ComponentRender = { $props: P; $attrs: A; } & P & Vue; export declare type ComponentResult = JSX.FunctionMode extends { enable: true; } ? VNode : ComponentRender>; export interface VueComponentOptions { props: string[]; name?: string; inheritAttrs?: boolean; } export declare type CombineProps = P & ClassAttributes, Intersection, S> & Omit & Intersection & EventHandlers; export interface VC VNode[]; }> extends VueComponentOptions { (props: CombineProps): ComponentResult; } export declare function HC VNode[]; }>(setup: HookSetupFunction, props?: Array, name?: string): VC; export {};