interface ThreadOptions { network?: boolean; storage?: boolean; database?: boolean; helpers?: boolean; jsonApi?: boolean; transform?: boolean; } export type Method = 'get' | 'post' | 'put' | 'delete' | 'patch'; export interface Options { name: string; threadOptions: ThreadOptions; } export interface RequestAuthInfo { username: string; password: string; } export interface ProxyInterface { protocol?: 'https' | 'http'; host?: string; port?: number; auth?: RequestAuthInfo; } export interface Error { error?: string; message?: number; } export type QueryParameters = Record; export type HeadersType = Record; export interface Request { url: string; method?: Method; baseURL?: string; transformRequest?: (data: RequestData, headers: HeadersType) => string; transformResponse?: (data: RequestData) => TransformedRequestData; headers?: HeadersType; params?: QueryParameters; data?: TransformedRequestData; timeout?: number; withCredentials?: boolean; adapter?: (config: object) => void; auth?: RequestAuthInfo; responseType?: 'json' | 'arraybuffer' | 'document' | 'text' | 'stream'; responseEncoding?: 'utf8'; xsrfCookieName?: 'XSRF-TOKEN'; xsrfHeaderName?: 'X-XSRF-TOKEN'; onUploadProgress?: (progressEvent: ProgressEvent) => void; onDownloadProgress?: (progressEvent: ProgressEvent) => void; maxContentLength?: number; maxBodyLength?: number; validateStatus?: (status: unknown) => boolean; maxRedirects?: number; proxy?: ProxyInterface; cancelToken?: (cancel: boolean) => void; } export type EndpointResult = (options: Request) => Promise; export interface Thread { get: EndpointResult; post: EndpointResult; put: EndpointResult; delete: EndpointResult; patch: EndpointResult; raw: EndpointResult; } export type EndpointInterface = (opt: Request) => Promise; export {};