import type { ActionCategoryHrid, ActionFunctionHrid, ActionType } from '../actions/index.ts'; import type { ItemHrid } from '../items/index.ts'; import type { ExperienceGain, LevelRequirement } from '../shared/types.ts'; import type { SkillHrid } from '../skills/index.ts'; import type { RECIPE_HRIDS } from './constants.ts'; export type RecipeHrid = (typeof RECIPE_HRIDS)[number]; export interface RecipeItem { itemHrid: ItemHrid; count: number; } export interface Recipe { hrid: RecipeHrid; function: ActionFunctionHrid; type: ActionType; category: ActionCategoryHrid; name: string; baseTimeCost: number; experienceGain: ExperienceGain | null; levelRequirement: LevelRequirement | null; inputItems: RecipeItem[] | null; outputItems: RecipeItem[] | null; upgradeItemHrid?: ItemHrid; retainAllEnhancement?: boolean; sortIndex?: number; } export interface TimeModifiers { efficiency: number; toolSpeed: number; teaSpeed: number; teaEfficiency: number; haste: number; taskSpeed: number; houseBonus: number; guildBonus: number; } export interface RecipeTreeNode { itemHrid: ItemHrid; quantity: number; recipe?: Recipe; skillRequirement?: { skillHrid: SkillHrid; level: number; }; totalQuantityNeeded: number; children: RecipeTreeNode[]; depth: number; isBaseMaterial: boolean; totalCraftingTime?: number; isUpgradeInput?: boolean; } export interface RecipeTreeStats { totalUniqueItems: number; totalQuantity: number; maxDepth: number; baseMaterials: { itemHrid: ItemHrid; totalQuantity: number; }[]; requiredSkills: { skillHrid: SkillHrid; minLevel: number; }[]; totalCraftingTime: number; recipesBySkill: Partial>; } //# sourceMappingURL=types.d.ts.map