/**
 * 统一接口公共模块
 * @date 2022-03-04
 * @author 何华东
 */
import { AxiosInstance, AxiosResponse } from 'axios';
/**
 * 统一接口请求基类
 */
export declare class ApiRequestBase {
    /**
     * 车场id
     */
    parkId?: any;
    /**
     * 接口业务代码
     */
    serviceCode?: string;
}
/**
 * 统一/非标接口响应
 */
export declare class ApiResponse<T = any> {
    constructor(resCode: any);
    /**
     * 响应码,0为成功
     */
    resCode: string;
    /**
     * 响应信息
     */
    resMsg?: string;
    /**
     * 响应数据
     */
    data?: T;
    /**
     * 判断响应码是否为成功
     */
    static resCodeIsSuccess(resCode: string): boolean;
    /**
     * 成功响应实例,resCode=0
     */
    static readonly success: ApiResponse;
    /**
     * 创建一个失败响应，默认响应码为-1
     * @param resMsg
     * @returns
     */
    static failed(resMsg?: string): ApiResponse<any>;
    /**
     * 重推响应实例,resCode=999
     */
    static readonly repush: ApiResponse;
    static successWithData(data: any): ApiResponse<any>;
    static successWithMsg(resMsg: string): ApiResponse<any>;
}
/**
 * 如果统一接口响应码为非成功则抛出异常
 * @param apiResponse
 */
export declare function throwIfResCodeNoSuccess(apiResponse: ApiResponse): void;
/**
 * 签名工具
 */
export declare class SignUtils {
    /**
     * 获取签名
     */
    static getSign(data: object, appSecret: string): string;
}
/**
 * 统一上行接口装饰器
 *
 * 自动验签，仅PROD环境才验签，如果未签名则直接返回，不记录日志
 *
 * 自动捕获异常并返回错误报文
 *
 * 自动记录日志，记录请求参数及返回报文
 * @param description 服务描述，仅为日志输出，提高可读性
 */
export declare function Service(description?: string): MethodDecorator;
export declare function generateAxiosInstance(config: {
    /**
     * 统一接口根地址
     */
    baseUrl?: string;
    /**
     * 统一接口请求超时时间
     */
    timeout?: number;
    /**
     * appId
     */
    appId: any;
    /**
     * appSecret
     */
    appSecret: string;
    /**
     * axios异常处理
     */
    axiosErrorHandler?: (error: any) => any;
    /**
     * axios响应处理
     */
    axiosResponseHandler?: (response: AxiosResponse<any>) => AxiosResponse<any> | Promise<AxiosResponse<any>>;
}): AxiosInstance;
/**
 * 统一接口axios实例
 *
 * 如果typescript-ioc有注册配置config.tyApi，那么会自动创建该实例，否则为空
 *
 * config.tyApi配置项参考{@link TyApiConfig}
 */
export declare let axiosInstance: AxiosInstance;
