0xtrails 0.13.1 → 0.13.2
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/{ccip-DStzFCYT.js → ccip-CT_An6eM.js} +28 -28
- package/dist/chains.d.ts +1 -1
- package/dist/chains.d.ts.map +1 -1
- package/dist/constants.d.ts +1 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/customTokens.d.ts.map +1 -1
- package/dist/{index-HY9_ppit.js → index-RfqL5Foz.js} +56523 -43196
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +383 -332
- package/dist/intents.d.ts +8 -2
- package/dist/intents.d.ts.map +1 -1
- package/dist/keyMachineClient.d.ts +9 -0
- package/dist/keyMachineClient.d.ts.map +1 -0
- package/dist/keymachine/index.d.ts +14 -0
- package/dist/keymachine/index.d.ts.map +1 -0
- package/dist/keymachine/key-machine.gen.d.ts +461 -0
- package/dist/keymachine/key-machine.gen.d.ts.map +1 -0
- package/dist/onramp/MeshConnectFlow.d.ts +18 -0
- package/dist/onramp/MeshConnectFlow.d.ts.map +1 -0
- package/dist/onramp/MeshConnectIframe.d.ts +13 -0
- package/dist/onramp/MeshConnectIframe.d.ts.map +1 -0
- package/dist/onramp/SendFromExchangeButton.d.ts +16 -0
- package/dist/onramp/SendFromExchangeButton.d.ts.map +1 -0
- package/dist/onramp/TrailsOnRampProvider.d.ts +31 -0
- package/dist/onramp/TrailsOnRampProvider.d.ts.map +1 -0
- package/dist/onramp/index.d.ts +13 -0
- package/dist/onramp/index.d.ts.map +1 -0
- package/dist/onramp/meshconnect.d.ts +30 -0
- package/dist/onramp/meshconnect.d.ts.map +1 -0
- package/dist/onramp/trailsOnramp.d.ts +24 -0
- package/dist/onramp/trailsOnramp.d.ts.map +1 -0
- package/dist/onramp-client/index.d.ts +3 -3
- package/dist/onramp-client/index.d.ts.map +1 -1
- package/dist/prepareSend.d.ts.map +1 -1
- package/dist/query/balance.fetchers.d.ts +27 -0
- package/dist/query/balance.fetchers.d.ts.map +1 -1
- package/dist/query/balance.hooks.d.ts +19 -0
- package/dist/query/balance.hooks.d.ts.map +1 -1
- package/dist/query/balance.queries.d.ts +18 -1
- package/dist/query/balance.queries.d.ts.map +1 -1
- package/dist/query/chains.queries.d.ts.map +1 -1
- package/dist/query/meld.fetchers.d.ts +1 -1
- package/dist/query/meld.fetchers.d.ts.map +1 -1
- package/dist/query/meld.hooks.d.ts +3 -3
- package/dist/query/meld.hooks.d.ts.map +1 -1
- package/dist/query/meld.queries.d.ts +1 -1
- package/dist/query/meld.queries.d.ts.map +1 -1
- package/dist/query/tokenList.queries.d.ts +54 -0
- package/dist/query/tokenList.queries.d.ts.map +1 -0
- package/dist/recover.d.ts +3 -1
- package/dist/recover.d.ts.map +1 -1
- package/dist/tokens.d.ts +13 -0
- package/dist/tokens.d.ts.map +1 -1
- package/dist/transactionIntent/deposits/depositOrchestrator.d.ts +2 -2
- package/dist/transactionIntent/deposits/depositOrchestrator.d.ts.map +1 -1
- package/dist/transactionIntent/deposits/gaslessDeposit.d.ts +2 -2
- package/dist/transactionIntent/deposits/gaslessDeposit.d.ts.map +1 -1
- package/dist/transactionIntent/deposits/standardDeposit.d.ts +1 -1
- package/dist/transactionIntent/deposits/standardDeposit.d.ts.map +1 -1
- package/dist/transactionIntent/handlers/intentHandler.d.ts.map +1 -1
- package/dist/transactionIntent/helpers/transactionStateHelpers.d.ts.map +1 -1
- package/dist/transactionIntent/quote/normalizeQuote.d.ts.map +1 -1
- package/dist/transactionIntent/types.d.ts +1 -1
- package/dist/transactionIntent/types.d.ts.map +1 -1
- package/dist/transactions.d.ts +3 -0
- package/dist/transactions.d.ts.map +1 -1
- package/dist/umd/trails.min.js +291 -202
- package/dist/walletUtils.d.ts +2 -1
- package/dist/walletUtils.d.ts.map +1 -1
- package/dist/wallets.d.ts +13 -54
- package/dist/wallets.d.ts.map +1 -1
- package/dist/widget/components/ClassicSwap.d.ts.map +1 -1
- package/dist/widget/components/ConnectWallet.d.ts.map +1 -1
- package/dist/widget/components/ConnectedWallets.d.ts.map +1 -1
- package/dist/widget/components/DirectTransfer.d.ts +1 -1
- package/dist/widget/components/DirectTransfer.d.ts.map +1 -1
- package/dist/widget/components/Fund.d.ts.map +1 -1
- package/dist/widget/components/FundMethods.d.ts.map +1 -1
- package/dist/widget/components/MeshExchangeSelection.d.ts +11 -0
- package/dist/widget/components/MeshExchangeSelection.d.ts.map +1 -0
- package/dist/widget/components/OnrampHistoryRow.d.ts +1 -1
- package/dist/widget/components/OnrampHistoryRow.d.ts.map +1 -1
- package/dist/widget/components/Pay.d.ts.map +1 -1
- package/dist/widget/components/PoolDeposit.d.ts.map +1 -1
- package/dist/widget/components/QRCodeWalletSelect.d.ts +1 -1
- package/dist/widget/components/QRCodeWalletSelect.d.ts.map +1 -1
- package/dist/widget/components/QuoteDetails.d.ts.map +1 -1
- package/dist/widget/components/Recipients.d.ts.map +1 -1
- package/dist/widget/components/RefundWarning.d.ts.map +1 -1
- package/dist/widget/components/TokenSelector.d.ts.map +1 -1
- package/dist/widget/components/TransactionDetails.d.ts.map +1 -1
- package/dist/widget/components/TransferPendingVertical.d.ts +1 -0
- package/dist/widget/components/TransferPendingVertical.d.ts.map +1 -1
- package/dist/widget/components/WalletConnect.d.ts.map +1 -1
- package/dist/widget/components/WalletImage.d.ts.map +1 -1
- package/dist/widget/components/WalletList.d.ts.map +1 -1
- package/dist/widget/components/Withdraw.d.ts.map +1 -1
- package/dist/widget/css/compiled.css +1 -1
- package/dist/widget/hooks/useAddressWalletIcon.d.ts.map +1 -1
- package/dist/widget/hooks/useCustomTokenSearch.d.ts +6 -1
- package/dist/widget/hooks/useCustomTokenSearch.d.ts.map +1 -1
- package/dist/widget/hooks/useDefaultDestinationToken.d.ts.map +1 -1
- package/dist/widget/hooks/useDefaultOriginToken.d.ts.map +1 -1
- package/dist/widget/hooks/useFiatOnRampCurrencies.d.ts +1 -1
- package/dist/widget/hooks/useFiatOnRampCurrencies.d.ts.map +1 -1
- package/dist/widget/hooks/useIntentTransactionHistory.d.ts.map +1 -1
- package/dist/widget/hooks/useQuote.d.ts +1 -1
- package/dist/widget/hooks/useQuote.d.ts.map +1 -1
- package/dist/widget/hooks/useSelectedFundMethod.d.ts +7 -0
- package/dist/widget/hooks/useSelectedFundMethod.d.ts.map +1 -1
- package/dist/widget/hooks/useSendForm.d.ts.map +1 -1
- package/dist/widget/hooks/useTokenList.d.ts +7 -1
- package/dist/widget/hooks/useTokenList.d.ts.map +1 -1
- package/dist/widget/hooks/useViewManager.d.ts +1 -1
- package/dist/widget/hooks/useViewManager.d.ts.map +1 -1
- package/dist/widget/index.js +1 -1
- package/dist/widget/providers/TrailsProvider.d.ts +2 -0
- package/dist/widget/providers/TrailsProvider.d.ts.map +1 -1
- package/dist/widget/utils/createWagmiConfig.d.ts +2 -2
- package/dist/widget/utils/createWagmiConfig.d.ts.map +1 -1
- package/dist/widget/utils/fundMethodSwitchState.d.ts +1 -0
- package/dist/widget/utils/fundMethodSwitchState.d.ts.map +1 -1
- package/dist/widget/utils/meldProviderUtils.d.ts +1 -1
- package/dist/widget/utils/meldProviderUtils.d.ts.map +1 -1
- package/dist/widget/utils/meshSupportedTokens.d.ts +4 -0
- package/dist/widget/utils/meshSupportedTokens.d.ts.map +1 -0
- package/dist/widget/utils/onrampConfig.d.ts +11 -0
- package/dist/widget/utils/onrampConfig.d.ts.map +1 -0
- package/dist/widget/utils/trailsOnrampConfig.d.ts +18 -0
- package/dist/widget/utils/trailsOnrampConfig.d.ts.map +1 -0
- package/dist/widget/widget.d.ts +24 -8
- package/dist/widget/widget.d.ts.map +1 -1
- package/package.json +9 -7
- package/src/chains.ts +9 -4
- package/src/constants.ts +2 -0
- package/src/customTokens.ts +21 -0
- package/src/index.ts +1 -0
- package/src/intents.ts +49 -41
- package/src/keyMachineClient.ts +29 -0
- package/src/keymachine/index.ts +175 -0
- package/src/keymachine/key-machine.gen.ts +993 -0
- package/src/onramp/MeshConnectFlow.tsx +86 -0
- package/src/onramp/MeshConnectIframe.tsx +661 -0
- package/src/onramp/SendFromExchangeButton.tsx +81 -0
- package/src/onramp/TrailsOnRampProvider.tsx +59 -0
- package/src/onramp/index.ts +31 -0
- package/src/onramp/meshconnect.ts +277 -0
- package/src/onramp/trailsOnramp.tsx +130 -0
- package/src/onramp-client/index.ts +4 -6
- package/src/prepareSend.ts +45 -44
- package/src/query/balance.fetchers.ts +134 -4
- package/src/query/balance.hooks.ts +61 -2
- package/src/query/balance.queries.ts +63 -0
- package/src/query/chains.queries.ts +1 -6
- package/src/query/meld.fetchers.ts +1 -1
- package/src/query/meld.hooks.ts +1 -1
- package/src/query/meld.queries.ts +1 -1
- package/src/query/tokenList.queries.ts +118 -0
- package/src/recover.ts +86 -23
- package/src/tokens.ts +108 -26
- package/src/transactionIntent/deposits/depositOrchestrator.ts +11 -11
- package/src/transactionIntent/deposits/gaslessDeposit.ts +38 -38
- package/src/transactionIntent/deposits/standardDeposit.ts +0 -4
- package/src/transactionIntent/handlers/intentHandler.ts +28 -11
- package/src/transactionIntent/helpers/transactionStateHelpers.ts +5 -2
- package/src/transactionIntent/quote/normalizeQuote.ts +11 -5
- package/src/transactionIntent/types.ts +1 -1
- package/src/transactions.ts +3 -0
- package/src/walletUtils.ts +2 -1
- package/src/wallets.ts +184 -380
- package/src/widget/compiled.css +1 -1
- package/src/widget/components/ClassicSwap.tsx +22 -5
- package/src/widget/components/ConnectWallet.tsx +4 -2
- package/src/widget/components/ConnectedWallets.tsx +2 -5
- package/src/widget/components/DirectTransfer.tsx +5 -2
- package/src/widget/components/Fund.tsx +144 -12
- package/src/widget/components/FundMethods.tsx +5 -9
- package/src/widget/components/MeldHistory.tsx +1 -1
- package/src/widget/components/MeshExchangeSelection.tsx +218 -0
- package/src/widget/components/OnrampHistoryRow.tsx +1 -1
- package/src/widget/components/Pay.tsx +20 -36
- package/src/widget/components/PoolDeposit.tsx +13 -22
- package/src/widget/components/QRCodeWalletSelect.tsx +5 -2
- package/src/widget/components/QuoteDetails.tsx +77 -68
- package/src/widget/components/Recipients.tsx +2 -1
- package/src/widget/components/RefundWarning.tsx +5 -10
- package/src/widget/components/TokenSelector.tsx +85 -16
- package/src/widget/components/TransactionDetails.tsx +46 -0
- package/src/widget/components/TransferPendingVertical.tsx +27 -19
- package/src/widget/components/WalletConnect.tsx +2 -5
- package/src/widget/components/WalletImage.tsx +6 -18
- package/src/widget/components/WalletList.tsx +1 -1
- package/src/widget/components/Withdraw.tsx +22 -4
- package/src/widget/hooks/useAddressWalletIcon.ts +2 -1
- package/src/widget/hooks/useCustomTokenSearch.tsx +63 -33
- package/src/widget/hooks/useDefaultDestinationToken.tsx +2 -5
- package/src/widget/hooks/useDefaultOriginToken.tsx +2 -5
- package/src/widget/hooks/useFiatOnRampCurrencies.ts +1 -1
- package/src/widget/hooks/useIntentTransactionHistory.ts +5 -0
- package/src/widget/hooks/useMeldTransactionStatus.ts +1 -1
- package/src/widget/hooks/useQuote.ts +51 -45
- package/src/widget/hooks/useSelectedFundMethod.tsx +14 -1
- package/src/widget/hooks/useSendForm.ts +26 -10
- package/src/widget/hooks/useTokenList.ts +208 -139
- package/src/widget/hooks/useViewManager.tsx +1 -0
- package/src/widget/providers/TrailsProvider.tsx +5 -0
- package/src/widget/styles.ts +1 -1
- package/src/widget/utils/createWagmiConfig.ts +7 -2
- package/src/widget/utils/fundMethodSwitchState.ts +2 -0
- package/src/widget/utils/meldProviderUtils.ts +8 -2
- package/src/widget/utils/meshSupportedTokens.ts +28 -0
- package/src/widget/utils/onrampConfig.ts +15 -0
- package/src/widget/utils/trailsOnrampConfig.ts +39 -0
- package/src/widget/widget.tsx +164 -98
- package/dist/onramp-client/trails-onramp.gen.d.ts +0 -570
- package/dist/onramp-client/trails-onramp.gen.d.ts.map +0 -1
- package/dist/widget/hooks/useCustomTokenFetch.d.ts +0 -19
- package/dist/widget/hooks/useCustomTokenFetch.d.ts.map +0 -1
- package/dist/widget/hooks/useTokenWithFreshBalance.d.ts +0 -18
- package/dist/widget/hooks/useTokenWithFreshBalance.d.ts.map +0 -1
- package/src/onramp-client/trails-onramp.gen.ts +0 -1320
- package/src/widget/assets/Binance_Icon_Logo.svg +0 -14
- package/src/widget/assets/Bitfinex_Icon_Logo.svg +0 -5
- package/src/widget/assets/Coinbase_Icon_Logo.svg +0 -1
- package/src/widget/assets/WalletConnect-logo-blue-bg.svg +0 -11
- package/src/widget/assets/sequence-logo.svg +0 -15
- package/src/widget/hooks/useCustomTokenFetch.tsx +0 -74
- package/src/widget/hooks/useTokenWithFreshBalance.ts +0 -246
package/src/widget/widget.tsx
CHANGED
|
@@ -18,6 +18,7 @@ import {
|
|
|
18
18
|
} from "./providers/WidgetProviderTree.js"
|
|
19
19
|
import { createWagmiConfig } from "./utils/createWagmiConfig.js"
|
|
20
20
|
import { ShadowPortal } from "./components/ShadowPortal.js"
|
|
21
|
+
import { QuoteDetails } from "./components/QuoteDetails.js"
|
|
21
22
|
import type { Chain, WalletClient, EIP1193Provider } from "viem"
|
|
22
23
|
import {
|
|
23
24
|
createWalletClient,
|
|
@@ -85,14 +86,18 @@ import type { Theme } from "../theme.js"
|
|
|
85
86
|
import type { Token } from "../tokens.js"
|
|
86
87
|
import { getWethAddress } from "../tokens.js"
|
|
87
88
|
import type { IntentTransaction } from "@0xtrails/api"
|
|
89
|
+
import {
|
|
90
|
+
getQRCodeWallets,
|
|
91
|
+
getWalletIdFromRdns,
|
|
92
|
+
wagmiConnectorToWalletId,
|
|
93
|
+
} from "@0xtrails/wallet-registry"
|
|
88
94
|
import type { TransactionState } from "../transactions.js"
|
|
95
|
+
import { useOnrampClient } from "../onrampClient.js"
|
|
89
96
|
import {
|
|
90
|
-
useQRCodeWallets,
|
|
91
97
|
useWallets,
|
|
92
98
|
getWalletConnectConnector,
|
|
93
99
|
getConnectorsInternal,
|
|
94
|
-
|
|
95
|
-
WALLET_RDNS_MAP,
|
|
100
|
+
type WalletConnector,
|
|
96
101
|
} from "../wallets.js"
|
|
97
102
|
// import { useOpenConnectModal } from "@0xsequence/connect"
|
|
98
103
|
import {
|
|
@@ -113,6 +118,7 @@ import Footer from "./components/Footer.js"
|
|
|
113
118
|
import { Fund } from "./components/Fund.js"
|
|
114
119
|
import { Withdraw } from "./components/Withdraw.js"
|
|
115
120
|
import FundMethods from "./components/FundMethods.js"
|
|
121
|
+
import { MeshExchangeSelection } from "./components/MeshExchangeSelection.js"
|
|
116
122
|
import OnrampPaymentMethods from "./components/OnrampPaymentMethods.js"
|
|
117
123
|
import Modal from "./components/Modal.js"
|
|
118
124
|
import { Pay } from "./components/Pay.js"
|
|
@@ -137,6 +143,9 @@ import { WalletList } from "./components/WalletList.js"
|
|
|
137
143
|
import { useCheckout } from "./hooks/useCheckout.js"
|
|
138
144
|
import { useDebugScreens } from "./hooks/useDebugScreens.js"
|
|
139
145
|
import { useExternalFundingReceiptSync } from "./hooks/useExternalFundingReceiptSync.js"
|
|
146
|
+
import { getWidgetOnrampConfig } from "./utils/trailsOnrampConfig.js"
|
|
147
|
+
import type { TrailsOnRampConfig } from "../onramp/TrailsOnRampProvider.js"
|
|
148
|
+
import { trailsOnramp, type OnrampFactory } from "../onramp/trailsOnramp.js"
|
|
140
149
|
import { useScreenTracking } from "./hooks/useScreenTracking.js"
|
|
141
150
|
import { useEarnPool } from "./hooks/useEarnPool.js"
|
|
142
151
|
|
|
@@ -203,6 +212,7 @@ export type FundMethodListOption =
|
|
|
203
212
|
| "connected-wallet"
|
|
204
213
|
| "crypto-transfer"
|
|
205
214
|
| "cc-onramp"
|
|
215
|
+
| "exchange"
|
|
206
216
|
| "exchange-onramp"
|
|
207
217
|
|
|
208
218
|
export const WidgetFundMethod = {
|
|
@@ -220,6 +230,7 @@ export type TrailsWidgetProps = {
|
|
|
220
230
|
trailsApiUrl?: string
|
|
221
231
|
trailsAppUrl?: string
|
|
222
232
|
sequenceNodeGatewayUrl?: string
|
|
233
|
+
sequenceMetadataUrl?: string
|
|
223
234
|
sequenceApiUrl?: string
|
|
224
235
|
toAddress?: string | null
|
|
225
236
|
toAmount?: string | null
|
|
@@ -323,7 +334,10 @@ export type TrailsWidgetProps = {
|
|
|
323
334
|
* - "connected-wallet"
|
|
324
335
|
* - "crypto-transfer"
|
|
325
336
|
* - "cc-onramp"
|
|
326
|
-
* - "exchange
|
|
337
|
+
* - "exchange"
|
|
338
|
+
*
|
|
339
|
+
* Preferred values: "connected-wallet", "crypto-transfer", "exchange", "cc-onramp".
|
|
340
|
+
* Legacy alias "exchange-onramp" is still accepted.
|
|
327
341
|
*
|
|
328
342
|
* @example ["connected-wallet", "crypto-transfer"]
|
|
329
343
|
*/
|
|
@@ -349,27 +363,40 @@ export type TrailsWidgetProps = {
|
|
|
349
363
|
payMessage?: string
|
|
350
364
|
isSmartWallet?: boolean
|
|
351
365
|
/**
|
|
352
|
-
* Optional onramp
|
|
353
|
-
* If provided, enables exchange funding options in the widget
|
|
366
|
+
* Optional onramp configuration or factory.
|
|
367
|
+
* If provided, enables exchange funding options in the widget.
|
|
354
368
|
*
|
|
355
369
|
* @example
|
|
356
370
|
* ```tsx
|
|
357
|
-
*
|
|
358
|
-
*
|
|
371
|
+
* <TrailsWidget
|
|
372
|
+
* onramp={{
|
|
373
|
+
* mesh: {
|
|
374
|
+
* environment: "production",
|
|
375
|
+
* },
|
|
376
|
+
* }}
|
|
377
|
+
* />
|
|
359
378
|
* ```
|
|
360
379
|
*/
|
|
361
|
-
onramp?:
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
380
|
+
onramp?:
|
|
381
|
+
| TrailsOnRampConfig
|
|
382
|
+
| ((handlers: {
|
|
383
|
+
setCurrentScreen: (screen: Screen) => void
|
|
384
|
+
onComplete?: (transferData: OnrampTransferResult) => void
|
|
385
|
+
onError?: (error: unknown) => void
|
|
386
|
+
onBack?: () => void
|
|
387
|
+
toTokenSymbol?: string
|
|
388
|
+
toTokenAmount?: string
|
|
389
|
+
toChainId?: number
|
|
390
|
+
toRecipientAddress?: string
|
|
391
|
+
toAmountUsd?: number
|
|
392
|
+
selectedExchange?: {
|
|
393
|
+
integrationId: string
|
|
394
|
+
exchangeKey: string
|
|
395
|
+
exchangeName: string
|
|
396
|
+
}
|
|
397
|
+
apiKey?: string
|
|
398
|
+
hostname?: string
|
|
399
|
+
}) => React.ReactElement)
|
|
373
400
|
}
|
|
374
401
|
|
|
375
402
|
export interface TrailsWidgetRef {
|
|
@@ -658,8 +685,9 @@ const WidgetContent = forwardRef<TrailsWidgetRef>((_, ref) => {
|
|
|
658
685
|
} = useWidgetProps()
|
|
659
686
|
const { address, chainId, connector } = useAccount()
|
|
660
687
|
const connectors = useConnectors()
|
|
661
|
-
const { trailsApiKey } = useTrails()
|
|
662
|
-
const
|
|
688
|
+
const { trailsApiKey, trailsApiUrl } = useTrails()
|
|
689
|
+
const onrampClient = useOnrampClient()
|
|
690
|
+
const qrCodeWallets = useMemo(() => getQRCodeWallets(), [])
|
|
663
691
|
// const { setOpenConnectModal } = useOpenConnectModal()
|
|
664
692
|
|
|
665
693
|
// Check if the current connector is a Sequence wallet
|
|
@@ -674,7 +702,15 @@ const WidgetContent = forwardRef<TrailsWidgetRef>((_, ref) => {
|
|
|
674
702
|
const { wallets: allWallets } = useWallets()
|
|
675
703
|
const { selectedToken, setSelectedToken, clearSelectedToken } =
|
|
676
704
|
useSelectedToken()
|
|
677
|
-
const { onramp
|
|
705
|
+
const { onramp } = useWidgetProps()
|
|
706
|
+
const meshOnrampConfig = getWidgetOnrampConfig(onramp)
|
|
707
|
+
const onrampFactory: OnrampFactory | undefined =
|
|
708
|
+
typeof onramp === "function"
|
|
709
|
+
? (onramp as OnrampFactory)
|
|
710
|
+
: meshOnrampConfig
|
|
711
|
+
? trailsOnramp({ config: meshOnrampConfig })
|
|
712
|
+
: undefined
|
|
713
|
+
const meshEnvironment = meshOnrampConfig?.mesh?.environment ?? "production"
|
|
678
714
|
|
|
679
715
|
// Modal state is managed by TrailsModalProvider
|
|
680
716
|
const {
|
|
@@ -811,7 +847,12 @@ const WidgetContent = forwardRef<TrailsWidgetRef>((_, ref) => {
|
|
|
811
847
|
const [previousAddress, setPreviousAddress] = useState<string | undefined>(
|
|
812
848
|
address,
|
|
813
849
|
)
|
|
814
|
-
const {
|
|
850
|
+
const {
|
|
851
|
+
selectedFundMethod,
|
|
852
|
+
selectedMeshExchange,
|
|
853
|
+
setSelectedFundMethod,
|
|
854
|
+
setSelectedMeshExchange,
|
|
855
|
+
} = useSelectedFundMethod()
|
|
815
856
|
const fundMethodSelectionStartRef = useRef(selectedFundMethod)
|
|
816
857
|
const clearStateForFundMethodSwitch = useCallback(
|
|
817
858
|
(nextMethod: typeof selectedFundMethod) => {
|
|
@@ -824,6 +865,7 @@ const WidgetContent = forwardRef<TrailsWidgetRef>((_, ref) => {
|
|
|
824
865
|
setSellAmount,
|
|
825
866
|
setBuyAmount,
|
|
826
867
|
setPrepareSendQuote,
|
|
868
|
+
setSelectedMeshExchange,
|
|
827
869
|
},
|
|
828
870
|
)
|
|
829
871
|
|
|
@@ -831,7 +873,7 @@ const WidgetContent = forwardRef<TrailsWidgetRef>((_, ref) => {
|
|
|
831
873
|
fundMethodSelectionStartRef.current = nextMethod
|
|
832
874
|
}
|
|
833
875
|
},
|
|
834
|
-
[clearSelectedToken, setSellAmount, setBuyAmount],
|
|
876
|
+
[clearSelectedToken, setSellAmount, setBuyAmount, setSelectedMeshExchange],
|
|
835
877
|
)
|
|
836
878
|
const { selectedPool, setSelectedPool } = useEarnPool()
|
|
837
879
|
const [selectedWalletId, setSelectedWalletId] = useState<string | null>(
|
|
@@ -1426,7 +1468,7 @@ const WidgetContent = forwardRef<TrailsWidgetRef>((_, ref) => {
|
|
|
1426
1468
|
|
|
1427
1469
|
const handleConnectWallet = async (
|
|
1428
1470
|
walletId: string,
|
|
1429
|
-
providedConnector?:
|
|
1471
|
+
providedConnector?: WalletConnector,
|
|
1430
1472
|
) => {
|
|
1431
1473
|
try {
|
|
1432
1474
|
setError(null)
|
|
@@ -1441,7 +1483,7 @@ const WidgetContent = forwardRef<TrailsWidgetRef>((_, ref) => {
|
|
|
1441
1483
|
const eip6963Connector = connectors.find((c) => {
|
|
1442
1484
|
if (c.type !== "injected") return false
|
|
1443
1485
|
const rdns = (c as EIP6963Connector).info?.rdns
|
|
1444
|
-
if (rdns
|
|
1486
|
+
if (getWalletIdFromRdns(rdns) === walletId) {
|
|
1445
1487
|
logger.console.log(
|
|
1446
1488
|
`[trails-sdk] Found EIP-6963 connector for ${walletId} with rdns ${rdns}`,
|
|
1447
1489
|
)
|
|
@@ -2213,59 +2255,6 @@ const WidgetContent = forwardRef<TrailsWidgetRef>((_, ref) => {
|
|
|
2213
2255
|
}
|
|
2214
2256
|
}
|
|
2215
2257
|
|
|
2216
|
-
const _handleNavigateToOnramp = (
|
|
2217
|
-
props: {
|
|
2218
|
-
toTokenSymbol: string
|
|
2219
|
-
toTokenAmount: string
|
|
2220
|
-
toChainId: number
|
|
2221
|
-
toRecipientAddress: string
|
|
2222
|
-
toAmountUsd?: number
|
|
2223
|
-
},
|
|
2224
|
-
onRampMethod?: string,
|
|
2225
|
-
quote?: PrepareSendQuote | null,
|
|
2226
|
-
continueSend?: () => Promise<void>,
|
|
2227
|
-
) => {
|
|
2228
|
-
setPrepareSendQuote(quote ?? null)
|
|
2229
|
-
setOnrampProps(props)
|
|
2230
|
-
setOnrampContinueSend(() => continueSend || null)
|
|
2231
|
-
|
|
2232
|
-
// Render onramp component directly - it manages its own routing
|
|
2233
|
-
const targetScreen =
|
|
2234
|
-
onRampMethod && onRampMethod === "onramp-meld"
|
|
2235
|
-
? "onramp-meld"
|
|
2236
|
-
: "onramp-mesh"
|
|
2237
|
-
navigate(targetScreen)
|
|
2238
|
-
|
|
2239
|
-
if (
|
|
2240
|
-
targetScreen === "onramp-meld" &&
|
|
2241
|
-
continueSend &&
|
|
2242
|
-
!onrampContinueSendInProgress
|
|
2243
|
-
) {
|
|
2244
|
-
logger.console.log(
|
|
2245
|
-
"[trails-sdk] Starting intent execution after navigating to onramp-meld screen",
|
|
2246
|
-
)
|
|
2247
|
-
setOnrampContinueSendInProgress(true)
|
|
2248
|
-
// Call asynchronously to avoid blocking navigation
|
|
2249
|
-
Promise.resolve()
|
|
2250
|
-
.then(() => continueSend())
|
|
2251
|
-
.then(() => {
|
|
2252
|
-
logger.console.log(
|
|
2253
|
-
"[trails-sdk] onrampContinueSend completed successfully",
|
|
2254
|
-
)
|
|
2255
|
-
})
|
|
2256
|
-
.catch((error) => {
|
|
2257
|
-
logger.console.error(
|
|
2258
|
-
"[trails-sdk] Error executing intent after onramp deposit:",
|
|
2259
|
-
error,
|
|
2260
|
-
)
|
|
2261
|
-
handleSendError(error as Error)
|
|
2262
|
-
})
|
|
2263
|
-
.finally(() => {
|
|
2264
|
-
setOnrampContinueSendInProgress(false)
|
|
2265
|
-
})
|
|
2266
|
-
}
|
|
2267
|
-
}
|
|
2268
|
-
|
|
2269
2258
|
const handleSendError = (error: Error | string | null) => {
|
|
2270
2259
|
if (error) {
|
|
2271
2260
|
logger.console.error("[trails-sdk] Error sending transaction", error)
|
|
@@ -2329,6 +2318,11 @@ const WidgetContent = forwardRef<TrailsWidgetRef>((_, ref) => {
|
|
|
2329
2318
|
})()
|
|
2330
2319
|
return
|
|
2331
2320
|
}
|
|
2321
|
+
|
|
2322
|
+
if (selectedFundMethod === "onramp-mesh") {
|
|
2323
|
+
return
|
|
2324
|
+
}
|
|
2325
|
+
|
|
2332
2326
|
navigate("wallet-confirmation")
|
|
2333
2327
|
}
|
|
2334
2328
|
|
|
@@ -2495,15 +2489,69 @@ const WidgetContent = forwardRef<TrailsWidgetRef>((_, ref) => {
|
|
|
2495
2489
|
}
|
|
2496
2490
|
}}
|
|
2497
2491
|
onSelectOnrampExchange={() => {
|
|
2492
|
+
clearSelectedToken()
|
|
2493
|
+
setSellAmount("")
|
|
2494
|
+
setBuyAmount("")
|
|
2495
|
+
setPrepareSendQuote(null)
|
|
2496
|
+
setSelectedMeshExchange(null)
|
|
2498
2497
|
clearStateForFundMethodSwitch("onramp-mesh")
|
|
2499
2498
|
if (currentMode === "fund") {
|
|
2500
|
-
navigate("
|
|
2499
|
+
navigate("mesh-exchanges")
|
|
2501
2500
|
} else {
|
|
2502
2501
|
goHome()
|
|
2503
2502
|
}
|
|
2504
2503
|
}}
|
|
2505
2504
|
/>
|
|
2506
2505
|
)
|
|
2506
|
+
case "mesh-exchanges":
|
|
2507
|
+
return (
|
|
2508
|
+
<MeshExchangeSelection
|
|
2509
|
+
onBack={() => navigate("fund-methods")}
|
|
2510
|
+
onSelectExchange={async (exchange) => {
|
|
2511
|
+
if (
|
|
2512
|
+
selectedToken &&
|
|
2513
|
+
selectedToken.chainId !== undefined &&
|
|
2514
|
+
trailsApiKey &&
|
|
2515
|
+
trailsApiUrl
|
|
2516
|
+
) {
|
|
2517
|
+
try {
|
|
2518
|
+
const response = await onrampClient.getMeshSupportedTokens({
|
|
2519
|
+
environment: meshEnvironment,
|
|
2520
|
+
integrationId: exchange.integrationId,
|
|
2521
|
+
chainIds: [selectedToken.chainId.toString()],
|
|
2522
|
+
})
|
|
2523
|
+
|
|
2524
|
+
const isSupported = (response.tokens || []).some(
|
|
2525
|
+
(token) =>
|
|
2526
|
+
Number(token.chainId) === selectedToken.chainId &&
|
|
2527
|
+
token.symbol?.toUpperCase() ===
|
|
2528
|
+
selectedToken.symbol?.toUpperCase(),
|
|
2529
|
+
)
|
|
2530
|
+
|
|
2531
|
+
if (!isSupported) {
|
|
2532
|
+
clearSelectedToken()
|
|
2533
|
+
setSellAmount("")
|
|
2534
|
+
setBuyAmount("")
|
|
2535
|
+
setPrepareSendQuote(null)
|
|
2536
|
+
}
|
|
2537
|
+
} catch (error) {
|
|
2538
|
+
logger.console.warn(
|
|
2539
|
+
"[trails-sdk] Failed to validate Mesh exchange token support, clearing selected token:",
|
|
2540
|
+
error,
|
|
2541
|
+
)
|
|
2542
|
+
clearSelectedToken()
|
|
2543
|
+
setSellAmount("")
|
|
2544
|
+
setBuyAmount("")
|
|
2545
|
+
setPrepareSendQuote(null)
|
|
2546
|
+
}
|
|
2547
|
+
}
|
|
2548
|
+
|
|
2549
|
+
setSelectedFundMethod("onramp-mesh")
|
|
2550
|
+
setSelectedMeshExchange(exchange)
|
|
2551
|
+
navigate("fund-form", { backTarget: "mesh-exchanges" })
|
|
2552
|
+
}}
|
|
2553
|
+
/>
|
|
2554
|
+
)
|
|
2507
2555
|
case "payment-methods":
|
|
2508
2556
|
return (
|
|
2509
2557
|
<PaymentMethods
|
|
@@ -2772,6 +2820,7 @@ const WidgetContent = forwardRef<TrailsWidgetRef>((_, ref) => {
|
|
|
2772
2820
|
transactionStates={effectiveTransactionStates}
|
|
2773
2821
|
quote={effectivePrepareSendQuote}
|
|
2774
2822
|
onRampQuote={onrampProviderQuote}
|
|
2823
|
+
fundMethod={selectedFundMethod}
|
|
2775
2824
|
timestamp={hostTransactionTimestamp ?? undefined}
|
|
2776
2825
|
onContinue={() => {
|
|
2777
2826
|
logger.console.log("[trails-sdk] onContinue called")
|
|
@@ -2846,22 +2895,39 @@ const WidgetContent = forwardRef<TrailsWidgetRef>((_, ref) => {
|
|
|
2846
2895
|
try {
|
|
2847
2896
|
return (
|
|
2848
2897
|
<div className="flex flex-col h-full">
|
|
2849
|
-
|
|
2850
|
-
|
|
2851
|
-
|
|
2852
|
-
|
|
2853
|
-
|
|
2854
|
-
|
|
2855
|
-
|
|
2856
|
-
|
|
2857
|
-
|
|
2858
|
-
|
|
2859
|
-
|
|
2860
|
-
|
|
2861
|
-
|
|
2862
|
-
|
|
2863
|
-
|
|
2864
|
-
|
|
2898
|
+
<div className="flex-1 min-h-0">
|
|
2899
|
+
{onrampFactory({
|
|
2900
|
+
setCurrentScreen: (screen) => {
|
|
2901
|
+
navigate(screen as Screen)
|
|
2902
|
+
},
|
|
2903
|
+
onComplete: (transferData) => {
|
|
2904
|
+
void handleOnrampComplete(
|
|
2905
|
+
transferData as OnrampTransferResult,
|
|
2906
|
+
)
|
|
2907
|
+
},
|
|
2908
|
+
onError: (error) => {
|
|
2909
|
+
logger.console.error("[trails-sdk] Onramp error:", error)
|
|
2910
|
+
},
|
|
2911
|
+
onBack: handleBack,
|
|
2912
|
+
toTokenSymbol: onrampProps?.toTokenSymbol,
|
|
2913
|
+
toTokenAmount: onrampProps?.toTokenAmount,
|
|
2914
|
+
toChainId: onrampProps?.toChainId,
|
|
2915
|
+
toRecipientAddress: onrampProps?.toRecipientAddress,
|
|
2916
|
+
toAmountUsd: onrampProps?.toAmountUsd,
|
|
2917
|
+
selectedExchange: selectedMeshExchange || undefined,
|
|
2918
|
+
apiKey: trailsApiKey,
|
|
2919
|
+
hostname: trailsApiUrl,
|
|
2920
|
+
})}
|
|
2921
|
+
</div>
|
|
2922
|
+
{effectivePrepareSendQuote && (
|
|
2923
|
+
<div className="mt-4">
|
|
2924
|
+
<QuoteDetails
|
|
2925
|
+
quote={effectivePrepareSendQuote}
|
|
2926
|
+
showContent={true}
|
|
2927
|
+
compact={true}
|
|
2928
|
+
/>
|
|
2929
|
+
</div>
|
|
2930
|
+
)}
|
|
2865
2931
|
</div>
|
|
2866
2932
|
)
|
|
2867
2933
|
} catch (error) {
|
|
@@ -2952,7 +3018,6 @@ const WidgetContent = forwardRef<TrailsWidgetRef>((_, ref) => {
|
|
|
2952
3018
|
id: wallet.id,
|
|
2953
3019
|
name: wallet.name,
|
|
2954
3020
|
icon: wallet.icon,
|
|
2955
|
-
connector: wallet.connector,
|
|
2956
3021
|
}))}
|
|
2957
3022
|
/>
|
|
2958
3023
|
)
|
|
@@ -3278,6 +3343,7 @@ export const TrailsWidget = forwardRef<TrailsWidgetRef, TrailsWidgetProps>(
|
|
|
3278
3343
|
sequenceApiUrl: props.sequenceApiUrl,
|
|
3279
3344
|
sequenceIndexerUrl: props.sequenceIndexerUrl,
|
|
3280
3345
|
sequenceNodeGatewayUrl: props.sequenceNodeGatewayUrl,
|
|
3346
|
+
sequenceMetadataUrl: props.sequenceMetadataUrl,
|
|
3281
3347
|
walletConnectProjectId: props.walletConnectProjectId,
|
|
3282
3348
|
slippageTolerance: props.slippageTolerance
|
|
3283
3349
|
? String(props.slippageTolerance)
|