import type { NextFunction, Response } from 'express'; import type { RateLimiterAbstract } from 'rate-limiter-flexible'; import { RateLimiterRedis } from 'rate-limiter-flexible'; import type rateLimiterConfig from '../../../config/rateLimiter.js'; import type { IApp } from '../../../server.ts'; import type { FrameworkRequest } from '../HttpServer.ts'; import AbstractMiddleware from './AbstractMiddleware.ts'; import type { GetUserByTokenAppInfo } from './GetUserByToken.ts'; declare class RateLimiter extends AbstractMiddleware { static get description(): string; finalOptions: typeof rateLimiterConfig; limiter: RateLimiterAbstract; constructor(app: IApp, params?: Record); initRedisLimiter(): RateLimiterRedis; gerenateConsumeKey(req: FrameworkRequest & GetUserByTokenAppInfo): string; consumeResult(consumeKey: string, consumePoints?: number): Promise<{ msBeforeNext: number; remainingPoints: number; consumedPoints: number; isFirstInDuration: boolean; isAllowed: boolean; retryAfter: number; }>; middleware(req: FrameworkRequest, res: Response, next: NextFunction): Promise>>; } export default RateLimiter;