/** * Usage Metering Engine * Real-time usage tracking and aggregation */ import { EventEmitter } from 'events'; import { UsageRecord, UsageMetric, UsageSummary, UsageLimits, QuotaCheckResult, StorageAdapter } from '../types.js'; export interface MeteringConfig { enabled: boolean; bufferSize: number; flushInterval: number; softLimitPercent: number; hardLimitPercent: number; } export declare class MeteringEngine extends EventEmitter { private config; private storage; private buffer; private flushTimer?; private usageCache; constructor(storage: StorageAdapter, config?: Partial); /** * Record a usage event */ recordUsage(record: Omit): Promise; /** * Check if usage is within quota */ checkQuota(subscriptionId: string, metric: UsageMetric, limits: UsageLimits): Promise; /** * Get usage summary for a subscription */ getUsageSummary(subscriptionId: string, limits: UsageLimits): Promise; /** * Get current usage for a metric */ private getCurrentUsage; /** * Flush buffered records to storage */ private flush; /** * Start automatic flush timer */ private startFlushTimer; /** * Stop the metering engine */ stop(): Promise; /** * Clear cache for a subscription */ clearCache(subscriptionId?: string): void; private getLimitForMetric; private calculateOverageCost; private getCurrentBillingPeriod; private generateId; } //# sourceMappingURL=engine.d.ts.map