@unifold/ui-react 0.1.81 → 0.1.83

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.mts CHANGED
@@ -66,6 +66,31 @@ interface UseDepositPollingOptions {
66
66
  */
67
67
  depositWalletIds?: string[];
68
68
  enabled?: boolean;
69
+ /**
70
+ * When the current deposit attempt began, as a timestamp. Only executions
71
+ * created after it are attributed to the attempt. Pass a new value to start a
72
+ * fresh attempt and `null` when there is none in progress.
73
+ *
74
+ * Callers fall into two groups, decided by how the deposit can arrive:
75
+ *
76
+ * - **Address-based rails** (crypto transfer, bank transfer) are passive: the
77
+ * displayed address can be paid at any moment, from anywhere, so every
78
+ * deposit seen while the screen is open belongs to the user. They enable
79
+ * polling for the life of the screen and leave this unset, which baselines
80
+ * detection at the moment the screen opened.
81
+ * - **Session-based rails** (card, exchange, Stripe, connected wallet,
82
+ * Cash App, Apple/Google Pay, Binance Pay) can only produce a deposit once
83
+ * the user has committed to one — Confirm on a review screen, or Continue on
84
+ * an input screen — so detection has to start there, not when the screen
85
+ * opened.
86
+ *
87
+ * Session rails pass this from Continue / Confirm and clear it when the user
88
+ * returns to the amount / input screen (or the main menu, which unmounts).
89
+ * Card is the exception that keeps the timestamp after leaving the review —
90
+ * its provider tab can still pay out. Leaving it unset also keeps the older
91
+ * implicit behaviour, where turning `enabled` on is itself the start.
92
+ */
93
+ sessionStartedAt?: number | null;
69
94
  onDepositSuccess?: (data: {
70
95
  message: string;
71
96
  transaction?: unknown;
@@ -84,6 +109,10 @@ interface UseDepositPollingOptions {
84
109
  * (e.g. browser wallet confirming step).
85
110
  */
86
111
  immediateDirectPolling?: boolean;
112
+ /** `/query` cadence. Default 2.5s. */
113
+ queryIntervalMs?: number;
114
+ /** `/poll` cadence. Default 5s. */
115
+ pollIntervalMs?: number;
87
116
  }
88
117
  interface UseDepositPollingResult {
89
118
  executions: DirectExecutionResponse[];
@@ -95,7 +124,7 @@ interface UseDepositPollingResult {
95
124
  /** Call this when user clicks "I've made the deposit" (manual mode) */
96
125
  handleIveDeposited: () => void;
97
126
  }
98
- declare function useDepositPolling({ userId, publishableKey, clientSecret, depositConfirmationMode, depositWalletId, depositWalletIds, enabled, immediateDirectPolling, onDepositSuccess, onDepositError, }: UseDepositPollingOptions): UseDepositPollingResult;
127
+ declare function useDepositPolling({ userId, publishableKey, clientSecret, depositConfirmationMode, depositWalletId, depositWalletIds, enabled, sessionStartedAt, immediateDirectPolling, queryIntervalMs, pollIntervalMs, onDepositSuccess, onDepositError, }: UseDepositPollingOptions): UseDepositPollingResult;
99
128
 
100
129
  type WalletType = 'phantom-solana' | 'phantom-ethereum' | 'metamask' | 'coinbase' | 'solflare' | 'backpack' | 'glow' | 'trust' | 'trust-solana' | 'rainbow' | 'rabby' | 'okx' | 'robinhood';
101
130
  interface BrowserWalletInfo {
@@ -120,39 +149,8 @@ interface BrowserWalletInfo {
120
149
 
121
150
  /** Quick amount chips on the browser wallet "Enter amount" step */
122
151
  type BrowserWalletAmountQuickSelect = 'usd' | 'percentage';
123
- interface SolanaWalletProvider {
124
- isPhantom?: boolean;
125
- isConnected?: boolean;
126
- publicKey?: {
127
- toString(): string;
128
- };
129
- connect(opts?: {
130
- onlyIfTrusted?: boolean;
131
- }): Promise<{
132
- publicKey: {
133
- toString(): string;
134
- };
135
- }>;
136
- disconnect(): Promise<void>;
137
- signTransaction(transaction: any): Promise<any>;
138
- on(event: string, callback: (...args: unknown[]) => void): void;
139
- off(event: string, callback: (...args: unknown[]) => void): void;
140
- }
141
- interface EvmWalletProvider {
142
- isMetaMask?: boolean;
143
- isPhantom?: boolean;
144
- isCoinbaseWallet?: boolean;
145
- selectedAddress?: string;
146
- request(args: {
147
- method: string;
148
- params?: unknown[];
149
- }): Promise<unknown>;
150
- on(event: string, callback: (...args: unknown[]) => void): void;
151
- off?(event: string, callback: (...args: unknown[]) => void): void;
152
- removeListener?(event: string, callback: (...args: unknown[]) => void): void;
153
- }
154
-
155
- type DepositModalInitialScreen = 'main' | 'transfer' | 'card' | 'cashapp' | 'apple_pay' | 'google_pay' | 'tracker' | 'pay_with_exchange' | 'exchange_connect' | 'wallet_connect' | 'bank_transfer' | 'stripe_link';
152
+
153
+ type DepositModalInitialScreen = 'main' | 'transfer' | 'card' | 'cashapp' | 'interac' | 'apple_pay' | 'google_pay' | 'tracker' | 'pay_with_exchange' | 'exchange_connect' | 'wallet_connect' | 'bank_transfer' | 'stripe_link';
156
154
  interface DepositModalProps {
157
155
  open: boolean;
158
156
  onOpenChange: (open: boolean) => void;
@@ -228,6 +226,13 @@ interface DepositModalProps {
228
226
  enableConnectExchange?: boolean;
229
227
  /** Enable "Pay with Cash App" option. Overrides dashboard default. Resolves as flag ?? dashboard value ?? true. */
230
228
  enableCashApp?: boolean;
229
+ /**
230
+ * Enable the "Pay with Interac" option (CAD e-Transfer, Canada). Opt-in like
231
+ * Stripe Link: resolves as flag ?? dashboard `interac.enabled` ?? false. The
232
+ * platform `interac.is_hidden` hard hide (project whitelist + Canada-only)
233
+ * always wins regardless of this flag.
234
+ */
235
+ enableInterac?: boolean;
231
236
  /**
232
237
  * Enable the Stripe "Pay with Link" option. Overrides the dashboard default.
233
238
  * Resolves as flag ?? dashboard `stripe_link.enabled` ?? false (Link is
@@ -286,8 +291,9 @@ interface DepositModalProps {
286
291
  */
287
292
  googlePaySubTitle?: string;
288
293
  /**
289
- * Enable the "Bank Transfer" section (SEPA, etc.). Overrides dashboard default.
290
- * Resolves as flag ?? dashboard `bank_transfer.enabled` ?? true.
294
+ * Enable the "Bank Transfer" section (SEPA, ACH, etc.).
295
+ * Resolves as flag ?? dashboard `bank_transfer.enabled` ?? false.
296
+ * The platform `bank_transfer.is_hidden` hard hide always wins.
291
297
  *
292
298
  * Even when enabled, each rail inside is gated on the caller's country. Only
293
299
  * rails the caller can use are listed; when none are, the section explains that
@@ -344,7 +350,7 @@ interface DepositModalProps {
344
350
  */
345
351
  displayMode?: DepositMenuLayoutType;
346
352
  }
347
- declare function DepositModal({ open, onOpenChange, userId, publishableKey, modalTitle, destinationTokenSymbol, recipientAddress, destinationChainType, destinationChainId, destinationTokenAddress, contractCalls, defaultSourceChainType, defaultSourceChainId, defaultSourceTokenAddress, defaultSourceSymbol, prefilledAmountUsd, hideDepositTracker, showBalanceHeader, transferInputVariant, showTransferCryptoExchangeRate, depositConfirmationMode, enableTransferCrypto, enableConnectWallet, browserWalletAmountQuickSelect, enablePayWithExchange, enableFiatOnramp, enableConnectExchange, enableCashApp, enableApplePay, applePayTitle: applePayTitleProp, applePaySubTitle: applePaySubTitleProp, enableGooglePay, googlePayTitle: googlePayTitleProp, googlePaySubTitle: googlePaySubTitleProp, enableBankTransfer, enableIncidentBanner, enableStripeLink, onrampDestinationAmount, userEmail, hideDepositFlowInfo, hideDisplayDescription, onDepositSuccess, onDepositError, onEvent, theme, hideOverlay, initialScreen, layout, displayMode, transferCryptoTitle: transferCryptoTitleProp, depositWithCardTitle: depositWithCardTitleProp, payWithExchangeTitle: payWithExchangeTitleProp, depositTrackerTitle: depositTrackerTitleProp, depositTrackerSubTitle: depositTrackerSubTitleProp, }: DepositModalProps): react_jsx_runtime.JSX.Element;
353
+ declare function DepositModal({ open, onOpenChange, userId, publishableKey, modalTitle, destinationTokenSymbol, recipientAddress, destinationChainType, destinationChainId, destinationTokenAddress, contractCalls, defaultSourceChainType, defaultSourceChainId, defaultSourceTokenAddress, defaultSourceSymbol, prefilledAmountUsd, hideDepositTracker, showBalanceHeader, transferInputVariant, showTransferCryptoExchangeRate, depositConfirmationMode, enableTransferCrypto, enableConnectWallet, browserWalletAmountQuickSelect, enablePayWithExchange, enableFiatOnramp, enableConnectExchange, enableCashApp, enableInterac, enableApplePay, applePayTitle: applePayTitleProp, applePaySubTitle: applePaySubTitleProp, enableGooglePay, googlePayTitle: googlePayTitleProp, googlePaySubTitle: googlePaySubTitleProp, enableBankTransfer, enableIncidentBanner, enableStripeLink, onrampDestinationAmount, userEmail, hideDepositFlowInfo, hideDisplayDescription, onDepositSuccess, onDepositError, onEvent, theme, hideOverlay, initialScreen, layout, displayMode, transferCryptoTitle: transferCryptoTitleProp, depositWithCardTitle: depositWithCardTitleProp, payWithExchangeTitle: payWithExchangeTitleProp, depositTrackerTitle: depositTrackerTitleProp, depositTrackerSubTitle: depositTrackerSubTitleProp, }: DepositModalProps): react_jsx_runtime.JSX.Element;
348
354
 
349
355
  interface DepositHeaderProps {
350
356
  title: string;
@@ -473,7 +479,9 @@ interface TransferCryptoDoubleInputProps {
473
479
  }
474
480
  declare function TransferCryptoDoubleInput({ userId, publishableKey, recipientAddress, destinationChainType, destinationChainId, destinationTokenAddress, defaultSourceChainType, defaultSourceChainId, defaultSourceTokenAddress, defaultSourceSymbol, depositConfirmationMode, onExecutionsChange, onDepositSuccess, onDepositError, wallets: externalWallets, showExchangeRate, }: TransferCryptoDoubleInputProps): react_jsx_runtime.JSX.Element;
475
481
 
476
- type CardView = 'amount' | 'quotes' | 'review';
482
+ type CardOnrampView = 'amount' | 'quotes' | 'review' | 'processing';
483
+
484
+ type CardView = CardOnrampView;
477
485
  interface BuyWithCardProps {
478
486
  userId: string;
479
487
  publishableKey: string;
@@ -520,7 +528,7 @@ interface BuyWithCardProps {
520
528
  declare function BuyWithCard({ userId, publishableKey, view: externalView, onViewChange, projectName, maxAmountUsd, accentColor, // Keep prop for backward compatibility but don't use default
521
529
  destinationTokenSymbol, recipientAddress, destinationChainType, destinationChainId, destinationTokenAddress, onDepositSuccess, onDepositError, onEvent, themeClass, wallets: externalWallets, assetCdnUrl, hideDepositFlowInfo: _hideDepositFlowInfo, hideDisplayDescription: _hideDisplayDescription, prefilledAmountUsd, destinationAmount, }: BuyWithCardProps): react_jsx_runtime.JSX.Element;
522
530
 
523
- type WalletPayView = 'loading_config' | 'disabled' | 'contact_input' | 'submitting_session' | 'email_otp' | 'phone_otp' | 'amount' | 'creating_order' | 'payment' | 'checking_deposit' | 'delivering' | 'success' | 'guest_limit_reached' | 'limit_upgrade_intro' | 'limit_upgrade_form' | 'limit_upgrade_submitting' | 'limit_upgrade_failed';
531
+ type WalletPayView = 'loading_config' | 'disabled' | 'contact_input' | 'phone_input' | 'submitting_session' | 'email_otp' | 'phone_otp' | 'amount' | 'creating_order' | 'payment' | 'checking_deposit' | 'delivering' | 'success' | 'guest_limit_reached' | 'limit_upgrade_intro' | 'limit_upgrade_form' | 'limit_upgrade_submitting' | 'limit_upgrade_failed';
524
532
  type View = WalletPayView;
525
533
  interface BuyWithWalletPayProps {
526
534
  /**
@@ -573,6 +581,7 @@ interface BuyWithWalletPayProps {
573
581
  /** Invoked when the user taps the exit button on a terminal screen. */
574
582
  onExit?: () => void;
575
583
  themeClass?: string;
584
+ assetCdnUrl?: string;
576
585
  }
577
586
  /** Imperative handle: `requestBack` returns true when the child handled the back. */
578
587
  interface BuyWithWalletPayHandle {
@@ -698,20 +707,39 @@ declare const BuyWithGooglePay: React$1.ForwardRefExoticComponent<BuyWithGoogleP
698
707
 
699
708
  interface StoredWalletPaySession {
700
709
  email: string;
701
- /** US phone in E.164 (e.g. +12345678901). */
710
+ /** US phone in E.164 (e.g. +12345678901). Collected on every flow. */
702
711
  phone: string;
703
712
  termsAcceptedAt: string;
713
+ /**
714
+ * Per-channel proof clocks. Mirrors of the token's `pv` / `ev` claims:
715
+ * whenever `onrampToken` is written these are re-derived from it, so they
716
+ * cannot disagree with the credential they describe.
717
+ */
704
718
  phoneVerifiedAt?: string;
705
719
  emailVerifiedAt?: string;
706
- /** Onramp verification JWT skips OTP for as long as it is valid. */
720
+ /** The onramp JWT. One per device+user; carries every clock earned so far. */
707
721
  onrampToken?: string;
708
722
  /** Epoch ms; treated as expired 60s before this to avoid order-race. */
709
723
  onrampTokenExpiresAtMs?: number;
724
+ /**
725
+ * Merchant `external_user_id` stamped when we minted the JWT. Legacy
726
+ * Coinbase records omit this — skip helpers treat that as "re-OTP".
727
+ */
728
+ externalUserId?: string;
710
729
  }
711
730
  declare function getStoredWalletPaySession(userId: string): StoredWalletPaySession | null;
712
731
  declare function setStoredWalletPaySession(userId: string, contact: StoredWalletPaySession): void;
713
732
  declare function clearStoredWalletPaySession(userId: string): void;
733
+ /** Wallet pay: the Coinbase routes are `@RequireVerifiedFactors('phone')`. */
714
734
  declare function isOnrampTokenFresh(contact: StoredWalletPaySession | null): boolean;
735
+ /** Bank transfer / KYC: those routes are `@RequireVerifiedFactors('email')`. */
736
+ declare function isEmailOnrampTokenFresh(contact: StoredWalletPaySession | null): boolean;
737
+ /**
738
+ * The token to hand the bank-transfer and identity routes, or nothing. Gated
739
+ * on a fresh `ev` because those routes 401 anything else, and a 401 there
740
+ * used to cost the user their wallet-pay credential.
741
+ */
742
+ declare function bankTransferOnrampToken(contact: StoredWalletPaySession | null): string | undefined;
715
743
 
716
744
  interface CurrencyModalProps {
717
745
  open: boolean;
@@ -846,7 +874,10 @@ interface StripeLinkButtonProps {
846
874
  }
847
875
  declare function StripeLinkButton({ onClick, title, subtitle, iconUrl }: StripeLinkButtonProps): react_jsx_runtime.JSX.Element;
848
876
 
849
- type BankTransferView = 'providers' | 'amount' | 'pending';
877
+ /** Sheet surface: identity-verification screens plus instructions / preparing. */
878
+ type BankTransferSheetView = 'kyc_info' | 'kyc_docs' | 'kyc_review' | 'kyc_questionnaire' | 'tos' | 'rejected' | 'instructions' | 'preparing';
879
+
880
+ type BankTransferView = 'amount' | 'contact_input' | 'phone_input' | 'submitting_session' | 'email_otp' | 'session_failed' | 'pending' | BankTransferSheetView;
850
881
  interface BankTransferProps {
851
882
  userId: string;
852
883
  publishableKey: string;
@@ -874,17 +905,20 @@ interface BankTransferProps {
874
905
  }) => void;
875
906
  /** Optional USD prefilled for the amount input (treated like manual user input). */
876
907
  prefilledAmountUsd?: string;
908
+ /** Shown on the details credit line. */
909
+ projectName?: string;
910
+ /** Host-platform-trusted email. Locks the contact field when valid. */
911
+ userEmail?: string;
912
+ /** Header back: info screens consume this first, then the modal falls through to amount. */
913
+ backHandlerRef?: React$1.MutableRefObject<(() => boolean) | null>;
877
914
  }
878
915
  /**
879
- * Bank-transfer deposit flow. Three steps:
880
- * 1. Provider list (returned by `getBankTransferProviders`)
881
- * 2. Amount input (Swapped-only today; other providers may diverge later)
882
- * 3. Pending — Swapped widget opens in a new tab, we poll for the deposit
883
- *
884
- * The widget itself handles KYC + IBAN entry + payment; we just collect the
885
- * fiat amount up-front so users aren't surprised by the default in the widget.
916
+ * Bank-transfer deposit flow. Amount first — the rail is picked from IP
917
+ * (USD/ACH today) and the currency pill becomes a selector once more than one
918
+ * fiat is enabled. Unifold rails then go through contact KYC → bank details;
919
+ * Swapped still opens its widget and we poll for the deposit.
886
920
  */
887
- declare function BankTransfer({ userId, publishableKey, view: externalView, onViewChange, destinationChainType, destinationChainId, destinationTokenAddress, destinationTokenSymbol, wallets, defaultToken: externalDefaultToken, assetCdnUrl, onDepositSuccess, onEvent, onDepositError, prefilledAmountUsd, }: BankTransferProps): react_jsx_runtime.JSX.Element;
921
+ declare function BankTransfer({ userId, publishableKey, view: externalView, onViewChange, destinationChainType, destinationChainId, destinationTokenAddress, destinationTokenSymbol, wallets, defaultToken: externalDefaultToken, assetCdnUrl, onDepositSuccess, onEvent, onDepositError, prefilledAmountUsd, projectName, userEmail, backHandlerRef, }: BankTransferProps): react_jsx_runtime.JSX.Element;
888
922
 
889
923
  interface DepositWallet {
890
924
  id: string;
@@ -1033,6 +1067,7 @@ declare function CheckingForDepositIndicator({ showWaitingUi, hasExecution, }: {
1033
1067
  interface ConfirmingViewProps {
1034
1068
  isConfirming: boolean;
1035
1069
  onClose: () => void;
1070
+ onBack?: () => void;
1036
1071
  executions?: DirectExecutionResponse[];
1037
1072
  isPolling?: boolean;
1038
1073
  onNewDeposit?: () => void;
@@ -1043,7 +1078,7 @@ interface ConfirmingViewProps {
1043
1078
  /** Snapshot of amount_received_usd taken when the transaction was submitted. */
1044
1079
  amountReceivedUsdAtSubmission?: string | null;
1045
1080
  }
1046
- declare function ConfirmingView({ isConfirming, onClose, executions, isPolling, onNewDeposit, onDone, paymentIntentStatus, amountReceivedUsd, amountReceivedUsdAtSubmission, }: ConfirmingViewProps): react_jsx_runtime.JSX.Element;
1081
+ declare function ConfirmingView({ isConfirming, onClose, onBack, executions, isPolling, onNewDeposit, onDone, paymentIntentStatus, amountReceivedUsd, amountReceivedUsdAtSubmission, }: ConfirmingViewProps): react_jsx_runtime.JSX.Element;
1047
1082
 
1048
1083
  interface CheckoutModalProps {
1049
1084
  open: boolean;
@@ -1319,46 +1354,6 @@ declare function WithdrawConfirmingView({ txInfo, executions, onClose, onViewTra
1319
1354
 
1320
1355
  declare const HYPERCORE_CHAIN_ID = "1337";
1321
1356
 
1322
- declare function isHypercoreChain(chainId: string): boolean;
1323
-
1324
- type DetectedWallet = {
1325
- name: string;
1326
- address: string;
1327
- } & ({
1328
- chainFamily: 'evm';
1329
- provider: EvmWalletProvider;
1330
- } | {
1331
- chainFamily: 'solana';
1332
- provider: SolanaWalletProvider;
1333
- });
1334
- declare function sendEvmWithdraw(params: {
1335
- provider: EvmWalletProvider;
1336
- fromAddress: string;
1337
- depositWalletAddress: string;
1338
- sourceTokenAddress: string;
1339
- sourceChainId: string;
1340
- amountBaseUnit: string;
1341
- }): Promise<string>;
1342
- declare function sendSolanaWithdraw(params: {
1343
- provider: SolanaWalletProvider;
1344
- fromAddress: string;
1345
- depositWalletAddress: string;
1346
- sourceTokenAddress: string;
1347
- amountBaseUnit: string;
1348
- publishableKey: string;
1349
- }): Promise<string>;
1350
-
1351
- declare function sendHypercoreWithdraw(params: {
1352
- provider: EvmWalletProvider;
1353
- fromAddress: string;
1354
- depositWalletAddress: string;
1355
- sourceTokenAddress: string;
1356
- amount: string;
1357
- publishableKey: string;
1358
- }): Promise<void>;
1359
-
1360
- declare function detectBrowserWallet(chainType: string, senderAddress?: string): Promise<DetectedWallet | null>;
1361
-
1362
1357
  type BrowserWalletErrorReporter = (error: unknown, metadata: {
1363
1358
  stage: BrowserWalletProviderErrorStage;
1364
1359
  chainType?: 'ethereum' | 'solana';
@@ -1544,6 +1539,9 @@ var common = {
1544
1539
  loading: "Loading...",
1545
1540
  search: "Search",
1546
1541
  close: "Close",
1542
+ noResults: "No matches found",
1543
+ selectCountry: "Select country",
1544
+ selectState: "Select state",
1547
1545
  review: "Review",
1548
1546
  tryAgain: "Try Again",
1549
1547
  somethingWentWrong: "Something went wrong",
@@ -1766,6 +1764,7 @@ var transferCrypto = {
1766
1764
  not_opted_in: "Please make sure you opt-in {{token_symbol}}({{chain_name}}) before receiving funds",
1767
1765
  insufficient_balance: "Recipient account does not meet the minimum balance requirement",
1768
1766
  account_not_found: "Recipient account does not exist on {{chain_name}}",
1767
+ destination_tag_required: "This {{chain_name}} address requires a memo tag. Please provide your memo tag as well, in the format address:memotag",
1769
1768
  validation_error: "Unable to verify recipient address on {{chain_name}}"
1770
1769
  },
1771
1770
  defaultError: "The recipient address cannot receive funds for the selected token"
@@ -1833,12 +1832,201 @@ var depositModal = {
1833
1832
  bankTransfer: {
1834
1833
  title: "Bank Transfer",
1835
1834
  subtitle: "SEPA, ACH and more",
1836
- unavailableInCountry: "Bank transfer isn't available for this deposit."
1835
+ unavailableInCountry: "Bank transfer isn't available for this deposit.",
1836
+ verificationIntroTitle: "Verification Required",
1837
+ verificationIntroBody: "Verify your identity to get a bank account you can send and receive payments with.",
1838
+ preparingTitle: "Setting up your account",
1839
+ preparingBody: "This may take a moment",
1840
+ sessionFailedTitle: "Failed to create your account",
1841
+ sessionFailedBody: "Please try again, or ",
1842
+ sessionFailedSupport: "contact support.",
1843
+ detailsTitle: "Bank Transfer Details",
1844
+ instructions: {
1845
+ title: "Send {{amount}} {{currency}} to your bank transfer details",
1846
+ subtitle: "Send the funds to the account details below. Bank transfers take time. Please check back later.",
1847
+ accountNumber: "Account number",
1848
+ routingNumber: "Routing number",
1849
+ iban: "IBAN",
1850
+ bic: "BIC",
1851
+ accountHolder: "Account holder",
1852
+ beneficiary: "Beneficiary",
1853
+ bankName: "Bank",
1854
+ bankAddress: "Bank address",
1855
+ swift: "SWIFT",
1856
+ reference: "Reference",
1857
+ amount: "Amount",
1858
+ currency: "Currency",
1859
+ rails: "Rails",
1860
+ copied: "Copied",
1861
+ processingTime: "Processing time",
1862
+ feeLabel: "Fee",
1863
+ railsTitle: "Fees and delivery",
1864
+ ach_push: "ACH",
1865
+ rtp: "RTP",
1866
+ wire: "Wire",
1867
+ sepa: "SEPA",
1868
+ instant: "Instant",
1869
+ minutes: "{{count}} min",
1870
+ days: "{{min}}–{{max}} days",
1871
+ fee: "{{rate}}% + {{flat}}",
1872
+ min: "Min {{amount}}",
1873
+ canClose: "Bank transfers can take some time. Please come back later.",
1874
+ showFees: "Show fees and processing time",
1875
+ showMoreDetails: "Show more details"
1876
+ }
1837
1877
  },
1838
1878
  cashAppMenu: {
1839
1879
  title: "Pay with Cash App",
1840
1880
  subtitle: "Deposit via Cash App"
1841
1881
  },
1882
+ interacMenu: {
1883
+ title: "Pay with Interac",
1884
+ subtitle: "e-Transfer from a Canadian bank"
1885
+ },
1886
+ interac: {
1887
+ "continue": "Continue",
1888
+ checking: "Checking...",
1889
+ submitting: "Submitting...",
1890
+ verifying: "Verifying...",
1891
+ creatingSession: "Creating order...",
1892
+ emailSubtitle: "Enter your email to get started with Interac e-Transfer.",
1893
+ emailPlaceholder: "you@example.com",
1894
+ onboardSubtitle: "A few details are required to set up your account. This information is sent to our Canadian payment partner and is not stored by us.",
1895
+ onboardUpdateSubtitle: "Your account is missing a few details. Confirm the information below to continue.",
1896
+ additionalInfoSubtitle: "Our payment partner needs a few more details before your first purchase.",
1897
+ additionalInfoFields: {
1898
+ source_of_funds: "Source of funds",
1899
+ intended_use_of_usdc: "Intended use of USDC",
1900
+ how_did_you_hear: "How did you hear about us?",
1901
+ who_referred_you: "Who referred you?",
1902
+ previous_crypto_experience: "Previous crypto experience"
1903
+ },
1904
+ additionalInfoSelect: "Select an option",
1905
+ additionalInfoOptions: {
1906
+ source_of_funds: {
1907
+ salary: "Salary",
1908
+ savings: "Savings",
1909
+ businessIncome: "Business income",
1910
+ investments: "Investments",
1911
+ pension: "Pension or retirement",
1912
+ inheritanceOrGift: "Inheritance or gift",
1913
+ other: "Other"
1914
+ },
1915
+ intended_use_of_usdc: {
1916
+ savings: "Savings",
1917
+ investing: "Investing or trading",
1918
+ payments: "Payments or purchases",
1919
+ remittance: "Sending funds to family or friends",
1920
+ defi: "DeFi",
1921
+ other: "Other"
1922
+ },
1923
+ how_did_you_hear: {
1924
+ search: "Search engine",
1925
+ social: "Social media",
1926
+ friendOrFamily: "Friend or family",
1927
+ news: "News or blog",
1928
+ ad: "Advertisement",
1929
+ other: "Other"
1930
+ },
1931
+ who_referred_you: {
1932
+ friendOrFamily: "Friend or family",
1933
+ colleague: "Colleague",
1934
+ advisor: "Financial advisor",
1935
+ community: "Online community",
1936
+ noOne: "No one — not referred"
1937
+ },
1938
+ previous_crypto_experience: {
1939
+ none: "None",
1940
+ beginner: "Beginner",
1941
+ intermediate: "Intermediate",
1942
+ advanced: "Advanced"
1943
+ }
1944
+ },
1945
+ sections: {
1946
+ personal: "Personal details",
1947
+ address: "Home address"
1948
+ },
1949
+ fields: {
1950
+ firstName: "First name",
1951
+ lastName: "Last name",
1952
+ dob: "Date of birth",
1953
+ phone: "Canadian phone number",
1954
+ addressLine1: "Street address",
1955
+ addressLine2: "Apartment, suite, etc. (optional)",
1956
+ city: "City",
1957
+ province: "Province",
1958
+ provincePlaceholder: "Select province",
1959
+ postalCode: "Postal code",
1960
+ occupation: "Occupation"
1961
+ },
1962
+ attestation: "I confirm that I am not a politically exposed person and that I am not acting on behalf of a third party.",
1963
+ otpSubtitle: "We emailed a login code to {{email}}. Enter it below to continue.",
1964
+ otpCodePlaceholder: "0000",
1965
+ otpVerify: "Verify code",
1966
+ otpResend: "Resend code",
1967
+ otpResendIn: "Resend in {{seconds}}s",
1968
+ phoneSendCode: "Send code",
1969
+ phoneSending: "Sending...",
1970
+ phoneOtpSubtitle: "We texted a code to {{phone}}. Enter it below to continue.",
1971
+ kycTitle: "Verify your identity",
1972
+ kycSubtitle: "A quick one-time identity verification is required before your first purchase.",
1973
+ kycStart: "Start verification",
1974
+ kycOpening: "Opening...",
1975
+ kycOpenNewTab: "Having trouble? Open in a new tab",
1976
+ kycInReviewTitle: "Verification in review",
1977
+ kycInReviewSubtitle: "Your documents were submitted and are being reviewed. This usually takes a few minutes — this screen advances automatically.",
1978
+ kycReopen: "Reopen verification",
1979
+ quoteLoading: "Fetching quote...",
1980
+ quoteReceive: "You'll receive approximately {{amount}} USDC",
1981
+ instructions: "Your Interac payment request is being prepared…",
1982
+ instructionsWithPayee: "Send an Interac e-Transfer to {{payee}} for the exact amount below.",
1983
+ instructionsWithLink: "Pay the Interac request below from your bank — scan the QR or open the link.",
1984
+ amountLabel: "Amount",
1985
+ payeeLabel: "Send to",
1986
+ referenceLabel: "Reference",
1987
+ payNow: "Pay with your bank",
1988
+ scanToPay: "Scan with your phone to pay",
1989
+ expiresIn: "Expires in {{time}}",
1990
+ expiresInOneHour: "This order expires one hour after creation",
1991
+ waitingForTransfer: "Waiting for your e-Transfer...",
1992
+ cancelOrder: "Cancel order",
1993
+ cancelOrderWarning: "Only cancel if you haven't sent your payment — a cancelled order can't be completed.",
1994
+ cancelOrderConfirm: "Yes, cancel order",
1995
+ cancelOrderKeep: "Keep order",
1996
+ cancelling: "Cancelling...",
1997
+ sessionExpiredTitle: "This order has expired",
1998
+ sessionExpiredSubtitle: "If you already sent the e-Transfer, your deposit will still be processed. Otherwise, start a new order.",
1999
+ startOver: "New order",
2000
+ paymentProcessing: "Payment processing",
2001
+ paymentProcessingSubtitle: "Your Interac e-Transfer is being confirmed...",
2002
+ paymentReceived: "Payment received",
2003
+ paymentReceivedSubtitle: "Delivering to your destination token...",
2004
+ blockedTitle: "Account unavailable",
2005
+ blockedSubtitle: "This payment method isn't available for your account. Please choose a different deposit method.",
2006
+ errors: {
2007
+ statusFailed: "Unable to check your account status",
2008
+ onboardFailed: "Failed to create your account",
2009
+ otpFailed: "Failed to verify the code",
2010
+ invalidOtp: "Invalid or expired code. Request a new one and try again.",
2011
+ phoneSendFailed: "Failed to send the verification code",
2012
+ phoneVerifyFailed: "Failed to verify your phone number",
2013
+ cancelFailed: "Failed to cancel the order",
2014
+ profileUpdateFailed: "Failed to update your profile",
2015
+ kycUrlFailed: "Failed to start verification",
2016
+ missingWallet: "No deposit wallet available",
2017
+ createSessionFailed: "Failed to create order",
2018
+ paymentFailed: "Payment failed",
2019
+ quoteFailed: "Failed to fetch a quote"
2020
+ },
2021
+ review: {
2022
+ estimatedTime: "< 30 min",
2023
+ disclaimer: "Your quoted rate is locked in when you place the order. The order expires if your payment isn't received within one hour.",
2024
+ confirm: "Confirm order"
2025
+ }
2026
+ },
2027
+ interacHeader: {
2028
+ payAmount: "Pay {{amount}} via Interac"
2029
+ },
1842
2030
  applePayMenu: {
1843
2031
  title: "Pay with Apple Pay",
1844
2032
  subtitle: "Instant • Debit card only"
@@ -2060,19 +2248,22 @@ var buyWithCard = {
2060
2248
  var buyWithApplePay = {
2061
2249
  email: {
2062
2250
  label: "Email",
2063
- placeholder: "you@example.com"
2251
+ placeholder: "you@example.com",
2252
+ "continue": "Continue"
2064
2253
  },
2065
2254
  phone: {
2066
2255
  label: "US phone number",
2067
2256
  placeholder: "555 123 4567",
2068
2257
  invalid: "Enter a valid US mobile number (no VoIP).",
2069
2258
  reverified: "Re-verified every 60 days.",
2070
- sendCode: "Send code"
2259
+ sendCode: "Send code",
2260
+ conflict: "This email is linked to another phone number.",
2261
+ contactSupport: "Contact support"
2071
2262
  },
2072
2263
  otp: {
2073
2264
  sentTo: "Sent to {{target}}",
2074
2265
  placeholder: "000000",
2075
- incorrect: "Incorrect code. Please try again.",
2266
+ incorrect: "Invalid OTP code. Please try again.",
2076
2267
  resend: "Resend code",
2077
2268
  resendIn: "Resend in {{seconds}}s",
2078
2269
  verify: "Verify"
@@ -2344,12 +2535,18 @@ var withdrawModal = {
2344
2535
  receiveChain: "Receive chain",
2345
2536
  recipientAddress: "Recipient address",
2346
2537
  recipientAddressPlaceholder: "Enter wallet address",
2538
+ recipientAddressPlaceholderXrpl: "Enter wallet address, or address:memotag",
2347
2539
  amount: "Amount",
2348
2540
  amountPlaceholder: "0.00",
2349
2541
  balance: "Balance",
2350
2542
  minimum: "min",
2351
2543
  withdraw: "Withdraw",
2352
2544
  invalidAddress: "Please enter a valid address",
2545
+ invalidXrplAddress: "Please enter a valid {{chain_name}} address. If your recipient requires a memo tag, please provide it as well, in the format address:memotag",
2546
+ memoTag: "Memo tag",
2547
+ memoTagPlaceholder: "e.g. 12345",
2548
+ memoTagRequiredHint: "This {{chain_name}} address requires a memo tag before it can receive funds",
2549
+ invalidMemoTag: "Memo tag must be a whole number between 0 and 4294967295",
2353
2550
  invalidAmount: "Please enter a valid amount",
2354
2551
  verifyingAddress: "Verifying address...",
2355
2552
  loading: "Loading...",
@@ -2391,6 +2588,110 @@ var hypercore = {
2391
2588
  withdrawFee: "~{{fee}} fee will be applied to this withdrawal.",
2392
2589
  activationFee: "~{{fee}} fee is required to activate a new HyperCore account."
2393
2590
  };
2591
+ var identityVerification = {
2592
+ introTitle: "Verification Required",
2593
+ introBody: "Verify your identity to continue.",
2594
+ stepOf: "Step {{current}} of {{total}}",
2595
+ stepOfNamed: "Step {{current}} of {{total}} · {{label}}",
2596
+ verifyTitle: "Verify your identity",
2597
+ steps: {
2598
+ name: "What's your name?",
2599
+ address: "Where do you live?",
2600
+ identity: "A few more details",
2601
+ questionnaire: "Source of funds",
2602
+ docs: "Verify your ID"
2603
+ },
2604
+ dobParts: {
2605
+ day: "Day",
2606
+ month: "Month",
2607
+ year: "Year"
2608
+ },
2609
+ reviewTitle: "Reviewing your documents",
2610
+ reviewBody: "This usually takes a minute. We'll continue automatically.",
2611
+ rejectedTitle: "Verification unsuccessful",
2612
+ rejectedBody: "We couldn't verify your identity. Contact support if you think this is a mistake.",
2613
+ expiredDoc: "Your {{doc}} expired. Please upload it again.",
2614
+ questionnaireTitle: "Source of funds",
2615
+ tosDisclaimer: {
2616
+ prefix: "By continuing, you agree to ",
2617
+ separator: ", ",
2618
+ lastSeparator: " and ",
2619
+ suffix: ".",
2620
+ agreements: {
2621
+ terms_of_service: "Terms of Service"
2622
+ }
2623
+ },
2624
+ tosLoadFailed: "Failed to load terms of service",
2625
+ docsMintFailed: "Failed to start document verification",
2626
+ docs: {
2627
+ identity: "ID document",
2628
+ poa: "proof of address",
2629
+ selfie: "selfie"
2630
+ },
2631
+ fields: {
2632
+ first_name: "First name",
2633
+ last_name: "Last name",
2634
+ dob: "Date of birth",
2635
+ nationality: "Nationality",
2636
+ tin: "Social Security number",
2637
+ address_line_1: "Address line 1",
2638
+ address_line_2: "Address line 2 (optional)",
2639
+ city: "City",
2640
+ subdivision: "State",
2641
+ postal_code: "Postal code",
2642
+ country: "Country"
2643
+ },
2644
+ questionnaire: {
2645
+ actingAsIntermediary: "I am acting as an intermediary",
2646
+ employmentStatus: "Employment status",
2647
+ expectedMonthlyPaymentsUsd: "Expected monthly payments (USD)",
2648
+ mostRecentOccupation: "Occupation",
2649
+ accountPurpose: "Account purpose",
2650
+ accountPurposeOther: "Please specify",
2651
+ sourceOfFunds: "Source of funds",
2652
+ employment: {
2653
+ employed: "Employed",
2654
+ homemaker: "Homemaker",
2655
+ retired: "Retired",
2656
+ self_employed: "Self-employed",
2657
+ student: "Student",
2658
+ unemployed: "Unemployed"
2659
+ },
2660
+ monthly: {
2661
+ "0_4999": "$0 – $4,999",
2662
+ "5000_9999": "$5,000 – $9,999",
2663
+ "10000_49999": "$10,000 – $49,999",
2664
+ "50000_plus": "$50,000+"
2665
+ },
2666
+ purpose: {
2667
+ charitable_donations: "Charitable donations",
2668
+ ecommerce_retail_payments: "Ecommerce / retail payments",
2669
+ investment_purposes: "Investment",
2670
+ operating_a_company: "Operating a company",
2671
+ payments_to_friends_or_family_abroad: "Payments to friends or family abroad",
2672
+ personal_or_living_expenses: "Personal or living expenses",
2673
+ protect_wealth: "Protect wealth",
2674
+ purchase_goods_and_services: "Purchase goods and services",
2675
+ receive_payment_for_freelancing: "Receive payment for freelancing",
2676
+ receive_salary: "Receive salary",
2677
+ other: "Other"
2678
+ },
2679
+ source: {
2680
+ company_funds: "Company funds",
2681
+ ecommerce_reseller: "Ecommerce reseller",
2682
+ gambling_proceeds: "Gambling proceeds",
2683
+ gifts: "Gifts",
2684
+ government_benefits: "Government benefits",
2685
+ inheritance: "Inheritance",
2686
+ investments_loans: "Investments / loans",
2687
+ pension_retirement: "Pension / retirement",
2688
+ salary: "Salary",
2689
+ sale_of_assets_real_estate: "Sale of assets / real estate",
2690
+ savings: "Savings",
2691
+ someone_elses_funds: "Someone else's funds"
2692
+ }
2693
+ }
2694
+ };
2394
2695
  var en = {
2395
2696
  common: common,
2396
2697
  executionDetails: executionDetails,
@@ -2408,7 +2709,8 @@ var en = {
2408
2709
  payWithStripeLink: payWithStripeLink,
2409
2710
  withdrawModal: withdrawModal,
2410
2711
  incident: incident,
2411
- hypercore: hypercore
2712
+ hypercore: hypercore,
2713
+ identityVerification: identityVerification
2412
2714
  };
2413
2715
 
2414
2716
  /**
@@ -2445,6 +2747,9 @@ declare const i18n: {
2445
2747
  loading: string;
2446
2748
  search: string;
2447
2749
  close: string;
2750
+ noResults: string;
2751
+ selectCountry: string;
2752
+ selectState: string;
2448
2753
  review: string;
2449
2754
  tryAgain: string;
2450
2755
  somethingWentWrong: string;
@@ -2667,6 +2972,7 @@ declare const i18n: {
2667
2972
  not_opted_in: string;
2668
2973
  insufficient_balance: string;
2669
2974
  account_not_found: string;
2975
+ destination_tag_required: string;
2670
2976
  validation_error: string;
2671
2977
  };
2672
2978
  defaultError: string;
@@ -2735,11 +3041,200 @@ declare const i18n: {
2735
3041
  title: string;
2736
3042
  subtitle: string;
2737
3043
  unavailableInCountry: string;
3044
+ verificationIntroTitle: string;
3045
+ verificationIntroBody: string;
3046
+ preparingTitle: string;
3047
+ preparingBody: string;
3048
+ sessionFailedTitle: string;
3049
+ sessionFailedBody: string;
3050
+ sessionFailedSupport: string;
3051
+ detailsTitle: string;
3052
+ instructions: {
3053
+ title: string;
3054
+ subtitle: string;
3055
+ accountNumber: string;
3056
+ routingNumber: string;
3057
+ iban: string;
3058
+ bic: string;
3059
+ accountHolder: string;
3060
+ beneficiary: string;
3061
+ bankName: string;
3062
+ bankAddress: string;
3063
+ swift: string;
3064
+ reference: string;
3065
+ amount: string;
3066
+ currency: string;
3067
+ rails: string;
3068
+ copied: string;
3069
+ processingTime: string;
3070
+ feeLabel: string;
3071
+ railsTitle: string;
3072
+ ach_push: string;
3073
+ rtp: string;
3074
+ wire: string;
3075
+ sepa: string;
3076
+ instant: string;
3077
+ minutes: string;
3078
+ days: string;
3079
+ fee: string;
3080
+ min: string;
3081
+ canClose: string;
3082
+ showFees: string;
3083
+ showMoreDetails: string;
3084
+ };
2738
3085
  };
2739
3086
  cashAppMenu: {
2740
3087
  title: string;
2741
3088
  subtitle: string;
2742
3089
  };
3090
+ interacMenu: {
3091
+ title: string;
3092
+ subtitle: string;
3093
+ };
3094
+ interac: {
3095
+ continue: string;
3096
+ checking: string;
3097
+ submitting: string;
3098
+ verifying: string;
3099
+ creatingSession: string;
3100
+ emailSubtitle: string;
3101
+ emailPlaceholder: string;
3102
+ onboardSubtitle: string;
3103
+ onboardUpdateSubtitle: string;
3104
+ additionalInfoSubtitle: string;
3105
+ additionalInfoFields: {
3106
+ source_of_funds: string;
3107
+ intended_use_of_usdc: string;
3108
+ how_did_you_hear: string;
3109
+ who_referred_you: string;
3110
+ previous_crypto_experience: string;
3111
+ };
3112
+ additionalInfoSelect: string;
3113
+ additionalInfoOptions: {
3114
+ source_of_funds: {
3115
+ salary: string;
3116
+ savings: string;
3117
+ businessIncome: string;
3118
+ investments: string;
3119
+ pension: string;
3120
+ inheritanceOrGift: string;
3121
+ other: string;
3122
+ };
3123
+ intended_use_of_usdc: {
3124
+ savings: string;
3125
+ investing: string;
3126
+ payments: string;
3127
+ remittance: string;
3128
+ defi: string;
3129
+ other: string;
3130
+ };
3131
+ how_did_you_hear: {
3132
+ search: string;
3133
+ social: string;
3134
+ friendOrFamily: string;
3135
+ news: string;
3136
+ ad: string;
3137
+ other: string;
3138
+ };
3139
+ who_referred_you: {
3140
+ friendOrFamily: string;
3141
+ colleague: string;
3142
+ advisor: string;
3143
+ community: string;
3144
+ noOne: string;
3145
+ };
3146
+ previous_crypto_experience: {
3147
+ none: string;
3148
+ beginner: string;
3149
+ intermediate: string;
3150
+ advanced: string;
3151
+ };
3152
+ };
3153
+ sections: {
3154
+ personal: string;
3155
+ address: string;
3156
+ };
3157
+ fields: {
3158
+ firstName: string;
3159
+ lastName: string;
3160
+ dob: string;
3161
+ phone: string;
3162
+ addressLine1: string;
3163
+ addressLine2: string;
3164
+ city: string;
3165
+ province: string;
3166
+ provincePlaceholder: string;
3167
+ postalCode: string;
3168
+ occupation: string;
3169
+ };
3170
+ attestation: string;
3171
+ otpSubtitle: string;
3172
+ otpCodePlaceholder: string;
3173
+ otpVerify: string;
3174
+ otpResend: string;
3175
+ otpResendIn: string;
3176
+ phoneSendCode: string;
3177
+ phoneSending: string;
3178
+ phoneOtpSubtitle: string;
3179
+ kycTitle: string;
3180
+ kycSubtitle: string;
3181
+ kycStart: string;
3182
+ kycOpening: string;
3183
+ kycOpenNewTab: string;
3184
+ kycInReviewTitle: string;
3185
+ kycInReviewSubtitle: string;
3186
+ kycReopen: string;
3187
+ quoteLoading: string;
3188
+ quoteReceive: string;
3189
+ instructions: string;
3190
+ instructionsWithPayee: string;
3191
+ instructionsWithLink: string;
3192
+ amountLabel: string;
3193
+ payeeLabel: string;
3194
+ referenceLabel: string;
3195
+ payNow: string;
3196
+ scanToPay: string;
3197
+ expiresIn: string;
3198
+ expiresInOneHour: string;
3199
+ waitingForTransfer: string;
3200
+ cancelOrder: string;
3201
+ cancelOrderWarning: string;
3202
+ cancelOrderConfirm: string;
3203
+ cancelOrderKeep: string;
3204
+ cancelling: string;
3205
+ sessionExpiredTitle: string;
3206
+ sessionExpiredSubtitle: string;
3207
+ startOver: string;
3208
+ paymentProcessing: string;
3209
+ paymentProcessingSubtitle: string;
3210
+ paymentReceived: string;
3211
+ paymentReceivedSubtitle: string;
3212
+ blockedTitle: string;
3213
+ blockedSubtitle: string;
3214
+ errors: {
3215
+ statusFailed: string;
3216
+ onboardFailed: string;
3217
+ otpFailed: string;
3218
+ invalidOtp: string;
3219
+ phoneSendFailed: string;
3220
+ phoneVerifyFailed: string;
3221
+ cancelFailed: string;
3222
+ profileUpdateFailed: string;
3223
+ kycUrlFailed: string;
3224
+ missingWallet: string;
3225
+ createSessionFailed: string;
3226
+ paymentFailed: string;
3227
+ quoteFailed: string;
3228
+ };
3229
+ review: {
3230
+ estimatedTime: string;
3231
+ disclaimer: string;
3232
+ confirm: string;
3233
+ };
3234
+ };
3235
+ interacHeader: {
3236
+ payAmount: string;
3237
+ };
2743
3238
  applePayMenu: {
2744
3239
  title: string;
2745
3240
  subtitle: string;
@@ -2962,6 +3457,7 @@ declare const i18n: {
2962
3457
  email: {
2963
3458
  label: string;
2964
3459
  placeholder: string;
3460
+ continue: string;
2965
3461
  };
2966
3462
  phone: {
2967
3463
  label: string;
@@ -2969,6 +3465,8 @@ declare const i18n: {
2969
3465
  invalid: string;
2970
3466
  reverified: string;
2971
3467
  sendCode: string;
3468
+ conflict: string;
3469
+ contactSupport: string;
2972
3470
  };
2973
3471
  otp: {
2974
3472
  sentTo: string;
@@ -3245,12 +3743,18 @@ declare const i18n: {
3245
3743
  receiveChain: string;
3246
3744
  recipientAddress: string;
3247
3745
  recipientAddressPlaceholder: string;
3746
+ recipientAddressPlaceholderXrpl: string;
3248
3747
  amount: string;
3249
3748
  amountPlaceholder: string;
3250
3749
  balance: string;
3251
3750
  minimum: string;
3252
3751
  withdraw: string;
3253
3752
  invalidAddress: string;
3753
+ invalidXrplAddress: string;
3754
+ memoTag: string;
3755
+ memoTagPlaceholder: string;
3756
+ memoTagRequiredHint: string;
3757
+ invalidMemoTag: string;
3254
3758
  invalidAmount: string;
3255
3759
  verifyingAddress: string;
3256
3760
  loading: string;
@@ -3292,6 +3796,110 @@ declare const i18n: {
3292
3796
  withdrawFee: string;
3293
3797
  activationFee: string;
3294
3798
  };
3799
+ identityVerification: {
3800
+ introTitle: string;
3801
+ introBody: string;
3802
+ stepOf: string;
3803
+ stepOfNamed: string;
3804
+ verifyTitle: string;
3805
+ steps: {
3806
+ name: string;
3807
+ address: string;
3808
+ identity: string;
3809
+ questionnaire: string;
3810
+ docs: string;
3811
+ };
3812
+ dobParts: {
3813
+ day: string;
3814
+ month: string;
3815
+ year: string;
3816
+ };
3817
+ reviewTitle: string;
3818
+ reviewBody: string;
3819
+ rejectedTitle: string;
3820
+ rejectedBody: string;
3821
+ expiredDoc: string;
3822
+ questionnaireTitle: string;
3823
+ tosDisclaimer: {
3824
+ prefix: string;
3825
+ separator: string;
3826
+ lastSeparator: string;
3827
+ suffix: string;
3828
+ agreements: {
3829
+ terms_of_service: string;
3830
+ };
3831
+ };
3832
+ tosLoadFailed: string;
3833
+ docsMintFailed: string;
3834
+ docs: {
3835
+ identity: string;
3836
+ poa: string;
3837
+ selfie: string;
3838
+ };
3839
+ fields: {
3840
+ first_name: string;
3841
+ last_name: string;
3842
+ dob: string;
3843
+ nationality: string;
3844
+ tin: string;
3845
+ address_line_1: string;
3846
+ address_line_2: string;
3847
+ city: string;
3848
+ subdivision: string;
3849
+ postal_code: string;
3850
+ country: string;
3851
+ };
3852
+ questionnaire: {
3853
+ actingAsIntermediary: string;
3854
+ employmentStatus: string;
3855
+ expectedMonthlyPaymentsUsd: string;
3856
+ mostRecentOccupation: string;
3857
+ accountPurpose: string;
3858
+ accountPurposeOther: string;
3859
+ sourceOfFunds: string;
3860
+ employment: {
3861
+ employed: string;
3862
+ homemaker: string;
3863
+ retired: string;
3864
+ self_employed: string;
3865
+ student: string;
3866
+ unemployed: string;
3867
+ };
3868
+ monthly: {
3869
+ "0_4999": string;
3870
+ "5000_9999": string;
3871
+ "10000_49999": string;
3872
+ "50000_plus": string;
3873
+ };
3874
+ purpose: {
3875
+ charitable_donations: string;
3876
+ ecommerce_retail_payments: string;
3877
+ investment_purposes: string;
3878
+ operating_a_company: string;
3879
+ payments_to_friends_or_family_abroad: string;
3880
+ personal_or_living_expenses: string;
3881
+ protect_wealth: string;
3882
+ purchase_goods_and_services: string;
3883
+ receive_payment_for_freelancing: string;
3884
+ receive_salary: string;
3885
+ other: string;
3886
+ };
3887
+ source: {
3888
+ company_funds: string;
3889
+ ecommerce_reseller: string;
3890
+ gambling_proceeds: string;
3891
+ gifts: string;
3892
+ government_benefits: string;
3893
+ inheritance: string;
3894
+ investments_loans: string;
3895
+ pension_retirement: string;
3896
+ salary: string;
3897
+ sale_of_assets_real_estate: string;
3898
+ savings: string;
3899
+ someone_elses_funds: string;
3900
+ };
3901
+ };
3902
+ };
3295
3903
  };
3296
3904
  /**
3297
3905
  * Interpolate parameters into a template string
@@ -3358,6 +3966,248 @@ declare function I18nProvider({ children, locale }: I18nProviderProps): react_js
3358
3966
  */
3359
3967
  declare function useI18n(): I18nContextValue;
3360
3968
 
3969
+ /**
3970
+ * Canonical country table for the SDK.
3971
+ *
3972
+ * One row per ISO 3166-1 assigned country or territory (249). Every other
3973
+ * country list in the SDK — region groups, residence pickers, nationality
3974
+ * selectors, dial-code pickers — is derived from this one, so a country's name,
3975
+ * code and calling code can't drift between flows.
3976
+ *
3977
+ * Codes are ISO 3166-1 alpha-2 only. Providers that store the three-letter
3978
+ * form convert at the API, so the client never maps between the two.
3979
+ *
3980
+ * Display names follow Stripe's EU KYC reference tables. Calling codes are
3981
+ * ITU E.164 country codes, without the leading `+`; the six uninhabited
3982
+ * territories have none.
3983
+ */
3984
+ interface Country {
3985
+ /** ISO 3166-1 alpha-2, e.g. `US`. */
3986
+ alpha2: string;
3987
+ /** English display name. */
3988
+ name: string;
3989
+ /** E.164 calling code without `+`, e.g. `1`. Absent for uninhabited territories. */
3990
+ dialCode?: string;
3991
+ }
3992
+ /** Every ISO 3166-1 country, in alpha-2 order. Use {@link ALL_COUNTRIES} for display. */
3993
+ declare const COUNTRIES: readonly Country[];
3994
+ /** Every country, sorted by display name for pickers. */
3995
+ declare const ALL_COUNTRIES: readonly Country[];
3996
+ /** Look a country up by ISO 3166-1 alpha-2, case-insensitively. */
3997
+ declare function findCountry(code: string | undefined | null): Country | undefined;
3998
+ /** Canonical alpha-2, or `undefined` when unknown. */
3999
+ declare function toAlpha2(code: string | undefined | null): string | undefined;
4000
+ /** Display name for a code, falling back to the code itself when unknown. */
4001
+ declare function countryName(code: string): string;
4002
+ /** Calling code for a country, without the leading `+`. */
4003
+ declare function dialCode(code: string): string | undefined;
4004
+
4005
+ /**
4006
+ * Region groups a KYC or payment flow can be scoped to.
4007
+ *
4008
+ * Groups nest where the everyday meaning nests: `ASIA` contains `SEA` and
4009
+ * `INDIA`, `EEA` contains `EU`, `LATAM` contains `CARIBBEAN`. Asking for a
4010
+ * parent returns its children too, so a flow that is "open across Asia" can say
4011
+ * `['ASIA']` rather than enumerating the pieces, while one that is only open in
4012
+ * South East Asia can say `['SEA']`.
4013
+ *
4014
+ * Membership is by ISO 3166-1 alpha-2. Dependent territories sit with the
4015
+ * region they are geographically in, not with their sovereign — French Guiana is
4016
+ * `LATAM`, not `EU`, because that is where its residents are.
4017
+ */
4018
+ type CountryGroup = 'US' | 'CANADA' | 'UK' | 'EU' | 'EEA' | 'EUROPE' | 'INDIA' | 'SEA' | 'ASIA' | 'MENA' | 'AFRICA' | 'CARIBBEAN' | 'LATAM' | 'OCEANIA';
4019
+ /** Alpha-2 members of each group, children included. */
4020
+ declare const COUNTRY_GROUPS: Record<CountryGroup, readonly string[]>;
4021
+ /** True when the country is in the group. Alpha-2, case-insensitive. */
4022
+ declare function isInGroup(code: string | undefined | null, group: CountryGroup): boolean;
4023
+ interface GetKycCountryListOptions {
4024
+ /** Regions to include. Omit for every supported country. */
4025
+ group?: readonly CountryGroup[];
4026
+ /** Individual countries to include on top of `group`, ISO 3166-1 alpha-2. */
4027
+ whitelisted?: readonly string[];
4028
+ /**
4029
+ * Countries to leave out, ISO 3166-1 alpha-2. Applied last, so it removes a
4030
+ * country that `group` or `whitelisted` would otherwise bring in — an explicit
4031
+ * exclusion outranks an inclusion.
4032
+ */
4033
+ blacklisted?: readonly string[];
4034
+ }
4035
+ /**
4036
+ * Build a flat, de-duplicated country list for a picker.
4037
+ *
4038
+ * `getKycCountryList()` is every supported country. `getKycCountryList({ group: ['EU'],
4039
+ * whitelisted: ['US'] })` is the EU plus the United States. Unknown codes in
4040
+ * `whitelisted` or `blacklisted` are ignored rather than thrown on, since the
4041
+ * lists are usually configuration.
4042
+ *
4043
+ * Sorted by display name.
4044
+ */
4045
+ declare function getKycCountryList(options?: GetKycCountryListOptions): Country[];
4046
+
4047
+ /** A US state or territory: USPS / ISO 3166-2:US code and display name. */
4048
+ interface UsState {
4049
+ code: string;
4050
+ name: string;
4051
+ }
4052
+ /**
4053
+ * USPS/ISO 3166-2:US codes for the `state` field of a US address.
4054
+ *
4055
+ * Both Stripe and our identity API want the two-letter code, not the name, and
4056
+ * reject anything else — so this list is the only way a state reaches the API,
4057
+ * replacing a free-text box that accepted any two characters.
4058
+ *
4059
+ * Includes DC and the five inhabited territories: their addresses are US
4060
+ * addresses with US ZIP codes, so someone living there has no other code to
4061
+ * give. Sorted by name, which is the order the picker shows them in.
4062
+ */
4063
+ declare const US_STATES: readonly UsState[];
4064
+ /** Display name for a state code, or the code itself if it isn't one we list. */
4065
+ declare function usStateName(code: string): string;
4066
+
4067
+ /** Same CDN convention as `/icons/currencies/svg/{code}.svg`. Native ratio, long side 28. */
4068
+ declare function countryFlagIconPath(alpha2: string): string;
4069
+ /** Raster of the same flag. Native ratio, long side 128. */
4070
+ declare function countryFlagPngPath(alpha2: string): string;
4071
+ /**
4072
+ * Flag emoji for a country, built from the two regional indicator symbols the
4073
+ * alpha-2 code maps to. Kept for callers that want a text-only flag; the picker
4074
+ * itself uses {@link CountryFlag} because Windows ships no flag glyphs and
4075
+ * renders these as a letter pair.
4076
+ */
4077
+ declare function countryFlag(code: string): string;
4078
+ /**
4079
+ * Flag image served from the asset CDN.
4080
+ *
4081
+ * An image rather than an emoji so the same artwork renders on every platform:
4082
+ * emoji flags depend on the system font, which on Windows has none. Each flag is
4083
+ * ~1.4 KB and `loading="lazy"`, so a long picker only fetches the rows on
4084
+ * screen, and the browser cache makes later opens free.
4085
+ *
4086
+ * Unknown or non-alpha-2 codes render nothing.
4087
+ */
4088
+ declare function CountryFlag({ code, assetCdnUrl, size, className, }: {
4089
+ code: string;
4090
+ assetCdnUrl?: string;
4091
+ /** Width in px. Height follows the flag's native ratio. */
4092
+ size?: number;
4093
+ className?: string;
4094
+ }): react_jsx_runtime.JSX.Element | null;
4095
+
4096
+ /** One row of the sheet: a country, or a subdivision such as a US state. */
4097
+ interface RegionOption {
4098
+ /**
4099
+ * Value handed back from `onSelect` — an ISO 3166-1 country code or an
4100
+ * ISO 3166-2 subdivision code, in whatever form the surrounding API speaks.
4101
+ */
4102
+ code: string;
4103
+ name: string;
4104
+ /**
4105
+ * Alpha-2 country code for the flag when `code` isn't one — a subdivision
4106
+ * whose parent flag should show. Defaults to `code`.
4107
+ */
4108
+ flagCode?: string;
4109
+ }
4110
+ /**
4111
+ * Marks the element a sheet should cover. The sheet portals into the nearest
4112
+ * ancestor carrying this attribute, so a form several components deep can raise
4113
+ * a picker over the whole modal body — footer included — without every layer in
4114
+ * between having to know about it. With no anchor in the tree the sheet renders
4115
+ * in place, against the nearest positioned ancestor.
4116
+ */
4117
+ declare const REGION_SHEET_ANCHOR_ATTR = "data-uf-sheet-anchor";
4118
+ /**
4119
+ * Match options against what someone typed.
4120
+ *
4121
+ * Deliberately literal rather than fuzzy: with a couple of hundred countries and
4122
+ * two-letter codes, fuzzy matching surfaces confusing near-misses. People search
4123
+ * a list like this by typing the start of a name, its ISO code, or — in the phone
4124
+ * picker — the calling code, with or without the leading `+`.
4125
+ *
4126
+ * Calling codes are only matched when the sheet is actually showing them.
4127
+ * Subdivision codes collide with country ones (`DE` is both Delaware and
4128
+ * Germany), so an unconditional dial lookup would let "49" surface Delaware.
4129
+ */
4130
+ declare function filterRegions(options: readonly RegionOption[], query: string, matchDialCode?: boolean): RegionOption[];
4131
+ interface RegionSelectorSheetProps {
4132
+ open: boolean;
4133
+ onOpenChange: (open: boolean) => void;
4134
+ options: readonly RegionOption[];
4135
+ /** Currently selected code, if any. */
4136
+ selectedCode: string;
4137
+ onSelect: (code: string) => void;
4138
+ title: string;
4139
+ /**
4140
+ * Show each country's E.164 calling code instead of its ISO code, turning the
4141
+ * same sheet into the phone country-code picker.
4142
+ */
4143
+ showDialCode?: boolean;
4144
+ /**
4145
+ * Off for lists whose codes aren't countries — a US state has no flag, and
4146
+ * the CDN would be asked for Germany's for Delaware.
4147
+ */
4148
+ showFlags?: boolean;
4149
+ /**
4150
+ * Trailing ISO/dial-code badge. Off for lists whose `code` isn't a country
4151
+ * or subdivision (e.g. questionnaire option ids).
4152
+ */
4153
+ showCode?: boolean;
4154
+ /** Asset CDN override for the flag images, as passed to the modal. */
4155
+ assetCdnUrl?: string;
4156
+ }
4157
+ /**
4158
+ * Full-panel picker for a country or a subdivision, replacing a native
4159
+ * `<select>`.
4160
+ *
4161
+ * A native dropdown renders with the browser's own chrome, which ignores the
4162
+ * theme entirely — a light popup over a dark modal — and is painful with a list
4163
+ * this long. This follows the same shape as `TokenSelectorSheet`: a title row, a
4164
+ * search field, and a scrollable themed list.
4165
+ *
4166
+ * Positioned `absolute` against the nearest positioned ancestor, so the host
4167
+ * flow needs a `relative` wrapper around the area the sheet should cover —
4168
+ * `DepositModal` provides one around its body.
4169
+ */
4170
+ declare function RegionSelectorSheet({ open, onOpenChange, options, selectedCode, onSelect, title, showDialCode, showFlags, showCode, assetCdnUrl, }: RegionSelectorSheetProps): react_jsx_runtime.JSX.Element | null;
4171
+
4172
+ interface RegionPickerButtonProps {
4173
+ /** Text to show — the selected region, or a placeholder when nothing is set. */
4174
+ label: string;
4175
+ /** Dim the label when it stands in for an empty selection. */
4176
+ placeholder?: boolean;
4177
+ /** Country code of the current selection, to show its flag alongside the label. */
4178
+ flagCode?: string;
4179
+ /** Asset CDN override for the flag image, as passed to the modal. */
4180
+ assetCdnUrl?: string;
4181
+ onClick: () => void;
4182
+ /**
4183
+ * Size to the label rather than filling the row, for the calling-code control
4184
+ * that sits beside a phone input. Dial codes run from one to three digits, and
4185
+ * the flag, gaps and chevron around them take up most of the control, so a
4186
+ * width that suits `+1` ellipsises `+372`.
4187
+ */
4188
+ fitContent?: boolean;
4189
+ /**
4190
+ * Match the shorter inputs used by the KYC forms (`py-2.5`) rather than the
4191
+ * taller registration ones (`py-3`), so the control lines up with whatever
4192
+ * field sits beside it.
4193
+ */
4194
+ dense?: boolean;
4195
+ /**
4196
+ * There is only one possible value, so render the selection as a read-only
4197
+ * field: no chevron, nothing to click. A disabled button would still invite
4198
+ * the click and read as temporarily unavailable rather than absent.
4199
+ */
4200
+ locked?: boolean;
4201
+ /**
4202
+ * Overrides merged last, so a form whose text inputs are styled differently
4203
+ * from the theme's default input (the KYC form uses the card surface) can make
4204
+ * the trigger match the fields beside it.
4205
+ */
4206
+ style?: React$1.CSSProperties;
4207
+ }
4208
+ /** Trigger that opens a {@link RegionSelectorSheet}, styled as an input. */
4209
+ declare function RegionPickerButton({ label, placeholder, flagCode, assetCdnUrl, onClick, fitContent, dense, locked, style: styleOverride, }: RegionPickerButtonProps): react_jsx_runtime.JSX.Element;
4210
+
3361
4211
  /**
3362
4212
  * Result of the useAllowedCountry hook
3363
4213
  */
@@ -3468,6 +4318,16 @@ interface UseDepositQuoteParams {
3468
4318
  adjustForSlippage?: boolean;
3469
4319
  /** When true and both tokens are stablecoins, returns a 1:1 quote without swap provider. */
3470
4320
  stablecoinParity?: boolean;
4321
+ /**
4322
+ * Deposit wallet that will send the swap. Optional — when omitted the
4323
+ * API prices the route with a placeholder address for the source chain.
4324
+ */
4325
+ senderAddress?: string;
4326
+ /**
4327
+ * Final destination that should receive the swap. Optional — when omitted
4328
+ * the API prices the route with a placeholder address for the destination chain.
4329
+ */
4330
+ recipientAddress?: string;
3471
4331
  enabled?: boolean;
3472
4332
  }
3473
4333
  /**
@@ -3912,4 +4772,4 @@ declare function cn(...inputs: ClassValue[]): string;
3912
4772
  */
3913
4773
  declare function truncateAddress(address: string, startChars?: number, endChars?: number): string;
3914
4774
 
3915
- export { type AllowedCountryResult, AnalyticsProvider, type AnalyticsProviderProps, BankTransfer, BankTransferButton, type BankTransferProps, type BankTransferView, type BrowserWalletAmountQuickSelect, Button, type ButtonProps, type ButtonTokens, BuyWithApplePay, type BuyWithApplePayProps, BuyWithCard, type BuyWithCardProps, BuyWithGooglePay, type BuyWithGooglePayProps, BuyWithWalletPay, type BuyWithWalletPayHandle, type BuyWithWalletPayProps, type CardTokens, CheckingForDepositIndicator, CheckoutModal, type CheckoutModalProps, CoinbaseConnect, type ComponentConfig, type ComponentOverrides, type ComponentTokens, ConfirmingView, ConnectExchangeButton, type ContainerTokens, CurrencyListItem, CurrencyListSection, CurrencyModal, type CustomThemeColors, type DepositConfirmationMode, DepositDetailContent, DepositExecutionItem, DepositHeader, type DepositMenuLayout, type DepositMenuLayoutType, DepositModal, type DepositModalInitialScreen, DepositSuccessToast, type DepositTab, DepositTrackerButton, DepositWithCardButton, DepositsModal, type DetectedWallet, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, EIP6963_BOOTSTRAP_SCRIPT, type EvmWalletProvider, type FontConfig, HYPERCORE_CHAIN_ID, type HeaderTokens, type I18nContextValue, I18nProvider, type I18nProviderProps, type I18nStrings, type InputTokens, type ListTokens, type LocaleCode, ManualDepositButton, type MobilePlatform, PayWithStripeLink, type PayWithStripeLinkProps, QRCodeSkeleton, type ResolvedFonts, SUPPORTED_LOCALES, type SearchTokens, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, type SolanaStandardAccount, type SolanaStandardWallet, type SolanaWalletProvider, type StoredWalletPaySession as StoredApplePaySession, type StoredWalletPaySession, StripeLinkButton, type StripeLinkStep, StyledQRCode, type ThemeColors, type ThemeConfig, type ThemeMode, ThemeProvider, type ThemeProviderProps, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, TransferCryptoButton, TransferCryptoDoubleInput, TransferCryptoSingleInput, TransferQrCode, type UseDepositQuoteParams, type UsePaymentIntentParams, type UseSupportedDepositTokensOptions, type UseTokenMetadataParams, WalletPayQrCheckout, type WalletPayQrCheckoutProps, type WalletPayQuote, type WalletPayView, WithdrawConfirmingView, WithdrawDoubleInput, WithdrawExecutionItem, WithdrawForm, WithdrawModal, type WithdrawModalProps, WithdrawTokenSelector, type WithdrawTransactionInfo, buildWalletPayQuote, buttonVariants, clearStoredWalletPaySession as clearStoredApplePaySession, clearStoredWalletPaySession, cn, colors, connectSolanaStandardWallet, defaultColors, detectBrowserLocale, detectBrowserWallet, detectConnectedBrowserWallet, findSolanaStandardWallet, formatCryptoAmount, formatFiat, getActiveLocale, getActiveStrings, getAuthorizedSolanaStandardAccounts, getColors, getSolanaStandardWallets, getStoredWalletPaySession as getStoredApplePaySession, getStoredWalletPaySession, getStrings, i18n, interpolate, isHypercoreChain, isOnrampTokenFresh, isSolanaWalletDetectedViaWalletStandard, mergeColors, normalizeLocale, platformSupportsWalletPay, qrErrorCorrectionLevel, requestEip6963Providers, resolveComponentTokens, sendEvmWithdraw, sendHypercoreWithdraw, sendSolanaWithdraw, setActiveLocale, setStoredWalletPaySession as setStoredApplePaySession, setStoredWalletPaySession, signSolanaStandardTransaction, startBrowserWalletDiscovery, subscribeSolanaStandardAccountChanges, subscribeSolanaStandardWallets, truncateAddress, useAddressBalance, useAllowedCountry, useAnalytics, useDebounce, useDepositPolling, useDepositQuote, useI18n, useMobilePlatform, usePaymentIntent, usePublicIncident, useSourceTokenValidation, useSupportedDepositTokens, useSupportedDestinationTokens, useTheme, useTokenMetadata, useVerifyRecipientAddress, useWithdrawPolling };
4775
+ export { ALL_COUNTRIES, type AllowedCountryResult, AnalyticsProvider, type AnalyticsProviderProps, BankTransfer, BankTransferButton, type BankTransferProps, type BankTransferView, type BrowserWalletAmountQuickSelect, Button, type ButtonProps, type ButtonTokens, BuyWithApplePay, type BuyWithApplePayProps, BuyWithCard, type BuyWithCardProps, BuyWithGooglePay, type BuyWithGooglePayProps, BuyWithWalletPay, type BuyWithWalletPayHandle, type BuyWithWalletPayProps, COUNTRIES, COUNTRY_GROUPS, type CardTokens, CheckingForDepositIndicator, CheckoutModal, type CheckoutModalProps, CoinbaseConnect, type ComponentConfig, type ComponentOverrides, type ComponentTokens, ConfirmingView, ConnectExchangeButton, type ContainerTokens, type Country, CountryFlag, type CountryGroup, CurrencyListItem, CurrencyListSection, CurrencyModal, type CustomThemeColors, type DepositConfirmationMode, DepositDetailContent, DepositExecutionItem, DepositHeader, type DepositMenuLayout, type DepositMenuLayoutType, DepositModal, type DepositModalInitialScreen, DepositSuccessToast, type DepositTab, DepositTrackerButton, DepositWithCardButton, DepositsModal, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, EIP6963_BOOTSTRAP_SCRIPT, type FontConfig, type GetKycCountryListOptions, HYPERCORE_CHAIN_ID, type HeaderTokens, type I18nContextValue, I18nProvider, type I18nProviderProps, type I18nStrings, type InputTokens, type ListTokens, type LocaleCode, ManualDepositButton, type MobilePlatform, PayWithStripeLink, type PayWithStripeLinkProps, QRCodeSkeleton, REGION_SHEET_ANCHOR_ATTR, type RegionOption, RegionPickerButton, type RegionPickerButtonProps, RegionSelectorSheet, type RegionSelectorSheetProps, type ResolvedFonts, SUPPORTED_LOCALES, type SearchTokens, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, type SolanaStandardAccount, type SolanaStandardWallet, type StoredWalletPaySession as StoredApplePaySession, type StoredWalletPaySession, StripeLinkButton, type StripeLinkStep, StyledQRCode, type ThemeColors, type ThemeConfig, type ThemeMode, ThemeProvider, type ThemeProviderProps, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, TransferCryptoButton, TransferCryptoDoubleInput, TransferCryptoSingleInput, TransferQrCode, US_STATES, type UsState, type UseDepositQuoteParams, type UsePaymentIntentParams, type UseSupportedDepositTokensOptions, type UseTokenMetadataParams, WalletPayQrCheckout, type WalletPayQrCheckoutProps, type WalletPayQuote, type WalletPayView, WithdrawConfirmingView, WithdrawDoubleInput, WithdrawExecutionItem, WithdrawForm, WithdrawModal, type WithdrawModalProps, WithdrawTokenSelector, type WithdrawTransactionInfo, bankTransferOnrampToken, buildWalletPayQuote, buttonVariants, clearStoredWalletPaySession as clearStoredApplePaySession, clearStoredWalletPaySession, cn, colors, connectSolanaStandardWallet, countryFlag, countryFlagIconPath, countryFlagPngPath, countryName, defaultColors, detectBrowserLocale, detectConnectedBrowserWallet, dialCode, filterRegions, findCountry, findSolanaStandardWallet, formatCryptoAmount, formatFiat, getActiveLocale, getActiveStrings, getAuthorizedSolanaStandardAccounts, getColors, getKycCountryList, getSolanaStandardWallets, getStoredWalletPaySession as getStoredApplePaySession, getStoredWalletPaySession, getStrings, i18n, interpolate, isEmailOnrampTokenFresh, isInGroup, isOnrampTokenFresh, isSolanaWalletDetectedViaWalletStandard, mergeColors, normalizeLocale, platformSupportsWalletPay, qrErrorCorrectionLevel, requestEip6963Providers, resolveComponentTokens, setActiveLocale, setStoredWalletPaySession as setStoredApplePaySession, setStoredWalletPaySession, signSolanaStandardTransaction, startBrowserWalletDiscovery, subscribeSolanaStandardAccountChanges, subscribeSolanaStandardWallets, toAlpha2, truncateAddress, usStateName, useAddressBalance, useAllowedCountry, useAnalytics, useDebounce, useDepositPolling, useDepositQuote, useI18n, useMobilePlatform, usePaymentIntent, usePublicIncident, useSourceTokenValidation, useSupportedDepositTokens, useSupportedDestinationTokens, useTheme, useTokenMetadata, useVerifyRecipientAddress, useWithdrawPolling };