import { Request, Response, NextFunction } from "express"; type BaseConfig = { intervalInSec: number; customMessage?: string; customHeaders?: Record; }; type TokenBucketAlgoConfig = BaseConfig & { algorithm: "token_bucket"; capacity: number; }; type SlidingWindowAlgoConfig = BaseConfig & { algorithm?: "sliding_window_counter"; allowedNoOfRequests: number; }; type IpBlockConfig = BaseConfig & { blocks?: "ip_addr"; tokenProvider?: never; }; type AuthBlockConfig = BaseConfig & { blocks: "auth_token"; tokenProvider: (req: Request, res: Response) => string; }; export type LimitNginConfig = BaseConfig & (TokenBucketAlgoConfig | SlidingWindowAlgoConfig) & (IpBlockConfig | AuthBlockConfig); export declare class LimitNgin { #private; config: LimitNginConfig; constructor(config?: LimitNginConfig); listen(req: Request, res: Response, next: NextFunction): Response> | undefined; } export {}; //# sourceMappingURL=limitNgin.d.ts.map