from __future__ import annotations from enum import Enum class MiningOperationType(str, Enum): """Supported mining operation categories.""" OPEN_PIT = "open_pit" UNDERGROUND = "underground" IN_SITU_LEACH = "in_situ_leach" PLACER = "placer" QUARRY = "quarry" MOUNTAINTOP_REMOVAL = "mountaintop_removal" OTHER = "other" class ScenarioStatus(str, Enum): """Lifecycle states for project scenarios.""" DRAFT = "draft" ACTIVE = "active" ARCHIVED = "archived" class FinancialCategory(str, Enum): """Enumeration of cost and revenue classifications.""" CAPITAL_EXPENDITURE = "capex" OPERATING_EXPENDITURE = "opex" REVENUE = "revenue" CONTINGENCY = "contingency" OTHER = "other" class DistributionType(str, Enum): """Supported stochastic distribution families for simulations.""" NORMAL = "normal" TRIANGULAR = "triangular" UNIFORM = "uniform" LOGNORMAL = "lognormal" CUSTOM = "custom" class ResourceType(str, Enum): """Primary consumables and resources used in mining operations.""" DIESEL = "diesel" ELECTRICITY = "electricity" WATER = "water" EXPLOSIVES = "explosives" REAGENTS = "reagents" LABOR = "labor" EQUIPMENT_HOURS = "equipment_hours" TAILINGS_CAPACITY = "tailings_capacity" class CostBucket(str, Enum): """Granular cost buckets aligned with project accounting.""" CAPITAL_INITIAL = "capital_initial" CAPITAL_SUSTAINING = "capital_sustaining" OPERATING_FIXED = "operating_fixed" OPERATING_VARIABLE = "operating_variable" MAINTENANCE = "maintenance" RECLAMATION = "reclamation" ROYALTIES = "royalties" GENERAL_ADMIN = "general_admin" class StochasticVariable(str, Enum): """Domain variables that typically require probabilistic modelling.""" ORE_GRADE = "ore_grade" RECOVERY_RATE = "recovery_rate" METAL_PRICE = "metal_price" OPERATING_COST = "operating_cost" CAPITAL_COST = "capital_cost" DISCOUNT_RATE = "discount_rate" THROUGHPUT = "throughput"