@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 +957 -97
- package/dist/index.d.ts +957 -97
- package/dist/index.js +12523 -4223
- package/dist/index.mjs +12238 -3922
- package/dist/styles-base.css +1 -1
- package/dist/styles.css +1 -1
- package/package.json +4 -3
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
|
-
|
|
124
|
-
|
|
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.).
|
|
290
|
-
* Resolves as flag ?? dashboard `bank_transfer.enabled` ??
|
|
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
|
|
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
|
-
/**
|
|
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
|
-
|
|
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.
|
|
880
|
-
*
|
|
881
|
-
*
|
|
882
|
-
*
|
|
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: "
|
|
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,
|
|
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 };
|