UNPKG

@felixgeelhaar/govee-api-client

Version:

Enterprise-grade TypeScript client library for the Govee Developer REST API

114 lines 3.42 kB
import { Logger } from 'pino'; import { RetryPolicyConfig, BackoffStrategy, JitterConfig, RetryCondition, CircuitBreakerConfig } from './RetryPolicy'; /** * Environment-specific retry configuration presets */ export declare class RetryConfigPresets { /** * Development environment configuration - aggressive retries for testing */ static development(logger?: Logger): RetryPolicyConfig; /** * Testing environment configuration - predictable behavior */ static testing(logger?: Logger): RetryPolicyConfig; /** * Production environment configuration - conservative and reliable */ static production(logger?: Logger): RetryPolicyConfig; /** * High-frequency operations configuration - optimized for frequent API calls */ static highFrequency(logger?: Logger): RetryPolicyConfig; /** * Rate-limit aware configuration - optimized for APIs with strict rate limits */ static rateLimitAware(logger?: Logger): RetryPolicyConfig; /** * Network-resilient configuration - optimized for unreliable networks */ static networkResilient(logger?: Logger): RetryPolicyConfig; /** * Custom configuration builder for specific use cases */ static custom(): RetryConfigBuilder; } /** * Fluent builder for creating custom retry configurations */ export declare class RetryConfigBuilder { private config; /** * Set backoff strategy */ withBackoff(strategy: BackoffStrategy): this; /** * Set exponential backoff with defaults */ withExponentialBackoff(initialDelayMs?: number, maxDelayMs?: number, multiplier?: number): this; /** * Set linear backoff */ withLinearBackoff(initialDelayMs?: number, maxDelayMs?: number): this; /** * Set fixed backoff */ withFixedBackoff(delayMs?: number): this; /** * Set custom backoff function */ withCustomBackoff(initialDelayMs: number, maxDelayMs: number, customBackoff: (attempt: number, error: any) => number): this; /** * Set jitter configuration */ withJitter(jitter: JitterConfig): this; /** * Set no jitter */ withoutJitter(): this; /** * Set equal jitter */ withEqualJitter(factor?: number): this; /** * Set full jitter */ withFullJitter(factor?: number): this; /** * Set decorrelated jitter */ withDecorrelatedJitter(factor?: number): this; /** * Set retry conditions */ withConditions(conditions: RetryCondition): this; /** * Set basic retry conditions */ withBasicConditions(maxAttempts?: number, maxTotalTimeMs?: number, retryableStatusCodes?: number[]): this; /** * Set circuit breaker configuration */ withCircuitBreaker(circuitBreaker: CircuitBreakerConfig): this; /** * Enable circuit breaker with defaults */ withBasicCircuitBreaker(failureThreshold?: number, recoveryTimeoutMs?: number, halfOpenSuccessThreshold?: number): this; /** * Disable circuit breaker */ withoutCircuitBreaker(): this; /** * Set logger */ withLogger(logger: Logger): this; /** * Enable or disable metrics */ withMetrics(enabled?: boolean): this; /** * Build the final configuration */ build(): RetryPolicyConfig; } //# sourceMappingURL=RetryConfigPresets.d.ts.map