import { Subscribe } from "./subscribe"; type NetWorkMeta = { origin: string; source: string; headers: { [name: string]: string; }; requestTime: number; responseTime: number; costs: number; size?: number; }; type NetworkResponse = { body: T; meta: E; }; type NetworkType = "XMLHttpRequest" | "Image" | "Link"; type NetworkState = "ok" | "preload" | "error" | "timeout" | "forbidden"; declare class NetworkProxyError extends Error { constructor(source: string, type: NetworkType, reason: string); } declare class NetworkResponseError extends Error { httpStatus: number; constructor(source: string, type: NetworkType, status: number); } declare class NetworkAbortError extends Error { constructor(source: string, type: NetworkType); } declare class NetworkTimeoutError extends Error { constructor(source: string, type: NetworkType, timeout: number); } declare class NetworkFirbiddenError extends Error { constructor(source: string, type: NetworkType, reason: string); } type NetworkError = NetworkResponseError | NetworkAbortError | NetworkTimeoutError | NetworkFirbiddenError; type NetworkCallback = (error: NetworkError | null, response: NetworkResponse | null) => void; type NetworkSuccessCallback = (response: NetworkResponse) => void; type NetworkErrorCallback = (error: NetworkError) => void; type NetworkProgressCallback = (percent: number, loaded?: number, total?: number) => void; declare class NetworkSubscribe extends Subscribe<{ network(source: string, type: NetworkType, state: NetworkState, detail: string): void; }> { } interface NetworkOptions { /** 超时时间 */ timeout?: number; /** 请求代理 */ requestProxy?: (url: string) => string | Promise; /** 网络消息追踪 */ networkSubscribe?: NetworkSubscribe; } type AjaxResponseType = "arraybuffer" | "blob" | "text"; type AjaxResponseTypeMapping = K extends "arraybuffer" ? ArrayBuffer : K extends "blob" ? Blob : K extends "text" ? string : never; interface AjaxOptions extends NetworkOptions { /** 数据返回类型 */ responseType?: T; } declare class Fetcher { private options; constructor(options?: NetworkOptions); ajax(source: string, options?: AjaxOptions, onLoad?: NetworkSuccessCallback>, onError?: NetworkErrorCallback, onProgress?: NetworkProgressCallback): Promise>>; loadImage(source: string, options?: NetworkOptions, onLoad?: NetworkSuccessCallback, onError?: NetworkErrorCallback, onProgress?: NetworkProgressCallback, target?: T): Promise>; preload(source: string, options?: NetworkOptions): Promise; } declare const internalFetcher: Fetcher; export { internalFetcher, Fetcher, AjaxResponseType, AjaxResponseTypeMapping, NetworkSubscribe, NetworkState, NetworkType, NetworkOptions, AjaxOptions, NetworkResponseError, NetworkTimeoutError, NetworkAbortError, NetworkFirbiddenError, NetworkError, NetworkProxyError, NetworkCallback, NetworkSuccessCallback, NetworkErrorCallback, NetworkProgressCallback, NetworkResponse, NetWorkMeta, };