import type { VNodeDirective, VNode } from './vnode' export type DirectiveModifiers = Record export interface DirectiveBinding extends Readonly { readonly modifiers: DirectiveModifiers readonly value: V readonly oldValue: V | null } export type DirectiveHook = ( el: T, binding: DirectiveBinding, vnode: VNode, prevVNode: Prev ) => void export interface ObjectDirective { bind?: DirectiveHook inserted?: DirectiveHook update?: DirectiveHook componentUpdated?: DirectiveHook unbind?: DirectiveHook } export type FunctionDirective = DirectiveHook export type Directive = | ObjectDirective | FunctionDirective