import type { ChatMessage, Clock, NormalizedResponse } from "@oscharko-dev/keiko-model-gateway";
import { Emitter } from "./emitter.js";
import type { ModelPort, ToolPort } from "./ports.js";
import type { TaskPlan } from "./tasks/policy.js";
import type { HarnessFailure, HarnessLimits, HarnessStateName, RunCounters, TaskType } from "./types.js";
export interface RunContext {
    readonly model: ModelPort;
    readonly tools: ToolPort;
    readonly emitter: Emitter;
    readonly clock: Clock;
    readonly signal: AbortSignal;
    readonly limits: HarnessLimits;
    readonly modelId: string;
    readonly taskType: TaskType;
    readonly plan: TaskPlan;
    readonly startedAt: number;
    readonly counters: RunCounters;
    messages: ChatMessage[];
    lastResponse: NormalizedResponse | undefined;
    patchDiff: string | undefined;
    report: string | undefined;
    failure: HarnessFailure | undefined;
    cancelReason: string | undefined;
    cancelledAtState: HarnessStateName | undefined;
}
export interface StateStep {
    readonly to: HarnessStateName;
    readonly reason: string;
}
export declare function newCounters(): RunCounters;
export declare function contextBytes(messages: readonly ChatMessage[]): number;
//# sourceMappingURL=context.d.ts.map