import { LimiterInfo } from 'ratelimiter';
import { RateLimiterParams } from './params';
import { RequireField } from './utils/require-field';
export declare const RATE_LIMITER_ASSERTER_TOKEN: unique symbol;
export interface RateLimiterAsserter {
    /**
     * Asserts that the request is not rate limited. If the request is rate
     * limited, throws an exception. Otherwise, returns the limiter info.
     * @param params The parameters for the rate limiter.
     * @returns The limiter info.
     * @throws `RateLimiterError` If the request is rate limited.
     */
    assert(params: RequireField<RateLimiterParams, 'id'>): Promise<LimiterInfo>;
}
export declare class RateLimiterError extends Error {
    readonly limiterInfo: LimiterInfo;
    constructor(message: unknown, limiterInfo: LimiterInfo);
}
