@openreceive/browser 0.2.3 → 0.3.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.
@@ -174,6 +174,8 @@ declare const OPENRECEIVE_CHECKOUT_DATA_ATTRIBUTES: {
174
174
  readonly meta: "data-openreceive-meta";
175
175
  readonly state: "data-openreceive-state";
176
176
  readonly actions: "data-openreceive-actions";
177
+ /** What the payer is buying, when the host's amount hook named it. */
178
+ readonly orderDescription: "data-openreceive-order-description";
177
179
  readonly theme: "data-openreceive-theme";
178
180
  readonly themeToggle: "data-openreceive-theme-toggle";
179
181
  };
@@ -183,6 +185,7 @@ declare const OPENRECEIVE_CHECKOUT_DATA_SELECTORS: {
183
185
  readonly meta: "[data-openreceive-meta]";
184
186
  readonly state: "[data-openreceive-state]";
185
187
  readonly actions: "[data-openreceive-actions]";
188
+ readonly orderDescription: "[data-openreceive-order-description]";
186
189
  readonly theme: "[data-openreceive-theme]";
187
190
  readonly themeToggle: "[data-openreceive-theme-toggle]";
188
191
  };
@@ -190,6 +193,17 @@ declare const OPENRECEIVE_CHECKOUT_ELEMENT_PARTS: {
190
193
  readonly copy: "copy";
191
194
  readonly startOver: "start-over";
192
195
  };
196
+ /**
197
+ * Named slots the checkout element projects host light-DOM children into.
198
+ *
199
+ * `order` is the element's answer to React's render-prop `children`: a line-item
200
+ * strip, a thumbnail, a "you are buying" summary, drawn from the order
201
+ * OpenReceive does not own. It is projected through a `<slot>` in the shadow
202
+ * root, so it survives every re-render of the shell's `innerHTML` untouched.
203
+ */
204
+ declare const OPENRECEIVE_CHECKOUT_ELEMENT_SLOTS: {
205
+ readonly order: "order";
206
+ };
193
207
  declare const OPENRECEIVE_CHECKOUT_ELEMENT_PART_SELECTORS: {
194
208
  readonly copy: "[part=\"copy\"]";
195
209
  readonly startOver: "[part=\"start-over\"]";
@@ -259,6 +273,17 @@ declare const OPENRECEIVE_CHECKOUT_ELEMENT_ATTRIBUTES: {
259
273
  * default), no decode link is rendered and the invoice never leaves the page.
260
274
  */
261
275
  readonly decodeLinkUrl: "decode-link-url";
276
+ /**
277
+ * Where this app serves the packages' `dist/assets` trees, as one base URL —
278
+ * the string form of the `resolveAssetUrl` seam, so plain markup and the
279
+ * Vue/Svelte/Angular wrappers can reach it (a function cannot cross an HTML
280
+ * attribute). Every packaged key is a relative path under one `assets/` root,
281
+ * so the value is joined to it directly: `asset-base-url="/openreceive-assets"`
282
+ * makes `assets/icons/btc.svg` load from
283
+ * `/openreceive-assets/assets/icons/btc.svg`. A `resolveAssetUrl` passed to
284
+ * `defineElements` wins over it.
285
+ */
286
+ readonly assetBaseUrl: "asset-base-url";
262
287
  /** `polling="false"` renders the snapshot without status polling (no POST /payments/check). */
263
288
  readonly polling: "polling";
264
289
  /** Status poll cadence in milliseconds; defaults to OPENRECEIVE_DEFAULT_POLL_INTERVAL_MS. */
@@ -312,6 +337,11 @@ interface CopyInvoiceOptions {
312
337
  }
313
338
  interface OpenWalletOptions {
314
339
  invoice: string;
340
+ /**
341
+ * Where to send the `lightning:` URI. Omitted, {@link openWallet} calls
342
+ * `location.assign` on the CURRENT window, which navigates the payer off a
343
+ * still-polling checkout on any device that has a handler registered.
344
+ */
315
345
  open?: (uri: string) => void;
316
346
  logger?: BrowserLoggerOption;
317
347
  logContext?: BrowserLogContext;
@@ -385,21 +415,89 @@ interface SwapFeeBreakdown {
385
415
  /** The fee as a percentage of the cart total, e.g. "5.9%", when computable. */
386
416
  readonly feePercent?: string;
387
417
  }
418
+ /** One value the payer has to reproduce, with the affordance that lets them. */
419
+ interface SwapCopyRow {
420
+ readonly label: string;
421
+ readonly value: string;
422
+ /** The untruncated string a copy button writes, when it differs from `value`. */
423
+ readonly copyValue?: string;
424
+ /** Render the value in a selectable field rather than a code block. */
425
+ readonly selectable: boolean;
426
+ }
427
+ /**
428
+ * How a deposit on this rail can actually go missing, which is what decides how
429
+ * loud the deposit panel should be.
430
+ *
431
+ * The exposure comes from the deposit ADDRESS failing to pin the chain or the
432
+ * asset, never from whether the coin is native:
433
+ *
434
+ * - `chain_ambiguous` — the address is byte-identical on other chains, so a
435
+ * withdrawal can land somewhere unreachable. Every EVM rail (`ETH_ETH`,
436
+ * `USDT_ETH`, `USDC_ETH`): a `0x…` address is the same string on Ethereum,
437
+ * Arbitrum, Optimism, Base, BSC and Polygon and carries nothing that says
438
+ * which. A rail whose network OpenReceive cannot classify is reported here
439
+ * too — an unrecognized format has no rule proving it is safe.
440
+ * - `asset_only` — the address format pins the chain, but the asset is a token
441
+ * on it, and every exchange's withdrawal dropdown offers that ticker on a
442
+ * dozen networks (`USDT_TRON`).
443
+ * - `pinned` — the address format pins the chain AND the asset is that chain's
444
+ * native coin, so neither mistake is reachable (`SOL_SOL`). Sending an SPL
445
+ * token to a Solana address still will not credit the order, so the panel
446
+ * still states the exact amount — it just does not shout about lost funds.
447
+ *
448
+ * `chain_ambiguous` and `asset_only` both warrant the full alarm; they are kept
449
+ * apart because they are different mistakes and a custom UI may want to say so.
450
+ * Note the counter-intuitive half: `ETH_ETH` is a NATIVE coin and needs the
451
+ * alarm most of anything on the list.
452
+ */
453
+ type SwapDepositRisk = "chain_ambiguous" | "asset_only" | "pinned";
388
454
  interface SwapDisplayModel {
389
455
  readonly provider: string;
390
456
  readonly attemptId: string;
391
457
  readonly payInAsset: string;
392
458
  readonly assetLabel: string;
393
459
  readonly networkLabel: string;
394
- /** Strong deposit-panel alert title, e.g. "Wrong currency or network = lost funds". */
460
+ /**
461
+ * Which of the two ways a deposit is lost is reachable on this rail. Drives
462
+ * `networkWarningTitle`/`networkWarning` below, and is exposed so a custom UI
463
+ * can pick its own chrome without re-deriving the asset table. See
464
+ * {@link SwapDepositRisk}.
465
+ */
466
+ readonly depositRisk: SwapDepositRisk;
467
+ /**
468
+ * Deposit-panel heading. A strong alert ("Wrong currency or network = lost
469
+ * funds") when `depositRisk` is anything but `pinned`, and a quiet
470
+ * "Send the exact amount" when it is. A banner shown on every rail is read on
471
+ * none, and the rails where it is load-bearing are the ones that pay for it.
472
+ */
395
473
  readonly networkWarningTitle: string;
396
474
  /** Exact amount + asset + network to emphasize, e.g. "15.01 USDT on the Solana network". */
397
475
  readonly networkWarningEmphasis: string;
398
- /** Full plain-text network warning (accessible / non-HTML consumers). */
476
+ /**
477
+ * Full plain-text network warning (accessible / non-HTML consumers). The
478
+ * lost-funds sentence is present only when `depositRisk` is not `pinned`; the
479
+ * "pay with one method only" sentence is on every rail, because double-paying
480
+ * is reachable on all of them.
481
+ */
399
482
  readonly networkWarning: string;
400
483
  readonly depositAddress: string;
401
484
  readonly depositMemo?: string;
485
+ /**
486
+ * BARE, with no asset symbol appended: it pastes into a wallet's amount field,
487
+ * where "0.032664 SOL" is not a number. Join the symbol at the point of
488
+ * display if a sentence needs it.
489
+ */
402
490
  readonly depositAmount: string;
491
+ /**
492
+ * Every value the payer must reproduce, as labelled rows: the deposit address,
493
+ * the memo where the rail has one, and the amount. The amount is the one that
494
+ * gets left out and the one that costs money — on token rails (USDT_TRON,
495
+ * USDT_ETH, USDC_ETH) the QR encodes the bare address and carries NO amount,
496
+ * so the payer types it off the screen, and a short send against a fixed-rate
497
+ * swap order is an underpayment: `refund_required`, a refund form, and a payer
498
+ * who has to come back.
499
+ */
500
+ readonly copyRows: readonly SwapCopyRow[];
403
501
  readonly providerStateLabel: string;
404
502
  readonly providerStateDetail: string;
405
503
  readonly state: "creating" | "deposit" | "progress" | "settled" | "expired" | "refund_required" | "refund_pending" | "refunded" | "attention" | "failed";
@@ -441,6 +539,11 @@ interface CheckoutInvoiceSnapshot {
441
539
  readonly expires_at?: number;
442
540
  readonly settled_at?: number;
443
541
  readonly swap?: CheckoutInvoiceSwapSnapshot;
542
+ /**
543
+ * What the payer is buying, carried through from the snapshot. Data, not a
544
+ * derived label, so it survives `normalizeCheckoutState`.
545
+ */
546
+ readonly description?: string;
444
547
  }
445
548
  interface CheckoutPaymentMethod {
446
549
  readonly pay_in_asset: string;
@@ -475,6 +578,13 @@ interface CheckoutSnapshot {
475
578
  readonly active?: CheckoutInvoiceSnapshot;
476
579
  readonly invoices: readonly CheckoutInvoiceSnapshot[];
477
580
  readonly payment_methods?: readonly CheckoutPaymentMethod[];
581
+ /**
582
+ * What the payer is buying, in the host's own words — one display string the
583
+ * host returned from `amountFor` / `amount_for`. OpenReceive owns no line
584
+ * items, so this is the whole of what it carries; a richer summary is the
585
+ * host's own markup (React `children`, the element's `order` slot).
586
+ */
587
+ readonly description?: string;
478
588
  }
479
589
  interface CheckoutElementAttributeOptions {
480
590
  /**
@@ -514,6 +624,14 @@ interface CheckoutElementAttributeOptions {
514
624
  * renders no "Decode" link and the invoice is never sent to a third party.
515
625
  */
516
626
  readonly decodeLinkUrl?: string;
627
+ /**
628
+ * Where this app serves the packages' `dist/assets` trees, as one base URL.
629
+ * The string form of the `resolveAssetUrl` seam: every packaged asset key is a
630
+ * relative path under one `assets/` root, so the value is joined to it
631
+ * directly. Emitted as the element's `asset-base-url` attribute, which is how
632
+ * the Vue/Svelte/Angular wrappers reach a seam a function cannot cross.
633
+ */
634
+ readonly assetBaseUrl?: string;
517
635
  /** False renders the snapshot without status polling (no POST /payments/check). */
518
636
  readonly polling?: boolean;
519
637
  /** Status poll cadence in milliseconds; defaults to OPENRECEIVE_DEFAULT_POLL_INTERVAL_MS. */
@@ -688,12 +806,49 @@ interface CheckoutControllerOptions extends Omit<CheckoutWatcherOptions, "onStat
688
806
  * to render a snapshot without polling.
689
807
  */
690
808
  readonly prefix?: string;
809
+ /**
810
+ * False renders the snapshot without a status fetcher of its own. `prefix`
811
+ * still names the mount, so the swap-refund calls keep working — polling and
812
+ * "where the routes live" are two questions.
813
+ */
814
+ readonly polling?: boolean;
691
815
  readonly fetch?: typeof globalThis.fetch;
692
816
  readonly statusHeaders?: Readonly<Record<string, string>>;
693
817
  readonly clipboard?: Pick<Clipboard, "writeText">;
694
818
  readonly open?: (uri: string) => void;
695
819
  }
696
- interface CheckoutController {
820
+ /**
821
+ * The two-step swap refund, and the staging that makes it survive polling. The
822
+ * controller implements it; a renderer that is handed one (React's
823
+ * `PaymentWizard`) takes exactly this much of it.
824
+ */
825
+ interface SwapRefundStaging {
826
+ /**
827
+ * Step one: post `/swaps/status` and hold the address the payer typed so the
828
+ * panel can show it back for confirmation. It touches no refund route —
829
+ * nothing is submitted until {@link confirmSwapRefund}.
830
+ *
831
+ * The staged address is folded into every later snapshot, so polling cannot
832
+ * wipe what the payer is reviewing. `attemptId` is
833
+ * `SwapDisplayModel.attemptId`; the payment hash is resolved from the
834
+ * snapshot already in hand.
835
+ */
836
+ stageSwapRefund(options: {
837
+ readonly attemptId: string;
838
+ readonly refundAddress: string;
839
+ }): Promise<CheckoutInvoiceSnapshot>;
840
+ /** Step two: the only call that posts `/swaps/refunds`. */
841
+ confirmSwapRefund(options: {
842
+ readonly attemptId: string;
843
+ readonly refundAddress: string;
844
+ }): Promise<CheckoutInvoiceSnapshot>;
845
+ /**
846
+ * Drop the staged address. The payer leaving the swap for Lightning is the one
847
+ * exit that is not a submitted refund.
848
+ */
849
+ clearSwapRefundStaging(): void;
850
+ }
851
+ interface CheckoutController extends SwapRefundStaging {
697
852
  start(): CheckoutState;
698
853
  stop(): void;
699
854
  getState(): CheckoutState | undefined;
@@ -814,6 +969,8 @@ interface WizardRouteAssetDisplay {
814
969
  readonly label: string;
815
970
  readonly subtitle: string;
816
971
  readonly icon: string;
972
+ /** The packaged key behind `icon`, for a host serving the files itself. */
973
+ readonly iconPath: string;
817
974
  readonly selected: boolean;
818
975
  }
819
976
  interface WizardProviderTutorialDisplay {
@@ -828,6 +985,13 @@ interface WizardProviderDisplay {
828
985
  readonly kind: string;
829
986
  readonly url: string;
830
987
  readonly icon: string;
988
+ /**
989
+ * The packaged path the icon came from (`assets/provider-icons/strike.png`).
990
+ * `icon` is only loadable when the host's bundler resolved it; this is the
991
+ * key a host that serves the files itself maps, without going back to
992
+ * `providerRegistry` for `icon_path`.
993
+ */
994
+ readonly iconPath: string;
831
995
  readonly tutorials: readonly WizardProviderTutorialDisplay[];
832
996
  readonly copyLabel: string;
833
997
  readonly copiedLabel: string;
@@ -901,6 +1065,23 @@ declare function createQrSvg(invoice: string, options?: QrOptions): Promise<stri
901
1065
  declare function createQrPayloadSvg(payload: string, options?: QrOptions): Promise<string>;
902
1066
  declare function createQrPngDataUrl(invoice: string, options?: QrOptions): Promise<string>;
903
1067
  declare function copyInvoice(options: CopyInvoiceOptions): Promise<void>;
1068
+ /**
1069
+ * Hand the invoice to the payer's wallet as a `lightning:` URI, and return the
1070
+ * URI. **Touch devices.**
1071
+ *
1072
+ * The default path is `location.assign` on the CURRENT window — the right
1073
+ * primitive for a custom-scheme deep link on a phone, and the wrong thing
1074
+ * anywhere else. With no registered `lightning:` handler the call does nothing
1075
+ * visible; with one, it navigates the payer off a checkout that is still
1076
+ * polling `/payments/check`. Pass `open` to route the URI somewhere that is not
1077
+ * the checkout window.
1078
+ *
1079
+ * This is why the shipped `<Checkout>` renders no wallet button of its own and
1080
+ * exposes `components.OpenWalletButton` as an opt-in slot instead: a desktop
1081
+ * payer is never sent to a handler that does not exist, next to the QR code
1082
+ * that IS the desktop payment path. A custom UI drawing its own button owns
1083
+ * that decision — see docs/guides/headless-checkout.md.
1084
+ */
904
1085
  declare function openWallet(options: OpenWalletOptions): string;
905
1086
 
906
1087
  declare function createCheckoutController(options: CheckoutControllerOptions): CheckoutController;
@@ -998,4 +1179,4 @@ declare function deriveStatus(invoice: StatusInvoiceLike, options?: {
998
1179
  readonly now?: UnixSeconds;
999
1180
  }): Status;
1000
1181
 
1001
- export { type CheckoutStatusRefresh as $, type ThemeToggleElementAttributes as A, type BrowserLoggerOption as B, type CheckoutInvoiceSnapshot as C, type StoredThemeModelOptions as D, type ThemeModel as E, type ThemeModelOptions as F, type ReadThemePreferenceOptions as G, type ThemeControlTargets as H, type ThemeStorageOptions as I, type PaymentWizardControllerOptions as J, type PaymentWizardController as K, type PaymentWizardSelection as L, type PaymentWizardModel as M, type WizardRouteDisplay as N, type PaymentWizardSelectionAction as O, type ParseOpenReceiveOptionalIntegerOptions as P, type BrowserLogContext as Q, type ResolvedTheme as R, type SwapDisplayModel as S, type ThemePreference as T, type UnixSeconds as U, type BrowserLogger as V, type WizardRouteAssetDisplay as W, BrowserRequestError as X, type CheckoutController as Y, type CheckoutControllerOptions as Z, type CheckoutPhase as _, type PaymentMethod as a, OPENRECEIVE_CHECKOUT_DATA_ATTRIBUTES as a0, OPENRECEIVE_CHECKOUT_DATA_SELECTORS as a1, OPENRECEIVE_CHECKOUT_ELEMENT_ATTRIBUTES as a2, OPENRECEIVE_CHECKOUT_ELEMENT_EVENTS as a3, OPENRECEIVE_CHECKOUT_ELEMENT_PARTS as a4, OPENRECEIVE_CHECKOUT_ELEMENT_PART_SELECTORS as a5, OPENRECEIVE_CHECKOUT_ELEMENT_TAG_NAME as a6, OPENRECEIVE_COPY_FEEDBACK_MS as a7, OPENRECEIVE_DEFAULT_POLL_INTERVAL_MS as a8, OPENRECEIVE_DEFAULT_PREFIX as a9, formatAmountCaption as aA, formatDepositAmount as aB, formatFiatAmount as aC, formatMsats as aD, formatSwapLimit as aE, formatUnixTime as aF, openWallet as aG, prepareCheckout as aH, requestCheckout as aI, type BrowserLogLevel as aJ, type BrowserLogEntry as aK, type CopyInvoiceOptions as aL, type GuestCheckoutResumeController as aM, type GuestCheckoutResumeOptions as aN, type OpenWalletOptions as aO, type PrepareCheckoutOptions as aP, type QrOptions as aQ, type RequestCheckoutOptions as aR, type StatusInvoiceLike as aS, createGuestCheckoutResume as aT, createGuestOrderFetcher as aU, createLightningUri as aV, createQrPngDataUrl as aW, OPENRECEIVE_PAYMENT_WIZARD_ATTRIBUTES as aa, OPENRECEIVE_PAYMENT_WIZARD_SELECTORS as ab, OPENRECEIVE_THEME_STORAGE_KEY as ac, OPENRECEIVE_THEME_TOGGLE_ELEMENT_ATTRIBUTES as ad, OPENRECEIVE_THEME_TOGGLE_ELEMENT_EVENTS as ae, OPENRECEIVE_THEME_TOGGLE_ELEMENT_PARTS as af, OPENRECEIVE_THEME_TOGGLE_ELEMENT_PART_SELECTORS as ag, OPENRECEIVE_THEME_TOGGLE_ELEMENT_TAG_NAME as ah, type QrEncoder as ai, type Status as aj, type WizardProviderDisplay as ak, assertDisplayInvoice as al, copyInvoice as am, createCheckoutActionEvent as an, createCheckoutController as ao, createCheckoutErrorEvent as ap, createCheckoutProviderCopyEvent as aq, createCheckoutStateEvent as ar, createQrPayloadSvg as as, createQrSvg as at, createStatusFetcher as au, createThemeChangeEvent as av, deriveCheckoutStateLabels as aw, deriveStatus as ax, enterCheckoutResumePath as ay, escapeHtml as az, type PaymentMethodOption as b, type TickingValueOptions as c, type TickingValueController as d, type TransientFeedbackOptions as e, type TransientFeedbackController as f, type CheckoutInvoiceSwapSnapshot as g, type CheckoutState as h, type TransactionDetailsInput as i, type TransactionDetailRow as j, type CheckoutSnapshot as k, type CreateCheckoutStateOptions as l, type CheckoutStatusModelInput as m, type CheckoutStatusModel as n, type CheckoutPaymentMethod as o, type ThemeAttributeTarget as p, type CheckoutElementAttributes as q, type CheckoutElementAttributeOptions as r, type CheckoutElementEventHandlers as s, type CheckoutElementListeners as t, type CreateCheckoutShellOptions as u, type CheckoutShellElements as v, type CheckoutShellOptions as w, type CheckoutShellModel as x, type CreateOpenReceiveThemeToggleElementOptions as y, type ThemeToggleElementAttributeOptions as z };
1182
+ export { type CheckoutStatusRefresh as $, type ThemeToggleElementAttributes as A, type BrowserLoggerOption as B, type CheckoutInvoiceSnapshot as C, type StoredThemeModelOptions as D, type ThemeModel as E, type ThemeModelOptions as F, type ReadThemePreferenceOptions as G, type ThemeControlTargets as H, type ThemeStorageOptions as I, type PaymentWizardControllerOptions as J, type PaymentWizardController as K, type PaymentWizardSelection as L, type PaymentWizardModel as M, type WizardRouteDisplay as N, type PaymentWizardSelectionAction as O, type ParseOpenReceiveOptionalIntegerOptions as P, type BrowserLogContext as Q, type ResolvedTheme as R, type SwapDisplayModel as S, type ThemePreference as T, type UnixSeconds as U, type BrowserLogger as V, type WizardRouteAssetDisplay as W, BrowserRequestError as X, type CheckoutController as Y, type CheckoutControllerOptions as Z, type CheckoutPhase as _, type PaymentMethod as a, OPENRECEIVE_CHECKOUT_DATA_ATTRIBUTES as a0, OPENRECEIVE_CHECKOUT_DATA_SELECTORS as a1, OPENRECEIVE_CHECKOUT_ELEMENT_ATTRIBUTES as a2, OPENRECEIVE_CHECKOUT_ELEMENT_EVENTS as a3, OPENRECEIVE_CHECKOUT_ELEMENT_PARTS as a4, OPENRECEIVE_CHECKOUT_ELEMENT_PART_SELECTORS as a5, OPENRECEIVE_CHECKOUT_ELEMENT_SLOTS as a6, OPENRECEIVE_CHECKOUT_ELEMENT_TAG_NAME as a7, OPENRECEIVE_COPY_FEEDBACK_MS as a8, OPENRECEIVE_DEFAULT_POLL_INTERVAL_MS as a9, deriveStatus as aA, enterCheckoutResumePath as aB, escapeHtml as aC, formatAmountCaption as aD, formatDepositAmount as aE, formatFiatAmount as aF, formatMsats as aG, formatSwapLimit as aH, formatUnixTime as aI, openWallet as aJ, prepareCheckout as aK, requestCheckout as aL, type BrowserLogLevel as aM, type BrowserLogEntry as aN, type CopyInvoiceOptions as aO, type GuestCheckoutResumeController as aP, type GuestCheckoutResumeOptions as aQ, type OpenWalletOptions as aR, type PrepareCheckoutOptions as aS, type QrOptions as aT, type RequestCheckoutOptions as aU, type StatusInvoiceLike as aV, createGuestCheckoutResume as aW, createGuestOrderFetcher as aX, createLightningUri as aY, createQrPngDataUrl as aZ, OPENRECEIVE_DEFAULT_PREFIX as aa, OPENRECEIVE_PAYMENT_WIZARD_ATTRIBUTES as ab, OPENRECEIVE_PAYMENT_WIZARD_SELECTORS as ac, OPENRECEIVE_THEME_STORAGE_KEY as ad, OPENRECEIVE_THEME_TOGGLE_ELEMENT_ATTRIBUTES as ae, OPENRECEIVE_THEME_TOGGLE_ELEMENT_EVENTS as af, OPENRECEIVE_THEME_TOGGLE_ELEMENT_PARTS as ag, OPENRECEIVE_THEME_TOGGLE_ELEMENT_PART_SELECTORS as ah, OPENRECEIVE_THEME_TOGGLE_ELEMENT_TAG_NAME as ai, type QrEncoder as aj, type Status as ak, type SwapCopyRow as al, type SwapRefundStaging as am, type WizardProviderDisplay as an, assertDisplayInvoice as ao, copyInvoice as ap, createCheckoutActionEvent as aq, createCheckoutController as ar, createCheckoutErrorEvent as as, createCheckoutProviderCopyEvent as at, createCheckoutStateEvent as au, createQrPayloadSvg as av, createQrSvg as aw, createStatusFetcher as ax, createThemeChangeEvent as ay, deriveCheckoutStateLabels as az, type PaymentMethodOption as b, type TickingValueOptions as c, type TickingValueController as d, type TransientFeedbackOptions as e, type TransientFeedbackController as f, type CheckoutSnapshot as g, type SwapDepositRisk as h, type CheckoutState as i, type TransactionDetailsInput as j, type TransactionDetailRow as k, type CreateCheckoutStateOptions as l, type CheckoutStatusModelInput as m, type CheckoutStatusModel as n, type CheckoutPaymentMethod as o, type ThemeAttributeTarget as p, type CheckoutElementAttributes as q, type CheckoutElementAttributeOptions as r, type CheckoutElementEventHandlers as s, type CheckoutElementListeners as t, type CreateCheckoutShellOptions as u, type CheckoutShellElements as v, type CheckoutShellOptions as w, type CheckoutShellModel as x, type CreateOpenReceiveThemeToggleElementOptions as y, type ThemeToggleElementAttributeOptions as z };