import { ModelUsage } from '../data/model_data.js';
import { ProviderStreamEvent } from '../types/types.js';
type EmitEventFunction = (event: ProviderStreamEvent) => Promise<void>;
type HasEventHandlerFunction = () => boolean;
export declare function setEventControllerFunctions(emitFn: EmitEventFunction, hasFn: HasEventHandlerFunction): void;
declare class CostTracker {
    private entries;
    private started;
    private onAddUsageCallbacks;
    calculateCost(usage: ModelUsage): ModelUsage;
    onAddUsage(callback: (usage: ModelUsage) => void): void;
    offAddUsage(callback: (usage: ModelUsage) => void): void;
    addUsage(usage: ModelUsage): ModelUsage;
    getTotalCost(): number;
    getCostsByModel(): Record<string, {
        cost: number;
        calls: number;
    }>;
    printSummary(): void;
    getCostInTimeWindow(seconds: number): number;
    getCostRate(windowSeconds?: number): number;
    getUsageInTimeWindow(seconds: number): ModelUsage[];
    getCostsByModelInTimeWindow(seconds: number): Record<string, {
        cost: number;
        calls: number;
    }>;
    reset(): void;
    static estimateTokens(text: string): number;
    addEstimatedUsage(model: string, inputText: string, outputText: string, metadata?: Record<string, unknown>): ModelUsage;
}
export declare const costTracker: CostTracker;
export { CostTracker };
export interface UsageEntry {
    model: string;
    input_tokens?: number;
    output_tokens?: number;
    image_count?: number;
    timestamp?: Date;
}
//# sourceMappingURL=cost_tracker.d.ts.map