/**
 * @module CircuitBreaker
 */
import { type CircuitBreakerEventMap, type CircuitBreakerTrigger, type ICircuitBreakerAdapter } from "../../../../circuit-breaker/contracts/_module.js";
import { CircuitBreaker, type ISerializedCircuitBreaker } from "../../../../circuit-breaker/implementations/derivables/circuit-breaker-provider/circuit-breaker.js";
import { type IEventBus } from "../../../../event-bus/contracts/_module.js";
import { type Namespace } from "../../../../namespace/_module.js";
import { type ISerdeTransformer } from "../../../../serde/contracts/_module.js";
import { type TimeSpan } from "../../../../time-span/implementations/_module.js";
import { type ErrorPolicy, type OneOrMore } from "../../../../utilities/_module.js";
/**
 * @internal
 */
export type CircuitBreakerSerdeTransformerSettings = {
    adapter: ICircuitBreakerAdapter;
    namespace: Namespace;
    slowCallTime: TimeSpan;
    errorPolicy: ErrorPolicy;
    trigger: CircuitBreakerTrigger;
    eventBus: IEventBus<CircuitBreakerEventMap>;
    serdeTransformerName: string;
    enableAsyncTracking: boolean;
};
/**
 * @internal
 */
export declare class CircuitBreakerSerdeTransformer implements ISerdeTransformer<CircuitBreaker, ISerializedCircuitBreaker> {
    private readonly adapter;
    private readonly namespace;
    private readonly slowCallTime;
    private readonly errorPolicy;
    private readonly trigger;
    private readonly eventBus;
    private readonly serdeTransformerName;
    private readonly enableAsyncTracking;
    constructor(settings: CircuitBreakerSerdeTransformerSettings);
    get name(): OneOrMore<string>;
    isApplicable(value: unknown): value is CircuitBreaker;
    deserialize(serializedValue: ISerializedCircuitBreaker): CircuitBreaker;
    serialize(deserializedValue: CircuitBreaker): ISerializedCircuitBreaker;
}
