import type { Component, DirectiveBinding, ObjectDirective, VNode } from 'vue'; import type { ComponentInstance } from '../util/index.js'; type ExcludeProps = 'v-slots' | `v-slot:${string}` | `on${Uppercase}${string}` | 'key' | 'ref' | 'ref_for' | 'ref_key' | '$children'; declare const CustomDirectiveSymbol: unique symbol; type DirectiveHook = (el: any, binding: B, vnode: VNode, prevVNode: VNode) => void; export interface CustomDirective { created?: DirectiveHook; beforeMount?: DirectiveHook; mounted?: DirectiveHook; beforeUpdate?: DirectiveHook; updated?: DirectiveHook; beforeUnmount?: DirectiveHook; unmounted?: DirectiveHook; [CustomDirectiveSymbol]: true; } export declare function useDirectiveComponent(component: string | Component, props?: (binding: Binding) => Record): CustomDirective; export declare function useDirectiveComponent['$props'], ExcludeProps>>(component: string | C, props?: Record): ObjectDirective;