import { MiddlewareHandler } from "hono"; import { HonoEnv } from "../api/types"; interface RateLimiterOptions { /** Time window in milliseconds (default: 15 minutes) */ windowMs?: number; /** Maximum requests per window (default: 100) */ limit?: number; /** Key generator function. Defaults to IP-based keying. */ keyGenerator?: (c: Parameters>[0]) => string; /** Custom message for rate limit responses */ message?: string; } /** * Create a rate-limiting middleware. * * Uses a sliding window algorithm: only timestamps within the last * `windowMs` milliseconds are counted. Old entries are garbage-collected * every `windowMs` to prevent unbounded memory growth. */ export declare function createRateLimiter(options?: RateLimiterOptions): MiddlewareHandler; /** * Pre-configured rate limiter for general auth endpoints (login, register). * 200 requests per 15 minutes per IP. */ export declare const defaultAuthLimiter: MiddlewareHandler; /** * Pre-configured strict rate limiter for sensitive endpoints (password reset, verification). * 50 requests per 15 minutes per IP. */ export declare const strictAuthLimiter: MiddlewareHandler; /** * Key generator for API-key-based rate limiting. * * Uses the API key ID (from `c.get("apiKey")`) as the rate limit key. * Falls back to IP-based keying when the request is not authenticated * via an API key. */ export declare function apiKeyKeyGenerator(c: Parameters>[0]): string; /** * Create a rate limiter specifically for API key requests. * * When a request is authenticated via an API key that has a `rate_limit` * configured, this limiter enforces per-key limits using the key's ID * as the rate limit bucket. * * @param defaultLimit - Fallback limit when the key has no `rate_limit` set. * @param windowMs - Time window in milliseconds (default: 15 minutes). */ export declare function createApiKeyRateLimiter(defaultLimit?: number, windowMs?: number): MiddlewareHandler; export {};