type ResponseCallback = (response?: Response) => Promise; export interface AsyncCallerParams { /** * The maximum number of concurrent calls that can be made. * Defaults to `Infinity`, which means no limit. */ maxConcurrency?: number; /** * The maximum number of retries that can be made for a single call, * with an exponential backoff between each attempt. Defaults to 6. */ maxRetries?: number; onFailedResponseHook?: ResponseCallback; } export interface AsyncCallerCallOptions { signal?: AbortSignal; } /** * A class that can be used to make async calls with concurrency and retry logic. * * This is useful for making calls to any kind of "expensive" external resource, * be it because it's rate-limited, subject to network issues, etc. * * Concurrent calls are limited by the `maxConcurrency` parameter, which defaults * to `Infinity`. This means that by default, all calls will be made in parallel. * * Retries are limited by the `maxRetries` parameter, which defaults to 6. This * means that by default, each call will be retried up to 6 times, with an * exponential backoff between each attempt. */ export declare class AsyncCaller { protected maxConcurrency: AsyncCallerParams["maxConcurrency"]; protected maxRetries: AsyncCallerParams["maxRetries"]; private queue; private onFailedResponseHook?; constructor(params: AsyncCallerParams); call Promise>(callable: T, ...args: Parameters): Promise>>; callWithOptions Promise>(options: AsyncCallerCallOptions, callable: T, ...args: Parameters): Promise>>; fetch(...args: Parameters): ReturnType; } export {};