declare type ValueOf = T extends { value: infer U; } ? U : T extends { value?: infer V; } ? V | undefined : T; declare type Nullable = T extends undefined ? undefined : T extends null ? null : never; declare type Lvl0 = NonNullable>; declare type Lvl1> = NonNullable[K0]>>; declare type Lvl2, K1 extends keyof Lvl1> = NonNullable[K1]>>; declare type Lvl3, K1 extends keyof Lvl1, K2 extends keyof Lvl2> = NonNullable[K2]>>; declare type Lvl4, K1 extends keyof Lvl1, K2 extends keyof Lvl2, K3 extends keyof Lvl3> = NonNullable[K3]>>; declare type Lvl5, K1 extends keyof Lvl1, K2 extends keyof Lvl2, K3 extends keyof Lvl3, K4 extends keyof Lvl4> = NonNullable[K4]>>; declare type Lvl6, K1 extends keyof Lvl1, K2 extends keyof Lvl2, K3 extends keyof Lvl3, K4 extends keyof Lvl4, K5 extends keyof Lvl5> = NonNullable[K5]>>; declare type Lvl7, K1 extends keyof Lvl1, K2 extends keyof Lvl2, K3 extends keyof Lvl3, K4 extends keyof Lvl4, K5 extends keyof Lvl5, K6 extends keyof Lvl6> = NonNullable[K6]>>; declare type Lvl8, K1 extends keyof Lvl1, K2 extends keyof Lvl2, K3 extends keyof Lvl3, K4 extends keyof Lvl4, K5 extends keyof Lvl5, K6 extends keyof Lvl6, K7 extends keyof Lvl7> = NonNullable[K7]>>; declare type Lvl9, K1 extends keyof Lvl1, K2 extends keyof Lvl2, K3 extends keyof Lvl3, K4 extends keyof Lvl4, K5 extends keyof Lvl5, K6 extends keyof Lvl6, K7 extends keyof Lvl7, K8 extends keyof Lvl8> = NonNullable[K8]>>; export declare function getPropValue(obj: T): ValueOf | Nullable>; export declare function getPropValue>(obj: T, k0: K0): ValueOf[K0]> | Nullable>; export declare function getPropValue, K1 extends keyof Lvl1>(obj: T, k0: K0, k1: K1): ValueOf[K1]> | Nullable> | Nullable[K0]>>; export declare function getPropValue, K1 extends keyof Lvl1, K2 extends keyof Lvl2>(obj: T, k0: K0, k1: K1, k2: K2): ValueOf[K2]> | Nullable> | Nullable[K0]>> | Nullable[K1]>>; export declare function getPropValue, K1 extends keyof Lvl1, K2 extends keyof Lvl2, K3 extends keyof Lvl3>(obj: T, k0: K0, k1: K1, k2: K2, k3: K3): ValueOf[K3]> | Nullable> | Nullable[K0]>> | Nullable[K1]>> | Nullable[K2]>>; export declare function getPropValue, K1 extends keyof Lvl1, K2 extends keyof Lvl2, K3 extends keyof Lvl3, K4 extends keyof Lvl4>(obj: T, k0: K0, k1: K1, k2: K2, k3: K3, k4: K4): ValueOf[K4]> | Nullable> | Nullable[K0]>> | Nullable[K1]>> | Nullable[K2]>> | Nullable[K3]>>; export declare function getPropValue, K1 extends keyof Lvl1, K2 extends keyof Lvl2, K3 extends keyof Lvl3, K4 extends keyof Lvl4, K5 extends keyof Lvl5>(obj: T, k0: K0, k1: K1, k2: K2, k3: K3, k4: K4, k5: K5): ValueOf[K5]> | Nullable> | Nullable[K0]>> | Nullable[K1]>> | Nullable[K2]>> | Nullable[K3]>> | Nullable[K4]>>; export declare function getPropValue, K1 extends keyof Lvl1, K2 extends keyof Lvl2, K3 extends keyof Lvl3, K4 extends keyof Lvl4, K5 extends keyof Lvl5, K6 extends keyof Lvl6>(obj: T, k0: K0, k1: K1, k2: K2, k3: K3, k4: K4, k5: K5, k6: K6): ValueOf[K6]> | Nullable> | Nullable[K0]>> | Nullable[K1]>> | Nullable[K2]>> | Nullable[K3]>> | Nullable[K4]>> | Nullable[K5]>>; export declare function getPropValue, K1 extends keyof Lvl1, K2 extends keyof Lvl2, K3 extends keyof Lvl3, K4 extends keyof Lvl4, K5 extends keyof Lvl5, K6 extends keyof Lvl6, K7 extends keyof Lvl7>(obj: T, k0: K0, k1: K1, k2: K2, k3: K3, k4: K4, k5: K5, k6: K6, k7: K7): ValueOf[K7]> | Nullable> | Nullable[K0]>> | Nullable[K1]>> | Nullable[K2]>> | Nullable[K3]>> | Nullable[K4]>> | Nullable[K5]>> | Nullable[K6]>>; export declare function getPropValue, K1 extends keyof Lvl1, K2 extends keyof Lvl2, K3 extends keyof Lvl3, K4 extends keyof Lvl4, K5 extends keyof Lvl5, K6 extends keyof Lvl6, K7 extends keyof Lvl7, K8 extends keyof Lvl8>(obj: T, k0: K0, k1: K1, k2: K2, k3: K3, k4: K4, k5: K5, k6: K6, k7: K7, k8: K8): ValueOf[K8]> | Nullable> | Nullable[K0]>> | Nullable[K1]>> | Nullable[K2]>> | Nullable[K3]>> | Nullable[K4]>> | Nullable[K5]>> | Nullable[K6]>> | Nullable[K7]>>; export declare function getPropValue, K1 extends keyof Lvl1, K2 extends keyof Lvl2, K3 extends keyof Lvl3, K4 extends keyof Lvl4, K5 extends keyof Lvl5, K6 extends keyof Lvl6, K7 extends keyof Lvl7, K8 extends keyof Lvl8, K9 extends keyof Lvl9>(obj: T, k0: K0, k1: K1, k2: K2, k3: K3, k4: K4, k5: K5, k6: K6, k7: K7, k8: K8, k9: K9): ValueOf[K9]> | Nullable> | Nullable[K0]>> | Nullable[K1]>> | Nullable[K2]>> | Nullable[K3]>> | Nullable[K4]>> | Nullable[K5]>> | Nullable[K6]>> | Nullable[K7]>> | Nullable[K8]>>; export {};