declare type Curry1<T> = (arr: T[]) => number;
declare type Curry2<T> = {
    (fromIndex: number): Curry1<T>;
    (fromIndex: number, arr: T[]): number;
};
declare type Curry3 = {
    <T>(element: T): Curry2<T>;
    <T>(element: T, fromIndex: number): Curry1<T>;
};
declare type _IndexOf = <T>(element: T, fromIndex: number, arr: T[]) => number;
declare type CurriedIndexOf = _IndexOf & Curry3;
declare type _IndexOfAll = <T>(element: T, arr: T[]) => number;
declare type _IndexOfAll2 = <T>(element: T) => (arr: T[]) => number;
declare type IndexOfAll = _IndexOfAll & _IndexOfAll2;
declare type IndexOf = CurriedIndexOf & {
    all: IndexOfAll;
};
/**
 * Functional wrapper for Array.prototype.indexOf
 *
 * Retrieves the index of the first occurrence of a value in an array.
 *
 * @param element The value to locate in the array
 * @param fromIndex The array index at which to begin the search
 * @param arr Initial array
 * @returns Index of the matching element or -1
 *
 * @method all Version with implicit fromIndex (0).
 */
declare const indexOf: IndexOf;
export { indexOf };
export default indexOf;
