export interface ICfg {
    name: string;
    version: string;
}
declare abstract class BaseMapping<T> {
    private pkgName;
    private pkgVersion;
    private _soaHotelRequest;
    constructor(config: ICfg);
    /**
     * 字段规则定义
     *
     * @readonly
     * @type {T}
     * @memberof BaseMapping
     */
    abstract get rule(): T;
    /**
     * 标识字段, 用于判断是否需要更新
     *
     * @readonly
     * @abstract
     * @type {*}
     * @memberof BaseMapping
     */
    get compareKeys(): {
        [key: string]: boolean | Function;
    };
    /**
     * 批量 mapping 函数
     *
     * @abstract
     * @param {any[]} candidates
     * @param {boolean} withRawData
     * @param {any} parameter
     * @returns {Promise<T[]>}
     * @memberof BaseMapping
     */
    abstract doBatchMapping(candidates: any[], withRawData: boolean, parameter?: any): Promise<T[]>;
    /**
     * mapping 函数
     *
     * @abstract
     * @param {*} candidate
     * @param {boolean} withRawData
     * @param {*} [parameter]
     * @returns {Promise<T>}
     * @memberof BaseMapping
     */
    abstract doMapping(candidate: any, withRawData: boolean, parameter?: any): Promise<T>;
    /**
     * 根据实例 rules 匹配第三方原始数据
     *
     * @param {*} originData 第三方原始数据对象
     * @param {boolean} withRawData 是否将原始记录写入数据库里面
     * @param {*} [parameter] mapping 函数执行参数
     * @returns {Promise<T>}
     * @memberof BaseMapping
     */
    mapping(originData: any, withRawData: boolean, parameter?: any): Promise<T>;
    /**
     * 对比操作
     *
     * @param {*} localData 当前本地数据
     * @param {*} newDate 获取到的新数据
     * @memberof BaseMapping
     */
    compare(localData: any, newData: any): boolean;
    /**
     * 通过队列进行新增
     *
     * @param {string} channel
     * @param {(T | T[])} data
     * @returns {Promise<any>}
     * @memberof BaseMapping
     */
    createToQueue(channel: string, data: T | T[]): Promise<any>;
    /**
     * 通过队列进行更新
     *
     * @param {string} channel
     * @param {(T | T[])} data
     * @returns {Promise<any>}
     * @memberof BaseMapping
     */
    updateToQueue(channel: string, data: T | T[]): Promise<any>;
    /**
     * 通过 API 进行单条数据新增
     *
     * @param {string} endpoint
     * @param {T} payload
     * @returns {Promise<any>}
     * @memberof BaseMapping
     */
    createToApi(endpoint: string, payload: T): Promise<any>;
    /**
     * 通过 API 进行单条数据更新
     *
     * @param {string} endpoint
     * @param {T} payload
     * @returns {Promise<any>}
     * @memberof BaseMapping
     */
    updateToApi(endpoint: string, payload: T): Promise<any>;
    /**
     * 通过 API 进行批量新增
     *
     * @param {string} endpoint
     * @param {T} payload
     * @returns {Promise<any>}
     * @memberof BaseMapping
     */
    batchCreateToApi(endpoint: string, payload: T[]): Promise<any>;
    /**
     * 通过 API 进行批量更新
     *
     * @param {string} endpoint
     * @param {T} payload
     * @returns {Promise<any>}
     * @memberof BaseMapping
     */
    batchUpdateToApi(endpoint: string, payload: T[]): Promise<any>;
}
export default BaseMapping;
