declare type Splitter = "-" | "_" | "/" | "."; declare type FirstOfString = S extends `${infer F}${string}` ? F : never; declare type RemoveFirstOfString = S extends `${string}${infer R}` ? R : never; declare type IsUpper = S extends Uppercase ? true : false; declare type IsLower = S extends Lowercase ? true : false; declare type SameLetterCase = IsUpper extends IsUpper ? true : IsLower extends IsLower ? true : false; declare type CapitalizedWords = T extends readonly [infer F extends string, ...infer R extends string[]] ? CapitalizedWords}`> : Accumulator; declare type JoinLowercaseWords = T extends readonly [infer F extends string, ...infer R extends string[]] ? Accumulator extends "" ? JoinLowercaseWords}`> : JoinLowercaseWords}`> : Accumulator; declare type LastOfArray = T extends [...any, infer R] ? R : never; declare type RemoveLastOfArray = T extends [...infer F, any] ? F : never; declare type SplitByCase = string extends Separator ? string[] : T extends `${infer F}${infer R}` ? [LastOfArray] extends [never] ? SplitByCase : LastOfArray extends string ? R extends "" ? SplitByCase, `${LastOfArray}${F}`]> : SameLetterCase> extends true ? F extends Separator ? FirstOfString extends Separator ? SplitByCase : IsUpper> extends true ? SplitByCase, Separator, [...Accumulator, FirstOfString]> : SplitByCase : SplitByCase, `${LastOfArray}${F}`]> : IsLower extends true ? SplitByCase, Separator, [...RemoveLastOfArray, `${LastOfArray}${F}`, FirstOfString]> : SplitByCase : never : Accumulator extends [] ? T extends "" ? [] : string[] : Accumulator; declare type PascalCase = string extends T ? string : string[] extends T ? string : T extends string ? SplitByCase extends readonly string[] ? CapitalizedWords> : never : T extends readonly string[] ? CapitalizedWords : never; declare type CamelCase = string extends T ? string : string[] extends T ? string : Uncapitalize>; declare type JoinByCase = string extends T ? string : string[] extends T ? string : T extends string ? SplitByCase extends readonly string[] ? JoinLowercaseWords, Joiner> : never : T extends readonly string[] ? JoinLowercaseWords : never; declare function isUppercase(char?: string): boolean | undefined; declare function splitByCase(string_: T): SplitByCase; declare function splitByCase(string_: T, separators: Separator): SplitByCase; declare function upperFirst(string_: S): Capitalize; declare function lowerFirst(string_: S): Uncapitalize; declare function pascalCase(): ""; declare function pascalCase(string_: T): PascalCase; declare function camelCase(): ""; declare function camelCase(string_: T): CamelCase; declare function kebabCase(): ""; declare function kebabCase(string_: T): JoinByCase; declare function kebabCase(string_: T, joiner: Joiner): JoinByCase; declare function snakeCase(): ""; declare function snakeCase(string_: T): JoinByCase; export { camelCase, isUppercase, kebabCase, lowerFirst, pascalCase, snakeCase, splitByCase, upperFirst };