import type { Beacon, Machine, Module } from "../../scripts/factorio-dump/process-data.models"; export interface InserterConfig { /** Used to group items onto mixed belts (e.g., assigning "in-1" to both Iron and Copper) */ inserterId?: string; presetId: string; swingTicks: number; stackSize: number; } export interface ClockConfig { /** Configurations for inputs, keyed by the item's name */ inputs: Record; /** Configurations for outputs, keyed by the item's name */ outputs: Record; /** Target number of machines to scale the final inserter blueprint */ machineCount?: number; } export interface BeaconGroup { id?: string; beacon: Beacon; beaconQualityLevel?: number; count: number; modules: Array<{ module: Module; qualityLevel: number }>; } export interface MachineSetup { machine: Machine; machineQualityLevel?: number; // 0 = Normal, 1 = Uncommon, 2 = Rare, 3 = Epic, 5 = Legendary machineModules: Array<{ module: Module; qualityLevel: number }>; beacons: Array; } export interface CalculatedTimings { actualCraftingSpeed: number; productivityBonus: number; singleCraftTicks: number; craftsPerSecond: number; /** The maximum multiplier of a recipe's base ingredients an assembler will buffer before stalling input inserters */ overloadMultiplier: number; } export interface BatchPlan { craftsPerCycle: number; durationTicks: number; timings: CalculatedTimings; inputs: Record; outputs: Record; }