import type { Comparator, Fn, FnN, FnN2 } from "@thi.ng/api";
/**
* Returns the supposed index of `x` in pre-sorted array-like collection `buf`.
*
* @remarks
* If `x` can't be found, returns `-index-1`, representing the negative of the
* index, were `x` to be inserted into `buf`. E.g if the return value is -3, `x`
* would appear/insert at index 2.
*
* The optional `key` function is used to obtain the actual sort value of `x`
* and each array item (default: identity).
*
* The optional `cmp` comparator (default:
* [`compare`](https://docs.thi.ng/umbrella/compare/functions/compare.html)) is
* then used to identify the index of `x`. The sort order of `buf` MUST be
* compatible with that of `cmp`.
*
* @example
* ```ts tangle:../export/binary-search1.ts
* import { binarySearch } from "@thi.ng/arrays";
*
* console.log(
* binarySearch([2, 4, 6], 5)
* );
* // -3
* ```
*
* @param buf - array
* @param x - search value
* @param key - key function
* @param cmp - comparator
* @param low - min index
* @param high - max index
*/
export declare const binarySearch: (buf: ArrayLike, x: A, key?: Fn, cmp?: Comparator, low?: number, high?: number) => number;
/**
* Similar to {@link binarySearch}, but optimized for numeric arrays and
* supporting custom comparators (default:
* [`compareNumAsc`](https://docs.thi.ng/umbrella/compare/functions/compareNumAsc.html)).
*
* @param buf - array
* @param x - search value
* @param cmp - comparator
* @param low - min index
* @param high - max index
*/
export declare const binarySearchNumeric: (buf: ArrayLike, x: number, cmp?: Comparator, low?: number, high?: number) => number;
export declare const binarySearch2: (buf: ArrayLike, x: number) => number;
/**
* Non-recursive, optimized binary search for fixed size numeric arrays of 4
* values. Returns index of `x` or `-index-1` if not found.
*
* @param buf -
* @param x -
*/
export declare const binarySearch4: (buf: ArrayLike, x: number) => number;
/**
* Non-recursive, optimized binary search for fixed size numeric arrays of 8
* values. Returns index of `x` or `-index-1` if not found.
*
* @param buf -
* @param x -
*/
export declare const binarySearch8: (buf: ArrayLike, x: number) => number;
/**
* Non-recursive, optimized binary search for fixed size numeric arrays of 16
* values. Returns index of `x` or `-index-1` if not found.
*
* @param buf -
* @param x -
*/
export declare const binarySearch16: (buf: ArrayLike, x: number) => number;
/**
* Non-recursive, optimized binary search for fixed size numeric arrays of 32
* values. Returns index of `x` or `-index-1` if not found.
*
* @param buf -
* @param x -
*/
export declare const binarySearch32: (buf: ArrayLike, x: number) => number;
/**
* {@link binarySearch} result index classifier for predecessor queries.
* Returns index of last item less than search value or -1 if no such
* values exist.
*
* @example
* ```ts tangle:../export/binary-search2.ts
* import { binarySearch, bsLT } from "@thi.ng/arrays";
*
* console.log(
* bsLT(binarySearch([10, 20, 30, 40], 25))
* )
* // 1
* ```
*
* @param i - binarySearch result index
*/
export declare const bsLT: FnN;
/**
* Similar to {@link bsLT}, but for less-than-equals queries.
*
* @param i - binarySearch result index
*/
export declare const bsLE: FnN;
/**
* {@link binarySearch} result index classifier for successor queries.
* Returns index of first item greater than search value or -1 if no
* such values exist.
*
* @example
* ```ts tangle:../export/binary-search3.ts
* import { binarySearch, bsGT } from "@thi.ng/arrays";
*
* const src = [10, 20, 30, 40];
*
* console.log(
* bsGT(binarySearch(src, 25), src.length)
* )
* // 2
*
* console.log(
* bsGT(binarySearch(src, 40), src.length)
* )
* // -1
* ```
*
* @param i - binarySearch result index
* @param n - array length
*/
export declare const bsGT: FnN2;
/**
* Similar to {@link bsGT}, but for greater-than-equals queries.
*
* @param i - binarySearch result index
* @param n - array length
*/
export declare const bsGE: FnN2;
/**
* {@link binarySearch} result index classifier for equals queries.
* Merely syntax sugar, casting any non-found result indices to -1.
*
* @param i - binarySearch result index
*/
export declare const bsEQ: FnN;
//# sourceMappingURL=binary-search.d.ts.map