import type { KNodeDirective, KNode } from './knode' 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, knode: KNode, prevKNode: Prev ) => void export interface ObjectDirective { bind?: DirectiveHook inserted?: DirectiveHook update?: DirectiveHook componentUpdated?: DirectiveHook unbind?: DirectiveHook } export type FunctionDirective = DirectiveHook export type Directive = | ObjectDirective | FunctionDirective