/**
 * Retry configuration options
 */
export interface RetryOptions {
    /** Maximum number of retries (default: 3) */
    maxRetries?: number;
    /** Base delay time in milliseconds (default: 1000) */
    baseDelay?: number;
    /** Exponential backoff multiplier (default: 2) */
    backoffMultiplier?: number;
    /** Maximum delay time in milliseconds (default: 30000) */
    maxDelay?: number;
    /** Maximum jitter (random element) in milliseconds (default: 1000) */
    jitter?: number;
    /** Error types to retry */
    retryableErrors?: Array<new (...args: any[]) => Error>;
}
/**
 * Function that executes retry with exponential backoff
 */
export declare function withRetry<T>(operation: () => Promise<T>, options?: RetryOptions): Promise<T>;
/**
 * Circuit breaker state
 */
export declare enum CircuitBreakerState {
    CLOSED = "CLOSED",
    OPEN = "OPEN",
    HALF_OPEN = "HALF_OPEN"
}
/**
 * Circuit breaker configuration
 */
export interface CircuitBreakerOptions {
    /** Failure threshold (circuit opens after this many failures) */
    failureThreshold?: number;
    /** Reset timeout in milliseconds */
    resetTimeout?: number;
    /** Monitoring period in milliseconds */
    monitoringPeriod?: number;
}
/**
 * Basic circuit breaker implementation
 * Protects the system from cascading failures
 */
export declare class CircuitBreaker {
    private state;
    private failureCount;
    private lastFailureTime;
    private readonly options;
    constructor(options?: CircuitBreakerOptions);
    execute<T>(operation: () => Promise<T>): Promise<T>;
    private shouldAttemptReset;
    private onSuccess;
    private onFailure;
    getState(): CircuitBreakerState;
    getFailureCount(): number;
    reset(): void;
}
//# sourceMappingURL=retry.d.ts.map