import type { AxiosRequestConfig, AxiosResponse, InternalAxiosRequestConfig } from 'axios'; import type { ErrorMessageMode, RequestOptions, Result } from '../types'; import type { Fn, Nullable } from '../../types'; export interface CreateAxiosOptions extends AxiosRequestConfig { authenticationScheme?: string; transform?: AxiosTransform; requestOptions?: RequestOptions; } export declare abstract class AxiosTransform { /** * @description: Process configuration before request * @description: Process configuration before request */ beforeRequestHook?: (config: AxiosRequestConfig, options: RequestOptions) => AxiosRequestConfig; /** * @description: Request successfully processed */ transformRequestHook?: (res: AxiosResponse, options: RequestOptions) => any; /** * @description: 请求失败处理 */ requestCatchHook?: (e: Error, options: RequestOptions) => Promise; /** * @description: 请求之前的拦截器 */ requestInterceptors?: (config: InternalAxiosRequestConfig, options: CreateAxiosOptions) => InternalAxiosRequestConfig; /** * @description: 请求之后的拦截器 */ responseInterceptors?: (res: AxiosResponse) => AxiosResponse; /** * @description: 请求之前的拦截器错误处理 */ requestInterceptorsCatch?: (error: Error) => void; /** * @description: 请求之后的拦截器错误处理 */ responseInterceptorsCatch?: (axiosInstance: AxiosResponse, error: Error) => void; } export type OnErrorFn = (mode: ErrorMessageMode, errorMessage: string) => void; export interface CreateAxiosTransformOptions { onError?: OnErrorFn; onSignout?: Fn; getToken?: () => Nullable; removeToken?: Fn; } export type CreateAxiosTransform = (options?: CreateAxiosTransformOptions) => AxiosTransform;