import { Service } from './service';
import { HttpContentType, HttpApi, IHttpSendConfig, HTTP_SERVICE_CONFIG, DATA_CARRYING, HelperHttpApi, HelperHttpData, HelperHttpHeaders, HelperHttpExtra } from '../type/types';
import type { UtilityObject } from '../type/utils';
declare type IApplicationInstance = any;
/**
 * Class HttpService
 * @description Http服务模块，提供请求配置、中间件、数据携带等相关功能
 */
export declare class HttpService extends Service {
    _http: any;
    _api: UtilityObject;
    _headers: Record<string, any>;
    _host: string;
    _isRESTful: boolean;
    _carryingData: UtilityObject;
    private _mode;
    $helper: null;
    _requestMiddleware: CallableFunction;
    _responseMiddleware: CallableFunction;
    protected _context: any;
    /**
     * _contentType Request type 请求类型
     * 'application/json' 为 Request Payload 请求方式
     * 'application/x-www-form-urlencoded;charset=UTF-8' 为 Form Data 请求方式 需QS配合使用
     * OTHER Query String Parameters 为 _method = 'GET'
     */
    /**
     * constructor
     * @param app
     * @param config
     * @description HttpService constructor
     */
    constructor(app: IApplicationInstance, { HTTP_ADAPTER, HTTP_API, HTTP_HOST, IS_RESTFUL, CONTENT_TYPE, DATA_CARRYING, REQUEST_MIDDLEWARE, RESPONSE_MIDDLEWARE }: HTTP_SERVICE_CONFIG);
    /**
     * Method setContentType 设置请求类型
     * @param {String} mode
     */
    setContentType(mode: HttpContentType): void;
    private getContentType;
    /**
     * Method setDataCarry 处理携带数据
     * @param {*} REQUEST_HEADERS
     * @param {*} REQUEST_DATA
     */
    setDataCarry(REQUEST_HEADERS: DATA_CARRYING['REQUEST_HEADERS'], REQUEST_DATA: DATA_CARRYING['REQUEST_DATA']): void;
    /**
     * Method carryingHandle 携带数据处理
     * @param name
     * @param val
     * @param type
     * @private
     */
    private carryingHandle;
    /**
     * Method http 发送一个请求
     * @param api
     * @param data
     * @param headers
     * @param extra
     * @returns
     */
    http(api: HelperHttpApi, data: HelperHttpData, headers?: HelperHttpHeaders, extra?: HelperHttpExtra): Promise<any>;
    /**
     * Send Request
     * @returns {Promise<*|*>}
     * @param returnResponse 返回响应数据
     */
    private request;
    /**
     * Method Send
     * 发送一个自定义请求
     * @param apiRoute
     * @param data
     * @param config
     * @param returnResponse
     */
    send(apiRoute: string | HttpApi, data: Record<string, any>, config?: IHttpSendConfig, returnResponse?: boolean): Promise<any>;
    /**
     * 制作一个发型，目前发型用于二次请求相关
     * @param apiRoute
     */
    private makeHairstyle;
    /**
     * Method getParameters
     * 从Api里读取请求方法、参数和地址
     * @param {*} apiRoute
     * @param {*} data
     * @returns
     */
    private getParameters;
    /**
     * Method setHeaders
     * 设置Headers multiple
     * @param config
     * @private
     */
    private setHeaders;
    /**
     * Method setHeader
     * 设置Headers single
     * @param name
     * @param val
     * @private
     */
    private setHeader;
    /**
     * Method setData
     * 设置携带数据 通过Data
     * @param name
     * @param val
     * @private
     */
    private setData;
}
export {};
