/** * Schema for the `hooks` subtree of a Claude Code settings.json file. * * Claude Code's hooks wire-up format looks like: * * ```jsonc * { * "hooks": { * "PreToolUse": [ * { * "matcher": "Bash|Edit", * "hooks": [ * { "type": "command", "command": "bun hook.ts", "timeout": 30 } * ] * } * ] * } * } * ``` * * Claude Code supports five hook types: `command`, `http`, `mcp_tool`, * `prompt`, and `agent`. This module schematizes all five. * * @since 0.1.0 */ import * as Schema from 'effect/Schema'; declare const CommandHookEntry_base: Schema.Class; readonly command: Schema.String; readonly args: Schema.optional>; readonly async: Schema.optional; readonly asyncRewake: Schema.optional; readonly shell: Schema.optional>; readonly if: Schema.optional; readonly timeout: Schema.optional; readonly statusMessage: Schema.optional; readonly once: Schema.optional; }>, {}>; export declare class CommandHookEntry extends CommandHookEntry_base { } declare const HttpHookEntry_base: Schema.Class; readonly url: Schema.String; readonly headers: Schema.optional>; readonly allowedEnvVars: Schema.optional>; readonly if: Schema.optional; readonly timeout: Schema.optional; readonly statusMessage: Schema.optional; readonly once: Schema.optional; }>, {}>; export declare class HttpHookEntry extends HttpHookEntry_base { } declare const McpToolHookEntry_base: Schema.Class; readonly server: Schema.String; readonly tool: Schema.String; readonly input: Schema.optional>; readonly if: Schema.optional; readonly timeout: Schema.optional; readonly statusMessage: Schema.optional; readonly once: Schema.optional; }>, {}>; export declare class McpToolHookEntry extends McpToolHookEntry_base { } declare const PromptHookEntry_base: Schema.Class; readonly prompt: Schema.String; readonly model: Schema.optional; readonly continueOnBlock: Schema.optional; readonly if: Schema.optional; readonly timeout: Schema.optional; readonly statusMessage: Schema.optional; readonly once: Schema.optional; }>, {}>; export declare class PromptHookEntry extends PromptHookEntry_base { } declare const AgentHookEntry_base: Schema.Class; readonly prompt: Schema.String; readonly model: Schema.optional; readonly continueOnBlock: Schema.optional; readonly if: Schema.optional; readonly timeout: Schema.optional; readonly statusMessage: Schema.optional; readonly once: Schema.optional; }>, {}>; export declare class AgentHookEntry extends AgentHookEntry_base { } /** * A single hook entry in settings.json — a discriminated union of the * five supported types keyed on `type`. * * @category Schemas * @since 0.1.0 */ export declare const HookEntry: Schema.Union; export type HookEntry = Schema.Schema.Type; declare const HookMatcherGroup_base: Schema.Class; readonly hooks: Schema.$Array>; }>, {}>; /** * A group of hook entries sharing a common matcher. * * @category Schemas * @since 0.1.0 */ export declare class HookMatcherGroup extends HookMatcherGroup_base { } /** * The full `hooks` subtree of settings.json — a record keyed by event * name, each holding an array of matcher groups. * * @category Schemas * @since 0.1.0 */ export declare const HooksSection: Schema.$Record>; export type HooksSection = Schema.Schema.Type; export {}; //# sourceMappingURL=HooksSection.d.ts.map