import { type HumanReply } from '../elicitation.js';
import type { AgentRunner, AgentRunStartOptions } from '../spi/agent-runner.js';
import type { AgentStore } from '../spi/agent-store.js';
import type { AgentRunInput } from '../types.js';
import type { OpenCodeTurns } from './turns.js';
/**
 * Runs OpenCode turns in this process: `begin → prompt → [observe → wait for a person → reply]* →
 * settle`, with the waits on people held in memory. Like `InlineAgentRunner`, a run parked on a
 * person lives in this process, so deploy it single-replica — or use `openCodeDurable()`
 * (`@adonis-agora/agent/opencode/durable`), which checkpoints every step and waits on a durable
 * signal.
 */
export declare class OpenCodeAgentRunner implements AgentRunner {
    private readonly turns;
    private readonly store;
    private readonly live;
    private readonly cancelled;
    private readonly pending;
    constructor(turns: OpenCodeTurns, store: AgentStore);
    runIdFor(input: AgentRunInput): string;
    /** In-process, so exact: a run this process is not running is not running anywhere. */
    isRunActive(runId: string): Promise<boolean>;
    start(input: AgentRunInput, options?: AgentRunStartOptions): Promise<{
        runId: string;
    }>;
    /**
     * Deliver a person's reply. Answers addressed at an approval are refused, as the inline runner
     * refuses them: they say nothing about whether the action should run.
     */
    signal(runId: string, toolCallId: string, reply: HumanReply): Promise<void>;
    /**
     * Stop the run: what it waits on a person for is dropped, and OpenCode is interrupted — it answers
     * `session.execution.interrupted`, which settles the run as cancelled.
     */
    cancel(runId: string): Promise<void>;
    private run;
    /** Wait for a person's answer; a lapsed approval answers itself as expired. */
    private park;
}
//# sourceMappingURL=runner.d.ts.map