import PsychrometricClient public enum HVACSystemPerformance { public struct Request: Codable, Equatable, Sendable { public let altitude: Double? public let airflow: Double public let returnAirTemperature: Double public let returnAirHumidity: Double public let supplyAirTemperature: Double public let supplyAirHumidity: Double public let systemSize: Double public init( altitude: Double? = nil, airflow: Double, returnAirTemperature: Double, returnAirHumidity: Double, supplyAirTemperature: Double, supplyAirHumidity: Double, systemSize: Double ) { self.altitude = altitude self.airflow = airflow self.returnAirTemperature = returnAirTemperature self.returnAirHumidity = returnAirHumidity self.supplyAirTemperature = supplyAirTemperature self.supplyAirHumidity = supplyAirHumidity self.systemSize = systemSize } } public struct Response: Codable, Equatable, Sendable { public let returnAirProperties: PsychrometricProperties public let supplyAirProperties: PsychrometricProperties public let capacity: Capacity public let systemMetrics: SystemMetrics public init( returnAirProperties: PsychrometricProperties, supplyAirProperties: PsychrometricProperties, capacity: HVACSystemPerformance.Capacity, systemMetrics: HVACSystemPerformance.SystemMetrics ) { self.returnAirProperties = returnAirProperties self.supplyAirProperties = supplyAirProperties self.capacity = capacity self.systemMetrics = systemMetrics } } public struct Capacity: Codable, Equatable, Sendable { public let total: Double public let sensible: Double public let latent: Double public var shr: Double { sensible / total } public init(total: Double, sensible: Double, latent: Double) { self.total = total self.sensible = sensible self.latent = latent } } public struct SystemMetrics: Codable, Equatable, Sendable { public let cfmPerTon: Double public let targetTemperatureSplit: Double public let actualTemperatureSplit: Double public let condensationRate: Double public init( cfmPerTon: Double, targetTemperatureSplit: Double, actualTemperatureSplit: Double, condensationRate: Double ) { self.cfmPerTon = cfmPerTon self.targetTemperatureSplit = targetTemperatureSplit self.actualTemperatureSplit = actualTemperatureSplit self.condensationRate = condensationRate } } }