/**
* PreToolUse hook event.
*
* Fires before Claude Code executes a tool call. A handler can return
* `allow`, `deny`, `ask`, or `defer` to control whether the tool is run.
* Supports a regex matcher on `tool_name`. See
* https://code.claude.com/docs/en/hooks#pretooluse.
*
* @since 0.1.0
*/
import * as Effect from 'effect/Effect';
import * as Schema from 'effect/Schema';
import { HookToolDecodeError } from '../../Errors.js';
import type { HookContext } from '../Context.js';
import type { HookDefinition } from '../Runner.js';
import * as Tool from '../Tool.js';
declare const Input_base: Schema.Class;
readonly tool_name: Schema.String;
readonly tool_input: Schema.$Record;
readonly tool_use_id: Schema.optional;
readonly session_id: Schema.String;
readonly transcript_path: Schema.String;
readonly cwd: Schema.String;
readonly permission_mode: Schema.optionalKey;
readonly effort: Schema.optionalKey;
readonly agent_id: Schema.optionalKey;
readonly agent_type: Schema.optionalKey;
}>, {}>;
/**
* Decoded PreToolUse hook input received on stdin.
*
* @category Schemas
* @since 0.1.0
*/
export declare class Input extends Input_base {
}
/**
* Valid `permissionDecision` values. `defer` suspends a headless tool call
* for later resumption; omit output entirely for a neutral no-op.
*
* @category Schemas
* @since 0.1.0
*/
export declare const PermissionDecision: Schema.Literals;
declare const HookSpecificOutput_base: Schema.Class;
readonly permissionDecision: Schema.Literals;
readonly permissionDecisionReason: Schema.optional;
readonly updatedInput: Schema.optional>;
readonly additionalContext: Schema.optional;
}>, {}>;
/**
* `hookSpecificOutput` payload for a PreToolUse hook. This is where the
* permission decision lives.
*
* @category Schemas
* @since 0.1.0
*/
export declare class HookSpecificOutput extends HookSpecificOutput_base {
}
declare const Output_base: Schema.Class