/**
 * Claude Code Executor Service
 *
 * Infrastructure implementation of IAgentExecutor for Claude Code agent.
 * Executes prompts via the `claude` CLI subprocess with JSON and stream-json
 * output formats.
 *
 * Uses constructor dependency injection for the spawn function
 * to enable testability without mocking node:child_process directly.
 */
import type { ChildProcess } from 'node:child_process';
import type { AgentType, AgentFeature } from '../../../../../domain/generated/output.js';
import type { IAgentExecutor, AgentExecutionOptions, AgentExecutionResult, AgentExecutionStreamEvent } from '../../../../../application/ports/output/agents/agent-executor.interface.js';
/**
 * Type for the spawn dependency.
 * Matches the signature of child_process.spawn.
 * Injected via constructor to enable testability.
 */
export type SpawnFunction = (command: string, args: string[], options?: object) => ChildProcess;
/**
 * Executor service for Claude Code agent.
 * Uses subprocess spawning to interact with the `claude` CLI.
 */
export declare class ClaudeCodeExecutorService implements IAgentExecutor {
    private readonly spawn;
    readonly agentType: AgentType;
    /** When true, suppresses debug logging (set per-call via options.silent) */
    private silent;
    constructor(spawn: SpawnFunction);
    /** Debug logging — writes to stdout so it appears in the worker log file */
    private log;
    execute(prompt: string, options?: AgentExecutionOptions): Promise<AgentExecutionResult>;
    executeStream(prompt: string, options?: AgentExecutionOptions): AsyncIterable<AgentExecutionStreamEvent>;
    /**
     * Log a stream-json line as a human-readable event in the worker log.
     * Extracts tool calls, assistant text, and result summaries.
     */
    private logStreamEvent;
    supportsFeature(feature: AgentFeature): boolean;
    private buildArgs;
    private buildStreamArgs;
    private buildSpawnOptions;
    private parseJsonResult;
    private parseStreamLine;
}
//# sourceMappingURL=claude-code-executor.service.d.ts.map