import type { SessionCapabilities } from "#channel/types.js";
import { type SessionInputQueue } from "#execution/session/input-queue.js";
import type { SessionInboxReader } from "#execution/session-inbox/inbox.js";
import type { SessionStateCursor } from "#execution/session/state-cursor.js";
import type { WorkflowToolRunMessage } from "#execution/tools/workflow/messages.js";
import type { TurnOutcome, TurnStepPayload } from "#execution/session/turn-step-types.js";
import type { RunMode } from "#shared/run-mode.js";
import type { RuntimeActionResult } from "#shared/action-types.js";
export interface SessionExecutionInput {
    readonly capabilities?: SessionCapabilities;
    readonly cursor: SessionStateCursor;
    readonly inbox: SessionInboxReader;
    readonly mode: RunMode;
    readonly queue: SessionInputQueue;
    readonly sessionId: string;
}
/**
 * Executes conversational turns inside the owning session workflow: runs
 * `turnStep`, services the inbox at committed boundaries, coordinates waits,
 * and settles locally. There is no child run and no transport protocol.
 */
export declare class SessionExecution {
    private readonly input;
    constructor(input: SessionExecutionInput);
    get cursor(): SessionStateCursor;
    runTurn(delivery: TurnStepPayload | undefined): Promise<TurnOutcome>;
    private runTurnSteps;
    handleWorkflowMessage(message: WorkflowToolRunMessage): Promise<RuntimeActionResult | undefined>;
    private finishCancelledTurn;
    private waitForRuntimeActionResults;
}
