/**
 * @fileoverview Token tracking service for multi-pass reviews.
 *
 * This module provides detailed token tracking and reporting functionality
 * for multi-pass reviews, recording token usage across passes and providing
 * comprehensive statistics for reporting.
 */
/**
 * Token usage for a single pass in a multi-pass review
 */
export interface PassTokenUsage {
    /** Pass number */
    passNumber: number;
    /** Number of input tokens for this pass */
    inputTokens: number;
    /** Number of output tokens for this pass */
    outputTokens: number;
    /** Total tokens for this pass */
    totalTokens: number;
    /** Estimated cost for this pass */
    estimatedCost: number;
    /** Time taken for this pass in milliseconds */
    timeTakenMs: number;
    /** Files processed in this pass */
    files: string[];
    /** Whether this was a consolidation pass */
    isConsolidation: boolean;
}
/**
 * Consolidated token usage across all passes
 */
export interface ConsolidatedTokenUsage {
    /** Total input tokens across all passes */
    totalInputTokens: number;
    /** Total output tokens across all passes */
    totalOutputTokens: number;
    /** Total tokens across all passes */
    totalTokens: number;
    /** Total estimated cost across all passes */
    totalEstimatedCost: number;
    /** Formatted total cost */
    formattedTotalCost: string;
    /** Token usage for each pass */
    passTokenUsage: PassTokenUsage[];
    /** Total time taken across all passes in milliseconds */
    totalTimeTakenMs: number;
    /** Average tokens per file */
    averageTokensPerFile: number;
    /** Total number of files processed */
    totalFiles: number;
    /** Number of passes */
    passCount: number;
    /** Context maintenance factor used in multi-pass reviews */
    contextMaintenanceFactor: number;
    /** Model name used for review */
    modelName: string;
    /** Whether a consolidation pass was included */
    includedConsolidation: boolean;
}
/**
 * Real-time token statistics for monitoring
 */
export interface TokenStatistics {
    /** Current token usage rate (tokens per second) */
    currentTokenRate: number;
    /** Average token usage rate (tokens per second) */
    averageTokenRate: number;
    /** Estimated tokens remaining */
    estimatedTokensRemaining: number;
    /** Estimated time remaining in milliseconds */
    estimatedTimeRemainingMs: number;
    /** Estimated total cost so far */
    estimatedCostSoFar: number;
    /** Formatted estimated cost so far */
    formattedEstimatedCostSoFar: string;
}
/**
 * Service for tracking and reporting token usage in multi-pass reviews
 */
export declare class TokenTracker {
    /** Token usage for each pass */
    private passTokenUsage;
    /** Start time of tracking */
    private startTime;
    /** Model name for cost estimation */
    private modelName;
    /** Context maintenance factor used in multi-pass reviews */
    private contextMaintenanceFactor;
    /** Whether the tracker is active */
    private isActive;
    /** Pass currently being tracked */
    private currentPass;
    /** Current pass start time */
    private currentPassStartTime;
    /**
     * Create a new token tracker
     * @param modelName Model name
     * @param contextMaintenanceFactor Context maintenance factor (0-1)
     */
    constructor(modelName: string, contextMaintenanceFactor?: number);
    /**
     * Start tracking a new pass
     * @param passNumber Pass number
     * @param files Files being processed in this pass
     * @param isConsolidation Whether this is a consolidation pass
     */
    startPass(passNumber: number, files: string[], isConsolidation?: boolean): void;
    /**
     * Record token usage for the current pass
     * @param inputText Input text sent to the model
     * @param outputText Output text received from the model
     * @param passNumber Optional specific pass number (defaults to current pass)
     * @returns Updated token usage for the pass
     */
    recordTokenUsage(inputText: string, outputText: string, passNumber?: number): PassTokenUsage;
    /**
     * Complete the current pass
     * @param passNumber Optional specific pass number (defaults to current pass)
     * @returns Token usage for the completed pass
     */
    completePass(passNumber?: number): PassTokenUsage;
    /**
     * Start a consolidation pass
     * @param files Files being consolidated (typically just the review file)
     * @returns Pass number for the consolidation pass
     */
    startConsolidationPass(files: string[]): number;
    /**
     * Get token usage for a specific pass
     * @param passNumber Pass number
     * @returns Token usage for the pass
     */
    getPassTokenUsage(passNumber: number): PassTokenUsage | undefined;
    /**
     * Get consolidated token usage across all passes
     * @returns Consolidated token usage
     */
    getConsolidatedTokenUsage(): ConsolidatedTokenUsage;
    /**
     * Get current token statistics for real-time monitoring
     * @returns Current token statistics
     */
    getTokenStatistics(): TokenStatistics;
    /**
     * Generate a formatted report of token usage
     * @returns Formatted token usage report in Markdown format
     */
    generateTokenUsageReport(): string;
    /**
     * Stop the tracker
     * @returns Final consolidated token usage
     */
    stop(): ConsolidatedTokenUsage;
}
