import { MagicalClass } from 'js-magic'; import { AxiosInstance } from 'axios'; import { IRequestResponse, APIHandlerConfig } from './types/http-request-handler'; import { HttpRequestHandler } from './http-request-handler'; /** * Handles dispatching of API requests */ export declare class ApiHandler implements MagicalClass { /** * TS Index signature */ [x: string]: any; /** * Api Url * * @memberof ApiHandler */ apiUrl: string; /** * @var httpRequestHandler Request Wrapper Instance */ httpRequestHandler: HttpRequestHandler; /** * Endpoints * * @memberof ApiHandler */ apiEndpoints: Record; /** * Logger * * @memberof ApiHandler */ logger: any; /** * Creates an instance of API Handler * * @param {string} apiUrl Base URL for all API calls * @param {number} timeout Request timeout * @param {string} strategy Error Handling Strategy * @param {string} flattenResponse Whether to flatten response "data" object within "data" one * @param {*} logger Instance of Logger Class * @param {*} httpRequestErrorService Instance of Error Service Class * * @memberof ApiHandler */ constructor({ apiUrl, apiEndpoints, timeout, strategy, flattenResponse, logger, httpRequestErrorService, ...config }: APIHandlerConfig); /** * Get Provider Instance * * @returns {AxiosInstance} Provider's instance * @memberof ApiHandler */ getInstance(): AxiosInstance; /** * Maps all API requests * * @param {*} prop Caller * @returns {Function} Tailored request function * @memberof ApiHandler */ __get(prop: any): any; /** * Handle Single API Request * * @param {*} args Arguments * @returns {Promise} Resolvable API provider promise * @memberof ApiHandler */ handleRequest(...args: any): Promise; /** * Triggered when trying to use non-existent endpoints * @param prop Method Name * @returns {Promise} * @memberof ApiHandler */ protected handleNonImplemented(prop: string): Promise; } export declare const createApiFetcher: (options: APIHandlerConfig) => ApiHandler;