declare type CamelCase = S extends `${infer P1}_${infer P2}${infer P3}` ? `${P1}${Uppercase}${CamelCase}` : S; declare 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 ({} | undefined) ? Array> : T[K] : T[K] extends ({} | undefined) ? S extends true ? T[K] : CamelizeObject : T[K]; }; export declare type Camelize = T extends Array<(infer U)> ? Array> : CamelizeObject; export default function camelize( /** * Value to be camelized */ obj: T, /** * If true, only the top level keys of the obj will be camel cased */ shallow?: S): T extends String ? string : Camelize; export {};