import { BuildingSummary } from './body'; import { ServerDate } from '.'; import type { components } from './schema'; export interface Building { id: number; name: string; image: string; level: number; x: number; y: number; food_hour: number; food_capacity: number; energy_hour: number; energy_capacity: number; ore_hour: number; ore_capacity: number; water_hour: number; water_capacity: number; waste_hour: number; waste_capacity: number; happiness_hour: number; efficiency: number; url: string; // Essentia Vein drain_capable?: number; /** * Present while the building is mid-task (theme-park operating hours, a * recycling run, an archaeology dig, ...). `searching` names the ore an * archaeology dig is looking for. */ work?: { seconds_remaining: number; start: ServerDate; end: ServerDate; searching?: string; }; repair_costs: { food: number; water: number; energy: number; ore: number; }; downgrade: { can: number; reason: [number, string]; image: string; }; upgrade: { can: number; reason: [number, string]; // The server sends a resource key only when its cost is non-zero; `time` // is always present. (A plan-backed upgrade sends `halls` instead.) cost: { food?: number; water?: number; energy?: number; waste?: number; ore?: number; time: number; halls?: number; }; production: { food_hour: number; food_capacity: number; energy_hour: number; energy_capacity: number; ore_hour: number; ore_capacity: number; water_hour: number; water_capacity: number; waste_hour: number; waste_capacity: number; happiness_hour: number; }; image: string; }; } export interface ViewParams { building_id: number; } export interface ViewResponse { building: Building; status: { server: components['schemas']['server_status']; empire?: components['schemas']['empire_status']; body?: components['schemas']['body_status']; }; } export interface UpgradeParams { building_id: number; } export interface UpgradeResponse { building: { id: number; pending_build: { seconds_remaining: number; start: ServerDate; end: ServerDate; }; level: number; }; status: { server: components['schemas']['server_status']; empire?: components['schemas']['empire_status']; body?: components['schemas']['body_status']; }; } export interface DowngradeParams { building_id: number; } export interface DowngradeResponse { building: Building; status: { server: components['schemas']['server_status']; empire?: components['schemas']['empire_status']; body?: components['schemas']['body_status']; }; buildings: { [index: string]: BuildingSummary; }; } export interface DemolishParams { building_id: number; } export interface DemolishResponse { /** Untested - no test demolishes a building. Shape per @tlecommunity/api-spec. */ status: { server: components['schemas']['server_status']; empire?: components['schemas']['empire_status']; body?: components['schemas']['body_status']; }; buildings: { [index: string]: BuildingSummary; }; } export interface BuildParams { body_id: number; x: number; y: number; } export interface BuildResponse { building: { id: number; level: number; pending_build: { seconds_remaining: number; start: ServerDate; end: ServerDate; }; }; status: { server: components['schemas']['server_status']; empire?: components['schemas']['empire_status']; body?: components['schemas']['body_status']; }; buildings: { [index: string]: BuildingSummary; }; } export interface RepairParams { building_id: number; } export interface RepairResponse { building: Building; status: { server: components['schemas']['server_status']; empire?: components['schemas']['empire_status']; body?: components['schemas']['body_status']; }; buildings: { [index: string]: BuildingSummary; }; } export interface GetStatsForLevelParams { building_id: number; level: number; } export interface GetStatsForLevelResponse { building: { id: number; name: string; image: string; level: number; food_hour: number; food_capacity: number; energy_hour: number; energy_capacity: number; ore_hour: number; ore_capacity: number; water_hour: number; water_capacity: number; waste_hour: number; waste_capacity: number; happiness_hour: number; upgrade: { cost: { food: number; water: number; energy: number; waste: number; ore: number; time: number; halls: number; }; production: { food_hour: number; food_capacity: number; energy_hour: number; energy_capacity: number; ore_hour: number; ore_capacity: number; water_hour: number; water_capacity: number; waste_hour: number; waste_capacity: number; happiness_hour: number; }; image: string; }; }; status: { server: components['schemas']['server_status']; empire?: components['schemas']['empire_status']; body?: components['schemas']['body_status']; }; }