UNPKG

@walletpass/pass-js

Version:

Apple Wallet Pass generating and pushing updates from Node.js

762 lines 28.5 kB
/** * Field accessors class * * @see {@link https://developer.apple.com/library/archive/documentation/UserExperience/Reference/PassKit_Bundle/Chapters/FieldDictionary.html} */ import { PassColor } from './lib/pass-color.js'; import { FieldsMap } from './lib/fieldsMap.js'; export type DataDetectors = 'PKDataDetectorTypePhoneNumber' | 'PKDataDetectorTypeLink' | 'PKDataDetectorTypeAddress' | 'PKDataDetectorTypeCalendarEvent'; export type DataStyleFormat = 'PKDateStyleNone' | 'PKDateStyleShort' | 'PKDateStyleMedium' | 'PKDateStyleLong' | 'PKDateStyleFull'; export type TextAlignment = 'PKTextAlignmentLeft' | 'PKTextAlignmentCenter' | 'PKTextAlignmentRight' | 'PKTextAlignmentNatural'; export type NumberStyle = 'PKNumberStyleDecimal' | 'PKNumberStylePercent' | 'PKNumberStyleScientific' | 'PKNumberStyleSpellOut'; export interface SemanticTagObject { [key: string]: SemanticTagValue; } export type SemanticTagValue = string | number | boolean | Date | SemanticTagObject | SemanticTagValue[]; /** ISO 4217 currency amount. */ export interface CurrencyAmount { amount: string | number; currencyCode: string; } /** Geographic coordinate, used by `departureLocation`, `venueLocation`, etc. */ export interface SemanticLocation { latitude: number; longitude: number; } export interface PersonNameComponents { givenName?: string; familyName?: string; middleName?: string; namePrefix?: string; nameSuffix?: string; nickname?: string; phoneticRepresentation?: string; } export interface WifiNetwork { ssid: string; password: string; } export interface Seat { seatDescription?: string; seatIdentifier?: string; seatNumber?: string; seatRow?: string; seatSection?: string; seatType?: string; /** iOS 18+ */ seatAisle?: string; /** iOS 18+ */ seatLevel?: string; /** iOS 18+. CSS-style RGB/hex color for the section swatch. */ seatSectionColor?: string; } /** * iOS 18+ alternative to the bare `eventStartDate`, with more control over * time display, timezone, and TBA/TBD states (iOS 18.1). */ export interface EventDateInfo { date: string | Date; timeZone?: string; ignoreTimeComponents?: boolean; /** iOS 18.1 — renders "TBA" when the time has not been announced. */ unannounced?: boolean; /** iOS 18.1 — renders "TBD" for undetermined start time. */ undetermined?: boolean; } export type PKTransitSecurityProgram = 'PKTransitSecurityProgramTSAPreCheck' | 'PKTransitSecurityProgramTSAPreCheckTouchlessID' | 'PKTransitSecurityProgramOSS' | 'PKTransitSecurityProgramITI' | 'PKTransitSecurityProgramITD' | 'PKTransitSecurityProgramGlobalEntry' | 'PKTransitSecurityProgramCLEAR'; export type PKPassengerCapability = 'PKPassengerCapabilityPreboarding' | 'PKPassengerCapabilityPriorityBoarding' | 'PKPassengerCapabilityCarryon' | 'PKPassengerCapabilityPersonalItem'; /** * Machine-readable metadata that Wallet uses to offer a pass and suggest * related actions. Covers every field Apple has documented through * iOS 26. * * Strictly typed — assigning a key Apple hasn't documented produces a * TypeScript error. To write an undocumented or not-yet-typed tag, * cast through `SemanticTagObject` at the assignment site. * * @see {@link https://developer.apple.com/documentation/walletpasses/supporting-semantic-tags-in-wallet-passes} * @see {@link https://developer.apple.com/documentation/walletpasses/semantictags} */ export interface SemanticTags { airlineCode?: string; artistIDs?: string[]; awayTeamAbbreviation?: string; awayTeamLocation?: string; awayTeamName?: string; balance?: CurrencyAmount; boardingGroup?: string; boardingSequenceNumber?: string; carNumber?: string; confirmationNumber?: string; currentArrivalDate?: string | Date; currentBoardingDate?: string | Date; currentDepartureDate?: string | Date; departureAirportCode?: string; departureAirportName?: string; departureGate?: string; departureLocation?: SemanticLocation; departureLocationDescription?: string; departurePlatform?: string; departureStationName?: string; departureTerminal?: string; destinationAirportCode?: string; destinationAirportName?: string; destinationGate?: string; destinationLocation?: SemanticLocation; destinationLocationDescription?: string; destinationPlatform?: string; destinationStationName?: string; destinationTerminal?: string; duration?: number; eventEndDate?: string | Date; eventName?: string; eventStartDate?: string | Date; 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 | Date; originalBoardingDate?: string | Date; originalDepartureDate?: string | Date; passengerName?: PersonNameComponents; performerNames?: string[]; priorityStatus?: string; seats?: Seat[]; securityScreening?: string; silenceRequested?: boolean; sportName?: string; totalPrice?: CurrencyAmount; transitProvider?: string; transitStatus?: string; transitStatusReason?: string; vehicleName?: string; vehicleNumber?: string; vehicleType?: string; venueEntrance?: string; venueLocation?: SemanticLocation; venueName?: string; venuePhoneNumber?: string; venueRoom?: string; wifiAccess?: WifiNetwork[]; /** iOS 18 */ admissionLevel?: string; /** iOS 18 */ admissionLevelAbbreviation?: string; /** iOS 18 */ albumIDs?: string[]; /** iOS 18. `true` enables AirPlay playback controls on the pass. */ airplay?: boolean; /** iOS 18 */ attendeeName?: string; /** iOS 18 */ additionalTicketAttributes?: string; /** iOS 18 */ entranceDescription?: string; /** iOS 18. Short message shown during a live activity. */ eventLiveMessage?: string; /** iOS 18 / 18.1. Structured alternative to `eventStartDate`. */ eventStartDateInfo?: EventDateInfo; /** iOS 18 */ playlistIDs?: string[]; /** iOS 18 */ tailgatingAllowed?: boolean; /** iOS 18 */ venueGatesOpenDate?: string | Date; /** iOS 18 */ venueParkingLotsOpenDate?: string | Date; /** iOS 18 */ venueBoxOfficeOpenDate?: string | Date; /** iOS 18 */ venueDoorsOpenDate?: string | Date; /** iOS 18 */ venueFanZoneOpenDate?: string | Date; /** iOS 18 */ venueOpenDate?: string | Date; /** iOS 18 */ venueCloseDate?: string | Date; /** iOS 18 */ venueRegionName?: string; /** iOS 18 */ venueEntranceGate?: string; /** iOS 18 */ venueEntranceDoor?: string; /** iOS 18 */ venueEntrancePortal?: string; /** iOS 26 */ boardingZone?: string; /** iOS 26 */ departureCityName?: string; /** iOS 26 */ destinationCityName?: string; /** iOS 26 */ departureLocationSecurityPrograms?: PKTransitSecurityProgram[]; /** iOS 26 */ destinationLocationSecurityPrograms?: PKTransitSecurityProgram[]; /** iOS 26 */ passengerEligibleSecurityPrograms?: PKTransitSecurityProgram[]; /** iOS 26. IANA time zone name, e.g. `America/Chicago`. */ departureLocationTimeZone?: string; /** iOS 26. IANA time zone name, e.g. `America/Los_Angeles`. */ destinationLocationTimeZone?: string; /** iOS 26 */ internationalDocumentsAreVerified?: boolean; /** iOS 26 */ internationalDocumentsVerifiedDeclarationName?: string; /** iOS 26. MapKit Place IDs referencing lounge locations. */ loungePlaceIDs?: string[]; /** iOS 26 */ membershipProgramStatus?: string; /** iOS 26 */ passengerAirlineSSRs?: string[]; /** iOS 26 */ passengerCapabilities?: PKPassengerCapability[]; /** iOS 26. IATA information SSRs. */ passengerInformationSSRs?: string[]; /** iOS 26. IATA service SSRs. */ passengerServiceSSRs?: string[]; /** iOS 26. Fare class badge displayed on the boarding pass. */ ticketFareClass?: string; } export type FieldDescriptor = { label?: string; attributedValue?: string | number; changeMessage?: string; dataDetectorTypes?: DataDetectors[]; semantics?: SemanticTags; /** eventTicket auxiliaryFields only */ row?: 0 | 1; } & ({ value: string; textAlignment?: TextAlignment; } | { value: Date; dateStyle?: DataStyleFormat; ignoresTimeZone?: boolean; isRelative?: boolean; timeStyle?: DataStyleFormat; } | { value: number; currencyCode?: string; numberStyle?: NumberStyle; }); export type Field = { key: string; } & FieldDescriptor; export type PassStyle = 'boardingPass' | 'coupon' | 'eventTicket' | 'storeCard' | 'generic'; export type BarcodeFormat = 'PKBarcodeFormatQR' | 'PKBarcodeFormatPDF417' | 'PKBarcodeFormatAztec' | 'PKBarcodeFormatCode128'; export interface BarcodeDescriptor { /** * Barcode format. For the barcode dictionary, you can use only the following values: PKBarcodeFormatQR, PKBarcodeFormatPDF417, or PKBarcodeFormatAztec. For dictionaries in the barcodes array, you may also use PKBarcodeFormatCode128. */ format: BarcodeFormat; /** * Message or payload to be displayed as a barcode. */ message: string; /** * Text encoding that is used to convert the message from the string representation to a data representation to render the barcode. The value is typically iso-8859-1, but you may use another encoding that is supported by your barcode scanning infrastructure. */ messageEncoding: string; /** * Optional. Text displayed near the barcode. For example, a human-readable version of the barcode data in case the barcode doesn’t scan. */ altText?: string; } /** * Top-Level Keys * The top level of the pass.json file is a dictionary. * The following sections list the required and optional keys used in this dictionary. * For each key whose value is a dictionary or an array of dictionaries, * there is also a section in Lower-Level Keys that lists the keys for that dictionary. * * @see {@link https://developer.apple.com/library/archive/documentation/UserExperience/Reference/PassKit_Bundle/Chapters/TopLevel.html#//apple_ref/doc/uid/TP40012026-CH2-SW1} */ /** * Information that is required for all passes. */ export interface PassStandardKeys { /** * Brief description of the pass, used by the iOS accessibility technologies. * Don’t try to include all of the data on the pass in its description, * just include enough detail to distinguish passes of the same type. */ description: string; /** * Version of the file format. The value must be 1. */ formatVersion: 1; /** * Display name of the organization that originated and signed the pass. */ organizationName: string; /** * Pass type identifier, as issued by Apple. * The value must correspond with your signing certificate. */ passTypeIdentifier: string; /** * Serial number that uniquely identifies the pass. * No two passes with the same pass type identifier may have the same serial number. */ serialNumber: string; /** * Team identifier of the organization that originated and signed the pass, as issued by Apple. */ teamIdentifier: string; /** * Possibility to prohibit a sharing of pass */ sharingProhibited: boolean; } /** * Information about an app that is associated with a pass. */ export interface PassAssociatedAppKeys { /** * A URL to be passed to the associated app when launching it. * The app receives this URL in the application:didFinishLaunchingWithOptions: * and application:openURL:options: methods of its app delegate. * If this key is present, the associatedStoreIdentifiers key must also be present. */ appLaunchURL?: string; /** * A list of iTunes Store item identifiers for the associated apps. * Only one item in the list is used—the first item identifier for an app * compatible with the current device. * If the app is not installed, the link opens the App Store and shows the app. * If the app is already installed, the link launches the app. */ associatedStoreIdentifiers?: number[]; } /** * Custom information about a pass provided for a companion app to use. */ export interface PassCompanionAppKeys { /** * Custom information for companion apps. This data is not displayed to the user. * For example, a pass for a cafe could include information about * the user’s favorite drink and sandwich in a machine-readable form * for the companion app to read, making it easy to place an order for “the usual” from the app. */ userInfo?: any; } export interface PassSemanticKeys { /** * Machine-readable metadata for Wallet suggestions. This dictionary may * also be specified on individual pass fields. */ semantics?: SemanticTags; } /** * Information about when a pass expires and whether it is still valid. * A pass is marked as expired if the current date is after the pass’s expiration date, * or if the pass has been explicitly marked as voided. */ export interface PassExpirationKeys { /** * Date and time when the pass expires. * The value must be a complete date with hours and minutes, * and may optionally include seconds. */ expirationDate?: string | Date; /** * Indicates that the pass is void—for example, a one time use coupon that has been redeemed. * The default value is false. */ voided?: boolean; } /** * Information about a location beacon. */ export interface Beacon { /** * Unique identifier of a Bluetooth Low Energy location beacon. */ proximityUUID: string; /** * Major identifier of a Bluetooth Low Energy location beacon. */ major?: number; /** * Minor identifier of a Bluetooth Low Energy location beacon. */ minor?: number; /** * Text displayed on the lock screen when the pass is currently relevant. * For example, a description of the nearby location * * @example “Store nearby on 1st and Main.” */ relevantText?: string; } /** * Location Dictionary Keys */ export interface Location { /** * Latitude, in degrees, of the location. */ latitude: number; /** * Longitude, in degrees, of the location. */ longitude: number; /** * Altitude, in meters, of the location. */ altitude?: number; /** * Text displayed on the lock screen when the pass is currently relevant. * For example, a description of the nearby location * * @example “Store nearby on 1st and Main.” */ relevantText?: string; } /** * A date/time range during which the pass is relevant. Either a point * in time (`relevantDate`) or a window (`startDate`/`endDate`). * * @see {@link https://developer.apple.com/documentation/walletpasses/pass/relevantdates} */ export interface RelevantDateEntry { /** ISO 8601 date-time at which the pass becomes relevant. */ relevantDate?: string | Date; /** Start of a relevance window (ISO 8601 date-time). */ startDate?: string | Date; /** End of a relevance window (ISO 8601 date-time). */ endDate?: string | Date; } /** * Undocumented-in-prose but valid top-level `calendarEvent` field. * @see {@link https://developer.apple.com/documentation/walletpasses/pass/calendarevent} */ export interface CalendarEvent { title: string; location?: string; startDate: string | Date; endDate: string | Date; } /** * Information about where and when a pass is relevant. */ export interface PassRelevanceKeys { /** * Beacons marking locations where the pass is relevant. */ beacons?: Beacon[]; /** * Locations where the pass is relevant. * For example, the location of your store. */ locations?: Location[]; /** * Maximum distance in meters from a relevant latitude and longitude that the pass is relevant. * This number is compared to the pass’s default distance and the smaller value is used. */ maxDistance?: number; /** * Date and time when the pass becomes relevant. * For example, the start time of a movie. * The value must be a complete date with hours and minutes, * and may optionally include seconds. * * @deprecated Prefer `relevantDates` (iOS 18+) for new passes. The * singular `relevantDate` is still emitted for backward compatibility * but Apple recommends the array form for event tickets and boarding * passes with multiple relevant windows. */ relevantDate?: string | Date; /** * List of dates and date ranges during which the pass is relevant. * Added in iOS 18. Supersedes the singular `relevantDate` for passes * with multiple relevance windows (e.g. multi-leg itineraries). * * @see {@link https://developer.apple.com/documentation/walletpasses/pass/relevantdates} */ relevantDates?: RelevantDateEntry[]; /** * Calendar event associated with the pass. Presented at WWDC 2018. * * @see {@link https://developer.apple.com/documentation/walletpasses/pass/calendarevent} */ calendarEvent?: CalendarEvent; } /** * Pass common structure keys * * @see {@link https://developer.apple.com/library/content/documentation/UserExperience/Reference/PassKit_Bundle/Chapters/LowerLevel.html#//apple_ref/doc/uid/TP40012026-CH3-SW3} */ export interface PassCommonStructure { /** * Fields to be displayed in the header on the front of the pass. * Use header fields sparingly; unlike all other fields, * they remain visible when a stack of passes are displayed. */ headerFields?: Field[] | FieldsMap; /** * Fields to be displayed prominently on the front of the pass. */ primaryFields?: Field[] | FieldsMap; /** * Fields to be displayed on the front of the pass. */ secondaryFields?: Field[] | FieldsMap; /** * Additional fields to be displayed on the front of the pass. */ auxiliaryFields?: Field[] | FieldsMap; /** * Fields to be on the back of the pass. */ backFields?: Field[] | FieldsMap; /** * Event-ticket dashboard fields (iOS 18+). Only valid on `eventTicket` * passes; the setter on `PassStructure` throws a ReferenceError if * accessed on another style. */ additionalInfoFields?: Field[] | FieldsMap; } /** * Keys that define the visual style and appearance of the pass. */ export interface PassVisualAppearanceKeys { /** * Information specific to the pass’s barcode. * For this dictionary’s keys, see Barcode Dictionary Keys. * * @deprecated Deprecated in iOS 9.0 and later; use `barcodes` instead. */ barcode?: BarcodeDescriptor; /** * Information specific to the pass’s barcode. * The system uses the first valid barcode dictionary in the array. * Additional dictionaries can be added as fallbacks. */ barcodes?: BarcodeDescriptor[]; /** * Background color of the pass, specified as an CSS-style RGB triple. * * @example rgb(23, 187, 82) */ backgroundColor?: PassColor | string; /** * Foreground color of the pass, specified as a CSS-style RGB triple. * * @example rgb(100, 10, 110) */ foregroundColor?: PassColor | string; /** * Optional for event tickets and boarding passes; otherwise not allowed. * Identifier used to group related passes. * If a grouping identifier is specified, passes with the same style, * pass type identifier, and grouping identifier are displayed as a group. * Otherwise, passes are grouped automatically. * Use this to group passes that are tightly related, * such as the boarding passes for different connections of the same trip. */ groupingIdentifier?: string; /** * Color of the label text, specified as a CSS-style RGB triple. * * @example rgb(255, 255, 255) */ labelColor?: PassColor | string; /** * Color of the strip text, specified as a CSS-style RGB triple. * * @example rgb(255, 255, 255) */ stripColor?: PassColor | string; /** * Text displayed next to the logo on the pass. */ logoText?: string; /** * If true, the strip image is displayed without a shine effect. * The default value prior to iOS 7.0 is false. * In iOS 7.0, a shine effect is never applied, and this key is deprecated. */ suppressStripShine?: boolean; /** * Ordered list of visual style schemes the pass opts into, in order * of preference. iOS 18+ renders `posterEventTicket` with richer * hero imagery for event passes; iOS 26 adds `semanticBoardingPass` * for enhanced boarding-pass layouts. Older OSes silently fall back * to the classic style. * * @see {@link https://developer.apple.com/documentation/walletpasses/preferredstyleschemes} */ preferredStyleSchemes?: ('posterEventTicket' | 'eventTicket' | 'boardingPass' | 'semanticBoardingPass')[]; } export interface PassWebServiceKeys { /** * The URL of a web service that conforms to the API described in PassKit Web Service Reference. * The web service must use the HTTPS protocol in production; the leading https:// is included in the value of this key. * On devices configured for development, there is UI in Settings to allow HTTP web services. You can use the options * parameter to set allowHTTP to be able to use URLs that use the HTTP protocol. * * @see {@link https://developer.apple.com/library/archive/documentation/PassKit/Reference/PassKit_WebService/WebService.html#//apple_ref/doc/uid/TP40011988} */ webServiceURL?: URL | string; /** * The authentication token to use with the web service. * The token must be 16 characters or longer. */ authenticationToken?: string; } export interface NFCDictionary { /** * The payload to be transmitted to the Apple Pay terminal. * Must be 64 bytes or less. * Messages longer than 64 bytes are truncated by the system. */ message: string; /** * The public encryption key used by the Value Added Services protocol. * Use a Base64 encoded X.509 SubjectPublicKeyInfo structure containing a ECDH public key for group P256. */ encryptionPublicKey?: string; /** * Indicates whether the NFC pass requires authentication. * When `true`, the user must authenticate (Face ID / Touch ID / passcode) * before the pass is transmitted via NFC. */ requiresAuthentication?: boolean; } /** * NFC-enabled pass keys support sending reward card information as part of an Apple Pay transaction. */ export type TransitType = 'PKTransitTypeAir' | 'PKTransitTypeBoat' | 'PKTransitTypeBus' | 'PKTransitTypeTrain' | 'PKTransitTypeGeneric'; export interface BoardingPass { boardingPass: { /** * Type of transit. */ transitType: TransitType; } & PassCommonStructure; } export interface CouponPass { coupon: PassCommonStructure; } export interface EventTicketPass { eventTicket: PassCommonStructure; } export interface GenericPass { generic: PassCommonStructure; } export interface StoreCardPass { storeCard: PassCommonStructure; nfc?: NFCDictionary; } export type PassStructureFields = BoardingPass | CouponPass | EventTicketPass | GenericPass | StoreCardPass; /** * iOS 18 event-ticket "Event Guide" and styling keys. * * All fields are optional. They apply only to `eventTicket` passes * using the new poster layout (`preferredStyleSchemes` includes * `'posterEventTicket'`). Older iOS versions silently ignore them. */ export interface PassEventTicketKeys { /** Event Guide: URL to the bag/re-entry policy. */ bagPolicyURL?: string; /** Event Guide: URL to order food at the venue. */ orderFoodURL?: string; /** Event Guide: URL to parking information. */ parkingInformationURL?: string; /** Event Guide: URL to directions to the venue. */ directionsInformationURL?: string; /** Event Guide: URL to purchase parking. */ purchaseParkingURL?: string; /** Event Guide: URL to purchase merchandise. */ merchandiseURL?: string; /** Event Guide: URL to transit information. */ transitInformationURL?: string; /** Event Guide: URL to accessibility information. */ accessibilityURL?: string; /** Event Guide: URL to add-on experiences / upgrades. */ addOnURL?: string; /** Event Guide: venue contact email address (plain string, not a URL). */ contactVenueEmail?: string; /** Event Guide: venue contact phone number. */ contactVenuePhoneNumber?: string; /** Event Guide: venue website URL. */ contactVenueWebsite?: string; /** Menu dropdown: URL to initiate ticket transfer. */ transferURL?: string; /** Menu dropdown: URL to resell the ticket. */ sellURL?: string; /** Disables the automatic dark shadow behind the header in new layouts. */ suppressHeaderDarkening?: boolean; /** Overrides the footer chin color (defaults to blurred background). */ footerBackgroundColor?: PassColor | string; /** * When `true`, Wallet derives `foregroundColor` and `labelColor` from * the background image automatically; any explicit values are ignored. */ useAutomaticColors?: boolean; /** * Secondary App Store identifiers related to the event ticket. Unlike * `associatedStoreIdentifiers`, apps listed here cannot read the user's * passes. */ auxiliaryStoreIdentifiers?: number[]; /** iOS 18.1. Text shown next to the logo on `posterEventTicket` passes. */ eventLogoText?: string; } /** * iOS 26 enhanced / semantic boarding-pass keys. * * Available when `preferredStyleSchemes` includes `'semanticBoardingPass'`. * All fields are optional. */ export interface PassEnhancedBoardingPassKeys { /** URL for changing the seat. */ changeSeatURL?: string; /** URL for in-flight entertainment. */ entertainmentURL?: string; /** URL for purchasing additional checked baggage. */ purchaseAdditionalBaggageURL?: string; /** URL for purchasing lounge access. */ purchaseLoungeAccessURL?: string; /** URL for purchasing in-flight Wi-Fi. */ purchaseWifiURL?: string; /** URL for upgrading the flight. */ upgradeURL?: string; /** URL for general ticket management. */ managementURL?: string; /** URL for registering a service animal. */ registerServiceAnimalURL?: string; /** URL for reporting a lost bag. */ reportLostBagURL?: string; /** URL for requesting a wheelchair. */ requestWheelchairURL?: string; /** Transit provider website URL. */ transitProviderWebsiteURL?: string; /** Transit provider email address (plain string, not a URL). */ transitProviderEmail?: string; /** Transit provider phone number. */ transitProviderPhoneNumber?: string; } /** * iOS 26 poster-event-ticket key for declaring upcoming passes chained * to this one. The nested shape lives in * `src/lib/upcoming-pass-information.ts`; the setter on `PassBase` * validates style/scheme pre-conditions and each entry's shape. */ export interface PassUpcomingKeys { upcomingPassInformation?: import('./lib/upcoming-pass-information.js').UpcomingPassInformationEntry[]; } export type ApplePass = PassStandardKeys & PassAssociatedAppKeys & PassCompanionAppKeys & PassSemanticKeys & PassExpirationKeys & PassRelevanceKeys & PassVisualAppearanceKeys & PassWebServiceKeys & PassStructureFields & PassEventTicketKeys & PassEnhancedBoardingPassKeys & PassUpcomingKeys; export interface Options { allowHttp?: boolean; disableImageCheck?: boolean; } //# sourceMappingURL=interfaces.d.ts.map