@peektravel/app-utilities 0.9.1 → 0.9.3

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.
package/dist/index.d.cts CHANGED
@@ -748,6 +748,11 @@ interface Booking {
748
748
  portalUrl: string | null;
749
749
  /** Operator notes on the booking (`""` when none). */
750
750
  notes: string;
751
+ /**
752
+ * Operator-facing custom status set on the booking (via
753
+ * {@link BookingService.updateCustomStatus}), or `null` when none is set.
754
+ */
755
+ customStatus: string | null;
751
756
  /** Total booking value, human-formatted (e.g. `"$75.00"`). `""` if absent. */
752
757
  valueDisplay: string;
753
758
  /** Total booking value as a numeric string. `""` if absent. */
@@ -899,6 +904,15 @@ interface CreateBookingInput {
899
904
  guest: CreateBookingGuest;
900
905
  /** Operator notes to attach. */
901
906
  operatorNotes?: string;
907
+ /**
908
+ * Total list price for the booking, as a positive number string (commas
909
+ * allowed — `"100"`, `"1,000"`, `"10.00"`). When set, it is split evenly
910
+ * across the booking's tickets (each of the first n-1 tickets gets
911
+ * `floor(total / n)`, the last ticket the remainder) and sent per ticket in
912
+ * the activity's currency (falling back to `"USD"`). Omit to let Peek price
913
+ * the tickets from the activity's configured pricing.
914
+ */
915
+ listPrice?: string;
902
916
  /**
903
917
  * Answers to the activity's custom questions. When non-empty, the activity's
904
918
  * custom questions are fetched and each answer is validated/resolved before
@@ -914,6 +928,16 @@ interface CreateBookingInput {
914
928
  * Default: `false`.
915
929
  */
916
930
  requireRequiredQuestions?: boolean;
931
+ /**
932
+ * When `true`, a `customQuestionAnswers` entry whose `questionIdOrText` is a
933
+ * `cq_…` id is accepted even if that id is **not** among the activity's custom
934
+ * questions — the check that a question id must match the activity's list is
935
+ * skipped, and the answer is sent as-is (as a text answer). Entries given by
936
+ * question **name** are unaffected: they still must match a question, so the
937
+ * activity's questions are fetched only when a by-name answer (or
938
+ * `requireRequiredQuestions`) needs them. Default: `false`.
939
+ */
940
+ acceptAllCustomQuestionIds?: boolean;
917
941
  /** Suppress the customer confirmation email. Default: false. */
918
942
  skipCustomerEmail?: boolean;
919
943
  /** Clone the quote from an existing order. */
@@ -943,6 +967,206 @@ interface CreatedBooking {
943
967
  transactionId?: string;
944
968
  }
945
969
 
970
+ /**
971
+ * The clean, transport-agnostic data model for a booking's custom-field
972
+ * metadata (the booking's `fieldResponses`).
973
+ *
974
+ * Each {@link MetaData} entry flattens the field definition (id/name/slug/type),
975
+ * its prompt (label/hint/required), and the response `refid`, and carries a
976
+ * single typed {@link MetaDataValue} — a discriminated union (keyed by `kind`)
977
+ * mirroring the gateway's `FieldResponseValue` variants, so exactly one shape is
978
+ * present per entry and consumers narrow on `kind`.
979
+ */
980
+ /** Barcode symbology reported on a `kind: "barcode"` metadata value. */
981
+ type MetaDataBarcodeType = "BARCODE_CODE128" | "BARCODE_CODE39" | "DATA_MATRIX" | "EAN_13" | "ITF" | "QR_CODE" | "TEXT" | "UPC";
982
+ /** Time unit reported on a `kind: "duration"` metadata value. */
983
+ type MetaDataDurationUnit = "SECONDS" | "MINUTES" | "HOURS" | "DAYS" | "WEEKS" | "MONTHS" | "YEARS";
984
+ /** Mass unit reported on a `kind: "weight"` metadata value. */
985
+ type MetaDataWeightUnit = "KILOGRAM" | "POUND" | "STONE";
986
+ /** Volume unit reported on a `kind: "volume"` metadata value. */
987
+ type MetaDataVolumeUnit = "GALLON";
988
+ /**
989
+ * A booking custom-field response value — a discriminated union keyed by `kind`,
990
+ * one variant per gateway `…FieldResponseValue` type. Numeric `Int` values are
991
+ * `number`; `Decimal` values are kept as strings to avoid float-precision loss;
992
+ * `Date`/`Time` values are ISO strings.
993
+ *
994
+ * Every variant also carries a `displayValue` — a human-readable, display-safe
995
+ * string rendering of the value (empty when the underlying value is absent). The
996
+ * `html` variant's `displayValue` is HTML-escaped so it is safe to render as
997
+ * text.
998
+ */
999
+ type MetaDataValue = {
1000
+ kind: "age";
1001
+ age: number;
1002
+ displayValue: string;
1003
+ } | {
1004
+ kind: "attachment";
1005
+ attachmentUrl: string;
1006
+ mime: string | null;
1007
+ name: string | null;
1008
+ size: number | null;
1009
+ displayValue: string;
1010
+ } | {
1011
+ kind: "barcode";
1012
+ barcodeType: MetaDataBarcodeType | null;
1013
+ barcodeValue: string;
1014
+ displayValue: string;
1015
+ } | {
1016
+ kind: "boolean";
1017
+ boolean: boolean;
1018
+ displayValue: string;
1019
+ } | {
1020
+ kind: "checkbox";
1021
+ isChecked: boolean;
1022
+ displayValue: string;
1023
+ } | {
1024
+ kind: "currency";
1025
+ currency: string;
1026
+ displayValue: string;
1027
+ } | {
1028
+ kind: "date";
1029
+ date: string;
1030
+ displayValue: string;
1031
+ } | {
1032
+ kind: "decimal";
1033
+ decimal: string | null;
1034
+ displayValue: string;
1035
+ } | {
1036
+ kind: "duration";
1037
+ amount: number;
1038
+ unit: MetaDataDurationUnit | null;
1039
+ displayValue: string;
1040
+ } | {
1041
+ kind: "email";
1042
+ email: string | null;
1043
+ displayValue: string;
1044
+ } | {
1045
+ kind: "guest";
1046
+ name: string | null;
1047
+ email: string | null;
1048
+ dateOfBirth: string | null;
1049
+ notes: string | null;
1050
+ waiverSigned: boolean | null;
1051
+ displayValue: string;
1052
+ } | {
1053
+ kind: "html";
1054
+ html: string;
1055
+ displayValue: string;
1056
+ } | {
1057
+ kind: "imageUrl";
1058
+ imageUrl: string;
1059
+ displayValue: string;
1060
+ } | {
1061
+ kind: "integer";
1062
+ integer: number;
1063
+ displayValue: string;
1064
+ } | {
1065
+ kind: "location";
1066
+ country: string | null;
1067
+ county: string | null;
1068
+ locality: string | null;
1069
+ postalCode: string | null;
1070
+ region: string | null;
1071
+ streetAddress: string | null;
1072
+ displayValue: string;
1073
+ } | {
1074
+ kind: "longText";
1075
+ longText: string;
1076
+ displayValue: string;
1077
+ } | {
1078
+ kind: "meta";
1079
+ meta: unknown;
1080
+ displayValue: string;
1081
+ } | {
1082
+ kind: "percent";
1083
+ percent: string | null;
1084
+ displayValue: string;
1085
+ } | {
1086
+ kind: "phone";
1087
+ phone: string;
1088
+ displayValue: string;
1089
+ } | {
1090
+ kind: "shortText";
1091
+ shortText: string;
1092
+ displayValue: string;
1093
+ } | {
1094
+ kind: "time";
1095
+ time: string;
1096
+ displayValue: string;
1097
+ } | {
1098
+ kind: "url";
1099
+ url: string | null;
1100
+ displayValue: string;
1101
+ } | {
1102
+ kind: "volume";
1103
+ amount: string;
1104
+ unit: MetaDataVolumeUnit | null;
1105
+ displayValue: string;
1106
+ } | {
1107
+ kind: "weight";
1108
+ amount: string;
1109
+ unit: MetaDataWeightUnit | null;
1110
+ displayValue: string;
1111
+ };
1112
+ /** A single booking custom-field response (one `fieldResponse`). */
1113
+ interface MetaData {
1114
+ /** Field definition id. */
1115
+ id: string;
1116
+ /** Field name (human label). */
1117
+ name: string;
1118
+ /**
1119
+ * Field slug. When an `integrator` filter is applied, the matched
1120
+ * `integrator:<integrator>:` prefix is stripped off (e.g.
1121
+ * `integrator:bob:booking_url` → `booking_url`).
1122
+ */
1123
+ slug: string;
1124
+ /** Raw field type reported by the gateway (kept as a string). */
1125
+ type: string;
1126
+ /** Prompt label shown for the field, or `null` when the field has no prompt. */
1127
+ prompt: string | null;
1128
+ /** Prompt hint text, or `null`. */
1129
+ promptHint: string | null;
1130
+ /** Whether the field is required (`false` when the field has no prompt). */
1131
+ isRequired: boolean;
1132
+ /** The response's reference id. */
1133
+ refid: string;
1134
+ /**
1135
+ * The typed response value, or `null` when absent or of an unrecognized
1136
+ * (future) variant.
1137
+ */
1138
+ value: MetaDataValue | null;
1139
+ }
1140
+ /** A guest entry for `BookingService.setMetaDataGuest`. */
1141
+ interface SetMetaDataGuestInput {
1142
+ /** Guest name (required). */
1143
+ name: string;
1144
+ /** Guest email (required). */
1145
+ email: string;
1146
+ /** Date of birth as an ISO date (e.g. `"2010-06-21"`). */
1147
+ dateOfBirth?: string;
1148
+ /** Whether the guest signed the waiver. */
1149
+ waiverSigned?: boolean;
1150
+ /** Free-text notes. */
1151
+ notes?: string;
1152
+ }
1153
+ /** An attachment entry for `BookingService.setMetaDataAttachment`. */
1154
+ interface SetMetaDataAttachmentInput {
1155
+ /** Display name for the attachment (required). */
1156
+ name: string;
1157
+ /** URL of the attachment (required). */
1158
+ attachmentUrl: string;
1159
+ }
1160
+ /** The result of a `setMetaData…` write. */
1161
+ interface SetMetaDataResult {
1162
+ /** Whether the gateway reported the upsert succeeded. */
1163
+ success: boolean;
1164
+ /** The booking id echoed back (falls back to the requested id). */
1165
+ bookingId: string;
1166
+ /** The gateway's success or error message (`""` when none). */
1167
+ message: string;
1168
+ }
1169
+
946
1170
  /**
947
1171
  * The clean data model for a booking's payments on file.
948
1172
  */
@@ -1119,6 +1343,12 @@ interface BookingServiceOptions {
1119
1343
  pageSize?: number;
1120
1344
  /** Cross-cutting access options (PII exposure). Default: PII off. */
1121
1345
  accessOptions?: AccessOptions;
1346
+ /**
1347
+ * Integrator id used to scope `getMetaData` results — only fields whose slug
1348
+ * starts with `integrator:<integrator>:` are returned. Defaults to `""` (set
1349
+ * by the access service to the install's issuer).
1350
+ */
1351
+ integrator?: string;
1122
1352
  }
1123
1353
  /** Dependencies the {@link BookingService} composes for add-on resolution. */
1124
1354
  interface BookingServiceDeps {
@@ -1142,6 +1372,8 @@ declare class BookingService {
1142
1372
  private readonly pageSize;
1143
1373
  /** Whether customer PII is requested and payment operations are allowed. */
1144
1374
  private readonly fullCustomerAccess;
1375
+ /** Integrator id scoping `getMetaData` results. */
1376
+ private readonly integrator;
1145
1377
  constructor(client: GraphQLClient, deps: BookingServiceDeps, options?: BookingServiceOptions);
1146
1378
  /**
1147
1379
  * Throws a {@link PiiAccessDisabledError} for `operation` when this service was
@@ -1171,6 +1403,51 @@ declare class BookingService {
1171
1403
  searchByTimeslot(timeslotId: string, options?: BookingReadOptions): Promise<Booking[]>;
1172
1404
  /** Returns the guests on a booking (primary guest included). */
1173
1405
  getGuests(bookingId: string): Promise<Guest[]>;
1406
+ /**
1407
+ * Returns a booking's custom-field metadata (its `fieldResponses`), scoped to
1408
+ * this service's integrator. Only fields whose slug starts with
1409
+ * `integrator:<integrator>:` are returned, and that prefix is stripped from
1410
+ * each returned `slug`. Returns `[]` when the booking is not found or has no
1411
+ * matching fields.
1412
+ *
1413
+ * @example
1414
+ * ```ts
1415
+ * const meta = await peek.getBookingService().getMetaData("b_abc123");
1416
+ * for (const field of meta) {
1417
+ * if (field.value?.kind === "url") console.log(field.slug, field.value.url);
1418
+ * }
1419
+ * ```
1420
+ */
1421
+ getMetaData(bookingId: string): Promise<MetaData[]>;
1422
+ /**
1423
+ * Sets the booking's `guest` metadata field. Each guest requires a `name` and
1424
+ * `email`; `dateOfBirth`/`waiverSigned`/`notes` are optional.
1425
+ */
1426
+ setMetaDataGuest(bookingId: string, guests: SetMetaDataGuestInput[]): Promise<SetMetaDataResult>;
1427
+ /**
1428
+ * Sets the booking's `attachment` metadata field. Each attachment requires a
1429
+ * `name` and `attachmentUrl`.
1430
+ */
1431
+ setMetaDataAttachment(bookingId: string, attachments: SetMetaDataAttachmentInput[]): Promise<SetMetaDataResult>;
1432
+ /** Sets the booking's `manifest_url` metadata field. */
1433
+ setMetaDataManifestUrl(bookingId: string, url: string): Promise<SetMetaDataResult>;
1434
+ /** Sets the booking's `reservation_id` metadata field. */
1435
+ setMetaDataReservationId(bookingId: string, reservationId: string): Promise<SetMetaDataResult>;
1436
+ /** Sets the booking's `booking_status` metadata field. */
1437
+ setMetaDataBookingStatus(bookingId: string, status: string): Promise<SetMetaDataResult>;
1438
+ /** Sets the booking's `assigned_product` metadata field. */
1439
+ setMetaDataAssignedProduct(bookingId: string, productName: string): Promise<SetMetaDataResult>;
1440
+ /** Sets the booking's `assigned_employee` metadata field. */
1441
+ setMetaDataAssignedEmployee(bookingId: string, employeeName: string): Promise<SetMetaDataResult>;
1442
+ /** Sets the booking's `insurance_purchased` metadata field. */
1443
+ setMetaDataInsurancePurchased(bookingId: string, insurancePurchased: boolean): Promise<SetMetaDataResult>;
1444
+ /** Validates a non-empty `shortText` value and upserts it under `fieldName`. */
1445
+ private setShortTextField;
1446
+ /**
1447
+ * Validates the booking id and upserts a single field response (scoped to this
1448
+ * service's integrator), mapping the result union into a {@link SetMetaDataResult}.
1449
+ */
1450
+ private upsertFieldResponse;
1174
1451
  /** Returns the payments on file for a booking, or null when not found. */
1175
1452
  getPaymentsOnFile(bookingId: string): Promise<BookingPaymentsOnFile | null>;
1176
1453
  /**
@@ -1183,6 +1460,20 @@ declare class BookingService {
1183
1460
  * when not found.
1184
1461
  */
1185
1462
  setCheckinStatus(bookingId: string, checkedIn: boolean): Promise<Booking | null>;
1463
+ /**
1464
+ * Sets a booking's operator-facing custom status. Returns `true` when the
1465
+ * gateway confirms the stored `operatorStatus` equals the requested
1466
+ * `customStatus`, `false` otherwise.
1467
+ *
1468
+ * @example
1469
+ * ```ts
1470
+ * const ok = await peek.getBookingService().updateCustomStatus("b_abc123", "Awaiting deposit");
1471
+ * ```
1472
+ *
1473
+ * @throws {Error} when `bookingId` is not a valid booking id (`b_…`/`B-…`) or
1474
+ * when `customStatus` is not a non-empty string.
1475
+ */
1476
+ updateCustomStatus(bookingId: string, customStatus: string): Promise<boolean>;
1186
1477
  /** Cancels a booking and returns its id/displayId/status. */
1187
1478
  cancel(bookingId: string, notes?: string): Promise<CancelBookingResult>;
1188
1479
  /**
@@ -1295,10 +1586,17 @@ declare class BookingService {
1295
1586
  * Resolves the input's custom-question answers into the quote's
1296
1587
  * `questionAnswers` payload (each tagged with a fresh `refid`), or `null` when
1297
1588
  * none were supplied. Fetches the activity's custom questions to validate
1298
- * against; throws on the first unmatched/ambiguous/invalid answer.
1589
+ * against; throws on the first unmatched/ambiguous/invalid answer. When
1590
+ * `acceptAllCustomQuestionIds` is set the fetch is skipped if every answer is
1591
+ * given by id (a by-name answer still needs the list to resolve).
1299
1592
  */
1300
1593
  private buildQuestionAnswers;
1301
1594
  private markCreatedBookingPaid;
1595
+ /**
1596
+ * Resolves an activity's ISO currency via the product service, falling back to
1597
+ * {@link DEFAULT_CURRENCY} when the activity (or its currency) can't be found.
1598
+ */
1599
+ private resolveActivityCurrency;
1302
1600
  /** Finds the parent item id of an add-on by matching its option id. */
1303
1601
  private resolveParentItemId;
1304
1602
  private validatePaymentInput;
@@ -1822,6 +2120,31 @@ interface Review {
1822
2120
  /** Free-text review. May be null. */
1823
2121
  comment: string | null;
1824
2122
  }
2123
+ /**
2124
+ * Aggregate review statistics for a single activity (product), as returned by
2125
+ * {@link ReviewService.getAllReviewSummaries}. Carries no per-review detail or
2126
+ * PII — just the rating distribution and average.
2127
+ */
2128
+ interface ProductReviewSummary {
2129
+ /** Activity (product) id the summary is for. */
2130
+ productId: string;
2131
+ /** Activity (product) name. */
2132
+ productName: string;
2133
+ /** Average star rating as a decimal, or `null` when there are no ratings. */
2134
+ avgRating: number | null;
2135
+ /** Total number of reviews. */
2136
+ countTotal: number;
2137
+ /** Number of 1-star reviews. */
2138
+ countOneStar: number;
2139
+ /** Number of 2-star reviews. */
2140
+ countTwoStar: number;
2141
+ /** Number of 3-star reviews. */
2142
+ countThreeStar: number;
2143
+ /** Number of 4-star reviews. */
2144
+ countFourStar: number;
2145
+ /** Number of 5-star reviews. */
2146
+ countFiveStar: number;
2147
+ }
1825
2148
 
1826
2149
  /**
1827
2150
  * Reads activity reviews from the gateway, which returns them newest-first
@@ -1862,6 +2185,22 @@ declare class ReviewService {
1862
2185
  * ```
1863
2186
  */
1864
2187
  getReviews(productId: string, reviewCount?: number, reviewOffset?: number): Promise<Review[]>;
2188
+ /**
2189
+ * Returns an aggregate review summary for **every** activity — its average
2190
+ * rating and the count of reviews at each star level. This reads the same
2191
+ * activity list as `getAllProducts`; it carries no per-review detail or PII, so
2192
+ * it is unaffected by `fullCustomerAccess`. An activity with no reviews comes
2193
+ * back with a `null` `avgRating` and zero counts.
2194
+ *
2195
+ * @example
2196
+ * ```ts
2197
+ * const summaries = await peek.getReviewService().getAllReviewSummaries();
2198
+ * for (const s of summaries) {
2199
+ * console.log(s.productName, s.avgRating, s.countTotal);
2200
+ * }
2201
+ * ```
2202
+ */
2203
+ getAllReviewSummaries(): Promise<ProductReviewSummary[]>;
1865
2204
  private validate;
1866
2205
  }
1867
2206
 
@@ -2093,6 +2432,7 @@ declare class PeekAccessService {
2093
2432
  private readonly productServiceOptions;
2094
2433
  private readonly accessOptions;
2095
2434
  private readonly jwtSecret;
2435
+ private readonly issuer;
2096
2436
  private productService?;
2097
2437
  private accountUserService?;
2098
2438
  private resourcePoolService?;
@@ -2103,7 +2443,7 @@ declare class PeekAccessService {
2103
2443
  private dailyNoteService?;
2104
2444
  private availabilityService?;
2105
2445
  private membershipService?;
2106
- private bookingService?;
2446
+ private readonly bookingServices;
2107
2447
  private reviewService?;
2108
2448
  constructor(config: PeekAccessServiceConfig);
2109
2449
  /**
@@ -2184,9 +2524,14 @@ declare class PeekAccessService {
2184
2524
  getMembershipService(): MembershipService;
2185
2525
  /**
2186
2526
  * Returns the {@link BookingService} for this install, bound to the shared
2187
- * authenticated transport. The instance is created lazily and reused.
2527
+ * authenticated transport. Instances are created lazily and reused per
2528
+ * `integrator`.
2529
+ *
2530
+ * `integrator` scopes `getMetaData` results to a custom integrator id. **Do
2531
+ * not set it** unless Peek engineering created a custom integrator id for this
2532
+ * integration — omit it and the correct default is used.
2188
2533
  */
2189
- getBookingService(): BookingService;
2534
+ getBookingService(integrator?: string): BookingService;
2190
2535
  /**
2191
2536
  * Returns the {@link ReviewService} for this install, bound to the shared
2192
2537
  * authenticated transport. The instance is created lazily and reused.
@@ -2990,4 +3335,4 @@ declare class AcmeApiError extends Error {
2990
3335
  constructor(statusCode: number, body: unknown, message?: string);
2991
3336
  }
2992
3337
 
2993
- export { ACTIVITY_PRODUCT_TYPE, ADD_ON_PRODUCT_TYPE, type AccessOptions, type AccountUser, AccountUserService, type AccountUserServiceOptions, AcmeAccessService, type AcmeAccessServiceConfig, type AcmeActivity, type AcmeActivityTicket, AcmeApiError, AcmeProductService, type Activity, type ActivityOverrides, type ActivityTicket, type AddAddonInput, AdminAccountRequiredError, type Agent, type AssignGuideResult, type AssignedActivity, type AssignedResource, type Availability, AvailabilityService, type AvailabilityTime, type AvailabilityTimesQuery, type Booking, type BookingAddon, type BookingAddonMoney, type BookingAddonOption, type BookingAddons, type BookingAddonsMutationResult, type BookingPaymentsOnFile, type BookingReadOptions, type BookingSearchBy, BookingService, type BookingServiceOptions, type BookingTimeRangeSearch, type CancelBookingResult, type Channel, type ClearOverridesInput, CngAccessService, type CngAccessServiceConfig, CngApiError, CngPermissionError, CngProductService, type CreateBookingGuest, type CreateBookingInput, type CreateBookingTicket, type CreateEngineInput, type CreatePromoCodeInput, type CreatedBooking, type CreatedPricingEngine, type CreatedPromoCode, type CustomQuestion, type CustomQuestionAnswer, type CustomQuestionAnswerInput, type CustomQuestionOption, type DailyNote, DailyNoteService, type Duration, type Guest, type GuestMetadata, type Guide, type GuideAssignment, INSTALL_STATUSES, type InstallAccessConfig, type InstallAccessService, type InstallAccessTarget, type InstallStatus, type InstallWebhook, type InstallWebhookAccount, type InstallWebhookClaims, type InvoiceLinkResult, type Logger, type MakePaymentInput, type MakePaymentResult, type Membership, type MembershipPurchaseInput, MembershipService, type NoteMode, type Payment, type PaymentSource, PeekAccessService, type PeekAccessServiceConfig, type PeekAuthTokenClaims, type PeekAuthTokenUser, PeekGraphQLError, PeekHttpError, type PeekPlatform, PiiAccessDisabledError, type Price, type PricingActivityContext, type PricingEngine, type PricingMoney, type PricingNamedRef, type PricingOverride, type PricingOverrideFilter, PricingService, type Product, type ProductMeetingLocation, ProductService, type ProductServiceOptions, type ProductTicket, type PromoCode, type PromoCodeFixedAmount, PromoCodeService, type PromoCodeServiceOptions, type PurchasedMembership, RENTAL_PRODUCT_TYPE, RateLimitError, type RefundInput, type RefundResult, ResellerService, type ResolvedOverride, type ResolvedPricingOverride, type ResolvedResourceOption, type Resource, type ResourceOptionOverride, type ResourceOptionQuantity, type ResourcePool, type ResourcePoolAccountUser, type ResourcePoolAssignment, type ResourcePoolMode, ResourcePoolService, type Review, ReviewService, type Ticket, type Timeslot, type TimeslotFilter, TimeslotService, type UpdateEngineInput, type UpdateTimeslotResult, type UpsertOverridesInput, type UpsertOverridesResult, type Waiver, createAccessServiceForInstall, noopLogger, parseBookingWebhook, parseInstallWebhook, parseWaiverWebhook, verifyInstallWebhook };
3338
+ export { ACTIVITY_PRODUCT_TYPE, ADD_ON_PRODUCT_TYPE, type AccessOptions, type AccountUser, AccountUserService, type AccountUserServiceOptions, AcmeAccessService, type AcmeAccessServiceConfig, type AcmeActivity, type AcmeActivityTicket, AcmeApiError, AcmeProductService, type Activity, type ActivityOverrides, type ActivityTicket, type AddAddonInput, AdminAccountRequiredError, type Agent, type AssignGuideResult, type AssignedActivity, type AssignedResource, type Availability, AvailabilityService, type AvailabilityTime, type AvailabilityTimesQuery, type Booking, type BookingAddon, type BookingAddonMoney, type BookingAddonOption, type BookingAddons, type BookingAddonsMutationResult, type BookingPaymentsOnFile, type BookingReadOptions, type BookingSearchBy, BookingService, type BookingServiceOptions, type BookingTimeRangeSearch, type CancelBookingResult, type Channel, type ClearOverridesInput, CngAccessService, type CngAccessServiceConfig, CngApiError, CngPermissionError, CngProductService, type CreateBookingGuest, type CreateBookingInput, type CreateBookingTicket, type CreateEngineInput, type CreatePromoCodeInput, type CreatedBooking, type CreatedPricingEngine, type CreatedPromoCode, type CustomQuestion, type CustomQuestionAnswer, type CustomQuestionAnswerInput, type CustomQuestionOption, type DailyNote, DailyNoteService, type Duration, type Guest, type GuestMetadata, type Guide, type GuideAssignment, INSTALL_STATUSES, type InstallAccessConfig, type InstallAccessService, type InstallAccessTarget, type InstallStatus, type InstallWebhook, type InstallWebhookAccount, type InstallWebhookClaims, type InvoiceLinkResult, type Logger, type MakePaymentInput, type MakePaymentResult, type Membership, type MembershipPurchaseInput, MembershipService, type MetaData, type MetaDataBarcodeType, type MetaDataDurationUnit, type MetaDataValue, type MetaDataVolumeUnit, type MetaDataWeightUnit, type NoteMode, type Payment, type PaymentSource, PeekAccessService, type PeekAccessServiceConfig, type PeekAuthTokenClaims, type PeekAuthTokenUser, PeekGraphQLError, PeekHttpError, type PeekPlatform, PiiAccessDisabledError, type Price, type PricingActivityContext, type PricingEngine, type PricingMoney, type PricingNamedRef, type PricingOverride, type PricingOverrideFilter, PricingService, type Product, type ProductMeetingLocation, type ProductReviewSummary, ProductService, type ProductServiceOptions, type ProductTicket, type PromoCode, type PromoCodeFixedAmount, PromoCodeService, type PromoCodeServiceOptions, type PurchasedMembership, RENTAL_PRODUCT_TYPE, RateLimitError, type RefundInput, type RefundResult, ResellerService, type ResolvedOverride, type ResolvedPricingOverride, type ResolvedResourceOption, type Resource, type ResourceOptionOverride, type ResourceOptionQuantity, type ResourcePool, type ResourcePoolAccountUser, type ResourcePoolAssignment, type ResourcePoolMode, ResourcePoolService, type Review, ReviewService, type SetMetaDataAttachmentInput, type SetMetaDataGuestInput, type SetMetaDataResult, type Ticket, type Timeslot, type TimeslotFilter, TimeslotService, type UpdateEngineInput, type UpdateTimeslotResult, type UpsertOverridesInput, type UpsertOverridesResult, type Waiver, createAccessServiceForInstall, noopLogger, parseBookingWebhook, parseInstallWebhook, parseWaiverWebhook, verifyInstallWebhook };