import type { LatencyMode, ReasoningEffort, SessionEvent, SessionModelAccountChoiceResponse } from "@opengeni/sdk"; import { type ClientOverride } from "../session-context.js"; import { type SessionEventFeedOptions } from "./internal.js"; /** Refresh when a turn actually admits — not on composer picker / queue-only changes. */ export declare function isLastStartedTurnPolicyEvent(event: Pick): boolean; export type LastStartedTurnPolicy = { model: string; reasoningEffort: ReasoningEffort; latencyMode: LatencyMode; turnId: string; }; export type UseLastStartedTurnPolicyOptions = ClientOverride & SessionEventFeedOptions & { pollIntervalMs?: number | undefined; /** Project the last lease-backed serving model without changing the accepted policy. */ includeServingModel?: boolean | undefined; }; export type UseLastStartedTurnPolicyResult = { /** Null until some turn has durably emitted `turn.started`. */ policy: LastStartedTurnPolicy | null; loading: boolean; error: Error | null; refresh: () => Promise; }; /** Never project an earlier turn's selection onto newly admitted work. */ export declare function withServingModel(policy: LastStartedTurnPolicy | null, serving: SessionModelAccountChoiceResponse["serving"]): LastStartedTurnPolicy | null; /** * Model·effort·latency of the newest admitted turn (`turn.started`). This is * historical runtime truth for the session header — not the composer next-turn * picker and not the frozen session creation defaults. */ export declare function useLastStartedTurnPolicy(sessionId: string | null | undefined, options?: UseLastStartedTurnPolicyOptions): UseLastStartedTurnPolicyResult;