use crate::*;
use serde_with::{serde_as, OneOrMany};
pub type OfferForLeaseAvailabilityStartsFieldEnum = String;
pub type OfferForLeaseGtinFieldEnum = String;
pub type OfferForLeaseValidFromFieldEnum = String;
pub type OfferForLeaseAsinFieldEnum = String;
pub type OfferForLeaseValidThroughFieldEnum = String;
pub type OfferForLeaseAvailabilityEndsFieldEnum = String;
pub type OfferForLeaseAdditionalTypeFieldEnum = String;
#[serde_as]
#[derive(Debug, serde::Deserialize)]
#[cfg_attr(feature = "uniffi", derive(uniffi::Record))]
pub struct OfferForLease {
#[serde(rename = "@context")]
pub context: String,
#[serde(rename = "priceValidUntil")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub price_valid_until: Vec<String>,
#[serde(rename = "aggregateRating")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub aggregate_rating: Vec<AggregateRating>,
#[serde(rename = "eligibleQuantity")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub eligible_quantity: Vec<QuantitativeValue>,
#[serde(rename = "eligibleRegion")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub eligible_region: Vec<OfferForLeaseEligibleRegionFieldEnum>,
#[serde(rename = "availabilityStarts")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub availability_starts: Vec<OfferForLeaseAvailabilityStartsFieldEnum>,
#[serde(rename = "sku")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub sku: Vec<String>,
#[serde(rename = "priceSpecification")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub price_specification: Vec<PriceSpecification>,
#[serde(rename = "eligibleCustomerType")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub eligible_customer_type: Vec<BusinessEntityType>,
#[serde(rename = "hasMerchantReturnPolicy")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub has_merchant_return_policy: Vec<MerchantReturnPolicy>,
#[serde(rename = "validForMemberTier")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub valid_for_member_tier: Vec<MemberProgramTier>,
#[serde(rename = "availability")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub availability: Vec<ItemAvailabilityEnum>,
#[serde(rename = "inventoryLevel")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub inventory_level: Vec<QuantitativeValue>,
#[serde(rename = "eligibleDuration")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub eligible_duration: Vec<QuantitativeValue>,
#[serde(rename = "shippingDetails")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub shipping_details: Vec<OfferShippingDetails>,
#[serde(rename = "mpn")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub mpn: Vec<String>,
#[serde(rename = "hasGS1DigitalLink")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub has_gs1_digital_link: Vec<String>,
#[serde(rename = "serialNumber")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub serial_number: Vec<String>,
#[serde(rename = "reviews")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub reviews: Vec<Review>,
#[serde(rename = "gtin12")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub gtin12: Vec<String>,
#[serde(rename = "leaseLength")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub lease_length: Vec<OfferForLeaseLeaseLengthFieldEnum>,
#[serde(rename = "gtin13")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub gtin13: Vec<String>,
#[serde(rename = "hasMeasurement")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub has_measurement: Vec<QuantitativeValue>,
#[serde(rename = "deliveryLeadTime")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub delivery_lead_time: Vec<QuantitativeValue>,
#[serde(rename = "seller")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub seller: Vec<OfferForLeaseSellerFieldEnum>,
#[serde(rename = "advanceBookingRequirement")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub advance_booking_requirement: Vec<QuantitativeValue>,
#[serde(rename = "gtin")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub gtin: Vec<OfferForLeaseGtinFieldEnum>,
#[serde(rename = "price")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub price: Vec<OfferForLeasePriceFieldEnum>,
#[serde(rename = "validFrom")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub valid_from: Vec<OfferForLeaseValidFromFieldEnum>,
#[serde(rename = "mobileUrl")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub mobile_url: Vec<String>,
#[serde(rename = "category")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub category: Vec<OfferForLeaseCategoryFieldEnum>,
#[serde(rename = "asin")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub asin: Vec<OfferForLeaseAsinFieldEnum>,
#[serde(rename = "addOn")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub add_on: Vec<Offer>,
#[serde(rename = "availableDeliveryMethod")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub available_delivery_method: Vec<DeliveryMethodEnum>,
#[serde(rename = "offeredBy")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub offered_by: Vec<OfferForLeaseOfferedByFieldEnum>,
#[serde(rename = "validThrough")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub valid_through: Vec<OfferForLeaseValidThroughFieldEnum>,
#[serde(rename = "isFamilyFriendly")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub is_family_friendly: Vec<String>,
#[serde(rename = "warranty")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub warranty: Vec<WarrantyPromise>,
#[serde(rename = "hasAdultConsideration")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub has_adult_consideration: Vec<AdultOrientedEnumerationEnum>,
#[serde(rename = "businessFunction")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub business_function: Vec<BusinessFunction>,
#[serde(rename = "additionalProperty")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub additional_property: Vec<PropertyValue>,
#[serde(rename = "eligibleTransactionVolume")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub eligible_transaction_volume: Vec<PriceSpecification>,
#[serde(rename = "review")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub review: Vec<Review>,
#[serde(rename = "itemCondition")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub item_condition: Vec<OfferItemConditionEnum>,
#[serde(rename = "includesObject")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub includes_object: Vec<TypeAndQuantityNode>,
#[serde(rename = "priceCurrency")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub price_currency: Vec<String>,
#[serde(rename = "ineligibleRegion")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub ineligible_region: Vec<OfferForLeaseIneligibleRegionFieldEnum>,
#[serde(rename = "gtin14")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub gtin14: Vec<String>,
#[serde(rename = "areaServed")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub area_served: Vec<OfferForLeaseAreaServedFieldEnum>,
#[serde(rename = "checkoutPageURLTemplate")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub checkout_page_url_template: Vec<String>,
#[serde(rename = "acceptedPaymentMethod")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub accepted_payment_method: Vec<OfferForLeaseAcceptedPaymentMethodFieldEnum>,
#[serde(rename = "gtin8")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub gtin8: Vec<String>,
#[serde(rename = "availableAtOrFrom")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub available_at_or_from: Vec<Place>,
#[serde(rename = "itemOffered")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub item_offered: Vec<OfferForLeaseItemOfferedFieldEnum>,
#[serde(rename = "availabilityEnds")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub availability_ends: Vec<OfferForLeaseAvailabilityEndsFieldEnum>,
#[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<OfferForLeaseMainEntityOfPageFieldEnum>,
#[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<OfferForLeaseIdentifierFieldEnum>,
#[serde(rename = "description")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub description: Vec<OfferForLeaseDescriptionFieldEnum>,
#[serde(rename = "subjectOf")]
#[serde_as(as = "OneOrMany<_>")]
#[serde(default)]
pub subject_of: Vec<OfferForLeaseSubjectOfFieldEnum>,
#[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<OfferForLeaseAdditionalTypeFieldEnum>,
#[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<OfferForLeaseImageFieldEnum>,
}