/**
 * GetToken接口
 */
export interface IGetToken {
    getToken(accessToken: string): Promise<any>;
}

/**
 * JSLoader 返回函数
 */
export interface IjsLoaderCallback {
    (options: SPOpts | IpreSign): void | string;

}

/**
 * 回调参数
 */

export interface ICallBackOpts {
    code: number,
    requestId: string,
    msg?: string,
    content?: any,
    spToken?: string
}

/**
 * 移动preSign回调参数
 */

export interface IpreSignnCallBackOpts {
    code: number,
    msg?: string,
    content?: any,
    accessToken?: string
}

/**
 * 回调函数
 */
export interface IcallBackFun {
    (res: ICallBackOpts | string): void;
}

/**
 * checkAuth的响应参数
 */
export interface ITokenParamsType {
    appId: '',
    vender: string,
    reqTimeStamp?: string,
    paramKey?: string,
    paramStr?: string,
    sign: string
}

/**
 * checkAuthAvailable 验证的入参
 */
export interface IcheckAuthOpts {
    accessToken: string, //鉴权密钥
    jwtToken: string,
    phoneNumber: string,  // 手机号码
    success: IcallBackFun, //回调
    error: IcallBackFun
}

/**
 * checkAuthAvailable 验证的入参
 */
export interface IcheckAuthParams {
    accessToken: string, //鉴权密钥
    jwtToken: string,
    preSign: string,
    phoneNumber: string  // 手机号码
}

/**
 * getVerifyToken的入参
 */
export interface IgetVerifyOpts {
    success: IcallBackFun, //回调
    error: IcallBackFun
}

/**
 * 运营商获取token参数
 */
export interface SPOpts {
    params: CMParams | CUParams | CTParams, //获取token入参
    success: IcallBackFun, //成功回调
    error: IcallBackFun, //失败回调
    accessToken: string,
    debuggerMode?: boolean
}


/**
 * 联通初始化传参
 */

export interface CUParams {
    reqTimeStamp: string, //客户端发起请求的时间戳；需对时间进行格式化，格式为yyyyMMddHHmmssSSS
    clientId: string, //接入ID
    authorization: string //客户端发起请求的鉴权密钥
}

//
// /**
//  * 移动获取token参数
//  */
// export interface CMOpts {
//     params: CMParams, //初始化传参
//     success: IcallBackFun, //成功回调
//     error: IcallBackFun
// }

/**
 * 移动获取token参数
 */
export interface CMParams {
    version: string, //接口版本号 （必填）
    appId: string, //应用Id （必填）注册时分发
    sign: string, //RSA加密后的sign（必填）
    openType: string, //移动取号接口填写1，三网取号接口填写0 （必填，联调时必须填写为1）
    expandParams?: string, //扩展参数  格式：参数名=值  多个时使用 | 分割（选填，联调环境只能模拟取号，联调时需填写phoneNum=188185*****  手机号可以随便填写，生产可不填）
    isTest: string,//是否启用测试线地址（传0时为启用，不为0或者不传时为不启用）
}


/**
 * 电信token参数
 */
export interface CTParams {
    appId: string, //应用Id （必填）
    clientType: string, // 客户端类型 Android-30100 ，IOS-30300，H5-20200 WEB-10010
    format: string, // 返回格式
    sign: string, //RSA加密后的sign（必填）
    version: string, //接口版本号 （必填）
    paramKey: string, // 加密后的公钥
    paramStr: string //不公开请求的参数
}

/**
 * 移动preSign传参
 */
export interface IpreSign {
    appId: string,
    version: string,
    callback: IcallBackFun
}

export interface ICarrierInfo {
    carrierTraceId: string,
    carrierSdkCode: number,
    carrierRespCode?: number
    carrierMsg?: string
}

export interface ICMResData {
    carrierTraceId: string,
    carrierSdkCode: number,
    carrierRespCode?: number
    carrierMsg?: string
}

export interface IConfigParam {
    isDemoted?: boolean,
    is_limited?: any,
    isLimited?: boolean, // 限流
    msg?: string,
    limitTime?: number,
    limitCount?: number,
    reqCount?: number,
    lastReqTime?: number
}

