type ResponseBodyTypes = Record | Record[] | ReadableStream | Blob | string | string[] | number | void; interface FormattedResponse { body: T; headers: Record; status: number; } interface RequesterType { get(endpoint: string, options?: Record): Promise>; post(endpoint: string, options?: Record): Promise>; put(endpoint: string, options?: Record): Promise>; patch(endpoint: string, options?: Record): Promise>; delete(endpoint: string, options?: Record): Promise>; } interface Constructable { new (...args: any[]): T; } type DefaultResourceOptions = { headers: { [header: string]: string; }; requestTimeout: number; url: string; rejectUnauthorized: boolean; }; type DefaultRequestOptions = { body?: FormData | Record; searchParams?: Record; sudo?: string; method?: string; asStream?: boolean; }; type RequestOptions = { headers: Record; timeout?: number; method: string; searchParams?: string; prefixUrl: string; body?: string | FormData; asStream?: boolean; }; declare function formatQuery(params?: Record): string; type OptionsHandlerFn = (serviceOptions: DefaultResourceOptions, requestOptions: DefaultRequestOptions) => Promise; declare function defaultOptionsHandler(resourceOptions: DefaultResourceOptions, { body, searchParams, sudo, asStream, method }?: DefaultRequestOptions): Promise; type RequestHandlerFn = (endpoint: string, options?: Record) => Promise>; declare function createRequesterFn(optionsHandler: OptionsHandlerFn, requestHandler: RequestHandlerFn): (serviceOptions: DefaultResourceOptions) => RequesterType; declare function presetResourceArguments>(resources: T, customConfig?: Record): T; interface BaseResourceOptions { oauthToken?: string; token?: string; jobToken?: string; host?: string; prefixUrl?: string; rejectUnauthorized?: boolean; camelize?: C; requesterFn?: (resourceOptions: DefaultResourceOptions) => RequesterType; requestTimeout?: number; profileToken?: string; sudo?: string | number; profileMode?: 'execution' | 'memory'; } declare class BaseResource { readonly url: string; readonly requester: RequesterType; readonly requestTimeout: number; readonly headers: { [header: string]: string; }; readonly camelize: C | undefined; readonly rejectUnauthorized: boolean; constructor({ token, jobToken, oauthToken, sudo, profileToken, requesterFn, camelize, profileMode, host, prefixUrl, rejectUnauthorized, requestTimeout, }?: BaseResourceOptions); } export { BaseResource, BaseResourceOptions, Constructable, DefaultRequestOptions, DefaultResourceOptions, FormattedResponse, OptionsHandlerFn, RequestHandlerFn, RequestOptions, RequesterType, ResponseBodyTypes, createRequesterFn, defaultOptionsHandler, formatQuery, presetResourceArguments };