import { IfCouldBe, Key, Nil } from '../interfaces'; /** @hidden */ declare type WithDefault = (undefined extends D ? V : Exclude) | (undefined extends V ? D : never); /** * Gets the value at `path` of `object`. If the resolved value is `undefined`, the `defaultValue` is returned in its place. * * Differences from lodash: * - does not handle a dot-separated string for `path` * * Contribution to minified bundle size, when it is the only function imported: * - Lodash: 5,049 bytes * - Micro-dash: 107 bytes */ export declare function get, D = undefined>(object: T, key: K, defaultValue?: D): WithDefault[K], D> | IfCouldBe; export declare function get(object: object, path: [], defaultValue?: D): D; export declare function get, D = undefined>(object: T, path: [K1], defaultValue?: D): WithDefault[K1], D> | IfCouldBe; export declare function get, K2 extends keyof NonNullable[K1], D = undefined>(object: T, path: [K1, K2], defaultValue?: D): WithDefault[K1][K2], D> | IfCouldBe; export declare function get, K2 extends keyof NonNullable[K1], K3 extends keyof NonNullable[K1][K2], D = undefined>(object: T, path: [K1, K2, K3], defaultValue?: D): WithDefault[K1][K2][K3], D> | IfCouldBe; export declare function get, K2 extends keyof NonNullable[K1], K3 extends keyof NonNullable[K1][K2], K4 extends keyof NonNullable[K1][K2][K3], D = undefined>(object: T, path: [K1, K2, K3, K4], defaultValue?: D): WithDefault[K1][K2][K3][K4], D> | IfCouldBe; export declare function get(object: object | Nil, path: Key[], defaultValue?: any): any; export {};