@zlattice/lattice-js
Version:
Lattice blockchain TypeScript SDK with dual module support (CJS + ESM)
81 lines • 2.2 kB
TypeScript
/**
* RetryStrategy
*/
interface RetryStrategy {
/**
* Calculate delay based on attempt times
* @param attempt Attempt times
* @returns Delay time
*/
getDelay(attempt: number): number;
/**
* Max timeout
*/
maxTimeout: number;
}
/**
* FixedDelayStrategy
*/
declare class FixedDelayStrategy implements RetryStrategy {
private delay;
maxTimeout: number;
constructor(delay: number, // Fixed delay time (ms)
maxTimeout?: number);
/**
* Default fixed delay strategy
*/
static default: FixedDelayStrategy;
getDelay(): number;
}
/**
* RandomDelayStrategy
*/
declare class RandomDelayStrategy implements RetryStrategy {
private minDelay;
private maxDelay;
maxTimeout: number;
constructor(minDelay: number, // Minimum delay time (ms)
maxDelay: number, // Maximum delay time (ms)
maxTimeout?: number);
/**
* Default random delay strategy
*/
static default: RandomDelayStrategy;
getDelay(): number;
}
/**
* ExponentialBackoffStrategy
*/
declare class ExponentialBackoffStrategy implements RetryStrategy {
private baseDelay;
private factor;
maxTimeout: number;
private randomize;
constructor(baseDelay: number, // Base delay time (ms)
factor: number, // Exponential factor
maxTimeout?: number, randomize?: boolean);
/**
* Default exponential backoff strategy
*/
static default: ExponentialBackoffStrategy;
getDelay(attempt: number): number;
}
/**
* RetryHandler
*/
declare class RetryHandler<T> {
private strategy;
private retries;
private onRetry?;
constructor(strategy: RetryStrategy, // Retry strategy
retries: number, // Maximum retry times
onRetry?: ((error: Error, attempt: number) => void) | undefined);
/**
* Execute the async function and retry according to the strategy
* @param fn The async function to execute
* @returns The result of the async function
*/
execute(fn: () => Promise<T>): Promise<T>;
}
export { type RetryStrategy, FixedDelayStrategy, RandomDelayStrategy, ExponentialBackoffStrategy, RetryHandler };
//# sourceMappingURL=retry_handler.d.ts.map