import type {AttributeVector, ItemAttributeResonance} from './attributes'; import type {TimedBuildBuff} from './build'; import { type EquipmentSlotId, type ItemRarity, type ItemWorldAffinity, WorldType, } from './core'; import type {RuntimeItemMetadata} from './runtimeItem'; export interface InventoryItem { id: string; category: string; name: string; quantity: number; rarity: ItemRarity; tags: string[]; catalogId?: string; iconSrc?: string; description?: string; worldAffinity?: ItemWorldAffinity; equipmentSlotId?: EquipmentSlotId | null; worldProfiles?: Partial>; statProfile?: ItemStatProfile | null; useProfile?: ItemUseProfile | null; buildProfile?: ItemBuildProfile | null; value?: number; attributeResonance?: ItemAttributeResonance | null; runtimeMetadata?: RuntimeItemMetadata | null; } export interface MonsterLootEntry { id: string; item: InventoryItem; dropRate: number; } export interface ItemCatalogEntry { id: string; sourcePath: string; iconSrc: string; name: string; category: string; rarity: ItemRarity; tags: string[]; description: string; worldAffinity: ItemWorldAffinity; equipmentSlotId?: EquipmentSlotId | null; worldProfiles?: Partial>; statProfile?: ItemStatProfile | null; useProfile?: ItemUseProfile | null; buildProfile?: ItemBuildProfile | null; value?: number; attributeResonance?: ItemAttributeResonance | null; runtimeMetadata?: RuntimeItemMetadata | null; } export interface ItemCatalogOverride { name?: string; category?: string; rarity?: ItemRarity; tags?: string[]; description?: string; worldAffinity?: ItemWorldAffinity; equipmentSlotId?: EquipmentSlotId | null; worldProfiles?: Partial>; statProfile?: ItemStatProfile | null; useProfile?: ItemUseProfile | null; buildProfile?: ItemBuildProfile | null; value?: number; attributeResonance?: ItemAttributeResonance | null; runtimeMetadata?: RuntimeItemMetadata | null; } export interface ItemWorldProfile { name: string; description: string; } export interface ItemStatProfile { maxHpBonus?: number; maxManaBonus?: number; outgoingDamageBonus?: number; incomingDamageMultiplier?: number; } export interface ItemUseProfile { hpRestore?: number; manaRestore?: number; cooldownReduction?: number; buildBuffs?: TimedBuildBuff[]; } export interface ItemBuildProfile { role: string; tags: string[]; setId?: string; setName?: string; pieceName?: string; synergy?: string[]; craftTags?: string[]; forgeRank?: number; resonanceVector?: AttributeVector; } export interface EquipmentLoadout { weapon: InventoryItem | null; armor: InventoryItem | null; relic: InventoryItem | null; }