/// <reference types="koa" />
import { RateLimitOptions } from "./Options";
import { Time } from "./Time";
export declare const DEFAULT_OPTIONS: RateLimitOptions;
export declare class RateLimit {
    private options;
    private store;
    constructor(options: RateLimitOptions);
    static timeToMs(time: Time | number): number;
    keyGenerator(ctx: import("koa").Context): Promise<string>;
    weight(ctx: import("koa").Context): Promise<number>;
    skip(ctx: import("koa").Context): Promise<boolean>;
    getUserId(ctx: import("koa").Context): Promise<any>;
    handler(ctx: import("koa").Context, next?: import("koa").Next): Promise<void>;
    onLimitReached(ctx: import("koa").Context): Promise<void>;
    get middleware(): (ctx: import("koa").Context, next: import("koa").Next) => Promise<any>;
    private _rateLimit;
    private _isWhitelisted;
    getUserIdFromKey(key: string): string;
    wait(ms: number): Promise<void>;
}
export declare function middleware(options?: RateLimitOptions): import("koa").Middleware;
export declare function defaultOptions(options?: RateLimitOptions): void;
declare const _default: {
    RateLimit: typeof RateLimit;
    middleware: typeof middleware;
    defaultOptions: typeof defaultOptions;
};
export default _default;
//# sourceMappingURL=RateLimit.d.ts.map