/**
 * Agent — clean agent execution loop for CLI subprocess mode.
 *
 * Thin wrapper around tool-loop.ts. Handles:
 *   - DI injection (LLMTransport, ToolInvoker, AgentLogger)
 *   - Turn lifecycle (start event + message repair + delegate to tool loop)
 *   - Top-level error handling
 *
 * The actual tool loop state machine (turn-loop-guard, tool-loop-state,
 * parallel scheduling, tool filtering, etc.) lives in tool-loop.ts,
 * ported faithfully from Hub's semantic-turn-tools.ts.
 *
 * Zero imports from express/pg/ioredis/ws.
 */
import type { AgentLogger, LLMTransport, ToolInvoker, TurnEvent, TurnRequest, HookRegistry } from "./types.js";
import type { AgentRuntimePorts } from "../runtime/ports/index.js";
export interface AgentConfig {
    llmTransport: LLMTransport;
    apiKey: string;
    toolInvoker: ToolInvoker;
    log: AgentLogger;
    hooks?: HookRegistry;
    maxRounds?: number;
    verbose?: boolean;
    /** Project root directory — used for skill pattern tracking. */
    projectRoot?: string;
    runtimePorts: AgentRuntimePorts;
}
export declare class Agent {
    private transport;
    private apiKey;
    private toolInvoker;
    private log;
    private hooks?;
    private maxRounds;
    private configuredMaxRounds?;
    private projectRoot?;
    private runtimePorts;
    constructor(config: AgentConfig);
    /**
     * Execute an agent turn. Yields TurnEvent stream.
     *
     * 1. Emit start
     * 2. Repair conversation history
     * 3. Delegate to executeToolLoop() (full Hub-ported tool loop state machine)
     * 4. Catch unhandled errors
     */
    run(request: TurnRequest, signal?: AbortSignal): AsyncGenerator<TurnEvent>;
}
