import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse, AxiosError } from 'axios';

// 设置 axios 默认基础路径
axios.defaults.baseURL = 'https://captcha.anji-plus.com/captcha-api';

// 定义 axios 实例配置（继承 AxiosRequestConfig 类型，可自定义额外配置）
const serviceConfig: AxiosRequestConfig = {
  timeout: 40000,
  headers: {
    'X-Requested-With': 'XMLHttpRequest',
    'Content-Type': 'application/json; charset=UTF-8'
  },
};

// 创建 axios 实例并明确类型 AxiosInstance
const service: AxiosInstance = axios.create(serviceConfig);

// 请求拦截器：明确 config 类型为 AxiosRequestConfig，返回值类型为 AxiosRequestConfig | Promise<AxiosRequestConfig>
service.interceptors.request.use(
  (config: AxiosRequestConfig): AxiosRequestConfig => {
    return config;
  },
  (error: AxiosError): Promise<never> => {
    // 明确返回 Promise.reject，补充返回值类型
    return Promise.reject(error);
  }
);

// 响应拦截器：明确 response 类型为 AxiosResponse，error 类型为 AxiosError
service.interceptors.response.use(
  (response: AxiosResponse): any => {
    // 提取响应数据，保留原有逻辑
    const res = response.data;
    return res;
  },
  (error: AxiosError): Promise<never> => {
    // 可在这里添加错误处理逻辑（如提示网络错误等）
    // 明确返回 Promise.reject，补充返回值类型
    return Promise.reject(error);
  }
);

// export default service;
export function request<T = any>(config: AxiosRequestConfig): Promise<T> {
  return service(config) as Promise<T>;
}