import { Pred, PredIndexedOptional, PredIndexed } from './_types';
/**
 * Returns the index of the first element in the array where predicate is true, and -1 otherwise.
 * @param items - the array
 * @param fn - the predicate
 * @signature
 *    P.findIndex(items, fn)
 * @signature
 *    P.findIndex(fn)(items)
 * @example
 *    P.findIndex([1, 3, 4, 6], n => n % 2 === 0) // => 2
 *    P.pipe(
 *      [1, 3, 4, 6],
 *      P.findIndex(n => n % 2 === 0)
 *    ) // => 4
 * @category Array, Pipe
 */
export declare function findIndex<T>(array: readonly T[], fn: Pred<T, boolean>): number;
export declare function findIndex<T>(fn: Pred<T, boolean>): (array: readonly T[]) => number;
export declare namespace findIndex {
    function indexed<T>(array: readonly T[], fn: PredIndexed<T, boolean>): T | undefined;
    function indexed<T>(fn: PredIndexed<T, boolean>): (array: readonly T[]) => T | undefined;
    const lazy: (<T>(fn: PredIndexedOptional<T, boolean>) => (value: T, index?: number | undefined, array?: T[] | undefined) => {
        done: boolean;
        hasNext: boolean;
        next: number;
    } | {
        done: boolean;
        hasNext: boolean;
        next?: undefined;
    }) & {
        single: true;
    };
    const lazyIndexed: (<T>(fn: PredIndexedOptional<T, boolean>) => (value: T, index?: number | undefined, array?: T[] | undefined) => {
        done: boolean;
        hasNext: boolean;
        next: number;
    } | {
        done: boolean;
        hasNext: boolean;
        next?: undefined;
    }) & {
        indexed: true;
    } & {
        single: true;
    };
}
//# sourceMappingURL=findIndex.d.ts.map