/**
 * OrchestratorPTY — Assess loop for Orchestrator-over-PTY
 *
 * Drives a PTY session via an LLM assessor using a read→assess→plan→act→wait
 * loop. The LLM observes the current screen state and decides whether to type,
 * wait, send a signal, or declare the mission complete.
 *
 * The LLMAssessor interface is generic — no Anthropic SDK is imported here —
 * which keeps this class fully testable with mock assessors.
 *
 * @issue #755
 * @see src/serve/screen-reader.ts — ScreenReader / ScreenState
 * @see src/serve/pty-bridge.ts    — PtyLike and session interfaces
 */
import type { ScreenReader } from './screen-reader.js';
export interface OrchestratorAction {
    action: 'type' | 'wait' | 'signal' | 'complete';
    text?: string;
    signal?: string;
    reasoning: string;
}
export interface OrchestratorContext {
    /** What the orchestrator is trying to accomplish */
    mission: string;
    /** Seed actions (usually empty; advanced use-cases may pre-populate) */
    recentActions: OrchestratorAction[];
    /** Hard cap on loop iterations. Default: 100 */
    maxCycles?: number;
}
/** Minimal session interface for writing to PTY */
export interface OrchestratorSession {
    write(data: string): Promise<void>;
    signal(sig: string): Promise<void>;
}
/** Minimal LLM client interface for the assess step */
export interface LLMAssessor {
    assess(input: {
        screen_state: string;
        prompt_detected: boolean;
        prompt_text?: string;
        context: OrchestratorContext;
        history: OrchestratorAction[];
    }): Promise<OrchestratorAction>;
}
export declare class OrchestratorPTY {
    private readonly session;
    private readonly screenReader;
    private readonly llm;
    private readonly context;
    private readonly maxCycles;
    private _history;
    private _done;
    private _paused;
    constructor(session: OrchestratorSession, screenReader: ScreenReader, llm: LLMAssessor, context: OrchestratorContext);
    /**
     * Run the assess loop until:
     *   - the LLM returns `complete`
     *   - `maxCycles` iterations are exhausted
     *   - `pause()` is called
     */
    run(): Promise<void>;
    /** Pause the loop at the next iteration boundary. */
    pause(): void;
    /**
     * Clear the pause flag and re-enter the assess loop.
     * Resolves when the loop exits again (complete or paused again).
     */
    resume(): Promise<void>;
    /** Returns a copy of the full action history. */
    getHistory(): OrchestratorAction[];
    /** Whether the orchestrator has reached a terminal `complete` state. */
    get done(): boolean;
    /** Whether the orchestrator is currently paused. */
    get paused(): boolean;
    private _execute;
}
//# sourceMappingURL=orchestrator-pty.d.ts.map