export declare namespace ArrayUtils { interface Head extends Array { head(): T; } interface Tail extends Array { tail(): T; } interface Children extends Array { children(): Tail; } const TailImpl: { tail(this: Array): T; }; const HeadAndChildrenImpl: { head(this: Array): T; children(this: T_1[]): Tail; }; interface HeadAndTail extends Head, Tail, Children { } function asTail(array: Array): Tail; function asHeadAndTail(array: Array): HeadAndTail; enum Sort { LeftBeforeRight = -1, RightBeforeLeft = 1, Equal = 0 } /** * Performs a binary search algorithm over a sorted collection. Useful for cases * when we need to perform a binary search over something that isn't actually an * array, and converting data to an array would defeat the use of binary search * in the first place. * * @param length The collection length. * @param compareToKey A function that takes an index of an element in the * collection and returns zero if the value at this index is equal to the * search key, a negative number if the value precedes the search key in the * sorting order, or a positive number if the search key precedes the value. * @return A non-negative index of an element, if found. If not found, the * result is -(n+1) (or ~n, using bitwise notation), where n is the index * where the key should be inserted to maintain the sorting order. */ function binarySearch2(length: number, compareToKey: (index: number) => number): number; function partition(array: T[], filter: (e: T, idx: number, arr: T[]) => boolean | undefined): [T[], T[]]; /** * @returns New array with all falsy values removed. The original array IS NOT modified. */ function coalesce(array: ReadonlyArray): T[]; /** * groups array elements through a comparator function * @param data array of elements to group * @param compare comparator function: return of 0 means should group, anything above means not group * @returns array of arrays with grouped elements */ function groupBy(data: ReadonlyArray, compare: (a: T, b: T) => number): T[][]; } //# sourceMappingURL=array-utils.d.ts.map