@unifold/ui-react 0.1.82 → 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.ts 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
152
 
155
- type DepositModalInitialScreen = 'main' | 'transfer' | 'card' | 'cashapp' | 'apple_pay' | 'google_pay' | 'tracker' | 'pay_with_exchange' | 'exchange_connect' | 'wallet_connect' | 'bank_transfer' | 'stripe_link';
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,7 @@ 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 CardOnrampView = 'amount' | 'quotes' | 'review';
482
+ type CardOnrampView = 'amount' | 'quotes' | 'review' | 'processing';
477
483
 
478
484
  type CardView = CardOnrampView;
479
485
  interface BuyWithCardProps {
@@ -522,7 +528,7 @@ interface BuyWithCardProps {
522
528
  declare function BuyWithCard({ userId, publishableKey, view: externalView, onViewChange, projectName, maxAmountUsd, accentColor, // Keep prop for backward compatibility but don't use default
523
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;
524
530
 
525
- 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';
526
532
  type View = WalletPayView;
527
533
  interface BuyWithWalletPayProps {
528
534
  /**
@@ -575,6 +581,7 @@ interface BuyWithWalletPayProps {
575
581
  /** Invoked when the user taps the exit button on a terminal screen. */
576
582
  onExit?: () => void;
577
583
  themeClass?: string;
584
+ assetCdnUrl?: string;
578
585
  }
579
586
  /** Imperative handle: `requestBack` returns true when the child handled the back. */
580
587
  interface BuyWithWalletPayHandle {
@@ -700,20 +707,39 @@ declare const BuyWithGooglePay: React$1.ForwardRefExoticComponent<BuyWithGoogleP
700
707
 
701
708
  interface StoredWalletPaySession {
702
709
  email: string;
703
- /** US phone in E.164 (e.g. +12345678901). */
710
+ /** US phone in E.164 (e.g. +12345678901). Collected on every flow. */
704
711
  phone: string;
705
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
+ */
706
718
  phoneVerifiedAt?: string;
707
719
  emailVerifiedAt?: string;
708
- /** 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. */
709
721
  onrampToken?: string;
710
722
  /** Epoch ms; treated as expired 60s before this to avoid order-race. */
711
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;
712
729
  }
713
730
  declare function getStoredWalletPaySession(userId: string): StoredWalletPaySession | null;
714
731
  declare function setStoredWalletPaySession(userId: string, contact: StoredWalletPaySession): void;
715
732
  declare function clearStoredWalletPaySession(userId: string): void;
733
+ /** Wallet pay: the Coinbase routes are `@RequireVerifiedFactors('phone')`. */
716
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;
717
743
 
718
744
  interface CurrencyModalProps {
719
745
  open: boolean;
@@ -848,7 +874,10 @@ interface StripeLinkButtonProps {
848
874
  }
849
875
  declare function StripeLinkButton({ onClick, title, subtitle, iconUrl }: StripeLinkButtonProps): react_jsx_runtime.JSX.Element;
850
876
 
851
- 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;
852
881
  interface BankTransferProps {
853
882
  userId: string;
854
883
  publishableKey: string;
@@ -876,17 +905,20 @@ interface BankTransferProps {
876
905
  }) => void;
877
906
  /** Optional USD prefilled for the amount input (treated like manual user input). */
878
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>;
879
914
  }
880
915
  /**
881
- * Bank-transfer deposit flow. Three steps:
882
- * 1. Provider list (returned by `getBankTransferProviders`)
883
- * 2. Amount input (Swapped-only today; other providers may diverge later)
884
- * 3. Pending — Swapped widget opens in a new tab, we poll for the deposit
885
- *
886
- * The widget itself handles KYC + IBAN entry + payment; we just collect the
887
- * 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.
888
920
  */
889
- 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;
890
922
 
891
923
  interface DepositWallet {
892
924
  id: string;
@@ -1035,6 +1067,7 @@ declare function CheckingForDepositIndicator({ showWaitingUi, hasExecution, }: {
1035
1067
  interface ConfirmingViewProps {
1036
1068
  isConfirming: boolean;
1037
1069
  onClose: () => void;
1070
+ onBack?: () => void;
1038
1071
  executions?: DirectExecutionResponse[];
1039
1072
  isPolling?: boolean;
1040
1073
  onNewDeposit?: () => void;
@@ -1045,7 +1078,7 @@ interface ConfirmingViewProps {
1045
1078
  /** Snapshot of amount_received_usd taken when the transaction was submitted. */
1046
1079
  amountReceivedUsdAtSubmission?: string | null;
1047
1080
  }
1048
- 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;
1049
1082
 
1050
1083
  interface CheckoutModalProps {
1051
1084
  open: boolean;
@@ -1321,46 +1354,6 @@ declare function WithdrawConfirmingView({ txInfo, executions, onClose, onViewTra
1321
1354
 
1322
1355
  declare const HYPERCORE_CHAIN_ID = "1337";
1323
1356
 
1324
- declare function isHypercoreChain(chainId: string): boolean;
1325
-
1326
- type DetectedWallet = {
1327
- name: string;
1328
- address: string;
1329
- } & ({
1330
- chainFamily: 'evm';
1331
- provider: EvmWalletProvider;
1332
- } | {
1333
- chainFamily: 'solana';
1334
- provider: SolanaWalletProvider;
1335
- });
1336
- declare function sendEvmWithdraw(params: {
1337
- provider: EvmWalletProvider;
1338
- fromAddress: string;
1339
- depositWalletAddress: string;
1340
- sourceTokenAddress: string;
1341
- sourceChainId: string;
1342
- amountBaseUnit: string;
1343
- }): Promise<string>;
1344
- declare function sendSolanaWithdraw(params: {
1345
- provider: SolanaWalletProvider;
1346
- fromAddress: string;
1347
- depositWalletAddress: string;
1348
- sourceTokenAddress: string;
1349
- amountBaseUnit: string;
1350
- publishableKey: string;
1351
- }): Promise<string>;
1352
-
1353
- declare function sendHypercoreWithdraw(params: {
1354
- provider: EvmWalletProvider;
1355
- fromAddress: string;
1356
- depositWalletAddress: string;
1357
- sourceTokenAddress: string;
1358
- amount: string;
1359
- publishableKey: string;
1360
- }): Promise<void>;
1361
-
1362
- declare function detectBrowserWallet(chainType: string, senderAddress?: string): Promise<DetectedWallet | null>;
1363
-
1364
1357
  type BrowserWalletErrorReporter = (error: unknown, metadata: {
1365
1358
  stage: BrowserWalletProviderErrorStage;
1366
1359
  chainType?: 'ethereum' | 'solana';
@@ -1839,12 +1832,201 @@ var depositModal = {
1839
1832
  bankTransfer: {
1840
1833
  title: "Bank Transfer",
1841
1834
  subtitle: "SEPA, ACH and more",
1842
- 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
+ }
1843
1877
  },
1844
1878
  cashAppMenu: {
1845
1879
  title: "Pay with Cash App",
1846
1880
  subtitle: "Deposit via Cash App"
1847
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
+ },
1848
2030
  applePayMenu: {
1849
2031
  title: "Pay with Apple Pay",
1850
2032
  subtitle: "Instant • Debit card only"
@@ -2066,19 +2248,22 @@ var buyWithCard = {
2066
2248
  var buyWithApplePay = {
2067
2249
  email: {
2068
2250
  label: "Email",
2069
- placeholder: "you@example.com"
2251
+ placeholder: "you@example.com",
2252
+ "continue": "Continue"
2070
2253
  },
2071
2254
  phone: {
2072
2255
  label: "US phone number",
2073
2256
  placeholder: "555 123 4567",
2074
2257
  invalid: "Enter a valid US mobile number (no VoIP).",
2075
2258
  reverified: "Re-verified every 60 days.",
2076
- sendCode: "Send code"
2259
+ sendCode: "Send code",
2260
+ conflict: "This email is linked to another phone number.",
2261
+ contactSupport: "Contact support"
2077
2262
  },
2078
2263
  otp: {
2079
2264
  sentTo: "Sent to {{target}}",
2080
2265
  placeholder: "000000",
2081
- incorrect: "Incorrect code. Please try again.",
2266
+ incorrect: "Invalid OTP code. Please try again.",
2082
2267
  resend: "Resend code",
2083
2268
  resendIn: "Resend in {{seconds}}s",
2084
2269
  verify: "Verify"
@@ -2403,6 +2588,110 @@ var hypercore = {
2403
2588
  withdrawFee: "~{{fee}} fee will be applied to this withdrawal.",
2404
2589
  activationFee: "~{{fee}} fee is required to activate a new HyperCore account."
2405
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
+ };
2406
2695
  var en = {
2407
2696
  common: common,
2408
2697
  executionDetails: executionDetails,
@@ -2420,7 +2709,8 @@ var en = {
2420
2709
  payWithStripeLink: payWithStripeLink,
2421
2710
  withdrawModal: withdrawModal,
2422
2711
  incident: incident,
2423
- hypercore: hypercore
2712
+ hypercore: hypercore,
2713
+ identityVerification: identityVerification
2424
2714
  };
2425
2715
 
2426
2716
  /**
@@ -2751,11 +3041,200 @@ declare const i18n: {
2751
3041
  title: string;
2752
3042
  subtitle: string;
2753
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
+ };
2754
3085
  };
2755
3086
  cashAppMenu: {
2756
3087
  title: string;
2757
3088
  subtitle: string;
2758
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
+ };
2759
3238
  applePayMenu: {
2760
3239
  title: string;
2761
3240
  subtitle: string;
@@ -2978,6 +3457,7 @@ declare const i18n: {
2978
3457
  email: {
2979
3458
  label: string;
2980
3459
  placeholder: string;
3460
+ continue: string;
2981
3461
  };
2982
3462
  phone: {
2983
3463
  label: string;
@@ -2985,6 +3465,8 @@ declare const i18n: {
2985
3465
  invalid: string;
2986
3466
  reverified: string;
2987
3467
  sendCode: string;
3468
+ conflict: string;
3469
+ contactSupport: string;
2988
3470
  };
2989
3471
  otp: {
2990
3472
  sentTo: string;
@@ -3314,6 +3796,110 @@ declare const i18n: {
3314
3796
  withdrawFee: string;
3315
3797
  activationFee: string;
3316
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
+ };
3317
3903
  };
3318
3904
  /**
3319
3905
  * Interpolate parameters into a template string
@@ -3560,6 +4146,11 @@ interface RegionSelectorSheetProps {
3560
4146
  * the CDN would be asked for Germany's for Delaware.
3561
4147
  */
3562
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;
3563
4154
  /** Asset CDN override for the flag images, as passed to the modal. */
3564
4155
  assetCdnUrl?: string;
3565
4156
  }
@@ -3576,7 +4167,7 @@ interface RegionSelectorSheetProps {
3576
4167
  * flow needs a `relative` wrapper around the area the sheet should cover —
3577
4168
  * `DepositModal` provides one around its body.
3578
4169
  */
3579
- declare function RegionSelectorSheet({ open, onOpenChange, options, selectedCode, onSelect, title, showDialCode, showFlags, assetCdnUrl, }: RegionSelectorSheetProps): react_jsx_runtime.JSX.Element | null;
4170
+ declare function RegionSelectorSheet({ open, onOpenChange, options, selectedCode, onSelect, title, showDialCode, showFlags, showCode, assetCdnUrl, }: RegionSelectorSheetProps): react_jsx_runtime.JSX.Element | null;
3580
4171
 
3581
4172
  interface RegionPickerButtonProps {
3582
4173
  /** Text to show — the selected region, or a placeholder when nothing is set. */
@@ -3727,6 +4318,16 @@ interface UseDepositQuoteParams {
3727
4318
  adjustForSlippage?: boolean;
3728
4319
  /** When true and both tokens are stablecoins, returns a 1:1 quote without swap provider. */
3729
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;
3730
4331
  enabled?: boolean;
3731
4332
  }
3732
4333
  /**
@@ -4171,4 +4772,4 @@ declare function cn(...inputs: ClassValue[]): string;
4171
4772
  */
4172
4773
  declare function truncateAddress(address: string, startChars?: number, endChars?: number): string;
4173
4774
 
4174
- 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, type DetectedWallet, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, EIP6963_BOOTSTRAP_SCRIPT, type EvmWalletProvider, 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 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, 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, buildWalletPayQuote, buttonVariants, clearStoredWalletPaySession as clearStoredApplePaySession, clearStoredWalletPaySession, cn, colors, connectSolanaStandardWallet, countryFlag, countryFlagIconPath, countryFlagPngPath, countryName, defaultColors, detectBrowserLocale, detectBrowserWallet, detectConnectedBrowserWallet, dialCode, filterRegions, findCountry, findSolanaStandardWallet, formatCryptoAmount, formatFiat, getActiveLocale, getActiveStrings, getAuthorizedSolanaStandardAccounts, getColors, getKycCountryList, getSolanaStandardWallets, getStoredWalletPaySession as getStoredApplePaySession, getStoredWalletPaySession, getStrings, i18n, interpolate, isHypercoreChain, isInGroup, isOnrampTokenFresh, isSolanaWalletDetectedViaWalletStandard, mergeColors, normalizeLocale, platformSupportsWalletPay, qrErrorCorrectionLevel, requestEip6963Providers, resolveComponentTokens, sendEvmWithdraw, sendHypercoreWithdraw, sendSolanaWithdraw, 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 };
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 };