/**
 * API Usage Tracker for BaoLife
 * Tracks API usage and costs for OpenAI calls.
 * Provides insights into spending patterns and enables budget enforcement.
 * Ported from Python api_usage_tracker.py
 */
export interface APIUsage {
    prompt_tokens: number;
    completion_tokens: number;
    total_tokens: number;
}
export interface PlayerUsageStats {
    total_cost: number;
    total_tokens: number;
    total_calls: number;
    avg_cost_per_call: number;
    first_call: Date | null;
    last_call: Date | null;
    period_days: number;
}
export interface UsageByPurpose {
    purpose: string;
    call_count: number;
    total_tokens: number;
    total_cost: number;
    avg_cost: number;
}
export interface TotalUsageStats {
    unique_players: number;
    total_cost: number;
    total_tokens: number;
    total_calls: number;
    avg_cost_per_call: number;
    period_days: number;
}
export interface BudgetStatus {
    total_cost: number;
    monthly_limit: number;
    remaining: number;
    percentage_used: number;
    over_budget: boolean;
    warning: boolean;
}
export declare const API_PRICING: Record<string, {
    input: number;
    output: number;
}>;
export declare class APIUsageTracker {
    private tableCreated;
    /**
     * Create api_usage table if it doesn't exist
     */
    createTableIfNotExists(): Promise<void>;
    /**
     * Calculate cost for API usage
     */
    calculateCost(model: string, usage: APIUsage): number;
    /**
     * Log API usage to database
     */
    trackUsage(playerId: string, conversationId: string | null, model: string, usage: APIUsage, purpose?: string): Promise<number>;
    /**
     * Get player's API usage statistics for last N days
     */
    getPlayerUsage(playerId: string, days?: number): Promise<PlayerUsageStats | null>;
    /**
     * Get usage breakdown by purpose
     */
    getUsageByPurpose(playerId?: string, days?: number): Promise<UsageByPurpose[]>;
    /**
     * Get total usage across all players
     */
    getTotalUsage(days?: number): Promise<TotalUsageStats | null>;
    /**
     * Check if player is within budget
     */
    checkPlayerBudget(playerId: string, monthlyLimit?: number): Promise<BudgetStatus | null>;
    /**
     * Print usage report to console
     */
    printUsageReport(playerId?: string, days?: number): Promise<void>;
}
export declare const apiUsageTracker: APIUsageTracker;
export declare const tracker: {
    APIUsageTracker: typeof APIUsageTracker;
    apiUsageTracker: APIUsageTracker;
    API_PRICING: Record<string, {
        input: number;
        output: number;
    }>;
};
//# sourceMappingURL=api_usage_tracker.d.ts.map