export type KeyPath = KeyPath_; type KeyPath_ = D extends S['length'] ? never : T extends object ? { [K in keyof T]-?: K extends string ? `${K}` | Join> : K extends number ? `[${K}]` | Join<`[${K}]`, KeyPath_> : never; }[keyof T] : ''; type Join = K extends string | number ? P extends string | number ? P extends `[${string}` ? `${K}${P}` : `${K}${'' extends P ? '' : '.'}${P}` : never : never; export {};