import gleam/dynamic/decode.{type Decoder} import gleam/option.{type Option} import spacetraders_sdk/models/ship_fuel_consumed.{type ShipFuelConsumed} pub type ShipFuel { ShipFuel(current: Int, capacity: Int, consumed: Option(ShipFuelConsumed)) } pub fn decoder() -> Decoder(ShipFuel) { use current <- decode.field("current", decode.int) use capacity <- decode.field("capacity", decode.int) use consumed <- decode.optional_field( "consumed", option.None, decode.optional(ship_fuel_consumed.decoder()), ) decode.success(ShipFuel(current:, capacity:, consumed:)) }