export interface ApiKeyData { id: number; apiKey: string; userId: string; name?: string; description?: string; createdAt: number; updatedAt: number; lastUsedAt?: number; isActive: boolean; rateLimitRpm?: number; rateLimitTpm?: number; usageCount: number; billingTier?: string; balanceTokens?: number; monthlyQuotaTokens?: number; metadata?: string; } export interface ProviderKeyData { id: number; apiKeyId: number; provider: string; encryptedKey: string; isActive: boolean; createdAt: number; updatedAt: number; } export interface CreateApiKeyRequest { userId: string; name?: string; description?: string; providerKeys?: Record; rateLimitRpm?: number; rateLimitTpm?: number; metadata?: Record; } export interface UsageLog { apiKeyId: number; provider: string; model: string; promptTokens?: number; completionTokens?: number; totalTokens?: number; latencyMs?: number; success: boolean; errorMessage?: string; } export declare class ApiKeyManager { private db; private encryptionKey; constructor(db: D1Database, encryptionKey: string); generateApiKey(): string; isValidApiKeyFormat(apiKey: string): boolean; createApiKey(request: CreateApiKeyRequest): Promise; getApiKey(apiKey: string): Promise; getApiKeyById(id: number): Promise; getApiKeysByUser(userId: string): Promise; updateLastUsed(apiKey: string): Promise; revokeApiKey(apiKey: string, userId: string): Promise; deleteApiKey(apiKey: string, userId: string): Promise; addProviderKey(apiKeyId: number, provider: string, providerApiKey: string): Promise; getProviderKeys(apiKey: string): Promise>; removeProviderKey(apiKey: string, provider: string, userId: string): Promise; logUsage(log: UsageLog): Promise; getUsageStats(apiKey: string, startTime?: number, endTime?: number): Promise; private encryptKey; private decryptKey; private mapApiKeyResult; }