import type { ConfigRecipes } from "./generated/recipes.gen";
import type { RecipeDefinition, RecipeVariantMap, RecipeVariantProps, SystemRecipeFn } from "./recipe.types";
export type RecipeKey = keyof ConfigRecipes | (string & {});
export interface UseRecipeOptions<K extends RecipeKey> {
    key?: K | undefined;
    recipe?: RecipeDefinition | undefined;
}
export declare function useRecipe<Options extends {
    key: RecipeKey;
    recipe?: RecipeDefinition | undefined;
}>(options: Options): Options["key"] extends keyof ConfigRecipes ? ConfigRecipes[Options["key"]] : SystemRecipeFn<{}, {}>;
export declare function useRecipe<Options extends {
    recipe: RecipeDefinition;
}>(options: Options): Options["recipe"] extends RecipeDefinition<infer T> ? SystemRecipeFn<RecipeVariantProps<Options["recipe"]>, RecipeVariantMap<T>> : never;
