/** * Zoe Middleware — Rate Limiting * * Token bucket rate limiter per key. Throws on limit exceeded. */ import type { PipelineContext, Middleware } from "../middleware.js"; export interface RateLimitOptions { /** Maximum requests allowed per window */ maxRequests: number; /** Window duration in milliseconds */ windowMs: number; /** Extract a key from context for per-key limiting (default: "global") */ keyExtractor?: (ctx: PipelineContext) => string; } /** * Create a rate limiting middleware using a token bucket algorithm. * * @example * ```ts * const mw = rateLimitMiddleware({ * maxRequests: 60, * windowMs: 60_000, * keyExtractor: (ctx) => ctx.metadata.userId as string, * }); * ``` */ export declare function rateLimitMiddleware(options: RateLimitOptions): Middleware;