import type { ModelMessage } from 'ai';
import { type AskResult, type DenyResult, type NextResult } from './results';
import type { ApprovalRequestData, ToolInfo } from './shared';
export interface ApprovalHookContext {
    toolName: string;
    toolCallId: string;
    input: Record<string, unknown>;
    tool: ToolInfo;
    getContextWindow: () => ReadonlyArray<ModelMessage>;
    next(): NextResult;
    deny(reason?: string): DenyResult;
    ask(approval: ApprovalRequestData): AskResult;
}
export type ApprovalHookResult = NextResult | DenyResult | AskResult;
export type ApprovalHook = (ctx: ApprovalHookContext) => ApprovalHookResult | Promise<ApprovalHookResult>;
interface ApprovalHookChainInput {
    toolName: string;
    toolCallId: string;
    input: Record<string, unknown>;
    tool: ToolInfo;
    getContextWindow: () => ReadonlyArray<ModelMessage>;
}
export declare function runApprovalHooks(hooks: ApprovalHook[], baseCtx: ApprovalHookChainInput): Promise<ApprovalHookResult>;
export {};
//# sourceMappingURL=approval.d.ts.map