import { ArrayIteratee, ArrayNarrowingIteratee, Cast, IfCouldBe, KeyNarrowingIteratee, Narrow, Nil, ObjectIteratee, ValueNarrowingIteratee } from '../interfaces'; /** @hidden */ declare type DefiniteValueMatches = { [K in keyof T]: T[K] extends O ? T[K] : never; }[keyof T]; /** @hidden */ declare type PossibleValueMatches = { [K in keyof T]: IfCouldBe>; }[keyof T]; /** @hidden */ declare type DefiniteKeyMatches = { [K in keyof T]: Cast extends O ? T[K] : never; }[keyof T]; /** @hidden */ declare type PossibleKeyMatches = { [K in keyof T]: IfCouldBe, O, T[K]>; }[keyof T]; /** * Iterates over elements of `collection`, returning the first element `predicate` returns truthy for. * * Contribution to minified bundle size, when it is the only function imported: * - Lodash: 14,507 bytes * - Micro-dash: 207 bytes */ export declare function find(array: I[] | Nil, predicate: ArrayNarrowingIteratee, fromIndex?: number): Extract | Extract | undefined; export declare function find(array: T[] | Nil, predicate: ArrayIteratee, fromIndex?: number): T | undefined; export declare function find, O, F extends number | undefined = undefined>(object: I, predicate: ValueNarrowingIteratee, fromIndex?: F): PossibleValueMatches | (DefiniteValueMatches extends never ? undefined : never) | IfCouldBe | IfCouldBe; export declare function find, O, F extends number | undefined = undefined>(object: I, predicate: KeyNarrowingIteratee, fromIndex?: F): PossibleKeyMatches | (DefiniteKeyMatches extends never ? undefined : never) | IfCouldBe | IfCouldBe; export declare function find(object: T | Nil, predicate: ObjectIteratee, fromIndex?: number): T[keyof T] | undefined; export {};