import type { AgentLayerToolOutput } from '../messages';
import type { ApprovalRequest, StopOptions } from './shared';
export interface NextOptions {
    /** When true, patch the tool-call input in the assistant message so the model sees the mutated values. Default: false. */
    updateContextWindow?: boolean;
    /** When true, inject a system notification telling the model the inputs were modified. Default: false. */
    notifyModel?: boolean;
}
export interface NextResult {
    readonly type: 'next';
    updatedInput?: Record<string, unknown>;
    /** When true, patch the tool-call input in the assistant message. */
    updateContextWindow?: boolean;
    /** When true, inject a system notification about the mutation. */
    notifyModel?: boolean;
}
export interface DenyResult {
    readonly type: 'deny';
    reason?: string;
}
export interface AskResult {
    readonly type: 'ask';
    approval: ApprovalRequest;
}
export interface ToolResultOptions {
    /** When true, the result is treated as an error and won't trigger toolCompleted() stop conditions. Default: false. */
    isError?: boolean;
}
export interface ToolResultResult {
    readonly type: 'toolResult';
    output: AgentLayerToolOutput;
    /** When true, the result is treated as an error (won't trigger toolCompleted()). */
    isError: boolean;
}
export interface HookStopResult {
    readonly type: 'stop';
    /** Whether to include this tool's result in the context window. Defaults to true. */
    include?: boolean;
    /** Optional output to use as the tool result when include is true. */
    output?: AgentLayerToolOutput;
    /** If true, also drop all sibling tool results from the same parallel batch. */
    dropParallel?: boolean;
    /** Human-readable reason for stopping. */
    reason?: string;
}
export interface DoneResult {
    readonly type: 'done';
    mutatedResult?: AgentLayerToolOutput;
}
export type PostToolUseResult = DoneResult;
export declare function hookNext(updatedInput?: Record<string, unknown>, opts?: NextOptions): NextResult;
export declare function hookDeny(reason?: string): DenyResult;
export declare function hookAsk(approval: ApprovalRequest): AskResult;
export declare function hookToolResult(output: AgentLayerToolOutput, opts?: ToolResultOptions): ToolResultResult;
export declare function hookStop(options?: StopOptions): HookStopResult;
export declare function hookDone(mutatedResult?: AgentLayerToolOutput): DoneResult;
//# sourceMappingURL=results.d.ts.map