import type { ChatMessage, ProviderId, ReasoningPreference, ToolDefinition } from "../../../types.js"; import type { resolveToolDialect } from "../../../llm/capabilities.js"; export interface RequestAssemblyState { freeTierConsecutiveFailures: number; truncatedBudgetRounds: number; continuationBudgetFloor: number; retryWithoutThinking: boolean; } export interface RequestAssemblyPorts { readonly messages: ChatMessage[]; readonly provider: ProviderId; readonly model: string; readonly dialect: ReturnType; readonly nativeToolsActive: boolean; readonly thinking: ReasoningPreference | undefined; readonly step: number; readonly contextLimitTokens: number | undefined; readonly estimateRequestTokens: (messages: readonly ChatMessage[]) => number; readonly selectTools: () => ToolDefinition[] | undefined; readonly notify: (level: "info" | "warn", message: string) => void; readonly emitContextEstimate: (estimatedTokens: number) => void; readonly audit: (event: string, payload: Readonly>) => Promise; } export interface AssembledRequest { readonly tools: ToolDefinition[] | undefined; readonly toolsAttached: boolean; readonly estimatedInputTokens: number; readonly stepMaxTokens: number; readonly rawRequestTokens: number; } export declare const assembleRequest: (ports: RequestAssemblyPorts, state: RequestAssemblyState) => Promise;