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

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

export interface Config {
    /**
     * 统一接口配置接口
     */
    tyApi: TyApiConfig;

    /**
     * cron定时任务配置
     */
    cron?: CronConfig;

    /**
     * ioredis配置
     */
    ioredis?: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>>
}

/**
 * cron定时任务配置
 */
export interface CronConfig {
    /**
     * 是否启用定时任务
     */
    enabled?: boolean;
}