export type RateLimitWindow = `${number}${'ms' | 's' | 'm' | 'h' | 'd'}`; export interface IRateLimitDefinition { tag: string; key: string[]; limit: number; window: RateLimitWindow; strategy?: 'fixed' | 'sliding'; envs?: Record>>; } export interface IRateLimitConsumeInput { tag: string; env: string; values: Record; cost?: number; } export interface IRateLimitResult { allowed: boolean; remaining: number; resetAt: string; retryAfter: number; limit: number; } export declare class RateLimitError extends Error { code: string; retryable: boolean; constructor(message: string, code: string, retryable?: boolean); } export declare class RateLimitService { private redis; private definitions; constructor(redis: any); setRedis(redis: any): void; define(d: IRateLimitDefinition): IRateLimitDefinition; run(input: IRateLimitConsumeInput): Promise; private sliding; private result; }