export type ClassValue = string | false | null | undefined | 0 | 0n | readonly ClassValue[]; export type ClassProps = { class?: ClassValue; className?: never; } | { class?: never; className?: ClassValue; }; export interface Options { twMerge: (...classes: ClassValue[]) => string; } export type Conditions = { readonly [key: string]: ClassValue | Conditions; }; export type UntypedScheme = { $base?: ClassValue; $default?: ClassValue | UntypedScheme; class?: never; className?: never; } & Conditions; type Keys = T extends unknown ? keyof T : never; type Value = T extends unknown ? K extends keyof T ? Exclude : never : never; type RequiredKeys = T extends unknown ? { [K in keyof T]-?: undefined extends T[K] ? never : K; }[keyof T] : never; type Simplify = { [K in keyof T]: T[K]; }; type IsBooleanKey = K extends `${'is' | 'allows'}${infer First}${infer _Rest}` ? First extends '' ? false : 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' extends `${string}${First}${string}` ? true : false : false; type Condition>> = IsBooleanKey extends true ? [V] extends [boolean] ? ClassValue | Scheme

: never : [V] extends [string] ? { [Choice in Extract]?: ClassValue | Scheme

; } & { $default?: ClassValue | Scheme

; } : never; export type Scheme

= Simplify<{ $base?: ClassValue; $default?: ClassValue | Scheme

; class?: never; className?: never; } & { [K in Exclude & string, '$base' | '$default' | 'class' | 'className'>]?: Condition; }>; type Normalize = P extends unknown ? Simplify<{ [K in RequiredKeys

]: P[K]; } & { [K in Exclude>]?: P[K]; } & { [K in Exclude, keyof P>]?: never; }> : never; export type Style

= [RequiredKeys

] extends [never] ? (props?: Normalize

& ClassProps) => string : (props: Normalize

& ClassProps) => string; export type AnyStyle = (props: never) => string; export type StyleArguments = { [K in keyof F]: Parameters extends [props?: object | undefined] ? F[K] : never; }; type WithoutClasses

= P extends unknown ? Omit, 'class' | 'className'> : never; type StyleProps = Parameters extends [] ? object : WithoutClasses[0]>>; type Combine = Simplify<{ [K in RequiredKeys]: Value; } & { [K in Exclude, RequiredKeys>]?: Value; }>; type CombinePair = A extends unknown ? (B extends unknown ? Combine : never) : never; export type CombinedProps = F extends readonly [ infer Head extends AnyStyle, ...infer Tail extends AnyStyle[] ] ? CombinePair, CombinedProps> : number extends F['length'] ? Combine> : object; export {}; //# sourceMappingURL=types.d.ts.map