/** * Rate Limiter - Token Bucket Algorithm (PostHog-style) * * Prevents runaway loops from flooding the server with events. * Uses a token bucket algorithm with configurable rate and burst limits. * * Features: * - Configurable events per second (default: 10) * - Configurable burst limit (default: 100) * - Token replenishment over time * - Warning event when rate limited */ export interface RateLimitBucket { tokens: number; last: number; } export interface RateLimiterConfig { eventsPerSecond?: number; eventsBurstLimit?: number; persistence?: { get: (key: string) => RateLimitBucket | null; set: (key: string, value: RateLimitBucket) => void; }; captureWarning?: (message: string) => void; } export declare class RateLimiter { private eventsPerSecond; private eventsBurstLimit; private lastEventRateLimited; private persistence?; private captureWarning?; constructor(config?: RateLimiterConfig); /** * Check if the client should be rate limited * * @param checkOnly - If true, don't consume a token (just check) * @returns Object with isRateLimited flag and remaining tokens */ checkRateLimit(checkOnly?: boolean): { isRateLimited: boolean; remainingTokens: number; }; /** * Check if an event should be allowed (consumes a token if allowed) */ shouldAllowEvent(): boolean; /** * Get remaining tokens without consuming */ getRemainingTokens(): number; }