import type { UpperCaseCharacters, WordSeparators } from './types'; type UpperCaseToLowerCase = T extends Uppercase ? Lowercase : T; type SplitIncludingDelimiters_ = Source extends '' ? [] : Source extends `${infer FirstPart}${Delimiter}${infer SecondPart}` ? Source extends `${FirstPart}${infer UsedDelimiter}${SecondPart}` ? UsedDelimiter extends Delimiter ? Source extends `${infer FirstPart}${UsedDelimiter}${infer SecondPart}` ? [ ...SplitIncludingDelimiters, UsedDelimiter, ...SplitIncludingDelimiters ] : never : never : never : [Source]; type SplitIncludingDelimiters = SplitIncludingDelimiters_, Delimiter>; type StringPartToDelimiterCase = StringPart extends UsedWordSeparators ? Delimiter : Start extends true ? Lowercase : StringPart extends UsedUpperCaseCharacters ? `${Delimiter}${Lowercase}` : StringPart; type StringArrayToDelimiterCase = Parts extends [`${infer FirstPart}`, ...infer RemainingParts] ? `${StringPartToDelimiterCase}${StringArrayToDelimiterCase}` : Parts extends [string] ? string : ''; type DelimiterCase = string extends Value ? Value : Value extends string ? StringArrayToDelimiterCase, true, WordSeparators, UpperCaseCharacters, Delimiter> : Value; type SnakeCase = DelimiterCase; /** * snake cases the provided string * @example * snakeCase('helloWorld') * // returns 'hello_world' */ export default function snakeCase(str: T): SnakeCase; export {}; //# sourceMappingURL=snakeCase.d.ts.map