import { EventEmitter } from 'events';
import { UsageData } from '../types';
export interface UsageConfig {
    enabled?: boolean;
    storage?: {
        type: 'memory' | 'file' | 'database';
        path?: string;
        retention?: number;
    };
    metrics?: {
        enabled: boolean;
        provider?: 'prometheus' | 'statsd' | 'custom';
        endpoint?: string;
    };
}
export interface UsageStats {
    totalRequests: number;
    totalTokens: number;
    totalCost: number;
    averageTokensPerRequest: number;
    modelBreakdown: Record<string, {
        requests: number;
        tokens: number;
        cost: number;
    }>;
    timeRange: {
        start: Date;
        end: Date;
    };
    projectBreakdown?: Record<string, {
        requests: number;
        tokens: number;
        cost: number;
    }>;
    agentBreakdown?: Record<string, {
        requests: number;
        tokens: number;
        cost: number;
    }>;
}
export interface UsageTrackerQuery {
    projectId?: string;
    agentId?: string;
    model?: string;
    timeRange?: {
        start: Date;
        end: Date;
    };
    limit?: number;
    offset?: number;
}
export interface CostBreakdown {
    total: number;
    byModel: Record<string, number>;
    byProject?: Record<string, number>;
    byAgent?: Record<string, number>;
    byTimeRange: Array<{
        date: string;
        cost: number;
    }>;
}
/**
 * Usage tracking system for Conduit
 */
export declare class UsageTracker extends EventEmitter {
    private config;
    private storage;
    private metrics;
    private isInitialized;
    constructor(config?: UsageConfig);
    /**
     * Initialize usage tracking
     */
    initialize(): Promise<void>;
    /**
     * Track usage data
     */
    trackUsage(usage: UsageData): Promise<void>;
    /**
     * Get usage statistics
     */
    getUsageStats(query?: UsageTrackerQuery): Promise<UsageStats>;
    /**
     * Get cost breakdown
     */
    getCostBreakdown(query?: UsageTrackerQuery): Promise<CostBreakdown>;
    /**
     * Get recent usage data
     */
    getRecentUsage(limit?: number): Promise<UsageData[]>;
    /**
     * Clear old usage data
     */
    cleanupOldData(olderThanDays?: number): Promise<void>;
    /**
     * Export usage data
     */
    exportData(query?: UsageTrackerQuery, format?: 'json' | 'csv'): Promise<string>;
    /**
     * Get usage tracking status
     */
    getStatus(): any;
    /**
     * Update configuration
     */
    updateConfig(config: Partial<UsageConfig>): Promise<void>;
    /**
     * Validate usage data
     */
    private validateUsageData;
    /**
     * Calculate statistics from usage data
     */
    private calculateStats;
    /**
     * Calculate cost breakdown
     */
    private calculateCostBreakdown;
    /**
     * Format data as CSV
     */
    private formatAsCSV;
    /**
     * Cleanup resources
     */
    cleanup(): Promise<void>;
}
//# sourceMappingURL=UsageTracker.d.ts.map