/**
 * SpendTrackingProvider — LLMProvider decorator
 *
 * Wraps any LLMProvider to capture token usage from every analyze() call
 * and emit a SpendRecord via the SpendEmitter singleton. Uses the same
 * decorator pattern as the existing BudgetGuardProvider.
 *
 * Zero changes required to individual provider implementations.
 */
import type { LLMProvider, LLMProviderType, AnalyzeResult, AnalyzeOptions, StructuredOptions } from '../llm/types.js';
export interface SpendTrackingContext {
    incrementId?: string;
    project?: string;
    sessionId?: string;
}
/**
 * Decorator that intercepts LLMProvider.analyze() results and emits
 * SpendRecords for every successful request with token usage data.
 */
export declare class SpendTrackingProvider implements LLMProvider {
    private readonly inner;
    private readonly emitter;
    private readonly registry;
    private readonly context;
    constructor(inner: LLMProvider, context?: SpendTrackingContext);
    get name(): LLMProviderType;
    get defaultModel(): string;
    analyze(prompt: string, options?: AnalyzeOptions): Promise<AnalyzeResult>;
    analyzeStructured<T>(prompt: string, options: StructuredOptions<T>): Promise<{
        data: T;
        usage: AnalyzeResult['usage'];
        estimatedCost: number;
    }>;
    estimateCost(inputTokens: number, outputTokens: number, model?: string): number;
    isAvailable(): Promise<boolean>;
    getStatus(): Promise<{
        available: boolean;
        latencyMs?: number;
        error?: string;
    }>;
    private emitSpendRecord;
}
//# sourceMappingURL=spend-tracking-provider.d.ts.map