import type { CallContext, SpendDecision, SpendPolicy } from './types'; export interface CircuitBreakerConfig { enabled?: boolean; repeatThreshold?: number; repeat_threshold?: number; windowSeconds?: number; window_seconds?: number; planChurnMax?: number; plan_churn_max?: number; stepCap?: number; step_cap?: number; } export interface WorkflowEnvelopeConfig { maxUsdPerRun?: number; max_usd_per_run?: number; maxIterations?: number; max_iterations?: number; maxTokens?: number; max_tokens?: number; maxWallClockSeconds?: number; max_wall_clock_seconds?: number; dailyUsdCap?: number; daily_usd_cap?: number; } export interface ToolGateApproval { approved: boolean; approver?: string; verdict?: string; editedArgs?: Record; } export interface ToolGateConfig { enabled?: boolean; mode?: 'human' | 'model'; destructivePatterns?: string[]; destructive_patterns?: string[]; escalationModel?: string; escalation_model?: string; escalationEffort?: 'low' | 'medium' | 'high' | 'xhigh'; escalation_effort?: 'low' | 'medium' | 'high' | 'xhigh'; humanApprover?: (input: ToolGateInput) => ToolGateApproval | Promise; modelReviewer?: (input: ToolGateInput) => ToolGateApproval | Promise; } export interface ToolGateInput { toolName: string; toolArgs?: Record; workflowId?: string; scope?: CallContext['scope']; } export interface GovernanceBlock { kind: 'circuit_breaker' | 'workflow_envelope'; reason: string; projectedCents: number; receipt: Record; } export interface ToolGateResult { approved: boolean; matchedPattern: string | null; mode: 'human' | 'model'; decision: SpendDecision; editedArgs?: Record; } export declare function evaluateGovernanceBeforeDispatch(policy: SpendPolicy, call: CallContext, config: { circuitBreaker?: CircuitBreakerConfig; workflowEnvelope?: WorkflowEnvelopeConfig; }, nowMs?: number): GovernanceBlock | null; export declare function evaluateToolGate(policy: SpendPolicy, input: ToolGateInput, config: ToolGateConfig | undefined): Promise; export declare function buildGovernanceDecision(args: { policy: SpendPolicy; call: CallContext; action: 'allow' | 'block'; projectedCents: number; reason: string; receipt: Record; }): SpendDecision; export declare function fingerprintCall(call: CallContext): string; export declare function sanitizeMetadata(value: T, path?: string): T; //# sourceMappingURL=governance.d.ts.map