import { ApiRequest, ApiResponse } from "../interfaces/api.interface"; export declare class ApiClient { private client; constructor(baseUrl: string, timeout?: number); /** * Executing request and wrapping it with ApiClientResponse * * will return ApiClientResponse if success, with data else with error message * * @template T - Data type matched with each API's response * @access public * @param apiRequest `ApiRequest` configs for each api service * @returns `Promise>` return Promise response of wrapped with error handling * @memberof ApiClient */ request(apiRequest: ApiRequest): Promise>; /** * Execute request and return Promise with error or response if success * * Wrapping axios-request with Promise's resolve / reject for error handling * * @template T - Data type matched with each API's response * @access private * @param apiRequest `ApiRequest` configs for each api service * @returns `Promise` return promised response of http request with current ApiRequest configs and handle errors * @memberof ApiClient */ private createRequest; /** * Return configured AxiosInstance's request execution * * Before launch axios-request, launch url validation if invalid, throw Error else return AxiosResponses * * @param apiRequest `ApiRequest` configs for each api service * @returns `Promise` return promised response object * @memberof ApiClient */ private axiosRequest; /** * URL Validation using regex * * @access private * @param url `string` full url to validate ( baseURL + url path ) * @returns {boolean} validity of param url * @memberof ApiClient */ private validateURL; }