/**
 * BudgetGuard — enforces token / wall-clock / call / $ caps, records
 * a ledger entry on every decrement, emits `budget_breach` + throws
 * `BudgetBreachError` when a cap is hit.
 *
 * Wraps a TraceEmitter. The emitter persists ledger entries + breach
 * events so the classifier, pipelines, and reports can all read
 * budget state from the trace corpus — no separate accounting.
 */
import { AgentEvalError } from './errors';
import type { TraceEmitter } from './trace/emitter';
import type { BudgetSpec } from './trace/schema';
export declare class BudgetBreachError extends AgentEvalError {
    dimension: keyof BudgetSpec;
    limit: number;
    attempted: number;
    constructor(dimension: keyof BudgetSpec, limit: number, attempted: number);
}
export declare class BudgetGuard {
    private consumed;
    private emitter;
    private budget;
    private startedAt;
    constructor(emitter: TraceEmitter, budget: BudgetSpec, now?: () => number);
    /** Record consumption. Throws `BudgetBreachError` if any dimension exceeds its cap. */
    charge(delta: Partial<Record<keyof BudgetSpec, number>>, spanId?: string): Promise<void>;
    /** Convenience: advance wall-clock budget based on elapsed wall time. */
    tickWall(nowMs: number, spanId?: string): Promise<void>;
    get state(): Record<keyof BudgetSpec, number>;
}
//# sourceMappingURL=budget-guard.d.ts.map