import { Opts as BackoffOpts } from 'promise-backoff'; import { QueryParamsType } from './queryToString'; import BaseError from 'baseerr'; export declare type MethodType = 'ACL' | 'BIND' | 'CHECKOUT' | 'CONNECT' | 'COPY' | 'DELETE' | 'GET' | 'HEAD' | 'LINK' | 'LOCK' | 'M-SEARCH' | 'MERGE' | 'MKACTIVITY' | 'MKCALENDAR' | 'MKCOL' | 'MOVE' | 'NOTIFY' | 'OPTIONS' | 'PATCH' | 'POST' | 'PROPFIND' | 'PROPPATCH' | 'PURGE' | 'PUT' | 'REBIND' | 'REPORT' | 'SEARCH' | 'SOURCE' | 'SUBSCRIBE' | 'TRACE' | 'UNBIND' | 'UNLINK' | 'UNLOCK' | 'UNSUBSCRIBE'; export declare function setFetch(_fetch: typeof fetch): void; export declare class FetchMissingError extends BaseError<{}> { } export declare class NetworkError extends BaseError<{}> { } export declare class StatusCodeError extends BaseError<{ path: string; init?: ExtendedRequestInit | null; expectedStatus: number | RegExp | null | undefined; status: number; headers: Headers; body?: any; retryable?: boolean; }> { path: string; init?: ExtendedRequestInit | null; expectedStatus: number | RegExp | null | undefined; status: number; headers: Headers; body?: any; retryable?: boolean; } export declare class InvalidResponseError extends BaseError<{ path: string; init?: ExtendedRequestInit | null; status: number; headers: Headers; body?: any; }> { path: string; init?: ExtendedRequestInit | null; status: number; headers: Headers; body?: any; } export declare type ExtendedBackoffOpts = BackoffOpts & { statusCodes: RegExp | Iterable; }; export declare type ThrottleOpts = { statusCodes: RegExp | Iterable; timeout: number | ((res: Response, path: string, init?: ExtendedRequestInit | null | undefined) => number); }; export { QueryParamsType } from './queryToString'; export interface ExtendedRequestInit extends RequestInit { method?: MethodType; json?: JsonType | null | undefined; query?: QueryType | null | undefined; expectedStatus?: number | RegExp | null | undefined; backoff?: ExtendedBackoffOpts | null | undefined; throttle?: ThrottleOpts | null | undefined; } export declare type GetRequestInit = ((path: string, init?: ExtendedRequestInit | null | undefined) => ExtendedRequestInit) | ((path: string, init?: ExtendedRequestInit | null | undefined) => Promise>); export declare type ToBody = (res: Response, path: string, init: RequestInit) => Promise; export default class SimpleApiClient { protected isThrottling: boolean; protected readonly host: string; protected readonly getInit?: GetRequestInit; protected readonly defaultInit?: ExtendedRequestInit; constructor(host: string, getInit?: GetRequestInit | ExtendedRequestInit); private throttleTimeout; private _fetch; fetch(path: string, init?: ExtendedRequestInit | null | undefined): Promise; body(path: string, init: ExtendedRequestInit & { toBody: ToBody; }): Promise; arrayBuffer(path: string, expectedStatus?: number | RegExp | ExtendedRequestInit | null, init?: ExtendedRequestInit | null): Promise; blob(path: string, expectedStatus?: number | RegExp | ExtendedRequestInit | null, init?: ExtendedRequestInit | null): Promise; text(path: string, expectedStatus?: number | RegExp | ExtendedRequestInit | null, init?: ExtendedRequestInit | null): Promise; json(path: string, expectedStatus?: number | RegExp | ExtendedRequestInit | null, init?: ExtendedRequestInit | null): Promise; none(path: string, expectedStatus?: number | RegExp | ExtendedRequestInit | null, init?: ExtendedRequestInit | null): Promise; head(path: string, expectedStatus?: number | RegExp | ExtendedRequestInit | null, init?: ExtendedRequestInit | null): Promise; get(path: string, expectedStatus?: number | RegExp | ExtendedRequestInit | null, init?: ExtendedRequestInit | null): Promise; options(path: string, expectedStatus?: number | RegExp | ExtendedRequestInit | null, init?: ExtendedRequestInit | null): Promise; post(path: string, expectedStatus?: number | RegExp | ExtendedRequestInit | null, init?: ExtendedRequestInit | null): Promise; put(path: string, expectedStatus?: number | RegExp | ExtendedRequestInit | null, init?: ExtendedRequestInit | null): Promise; delete(path: string, expectedStatus?: number | RegExp | ExtendedRequestInit | null, init?: ExtendedRequestInit | null): Promise; patch(path: string, expectedStatus?: number | RegExp | ExtendedRequestInit | null, init?: ExtendedRequestInit | null): Promise; }