export declare function binarySearch<T, K>(array: T[], target: K): T | undefined;
export declare function binarySearch<T, K>(array: T[], target: K, get: (element: T) => K): T | undefined;
export declare function binarySearchIndex<T, K>(array: T[], target: K): number;
export declare function binarySearchIndex<T, K>(array: T[], target: K, get: (element: T) => K): number;
export declare function shiftedBinarySearch<T, K>(array: T[], target: K): T | undefined;
export declare function shiftedBinarySearch<T, K>(array: T[], target: K, get: (element: T) => K): T | undefined;
export declare function shiftedBinarySearchIndex<T, K>(array: T[], target: K): number;
export declare function shiftedBinarySearchIndex<T, K>(array: T[], target: K, get: (element: T) => K): number;
export declare function binarySearchFirst<T, K>(array: T[], target: K): T | undefined;
export declare function binarySearchFirst<T, K>(array: T[], target: K, get: (element: T) => K): T | undefined;
export declare function binarySearchFirstIndex<T, K>(array: T[], target: K): number;
export declare function binarySearchFirstIndex<T, K>(array: T[], target: K, get: (element: T) => K): number;
export declare function binarySearchLast<T, K>(array: T[], target: K): T | undefined;
export declare function binarySearchLast<T, K>(array: T[], target: K, get: (element: T) => K): T | undefined;
export declare function binarySearchLastIndex<T, K>(array: T[], target: K): number;
export declare function binarySearchLastIndex<T, K>(array: T[], target: K, get: (element: T) => K): number;
export declare function searchForRange<T, K>(array: T[], target: K): [number, number];
export declare function searchForRange<T, K>(array: T[], target: K, get: (element: T) => K): [number, number];
