import { ILoggerLike } from "@avanio/logger-like"; //#region src/index.d.ts interface IProps { delay?: number; logger?: ILoggerLike; fetchClient?: typeof fetch; } interface IProgressPayload { readonly url: string; start: Date | undefined; received: number | undefined; size: number | undefined; done: boolean; } type ProcessCallback = (progress: IProgressPayload) => void; /** * Process all stream results */ declare function processAllResult(reader: ReadableStreamDefaultReader, payload: IProgressPayload, progressCallbacks: Iterable, logger: ILoggerLike | undefined): Promise; /** * Watch Response loading progress * @example * const res = await fetch('https://www.google.com'); * watchResponseProgress(res, (progress) => console.log(progress)); * const data = await res.json(); * @param {Response} res current fetch response * @param {ProcessCallback} progressCallbacks to notify about progress * @param {ILoggerLike} logger any logger like object * @returns {Promise} true if did read the stream */ declare function watchResponseProgress(res: Response, progressCallback: ProcessCallback | Iterable, logger?: ILoggerLike): boolean; declare class HttpClient { private readonly logger; static getInstance(props?: IProps): HttpClient; static resetInstance(): void; private static instance; private readonly delay; private readonly isLoadingCallbacks; private readonly isProgressCallbacks; private readonly loadingResponses; private wasLoading; private constructor(); /** * @deprecated use addLoadingEventListener instead */ onLoading(callback: (isLoading: boolean) => void): void; addLoadingEventListener(callback: (isLoading: boolean) => void): void; removeLoadingEventListener(callback: (isLoading: boolean) => void): void; /** * @deprecated use addProgressEventListener instead */ onProgress(callback: (progress: IProgressPayload) => void): void; addProgressEventListener(callback: (progress: IProgressPayload) => void): void; removeProgressEventListener(callback: (progress: IProgressPayload) => void): void; count(): number; fetch(...[input, options]: Parameters): Promise; private closeResponse; private removeResponse; private handleLoadingStateUpdate; } //#endregion export { HttpClient, IProgressPayload, ProcessCallback, processAllResult, watchResponseProgress };