export type ShouldRetryResult = { shouldRetry: false; } | { shouldRetry: true; retryAfter: number; }; export type RetryableOperation = () => Promise; export default interface IRetryPolicy { shouldRetry(details: R): Promise; invokeWithRetry(operation: RetryableOperation): Promise; }