import { SrcConverterBase } from '../utils/model.helper';
import { BaseObject, ClassType } from '../context/base.object';
import { RequestContext } from '../context/request.context';
import { RequestResultMerageConditionConfig, RequestItem, RequestItemArgs, RequestItemArgsOption, RequestResultConfig, RequestResultConvert, RequestResultFiled, RequestResultMarageCondition } from '../base/reqest.data';
import { HttpApi, WrapperResult } from "./base.wrapper";
import { BaseMerageCondition } from './helpers/merage.condition';
export interface RawWrapper {
    /** 执行请求 */
    executeRequest: (context: RequestContext) => Promise<WrapperResult<any | undefined>>;
}
/**
 * 自动化 Raw 请求数据加工基类
 */
export declare class BaseRouteRawWrapper extends BaseObject<RequestContext> implements RawWrapper {
    /** 执行请求 */
    executeRequest(context: RequestContext): Promise<WrapperResult<any | undefined>>;
    /** 生成 api 请求 */
    protected makeHttpRequest(item: string | RequestItem, index: number, context: RequestContext): HttpApi;
    /** 获取请求参数 */
    protected getRequestParams(context: RequestContext, api: RequestItem, items: (string | RequestItemArgs)[] | undefined, opt: RequestItemArgsOption | undefined, 
    /** 是否是优先取 POST 参数 */
    flag?: number): any | undefined;
    /**
     * 获取单个的参数值
     * @param context
     * @param v
     * @param flag 是否是优先取 POST 参数
     * @returns
     */
    getRequestArgsItem(context: RequestContext, v: RequestItemArgs, flag?: number): any | undefined;
    /** 获取对象中指定路径字段（以"`.`"分隔）的值 */
    protected getValueByPath(data: any | undefined, path: string, ignoreCase?: boolean, deleteSrc?: boolean): any | undefined;
    /**
     * 解析返回数据
     * @param data RequestApi 返回的 Data
     */
    protected parserApiResult(context: RequestContext, respConfig: RequestResultConfig | undefined, data: any | undefined, needHumpConv?: boolean, customValues?: any | undefined, isArrayModel?: boolean, arrayConvert?: (item: any | undefined, itemValue: any | undefined) => any | undefined): any | undefined;
    /** 初始化返回数据 */
    protected initResultField(obj: Record<string, any> | undefined, field: string | RequestResultFiled, 
    /** 原始的数据列表 */
    datas: any[], 
    /** 请求上下文 */
    context: RequestContext, customValues?: any | undefined): any | undefined;
    protected converterResultValue(convert: RequestResultConvert | undefined, convert_param: any[] | undefined, owner: any | undefined, value: any | undefined): any | undefined;
    /** 获取转换器 */
    protected getConverter(type: RequestResultConvert): ClassType<SrcConverterBase> | undefined;
    /**
     * 合并的源数据
     * @param srcDatas 源数据数组
     * @param merage 源数据索引号
     * @param condition 合并条件配置
     * @param fields 返回配置的字段信息，需要将配置中有命名变换的字段从合并后的结果中排除
     * @returns
     */
    protected merageData(srcDatas: any[], customValues: any | undefined, curValue: Record<string, any>, merage: number, condition?: RequestResultMerageConditionConfig): void;
    /** 获取自动合并条件处理器 */
    protected getConditionHandler(type: RequestResultMarageCondition): ClassType<BaseMerageCondition> | undefined;
    /** 将数据列表的 key 转为小写 */
    protected transKeyToLowercase(datas: any[]): any[];
    /** 将对象的关键字 key 转为小写 */
    protected toLowercaseKey(dataItem: any | undefined): any | undefined;
    /** 获取根据返回配置的字段名称，获取字段配置 */
    protected getFieldByName(resp: RequestResultConfig | undefined, name: string): string | RequestResultFiled | undefined;
}
