/**
 * 数组排序
 * @param arr 待排序数组
 * @param order 排序信息, asc - 升序, desc - 倒序
 * @param orderKey 如果是个对象数组，按哪个字段排序
 * @returns
 */
export declare function order<T>(arr: T[], order?: "asc" | "desc", orderKey?: string | null): T[];
/**
 * 返回一个所有集合交集的新集合
 *
 * 如果集合本身支持 intersection, 则调用原生 intersection 函数
 *
 * @param arrs
 *
 * @returns 新集合中的元素在传入的所有集合中同时存在
 */
export declare function intersection<T>(...arrs: Set<T>[]): Set<T>;
/**
 * 返回一个所有列表交集的新列表
 *
 * @param arrs
 *
 * @returns 新列表中的元素在传入的所有列表中同时存在
 */
export declare function intersection<T>(...arrs: T[][]): T[];
/**
 * 返回一个包含第一个集合中的元素但不包含后续给定集合中元素的新集合
 *
 * 如果集合本身支持 difference 方法，则调用原生 difference 方法
 *
 * @param arrs 集合列表
 *
 * @returns
 */
export declare function difference<T>(...arrs: Set<T>[]): Set<T>;
/**
 * 返回一个包含第一个列表中的元素但不包含后续给定列表中元素的新列表
 *
 * @param arrs 二维列表
 *
 * @returns
 */
export declare function difference<T>(...arrs: T[][]): T[];
/**
 * 返回多个集合的并集, 如果支持 union，则调用原生 union
 *
 * @param arrs
 *
 * @returns 一个包含所有给定集合的所有元素的新集合
 */
export declare function union<T>(...arrs: Set<T>[]): Set<T>;
export declare function union<T>(...arrs: T[][]): T[];
export declare function symmetricDifference<T>(...arrs: Set<T>[]): Set<T>;
export declare function symmetricDifference<T>(...arrs: T[][]): T[];
/**
 * 返回一个布尔值，指示此集合中的所有元素是否都在给定的集合中。
 * @param a1
 * @param a2
 * @returns
 */
export declare function isSubsetOf<T>(a1: T[] | Set<T>, a2: T[] | Set<T>): boolean;
/**
 * 返回一个布尔值，指示给定集合中的所有元素是否都在此集合中。
 * @param arr1
 * @param arr2
 * @returns
 */
export declare function isSupersetOf<T>(arr1: T[] | Set<T>, arr2: T[] | Set<T>): boolean;
/**
 * 返回一个布尔值，指示此集合是否与给定集合没有公共元素。
 *
 * 判断两个集合是否有交集, 也可以通过 intersection(arr1, arr2).length 判断
 *
 * @param arr1
 * @param arr2
 * @returns
 */
export declare function isDisjointFrom<T>(arr1: T[] | Set<T>, arr2: T[] | Set<T>): boolean;
