import { ArrayIteratee, Cast, IfCouldBe, KeyNarrowingIteratee, Narrow, Nil, ObjectIteratee, ValueNarrowingIteratee } from '../interfaces'; /** @hidden */ declare type DefiniteValueMatches = { [K in keyof T]: T[K] extends O ? K : never; }[keyof T]; /** @hidden */ declare type PossibleValueMatches = { [K in keyof T]: IfCouldBe>; }[keyof T]; /** @hidden */ declare type DefiniteKeyMatch = { [K in keyof T]: Cast extends O ? K : never; }[keyof T]; /** @hidden */ declare type PossibleKeyMatch = { [K in keyof T]: IfCouldBe, O, Narrow, O>>; }[keyof T]; /** * This method is like `find` except that it returns the key of the first element `predicate` returns truthy for instead of the element itself. * * Contribution to minified bundle size, when it is the only function imported: * - Lodash: 13,893 bytes * - Micro-dash: 309 bytes */ export declare function findKey(array: T[], predicate: ArrayIteratee): string | undefined; export declare function findKey, O>(object: I, predicate: ValueNarrowingIteratee): PossibleValueMatches | (DefiniteValueMatches extends never ? undefined : never) | IfCouldBe; export declare function findKey, O>(object: I, predicate: KeyNarrowingIteratee): PossibleKeyMatch | (DefiniteKeyMatch extends never ? undefined : never) | IfCouldBe; export declare function findKey(object: T | Nil, predicate: ObjectIteratee): Cast | undefined; export {};