import gleam/dynamic/decode.{type Decoder} import gleam/time/timestamp.{type Timestamp} import spacetraders_models/ship_symbol.{type ShipSymbol} import spacetraders_models/waypoint_symbol.{type WaypointSymbol} import spacetraders_sdk/internal/time pub type ChartTransaction { ChartTransaction( waypoint_symbol: WaypointSymbol, ship_symbol: ShipSymbol, total_price: Int, timestamp: Timestamp, ) } pub fn decoder() -> Decoder(ChartTransaction) { use waypoint_symbol <- decode.field( "waypointSymbol", waypoint_symbol.decoder(), ) use ship_symbol <- decode.field("shipSymbol", ship_symbol.decoder()) use total_price <- decode.field("totalPrice", decode.int) use timestamp <- decode.field("timestamp", time.rfc3339_timestamp_decoder()) decode.success(ChartTransaction( waypoint_symbol:, ship_symbol:, total_price:, timestamp:, )) }