import type { SafeReturnType } from './common' export type ExtractVariantNames = ExtractVariantKeys> type ExtractVariantKeys = T extends object ? ExtractVariant> : never type HasBooleanVariants = T extends Record<'true', any> ? true : T extends Record<'false', any> ? true : false type ExtractSubVariantKeys = T extends object ? HasBooleanVariants extends true ? keyof Omit | boolean | undefined : keyof Omit | undefined : never type ExtractVariant = T extends { variants: infer V } ? { [key in keyof V]?: ExtractSubVariantKeys } : never export type UnistylesVariants = ST extends { useVariants: infer V } ? V extends (variants: infer T) => void ? T : never : never