type Falsy = undefined | null | false | ""; type RegisteredStyle = number & { __registeredStyleBrand: T; }; type Primitive = string | number | boolean | bigint | symbol | null | undefined | Date | RegExp | false | true; interface RecursiveArray extends Array | RecursiveArray> { } export type StyleProp = T | RegisteredStyle | RecursiveArray | Falsy> | Falsy; type UnwrapRecursiveArray = Depth["length"] extends MaxDepth ? T : T extends (infer I)[] ? UnwrapRecursiveArray : T; type RemoveFalsy = Exclude; type RemoveRegisteredStyle = T extends RegisteredStyle ? never : T; type ExtractStyleObject = RemoveRegisteredStyle ? U : T>>>; type IsPlainObject = T extends object ? T extends Function ? false : T extends readonly any[] ? false : true : false; type Split = T extends `${infer Head}${Delimiter}${infer Tail}` ? [Head, ...Split] : [T]; type ParsePath = T extends `${infer Head}[${number}]${infer Rest}` ? [Head, number, ...ParsePath] : Split; type ResolvePath = Parts extends [ infer Head, ...infer Rest ] ? Head extends keyof T ? ResolvePath : Head extends number ? T extends (infer U)[] ? ResolvePath : never : never : T; export type DotNotation = Depth["length"] extends MaxDepth ? never : Key extends string ? unknown extends T[Key] ? Key | `${Key}.${string}` : ExtractStyleObject> extends infer Cleaned ? Cleaned extends Primitive ? Key : Cleaned extends readonly (infer E)[] ? E extends Primitive ? Key | `${Key}[number]` : Key | `${Key}[number]` | `${Key}[number].${DotNotation}` : IsPlainObject extends true ? Key | `${Key}.${DotNotation}` : Key : never : never; export type ResolveDotPath = ResolvePath>; export {}; //# sourceMappingURL=dot-notation.types.d.ts.map