UNPKG

@callmedayz/ai-prompt-toolkit

Version:

Professional AI prompt engineering toolkit with advanced template features, real-time dashboards, conditional logic, template inheritance, live monitoring, OpenRouter integration, and 310+ model support

190 lines 3.98 kB
/** * Rate limiting and quota management for OpenRouter API */ /** * Rate limit configuration */ export interface RateLimitConfig { requestsPerMinute: number; requestsPerHour: number; requestsPerDay: number; tokensPerMinute?: number; tokensPerHour?: number; tokensPerDay?: number; costPerMinute?: number; costPerHour?: number; costPerDay?: number; } /** * Usage tracking data */ export interface UsageStats { requests: { minute: number; hour: number; day: number; }; tokens: { minute: number; hour: number; day: number; }; cost: { minute: number; hour: number; day: number; }; lastReset: { minute: number; hour: number; day: number; }; } /** * Rate limit status */ export interface RateLimitStatus { allowed: boolean; reason?: string; retryAfter?: number; remaining: { requests: { minute: number; hour: number; day: number; }; tokens?: { minute: number; hour: number; day: number; }; cost?: { minute: number; hour: number; day: number; }; }; } /** * Default rate limits (conservative defaults) */ export declare const DEFAULT_RATE_LIMITS: RateLimitConfig; /** * Rate limiter with multiple time windows */ export declare class RateLimiter { private config; private usage; private buckets; constructor(config: RateLimitConfig); /** * Check if a request is allowed */ checkRequest(tokens?: number, cost?: number): RateLimitStatus; /** * Record usage after a successful request */ recordUsage(tokens?: number, cost?: number): void; /** * Get current usage statistics */ getUsage(): UsageStats; /** * Get remaining limits */ private getRemainingLimits; /** * Reset counters when time windows expire */ private resetCountersIfNeeded; /** * Initialize usage tracking */ private initializeUsage; /** * Update rate limit configuration */ updateConfig(config: Partial<RateLimitConfig>): void; } /** * Quota management for cost control */ export interface QuotaConfig { dailyBudget: number; monthlyBudget: number; alertThresholds: number[]; autoStop: boolean; } /** * Quota usage tracking */ export interface QuotaUsage { daily: { spent: number; budget: number; remaining: number; percentage: number; }; monthly: { spent: number; budget: number; remaining: number; percentage: number; }; lastReset: { daily: number; monthly: number; }; } /** * Quota alert */ export interface QuotaAlert { type: 'warning' | 'critical' | 'exceeded'; period: 'daily' | 'monthly'; threshold: number; current: number; budget: number; message: string; } /** * Quota manager for cost control */ export declare class QuotaManager { private config; private usage; private alerts; constructor(config: QuotaConfig); /** * Check if a request is within quota */ checkQuota(estimatedCost: number): { allowed: boolean; alert?: QuotaAlert; }; /** * Record actual spending */ recordSpending(actualCost: number): void; /** * Get current quota usage */ getUsage(): QuotaUsage; /** * Get recent alerts */ getAlerts(): QuotaAlert[]; /** * Clear alerts */ clearAlerts(): void; /** * Update quota configuration */ updateConfig(config: Partial<QuotaConfig>): void; private initializeUsage; private updateUsageCalculations; private resetQuotasIfNeeded; private checkThresholds; } //# sourceMappingURL=rate-limiting.d.ts.map