//#region src/hooks/types.d.ts
type HookInstallSpec = {
  id?: string;
  kind: "bundled" | "npm" | "git";
  label?: string;
  package?: string;
  repository?: string;
  bins?: string[];
};
type NodmixHookMetadata = {
  always?: boolean;
  hookKey?: string;
  emoji?: string;
  homepage?: string; /** Events this hook handles (e.g., ["command:new", "session:start"]) */
  events: string[]; /** Optional export name (default: "default") */
  export?: string;
  os?: string[];
  requires?: {
    bins?: string[];
    anyBins?: string[];
    env?: string[];
    config?: string[];
  };
  install?: HookInstallSpec[];
};
type HookInvocationPolicy = {
  enabled: boolean;
};
type ParsedHookFrontmatter = Record<string, string>;
type Hook = {
  name: string;
  description: string;
  source: "nodmix-bundled" | "nodmix-managed" | "nodmix-workspace" | "nodmix-plugin";
  pluginId?: string;
  filePath: string;
  baseDir: string;
  handlerPath: string;
};
type HookEntry = {
  hook: Hook;
  frontmatter: ParsedHookFrontmatter;
  metadata?: NodmixHookMetadata;
  invocation?: HookInvocationPolicy;
};
//#endregion
export { HookEntry as t };