import type { Client } from "#client/client.js";
import type { ClientSession } from "#client/session.js";
import type { SendTurnInput, SessionState } from "#client/types.js";
import type { HandleMessageStreamEvent, TurnFailureStreamEvent } from "#protocol/message.js";
import type { InputRequest, InputResponse } from "#runtime/input/types.js";
import type { EveEvalSession, EveEvalSessionResult, EveEvalTurn } from "#evals/types.js";
/**
 * Error thrown by {@link EveEvalTurn.expectOk} when a turn failed.
 */
export declare class EveEvalTurnFailedError extends Error {
    readonly event: TurnFailureStreamEvent | undefined;
    readonly turn: EveEvalTurn;
    constructor(turn: EveEvalTurn);
}
export declare class EvalSessionDriver implements EveEvalSession {
    #private;
    constructor(input: {
        readonly session: ClientSession;
        readonly signal?: AbortSignal;
    });
    get events(): readonly HandleMessageStreamEvent[];
    get lastTurn(): EveEvalTurn | undefined;
    get pendingInputRequests(): readonly InputRequest[];
    get sessionId(): string | undefined;
    get state(): SessionState;
    expectInputRequests(filter?: {
        readonly display?: InputRequest["display"];
        readonly toolName?: string;
    }): readonly InputRequest[];
    respond(...responses: InputResponse[]): Promise<EveEvalTurn>;
    respondAll(optionId: string): Promise<EveEvalTurn>;
    send(input: SendTurnInput): Promise<EveEvalTurn>;
    sendFile(text: string, filePath: string, mediaType?: string): Promise<EveEvalTurn>;
    readTurn(options?: {
        readonly startIndex?: number;
    }): Promise<EveEvalTurn>;
    snapshot(primary: boolean): EveEvalSessionResult;
}
export declare class EvalSessionManager {
    #private;
    constructor(input: {
        readonly client: Client;
        readonly signal?: AbortSignal;
    });
    get primary(): EvalSessionDriver;
    newSession(): EvalSessionDriver;
    attachSession(sessionId: string, options?: {
        readonly startIndex?: number;
    }): Promise<EvalSessionDriver>;
    snapshots(): readonly EveEvalSessionResult[];
    lastTurnSession(): EvalSessionDriver | undefined;
}
