use crate::*;
use serde_with::{serde_as, OneOrMany};
pub type FlightDepartureTimeFieldEnum = String;
pub type FlightArrivalTimeFieldEnum = String;
pub type FlightAdditionalTypeFieldEnum = String;
#[serde_as]
#[derive(Debug, serde::Deserialize)]
#[cfg_attr(feature = "uniffi", derive(uniffi::Record))]
pub struct Flight {
#[serde(rename = "@context")]
pub context: String,
#[serde(rename = "departureAirport")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub departure_airport: Vec<Airport>,
#[serde(rename = "flightDistance")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub flight_distance: Vec<FlightFlightDistanceFieldEnum>,
#[serde(rename = "estimatedFlightDuration")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub estimated_flight_duration: Vec<FlightEstimatedFlightDurationFieldEnum>,
#[serde(rename = "mealService")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub meal_service: Vec<String>,
#[serde(rename = "arrivalGate")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub arrival_gate: Vec<String>,
#[serde(rename = "webCheckinTime")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub web_checkin_time: Vec<String>,
#[serde(rename = "seller")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub seller: Vec<FlightSellerFieldEnum>,
#[serde(rename = "departureTerminal")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub departure_terminal: Vec<String>,
#[serde(rename = "flightNumber")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub flight_number: Vec<String>,
#[serde(rename = "departureGate")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub departure_gate: Vec<String>,
#[serde(rename = "arrivalTerminal")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub arrival_terminal: Vec<String>,
#[serde(rename = "arrivalAirport")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub arrival_airport: Vec<Airport>,
#[serde(rename = "carrier")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub carrier: Vec<Organization>,
#[serde(rename = "aircraft")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub aircraft: Vec<FlightAircraftFieldEnum>,
#[serde(rename = "boardingPolicy")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub boarding_policy: Vec<BoardingPolicyTypeEnum>,
#[serde(rename = "provider")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub provider: Vec<FlightProviderFieldEnum>,
#[serde(rename = "tripOrigin")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub trip_origin: Vec<Place>,
#[serde(rename = "departureTime")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub departure_time: Vec<FlightDepartureTimeFieldEnum>,
#[serde(rename = "partOfTrip")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub part_of_trip: Vec<Trip>,
#[serde(rename = "offers")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub offers: Vec<FlightOffersFieldEnum>,
#[serde(rename = "itinerary")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub itinerary: Vec<FlightItineraryFieldEnum>,
#[serde(rename = "arrivalTime")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub arrival_time: Vec<FlightArrivalTimeFieldEnum>,
#[serde(rename = "subTrip")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub sub_trip: Vec<Trip>,
#[serde(rename = "name")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub name: Vec<String>,
#[serde(rename = "mainEntityOfPage")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub main_entity_of_page: Vec<FlightMainEntityOfPageFieldEnum>,
#[serde(rename = "url")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub url: Vec<String>,
#[serde(rename = "disambiguatingDescription")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub disambiguating_description: Vec<String>,
#[serde(rename = "identifier")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub identifier: Vec<FlightIdentifierFieldEnum>,
#[serde(rename = "description")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub description: Vec<FlightDescriptionFieldEnum>,
#[serde(rename = "subjectOf")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub subject_of: Vec<FlightSubjectOfFieldEnum>,
#[serde(rename = "alternateName")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub alternate_name: Vec<String>,
#[serde(rename = "additionalType")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub additional_type: Vec<FlightAdditionalTypeFieldEnum>,
#[serde(rename = "potentialAction")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub potential_action: Vec<Action>,
#[serde(rename = "sameAs")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub same_as: Vec<String>,
#[serde(rename = "image")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub image: Vec<FlightImageFieldEnum>,
}