/**
 * ClaudeCodeAdapter -- Maps Claude Code PreToolUse/PostToolUse hooks
 * to the GovernanceAdapter interface.
 *
 * Claude Code hooks receive JSON on stdin with the format:
 *   PreToolUse:  { tool_name: string, tool_input: Record<string, unknown> }
 *   PostToolUse: { tool_name: string, tool_input: Record<string, unknown>, tool_output?: unknown, error?: string }
 *
 * Exit code 0 = allow, exit code 2 = block (PreToolUse only).
 *
 * @connexum/ai-governance
 */
import { BaseGovernanceAdapter, type AdapterConfig, type AdapterCapabilities, type ActionContext, type ActionDecision, type ActionResult, type AgentIdentity } from '../adapters/index';
import { GovernanceRuntime } from '../governance/governance-runtime';
import { CircuitBreaker } from '../security/circuit-breaker';
import { EventBus } from '../audit/event-bus';
/** JSON shape received from Claude Code PreToolUse hook (stdin). */
export interface ClaudePreToolUseInput {
    tool_name: string;
    tool_input: Record<string, unknown>;
}
/** JSON shape received from Claude Code PostToolUse hook (stdin). */
export interface ClaudePostToolUseInput {
    tool_name: string;
    tool_input: Record<string, unknown>;
    tool_output?: unknown;
    error?: string;
}
/** Hook points supported by Claude Code. */
export type ClaudeHookPoint = 'PreToolUse' | 'PostToolUse';
export declare class ClaudeCodeAdapter extends BaseGovernanceAdapter {
    private runtime;
    private circuitBreaker;
    private eventBus;
    private agentName;
    initialize(config: AdapterConfig): void;
    /**
     * Map Claude Code PreToolUse input to ActionContext, run governance checks,
     * and return an ActionDecision.
     */
    preAction(context: ActionContext): ActionDecision;
    /**
     * Map Claude Code PostToolUse input to ActionResult, update circuit breaker,
     * and log to EventBus.
     */
    postAction(context: ActionContext, result: ActionResult): void;
    /**
     * Claude Code supports the full governance capability set.
     */
    getCapabilities(): AdapterCapabilities;
    /**
     * Parse raw PreToolUse JSON (from stdin) into an ActionContext.
     */
    static parsePreToolUse(input: ClaudePreToolUseInput, agent?: AgentIdentity): ActionContext;
    /**
     * Parse raw PostToolUse JSON (from stdin) into ActionContext + ActionResult pair.
     */
    static parsePostToolUse(input: ClaudePostToolUseInput, agent?: AgentIdentity): {
        context: ActionContext;
        result: ActionResult;
    };
    /**
     * Full PreToolUse hook handler: parse stdin JSON, run governance, return exit code.
     * Returns 0 for allow, 2 for block.
     */
    handlePreToolUse(rawJson: string, agentIdentity?: AgentIdentity): {
        exitCode: number;
        message?: string;
    };
    /**
     * Full PostToolUse hook handler: parse stdin JSON, run post-action audit.
     * Always returns exit code 0 (post-action hooks do not block).
     */
    handlePostToolUse(rawJson: string, agentIdentity?: AgentIdentity): {
        exitCode: number;
    };
    /** Get the underlying GovernanceRuntime instance. */
    getRuntime(): GovernanceRuntime | null;
    /** Get the underlying CircuitBreaker instance. */
    getCircuitBreaker(): CircuitBreaker | null;
    /** Get the underlying EventBus instance. */
    getEventBus(): EventBus | null;
}
//# sourceMappingURL=claude.d.ts.map