import type { IndustryType, SDK } from '@iota-big3/sdk-core'; import type { Request, RequestHandler, Response } from 'express'; import type { FastifyInstance } from 'fastify'; export interface RateLimitConfig { windowMs?: number; max?: number; message?: string; statusCode?: number; headers?: boolean; skipSuccessfulRequests?: boolean; skipFailedRequests?: boolean; keyGenerator?: (req: Request) => string; skip?: (req: Request) => boolean; handler?: (req: Request, res: Response) => void; onLimitReached?: (req: Request, res: Response) => void; store?: RateLimitStore; } export interface RateLimitMetadata { serviceName: string; tribe?: string; industry?: IndustryType; environment?: string; sdk?: SDK; } export interface RateLimitStore { incrementAsync(key: string): Promise<{ totalHits: number; resetTime?: Date; }>; decrementAsync(key: string): Promise; resetAsync(key: string): Promise; resetAllAsync(): Promise; } export interface RateLimitMiddleware extends RequestHandler { express: RequestHandler; fastify: (fastify: FastifyInstance) => Promise; resetKey: (key: string) => Promise; resetAll: () => Promise; } export declare function createRateLimitMiddleware(metadata: RateLimitMetadata, config?: RateLimitConfig): RateLimitMiddleware; export declare function createLegacyRateLimitMiddleware(config?: RateLimitConfig): RateLimitMiddleware; export declare const rateLimitMiddleware: typeof createRateLimitMiddleware; export default createRateLimitMiddleware; //# sourceMappingURL=rate-limit-middleware.d.ts.map