@felixgeelhaar/govee-api-client
Version:
Enterprise-grade TypeScript client library for the Govee Developer REST API
114 lines • 3.42 kB
TypeScript
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