import type { ProviderId } from "../types.js"; import { RESERVED_OUTPUT_TOKENS, SAFETY_MARGIN_TOKENS } from "./request-accounting.js"; export { RESERVED_OUTPUT_TOKENS, SAFETY_MARGIN_TOKENS }; export declare const DEFAULT_AUTO_COMPACT_REQUEST_TOKENS = 180000; /** A session-specific model window reserves 30% for output and wire overhead. */ export declare const CUSTOM_CONTEXT_COMPACTION_RATIO = 0.7; export declare const MIN_AUTO_COMPACT_REQUEST_TOKENS = 20000; export type RequestBudgetSource = "explicit" | "legacy" | "default" | "session"; export interface RequestBudget { readonly configured: number; readonly modelSafe: number; readonly effectiveTrigger: number; readonly source: RequestBudgetSource; readonly clampedByModel: boolean; } export declare function configuredRequestTokens(): { tokens: number; source: RequestBudgetSource; }; export declare function modelSafeRequestTokens(provider: ProviderId | undefined, model: string | undefined): number; export declare function resolveRequestBudget(input?: { readonly provider?: ProviderId | undefined; readonly model?: string | undefined; readonly overrideTokens?: number | undefined; /** User-declared provider/model window for this session only. */ readonly contextLimitTokens?: number | undefined; }): RequestBudget; export declare function requestBudgetDenominator(provider: ProviderId | undefined, model: string | undefined, contextLimitTokens?: number | undefined): number;