/**
 * @see https://newbedev.com/typescript-convert-generic-object-from-snake-to-camel-case
 */
declare type SnakeCase<S extends string> = S extends `${infer T}${infer U}` ? `${T extends Capitalize<T> ? "_" : ""}${Lowercase<T>}${SnakeCase<U>}` : S;
export declare type Snakify<T> = {
    [K in keyof T as SnakeCase<string & K>]: T[K] extends Array<infer U> ? U extends {} ? Array<Snakify<U>> : T[K] : T[K] extends {} ? Snakify<T[K]> : T[K];
};
export default function snakify<T>(obj: T): T extends String ? string : Snakify<T>;
export {};
