import { Logger } from 'pino-nestjs';
export declare enum CircuitState {
    CLOSED = "CLOSED",
    OPEN = "OPEN",
    HALF_OPEN = "HALF_OPEN"
}
export declare class CircuitBreakerOpenError extends Error {
    constructor(name: string);
}
export interface CircuitBreakerOptions {
    failureThreshold?: number;
    resetTimeoutMs?: number;
}
export interface RetryOptions {
    maxAttempts?: number;
    baseDelayMs?: number;
    maxDelayMs?: number;
}
export declare class CircuitBreaker {
    private readonly name;
    private readonly logger;
    private readonly context;
    private state;
    private failureCount;
    private nextAttempt;
    private readonly failureThreshold;
    private readonly resetTimeoutMs;
    constructor(name: string, logger: Logger, options?: CircuitBreakerOptions);
    getState(): CircuitState;
    executeWithRetry<T>(fn: () => Promise<T>, options?: RetryOptions): Promise<T>;
    execute<T>(fn: () => Promise<T>): Promise<T>;
    private onSuccess;
    private onFailure;
}
