import { type ConversationState } from "#client/conversation-state.js"; import type { ActiveTurn } from "#client/eve-agent-store-state.js"; import type { CancelSessionResult, SendTurnPayload } from "#client/types.js"; import { type MessageStreamEvent } from "#protocol/message.js"; import type { UserContent } from "ai"; export declare function activeTurnForOptimisticFollowUp(events: readonly MessageStreamEvent[]): string | undefined; /** * Where catch-up stops following and when an idle session counts as settled. These reads have no * response to scope them, so the {@link endsTurnSegment} rule reads the whole conversation. */ export declare function isResponseBoundary(event: MessageStreamEvent, conversation: ConversationState): boolean; /** A turn parked on a question stays open, so its session is still streaming. */ export declare function settledStatus(error: Error | undefined, conversation: ConversationState): "error" | "ready" | "streaming"; export declare function isSettledSessionTail(events: readonly MessageStreamEvent[], conversation: ConversationState): boolean; /** A server ignores answers to requests it already settled, so the store never sends them. */ export declare function assertAnswerable(input: SendTurnPayload, conversation: ConversationState): void; export declare function assertInFlightFollowUp(input: SendTurnPayload): void; export declare function validateFollowUp(input: T): T; export declare function assertExclusiveTurnInput(input: SendTurnPayload): void; export declare function createSubmissionId(): string; export declare function createAbortSignal(first: AbortSignal | undefined, second: AbortSignal): AbortSignal; export declare function summarizeUserContent(message: string | UserContent): string; export declare function isAbortError(error: unknown): boolean; export declare function toTerminalStreamFailureError(event: MessageStreamEvent): Error | undefined; export declare function createActiveTurn(cancel: (turn: ActiveTurn) => Promise): ActiveTurn; /** Counts confirmed steered messages toward the active turn's accepted follow-ups. */ export declare function countFollowUpDeliveries(turn: ActiveTurn, reconciliation: { readonly alreadyProjected: boolean; readonly event: MessageStreamEvent; readonly ids: readonly string[]; }): void; export declare function followSteeredTurns(turn: ActiveTurn, events: AsyncIterable, isActive: () => boolean): Promise; /** Aborts a caller's wait without cancelling shared work owned by the store. */ export declare function waitWithSignal(promise: Promise, signal?: AbortSignal): Promise;