import type { AnyFunc } from "../utils/basic.js"; export interface UseRetryFnOptions { /** * Number of retries. * * @defaultValue 3 */ count?: number; /** * Retry interval. ms * * @defaultValue defaultRetryInterval */ interval?: number | ((currentCount: number) => number); /** * Error callback. * * @defaultValue undefined */ onError?: (error: E | undefined) => void; /** * Error retry callback. * * @defaultValue undefined */ onErrorRetry?: (error: E | undefined, state: UseRetryFnRetryState) => void; /** * All retries failed callback. * * @defaultValue undefined */ onRetryFailed?: (error: E | undefined, state: UseRetryFnRetryState) => void; } export interface UseRetryFnRetryState { /** * Current retry count. */ currentCount: number; /** * Number of retries. */ retryCount: number; /** * Internal unique version to track the latest retry state in multiple concurrent calls conditions. */ version: object; } export declare function defaultRetryInterval(currentCount: number): number; /** * A hook to retry the function when it fails. * * @since 1.4.0 */ export declare function useRetryFn(fn: T, options?: UseRetryFnOptions): T & { cancel: () => void; };