/** * @module RateLimiter */ import { type IReadableContext } from "../../../../execution-context/contracts/_module.js"; import { type IRateLimiter, type IRateLimiterAdapter, type RateLimiterState } from "../../../../rate-limiter/contracts/_module.js"; import { type AsyncLazy, type ErrorPolicy, type WaitUntil } from "../../../../utilities/_module.js"; /** * @internal */ export type RateLimiterSettings = { limit: number; enableAsyncTracking: boolean; adapter: IRateLimiterAdapter; key: string; errorPolicy: ErrorPolicy; onlyError: boolean; serdeTransformerName: string; waitUntil: WaitUntil; context: IReadableContext; }; /** * @internal */ export type ISerializedRateLimiter = { version: "1"; key: string; limit: number; }; /** * @internal */ export declare class RateLimiter implements IRateLimiter { /** * @internal */ static _serialize(deserializedValue: RateLimiter): ISerializedRateLimiter; private readonly waitUntil; private readonly _key; private readonly _limit; private readonly errorPolicy; private readonly onlyError; private readonly adapter; private readonly enableAsyncTracking; private readonly serdeTransformerName; private readonly context; constructor(settings: RateLimiterSettings); _getSerdeTransformerName(): string; _getAdapter(): IRateLimiterAdapter; private toRateLimiterState; getState(): Promise; get key(): string; get limit(): number; private trackErrorWrapper; private trackWrapper; runOrFail(asyncFn: AsyncLazy): Promise; reset(): Promise; }