/** Pure workflow run-budget declarations and resolution. */ export type BudgetDimension = "duration" | "tokens" | "cost"; export interface BudgetReport { readonly dimension: BudgetDimension; readonly reading: number; readonly ceiling: number; readonly percent: number; } export type DurationBudgetReport = BudgetReport & { readonly dimension: "duration"; }; export type UsageBudgetReport = BudgetReport & { readonly dimension: "tokens" | "cost"; }; export interface WorkflowBudget { readonly maxDurationMs?: number; readonly maxTokens?: number; readonly maxCost?: number; readonly warnAtPercent?: number; } export type DurationBudgetCheck = { readonly kind: "continue"; readonly report: DurationBudgetReport; readonly warning: boolean; } | { readonly kind: "exhausted"; readonly report: DurationBudgetReport; }; export declare function enforceDurationBudget(reading: number, budget: EffectiveBudget, options?: { readonly warned?: boolean; }): DurationBudgetCheck; export type UsageBudgetCheck = { readonly kind: "continue"; readonly report: UsageBudgetReport; readonly warning: boolean; } | { readonly kind: "exhausted"; readonly report: UsageBudgetReport; }; export declare function enforceUsageBudget(dimension: "tokens" | "cost", reading: number, ceiling: number, warnAtPercent: number, options?: { readonly warned?: boolean; }): UsageBudgetCheck; /** A fully resolved budget. Create one only with {@link resolve_budget}. */ declare class ResolvedWorkflowBudget { private readonly brand; readonly maxDurationMs: number; readonly maxTokens: number; readonly maxCost: number; readonly warnAtPercent: number; private constructor(); static resolve(layers: ResolveBudgetLayers): ResolvedWorkflowBudget; } /** A validated, fully resolved workflow budget. */ export type EffectiveBudget = ResolvedWorkflowBudget; /** Budget declarations in precedence order: run > definition > config. */ export interface ResolveBudgetLayers { readonly config?: WorkflowBudget; readonly definition?: WorkflowBudget; readonly run?: WorkflowBudget; } /** Return a reason when a budget declaration is invalid. */ export declare function validateWorkflowBudget(value: unknown, label?: string): string | null; /** Reject an invalid optional budget declaration. */ export declare function assertWorkflowBudget(value: WorkflowBudget | undefined, label?: string): void; /** Resolve budget declarations, with later layers winning independently per field. */ export declare function resolve_budget(layers: ResolveBudgetLayers): EffectiveBudget; export {};