import type { SplitWords, JoinWords } from "./utils/index.js"; import type { LowerCase, LowerCaseAll } from "./lower-case.js"; import type { CapitalizeAll } from "./capitalize.js"; export type CamelCaseOptions = { /** * Whether to preserved consecutive uppercase letters. * Default: `true` */ preserveConsecutiveUppercase?: boolean; }; type PreserveConsecutiveUppercase = O extends undefined ? true : O extends { preserveConsecutiveUppercase?: infer PreserveUppercase; } ? PreserveUppercase extends false ? false : true : true; /** * Convert a string type to camelCase. * @example * ```ts * type CamelCaseString = CamelCase<"hello world">; // "helloWorld" * ``` */ export type CamelCase = T extends string ? SplitWords extends [infer First, ...infer Rest] ? First extends string ? Rest extends string[] ? PreserveConsecutiveUppercase extends false ? JoinWords<[LowerCase, ...CapitalizeAll>]> : JoinWords<[LowerCase, ...CapitalizeAll]> : T : never : T : never; /** * Convert a string to camelCase. * @example * ```ts * const camelCaseString = toCamelCase("hello world"); // "helloWorld" * ``` */ export declare function toCamelCase(string: T, options?: O): CamelCase; export {}; //# sourceMappingURL=camel-case.d.ts.map