import type { EnchantmentDesign, DesignEffect, DesignProgress, EquipmentCategory } from '@/lib/game/types';

export interface EquipmentTypeSelectorProps {
  ownedEquipmentTypes: Array<{ id: string; name: string; baseCapacity: number }>;
  selectedEquipmentType: string | null;
  setSelectedEquipmentType: (type: string | null) => void;
  designProgress: DesignProgress | null;
  cancelDesign: () => void;
}

export interface EffectSelectorProps {
  selectedEquipmentType: string | null;
  selectedEffects: DesignEffect[];
  setSelectedEffects: (effects: DesignEffect[]) => void;
  availableEffects: Array<{ id: string; name: string; description: string; baseCapacityCost: number; maxStacks: number }>;
  incompatibleEffects: Array<{ id: string; name: string; description: string; allowedEquipmentCategories: EquipmentCategory[] }>;
  enchantingLevel: number;
  efficiencyBonus: number;
  designProgress: DesignProgress | null;
  addEffect: (effectId: string) => void;
  removeEffect: (effectId: string) => void;
  getIncompatibilityReason: (effect: { id: string; name: string; description: string; allowedEquipmentCategories: EquipmentCategory[] }) => string;
}

export interface SavedDesignsProps {
  completedEnchantmentDesigns: EnchantmentDesign[];
  selectedDesign: string | null;
  setSelectedDesign: (id: string | null) => void;
  deleteDesign: (id: string) => void;
}

export interface DesignFormProps {
  designName: string;
  setDesignName: (name: string) => void;
  selectedEffects: DesignEffect[];
  designCapacityCost: number;
  selectedEquipmentCapacity: number;
  isOverCapacity: boolean;
  designTime: number;
  selectedEquipmentType: string | null;
  handleCreateDesign: () => void;
}
