export interface FactionPlanningStateSnapshot { militaryShipCount: number; minerShipCount: number; transportShipCount: number; constructorShipCount: number; controlledSystemCount: number; targetSystemCount: number; hasShipFactory: boolean; oreStockpile: number; refinedMetalsAvailableStock: number; refinedMetalsUsageRate: number; refinedMetalsProjectedProductionRate: number; refinedMetalsProjectedNetRate: number; refinedMetalsLevelSeconds: number; refinedMetalsLevel: string; hullpartsAvailableStock: number; hullpartsUsageRate: number; hullpartsProjectedProductionRate: number; hullpartsProjectedNetRate: number; hullpartsLevelSeconds: number; hullpartsLevel: string; claytronicsAvailableStock: number; claytronicsUsageRate: number; claytronicsProjectedProductionRate: number; claytronicsProjectedNetRate: number; claytronicsLevelSeconds: number; claytronicsLevel: string; waterAvailableStock: number; waterUsageRate: number; waterProjectedProductionRate: number; waterProjectedNetRate: number; waterLevelSeconds: number; waterLevel: string; } export interface FactionStrategicPrioritySnapshot { goalName: string; priority: number; } export interface FactionCommoditySignalSnapshot { itemId: string; availableStock: number; onHand: number; productionRatePerSecond: number; committedProductionRatePerSecond: number; usageRatePerSecond: number; netRatePerSecond: number; projectedNetRatePerSecond: number; levelSeconds: number; level: string; projectedProductionRatePerSecond: number; buyBacklog: number; reservedForConstruction: number; } export interface FactionThreatSignalSnapshot { scopeId: string; scopeKind: string; enemyShipCount: number; enemyStationCount: number; } export interface FactionBlackboardSnapshot { planCycle: number; updatedAtUtc: string; targetWarshipCount: number; hasWarIndustrySupplyChain: boolean; hasShipyard: boolean; hasActiveExpansionProject: boolean; activeExpansionCommodityId?: string | null; activeExpansionModuleId?: string | null; activeExpansionSiteId?: string | null; activeExpansionSystemId?: string | null; enemyFactionCount: number; enemyShipCount: number; enemyStationCount: number; militaryShipCount: number; minerShipCount: number; transportShipCount: number; constructorShipCount: number; controlledSystemCount: number; commoditySignals: FactionCommoditySignalSnapshot[]; threatSignals: FactionThreatSignalSnapshot[]; } export interface FactionPlanStepSnapshot { id: string; kind: string; status: string; priority: number; commodityId?: string | null; moduleId?: string | null; targetFactionId?: string | null; targetSiteId?: string | null; blockingReason?: string | null; notes?: string | null; lastEvaluatedCycle: number; dependencyStepIds: string[]; requiredFacts: string[]; producedFacts: string[]; assignedAssets: string[]; issuedTaskIds: string[]; } export interface FactionIssuedTaskSnapshot { id: string; kind: string; state: string; objectiveId: string; stepId: string; priority: number; shipRole?: string | null; commodityId?: string | null; moduleId?: string | null; targetFactionId?: string | null; targetSystemId?: string | null; targetSiteId?: string | null; createdAtCycle: number; updatedAtCycle: number; blockingReason?: string | null; notes?: string | null; assignedAssets: string[]; } export interface FactionObjectiveSnapshot { id: string; kind: string; state: string; priority: number; parentObjectiveId?: string | null; targetFactionId?: string | null; targetSystemId?: string | null; targetSiteId?: string | null; targetRegionId?: string | null; commodityId?: string | null; moduleId?: string | null; budgetWeight: number; slotCost: number; createdAtCycle: number; updatedAtCycle: number; invalidationReason?: string | null; blockingReason?: string | null; prerequisiteObjectiveIds: string[]; assignedAssets: string[]; steps: FactionPlanStepSnapshot[]; } export interface FactionSnapshot { id: string; label: string; color: string; credits: number; populationTotal: number; oreMined: number; goodsProduced: number; shipsBuilt: number; shipsLost: number; defaultPolicySetId?: string | null; strategicAssessment?: FactionPlanningStateSnapshot | null; strategicPriorities?: FactionStrategicPrioritySnapshot[] | null; blackboard?: FactionBlackboardSnapshot | null; objectives?: FactionObjectiveSnapshot[] | null; issuedTasks?: FactionIssuedTaskSnapshot[] | null; } export interface FactionDelta extends FactionSnapshot {}