/**
 * @module CircuitBreaker
 */
import { type ICircuitBreakerStorageAdapter, type CircuitBreakerStateTransition } from "../../../../circuit-breaker/contracts/_module.js";
import { type AllCircuitBreakerState, type InternalCircuitBreakerPolicy } from "../../../../circuit-breaker/implementations/adapters/database-circuit-breaker-adapter/internal-circuit-breaker-policy.js";
import { type DatabaseCircuitBreakerUpdateStateFn } from "../../../../circuit-breaker/implementations/adapters/database-circuit-breaker-adapter/types.js";
import { type IReadableContext } from "../../../../execution-context/contracts/_module.js";
/**
 * @internal
 */
export declare class CircuitBreakerStorage<TMetrics = unknown> {
    private readonly adapter;
    private readonly circuitBreakerPolicy;
    constructor(adapter: ICircuitBreakerStorageAdapter<AllCircuitBreakerState<TMetrics>>, circuitBreakerPolicy: InternalCircuitBreakerPolicy<TMetrics>);
    atomicUpdate(context: IReadableContext, key: string, update: DatabaseCircuitBreakerUpdateStateFn<TMetrics>): Promise<CircuitBreakerStateTransition>;
    find(context: IReadableContext, key: string): Promise<AllCircuitBreakerState<TMetrics>>;
    remove(context: IReadableContext, key: string): Promise<void>;
}
