import 'reflect-metadata'; import { Token } from '@frontmcp/sdk'; export type HookKind = 'stage' | 'will' | 'did' | 'around'; export type Priority = number; export declare const DecoratorMD: { readonly HOOKS: symbol; readonly PLAN: symbol; readonly PLAN_NAME: symbol; readonly PLAN_DEPENDS_ON: symbol; }; export type HookMeta = { kind: HookKind; stage: string; method: string; priority: Priority; filter?: Function; name?: string; }; /** Plan type + decorator */ export type Plan = { name: T; pre?: readonly T[]; execute?: readonly T[]; post?: readonly T[]; finalize?: readonly T[]; error?: readonly T[]; }; type PlanOptions = { dependsOn: Token[]; }; export declare function InvokePlan(plan: Plan, options?: PlanOptions): (ctor: Function) => void; type Values = T[keyof T]; type ArrayElem = T extends ReadonlyArray ? U : never; export type StagesFromPlan

> = ArrayElem>>; export {};