import { Observable } from 'rxjs'; import * as i0 from "@angular/core"; /** * Rate limiter configuration */ export interface RateLimiterConfig { /** Requests per second */ rps: number; /** Burst capacity */ burst?: number; /** Backoff strategy */ backoffStrategy?: 'linear' | 'exponential' | 'fixed'; /** Initial backoff delay in milliseconds */ initialDelay?: number; /** Maximum backoff delay in milliseconds */ maxDelay?: number; /** Backoff multiplier for exponential strategy */ backoffMultiplier?: number; } /** * Rate limiting service */ export declare class OpenCageRateLimiterService { private tokenBucket; private config; private requestQueue; private isProcessingQueue; constructor(); /** * Configure rate limiter */ configure(config: Partial): void; /** * Execute request with rate limiting */ execute(requestFn: () => Observable): Observable; /** * Get rate limiter statistics */ getStats(): { availableTokens: number; queueLength: number; timeUntilToken: number; requestsPerSecond: number; }; /** * Reset rate limiter */ reset(): void; /** * Handle rate limit error with backoff */ handleRateLimit(requestFn: () => Observable, attempt?: number): Observable; /** * Queue request for later execution */ private queueRequest; /** * Process queued requests */ private processQueue; /** * Calculate backoff delay based on strategy */ private calculateBackoffDelay; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; } /** * Rate limiter decorator for methods */ export declare function RateLimit(rps?: number): (target: any, propertyName: string, descriptor: PropertyDescriptor) => void; /** * Rate limiter operator for observables */ export declare function rateLimit(rps?: number): (source: Observable) => Observable;