type HttpMethod = 'GET' | 'HEAD' | 'POST' | 'PUT' | 'PATCH' | 'OPTIONS' | 'DELETE'; type HttpMethodLower = Lowercase; type DataType = string | null | object; interface RequestOptions { method?: HttpMethod | HttpMethodLower; parameters?: Record; headers?: Record; data?: unknown; overlay?: boolean; async?: boolean; before?: (() => boolean) | false; contentType?: string; } declare class APIError extends Error { static createWithJqXhr(message: string, jqXhr: JQuery.jqXHR): APIError; jqXhr: JQuery.jqXHR | null; setJqXhr(jqXhr: JQuery.jqXHR): void; } /** Die "normale" (Deferred) API */ declare class AbstractAPI { static readonly supportedMethods: readonly HttpMethod[]; constructor(base_url: string); encodeData(data: DataType , method: null|HttpMethod|HttpMethodLower): DataType; request(url: string | string[], options?: RequestOptions): JQuery.jqXHR; GET(url: string | string[], options?: RequestOptions): JQuery.jqXHR; HEAD(url: string | string[], options?: RequestOptions): JQuery.jqXHR; POST(url: string | string[], options?: RequestOptions): JQuery.jqXHR; PUT(url: string | string[], options?: RequestOptions): JQuery.jqXHR; PATCH(url: string | string[], options?: RequestOptions): JQuery.jqXHR; OPTIONS(url: string | string[], options?: RequestOptions): JQuery.jqXHR; DELETE(url: string | string[], options?: RequestOptions): JQuery.jqXHR; get(url: string | string[], options?: RequestOptions): JQuery.jqXHR; head(url: string | string[], options?: RequestOptions): JQuery.jqXHR; post(url: string | string[], options?: RequestOptions): JQuery.jqXHR; put(url: string | string[], options?: RequestOptions): JQuery.jqXHR; patch(url: string | string[], options?: RequestOptions): JQuery.jqXHR; options(url: string | string[], options?: RequestOptions): JQuery.jqXHR; delete(url: string | string[], options?: RequestOptions): JQuery.jqXHR; withPromises(): AbstractAPIPromises; } interface AbstractAPIPromises { request(url: string | string[], options?: RequestOptions): Promise; GET(url: string | string[], options?: RequestOptions): Promise; HEAD(url: string | string[], options?: RequestOptions): Promise; POST(url: string | string[], options?: RequestOptions): Promise; PUT(url: string | string[], options?: RequestOptions): Promise; PATCH(url: string | string[], options?: RequestOptions): Promise; OPTIONS(url: string | string[], options?: RequestOptions): Promise; DELETE(url: string | string[], options?: RequestOptions): Promise; get(url: string | string[], options?: RequestOptions): Promise; head(url: string | string[], options?: RequestOptions): Promise; post(url: string | string[], options?: RequestOptions): Promise; put(url: string | string[], options?: RequestOptions): Promise; patch(url: string | string[], options?: RequestOptions): Promise; options(url: string | string[], options?: RequestOptions): Promise; delete(url: string | string[], options?: RequestOptions): Promise; } export { AbstractAPI as default, APIError, RequestOptions, HttpMethod, HttpMethodLower, DataType };