import gleam/dynamic/decode.{type Decoder} import gleam/time/timestamp.{type Timestamp} import spacetraders_models/ship_nav_route_waypoint.{type ShipNavRouteWaypoint} import spacetraders_sdk/internal/time pub type ShipNavRoute { ShipNavRoute( destination: ShipNavRouteWaypoint, origin: ShipNavRouteWaypoint, departure_time: Timestamp, arrival: Timestamp, ) } pub fn decoder() -> Decoder(ShipNavRoute) { use destination <- decode.field( "destination", ship_nav_route_waypoint.decoder(), ) use origin <- decode.field("origin", ship_nav_route_waypoint.decoder()) use departure_time <- decode.field( "departureTime", time.rfc3339_timestamp_decoder(), ) use arrival <- decode.field("arrival", time.rfc3339_timestamp_decoder()) decode.success(ShipNavRoute(destination:, origin:, departure_time:, arrival:)) }