import Joi from "joi" ; see https see https declare namespace SemanticTagType { interface PersonNameComponents { familyName ? : string ; givenName ? : string ; middleName ? : string ; namePrefix ? : string ; nameSuffix ? : string ; nickname ? : string ; phoneticRepresentation ? : string ; } interface CurrencyAmount { currencyCode ? : string ; amount ? : string ; } interface Location { latitude : number ; longitude : number ; } interface Seat { seatSection ? : string ; seatRow ? : string ; seatNumber ? : string ; seatIdentifier ? : string ; seatType ? : string ; seatDescription ? : string ; } interface WifiNetwork { password : string ; ssid : string ; } } const CurrencyAmount = Joi . object < SemanticTagType . CurrencyAmount > ( ) . keys ( { currencyCode : Joi . string ( ) , amount : Joi . string ( ) , } ) ; const PersonNameComponent = Joi . object < SemanticTagType . PersonNameComponents > ( ) . keys ( { givenName : Joi . string ( ) , familyName : Joi . string ( ) , middleName : Joi . string ( ) , namePrefix : Joi . string ( ) , nameSuffix : Joi . string ( ) , nickname : Joi . string ( ) , phoneticRepresentation : Joi . string ( ) , } ) ; const seat = Joi . object < SemanticTagType . Seat > ( ) . keys ( { seatSection : Joi . string ( ) , seatRow : Joi . string ( ) , seatNumber : Joi . string ( ) , seatIdentifier : Joi . string ( ) , seatType : Joi . string ( ) , seatDescription : Joi . string ( ) , } ) ; const location = Joi . object < SemanticTagType . Location > ( ) . keys ( { latitude : Joi . number ( ) . required ( ) , longitude : Joi . number ( ) . required ( ) , } ) ; const WifiNetwork = Joi . object < SemanticTagType . WifiNetwork > ( ) . keys ( { password : Joi . string ( ) . required ( ) , ssid : Joi . string ( ) . required ( ) , } ) ; see https export interface Semantics { airlineCode ? : string ; artistIDs ? : string [ ] ; awayTeamAbbreviation ? : string ; awayTeamLocation ? : string ; awayTeamName ? : string ; balance ? : SemanticTagType . CurrencyAmount ; boardingGroup ? : string ; boardingSequenceNumber ? : string ; carNumber ? : string ; confirmationNumber ? : string ; currentArrivalDate ? : string ; currentBoardingDate ? : string ; currentDepartureDate ? : string ; departureAirportCode ? : string ; departureAirportName ? : string ; departureGate ? : string ; departureLocation ? : SemanticTagType . Location ; departureLocationDescription ? : string ; departurePlatform ? : string ; departureStationName ? : string ; departureTerminal ? : string ; destinationAirportCode ? : string ; destinationAirportName ? : string ; destinationGate ? : string ; destinationLocation ? : SemanticTagType . Location ; destinationLocationDescription ? : string ; destinationPlatform ? : string ; destinationStationName ? : string ; destinationTerminal ? : string ; duration ? : number ; eventEndDate ? : string ; eventName ? : string ; eventStartDate ? : string ; eventType ? : "PKEventTypeGeneric" | "PKEventTypeLivePerformance" | "PKEventTypeMovie" | "PKEventTypeSports" | "PKEventTypeConference" | "PKEventTypeConvention" | "PKEventTypeWorkshop" | "PKEventTypeSocialGathering" ; flightCode ? : string ; flightNumber ? : number ; genre ? : string ; homeTeamAbbreviation ? : string ; homeTeamLocation ? : string ; homeTeamName ? : string ; leagueAbbreviation ? : string ; leagueName ? : string ; membershipProgramName ? : string ; membershipProgramNumber ? : string ; originalArrivalDate ? : string ; originalBoardingDate ? : string ; originalDepartureDate ? : string ; passengerName ? : SemanticTagType . PersonNameComponents ; performerNames ? : string [ ] ; priorityStatus ? : string ; seats ? : SemanticTagType . Seat [ ] ; securityScreening ? : string ; silenceRequested ? : boolean ; sportName ? : string ; totalPrice ? : SemanticTagType . CurrencyAmount ; transitProvider ? : string ; transitStatus ? : string ; transitStatusReason ? : string ; vehicleName ? : string ; vehicleNumber ? : string ; vehicleType ? : string ; venueEntrance ? : string ; venueLocation ? : SemanticTagType . Location ; venueName ? : string ; venuePhoneNumber ? : string ; venueRoom ? : string ; wifiAccess ? : SemanticTagType . WifiNetwork ; } export const Semantics = Joi . object < Semantics > ( ) . keys ( { airlineCode : Joi . string ( ) , artistIDs : Joi . array ( ) . items ( Joi . string ( ) ) , awayTeamAbbreviation : Joi . string ( ) , awayTeamLocation : Joi . string ( ) , awayTeamName : Joi . string ( ) , balance : CurrencyAmount , boardingGroup : Joi . string ( ) , boardingSequenceNumber : Joi . string ( ) , carNumber : Joi . string ( ) , confirmationNumber : Joi . string ( ) , currentArrivalDate : Joi . string ( ) , currentBoardingDate : Joi . string ( ) , currentDepartureDate : Joi . string ( ) , departureAirportCode : Joi . string ( ) , departureAirportName : Joi . string ( ) , departureGate : Joi . string ( ) , departureLocation : location , departureLocationDescription : Joi . string ( ) , departurePlatform : Joi . string ( ) , departureStationName : Joi . string ( ) , departureTerminal : Joi . string ( ) , destinationAirportCode : Joi . string ( ) , destinationAirportName : Joi . string ( ) , destinationGate : Joi . string ( ) , destinationLocation : location , destinationLocationDescription : Joi . string ( ) , destinationPlatform : Joi . string ( ) , destinationStationName : Joi . string ( ) , destinationTerminal : Joi . string ( ) , duration : Joi . number ( ) , eventEndDate : Joi . string ( ) , eventName : Joi . string ( ) , eventStartDate : Joi . string ( ) , eventType : Joi . string ( ) . regex ( /(PKEventTypeGeneric|PKEventTypeLivePerformance|PKEventTypeMovie|PKEventTypeSports|PKEventTypeConference|PKEventTypeConvention|PKEventTypeWorkshop|PKEventTypeSocialGathering)/ ) , flightCode : Joi . string ( ) , flightNumber : Joi . number ( ) , genre : Joi . string ( ) , homeTeamAbbreviation : Joi . string ( ) , homeTeamLocation : Joi . string ( ) , homeTeamName : Joi . string ( ) , leagueAbbreviation : Joi . string ( ) , leagueName : Joi . string ( ) , membershipProgramName : Joi . string ( ) , membershipProgramNumber : Joi . string ( ) , originalArrivalDate : Joi . string ( ) , originalBoardingDate : Joi . string ( ) , originalDepartureDate : Joi . string ( ) , passengerName : PersonNameComponent , performerNames : Joi . array ( ) . items ( Joi . string ( ) ) , priorityStatus : Joi . string ( ) , seats : Joi . array ( ) . items ( seat ) , securityScreening : Joi . string ( ) , silenceRequested : Joi . boolean ( ) , sportName : Joi . string ( ) , totalPrice : CurrencyAmount , transitProvider : Joi . string ( ) , transitStatus : Joi . string ( ) , transitStatusReason : Joi . string ( ) , vehicleName : Joi . string ( ) , vehicleNumber : Joi . string ( ) , vehicleType : Joi . string ( ) , venueEntrance : Joi . string ( ) , venueLocation : location , venueName : Joi . string ( ) , venuePhoneNumber : Joi . string ( ) , venueRoom : Joi . string ( ) , wifiAccess : Joi . array ( ) . items ( WifiNetwork ) , } ) ;