import { Any, List, Misc, Union } from 'ts-toolbelt'; import { NonNullableFlat } from 'ts-toolbelt/out/Object/NonNullable'; type UnionOf = A extends List.List ? A[number] : Union.Exclude; type _PathsRequired = UnionOf<{ [k in keyof O]: k extends K ? O[k] extends Misc.BuiltIn | Misc.Primitive | Ignore ? NonNullableFlat<[...P, k]> : [ Any.Keys ] extends [never] ? NonNullableFlat<[...P, k]> : 12 extends List.Length

? NonNullableFlat<[...P, k]> : _PathsRequired : never; }>; export type Paths = _PathsRequired extends infer X ? Any.Cast> : never; export {};