import { AxiosInstance, AxiosResponse, AxiosError, Method } from 'axios'; import { App } from './shared'; /** Base HTTP client with common helpers for all microservices */ export default class Client { _axios: AxiosInstance; private _app; constructor(baseURL: string, app: App, options: PayHooks); /** * Pull out the data object given a successful HTTP response. * @param response - HTTP response object */ protected _unpackResponseData(response: AxiosResponse): T; /** * Parses generic HTTP errors, throwing more specific errors given certain * criteria. * @param error - HTTP error object */ protected _unpackErrorResponse(error: AxiosError, label?: string, id?: number | string): undefined; _configure(baseUrl: string, options: PayHooks): void; /** * Perform microservice healthcheck * @returns "is healthy" response */ healthy(): Promise; } interface PayRequestContext { /** Response time in ms */ responseTime: number; service: App; params: { [key: string]: string | number | boolean | undefined; }; status?: number; url?: string; code?: number | string; method?: Method; } export declare type PayRequestHeaders = { [key: string]: string; }; export interface PayHooks { transformRequestAddHeaders?(): PayRequestHeaders; successResponse?(context: PayRequestContext): void; failureResponse?(context: PayRequestContext): void; } export {};