import { Context, MiddlewareHandler } from 'hono'; interface KV { setItem(key: string, value: string, expiresIn?: number): Promise; getItem(key: string): Promise; removeItem(key: string): Promise; } interface RateLimitOptions { kv: KV; rate: number; capacity: number; requested?: number; keyPrefix?: string; expiresIn?: number; getIdentifier?: (c: Context) => string | undefined; onRateLimited?: (c: Context, retryAfter: number) => Response | Promise; skip?: (c: Context) => boolean | Promise; } interface RateLimitResult { allowed: boolean; remaining: number; limit: number; reset: number; retryAfter?: number; } declare function checkRateLimit(kv: KV, identifier: string, options: { rate: number; capacity: number; requested?: number; keyPrefix?: string; expiresIn?: number; }): Promise; declare function rateLimit(options: RateLimitOptions): MiddlewareHandler; export { type KV, type RateLimitOptions, type RateLimitResult, checkRateLimit, rateLimit };