import { TypesenseRateLimitInfo } from '../typesense.model';
export interface ResiliencePolicyOptions {
    maxFailures?: number;
    resetTimeout?: number;
    retryDelay?: number;
    maxRetries?: number;
    onStateChange?: (state: 'open' | 'closed' | 'half-open', metadata?: any) => void;
    onRetry?: (attempt: number, error: any) => void;
    onRateLimitUpdate?: (info: TypesenseRateLimitInfo) => void;
    enabled?: boolean;
}
export declare class ResiliencePolicy {
    private options;
    private failures;
    private circuitOpenUntil;
    private rateLimitInfo;
    private retryAfterUntil;
    constructor(options?: ResiliencePolicyOptions);
    isCircuitOpen(): boolean;
    shouldRetry(retryCount: number, error: any): boolean;
    getRetryDelay(retryCount: number): number;
    recordSuccess(): void;
    recordFailure(): void;
    updateRateLimit(headers: Headers): void;
    getRateLimit(): TypesenseRateLimitInfo | null;
    getTimeUntilReset(): number | undefined;
    isRateLimited(): boolean;
    reset(): void;
    getStatus(): {
        failures: number;
        circuitOpen: boolean;
        circuitOpenUntil: number;
        rateLimited: boolean;
        retryAfterUntil: number;
        rateLimit: TypesenseRateLimitInfo | null;
    };
}
