/**
 * @module RateLimiter
 */
import { type IEventBus } from "../../../../event-bus/contracts/_module.js";
import { type IExecutionContext } from "../../../../execution-context/contracts/_module.js";
import { type INamespace } from "../../../../namespace/contracts/_module.js";
import { type IRateLimiterAdapter, type RateLimiterEventMap } from "../../../../rate-limiter/contracts/_module.js";
import { RateLimiter, type ISerializedRateLimiter } from "../../../../rate-limiter/implementations/derivables/rate-limiter-factory/rate-limiter.js";
import { type ISerdeTransformer } from "../../../../serde/contracts/_module.js";
import { type ErrorPolicy, type OneOrMore, type WaitUntil } from "../../../../utilities/_module.js";
/**
 * @internal
 */
export type RateLimiterSerdeTransformerSettings = {
    adapter: IRateLimiterAdapter;
    namespace: INamespace;
    errorPolicy: ErrorPolicy;
    onlyError: boolean;
    eventBus: IEventBus<RateLimiterEventMap>;
    serdeTransformerName: string;
    enableAsyncTracking: boolean;
    waitUntil: WaitUntil;
    executionContext: IExecutionContext;
};
/**
 * @internal
 */
export declare class RateLimiterSerdeTransformer implements ISerdeTransformer<RateLimiter, ISerializedRateLimiter> {
    private readonly adapter;
    private readonly namespace;
    private readonly errorPolicy;
    private readonly eventBus;
    private readonly serdeTransformerName;
    private readonly enableAsyncTracking;
    private readonly onlyError;
    private readonly waitUntil;
    private readonly executionContext;
    constructor(settings: RateLimiterSerdeTransformerSettings);
    get name(): OneOrMore<string>;
    isApplicable(value: unknown): value is RateLimiter;
    deserialize(serializedValue: ISerializedRateLimiter): RateLimiter;
    serialize(deserializedValue: RateLimiter): ISerializedRateLimiter;
}
