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