type AnvilCPU = { allocated: number; cores: number; hosts: { [hostUuid: string]: { cores: number; model: string; name: string; threads: number; uuid: string; vendor: string; }; }; threads: number; }; type AnvilMemory = { allocated: string; reserved: string; total: string; }; type AnvilMemoryCalcable = { allocated: bigint; reserved: bigint; total: bigint; }; type AnvilNetworkBondLink = { link_name: string; link_uuid: string; link_speed: number; link_state: 'optimal' | 'degraded' | 'down'; is_active: boolean; }; type AnvilNetworkHostBond = { bond_name: string; bond_uuid: string; links: AnvilNetworkBondLink[]; }; type AnvilNetworkHosts = { host_name: string; host_uuid: string; bonds: AnvilNetworkHostBond[]; }; type AnvilNetwork = { hosts: AnvilNetworkHosts[]; }; type AnvilServer = { anvilName: string; anvilUUID: string; serverName: string; serverUUID: string; serverState: | 'running' | 'idle' | 'paused' | 'in shutdown' | 'shut off' | 'crashed' | 'pmsuspended' | 'migrating'; serverHostUUID: string; }; type AnvilServers = AnvilServer[]; type AnvilSharedStorageGroup = { storage_group_free: string; storage_group_name: string; storage_group_total: string; storage_group_uuid: string; }; type AnvilSharedStorage = { storage_groups: AnvilSharedStorageGroup[]; total_size: string; total_free: string; }; type AnvilStatusHost = { host_name: string; host_uuid: string; maintenance_mode: boolean; state: 'offline' | 'booted' | 'crmd' | 'in_ccm' | 'online'; state_message: string; state_percent: number; }; type AnvilStatus = { anvil_state: 'optimal' | 'not_ready' | 'degraded'; hosts: AnvilStatusHost[]; }; type AnvilListItem = { anvil_name: string; anvil_uuid: string; } & AnvilStatus; type AnvilList = { anvils: AnvilListItem[]; }; type APIAnvilOverviewArray = Array<{ anvilDescription: string; anvilName: string; anvilUUID: string; hosts: Array<{ hostName: string; hostType: string; hostUUID: string; }>; }>; type APIAnvilOverview = { description: string; hosts: { [uuid: string]: { name: string; type: string; uuid: string; }; }; name: string; uuid: string; }; type APIAnvilDetail = { hosts: { [uuid: string]: { maintenance: boolean; name: string; state: AnvilStatusHost['state']; stateProgress: number; uuid: string; }; }; name: string; state: AnvilStatus['anvil_state']; uuid: string; }; type APIAnvilOverviewList = { [uuid: string]: APIAnvilOverview; }; type APIAnvilStorageGroupCalcable = { free: bigint; name: string; size: bigint; uuid: string; }; type APIAnvilSharedStorageOverview = { storageGroups: { [uuid: string]: APIAnvilStorageGroupCalcable; }; totalFree: bigint; totalSize: bigint; };