export type FindIndexPredicate = (value: T, index: number, obj: T[]) => unknown; export type Comparator = (first: T, second: T) => boolean; export type OrderByKey = null | undefined | string | number; export interface Group { key: K; values: T[]; } export declare function uniq(array: T[], predicate?: Comparator): T[]; export declare function sample(array: T[]): T | undefined; export declare function groupBy(array: T[], keyPredicate: (item: T) => K, keyComparator?: Comparator): Group[]; export declare function orderBy(array: T[], keyPredicate: (item: T) => OrderByKey, desc?: boolean): T[]; /** * Изменяет массив по ссылке аналогично Array.splice */ export declare function remove(array: T[], item: T): T[]; /** * Перестановка элементов в массиве, без мутации исходного массива */ export declare function moveInArray(array: readonly T[], fromIndex: number, toIndex: number): T[];