import type { ActorCompletionReason, ActorStatus, ActorStopCause } from "./actor-contract.js"; /** Diagnostic categories describe the instrument's result, never prove a target-app defect. */ export declare const CUA_DIAGNOSTIC_CATEGORIES: readonly ["preview", "participant_outcome", "session_interrupted", "execution_error", "evidence_invalid", "mixed", "unknown"]; export type CuaDiagnosticCategory = typeof CUA_DIAGNOSTIC_CATEGORIES[number]; /** Closed at both projection and telemetry boundaries. No provider messages are classified. */ export declare const CUA_DIAGNOSTIC_STOP_CAUSES: readonly ["provider_output_limit", "provider_token_limit", "time_limit", "spend_limit", "study_spend_limit", "provider_incomplete", "provider_status", "harness_aborted", "adapter_limit", "usage_unreported", "unspecified_limit", "mixed", "unknown"]; export type CuaDiagnosticStopCause = typeof CUA_DIAGNOSTIC_STOP_CAUSES[number]; export interface CuaDiagnostics { category: CuaDiagnosticCategory; stopCause?: CuaDiagnosticStopCause; } export declare const isCuaDiagnosticCategory: (value: unknown) => value is CuaDiagnosticCategory; export declare const isCuaDiagnosticStopCause: (value: unknown) => value is CuaDiagnosticStopCause; interface SessionEnding { status: ActorStatus; completionReason: ActorCompletionReason; stopCause?: ActorStopCause; } export declare function cuaLaneDiagnostics(input: { dryRun: boolean; skipped?: boolean; executionError?: boolean; noEngagement?: boolean; session?: SessionEnding; }): CuaDiagnostics; /** Each lane retains its details. The summary never borrows lane one's ending for other lanes. */ export declare function summarizeCuaDiagnostics(input: { dryRun: boolean; evidenceInvalid: boolean; lanes: readonly { status: string; ok: boolean; diagnostics?: CuaDiagnostics; }[]; }): CuaDiagnostics; export declare function formatCuaStopCause(cause: CuaDiagnosticStopCause): string; export declare function formatCuaDiagnostics(diagnostics: CuaDiagnostics): string; export {};