@riverbankcms/sdk 0.149.0 → 0.150.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.
Files changed (165) hide show
  1. package/dist/EventEmbeddedCheckoutStep-D00Kc8Zj.mjs +285 -0
  2. package/dist/{PreviewEditorSidebar-DBKln68M.mjs → PreviewEditorSidebar-7ZhmmnBB.mjs} +3 -3
  3. package/dist/{PreviewEditorUI-DpRX4Mum.mjs → PreviewEditorUI-BIJucTRd.mjs} +2 -2
  4. package/dist/{SdkPreviewModeRuntime-DJPmPY-r.mjs → SdkPreviewModeRuntime-tj45gmCX.mjs} +4 -3
  5. package/dist/{SiteChromeCustomizeContext-JYA0cJ_Z.mjs → SiteChromeCustomizeContext-BFOt0ss-.mjs} +4454 -4059
  6. package/dist/_dts/ai/src/contracts/proposals.d.ts +660 -0
  7. package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +510 -0
  8. package/dist/_dts/api/src/billing.d.ts +2 -2
  9. package/dist/_dts/api/src/contentRuntime.d.ts +5 -1
  10. package/dist/_dts/api/src/footerCompositionContracts.d.ts +9 -0
  11. package/dist/_dts/api/src/footerSettings.d.ts +3 -3
  12. package/dist/_dts/api/src/index.d.ts +1 -1
  13. package/dist/_dts/api/src/navigation/bookingPortalLink.d.ts +13 -0
  14. package/dist/_dts/api/src/navigation.d.ts +1 -0
  15. package/dist/_dts/api/src/publicExperience/eventEndpoints.d.ts +9 -173
  16. package/dist/_dts/api/src/sdkThemeWire.d.ts +12 -0
  17. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +3 -3
  18. package/dist/_dts/api/src/siteSettings.d.ts +2 -0
  19. package/dist/_dts/blocks/src/client/site-chrome.d.ts +1 -1
  20. package/dist/_dts/blocks/src/client.d.ts +2 -1
  21. package/dist/_dts/blocks/src/rendering/server.d.ts +1 -1
  22. package/dist/_dts/blocks/src/system/blocks/site-footer-runtime.d.ts +30 -3
  23. package/dist/_dts/blocks/src/system/designCapabilities.d.ts +10 -1
  24. package/dist/_dts/blocks/src/system/runtime/api/index.d.ts +1 -1
  25. package/dist/_dts/blocks/src/system/runtime/api/types/events.d.ts +38 -18
  26. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessEventRegistrationFlow.d.ts +1 -1
  27. package/dist/_dts/blocks/src/system/runtime/nodes/booking-form.server.d.ts +6 -0
  28. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventEmbeddedCheckoutStep.d.ts +13 -0
  29. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationPayment.d.ts +15 -0
  30. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationWizardActions.d.ts +0 -1
  31. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/FullyBookedStep.d.ts +6 -0
  32. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/PaymentBlockingPanel.d.ts +3 -0
  33. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/PaymentSelectionStep.d.ts +2 -0
  34. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.contract.d.ts +15 -5
  35. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.planning.d.ts +4 -2
  36. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/paymentLocation.d.ts +3 -0
  37. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/paymentResponse.d.ts +72 -0
  38. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationCompletion.d.ts +66 -5
  39. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationErrorRecovery.d.ts +1 -4
  40. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/registrationStateMachine.d.ts +13 -5
  41. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/sessionStorage.d.ts +11 -52
  42. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +19 -2
  43. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationStripeReturn.d.ts +7 -42
  44. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationSubmit.d.ts +7 -8
  45. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +90 -24
  46. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useGuestRegistrationRecovery.d.ts +30 -0
  47. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/usePaymentStatusRecovery.d.ts +24 -12
  48. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useRegistrationAdmission.d.ts +18 -0
  49. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/wizardSteps.d.ts +6 -1
  50. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +1 -1
  51. package/dist/_dts/blocks/src/system/runtime/shared/stripe/browserStripe.d.ts +8 -0
  52. package/dist/_dts/blocks/src/system/transforms/registry/eventCalendar.d.ts +8 -0
  53. package/dist/_dts/commerce/src/purchase/checkoutCopy.d.ts +10 -0
  54. package/dist/_dts/commerce/src/purchase/checkoutPresentation.d.ts +49 -0
  55. package/dist/_dts/commerce/src/purchase/checkoutSessionMetadata.d.ts +4 -4
  56. package/dist/_dts/commerce/src/purchase/checkoutStripeFinalizationPlanning.d.ts +5 -1
  57. package/dist/_dts/commerce/src/purchase/event-registration-errors.d.ts +9 -0
  58. package/dist/_dts/commerce/src/purchase/index.d.ts +2 -0
  59. package/dist/_dts/commerce/src/purchase/orderItemMetadata.d.ts +1 -0
  60. package/dist/_dts/commerce/src/purchase/stripeCheckoutReturnUrl.d.ts +9 -2
  61. package/dist/_dts/commerce/src/purchase/types.d.ts +5 -6
  62. package/dist/_dts/content-editor/src/FooterComposerOverview.d.ts +3 -2
  63. package/dist/_dts/content-editor/src/footerPreviewRuntime.d.ts +6 -1
  64. package/dist/_dts/content-editor/src/useFooterComposerState.d.ts +7 -0
  65. package/dist/_dts/core/src/index.d.ts +1 -0
  66. package/dist/_dts/core/src/patch/index.d.ts +30 -0
  67. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +30 -1
  68. package/dist/_dts/sdk/src/bookings/index.d.ts +2 -1
  69. package/dist/_dts/sdk/src/bookings/types.d.ts +1 -1
  70. package/dist/_dts/sdk/src/version.d.ts +1 -1
  71. package/dist/_dts/theme-core/src/blocks/index.d.ts +1 -0
  72. package/dist/_dts/theme-core/src/blocks/opaquePanels.d.ts +147 -0
  73. package/dist/_dts/theme-core/src/boxBackgroundSchema.d.ts +22 -0
  74. package/dist/_dts/theme-core/src/buttons/buttonSurfaceContext.d.ts +22 -0
  75. package/dist/_dts/theme-core/src/cards/roles.d.ts +12 -0
  76. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  77. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +198 -0
  78. package/dist/_dts/theme-core/src/palette/utils/index.d.ts +2 -0
  79. package/dist/_dts/theme-core/src/palette/utils/scrimContrast.d.ts +22 -0
  80. package/dist/_dts/theme-core/src/runtime/bridgeColourTokens.d.ts +10 -0
  81. package/dist/_dts/theme-core/src/schema.d.ts +330 -0
  82. package/dist/_dts/theme-core/src/site-styles/appearancePresetCatalog.d.ts +0 -51
  83. package/dist/_dts/theme-core/src/site-styles/blockAppearancePresets.d.ts +0 -51
  84. package/dist/_dts/theme-core/src/site-styles/lookResolution.d.ts +11 -0
  85. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorCapabilities.d.ts +7 -1
  86. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorModel.d.ts +7 -1
  87. package/dist/_dts/theme-core/src/site-styles/previewRuntimeCapabilities.d.ts +12 -6
  88. package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +7 -4
  89. package/dist/_dts/theme-core/src/site-styles/sectionSurfaceBackgrounds.d.ts +65 -0
  90. package/dist/_dts/theme-core/src/site-styles/types.d.ts +17 -0
  91. package/dist/_dts/theme-core/src/surfaces/opaqueSurface.d.ts +43 -0
  92. package/dist/client/{BookingMailingListNote-Cr3EeTP5.mjs → BookingMailingListNote-CYHOufsI.mjs} +10 -440
  93. package/dist/client/{CheckboxChoice-B33MqoUo.mjs → CheckboxChoice-M-3HycLw.mjs} +1 -1
  94. package/dist/client/{DemoBookingPortalAccess-BFGB1Fay.mjs → DemoBookingPortalAccess-Cvr9O_ca.mjs} +2 -2
  95. package/dist/client/{EventCombined.client-DKYV0_ft.mjs → EventCombined.client-m5UZIobP.mjs} +7 -7
  96. package/dist/client/EventEmbeddedCheckoutStep-DL6zFAkA.mjs +289 -0
  97. package/dist/client/{EventListing.client-B9UIcEYc.mjs → EventListing.client-DeMfCM04.mjs} +2 -2
  98. package/dist/client/{LeafletStaticMap-CFLPkP0K.mjs → LeafletStaticMap-CvZ3gOdD.mjs} +1 -1
  99. package/dist/client/{checkoutUrls-CXhko2Rv.mjs → RichText-BtfNvQV6.mjs} +2 -29
  100. package/dist/client/{TerminalPanel-JjmgxEsR.mjs → TerminalPanel-CUCNEwlH.mjs} +2 -18
  101. package/dist/client/{ThemedButton-CKV1Jh2m.mjs → ThemedButton-C7WhXuRl.mjs} +2 -2
  102. package/dist/client/{accordion-DXWIfT3T.mjs → accordion-cQm5mjqs.mjs} +1 -1
  103. package/dist/client/{bookingForm-CjZgHNvv.mjs → bookingForm-BVPJE5RQ.mjs} +11 -10
  104. package/dist/client/bookings.mjs +2668 -1134
  105. package/dist/client/{carousel-DSLikmvZ.mjs → carousel-3vgnY7LC.mjs} +2 -2
  106. package/dist/client/{carousel.client-A2lG-9od.mjs → carousel.client-CISsdZvg.mjs} +1 -1
  107. package/dist/client/{cart-HDjWReFt.mjs → cart-BGK4oOjm.mjs} +3 -3
  108. package/dist/client/{checkout-CUvRZA3W.mjs → checkout-GsBLUNJD.mjs} +3 -3
  109. package/dist/client/checkoutUrls-ChxwaNtO.mjs +28 -0
  110. package/dist/client/client.mjs +3042 -1868
  111. package/dist/client/{colorStyles-j5U9v5JA.mjs → colorStyles-D-32xHZh.mjs} +2 -30
  112. package/dist/client/{context-DFmaZa-Q.mjs → context-D_8s12Fp.mjs} +1 -1
  113. package/dist/client/{dates-BBep1JnF.mjs → dates-DeJQbQ9T.mjs} +2 -2
  114. package/dist/client/{eventCalendar-zEobhxo4.mjs → eventCalendar-cmucD4NR.mjs} +10 -10
  115. package/dist/client/{eventCombined-Dp7bz5k-.mjs → eventCombined-ku3E9FTl.mjs} +4 -4
  116. package/dist/client/{eventDetails-FE-zqTt7.mjs → eventDetails-CyKZ61sF.mjs} +5 -5
  117. package/dist/client/{eventListing-BMt5snal.mjs → eventListing-B7yxGIhX.mjs} +4 -4
  118. package/dist/client/{eventRegistration-O6ZxHfOb.mjs → eventRegistration-BoXfSFgZ.mjs} +1403 -857
  119. package/dist/client/{form-DFa1D8vt.mjs → form-CNQOWhJo.mjs} +5 -5
  120. package/dist/client/{headerSection-CmjHLR-N.mjs → headerSection-DahaBJGQ.mjs} +3 -3
  121. package/dist/client/hooks.mjs +123 -64
  122. package/dist/client/{locationMap-BXKP_lGh.mjs → locationMap-BoDjqYlW.mjs} +4 -4
  123. package/dist/client/{media-Cl38iOMI.mjs → media-BFY0y2rb.mjs} +2 -1
  124. package/dist/client/{newsletterForm-CU-HmxGx.mjs → newsletterForm-DtzXDklw.mjs} +4 -4
  125. package/dist/client/{pricing-KEAEsibq.mjs → pricing-DXEh2Lhh.mjs} +1 -1
  126. package/dist/client/{productDetail-Ckp7MGnt.mjs → productDetail-D7cPa-00.mjs} +3 -3
  127. package/dist/client/{productList-D91V0sYa.mjs → productList-D1XMap66.mjs} +3 -3
  128. package/dist/client/{propsDecoder-DZd6RJeA.mjs → propsDecoder-DiIeBopB.mjs} +758 -245
  129. package/dist/client/rendering/client.mjs +4381 -2892
  130. package/dist/client/rendering/islands.mjs +19 -19
  131. package/dist/client/rendering.mjs +3026 -1852
  132. package/dist/client/result-DRW7JWXz.mjs +30 -0
  133. package/dist/client/{routeIslandApiConfig-E1EkhhYY.mjs → routeIslandApiConfig-wzR4lKAY.mjs} +1 -1
  134. package/dist/client/scrollToBlock-C86BYkyV.mjs +17 -0
  135. package/dist/client/{shop-4F2jLQPI.mjs → shop-CYT5P-S5.mjs} +8 -8
  136. package/dist/client/{shop-commerce-store-vicweP2K.mjs → shop-commerce-store-wKhsJQxI.mjs} +1 -1
  137. package/dist/client/{shop-commerce-BbfCJjB3.mjs → shop-commerce-ypBu_dx4.mjs} +9 -9
  138. package/dist/client/{shopShared-DlONJt0T.mjs → shopShared-DFGhYrf2.mjs} +52 -6
  139. package/dist/client/{useEventFilters-COYyL3m7.mjs → useEventFilters-blSbN5o7.mjs} +8 -8
  140. package/dist/preview-next/client/runtime.mjs +3 -3
  141. package/dist/{sdk-runtime-CwvFFjB-.mjs → sdk-runtime-2p8uQk1V.mjs} +1 -1
  142. package/dist/{separator-ByL72zUT.mjs → separator-Cvvzk0Oo.mjs} +1 -1
  143. package/dist/server/components.mjs +4066 -3765
  144. package/dist/server/config-validation.mjs +185 -126
  145. package/dist/server/config.mjs +185 -126
  146. package/dist/server/data.mjs +123 -64
  147. package/dist/server/index.mjs +1 -1
  148. package/dist/server/next.mjs +615 -314
  149. package/dist/server/page-converter.mjs +100 -56
  150. package/dist/server/prebuild.mjs +1 -1
  151. package/dist/server/rendering/server.mjs +4041 -3751
  152. package/dist/server/rendering.mjs +4069 -3768
  153. package/dist/server/routing.mjs +149 -72
  154. package/dist/server/server.mjs +124 -65
  155. package/dist/server/theme-bridge.mjs +1122 -310
  156. package/dist/server/theme.mjs +126 -116
  157. package/dist/spinner-CDo6AkDz.mjs +658 -0
  158. package/dist/styles/index.css +75 -212
  159. package/package.json +1 -1
  160. package/dist/_dts/billing/src/checkout/platform.d.ts +0 -77
  161. package/dist/_dts/billing/src/config/env.d.ts +0 -29
  162. package/dist/_dts/billing/src/stripe/client.d.ts +0 -29
  163. package/dist/_dts/blocks/src/system/runtime/hooks/usePaymentVerification.d.ts +0 -63
  164. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventCheckoutHandoffRestore.d.ts +0 -9
  165. package/dist/client/urlParams-D71VXFGx.mjs +0 -47
@@ -26,7 +26,7 @@ export type GuestErrors = Record<number, {
26
26
  /** Error message for name field */
27
27
  name?: string;
28
28
  }>;
29
- export type RegistrationStep = 'select-event' | 'select-tickets' | 'enter-details' | 'select-payment' | 'submitting' | 'redirecting' | 'verifying-payment' | 'verifying-timeout' | 'payment-status' | 'payment-failed' | 'success' | 'error';
29
+ export type RegistrationStep = 'select-event' | 'select-tickets' | 'fully-booked' | 'enter-details' | 'select-payment' | 'submitting' | 'payment' | 'verifying-payment' | 'verifying-timeout' | 'payment-status' | 'payment-failed' | 'success' | 'error';
30
30
  export type RegistrationResult = {
31
31
  status: 'confirmed' | 'waitlist';
32
32
  /**
@@ -46,7 +46,7 @@ export type PaymentStatusRecoveryState = Readonly<{
46
46
  kind: 'ready' | 'checking' | 'processing' | 'temporarilyUnavailable' | 'retryAvailable' | 'assistanceRequired';
47
47
  }> | Readonly<{
48
48
  kind: 'paymentAvailable';
49
- checkoutUrl: string;
49
+ checkout: import('../../api/types').EventEmbeddedCheckout;
50
50
  }>);
51
51
  export type RegistrationAttendanceMode = 'in_person' | 'online';
52
52
  export type EventTicketSelectionLine = Readonly<{
@@ -197,3 +197,20 @@ export type EventRegistrationClientProps = {
197
197
  mailingList?: MailingListRuntimeContext;
198
198
  siteName?: string;
199
199
  };
200
+ export type EventPaymentState = Readonly<{
201
+ kind: 'idle';
202
+ }> | Readonly<{
203
+ kind: 'payment';
204
+ checkout: import('../../api/types').EventEmbeddedCheckout;
205
+ subject: import('../../api/types').EventRegistrationPaymentSubject;
206
+ }> | Readonly<{
207
+ kind: 'verifying';
208
+ request: import('../../api/types').EventCheckoutReturnRequest;
209
+ resumePayment: boolean;
210
+ }> | Readonly<{
211
+ kind: 'abandoning';
212
+ subject: import('../../api/types').EventRegistrationPaymentSubject;
213
+ }> | Readonly<{
214
+ kind: 'recovery';
215
+ state: PaymentStatusRecoveryState;
216
+ }>;
@@ -1,42 +1,7 @@
1
- import { usePaymentVerification } from '../../hooks/usePaymentVerification';
2
- import type { BlockApiClient } from '../../api';
3
- import type { EventRegistrationStatusReference } from '../../api/types';
4
- import { scrollToBlock } from '../../shared';
5
- import { cleanupStaleRegistrations, clearPendingRegistration, getPendingRegistration } from './sessionStorage';
6
- import type { EventTicketSelectionLine, FormData, PaymentSelection, RegistrationEvent, RegistrationResult, RegistrationStep, RegistrationSubject } from './types';
7
- type EventRegistrationStripeReturnOptions = {
8
- api: BlockApiClient;
9
- events: RegistrationEvent[];
10
- registrationSubject: RegistrationSubject | null;
11
- step: RegistrationStep;
12
- pendingRegistrationReference: EventRegistrationStatusReference | null;
13
- setFormData: (data: FormData) => void;
14
- setTicketsCount: (count: number) => void;
15
- setTicketSelections: (lines: readonly EventTicketSelectionLine[]) => void;
16
- setSelectedEvent: (event: RegistrationEvent | null) => void;
17
- setSelectedAttendanceMode: (attendanceMode: 'in_person' | 'online' | null) => void;
18
- setPaymentSelection: (selection: PaymentSelection) => void;
19
- setPendingRegistrationReference: (reference: EventRegistrationStatusReference | null) => void;
20
- setStep: (step: RegistrationStep) => void;
21
- setRegistrationResult: (result: RegistrationResult) => void;
22
- setErrorMessage: (message: string) => void;
23
- };
24
- export type EventRegistrationStripeReturnDeps = Readonly<{
25
- usePaymentVerification: typeof usePaymentVerification;
26
- readReturnParams: () => Readonly<{
27
- registration: string | null;
28
- registration_attempt: string | null;
29
- session_id: string | null;
30
- }>;
31
- clearReturnParams: () => void;
32
- scrollToBlock: typeof scrollToBlock;
33
- cleanupStaleRegistrations: typeof cleanupStaleRegistrations;
34
- clearPendingRegistration: typeof clearPendingRegistration;
35
- getPendingRegistration: typeof getPendingRegistration;
36
- }>;
37
- export type EventRegistrationStripeReturnResult = ReturnType<typeof usePaymentVerification> & Readonly<{
38
- retryReturn?: () => void;
39
- }>;
40
- export declare function useEventRegistrationStripeReturn(options: EventRegistrationStripeReturnOptions): EventRegistrationStripeReturnResult;
41
- export declare function useEventRegistrationStripeReturnWithDeps(options: EventRegistrationStripeReturnOptions, deps: EventRegistrationStripeReturnDeps): EventRegistrationStripeReturnResult;
42
- export {};
1
+ import type { EventCheckoutReturnRequest } from '../../api/types';
2
+ import type { PendingRegistration } from './sessionStorage';
3
+ export declare function useEventRegistrationStripeReturn(options: Readonly<{
4
+ siteId: string | undefined;
5
+ restore: (pending: PendingRegistration) => void;
6
+ verify: (request: EventCheckoutReturnRequest) => void;
7
+ }>): void;
@@ -1,13 +1,11 @@
1
+ import type { BookingMailingListNote as BookingSignupNote } from '../../../../../../core/src/index';
1
2
  import { generateUuidV4 } from '../../../../../../core/src/index';
2
3
  import type { EventRegistrationErrorAction } from '../../../../../../commerce/src/purchase/index';
3
4
  import type { BlockApiClient } from '../../api';
4
- import type { EventRegistrationStatusReference, PaymentMethod } from '../../api/types';
5
+ import type { EventEmbeddedCheckout, EventRegistrationPaymentSubject, PaymentMethod } from '../../api/types';
5
6
  import { type RegistrationTarget } from './registrationDerivations';
6
7
  import { savePendingRegistration } from './sessionStorage';
7
8
  import type { EventTicketSelectionLine, FormData, Guest, PaymentSelection, PaymentStatusRecoveryState, RegistrationResult, RegistrationStep } from './types';
8
- export type EventRegistrationSubmitOptions = Readonly<{
9
- redirect?: 'auto' | 'manual';
10
- }>;
11
9
  export type EventRegistrationSubmitResult = Readonly<{
12
10
  ok: true;
13
11
  outcome: {
@@ -21,16 +19,18 @@ export type EventRegistrationSubmitResult = Readonly<{
21
19
  }> | Readonly<{
22
20
  ok: true;
23
21
  outcome: {
24
- kind: 'checkout_redirect';
25
- checkoutUrl: string;
22
+ kind: 'checkout_ready';
23
+ checkout: EventEmbeddedCheckout;
24
+ subject: EventRegistrationPaymentSubject;
26
25
  };
27
26
  }> | Readonly<{
28
27
  ok: false;
29
28
  reason: 'blocked' | 'missing-target' | 'submission-failed';
30
29
  message: string;
31
30
  }>;
32
- export type EventRegistrationSubmit = (method: PaymentMethod, passId?: string, membershipId?: string, selection?: PaymentSelection, submitOptions?: EventRegistrationSubmitOptions) => Promise<EventRegistrationSubmitResult>;
31
+ export type EventRegistrationSubmit = (method: PaymentMethod, passId?: string, membershipId?: string, selection?: PaymentSelection) => Promise<EventRegistrationSubmitResult>;
33
32
  export type UseEventRegistrationSubmitInput = {
33
+ openPayment: (checkout: EventEmbeddedCheckout, subject: EventRegistrationPaymentSubject, note?: BookingSignupNote) => void;
34
34
  commandRef: EventRegistrationCommandRef;
35
35
  api: BlockApiClient;
36
36
  registrationTarget: RegistrationTarget | null;
@@ -47,7 +47,6 @@ export type UseEventRegistrationSubmitInput = {
47
47
  discountCode: string;
48
48
  claimToken: string | null;
49
49
  waitlistEntryId?: string | null;
50
- setPendingRegistrationReference: (reference: EventRegistrationStatusReference) => void;
51
50
  setStep: (step: RegistrationStep) => void;
52
51
  setErrorAction?: (action: EventRegistrationErrorAction) => void;
53
52
  setRegistrationResult: (result: RegistrationResult) => void;
@@ -57,13 +57,16 @@ export declare function useEventRegistrationWizard(options: UseEventRegistration
57
57
  preSelectedEvent: RegistrationEvent | null;
58
58
  hasPreSelectedContext: boolean;
59
59
  step: RegistrationStep;
60
- setStep: (nextStep: RegistrationStep) => void;
60
+ setStep: (next: RegistrationStep) => void;
61
+ admission: import("./registrationCompletion").RegistrationAdmission;
62
+ ticketContinuation: import("./registrationCompletion").RegistrationTicketContinuation;
63
+ handleTicketsComplete: () => import("./event-registration.headless.contract").EventRegistrationFlowActionResult;
61
64
  selectedEvent: RegistrationEvent | null;
62
- setSelectedEvent: import("react").Dispatch<import("react").SetStateAction<RegistrationEvent | null>>;
65
+ setSelectedEvent: (value: Parameters<import("react").Dispatch<import("react").SetStateAction<RegistrationEvent | null>>>[0]) => void;
63
66
  ticketsCount: number;
64
- setTicketsCount: (nextTicketsCount: number) => void;
67
+ setTicketsCount: (value: Parameters<(nextTicketsCount: number) => void>[0]) => void;
65
68
  selectedAttendanceMode: "in_person" | "online" | null;
66
- setSelectedAttendanceMode: import("react").Dispatch<import("react").SetStateAction<"in_person" | "online" | null>>;
69
+ setSelectedAttendanceMode: (value: Parameters<import("react").Dispatch<import("react").SetStateAction<"in_person" | "online" | null>>>[0]) => void;
67
70
  ticketSelections: Readonly<{
68
71
  pricingOptionId: string | null;
69
72
  quantity: number;
@@ -74,7 +77,7 @@ export declare function useEventRegistrationWizard(options: UseEventRegistration
74
77
  }>[];
75
78
  setSelectedTicketLines: (lines: readonly EventTicketSelectionLine[]) => void;
76
79
  selectedSlidingAmountInput: string;
77
- setSelectedSlidingAmountInput: import("react").Dispatch<import("react").SetStateAction<string>>;
80
+ setSelectedSlidingAmountInput: (value: Parameters<import("react").Dispatch<import("react").SetStateAction<string>>>[0]) => void;
78
81
  selectedSlidingAmount: number | null;
79
82
  selectedEventSlidingScale: Readonly<{
80
83
  minAmount: number;
@@ -99,10 +102,10 @@ export declare function useEventRegistrationWizard(options: UseEventRegistration
99
102
  mailingListSignup: Readonly<{
100
103
  siteName: string;
101
104
  }> | null;
102
- setFormData: import("react").Dispatch<import("react").SetStateAction<FormData>>;
105
+ setFormData: (value: Parameters<import("react").Dispatch<import("react").SetStateAction<FormData>>>[0]) => void;
103
106
  errors: Partial<Record<keyof FormData, string>>;
104
107
  guests: Guest[];
105
- setGuests: import("react").Dispatch<import("react").SetStateAction<Guest[]>>;
108
+ setGuests: (value: Parameters<import("react").Dispatch<import("react").SetStateAction<Guest[]>>>[0]) => void;
106
109
  guestErrors: GuestErrors;
107
110
  guestSectionShake: boolean;
108
111
  handleGuestShakeEnd: () => void;
@@ -119,7 +122,7 @@ export declare function useEventRegistrationWizard(options: UseEventRegistration
119
122
  handleLogout: () => void;
120
123
  paymentStepState: PaymentStepState;
121
124
  handlePaymentStepStateChange: (state: PaymentStepState) => void;
122
- handlePaymentSelectionChange: (selection: PaymentSelection) => void;
125
+ handlePaymentSelectionChange: (value: Parameters<(selection: PaymentSelection) => void>[0]) => void;
123
126
  paymentSelection: PaymentSelection;
124
127
  isMembershipFastTrack: boolean;
125
128
  waitlistClaim: import("../../shared/useWaitlistClaim").UseWaitlistClaimResult;
@@ -143,7 +146,7 @@ export declare function useEventRegistrationWizard(options: UseEventRegistration
143
146
  hasMembershipEligibility: boolean;
144
147
  requireGuestDetails: boolean;
145
148
  discountCode: string;
146
- setDiscountCode: (code: string) => void;
149
+ setDiscountCode: (value: string) => void;
147
150
  discountUiOpen: boolean;
148
151
  setDiscountUiOpen: (isOpen: boolean) => void;
149
152
  discountsAvailable: boolean;
@@ -152,18 +155,48 @@ export declare function useEventRegistrationWizard(options: UseEventRegistration
152
155
  discountsAvailableLoading: boolean;
153
156
  discountContext: import("../../api").DiscountContext | null;
154
157
  shouldShowDiscountToggle: boolean;
155
- verification: import("./useEventRegistrationStripeReturn").EventRegistrationStripeReturnResult;
158
+ verification: {
159
+ retry: () => void;
160
+ retryReturn: () => void;
161
+ status: "idle" | "polling" | "completed" | "failed" | "timeout";
162
+ result: import("../../api").EventCheckoutReturnResponse | null;
163
+ error: Error | null;
164
+ };
165
+ paymentController: {
166
+ backToBooking: () => Promise<void>;
167
+ continuePayment: () => void;
168
+ returnToPayment: () => void;
169
+ returnToBooking: () => void;
170
+ check: () => void;
171
+ retryPaymentLoad: () => void;
172
+ verification: {
173
+ retry: () => void;
174
+ retryReturn: () => void;
175
+ status: "idle" | "polling" | "completed" | "failed" | "timeout";
176
+ result: import("../../api").EventCheckoutReturnResponse | null;
177
+ error: Error | null;
178
+ };
179
+ state: import("./types").EventPaymentState;
180
+ recovery: import("./types").PaymentStatusRecoveryState | null;
181
+ showRecovery: (next: import("./types").PaymentStatusRecoveryState | null) => void;
182
+ restoreMailingListNote: (value: import("./types").PaymentStatusRecoveryState["mailingListSignupNote"]) => void;
183
+ openPayment: (checkout: import("../../api/types").EventEmbeddedCheckout, subject: import("../../api/types").EventRegistrationPaymentSubject, mailingListSignupNote?: import("./types").PaymentStatusRecoveryState["mailingListSignupNote"]) => void;
184
+ verify: (request: import("../../api").EventCheckoutReturnRequest, resumePayment?: boolean) => void;
185
+ };
156
186
  paymentStatusRecovery: import("./types").PaymentStatusRecoveryState | null;
157
187
  handleCheckPaymentStatus: () => void;
158
188
  handleContinueExistingPayment: () => void;
159
189
  handleReturnToPayment: () => void;
160
190
  handleReturnToBooking: () => void;
191
+ recoveryMessage: string | null;
192
+ checkingNextStep: boolean;
193
+ handleRecoveryEmail: () => Promise<import("./event-registration.headless.contract").EventRegistrationFlowActionResult>;
161
194
  handleDetailsComplete: () => Promise<EventRegistrationDetailsCompleteResult>;
162
195
  handlePaymentSelect: () => Promise<void>;
163
196
  handleUseCardInsteadOfPass: () => void;
164
197
  handleBookForSomeoneElse: () => void;
165
- handleSubmit: import("./useEventRegistrationSubmit").EventRegistrationSubmit;
166
- handleEventSelect: (event: RegistrationEvent) => void;
198
+ handleSubmit: (method: import("./PaymentSelectionStep").PaymentMethod, passId?: string | undefined, membershipId?: string | undefined, selection?: PaymentSelection | undefined) => ReturnType<import("./useEventRegistrationSubmit").EventRegistrationSubmit>;
199
+ handleEventSelect: (value: Parameters<(event: RegistrationEvent) => void>[0]) => void;
167
200
  handleRetry: () => void;
168
201
  };
169
202
  export declare function useEventRegistrationWizardWithDeps(options: UseEventRegistrationWizardOptions, deps: EventRegistrationWizardDeps): {
@@ -190,13 +223,16 @@ export declare function useEventRegistrationWizardWithDeps(options: UseEventRegi
190
223
  preSelectedEvent: RegistrationEvent | null;
191
224
  hasPreSelectedContext: boolean;
192
225
  step: RegistrationStep;
193
- setStep: (nextStep: RegistrationStep) => void;
226
+ setStep: (next: RegistrationStep) => void;
227
+ admission: import("./registrationCompletion").RegistrationAdmission;
228
+ ticketContinuation: import("./registrationCompletion").RegistrationTicketContinuation;
229
+ handleTicketsComplete: () => import("./event-registration.headless.contract").EventRegistrationFlowActionResult;
194
230
  selectedEvent: RegistrationEvent | null;
195
- setSelectedEvent: import("react").Dispatch<import("react").SetStateAction<RegistrationEvent | null>>;
231
+ setSelectedEvent: (value: Parameters<import("react").Dispatch<import("react").SetStateAction<RegistrationEvent | null>>>[0]) => void;
196
232
  ticketsCount: number;
197
- setTicketsCount: (nextTicketsCount: number) => void;
233
+ setTicketsCount: (value: Parameters<(nextTicketsCount: number) => void>[0]) => void;
198
234
  selectedAttendanceMode: "in_person" | "online" | null;
199
- setSelectedAttendanceMode: import("react").Dispatch<import("react").SetStateAction<"in_person" | "online" | null>>;
235
+ setSelectedAttendanceMode: (value: Parameters<import("react").Dispatch<import("react").SetStateAction<"in_person" | "online" | null>>>[0]) => void;
200
236
  ticketSelections: Readonly<{
201
237
  pricingOptionId: string | null;
202
238
  quantity: number;
@@ -207,7 +243,7 @@ export declare function useEventRegistrationWizardWithDeps(options: UseEventRegi
207
243
  }>[];
208
244
  setSelectedTicketLines: (lines: readonly EventTicketSelectionLine[]) => void;
209
245
  selectedSlidingAmountInput: string;
210
- setSelectedSlidingAmountInput: import("react").Dispatch<import("react").SetStateAction<string>>;
246
+ setSelectedSlidingAmountInput: (value: Parameters<import("react").Dispatch<import("react").SetStateAction<string>>>[0]) => void;
211
247
  selectedSlidingAmount: number | null;
212
248
  selectedEventSlidingScale: Readonly<{
213
249
  minAmount: number;
@@ -232,10 +268,10 @@ export declare function useEventRegistrationWizardWithDeps(options: UseEventRegi
232
268
  mailingListSignup: Readonly<{
233
269
  siteName: string;
234
270
  }> | null;
235
- setFormData: import("react").Dispatch<import("react").SetStateAction<FormData>>;
271
+ setFormData: (value: Parameters<import("react").Dispatch<import("react").SetStateAction<FormData>>>[0]) => void;
236
272
  errors: Partial<Record<keyof FormData, string>>;
237
273
  guests: Guest[];
238
- setGuests: import("react").Dispatch<import("react").SetStateAction<Guest[]>>;
274
+ setGuests: (value: Parameters<import("react").Dispatch<import("react").SetStateAction<Guest[]>>>[0]) => void;
239
275
  guestErrors: GuestErrors;
240
276
  guestSectionShake: boolean;
241
277
  handleGuestShakeEnd: () => void;
@@ -252,7 +288,7 @@ export declare function useEventRegistrationWizardWithDeps(options: UseEventRegi
252
288
  handleLogout: () => void;
253
289
  paymentStepState: PaymentStepState;
254
290
  handlePaymentStepStateChange: (state: PaymentStepState) => void;
255
- handlePaymentSelectionChange: (selection: PaymentSelection) => void;
291
+ handlePaymentSelectionChange: (value: Parameters<(selection: PaymentSelection) => void>[0]) => void;
256
292
  paymentSelection: PaymentSelection;
257
293
  isMembershipFastTrack: boolean;
258
294
  waitlistClaim: import("../../shared/useWaitlistClaim").UseWaitlistClaimResult;
@@ -276,7 +312,7 @@ export declare function useEventRegistrationWizardWithDeps(options: UseEventRegi
276
312
  hasMembershipEligibility: boolean;
277
313
  requireGuestDetails: boolean;
278
314
  discountCode: string;
279
- setDiscountCode: (code: string) => void;
315
+ setDiscountCode: (value: string) => void;
280
316
  discountUiOpen: boolean;
281
317
  setDiscountUiOpen: (isOpen: boolean) => void;
282
318
  discountsAvailable: boolean;
@@ -285,18 +321,48 @@ export declare function useEventRegistrationWizardWithDeps(options: UseEventRegi
285
321
  discountsAvailableLoading: boolean;
286
322
  discountContext: import("../../api").DiscountContext | null;
287
323
  shouldShowDiscountToggle: boolean;
288
- verification: import("./useEventRegistrationStripeReturn").EventRegistrationStripeReturnResult;
324
+ verification: {
325
+ retry: () => void;
326
+ retryReturn: () => void;
327
+ status: "idle" | "polling" | "completed" | "failed" | "timeout";
328
+ result: import("../../api").EventCheckoutReturnResponse | null;
329
+ error: Error | null;
330
+ };
331
+ paymentController: {
332
+ backToBooking: () => Promise<void>;
333
+ continuePayment: () => void;
334
+ returnToPayment: () => void;
335
+ returnToBooking: () => void;
336
+ check: () => void;
337
+ retryPaymentLoad: () => void;
338
+ verification: {
339
+ retry: () => void;
340
+ retryReturn: () => void;
341
+ status: "idle" | "polling" | "completed" | "failed" | "timeout";
342
+ result: import("../../api").EventCheckoutReturnResponse | null;
343
+ error: Error | null;
344
+ };
345
+ state: import("./types").EventPaymentState;
346
+ recovery: import("./types").PaymentStatusRecoveryState | null;
347
+ showRecovery: (next: import("./types").PaymentStatusRecoveryState | null) => void;
348
+ restoreMailingListNote: (value: import("./types").PaymentStatusRecoveryState["mailingListSignupNote"]) => void;
349
+ openPayment: (checkout: import("../../api/types").EventEmbeddedCheckout, subject: import("../../api/types").EventRegistrationPaymentSubject, mailingListSignupNote?: import("./types").PaymentStatusRecoveryState["mailingListSignupNote"]) => void;
350
+ verify: (request: import("../../api").EventCheckoutReturnRequest, resumePayment?: boolean) => void;
351
+ };
289
352
  paymentStatusRecovery: import("./types").PaymentStatusRecoveryState | null;
290
353
  handleCheckPaymentStatus: () => void;
291
354
  handleContinueExistingPayment: () => void;
292
355
  handleReturnToPayment: () => void;
293
356
  handleReturnToBooking: () => void;
357
+ recoveryMessage: string | null;
358
+ checkingNextStep: boolean;
359
+ handleRecoveryEmail: () => Promise<import("./event-registration.headless.contract").EventRegistrationFlowActionResult>;
294
360
  handleDetailsComplete: () => Promise<EventRegistrationDetailsCompleteResult>;
295
361
  handlePaymentSelect: () => Promise<void>;
296
362
  handleUseCardInsteadOfPass: () => void;
297
363
  handleBookForSomeoneElse: () => void;
298
- handleSubmit: import("./useEventRegistrationSubmit").EventRegistrationSubmit;
299
- handleEventSelect: (event: RegistrationEvent) => void;
364
+ handleSubmit: (method: import("./PaymentSelectionStep").PaymentMethod, passId?: string | undefined, membershipId?: string | undefined, selection?: PaymentSelection | undefined) => ReturnType<import("./useEventRegistrationSubmit").EventRegistrationSubmit>;
365
+ handleEventSelect: (value: Parameters<(event: RegistrationEvent) => void>[0]) => void;
300
366
  handleRetry: () => void;
301
367
  };
302
368
  export type UseEventRegistrationWizardResult = ReturnType<typeof useEventRegistrationWizard>;
@@ -0,0 +1,30 @@
1
+ import type { EventRegistrationNextStepResponse } from '../../api/types';
2
+ import type { BoundBlockApiClient } from '../../api';
3
+ import type { FormData, RegistrationStep, EventTicketSelectionLine, RegistrationAttendanceMode } from './types';
4
+ import type { EventRegistrationFlowActionResult } from './event-registration.headless.contract';
5
+ import { type RegistrationAdmission } from './registrationCompletion';
6
+ import { type resolveRegistrationTarget } from './registrationDerivations';
7
+ import type { PortalAuthState } from './hooks';
8
+ type Input = Readonly<{
9
+ api: Pick<BoundBlockApiClient, 'checkRegistrationNextStep'>;
10
+ formData: FormData;
11
+ onRecoveryChecked: (outcome: EventRegistrationNextStepResponse) => void;
12
+ registrationTarget: ReturnType<typeof resolveRegistrationTarget>;
13
+ selectedAttendanceMode: RegistrationAttendanceMode | null;
14
+ ticketSelections: readonly EventTicketSelectionLine[];
15
+ selectedSlidingAmount: number | null;
16
+ altchaSolution: string | null;
17
+ step: RegistrationStep;
18
+ portalAuthState: PortalAuthState;
19
+ admission: RegistrationAdmission;
20
+ setErrors: (errors: Partial<Record<keyof FormData, string>>) => void;
21
+ }>;
22
+ /** Guest email is navigation permission only. Discard checks when the visitor
23
+ * changes identity or selection before the response arrives. */
24
+ export declare function useGuestRegistrationRecovery(input: Input): {
25
+ checkingNextStep: boolean;
26
+ recoveryMessage: string | null;
27
+ checkDetailsNextStep: () => Promise<EventRegistrationNextStepResponse>;
28
+ handleRecoveryEmail: () => Promise<EventRegistrationFlowActionResult>;
29
+ };
30
+ export {};
@@ -1,23 +1,35 @@
1
1
  import { type Dispatch, type SetStateAction } from 'react';
2
2
  import type { BlockApiClient } from '../../api/client';
3
- import type { EventRegistrationStatusReference } from '../../api/types';
4
- import type { PaymentStatusRecoveryState, RegistrationResult, RegistrationStep } from './types';
5
- type PaymentStatusSetters = Readonly<{
6
- setPendingRegistrationReference: Dispatch<SetStateAction<EventRegistrationStatusReference | null>>;
3
+ import type { EventCheckoutReturnRequest, EventCheckoutReturnResponse, EventEmbeddedCheckout, EventRegistrationPaymentSubject } from '../../api/types';
4
+ import type { EventPaymentState, PaymentStatusRecoveryState, RegistrationResult, RegistrationStep } from './types';
5
+ type Options = Readonly<{
6
+ api: BlockApiClient;
7
+ beginNewSubmission: () => void;
7
8
  setRegistrationResult: Dispatch<SetStateAction<RegistrationResult | null>>;
8
9
  setOptionsRefreshKey: Dispatch<SetStateAction<number>>;
9
10
  setStep: (step: RegistrationStep) => void;
11
+ /** Whether this page still holds the booker's details; a restored page after a reload does not. */
12
+ detailsInPage: () => boolean;
10
13
  }>;
11
- type UsePaymentStatusRecoveryOptions = PaymentStatusSetters & Readonly<{
12
- api: BlockApiClient;
13
- beginNewSubmission: () => void;
14
- }>;
15
- export declare function usePaymentStatusRecovery(options: UsePaymentStatusRecoveryOptions): {
16
- recovery: PaymentStatusRecoveryState | null;
17
- showRecovery: (next: PaymentStatusRecoveryState | null) => void;
18
- check: () => void;
14
+ export declare function usePaymentStatusRecovery(options: Options): {
15
+ backToBooking: () => Promise<void>;
19
16
  continuePayment: () => void;
20
17
  returnToPayment: () => void;
21
18
  returnToBooking: () => void;
19
+ check: () => void;
20
+ retryPaymentLoad: () => void;
21
+ verification: {
22
+ retry: () => void;
23
+ retryReturn: () => void;
24
+ status: "idle" | "polling" | "completed" | "failed" | "timeout";
25
+ result: EventCheckoutReturnResponse | null;
26
+ error: Error | null;
27
+ };
28
+ state: EventPaymentState;
29
+ recovery: PaymentStatusRecoveryState | null;
30
+ showRecovery: (next: PaymentStatusRecoveryState | null) => void;
31
+ restoreMailingListNote: (value: PaymentStatusRecoveryState["mailingListSignupNote"]) => void;
32
+ openPayment: (checkout: EventEmbeddedCheckout, subject: EventRegistrationPaymentSubject, mailingListSignupNote?: PaymentStatusRecoveryState["mailingListSignupNote"]) => void;
33
+ verify: (request: EventCheckoutReturnRequest, resumePayment?: boolean) => void;
22
34
  };
23
35
  export {};
@@ -0,0 +1,18 @@
1
+ import { type Dispatch } from 'react';
2
+ import { resolveRegistrationAdmission } from './registrationCompletion';
3
+ import type { RegistrationFlowAction } from './registrationStateMachine';
4
+ import type { EventRegistrationFlowActionResult } from './event-registration.headless.contract';
5
+ /** Owns admission and its navigation commands; renderers receive decisions. */
6
+ export declare function useRegistrationAdmission(input: Parameters<typeof resolveRegistrationAdmission>[0] & Readonly<{
7
+ existingRegistrationLoading: boolean;
8
+ ticketSelectionRequired: boolean;
9
+ hasValidTicketSelection: boolean;
10
+ dispatchFlow: Dispatch<RegistrationFlowAction>;
11
+ }>): {
12
+ admission: import("./registrationCompletion").RegistrationAdmission;
13
+ ticketContinuation: import("./registrationCompletion").RegistrationTicketContinuation;
14
+ handleTicketsComplete: () => EventRegistrationFlowActionResult;
15
+ onRecoveryChecked: (outcome: Extract<RegistrationFlowAction, {
16
+ type: "recovery-checked";
17
+ }>["outcome"]) => void;
18
+ };
@@ -3,6 +3,11 @@ import type { RegistrationStep } from './types';
3
3
  * Steps that are part of the main wizard and should show the step indicator
4
4
  */
5
5
  export declare const WIZARD_STEPS: RegistrationStep[];
6
+ /** Recovery uses the form surface without adding a progress step. */
7
+ export declare function getRegistrationStepPresentation(step: RegistrationStep, progressSteps: readonly RegistrationStep[]): Readonly<{
8
+ isWizardStep: boolean;
9
+ totalSteps: number;
10
+ }>;
6
11
  /**
7
12
  * Determine which wizard steps to show based on context and payment requirements.
8
13
  *
@@ -10,7 +15,7 @@ export declare const WIZARD_STEPS: RegistrationStep[];
10
15
  * @param needsPaymentStep - Whether user must complete payment method selection
11
16
  * @returns Array of wizard steps to display
12
17
  */
13
- export declare function getWizardStepsForContext(hasPreSelectedContext: boolean, needsPaymentStep: boolean): readonly RegistrationStep[];
18
+ export declare function getWizardStepsForContext(hasPreSelectedContext: boolean, needsPaymentStep: boolean, paymentActive?: boolean): readonly RegistrationStep[];
14
19
  /**
15
20
  * Map wizard step to step number based on the active wizard steps
16
21
  */
@@ -9,7 +9,7 @@ import { type EventRegistrationPageSurfaceSubject } from './event-registration/e
9
9
  import { type InteractiveIslandProps } from '../../../contracts/islands';
10
10
  import { type EventRegistrationEventSource } from './event-registration/eventSourceRecovery';
11
11
  export declare const EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS: readonly ["Date", "Tickets", "Details"];
12
- declare const EVENT_REGISTRATION_SHELL_STEP_LABELS: readonly ["Event", "Date", "Tickets", "Details", "Payment"];
12
+ declare const EVENT_REGISTRATION_SHELL_STEP_LABELS: readonly ["Event", "Date", "Tickets", "Details", "Payment options", "Payment"];
13
13
  export type EventRegistrationGenericShellStepLabels = typeof EVENT_REGISTRATION_GENERIC_SHELL_STEP_LABELS;
14
14
  type EventRegistrationShellStepLabel = (typeof EVENT_REGISTRATION_SHELL_STEP_LABELS)[number];
15
15
  export type EventRegistrationSourceProps = Readonly<{
@@ -0,0 +1,8 @@
1
+ import type { Stripe } from '@stripe/stripe-js';
2
+ import type { EmbeddedCheckoutBrowserContext } from '../../../../../../commerce/src/purchase/index';
3
+ import type { BrowserStripeKey } from '../../../../../../commerce/src/purchase/index';
4
+ export { checkBrowserStripeKey, type BrowserStripeKey } from '../../../../../../commerce/src/purchase/index';
5
+ /** Pure entry loading stays inert until a payment surface calls this function. */
6
+ export declare function loadBrowserStripe(context: EmbeddedCheckoutBrowserContext | Extract<BrowserStripeKey, {
7
+ tag: 'ready';
8
+ }>): Promise<Stripe | null>;
@@ -20,4 +20,12 @@ declare const readJobSchema: z.ZodObject<{
20
20
  }, z.core.$strip>;
21
21
  export declare const eventCalendarReadProfile: TransformDefinition;
22
22
  export declare const eventCalendarReadEnabled: TransformDefinition<z.infer<typeof readJobSchema>>;
23
+ /**
24
+ * The week board's authored band paints `surfaceAlt` across the whole
25
+ * section, under whatever foreground the section resolved. That foreground is
26
+ * the page's only when the section paints nothing itself, so the band is
27
+ * honoured on a plain section and dropped when a Look or override already
28
+ * paints one (light band text on a pale board band otherwise).
29
+ */
30
+ export declare const eventCalendarBanded: TransformDefinition;
23
31
  export {};
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Customer copy shared by checkout surfaces, so one approved wording reaches
3
+ * every place that shows it.
4
+ */
5
+ export declare const checkoutCopy: {
6
+ /** A payment is still being confirmed; checking again is safe. */
7
+ readonly checkoutStillConfirming: "We’re still confirming your payment. This can take a minute – you can check again, and you won’t be charged twice.";
8
+ /** A previous attempt can't be confirmed automatically; the business needs to check it. */
9
+ readonly checkoutAssistanceRequired: "We can’t confirm your last payment attempt yet. Please don’t pay again – contact the business so they can check it.";
10
+ };
@@ -0,0 +1,49 @@
1
+ /** Browser-safe Checkout contracts shared by payment owners. */
2
+ type CheckoutPresentationFields = {
3
+ hosted: Readonly<{
4
+ successUrl: string;
5
+ cancelUrl: string;
6
+ }>;
7
+ embedded: Readonly<{
8
+ returnUrl: string;
9
+ redirectOnCompletion: 'always' | 'if_required';
10
+ }>;
11
+ };
12
+ type CheckoutSessionFields = {
13
+ hosted: Readonly<{
14
+ checkoutUrl: string;
15
+ }>;
16
+ embedded: Readonly<{
17
+ clientSecret: string;
18
+ livemode: boolean;
19
+ }>;
20
+ };
21
+ export type CheckoutMode = keyof CheckoutPresentationFields;
22
+ export type CheckoutPresentation<M extends CheckoutMode = CheckoutMode> = {
23
+ [K in CheckoutMode]: Readonly<{
24
+ mode: K;
25
+ }> & CheckoutPresentationFields[K];
26
+ }[M];
27
+ export type CheckoutSessionHandle<M extends CheckoutMode = CheckoutMode> = {
28
+ [K in CheckoutMode]: Readonly<{
29
+ kind: K;
30
+ sessionId: string;
31
+ }> & CheckoutSessionFields[K];
32
+ }[M];
33
+ export type EmbeddedCheckoutBrowserContext = Readonly<{
34
+ kind: 'connect';
35
+ publishableKey: string;
36
+ accountId: string;
37
+ }> | Readonly<{
38
+ kind: 'direct';
39
+ publishableKey: string;
40
+ }>;
41
+ export type BrowserStripeKey = Readonly<{
42
+ tag: 'ready';
43
+ publishableKey: string;
44
+ }> | Readonly<{
45
+ tag: 'unavailable';
46
+ reason: 'missing_key' | 'invalid_key' | 'mode_mismatch';
47
+ }>;
48
+ export declare function checkBrowserStripeKey(publishableKey: string | undefined, livemode: boolean): BrowserStripeKey;
49
+ export {};
@@ -32,9 +32,9 @@ export declare const OrderCheckoutSessionMetadataSchema: z.ZodUnion<readonly [z.
32
32
  credit_reserved_cents: z.ZodOptional<z.ZodString>;
33
33
  discount_code_amount_cents: z.ZodOptional<z.ZodString>;
34
34
  order_payment_reason: z.ZodOptional<z.ZodEnum<{
35
- flexible_balance_paydown: "flexible_balance_paydown";
36
- instalment_payoff: "instalment_payoff";
37
35
  flexible_balance_initial: "flexible_balance_initial";
36
+ instalment_payoff: "instalment_payoff";
37
+ flexible_balance_paydown: "flexible_balance_paydown";
38
38
  }>>;
39
39
  order_payment_plan_id: z.ZodOptional<z.ZodString>;
40
40
  order_flexible_balance_contract_id: z.ZodOptional<z.ZodString>;
@@ -63,9 +63,9 @@ export declare const OrderCheckoutSessionMetadataSchema: z.ZodUnion<readonly [z.
63
63
  credit_reserved_cents: z.ZodOptional<z.ZodString>;
64
64
  discount_code_amount_cents: z.ZodOptional<z.ZodString>;
65
65
  order_payment_reason: z.ZodOptional<z.ZodEnum<{
66
- flexible_balance_paydown: "flexible_balance_paydown";
67
- instalment_payoff: "instalment_payoff";
68
66
  flexible_balance_initial: "flexible_balance_initial";
67
+ instalment_payoff: "instalment_payoff";
68
+ flexible_balance_paydown: "flexible_balance_paydown";
69
69
  }>>;
70
70
  order_payment_plan_id: z.ZodOptional<z.ZodString>;
71
71
  order_flexible_balance_contract_id: z.ZodOptional<z.ZodString>;
@@ -1,5 +1,9 @@
1
1
  export type CheckoutStripeFinalizationPaymentPlanKind = 'stripe' | 'instalment_plan' | 'flexible_balance';
2
- export type CheckoutStripeSessionRecordUpdateTarget = 'order' | 'order_payment_plan' | 'flexible_balance_contract';
2
+ /**
3
+ * The records besides the order that follow a newly created Stripe session.
4
+ * The order's own session is bound by the initial-session binder, never here.
5
+ */
6
+ export type CheckoutStripeSessionRecordUpdateTarget = 'order_payment_plan' | 'flexible_balance_contract';
3
7
  export type CheckoutStripeSessionRecordUpdatePlan = Readonly<{
4
8
  target: CheckoutStripeSessionRecordUpdateTarget;
5
9
  orderId: string;
@@ -1,4 +1,5 @@
1
1
  export type EventRegistrationErrorAction = 'none' | 'retry' | 'places' | 'start' | 'details' | 'payment-options' | 'portal' | 'event';
2
+ export declare const unfinishedBookingAssistanceMessage = "We couldn\u2019t safely find your unfinished booking. Please contact the organiser before trying to book again.";
2
3
  export declare const eventRegistrationErrors: {
3
4
  readonly registrationClosed: {
4
5
  readonly message: "Booking is currently closed for this event. Please contact the organiser if you’d like to find out more.";
@@ -12,6 +13,14 @@ export declare const eventRegistrationErrors: {
12
13
  readonly message: "We couldn’t reach the payment provider. Please try again in a minute.";
13
14
  readonly action: "retry";
14
15
  };
16
+ readonly paymentHostUnavailable: {
17
+ readonly message: "Card payments aren’t available on this web address yet. Please contact the organiser to book.";
18
+ readonly action: "none";
19
+ };
20
+ readonly checkoutTemporarilyUnavailable: {
21
+ readonly message: "Event payments are temporarily unavailable while we make an update. Please try again later.";
22
+ readonly action: "retry";
23
+ };
15
24
  readonly paymentPageUnavailable: {
16
25
  readonly message: "We couldn’t open the payment page. Please refresh this page and try again. If this keeps happening, contact the organiser for help.";
17
26
  readonly action: "retry";