/**
 * 共享库配置模块
 * @date 2022-03
 * @author 何华东
 */

 import { AxiosInstance, AxiosResponse } from 'axios';

 export interface Config {
     basic: BasicConfig;
 
     /**
      * 统一接口配置接口
      */
     tyApi: TyApiConfig;
 
     /**
      * 非标接口配置
      */
     nonStandardApi?: NonStandardApiConfig;
 
     /**
      * cron定时任务配置
      */
     cron?: CronConfig;
 
     /**
      * ioredis配置
      */
     ioredis?: any;
 
     /**
      * ali-oss配置
      */
     aliOss?: any;

     /**
      * 车场镜像knex配置,参考knex/mysql
      */
     parkImageKnex?: any;
 }
 
 /**
  * 基础配置
  */
 export interface BasicConfig {
     tapdId: any;
 }
 
 /**
  * 统一接口配置接口
  */
 export interface TyApiConfig {
     /**
      * 统一接口根地址
      */
     baseURL?: string;
 
     /**
      * 请求超时时间(毫秒)
      */
     timeout?: number;
     appId: string;
     appSecret: string;
 
     /**
      * axios异常处理
      */
     axiosErrorHandler?: (error: any) => any;
 
     /**
      * axios响应处理
      */
     axiosResponseHandler?: (response: AxiosResponse<any>) => AxiosResponse<any> | Promise<AxiosResponse<any>>
 }
 
 /**
  * 非标接口配置
  */
 export interface NonStandardApiConfig {
     /**
      * 3des加密key
      */
     key: string;
 
     /**
      * 3des加密偏移量
      */
     iv: any;
 }
 
 /**
  * cron定时任务配置
  */
 export interface CronConfig {
     /**
      * 是否启用定时任务
      */
     enabled?: boolean;
 }