declare type GetLevel4Property = Key1 extends keyof Model ? Key2 extends keyof Model[Key1] ? Key3 extends keyof Model[Key1][Key2] ? Key4 extends keyof Model[Key1][Key2][Key3] ? { [K in Key1]: { [K2 in Key2]: { [K3 in Key3]: { [K4 in Key4]: Model[Key1][Key2][Key3][Key4]; }; }; }; } : never : never : never : never; declare type GetLevel3Property = Key1 extends keyof Model ? Key2 extends keyof Model[Key1] ? Key3 extends keyof Model[Key1][Key2] ? { [K in Key1]: { [K2 in Key2]: { [K3 in Key3]: Model[Key1][Key2][Key3]; }; }; } : never : never : never; declare type GetLevel2Property = Key1 extends keyof Model ? Key2 extends keyof Model[Key1] ? { [K in Key1]: { [K2 in Key2]: Model[Key1][Key2]; }; } : never : never; declare type GetLevel1Property = Key1 extends keyof Model ? { [K in Key1]: Model[Key1]; } : never; export declare type GetNestedProperty = T extends '' ? {} : T extends `${infer Level4Part1}.${infer Level4Part2}.${infer Level4Part3}.${infer Level4Part4}` ? GetLevel4Property : T extends `${infer Level3Part1}.${infer Level3Part2}.${infer Level3Part3}` ? GetLevel3Property : T extends `${infer Level2Part1}.${infer Level2Part2}` ? GetLevel2Property : GetLevel1Property; declare type GetLevel4PropertyType = Key1 extends keyof Model ? Key2 extends keyof Model[Key1] ? Key3 extends keyof Model[Key1][Key2] ? Key4 extends keyof Model[Key1][Key2][Key3] ? Model[Key1][Key2][Key3][Key4] : never : never : never : never; declare type GetLevel3PropertyType = Key1 extends keyof Model ? Key2 extends keyof Model[Key1] ? Key3 extends keyof Model[Key1][Key2] ? Model[Key1][Key2][Key3] : never : never : never; declare type GetLevel2PropertyType = Key1 extends keyof Model ? Key2 extends keyof Model[Key1] ? Model[Key1][Key2] : never : never; declare type GetLevel1PropertyType = Key1 extends keyof Model ? Model[Key1] : never; export declare type GetNestedPropertyType = T extends '' ? {} : T extends `${infer Level4Part1}.${infer Level4Part2}.${infer Level4Part3}.${infer Level4Part4}` ? GetLevel4PropertyType : T extends `${infer Level3Part1}.${infer Level3Part2}.${infer Level3Part3}` ? GetLevel3PropertyType : T extends `${infer Level2Part1}.${infer Level2Part2}` ? GetLevel2PropertyType : GetLevel1PropertyType; export {};