import * as M from "./factorio-dump.models.ts"; import type { Group } from "./helpers/groups.helper.ts"; import type { Recipe } from "./helpers/recipes.helper.ts"; export interface ModList { mods: { name: string; enabled: boolean }[]; } export type EffectType = "speed" | "productivity" | "consumption" | "pollution" | "quality"; export const allEffects: EffectType[] = ["consumption", "speed", "productivity", "pollution", "quality"]; type Entities = Record; export interface DataRawDump { "agricultural-tower"?: Entities; ammo: Entities; armor: Entities; "assembling-machine": Entities; asteroid?: Entities; "asteroid-chunk": Entities; "asteroid-collector"?: Entities; beacon: Entities; boiler: Entities; capsule: Entities; "cargo-wagon": Entities; fluid: Entities; "fluid-wagon": Entities; furnace: Entities; gun: Entities; item: Entities; "item-group": Entities; "item-subgroup": Entities; "item-with-entity-data": Entities; lab: Entities; "mining-drill": Entities; module: Entities; "offshore-pump": Entities; planet: Entities; plant: Entities; pump: Entities; quality: Entities; "rail-planner": Entities; reactor: Entities; recipe: Entities; "recipe-category": Entities; "repair-tool": Entities; resource: Entities; "rocket-silo": Entities; "rocket-silo-rocket": Entities; "selection-tool": Entities; "space-connection"?: Entities; "space-location": Entities; "space-platform-starter-pack"?: Entities; "spidertron-remote": Entities; surface: Entities; "surface-property": Entities; technology: Entities; tile: Entities; tool: Entities; "transport-belt": Entities; "utility-constants": { default: M.UtilityConstants }; "virtual-signal": Entities; } export interface Locale { names: Entities; } export type Item = { name: string; icon?: string; subgroup: string; order?: string; }; export type Machine = { name: string; icon?: string; allowed_effects?: string | Array; crafting_categories: string[]; crafting_speed: number; selection_box?: M.BoundingBox; module_slots?: number; effect_receiver?: M.EffectReceiver; }; export type Module = { name: string; icon?: string; subgroup?: string; category: string; tier: number; order?: string; effect?: M.Effect; }; export type RecipeCategory = { name: string; subgroup?: string; order?: string; }; export type Quality = M.QualityPrototype & { icon: string; }; export type Signal = { name: string; icon?: string; subgroup: string; order?: string; }; export type ProcessedData = { machines: Machine[]; qualityLevels: Quality[]; modules: Module[]; recipeCategories: RecipeCategory[]; recipeGroup: Group[]; signalGroup: Group[]; };