export declare type Key = string | number | symbol;
export declare type Keys = Key | Key[];
/**
 * 映射的 key
 * - null ：表示删除当前 key
 * - undefined ： 没有映射，相关于没有为该key设置映射
 */
export declare type MapKey = Key | null | undefined;
export declare type MapKeys = MapKey | MapKey[];
/**
 * 对象开式的key映射
 */
export declare type KeyMapsObject = {
    [SK in Key]: MapKeys;
};
/**
 * 数组开式的key映射
 */
export declare type KeyMapsArray = [Keys, MapKeys][];
/**
 * key 映射
 */
export declare type KeyMaps = KeyMapsObject | KeyMapsArray;
/**
 * 将 KeyMaps 类型 转为 KeyMapsObject 类型
 * @param keyMaps
 * @returns
 */
export declare function toKeyMapsObject(keyMaps: KeyMaps): KeyMapsObject;
/**
 * 将 keyMaps1 和 keyMaps2 合并成一个 KeyMapsObject 对象
 */
export declare function mergeKeyMaps(keyMaps1: KeyMaps, keyMaps2: KeyMaps): KeyMapsObject;
/**
 * 将 keyMaps 反转
 * @param keyMaps
 * @returns
 */
export declare function reverseKeyMaps(keyMaps: KeyMaps): KeyMapsArray;
/**
 * 完成的回调函数
 */
export declare type CompleteCB<V> = (copy: V) => void;
/**
 * keysMapper 函数的配置选项
 */
export interface KeysMapperOptions {
    maxDepth?: number | null | undefined;
    deleOther?: boolean | null | undefined;
    reverse?: boolean | null | undefined;
    keep?: boolean | null | undefined;
    array?: boolean;
}
export interface KeysMapper {
    /**
     * 键映射
     */
    (source: any, options?: KeysMapperOptions | null | undefined, keyMaps?: KeyMaps | null | undefined): any;
    /**
     * 预设的 KeyMapsObject
     */
    presetKeyMapsObject: KeyMapsObject;
}
/**
 * 创建以 presetKeyMapsObject 为预设的 keysMapper() 函数
 * @param presetKeyMapsObject
 * @returns
 */
export declare function createKeysMapper(presetKeyMapsObject?: KeyMapsObject): KeysMapper;
export declare const keysMapper: KeysMapper;
