type ValidKeys = keyof T extends string ? keyof T : never; export type KeySerial> = ValidKeys | { [key in ValidKeys]: T[key] extends unknown[] ? never : T[key] extends Record ? `${key}.${KeySerial}` : never; }[ValidKeys]; export type ExtractKeySerialType, Serial extends string> = Serial extends `${infer Key}.${infer Rest}` ? T[Key] extends Record ? ExtractKeySerialType : never : T[Serial]; type Get = { , Serial extends KeySerial>(object: T, keySerial: Serial): ExtractKeySerialType; (object: unknown, keySerial: string): unknown; }; export declare const get: Get; export declare const getSafe: Get; /** Same to `get()` but with the strict type definition only to enable IntelliSense. */ export declare const getValue: , Serial extends KeySerial>(object: T, keySerial: Serial) => ExtractKeySerialType; export {};