import { RawAxiosRequestHeaders, AxiosRequestConfig, AxiosInstance, AxiosResponse } from 'axios'; import { Logger } from '../logging/logger.mjs'; import { Interceptor } from './interceptor.mjs'; import { Token } from './token.mjs'; interface ClientOptions { /** * The client name */ readonly name?: string; /** * The authorization token to use */ readonly token?: Token; /** * Logger instance to use */ readonly logger?: Logger; /** * The baseUrl to prefix all client requests with */ readonly baseUrl?: string; /** * Default request timeout (ms) */ readonly timeout?: number; /** * Default headers */ readonly headers?: RawAxiosRequestHeaders; /** * Default interceptors to register */ readonly interceptors?: Array; } interface RequestConfig extends AxiosRequestConfig { /** * If provided, this token will be used instead of * the default token provided in the `ClientOptions` */ token?: Token; } interface InterceptorRegistry { readonly requestId?: number; readonly responseId?: number; readonly interceptor: Interceptor; } declare class Client { token?: Token; readonly name: string; protected options: ClientOptions; protected log: Logger; protected http: AxiosInstance; protected seq: number; protected interceptors: Map; constructor(options?: ClientOptions); get, D = any>(url: string, config?: RequestConfig): Promise; post, D = any>(url: string, data?: D, config?: RequestConfig): Promise; put, D = any>(url: string, data?: D, config?: RequestConfig): Promise; patch, D = any>(url: string, data?: D, config?: RequestConfig): Promise; delete, D = any>(url: string, config?: RequestConfig): Promise; request, D = any>(config: RequestConfig): Promise; /** * Register an interceptor to use * as middleware for the request/response/error */ use(interceptor: Interceptor): number; /** * Eject an interceptor */ eject(id: number): void; /** * Clear (Eject) all interceptors */ clear(): void; /** * Create a copy of the client */ clone(options?: ClientOptions): Client; protected withConfig(config?: RequestConfig): Promise>; } export { Client, type ClientOptions, type RequestConfig };