import gleam/dynamic/decode.{type Decoder} import spacetraders_sdk/models/engine_symbol.{type EngineSymbol} import spacetraders_sdk/models/ship_component_condition.{ type ShipComponentCondition, } import spacetraders_sdk/models/ship_component_integrity.{ type ShipComponentIntegrity, } import spacetraders_sdk/models/ship_component_quality.{type ShipComponentQuality} import spacetraders_sdk/models/ship_requirements.{type ShipRequirements} pub type ShipEngine { ShipEngine( symbol: EngineSymbol, name: String, condition: ShipComponentCondition, integrity: ShipComponentIntegrity, description: String, speed: Int, requirements: ShipRequirements, quality: ShipComponentQuality, ) } pub fn decoder() -> Decoder(ShipEngine) { use symbol <- decode.field("symbol", engine_symbol.decoder()) use name <- decode.field("name", decode.string) use condition <- decode.field("condition", ship_component_condition.decoder()) use integrity <- decode.field("integrity", ship_component_integrity.decoder()) use description <- decode.field("description", decode.string) use speed <- decode.field("speed", decode.int) use requirements <- decode.field("requirements", ship_requirements.decoder()) use quality <- decode.field("quality", ship_component_quality.decoder()) decode.success(ShipEngine( symbol:, name:, condition:, integrity:, description:, speed:, requirements:, quality:, )) }