export type Method = | 'GET' | 'DELETE' | 'HEAD' | 'OPTIONS' | 'POST' | 'PUT' | 'PATCH' | 'JSONP'; export type ResponseType = | 'arraybuffer' | 'blob' | 'document' | 'json' | 'text' | 'stream'; export type Mode = 'same-origin' | 'no-cors' | 'cors'; export type Credentials = 'include' | 'same-origin' | 'omit'; export type Redirect = 'follow' | 'error' | 'manual'; export interface FetchsConfig { url?: string; method?: Method; baseURL?: string; dataType?: ResponseType; origin?: string; mode?: Mode; credentials?: Credentials; redirect?: Redirect; headers?: object; timeout?: number; cache?: boolean; data?: any; } export interface FetchsResponse extends Response { data: T; config: FetchsConfig; } export interface FetchsInterceptor { use( onFulfilled?: (value: V) => V | Promise, onRejected?: (error: any) => any ): number; eject(id: number): void; } export interface FetchsPromise extends Promise> { } export interface FetchsInstance { (config: FetchsConfig): FetchsPromise; defaults: FetchsConfig; interceptors: { request: FetchsInterceptor; response: FetchsInterceptor; }; request(config: FetchsConfig): Promise; get(url: string, config?: FetchsConfig): Promise; post( url: string, data?: object, config?: FetchsConfig ): Promise; jsonp(url: string, config?: FetchsConfig): Promise; } export interface FetchsStatic extends FetchsInstance { create(config?: FetchsConfig): FetchsInstance; all(values: (T | Promise)[]): Promise; race(values: (T | Promise)[]): Promise; } declare const Fetchs: FetchsStatic; export default Fetchs;