export interface TokenRate {
    /** Cost per 1K input tokens (USD). */
    input: number;
    /** Cost per 1K output tokens (USD). */
    output: number;
}
export interface TurnCost {
    turn: number;
    inputTokens: number;
    outputTokens: number;
    estimatedCostUsd: number;
}
export interface CostSummary {
    model: string;
    totalInputTokens: number;
    totalOutputTokens: number;
    totalEstimatedCostUsd: number;
    turns: TurnCost[];
    budgetUsd?: number;
    budgetExceeded: boolean;
    /** Cost per successful task (only meaningful in benchmark context). */
    costPerSuccess?: number;
}
export declare class CostTracker {
    private turns;
    private rate;
    private budgetUsd?;
    readonly model: string;
    constructor(model: string, options?: {
        budgetUsd?: number;
        rates?: Record<string, TokenRate>;
    });
    /** Record a turn's token usage. Returns true if budget is exceeded. */
    recordTurn(turn: number, inputTokens: number, outputTokens: number): boolean;
    totalCost(): number;
    totalInputTokens(): number;
    totalOutputTokens(): number;
    summarize(passedTasks?: number): CostSummary;
    /** Get rate for display. */
    getRate(): TokenRate;
    /** Register or override a model rate at runtime. */
    static registerRate(model: string, rate: TokenRate): void;
    /** Get all known rates. */
    static getAllRates(): Record<string, TokenRate>;
}
//# sourceMappingURL=costTracker.d.ts.map