import { ClassDictionary, ClassProp, ClassValue, Pretty, RecipeCompoundSelection, RecipeCompoundVariant, RecipeSelection, RecipeVariantRecord, SlotRecipeCompoundVariant, SlotRecipeVariantRecord } from './types.js';
export declare const isEmpty: (obj: Record<PropertyKey, any>) => boolean;
export declare const falsyToString: <T>(value: T) => string | T;
/**
 * Merges two given objects, Props take precedence over Defaults
 * @param props
 * @param defaults
 * @returns
 */
export declare const mergeDefaultsAndProps: <V extends RecipeVariantRecord, P extends RecipeSelection<V> & ClassProp, D extends RecipeSelection<V>>(props: P | undefined, defaults: D) => Record<keyof V, NonNullable<ClassValue>>;
/**
 * Returns a list of class variants based on the given Props and Defaults
 * @param props
 * @param variants
 * @param defaults
 * @returns
 */
export declare const getVariantClassNames: <V extends RecipeVariantRecord, P extends RecipeSelection<V> & ClassProp, D extends RecipeSelection<V>>(props: P | undefined, variants: V, defaults?: D) => string;
/**
 * Returns selected compound className variants based on Props and Defaults
 * @param compoundVariants
 * @param defaultsAndProps
 * @returns
 */
export declare const getCompoundVariantClassNames: <V extends RecipeVariantRecord>(compoundVariants: Pretty<RecipeCompoundVariant<RecipeCompoundSelection<V>>>[], defaultsAndProps: ClassDictionary) => string;
/**
 * Returns a list of class variants based on the given Props and Defaults for the required Slot
 * @param props
 * @param slot
 * @param variants
 * @param defaults
 * @returns
 */
export declare const getVariantClassNamesBySlot: <S extends string, V extends SlotRecipeVariantRecord<S>, P extends RecipeSelection<V> & ClassProp, D extends RecipeSelection<V>>(props: P | undefined, slot: S, variants: V, defaults?: D) => string;
/**
 * Returns selected compound className variants based on Props and Defaults for the required Slot
 * @param slot
 * @param compoundVariants
 * @param defaultsAndProps
 * @returns
 */
export declare const getCompoundVariantClassNamesBySlot: <S extends string, V extends SlotRecipeVariantRecord<S> = SlotRecipeVariantRecord<S>>(slot: S, compoundVariants: Pretty<SlotRecipeCompoundVariant<S, RecipeCompoundSelection<V>>>[], defaultsAndProps: ClassDictionary) => string;
//# sourceMappingURL=utils.d.ts.map