import { NotReadonlyHead, NotReadonlyTail, ReadonlyHead, ReadonlyTail } from '../types/utils.js'; type RecursivelyStringCaseObjectKeysInTuple = T['length'] extends 0 ? [] : [ RecursiveStringCase, StringCaseType>, ...RecursivelyStringCaseObjectKeysInTuple, StringCaseType> ]; type ReadOnlyRecursivelyStringCaseObjectKeysInTuple = T['length'] extends 0 ? readonly [] : readonly [ RecursiveStringCase, StringCaseType>, ...ReadOnlyRecursivelyStringCaseObjectKeysInTuple, StringCaseType> ]; type RecursiveStringCase : T extends any[] ? RecursivelyStringCaseObjectKeysInTuple : T extends object ? { -readonly [key in keyof T as key extends string ? StringCaseString : key]: RecursiveStringCase; } : T> = RT; type StringCasingOptions = 'Camelize' | 'Snakeify' | 'Hyphenize' | 'Pascalize'; export type Camelized = StringCase<'Camelize', T>; export type Snakeified = StringCase<'Snakeify', T>; export type Hyphenized = StringCase<'Hyphenize', T>; export type Pascalized = StringCase<'Pascalize', T>; type StringCase : RecursiveStringCase> = RT; type StringCaseString = StringCaseType extends 'Camelize' ? CamelizeString : StringCaseType extends 'Snakeify' ? SnakeifyString : StringCaseType extends 'Hyphenize' ? HyphenizeString : StringCaseType extends 'Pascalize' ? PascalizeString : never; type InnerCamelizeString = T extends `${infer A}_${infer B}` ? `${A}${InnerCamelizeString>}` : T extends `${infer A}-${infer B}` ? `${A}${InnerCamelizeString>}` : T extends `${infer A} ${infer B}` ? `${A}${InnerCamelizeString>}` : T; type Punctuation = ',' | '.' | '/' | '<' | '>' | '?' | ';' | "'" | ':' | '"' | '[' | ']' | '{' | '}' | '\\' | '|' | '!' | '@' | '#' | '$' | '%' | '^' | '&' | '*' | '(' | ')' | '`'; type InnerCapitalsToCharacterDelimiter = S extends `${infer P extends Punctuation}${infer T}${infer U}` ? `${P}${Lowercase}${InnerCapitalsToCharacterDelimiter}` : S extends `${infer T}${infer U}` ? T extends Capitalize ? T extends Lowercase ? `${T}${InnerCapitalsToCharacterDelimiter}` : `${Delimiter}${Lowercase}${InnerCapitalsToCharacterDelimiter}` : `${T}${InnerCapitalsToCharacterDelimiter}` : S; type SnakeifyString = InnerCapitalsToCharacterDelimiter, '_'>; type HyphenizeString = InnerCapitalsToCharacterDelimiter, '-'>; type PascalizeString = Capitalize>; type CamelizeString = Uncapitalize>; export default function stringCase(target: any, stringCaser: (x: string) => string): any; export {};