@voyantjs/connect-sdk 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1420 @@
1
+ import type { JsonObject, VoyantTransportOptions } from "@voyant-sdk/sdk-core";
2
+ export interface VoyantConnectClientOptions extends VoyantTransportOptions {
3
+ /**
4
+ * Default operator for org-scoped data-plane calls (`products.list`,
5
+ * `suppliers.list`, `bookings.listAll`, `bookings.get` by org-scope, etc.).
6
+ * Methods accept a per-call override; calls without either resolved
7
+ * operator throw a `VoyantApiError` at request time.
8
+ */
9
+ operatorId?: string;
10
+ }
11
+ /**
12
+ * Per-call operator override for org-scoped data-plane methods. When omitted,
13
+ * the client falls back to `VoyantConnectClientOptions.operatorId`.
14
+ */
15
+ export interface OperatorScope {
16
+ operatorId?: string;
17
+ }
18
+ /**
19
+ * Filter accepted by every cross-connection (org-wide) read.
20
+ * Both fields accept a single value or an array; the SDK serializes arrays
21
+ * as repeated query-string parameters (e.g. `?connectionId=a&connectionId=b`).
22
+ */
23
+ export interface ConnectionScopeFilter {
24
+ connectionId?: string | string[];
25
+ providerKey?: string | string[];
26
+ }
27
+ export type IsoDateTime = string;
28
+ export interface ListEnvelope<T> {
29
+ data: T[];
30
+ }
31
+ export interface PageEnvelope<T> {
32
+ data: T[];
33
+ pagination: {
34
+ nextCursor: string | null;
35
+ };
36
+ }
37
+ export interface ConnectError {
38
+ code: string;
39
+ message: string;
40
+ status: number;
41
+ details?: unknown;
42
+ }
43
+ export interface IssueTokenInput {
44
+ clientId: string;
45
+ clientSecret: string;
46
+ grantType?: "client_credentials";
47
+ scope?: string;
48
+ }
49
+ export interface OAuthTokenResponse {
50
+ access_token: string;
51
+ token_type: "Bearer";
52
+ expires_in: number;
53
+ scope: string;
54
+ }
55
+ export type OperatorStatus = "active" | "deactivated";
56
+ export interface OperatorSummary {
57
+ id: string;
58
+ organizationId: string | null;
59
+ voyantPlatformId: string | null;
60
+ voyantOrganizationId: string | null;
61
+ slug: string;
62
+ name: string;
63
+ contactEmail: string | null;
64
+ contactName: string | null;
65
+ status: OperatorStatus;
66
+ metadata: JsonObject | null;
67
+ accessType?: "owned" | "granted";
68
+ grantId?: string;
69
+ grantScopes?: string[];
70
+ createdAt: IsoDateTime;
71
+ updatedAt: IsoDateTime;
72
+ }
73
+ export interface CreateOperatorInput {
74
+ slug: string;
75
+ name: string;
76
+ contactEmail?: string;
77
+ contactName?: string;
78
+ voyantPlatformId?: string;
79
+ voyantOrganizationId?: string;
80
+ metadata?: JsonObject;
81
+ }
82
+ export interface UpdateOperatorInput {
83
+ name?: string;
84
+ contactEmail?: string;
85
+ contactName?: string;
86
+ metadata?: JsonObject;
87
+ }
88
+ export type ConnectionStatus = "pending" | "active" | "paused" | "errored";
89
+ export interface ConnectionSummary {
90
+ id: string;
91
+ operatorId: string;
92
+ supplierName: string;
93
+ providerKey: string | null;
94
+ providerRegistrationId: string | null;
95
+ status: ConnectionStatus;
96
+ market: string | null;
97
+ webhookSigningSecretLast4: string | null;
98
+ createdAt: IsoDateTime;
99
+ updatedAt: IsoDateTime;
100
+ metadata: JsonObject | null;
101
+ }
102
+ export interface CreateConnectionInput {
103
+ supplierName: string;
104
+ providerKey?: string;
105
+ market?: string;
106
+ credentials?: JsonObject;
107
+ metadata?: JsonObject;
108
+ [key: string]: unknown;
109
+ }
110
+ export interface UpdateConnectionInput {
111
+ supplierName?: string;
112
+ status?: ConnectionStatus;
113
+ market?: string;
114
+ credentials?: JsonObject;
115
+ metadata?: JsonObject;
116
+ [key: string]: unknown;
117
+ }
118
+ export interface RotatedWebhookSecret {
119
+ connectionId: string;
120
+ webhookSigningSecret: string;
121
+ }
122
+ export interface ListWebhookEventsQuery {
123
+ event?: string;
124
+ status?: "pending" | "delivered" | "failed" | "retrying";
125
+ limit?: number;
126
+ }
127
+ export interface ListHealthEventsQuery {
128
+ status?: "healthy" | "degraded" | "down";
129
+ limit?: number;
130
+ }
131
+ export interface ListRequestLogsQuery {
132
+ method?: string;
133
+ responseStatus?: number;
134
+ from?: IsoDateTime | Date;
135
+ to?: IsoDateTime | Date;
136
+ limit?: number;
137
+ }
138
+ export interface ListProjectionSyncsQuery {
139
+ limit?: number;
140
+ }
141
+ export interface ProjectionSyncRunReceipt {
142
+ runId: string;
143
+ isCached: boolean;
144
+ }
145
+ export interface ConnectorProviderSummary {
146
+ key: string;
147
+ name: string;
148
+ description: string | null;
149
+ applicationFormSchema: JsonObject | null;
150
+ capabilities: string[];
151
+ [key: string]: unknown;
152
+ }
153
+ export interface ConnectorProviderApplicationSummary {
154
+ id: string;
155
+ organizationId: string;
156
+ providerKey: string;
157
+ status: string;
158
+ payload: JsonObject | null;
159
+ createdAt: IsoDateTime;
160
+ updatedAt: IsoDateTime;
161
+ [key: string]: unknown;
162
+ }
163
+ export interface UpdateConnectorProviderInput {
164
+ applicationFormSchema?: JsonObject;
165
+ [key: string]: unknown;
166
+ }
167
+ export interface OperatorProviderRegistration {
168
+ id: string;
169
+ operatorId: string;
170
+ provider: {
171
+ key: string;
172
+ name: string;
173
+ };
174
+ status: string;
175
+ scope: JsonObject | null;
176
+ allowedMarkets: string[] | null;
177
+ createdAt: IsoDateTime;
178
+ updatedAt: IsoDateTime;
179
+ [key: string]: unknown;
180
+ }
181
+ export interface UpsertProviderRegistrationInput {
182
+ providerKey: string;
183
+ scope?: JsonObject;
184
+ allowedMarkets?: string[];
185
+ credentials?: JsonObject;
186
+ [key: string]: unknown;
187
+ }
188
+ export interface UpdateTuiProviderSettingsInput {
189
+ allowedMarkets?: string[];
190
+ defaultOffersSearchBody?: JsonObject;
191
+ }
192
+ export type LinkDirection = "inbound" | "outbound" | "bidirectional";
193
+ export type LinkMode = "manual" | "automatic";
194
+ export type LinkStatus = "active" | "paused" | "revoked";
195
+ export interface LinkSummary {
196
+ id: string;
197
+ ownerOperatorId: string;
198
+ partnerOrganizationId: string | null;
199
+ direction: LinkDirection;
200
+ mode: LinkMode;
201
+ status: LinkStatus;
202
+ capabilities: LinkCapability[];
203
+ createdAt: IsoDateTime;
204
+ updatedAt: IsoDateTime;
205
+ [key: string]: unknown;
206
+ }
207
+ export interface LinkCapability {
208
+ id: string;
209
+ linkId: string;
210
+ capability: string;
211
+ enabled: boolean;
212
+ config: JsonObject | null;
213
+ }
214
+ export interface CreateLinkInput {
215
+ partnerOrganizationId?: string;
216
+ direction: LinkDirection;
217
+ mode?: LinkMode;
218
+ connection?: {
219
+ id?: string;
220
+ credentials?: JsonObject;
221
+ [key: string]: unknown;
222
+ };
223
+ [key: string]: unknown;
224
+ }
225
+ export interface UpdateLinkInput {
226
+ status?: LinkStatus;
227
+ [key: string]: unknown;
228
+ }
229
+ export interface UpdateLinkCapabilityInput {
230
+ enabled?: boolean;
231
+ config?: JsonObject;
232
+ }
233
+ export interface ListLinksQuery {
234
+ status?: LinkStatus;
235
+ mode?: LinkMode;
236
+ direction?: LinkDirection;
237
+ }
238
+ export interface OAuthClientSummary {
239
+ id: string;
240
+ operatorId: string;
241
+ clientId: string;
242
+ clientSecret?: string;
243
+ scopes: string[];
244
+ name: string | null;
245
+ grantId: string | null;
246
+ active: boolean;
247
+ expiresAt: IsoDateTime | null;
248
+ createdAt: IsoDateTime;
249
+ }
250
+ export interface CreateOAuthClientInput {
251
+ name?: string;
252
+ scopes: string[];
253
+ grantId?: string;
254
+ expiresAt?: IsoDateTime;
255
+ }
256
+ export type GrantStatus = "active" | "paused" | "revoked";
257
+ export interface GrantSummary {
258
+ id: string;
259
+ operatorId: string;
260
+ grantorOrganizationId: string;
261
+ granteeOrganizationId: string | null;
262
+ status: GrantStatus;
263
+ scopes: string[];
264
+ expiresAt: IsoDateTime | null;
265
+ createdAt: IsoDateTime;
266
+ updatedAt: IsoDateTime;
267
+ }
268
+ export interface CreateOperatorGrantInput {
269
+ granteeOrganizationId?: string;
270
+ scopes: string[];
271
+ expiresAt?: IsoDateTime;
272
+ [key: string]: unknown;
273
+ }
274
+ export interface UpdateOperatorGrantInput {
275
+ status?: GrantStatus;
276
+ scopes?: string[];
277
+ expiresAt?: IsoDateTime;
278
+ }
279
+ export interface ListGrantsQuery {
280
+ status?: GrantStatus;
281
+ }
282
+ export interface AuditLogEntry {
283
+ id: string;
284
+ organizationId: string;
285
+ operatorId: string | null;
286
+ callerType: "api_key" | "oauth_m2m" | "internal" | "user";
287
+ callerId: string | null;
288
+ method: string;
289
+ path: string;
290
+ statusCode: number;
291
+ metadata: JsonObject | null;
292
+ createdAt: IsoDateTime;
293
+ }
294
+ export interface AuditLogQuery {
295
+ from?: IsoDateTime;
296
+ to?: IsoDateTime;
297
+ callerType?: AuditLogEntry["callerType"];
298
+ operatorId?: string;
299
+ limit?: number;
300
+ cursor?: string;
301
+ }
302
+ export interface AuditLogPage {
303
+ data: AuditLogEntry[];
304
+ pagination: {
305
+ nextCursor: string | null;
306
+ };
307
+ }
308
+ export interface UsageQuery {
309
+ from?: IsoDateTime;
310
+ to?: IsoDateTime;
311
+ connectionId?: string;
312
+ grantId?: string;
313
+ }
314
+ export interface UsageSummary {
315
+ operatorId: string;
316
+ totalRequests: number;
317
+ totalErrors: number;
318
+ byEndpoint: Array<{
319
+ endpoint: string;
320
+ method: string;
321
+ count: number;
322
+ }>;
323
+ [key: string]: unknown;
324
+ }
325
+ export interface OperatorProductSummary {
326
+ id: string;
327
+ operatorId: string;
328
+ connectionId: string;
329
+ externalProductId: string;
330
+ title: string;
331
+ supplierName: string | null;
332
+ market: string | null;
333
+ active: boolean;
334
+ [key: string]: unknown;
335
+ }
336
+ export interface OperatorProductDetail extends OperatorProductSummary {
337
+ options?: Array<JsonObject>;
338
+ units?: Array<JsonObject>;
339
+ extras?: Array<JsonObject>;
340
+ }
341
+ export interface OperatorSupplierSummary {
342
+ id: string;
343
+ operatorId: string;
344
+ connectionId: string;
345
+ externalSupplierId: string;
346
+ name: string;
347
+ [key: string]: unknown;
348
+ }
349
+ export interface OperatorBookingSummary {
350
+ id: string;
351
+ connectionId: string;
352
+ providerKey: string | null;
353
+ supplierName: string;
354
+ externalBookingId: string;
355
+ productExternalId: string;
356
+ optionExternalId: string;
357
+ status: string;
358
+ sourceType: string;
359
+ supplierConfirmationStatus: string | null;
360
+ confirmedAt: IsoDateTime | null;
361
+ cancelledAt: IsoDateTime | null;
362
+ createdAt: IsoDateTime;
363
+ updatedAt: IsoDateTime;
364
+ [key: string]: unknown;
365
+ }
366
+ export interface ListOperatorBookingsQuery {
367
+ localDateStart?: string;
368
+ localDateEnd?: string;
369
+ status?: string | string[];
370
+ limit?: number;
371
+ }
372
+ export interface ListAccommodationsQuery {
373
+ category?: AccommodationCategory | AccommodationCategory[];
374
+ countryCode?: string | string[];
375
+ city?: string | string[];
376
+ minStars?: number;
377
+ /** Filter by price_from <= this amount in minor units. Currency-agnostic. */
378
+ maxPriceFromAmountMinor?: number;
379
+ locale?: string;
380
+ limit?: number;
381
+ }
382
+ export interface OperatorAccommodationSummary {
383
+ id: string;
384
+ connectionId: string;
385
+ externalId: string;
386
+ category: AccommodationCategory;
387
+ name: string;
388
+ slug: string | null;
389
+ countryCode: string;
390
+ region: string | null;
391
+ city: string | null;
392
+ latitude: number | null;
393
+ longitude: number | null;
394
+ stars: number | null;
395
+ locale: string;
396
+ amenities: string[];
397
+ priceFromAmountMinor: number | null;
398
+ priceFromCurrency: string | null;
399
+ priceFromRefreshedAt: IsoDateTime | null;
400
+ providerKey: string | null;
401
+ supplierName: string;
402
+ lastSyncedAt: IsoDateTime;
403
+ updatedAt: IsoDateTime;
404
+ payload: JsonObject;
405
+ [key: string]: unknown;
406
+ }
407
+ export interface OperatorAccommodationDetail {
408
+ accommodation: JsonObject;
409
+ providerKey: string | null;
410
+ supplierName: string;
411
+ }
412
+ export interface SearchDocumentQuery {
413
+ connectionId?: string;
414
+ updatedSince?: IsoDateTime;
415
+ limit?: number;
416
+ market?: string;
417
+ }
418
+ export interface SearchDocument {
419
+ id: string;
420
+ operatorId: string;
421
+ connectionId: string;
422
+ market: string | null;
423
+ payload: JsonObject;
424
+ updatedAt: IsoDateTime;
425
+ [key: string]: unknown;
426
+ }
427
+ export interface SearchProjectionChangeQuery {
428
+ after?: string;
429
+ connectionId?: string;
430
+ limit?: number;
431
+ market?: string;
432
+ }
433
+ export interface SearchProjectionChange {
434
+ id: string;
435
+ operatorId: string;
436
+ connectionId: string;
437
+ market: string | null;
438
+ changeType: string;
439
+ payload: JsonObject;
440
+ createdAt: IsoDateTime;
441
+ }
442
+ export interface SearchProjectionChangePage {
443
+ data: SearchProjectionChange[];
444
+ nextCursor: string | null;
445
+ }
446
+ export interface InviteTokenSummary {
447
+ id: string;
448
+ operatorId: string;
449
+ token: string;
450
+ label: string | null;
451
+ scopes: string[];
452
+ grantId: string | null;
453
+ expiresAt: IsoDateTime | null;
454
+ redeemedAt: IsoDateTime | null;
455
+ createdAt: IsoDateTime;
456
+ }
457
+ export interface CreateInviteTokenInput {
458
+ label?: string;
459
+ scopes: string[];
460
+ grantId?: string;
461
+ expiresAt?: IsoDateTime | Date;
462
+ }
463
+ export interface PublicInviteInfo {
464
+ operatorName: string;
465
+ scopes: string[];
466
+ label: string | null;
467
+ expiresAt: IsoDateTime | null;
468
+ }
469
+ export interface WebhookSubscriptionSummary {
470
+ id: string;
471
+ operatorId: string;
472
+ connectionId: string | null;
473
+ url: string;
474
+ events: string[];
475
+ status: "active" | "paused";
476
+ hasSecret: boolean;
477
+ createdAt: IsoDateTime;
478
+ updatedAt: IsoDateTime;
479
+ [key: string]: unknown;
480
+ }
481
+ export interface CreateWebhookSubscriptionInput {
482
+ url: string;
483
+ events: string[];
484
+ connectionId?: string;
485
+ secret?: string;
486
+ [key: string]: unknown;
487
+ }
488
+ export interface UpdateWebhookSubscriptionInput {
489
+ url?: string;
490
+ events?: string[];
491
+ status?: "active" | "paused";
492
+ secret?: string;
493
+ [key: string]: unknown;
494
+ }
495
+ export interface WebhookDeliverySummary {
496
+ id: string;
497
+ subscriptionId: string;
498
+ eventType: string;
499
+ status: "delivered" | "failed";
500
+ responseStatus: number | null;
501
+ attempts: number;
502
+ createdAt: IsoDateTime;
503
+ deliveredAt: IsoDateTime | null;
504
+ [key: string]: unknown;
505
+ }
506
+ export interface ListWebhookDeliveriesQuery {
507
+ limit?: number;
508
+ status?: "delivered" | "failed";
509
+ }
510
+ export interface WebhookSubscriptionTestReceipt {
511
+ eventId: string;
512
+ eventType: string;
513
+ subscriptionId: string;
514
+ connectionId: string;
515
+ queuedAt: IsoDateTime;
516
+ }
517
+ export interface WebhookDeliveryReplayReceipt {
518
+ deliveryId: string;
519
+ replayEventId: string;
520
+ subscriptionId: string;
521
+ eventType: string;
522
+ queuedAt: IsoDateTime;
523
+ }
524
+ export type CustomConnectionRequestCategory = "hotels" | "airlines" | "operators" | "dmcs" | "tours" | "other";
525
+ export interface CustomConnectionRequestSummary {
526
+ id: string;
527
+ organizationId: string;
528
+ requesterUserId: string | null;
529
+ supplierName: string;
530
+ website: string | null;
531
+ category: CustomConnectionRequestCategory;
532
+ estimatedVolume: string | null;
533
+ description: string;
534
+ hasCredentials: boolean;
535
+ status: string;
536
+ createdAt: IsoDateTime;
537
+ }
538
+ export interface CreateCustomConnectionRequestInput {
539
+ supplierName: string;
540
+ category: CustomConnectionRequestCategory;
541
+ description: string;
542
+ website?: string;
543
+ estimatedVolume?: string;
544
+ hasCredentials?: boolean;
545
+ }
546
+ export interface AvailabilityCalendarQueryInput {
547
+ productId: string;
548
+ optionId?: string;
549
+ localDateStart?: string;
550
+ localDateEnd?: string;
551
+ [key: string]: unknown;
552
+ }
553
+ export interface CreateBookingInput {
554
+ productId: string;
555
+ optionId?: string;
556
+ unitItems: Array<{
557
+ unitId: string;
558
+ quantity?: number;
559
+ [key: string]: unknown;
560
+ }>;
561
+ contact?: JsonObject;
562
+ resellerReference?: string;
563
+ notes?: string;
564
+ [key: string]: unknown;
565
+ }
566
+ export interface ConfirmBookingInput {
567
+ contact?: JsonObject;
568
+ paymentMethod?: string;
569
+ [key: string]: unknown;
570
+ }
571
+ export interface CancelBookingInput {
572
+ reason?: string | null;
573
+ }
574
+ export interface ListBookingActivitiesQuery {
575
+ from?: IsoDateTime | Date;
576
+ to?: IsoDateTime | Date;
577
+ type?: string | string[];
578
+ limit?: number;
579
+ }
580
+ export interface ConnectChannelHealth {
581
+ connectionId: string;
582
+ status: "healthy" | "degraded" | "down" | "unknown";
583
+ lastSyncAt: IsoDateTime | null;
584
+ staleSeconds: number | null;
585
+ [key: string]: unknown;
586
+ }
587
+ export interface ConnectOptionSummary {
588
+ id: string;
589
+ productId: string;
590
+ title: string;
591
+ summary?: string;
592
+ isDefault: boolean;
593
+ cancellationPolicySummary?: string;
594
+ durationMinutesFrom?: number;
595
+ durationMinutesTo?: number;
596
+ bookable: boolean;
597
+ meta: JsonObject;
598
+ }
599
+ export interface ConnectUnitSummary {
600
+ id: string;
601
+ optionId: string;
602
+ title: string;
603
+ unitType: string;
604
+ summary?: string;
605
+ minQuantity?: number;
606
+ maxQuantity?: number;
607
+ pricingFrom?: JsonObject;
608
+ meta: JsonObject;
609
+ }
610
+ export interface ConnectProductExtraSummary {
611
+ id: string;
612
+ productId: string;
613
+ code?: string;
614
+ name: string;
615
+ description?: string;
616
+ selectionType: string;
617
+ pricingMode: string;
618
+ pricedPerPerson: boolean;
619
+ minQuantity?: number;
620
+ maxQuantity?: number;
621
+ defaultQuantity?: number;
622
+ active: boolean;
623
+ sortOrder: number;
624
+ externalReferences?: JsonObject;
625
+ }
626
+ export interface ConnectOptionExtraConfigSummary {
627
+ id: string;
628
+ optionId: string;
629
+ productExtraId: string;
630
+ selectionType?: string;
631
+ pricingMode?: string;
632
+ pricedPerPerson?: boolean;
633
+ minQuantity?: number;
634
+ maxQuantity?: number;
635
+ defaultQuantity?: number;
636
+ isDefault: boolean;
637
+ active: boolean;
638
+ sortOrder: number;
639
+ notes?: string;
640
+ externalReferences?: JsonObject;
641
+ }
642
+ export interface ConnectAvailabilityQuery {
643
+ productId: string;
644
+ optionId?: string;
645
+ localDateStart?: string;
646
+ localDateEnd?: string;
647
+ }
648
+ export interface ConnectListBookingsQuery {
649
+ localDateStart?: string;
650
+ localDateEnd?: string;
651
+ }
652
+ export interface FlightMultiSearchInput {
653
+ origin: string;
654
+ destination: string;
655
+ departureDate: string;
656
+ returnDate?: string;
657
+ passengers: Array<{
658
+ type: "adult" | "child" | "infant";
659
+ count?: number;
660
+ }>;
661
+ cabin?: "economy" | "premium_economy" | "business" | "first";
662
+ connectionIds?: string[];
663
+ [key: string]: unknown;
664
+ }
665
+ export interface FlightSearchInput extends FlightMultiSearchInput {
666
+ [key: string]: unknown;
667
+ }
668
+ export interface FlightPriceInput {
669
+ offerId: string;
670
+ [key: string]: unknown;
671
+ }
672
+ export interface FlightBookInput {
673
+ offerId: string;
674
+ passengers: Array<JsonObject>;
675
+ contact?: JsonObject;
676
+ [key: string]: unknown;
677
+ }
678
+ export interface FlightSeatSelectionInput {
679
+ segmentId: string;
680
+ selections: Array<{
681
+ passengerId: string;
682
+ seatId: string;
683
+ }>;
684
+ [key: string]: unknown;
685
+ }
686
+ export interface FlightAncillaryInput {
687
+ ancillaryId: string;
688
+ passengerIds?: string[];
689
+ segmentId?: string;
690
+ [key: string]: unknown;
691
+ }
692
+ export interface FlightCheckInInput {
693
+ passengerIds: string[];
694
+ [key: string]: unknown;
695
+ }
696
+ export interface FlightExchangeInput {
697
+ newOfferId: string;
698
+ [key: string]: unknown;
699
+ }
700
+ export interface FlightRefundInput {
701
+ reason?: string;
702
+ [key: string]: unknown;
703
+ }
704
+ export interface FlightSsrInput {
705
+ code: string;
706
+ passengerIds?: string[];
707
+ segmentId?: string;
708
+ [key: string]: unknown;
709
+ }
710
+ export type FlightSearchResult = JsonObject;
711
+ export type FlightOrder = JsonObject;
712
+ export type FlightSeatMap = JsonObject;
713
+ export type FlightAncillaryList = JsonObject;
714
+ export interface ConnectMoney {
715
+ amountMinor: number;
716
+ currency: string;
717
+ currencyPrecision: number;
718
+ }
719
+ export type AccommodationCategory = "hotel" | "apartment" | "villa" | "hostel" | "guesthouse" | "resort" | "bnb" | "other";
720
+ export type BoardCode = "RO" | "BB" | "HB" | "FB" | "AI";
721
+ export type RatePlanGuaranteeMode = "none" | "card_hold" | "deposit" | "prepay";
722
+ export type RatePlanPricingMode = "static" | "dynamic";
723
+ export type OccupancyPricingMode = "per_room" | "per_person" | "per_room_with_per_extra_person";
724
+ export type StayBookingStatus = "pending" | "confirmed" | "cancelled" | "no_show" | "completed";
725
+ export type StayHoldStatus = "active" | "expired" | "consumed" | "released";
726
+ export type GuestType = "adult" | "child" | "infant";
727
+ export type BedType = "single" | "double" | "queen" | "king" | "twin" | "sofa" | "bunk";
728
+ export type CancellationPenalty = {
729
+ type: "percentage";
730
+ value: number;
731
+ } | {
732
+ type: "first_night";
733
+ } | {
734
+ type: "fixed";
735
+ amount: ConnectMoney;
736
+ } | {
737
+ type: "full";
738
+ };
739
+ export interface CancellationDeadline {
740
+ fromHoursBeforeCheckIn: number;
741
+ toHoursBeforeCheckIn: number;
742
+ penalty: CancellationPenalty;
743
+ }
744
+ export interface CancellationPolicy {
745
+ freeCancellationUntil?: IsoDateTime | null;
746
+ deadlines: CancellationDeadline[];
747
+ }
748
+ export interface AccommodationLocation {
749
+ countryCode: string;
750
+ region?: string | null;
751
+ city?: string | null;
752
+ address?: {
753
+ line1: string;
754
+ line2?: string | null;
755
+ postalCode?: string | null;
756
+ } | null;
757
+ latitude?: number | null;
758
+ longitude?: number | null;
759
+ destinationCodes?: string[];
760
+ }
761
+ export interface AccommodationImage {
762
+ url: string;
763
+ caption?: string;
764
+ tags?: string[];
765
+ sortOrder?: number;
766
+ }
767
+ export interface AccommodationPolicies {
768
+ checkInFrom?: string;
769
+ checkInTo?: string;
770
+ checkOutFrom?: string;
771
+ checkOutTo?: string;
772
+ childrenWelcome?: boolean;
773
+ petsWelcome?: boolean;
774
+ smokingAllowed?: boolean;
775
+ extraBeds?: {
776
+ max?: number;
777
+ ageRange?: {
778
+ min: number;
779
+ max: number;
780
+ };
781
+ };
782
+ }
783
+ export interface Accommodation {
784
+ id: string;
785
+ connectionId: string;
786
+ externalId: string;
787
+ category: AccommodationCategory;
788
+ name: string;
789
+ slug?: string;
790
+ description?: string;
791
+ shortDescription?: string;
792
+ rating?: {
793
+ stars?: number;
794
+ source?: string;
795
+ };
796
+ location: AccommodationLocation;
797
+ contact?: {
798
+ phone?: string;
799
+ email?: string;
800
+ website?: string;
801
+ };
802
+ amenities: string[];
803
+ policies: AccommodationPolicies;
804
+ images: AccommodationImage[];
805
+ taxesIncludedInPrice?: boolean;
806
+ locale: string;
807
+ meta: JsonObject;
808
+ }
809
+ export interface RoomTypeOccupancy {
810
+ maxAdults: number;
811
+ maxChildren: number;
812
+ maxInfants: number;
813
+ maxTotal: number;
814
+ standardOccupancy: number;
815
+ }
816
+ export interface RoomTypeBed {
817
+ type: BedType;
818
+ count: number;
819
+ }
820
+ export interface RoomType {
821
+ id: string;
822
+ connectionId: string;
823
+ accommodationId: string;
824
+ externalId: string;
825
+ name: string;
826
+ description?: string;
827
+ occupancy: RoomTypeOccupancy;
828
+ beds: RoomTypeBed[];
829
+ area?: {
830
+ value: number;
831
+ unit: "sqm" | "sqft";
832
+ };
833
+ view?: string;
834
+ amenities: string[];
835
+ images: AccommodationImage[];
836
+ locale: string;
837
+ meta: JsonObject;
838
+ }
839
+ export interface RatePlanRestrictions {
840
+ minStay?: number;
841
+ maxStay?: number;
842
+ advancePurchaseDays?: number;
843
+ closedToArrivalWeekdays?: number[];
844
+ closedToDepartureWeekdays?: number[];
845
+ }
846
+ export interface RatePlan {
847
+ id: string;
848
+ connectionId: string;
849
+ accommodationId: string;
850
+ roomTypeId: string;
851
+ externalId: string;
852
+ code: string;
853
+ name: string;
854
+ description?: string;
855
+ board: BoardCode;
856
+ refundable: boolean;
857
+ cancellationPolicy: CancellationPolicy;
858
+ guaranteeMode: RatePlanGuaranteeMode;
859
+ currency: string;
860
+ occupancyPricingMode: OccupancyPricingMode;
861
+ pricingMode: RatePlanPricingMode;
862
+ restrictions?: RatePlanRestrictions;
863
+ locale: string;
864
+ meta: JsonObject;
865
+ }
866
+ export interface StaySearchRoom {
867
+ adults: number;
868
+ children?: number;
869
+ childrenAges?: number[];
870
+ infants?: number;
871
+ }
872
+ export interface StaySearchQuery {
873
+ destination?: {
874
+ countryCode?: string;
875
+ region?: string;
876
+ city?: string;
877
+ };
878
+ near?: {
879
+ latitude: number;
880
+ longitude: number;
881
+ radiusKm: number;
882
+ };
883
+ accommodationIds?: string[];
884
+ checkIn: string;
885
+ checkOut: string;
886
+ rooms: StaySearchRoom[];
887
+ category?: AccommodationCategory[];
888
+ minStars?: number;
889
+ amenities?: string[];
890
+ boards?: BoardCode[];
891
+ refundableOnly?: boolean;
892
+ maxPrice?: ConnectMoney;
893
+ locale?: string;
894
+ limit?: number;
895
+ cursor?: string;
896
+ }
897
+ export interface StayOfferRoom {
898
+ roomTypeId: string;
899
+ ratePlanId: string;
900
+ occupancy: StaySearchRoom;
901
+ nights: number;
902
+ nightlyBreakdown: Array<{
903
+ date: string;
904
+ amount: ConnectMoney;
905
+ }>;
906
+ subtotal: ConnectMoney;
907
+ taxes: ConnectMoney;
908
+ fees: ConnectMoney;
909
+ total: ConnectMoney;
910
+ cancellationPolicy: CancellationPolicy;
911
+ }
912
+ export interface StayOfferTotals {
913
+ subtotal: ConnectMoney;
914
+ taxes: ConnectMoney;
915
+ fees: ConnectMoney;
916
+ total: ConnectMoney;
917
+ }
918
+ export interface StayOffer {
919
+ id: string;
920
+ connectionId: string;
921
+ accommodationId: string;
922
+ rooms: StayOfferRoom[];
923
+ totals: StayOfferTotals;
924
+ expiresAt: IsoDateTime;
925
+ }
926
+ export interface StayHold {
927
+ id: string;
928
+ offerSnapshot: StayOffer;
929
+ status: StayHoldStatus;
930
+ expiresAt: IsoDateTime;
931
+ }
932
+ export interface Guest {
933
+ type: GuestType;
934
+ firstName: string;
935
+ lastName: string;
936
+ age?: number;
937
+ dateOfBirth?: string;
938
+ title?: string;
939
+ email?: string;
940
+ phone?: string;
941
+ passport?: {
942
+ number: string;
943
+ country: string;
944
+ expiresAt: string;
945
+ };
946
+ }
947
+ export interface StayBookingContact {
948
+ email: string;
949
+ phone?: string;
950
+ }
951
+ export interface StayBookingRoom {
952
+ roomTypeId: string;
953
+ ratePlanId: string;
954
+ checkIn: string;
955
+ checkOut: string;
956
+ occupancy: StaySearchRoom;
957
+ guests: Guest[];
958
+ totals: StayOfferRoom;
959
+ }
960
+ export interface PaymentReference {
961
+ provider: string;
962
+ reference: string;
963
+ capturedAt?: IsoDateTime;
964
+ meta?: JsonObject;
965
+ }
966
+ export interface StayBooking {
967
+ id: string;
968
+ connectionId: string;
969
+ accommodationId: string;
970
+ status: StayBookingStatus;
971
+ reference: string;
972
+ externalReference?: string;
973
+ voucher?: {
974
+ url?: string;
975
+ codes?: string[];
976
+ };
977
+ rooms: StayBookingRoom[];
978
+ leadGuest: Guest;
979
+ contact: StayBookingContact;
980
+ totals: StayOfferTotals;
981
+ cancellationPolicy: CancellationPolicy;
982
+ cancellation?: {
983
+ cancelledAt: IsoDateTime;
984
+ reason?: string;
985
+ refundAmount?: ConnectMoney;
986
+ };
987
+ payment?: PaymentReference;
988
+ notes?: string;
989
+ createdAt: IsoDateTime;
990
+ updatedAt: IsoDateTime;
991
+ }
992
+ export interface StayConfirmInput {
993
+ holdId: string;
994
+ leadGuest: Guest;
995
+ contact: StayBookingContact;
996
+ guestsByRoom: Guest[][];
997
+ paymentReference?: PaymentReference;
998
+ notes?: string;
999
+ }
1000
+ export interface ConnectionDiagnostic {
1001
+ connectionId: string;
1002
+ status: "ok" | "timeout" | "error" | "unauthorized";
1003
+ message?: string;
1004
+ durationMs?: number;
1005
+ }
1006
+ export interface StaySearchResponse {
1007
+ offers: StayOffer[];
1008
+ connectionDiagnostics?: ConnectionDiagnostic[];
1009
+ nextCursor?: string | null;
1010
+ }
1011
+ export type CruiseType = "ocean" | "river" | "expedition" | "coastal" | "yacht" | "sailing";
1012
+ export type CabinRoomType = "inside" | "oceanview" | "balcony" | "suite" | "penthouse" | "single" | "studio";
1013
+ export type CruiseSailingStatus = "open" | "on_request" | "wait_list" | "sold_out" | "closed";
1014
+ export type CruisePriceAvailability = "available" | "limited" | "on_request" | "wait_list" | "sold_out";
1015
+ export type CruiseInclusionKind = "meals" | "drinks" | "gratuities" | "transfers" | "excursions" | "wifi" | "flights" | "other";
1016
+ export type CruiseEnrichmentKind = "naturalist" | "historian" | "photographer" | "lecturer" | "domain_expert" | "other";
1017
+ export type CruiseFareComponentKind = "gratuity" | "ncf" | "port_charge" | "tax" | "airfare" | "transfer" | "insurance" | "single_supplement" | "other";
1018
+ export type CruiseBookingMode = "inquiry" | "reserve";
1019
+ export type CruiseBookingStatus = "inquiry" | "pending" | "confirmed" | "cancelled" | "no_show" | "completed";
1020
+ export type CruiseQuoteStatus = "active" | "expired" | "consumed" | "released";
1021
+ export type CruisePassengerType = "adult" | "child" | "infant";
1022
+ export interface PortRef {
1023
+ code?: string;
1024
+ name: string;
1025
+ countryCode?: string;
1026
+ }
1027
+ export interface CruiseImage {
1028
+ url: string;
1029
+ caption?: string;
1030
+ isCover?: boolean;
1031
+ sortOrder?: number;
1032
+ }
1033
+ export interface CruiseMedia {
1034
+ url: string;
1035
+ mediaType: "image" | "video";
1036
+ isCover?: boolean;
1037
+ caption?: string;
1038
+ }
1039
+ export interface CruiseInclusion {
1040
+ kind: CruiseInclusionKind;
1041
+ label: string;
1042
+ }
1043
+ export interface CruiseEnrichment {
1044
+ kind: CruiseEnrichmentKind;
1045
+ name: string;
1046
+ description?: string;
1047
+ }
1048
+ export type CruiseCancellationPenalty = {
1049
+ type: "percentage";
1050
+ value: number;
1051
+ } | {
1052
+ type: "fixed";
1053
+ amount: ConnectMoney;
1054
+ } | {
1055
+ type: "full";
1056
+ };
1057
+ export interface CruiseCancellationDeadline {
1058
+ fromDaysBeforeDeparture: number;
1059
+ toDaysBeforeDeparture: number;
1060
+ penalty: CruiseCancellationPenalty;
1061
+ }
1062
+ export interface CruiseCancellationPolicy {
1063
+ deadlines: CruiseCancellationDeadline[];
1064
+ notes?: string;
1065
+ }
1066
+ export interface CruiseLine {
1067
+ id: string;
1068
+ connectionId: string;
1069
+ externalId: string;
1070
+ name: string;
1071
+ slug?: string;
1072
+ description?: string;
1073
+ logoUrl?: string;
1074
+ websiteUrl?: string;
1075
+ fleetSize?: number;
1076
+ locale: string;
1077
+ meta: JsonObject;
1078
+ }
1079
+ export interface Ship {
1080
+ id: string;
1081
+ connectionId: string;
1082
+ externalId: string;
1083
+ cruiseLineId: string;
1084
+ name: string;
1085
+ shipType: CruiseType;
1086
+ capacityGuests?: number;
1087
+ cabinCount?: number;
1088
+ deckCount?: number;
1089
+ yearBuilt?: number;
1090
+ yearRefurbished?: number;
1091
+ amenities: string[];
1092
+ images: CruiseImage[];
1093
+ locale: string;
1094
+ meta: JsonObject;
1095
+ }
1096
+ export interface Cruise {
1097
+ id: string;
1098
+ connectionId: string;
1099
+ externalId: string;
1100
+ cruiseLineId: string;
1101
+ shipId: string;
1102
+ name: string;
1103
+ slug?: string;
1104
+ cruiseType: CruiseType;
1105
+ nights: number;
1106
+ highlights?: string[];
1107
+ description?: string;
1108
+ destinations?: string[];
1109
+ embarkationPort?: PortRef;
1110
+ disembarkationPort?: PortRef;
1111
+ inclusions: CruiseInclusion[];
1112
+ enrichmentPrograms?: CruiseEnrichment[];
1113
+ media: CruiseMedia[];
1114
+ locale: string;
1115
+ meta: JsonObject;
1116
+ }
1117
+ export interface CabinCategoryOccupancy {
1118
+ adults: number;
1119
+ children?: number;
1120
+ total: number;
1121
+ }
1122
+ export interface CabinCategory {
1123
+ id: string;
1124
+ connectionId: string;
1125
+ externalId: string;
1126
+ shipId: string;
1127
+ code: string;
1128
+ name: string;
1129
+ roomType: CabinRoomType;
1130
+ maxOccupancy: CabinCategoryOccupancy;
1131
+ area?: {
1132
+ value: number;
1133
+ unit: "sqm" | "sqft";
1134
+ };
1135
+ features: string[];
1136
+ images: CruiseImage[];
1137
+ locale: string;
1138
+ meta: JsonObject;
1139
+ }
1140
+ export interface ItineraryDay {
1141
+ dayNumber: number;
1142
+ date: string;
1143
+ title?: string;
1144
+ port?: PortRef;
1145
+ isSeaDay: boolean;
1146
+ isOvernight: boolean;
1147
+ arriveAt?: IsoDateTime;
1148
+ departAt?: IsoDateTime;
1149
+ description?: string;
1150
+ meals?: Array<"breakfast" | "lunch" | "dinner">;
1151
+ }
1152
+ export interface Sailing {
1153
+ id: string;
1154
+ connectionId: string;
1155
+ externalId: string;
1156
+ cruiseId: string;
1157
+ shipId: string;
1158
+ departureDate: string;
1159
+ returnDate: string;
1160
+ nights: number;
1161
+ embarkationPort: PortRef;
1162
+ disembarkationPort: PortRef;
1163
+ itinerary: ItineraryDay[];
1164
+ salesStatus: CruiseSailingStatus;
1165
+ bookableUntil?: IsoDateTime;
1166
+ meta: JsonObject;
1167
+ }
1168
+ export interface CruisePassengerOccupancy {
1169
+ adults: number;
1170
+ children?: number;
1171
+ childrenAges?: number[];
1172
+ infants?: number;
1173
+ }
1174
+ export interface CruiseFareComponent {
1175
+ kind: CruiseFareComponentKind;
1176
+ amount: ConnectMoney;
1177
+ label?: string;
1178
+ }
1179
+ export interface CabinPricing {
1180
+ connectionId: string;
1181
+ sailingId: string;
1182
+ cabinCategoryId: string;
1183
+ occupancy: CruisePassengerOccupancy;
1184
+ fareCode?: string;
1185
+ pricePerPerson: ConnectMoney;
1186
+ totalPrice: ConnectMoney;
1187
+ components: CruiseFareComponent[];
1188
+ availability: CruisePriceAvailability;
1189
+ bookableUntil?: IsoDateTime;
1190
+ cancellationPolicy: CruiseCancellationPolicy;
1191
+ refreshedAt: IsoDateTime;
1192
+ }
1193
+ export interface CruiseSearchQuery {
1194
+ destination?: {
1195
+ region?: string;
1196
+ portCodes?: string[];
1197
+ };
1198
+ departureDate?: {
1199
+ from?: string;
1200
+ to?: string;
1201
+ };
1202
+ durationNights?: {
1203
+ min?: number;
1204
+ max?: number;
1205
+ };
1206
+ cruiseType?: CruiseType[];
1207
+ cruiseLineIds?: string[];
1208
+ shipIds?: string[];
1209
+ occupancy: CruisePassengerOccupancy;
1210
+ cabinCategories?: CabinRoomType[];
1211
+ maxPricePerPerson?: ConnectMoney;
1212
+ locale?: string;
1213
+ limit?: number;
1214
+ cursor?: string;
1215
+ }
1216
+ export interface CruiseOfferPricing {
1217
+ pricePerPerson: ConnectMoney;
1218
+ totalPrice: ConnectMoney;
1219
+ components: CruiseFareComponent[];
1220
+ }
1221
+ export interface CruiseOffer {
1222
+ id: string;
1223
+ connectionId: string;
1224
+ sailingId: string;
1225
+ cruiseId: string;
1226
+ shipId: string;
1227
+ cabinCategoryId: string;
1228
+ fareCode?: string;
1229
+ occupancy: CruisePassengerOccupancy;
1230
+ pricing: CruiseOfferPricing;
1231
+ cancellationPolicy: CruiseCancellationPolicy;
1232
+ expiresAt: IsoDateTime;
1233
+ bookableUntil?: IsoDateTime;
1234
+ }
1235
+ export interface CruiseLockSelectionInput {
1236
+ sailingExternalId: string;
1237
+ cabinCategoryExternalId: string;
1238
+ fareCode?: string;
1239
+ occupancy: CruisePassengerOccupancy;
1240
+ ttlHours?: number;
1241
+ }
1242
+ export interface CruiseQuote {
1243
+ id: string;
1244
+ offerSnapshot: CruiseOffer;
1245
+ status: CruiseQuoteStatus;
1246
+ expiresAt: IsoDateTime;
1247
+ }
1248
+ export interface CruisePassport {
1249
+ number: string;
1250
+ country: string;
1251
+ expiresAt: string;
1252
+ }
1253
+ export interface CruisePassenger {
1254
+ type: CruisePassengerType;
1255
+ firstName: string;
1256
+ lastName: string;
1257
+ dateOfBirth?: string;
1258
+ nationality?: string;
1259
+ passport?: CruisePassport;
1260
+ email?: string;
1261
+ phone?: string;
1262
+ preferences?: {
1263
+ dining?: string;
1264
+ bedding?: string;
1265
+ dietary?: string[];
1266
+ };
1267
+ }
1268
+ export interface CruiseContact {
1269
+ email: string;
1270
+ phone?: string;
1271
+ address?: {
1272
+ line1: string;
1273
+ line2?: string;
1274
+ city?: string;
1275
+ region?: string;
1276
+ postalCode?: string;
1277
+ countryCode?: string;
1278
+ };
1279
+ }
1280
+ export interface CruisePaymentReference {
1281
+ provider: string;
1282
+ reference: string;
1283
+ capturedAt?: IsoDateTime;
1284
+ meta?: JsonObject;
1285
+ }
1286
+ export interface CruiseBookingDocument {
1287
+ kind: "voucher" | "ticket" | "invoice" | "manifest";
1288
+ url: string;
1289
+ label?: string;
1290
+ }
1291
+ export interface CruiseBooking {
1292
+ id: string;
1293
+ connectionId: string;
1294
+ sailingId: string;
1295
+ cabinCategoryId: string;
1296
+ mode: CruiseBookingMode;
1297
+ status: CruiseBookingStatus;
1298
+ reference: string;
1299
+ externalReference?: string;
1300
+ occupancy: CruisePassengerOccupancy;
1301
+ passengers: CruisePassenger[];
1302
+ leadPassenger: CruisePassenger;
1303
+ contact: CruiseContact;
1304
+ totals?: CruiseOfferPricing;
1305
+ cancellationPolicy?: CruiseCancellationPolicy;
1306
+ cancellation?: {
1307
+ cancelledAt: IsoDateTime;
1308
+ reason?: string;
1309
+ refundAmount?: ConnectMoney;
1310
+ };
1311
+ payment?: CruisePaymentReference;
1312
+ documents?: CruiseBookingDocument[];
1313
+ notes?: string;
1314
+ createdAt: IsoDateTime;
1315
+ updatedAt: IsoDateTime;
1316
+ }
1317
+ export interface CruiseInquireInput {
1318
+ sailingId: string;
1319
+ cabinCategoryId: string;
1320
+ occupancy: CruisePassengerOccupancy;
1321
+ leadPassenger: CruisePassenger;
1322
+ contact: CruiseContact;
1323
+ passengers?: CruisePassenger[];
1324
+ notes?: string;
1325
+ }
1326
+ export interface CruiseConfirmInput {
1327
+ quoteId: string;
1328
+ leadPassenger: CruisePassenger;
1329
+ contact: CruiseContact;
1330
+ passengers: CruisePassenger[];
1331
+ paymentReference?: CruisePaymentReference;
1332
+ notes?: string;
1333
+ }
1334
+ export interface CruiseConnectionDiagnostic {
1335
+ connectionId: string;
1336
+ status: "ok" | "timeout" | "error" | "unauthorized";
1337
+ message?: string;
1338
+ durationMs?: number;
1339
+ }
1340
+ export interface CruiseSearchResponse {
1341
+ offers: CruiseOffer[];
1342
+ connectionDiagnostics?: CruiseConnectionDiagnostic[];
1343
+ nextCursor?: string | null;
1344
+ }
1345
+ export interface ListCruisesQuery {
1346
+ cruiseType?: CruiseType | CruiseType[];
1347
+ cruiseLineExternalId?: string | string[];
1348
+ shipExternalId?: string | string[];
1349
+ minNights?: number;
1350
+ maxNights?: number;
1351
+ locale?: string;
1352
+ limit?: number;
1353
+ }
1354
+ export interface OperatorCruiseSummary {
1355
+ id: string;
1356
+ connectionId: string;
1357
+ externalId: string;
1358
+ cruiseLineExternalId: string;
1359
+ shipExternalId: string;
1360
+ name: string;
1361
+ slug: string | null;
1362
+ cruiseType: string;
1363
+ nights: number;
1364
+ destinations: string[] | null;
1365
+ embarkationPortCode: string | null;
1366
+ disembarkationPortCode: string | null;
1367
+ locale: string;
1368
+ payload: JsonObject;
1369
+ lastSyncedAt: IsoDateTime;
1370
+ updatedAt: IsoDateTime;
1371
+ providerKey: string | null;
1372
+ supplierName: string;
1373
+ [key: string]: unknown;
1374
+ }
1375
+ export interface OperatorCruiseDetail {
1376
+ cruise: JsonObject;
1377
+ providerKey: string | null;
1378
+ supplierName: string;
1379
+ }
1380
+ export interface ListSailingsQuery {
1381
+ cruiseExternalId?: string | string[];
1382
+ shipExternalId?: string | string[];
1383
+ salesStatus?: string | string[];
1384
+ departureFrom?: string;
1385
+ departureTo?: string;
1386
+ limit?: number;
1387
+ }
1388
+ export interface ListSailingPricingQuery {
1389
+ cabinCategoryExternalId?: string;
1390
+ fareCode?: string;
1391
+ occupancySignature?: string;
1392
+ limit?: number;
1393
+ }
1394
+ export interface OperatorSailingSummary {
1395
+ sailing: JsonObject;
1396
+ providerKey: string | null;
1397
+ supplierName: string;
1398
+ }
1399
+ export interface OperatorSailingDetail {
1400
+ sailing: JsonObject;
1401
+ providerKey: string | null;
1402
+ supplierName: string;
1403
+ }
1404
+ export interface ListItineraryDay {
1405
+ connectionId: string;
1406
+ sailingExternalId: string;
1407
+ dayNumber: number;
1408
+ date: string;
1409
+ title: string | null;
1410
+ portCode: string | null;
1411
+ portName: string | null;
1412
+ countryCode: string | null;
1413
+ isSeaDay: boolean;
1414
+ isOvernight: boolean;
1415
+ arriveAt: IsoDateTime | null;
1416
+ departAt: IsoDateTime | null;
1417
+ payload: JsonObject;
1418
+ [key: string]: unknown;
1419
+ }
1420
+ //# sourceMappingURL=types.d.ts.map