import { type Middleware } from './compose';
export interface RateLimitOptions {
    /**
     * Maximum number of requests allowed in the time window
     * @default 120
     */
    maxRequests: number;
    /**
     * Time window in milliseconds
     * @default 60000 (1 minute)
     */
    windowMs: number;
    /**
     * Advanced rate limiting options
     */
    advanced?: {
        /**
         * Whether to apply rate limiting to retry attempts
         * When false, retry attempts will skip rate limiting to avoid double counting
         * @default true
         */
        applyToRetries?: boolean;
    };
}
/**
 * Creates middleware that implements client-side rate limiting
 *
 * This middleware prevents your application from exceeding API rate limits
 * by queueing requests that would exceed the limit, then processing them
 * when the rate limit window resets.
 *
 * @param options Rate limit configuration options
 * @returns Middleware function
 */
export declare function withRateLimit(options?: Partial<RateLimitOptions>): Middleware;
