export type Camelify = T extends string ? StringCamelify : T extends object ? ObjectCamelify : T; type StringCamelify = S extends `${infer P1}${Sep}${infer P2}${infer P3}` ? `${P1}${Uppercase}${StringCamelify}` : S; type ObjectCamelify = O extends Array ? Array> : O extends object ? { [K in keyof O as StringCamelify]: Shallow extends true ? O[K] : ObjectCamelify; } : O; export type Snakify = T extends string ? StringSnakify : T extends object ? ObjectSnakify : T; type StringSnakify = FixStringSnakeCase, Sep>; type StringSnakifyFirstStep = S extends `${infer A}${infer B}` ? `${A extends Sep ? "" : A extends Capitalize ? Sep : ""}${Lowercase}${StringSnakifyFirstStep}` : S; type FixStringSnakeCase = S extends `${infer A}${infer B}` ? `${A extends Sep ? "" : A}${B}` : S; type ObjectSnakify = O extends Array ? Array> : O extends object ? { [K in keyof O as StringSnakify]: Shallow extends true ? O[K] : ObjectSnakify; } : O; declare const defaultCaseSeparator: "_"; export declare function camelify(U: U, Sep?: Sep): Camelify; export declare function camelify(U: U, Shallow: Shallow, Sep?: Sep): Camelify; export declare function camelify(S: S, Sep?: Sep): Camelify; export declare function camelify(O: O, Sep?: Sep): Camelify; export declare function camelify(O: O, Shallow: Shallow, Sep?: Sep): Camelify; export declare function snakify(U: U, Sep?: Sep): Snakify; export declare function snakify(U: U, Shallow: Shallow, Sep?: Sep): Snakify; export declare function snakify(S: S, Sep?: Sep): Snakify; export declare function snakify(O: O, Sep?: Sep): Snakify; export declare function snakify(O: O, Shallow: Shallow, Sep?: Sep): Snakify; export {};