///
import type { CancelableAbortSignal } from './CancelableAbortController';
import type { CancelablePromise } from './CancelablePromise';
export type PromiseStatus = 'canceled' | 'pending' | 'resolved' | 'rejected';
export type ResolveCallback = (value?: TResult | PromiseLike) => void;
export type RejectCallback = (reason?: unknown) => void;
export type CancelCallback = (reason?: unknown) => void;
/** Parameters for event subscriptions with optional AbortSignal. */
export type SubscriptionParams = {
signal?: CancelableAbortSignal | AbortSignal;
};
export type Subscription = () => void;
export type CancelablePromiseUtils = {
/** Cancel the promise with an optional reason */
cancel: (reason?: unknown) => CancelablePromise;
/** Subscribe to cancellation events */
onCancel: (callback: CancelCallback) => Subscription;
onProgress: (callback: OnProgressCallback) => Subscription;
reportProgress: (percentage: number, metadata?: unknown) => void;
status: () => PromiseStatus;
isCanceled: () => boolean;
isPending: () => boolean;
};
export type CancelablePromiseCallback = (resolve: ResolveCallback, reject: RejectCallback, utils: CancelablePromiseUtils) => void;
export type OnProgressCallback = (progress: number, metadata?: unknown) => void;