import { EventEmitter } from 'events';
import { UsageData } from '../types';
export interface UsageStorageConfig {
    type?: 'memory' | 'file' | 'database';
    path?: string;
    retention?: number;
    maxSize?: number;
}
export interface UsageStorageQuery {
    projectId?: string;
    agentId?: string;
    model?: string;
    timeRange?: {
        start: Date;
        end: Date;
    };
    limit?: number;
    offset?: number;
}
/**
 * Storage layer for usage data
 */
export declare class UsageStorage extends EventEmitter {
    private config;
    private memoryStore;
    private filePath;
    private isInitialized;
    constructor(config?: UsageStorageConfig);
    /**
     * Initialize storage
     */
    initialize(): Promise<void>;
    /**
     * Store usage data
     */
    store(usage: UsageData): Promise<void>;
    /**
     * Query usage data
     */
    query(query?: UsageStorageQuery): Promise<UsageData[]>;
    /**
     * Cleanup old data
     */
    cleanup(cutoffDate?: Date): Promise<void>;
    /**
     * Update configuration
     */
    updateConfig(config: Partial<UsageStorageConfig>): Promise<void>;
    /**
     * Get storage status
     */
    getStatus(): any;
    private storeInMemory;
    private queryMemory;
    private cleanupMemory;
    private initializeFileStorage;
    private storeInFile;
    private queryFile;
    private cleanupFile;
    private saveToFile;
    private initializeDatabaseStorage;
    private storeInDatabase;
    private queryDatabase;
    private cleanupDatabase;
    private applyFilters;
}
//# sourceMappingURL=UsageStorage.d.ts.map