import type { AxiosRequestConfig, AxiosResponse, AxiosError } from 'axios'; export interface IInterceptorRequest { onConfig?: (config: T) => T | Promise; onError?: (error: AxiosError) => Promise; } export interface IInterceptorResponse { onConfig?: (response: K) => K | Promise; onError?: (error: AxiosError) => Promise; } export interface IInterceptors { request?: IInterceptorRequest; response?: IInterceptorResponse; } interface ICustomRequest extends AxiosRequestConfig { instanceName?: string; withFullResponse?: boolean; interceptors?: IInterceptors; } export type IRequest = ICustomRequest | ICustomRequest[];