export type CamelCase = S extends `${infer P1}_${infer P2}${infer P3}` ? `${P1}${Uppercase}${CamelCase}` : S; export type CamelizeObject = { [K in keyof T as Uncapitalize>]: T[K] extends Date ? T[K] : T[K] extends RegExp ? T[K] : T[K] extends Array ? U extends object | undefined ? Array> : T[K] : T[K] extends object | undefined ? S extends true ? T[K] : CamelizeObject : T[K]; }; export type Camelize = T extends Array ? Array> : CamelizeObject; export declare function camelize(obj: T, shallow?: S): T extends string ? string : Camelize; export declare function snakelize(obj: T, shallow?: S): T extends string ? string : any;