import { ExpressCallback } from "./express-callback.interface";
import { Handler } from "./handler.interface";
import { RateLimiter } from "./rate-limiter.interface";
/**
 * Options for the rate limiter configuration.
 *
 * @property ms - The time window in milliseconds for rate limiting.
 * @property maxRequest - The maximum number of allowed requests.
 * @property storage?(optional) - The storage property allows you to use a specific storage manager. [REDIS,MONGO, DEFAULT=INMEMORY]
 */
export interface RateLimiterOptions {
    ms: number;
    maxRequest: number | ExpressCallback<number> | Promise<ExpressCallback<number>>;
    storage?: RateLimiter;
    message?: any;
    statusCode?: number;
    handler?: Handler;
    keyGenerator?: ExpressCallback<string> | Promise<ExpressCallback<string>>;
    skip?: ExpressCallback<boolean> | Promise<ExpressCallback<boolean>>;
    requestPropertyName?: string;
    errorHandler?: ExpressCallback<void> | Promise<ExpressCallback<void>>;
    passOnStoreError?: boolean;
}
