@privy-io/react-auth 2.3.0 → 2.4.0-beta-20250206213233

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.
Files changed (69) hide show
  1. package/dist/cjs/auth-flows/passkey.js +1 -1
  2. package/dist/cjs/client.js +1 -1
  3. package/dist/cjs/components/LoginModal.js +1 -1
  4. package/dist/cjs/connectors/embeddedProvider.js +1 -1
  5. package/dist/cjs/connectors/index.js +1 -1
  6. package/dist/cjs/constants.js +1 -1
  7. package/dist/cjs/embedded-wallets/solana/provider.js +1 -1
  8. package/dist/cjs/hooks/internal-context.js +1 -1
  9. package/dist/cjs/hooks/privy-provider.js +1 -1
  10. package/dist/cjs/hooks/useLoginWithPasskey.js +1 -1
  11. package/dist/cjs/hooks/useLoginWithTelegram.js +1 -0
  12. package/dist/cjs/index.js +1 -1
  13. package/dist/cjs/lib/funding/reservoir.js +1 -1
  14. package/dist/cjs/privy-provider-DZHyMCJ6.js +3 -0
  15. package/dist/cjs/screens/ErrorScreen.js +1 -1
  16. package/dist/cjs/screens/Funding/AwaitingEvmToSolBridgingScreen.js +2 -2
  17. package/dist/cjs/screens/Funding/AwaitingExternalTransferScreen.js +1 -1
  18. package/dist/cjs/screens/Funding/AwaitingSolToEvmBridgingScreen.js +1 -1
  19. package/dist/cjs/screens/MfaScreens/EnrollPasskey.js +1 -1
  20. package/dist/cjs/screens/MfaScreens/EnrollSms.js +1 -1
  21. package/dist/cjs/screens/MfaScreens/EnrollTotp.js +1 -1
  22. package/dist/cjs/screens/MfaScreens/MfaEnrollmentFlowScreen.js +1 -1
  23. package/dist/cjs/screens/SendSolanaTransactionScreen/SendSolanaTransactionScreen.js +1 -1
  24. package/dist/cjs/screens/SendTransactionScreen/SendTransactionScreen.js +1 -1
  25. package/dist/cjs/screens/SendTransactionScreen/index.js +1 -1
  26. package/dist/cjs/screens/TelegramAuthScreen.js +1 -1
  27. package/dist/dts/farcaster.d.mts +1 -1
  28. package/dist/dts/farcaster.d.ts +1 -1
  29. package/dist/dts/index.d.mts +34 -6
  30. package/dist/dts/index.d.ts +34 -6
  31. package/dist/dts/smart-wallets.d.mts +1 -1
  32. package/dist/dts/smart-wallets.d.ts +1 -1
  33. package/dist/dts/solana.d.mts +4 -4
  34. package/dist/dts/solana.d.ts +4 -4
  35. package/dist/dts/{types-Bfuea1mp.d.mts → types-CKOwQ4VD.d.mts} +11 -1
  36. package/dist/dts/{types-Bfuea1mp.d.ts → types-CKOwQ4VD.d.ts} +11 -1
  37. package/dist/dts/ui.d.mts +1 -1
  38. package/dist/dts/ui.d.ts +1 -1
  39. package/dist/dts/{useSolanaWallets-Bm_Kiqc9.d.ts → useSolanaWallets-BhtM7p0l.d.mts} +1 -1
  40. package/dist/dts/{useSolanaWallets-Bm_Kiqc9.d.mts → useSolanaWallets-BhtM7p0l.d.ts} +1 -1
  41. package/dist/esm/auth-flows/passkey.mjs +1 -1
  42. package/dist/esm/client.mjs +1 -1
  43. package/dist/esm/components/LoginModal.mjs +1 -1
  44. package/dist/esm/connectors/embeddedProvider.mjs +1 -1
  45. package/dist/esm/connectors/index.mjs +1 -1
  46. package/dist/esm/constants.mjs +1 -1
  47. package/dist/esm/embedded-wallets/solana/provider.mjs +1 -1
  48. package/dist/esm/hooks/internal-context.mjs +1 -1
  49. package/dist/esm/hooks/privy-provider.mjs +1 -1
  50. package/dist/esm/hooks/useLoginWithPasskey.mjs +1 -1
  51. package/dist/esm/hooks/useLoginWithTelegram.mjs +1 -0
  52. package/dist/esm/index.mjs +1 -1
  53. package/dist/esm/lib/funding/reservoir.mjs +1 -1
  54. package/dist/esm/privy-provider-DhAz7i0N.mjs +3 -0
  55. package/dist/esm/screens/ErrorScreen.mjs +1 -1
  56. package/dist/esm/screens/Funding/AwaitingEvmToSolBridgingScreen.mjs +2 -2
  57. package/dist/esm/screens/Funding/AwaitingExternalTransferScreen.mjs +2 -2
  58. package/dist/esm/screens/Funding/AwaitingSolToEvmBridgingScreen.mjs +2 -2
  59. package/dist/esm/screens/MfaScreens/EnrollPasskey.mjs +1 -1
  60. package/dist/esm/screens/MfaScreens/EnrollSms.mjs +1 -1
  61. package/dist/esm/screens/MfaScreens/EnrollTotp.mjs +1 -1
  62. package/dist/esm/screens/MfaScreens/MfaEnrollmentFlowScreen.mjs +1 -1
  63. package/dist/esm/screens/SendSolanaTransactionScreen/SendSolanaTransactionScreen.mjs +1 -1
  64. package/dist/esm/screens/SendTransactionScreen/SendTransactionScreen.mjs +1 -1
  65. package/dist/esm/screens/SendTransactionScreen/index.mjs +1 -1
  66. package/dist/esm/screens/TelegramAuthScreen.mjs +1 -1
  67. package/package.json +1 -1
  68. package/dist/cjs/privy-provider-D3d3i9ev.js +0 -3
  69. package/dist/esm/privy-provider-C0UXORP0.mjs +0 -3
@@ -1,2 +1,2 @@
1
- import{jsxs as o,Fragment as t,jsx as e}from"react/jsx-runtime";import n from"@heroicons/react/24/outline/CheckCircleIcon";import{useState as i,useEffect as r}from"react";import{createWalletClient as s,custom as a,publicActions as m,createPublicClient as c,http as l,formatUnits as p}from"viem";import{RefactorSpacerTop as d,CenteredItemWithGap as u,RefactorSpacerBottom as h}from"../../components/Layouts.mjs";import{BlobbyFooter as g}from"../../components/ModalFooter.mjs";import{CenteredScreenHeader as j}from"../../components/ScreenHeader.mjs";import f from"../../components/embedded-wallets/FundWalletMethodHeader.mjs";import{NeutralSpinner as v}from"../../components/primitives/NeutralSpinner/index.mjs";import{addToDefaultChains as y}from"../../connectors/chains/utils.mjs";import{DEFAULT_SUCCESS_SCREEN_EXTRA_LONG_DURATION_MS as b}from"../../constants.mjs";import{PrivyClientError as w,PrivyErrorCode as I}from"../../errors.mjs";import{usePrivyInternal as C}from"../../hooks/internal-context.mjs";import{usePrivyModal as T}from"../../hooks/modal-context.mjs";import{useGetTokenPrice as S}from"../../hooks/useGetTokenPrice.mjs";import{useWallets as k}from"../../hooks/useWallets.mjs";import{toDisplayName as N}from"../../lib/external-wallets/displayHelpers.mjs";import{ON_RAMP_COMPLETE_ANALYTICS_EVENT as x}from"../../lib/funding/analytics.mjs";import{getQuote as A,toGetQuoteInput as E,toEvmTransactionRequestInfoFromQuote as F}from"../../lib/funding/reservoir.mjs";import{RELAY_SOLANA_MAINNET_CLUSTER_CHAIN_ID as L,RELAY_SOLANA_NATIVE_CURRENCY_ID as B}from"../../lib/solana/index.mjs";import{getNativeCurrencyFromLamports as P,getSolanaFormattedAmounts as M}from"../../lib/solana/transaction.mjs";import{getBalanceForChains as U}from"../../lib/wallets/actions/getBalanceForChains.mjs";import{usePlugins as R}from"../../plugins/context/PrivyPluginContext.mjs";import{SOLANA_FUNDING_PLUGIN_ID as W}from"../../plugins/solana-funding/id.mjs";import{formatWalletAddress as _}from"../../utils/index.mjs";import{getJsonRpcEndpointFromChain as O}from"../../utils/eth/getPublicClient.mjs";import{ModalScreen as q}from"../index.mjs";import{BridgeNetworkSelectionView as H}from"./BridgeNetworkSelectionView.mjs";import{TransferOrBridgeLoadingScreen as $}from"./TransferOrBridgeLoadingScreen.mjs";import"styled-components";import"../../configuration/context.mjs";import"../../config.mjs";import"../../configuration/defaultClientConfig.mjs";import"../../configuration/login-methods.mjs";import"../../configuration/wallets.mjs";import"../../connectors/chains/index.mjs";import"../../connectors/chains/arbitrum.mjs";import"../../connectors/chains/arbitrumSepolia.mjs";import"../../connectors/chains/avalanche.mjs";import"../../connectors/chains/avalancheFuji.mjs";import"../../connectors/chains/base.mjs";import"../../connectors/chains/baseSepolia.mjs";import"../../connectors/chains/berachainArtio.mjs";import"../../connectors/chains/celo.mjs";import"../../connectors/chains/celoAlfajores.mjs";import"../../connectors/chains/filecoin.mjs";import"../../connectors/chains/filecoinCalibration.mjs";import"../../connectors/chains/garnetHolesky.mjs";import"../../connectors/chains/holesky.mjs";import"../../connectors/chains/linea.mjs";import"../../connectors/chains/lineaTestnet.mjs";import"../../connectors/chains/lukso.mjs";import"../../connectors/chains/mainnet.mjs";import"../../connectors/chains/optimism.mjs";import"../../connectors/chains/optimismSepolia.mjs";import"../../connectors/chains/polygon.mjs";import"../../connectors/chains/polygonAmoy.mjs";import"../../connectors/chains/redstone.mjs";import"../../connectors/chains/sepolia.mjs";import"../../connectors/chains/zora.mjs";import"../../connectors/chains/zoraSepolia.mjs";import"../../connectors/chains/zoraTestnet.mjs";import"../../theme.mjs";import"tinycolor2";import"../../lib/cybr53.mjs";import"../../svg/protected-by-privy.mjs";import"../../components/ModalHeader.mjs";import"@heroicons/react/24/outline/ArrowLeftIcon";import"@heroicons/react/24/outline/ArrowRightIcon";import"@heroicons/react/24/outline/QuestionMarkCircleIcon";import"@heroicons/react/24/outline/XMarkIcon";import"../../hooks/index.mjs";import"ofetch";import"../../components/PrefetchedImage.mjs";import"../../hooks/useGetSolPrice.mjs";import"../../svg/backpack.mjs";import"../../svg/brave-browser-icon.mjs";import"../../svg/bybit.mjs";import"../../svg/coinbase-wallet.mjs";import"../../svg/cryptocom.mjs";import"../../svg/metamask.mjs";import"../../svg/okx-wallet.mjs";import"../../svg/phantom.mjs";import"../../svg/rabby.mjs";import"../../svg/rainbow.mjs";import"../../svg/safe.mjs";import"../../svg/solflare.mjs";import"../../svg/uniswap.mjs";import"../../svg/universal-profile.mjs";import"../../svg/wallet-connect.mjs";import"../../svg/zerion.mjs";import"../../utils/buffer/readBigInt64LE.mjs";import"../../lib/attempt.mjs";import"../../connectors/get-legacy-injected-providers.mjs";import"../../connectors/is-wallet-installed.mjs";import"@privy-io/js-sdk-core";import"../../components/Button.mjs";import"../../components/Loader.mjs";import"../../components/ui/layout/Row.mjs";import"../../components/ui/typography/ErrorMessage.mjs";import"../../components/ui/typography/LabelSm.mjs";import"../../components/ui/typography/Subtitle.mjs";import"../../components/ui/typography/Title.mjs";import"../../components/ui/wallet/NetworkBalanceCard.mjs";import"@heroicons/react/24/outline/WalletIcon";import"../../components/ui/chips/Chip.mjs";import"../../components/ui/animation/LoadingSkeleton.mjs";import"../../components/ui/typography/Value.mjs";import"../../components/ui/wallet/NetworkIcon.mjs";import"@heroicons/react/24/outline/GlobeAltIcon";import"../../components/ui/icons/Arbitum.mjs";import"../../components/ui/icons/Avalanche.mjs";import"../../components/ui/icons/Base.mjs";import"../../components/ui/icons/Celo.mjs";import"../../components/ui/icons/Linea.mjs";import"../../components/ui/icons/Mainnnet.mjs";import"../../components/ui/icons/Optimism.mjs";import"../../components/ui/icons/Polygon.mjs";import"../../components/ui/icons/Solana.mjs";import"../../components/ui/icons/Zora.mjs";import"../../components/ui/wallet/shared.mjs";import"../../components/ui/wallet/NetworkSelectorPanel.mjs";import"@headlessui/react";import"@heroicons/react/24/outline/ChevronDownIcon";import"../../lib/ethers.mjs";import"./styles.mjs";import"../LinkPasskeyScreen.mjs";import"@heroicons/react/24/outline/ClockIcon";import"@heroicons/react/24/outline/TrashIcon";import"@heroicons/react/24/solid/CheckBadgeIcon";import"@heroicons/react/24/solid/LockClosedIcon";import"../../hooks/privy-context.mjs";import"../../svg/face-id.mjs";import"../../svg/fingerprint.mjs";import"../MfaScreens/StyledComponents.mjs";import"../../components/external-wallets/InjectedWalletIcon.mjs";import"../../components/ui/wallet/Address.mjs";import"@heroicons/react/24/outline/CheckIcon";import"@heroicons/react/24/outline/Square2StackIcon";const z=()=>{let{rpcConfig:z,appId:D,closePrivyModal:G,createAnalyticsEvent:V}=C(),{navigate:Q,setModalData:X,app:Y,data:Z}=T(),{wallets:J}=k(),K=R(),[oo,to]=i(null),[eo,no]=i(null),[io,ro]=i([]),[so,ao]=i(0),[mo,co]=i(!1),[lo,po]=i(!1),[uo,ho]=i(!1),[go,jo]=i(!1);if(!Z?.funding||"solana"!==Z.funding.chainType)throw Error("Invalid funding data");let{address:fo,cluster:vo,connectedWalletAddress:yo}=Z.funding,[bo,wo]=i(Z.funding.amount),Io=yo?J.find((({address:o})=>o===yo)):J[0],[Co,To]=i(null);r((()=>{(async()=>{if(!Io)return;let o=await Io.getEthereumProvider();To(s({account:Io.address,transport:a(o)}).extend(m))})().catch(console.error)}),[Io]);let[So,ko]=i(0n),No=P(So);r((()=>{let o=K(W);o?o.getBalance({address:fo,cluster:vo}).then((o=>ko(BigInt(o)))):console.warn("Unable to load solana plugin, skipping balance")}),[]);let[xo,Ao]=i(),{tokenPrice:Eo}=S("solana"),{fundingAmountInBaseUnit:Fo,fundingAmountInUsd:Lo}=M({amount:bo,fee:0n,tokenPrice:Eo});r((()=>{(async()=>{if(!Co||!Io)return;let o=["testnet","devnet"].includes(vo.name);o&&console.warn("Solana testnets are not supported for bridging");let t=y(Y.chains).filter((({testnet:t})=>!!t===o)),e=(await U({chains:t,address:Io.address,appId:D,rpcConfig:z})).filter((o=>o.balance>0n));if(e.length<1)return void to(new w(`Wallet ${_(Io.address)} does not have enough funds.`,void 0,I.INSUFFICIENT_BALANCE));e.sort(((o,t)=>Number(t.balance-o.balance)));let n=(await Promise.allSettled(e.map((async o=>({...o,quote:await A({isTestnet:!1,input:E({amount:Fo.toString(),user:Io.address,recipient:fo,destinationChainId:L,destinationCurrency:B,originChainId:o.chain.id})})}))))).filter((o=>"fulfilled"===o.status)).map((o=>o.value));if(n.length<1)return void to(new w(`Unable to fetch quotes for bridging. Wallet ${_(Io.address)} does not have enough funds.`,void 0,I.INSUFFICIENT_BALANCE));let i=n.map((({quote:o,balance:t,chain:e})=>({bridgeTx:F(o),balance:t,chain:e}))).filter((({bridgeTx:o})=>!!o));if(i.length>1)return void ro(i);let r=i.at(0);r?(po(!0),Ao({data:r.bridgeTx.data,to:r.bridgeTx.to,value:r.bridgeTx.value,chain:r.chain})):to(new w(`Unable to select bridge option from quotes. Wallet ${_(Io.address)} does not have enough funds.`,void 0,I.INSUFFICIENT_BALANCE))})().catch(console.error)}),[Co]),r((()=>{(async()=>{let o,t;if(!Co||!Io||mo||uo||!xo)return;co(!0);let e=c({chain:xo.chain,transport:l(O(xo.chain,z,D))});try{o=await e.prepareTransactionRequest({account:Io.address,to:xo.to,chain:xo.chain,data:xo.data,value:BigInt(xo.value??0)})}catch(o){console.error(o),io.length>1&&no(o.shortMessage??"Something went wrong")}if(o){co(!1),ho(!0);try{await Co.switchChain({id:xo.chain.id})}catch(o){await Co.addChain({chain:xo.chain}),await Co.switchChain({id:xo.chain.id})}try{t=await Co.sendTransaction(o),V({eventName:x,payload:{provider:"external",status:"success",txHash:t,address:Io.address,chainId:xo.chain.id,chainType:"ethereum",value:xo.value?p(BigInt(xo.value),18):void 0,token:"ETH",destination:fo,destinationClusterName:"mainnet-beta",destinationChainType:"solana",destinationValue:p(Fo,9),destinationToken:"SOL"}})}catch(o){console.error(o),"TransactionExecutionError"===o.name&&(io.length<1?to(new w(o.shortMessage,void 0,I.TRANSACTION_FAILURE)):no(o.shortMessage??"Something went wrong"))}t?(await Co.waitForTransactionReceipt({hash:t}),ho(!1),jo(!0)):ho(!1)}else co(!1)})().catch(console.error)}),[Co,xo]),r((()=>{if(!oo)return;let o={error:oo,previousScreen:q.FUNDING_TRANSFER_FROM_WALLET_SCREEN};X({funding:Z?.funding,sendTransaction:Z?.sendTransaction,errorModalData:o}),Q(q.ERROR_SCREEN,!1)}),[oo]);let Bo=Io?N(Io.walletClientType,Io.connectorType,Io.walletClientType)||"wallet":null;if(r((()=>{if(!go)return;let o=setTimeout(G,b);return()=>clearTimeout(o)}),[go]),go/*#__PURE__*/)return o(t,{children:[/*#__PURE__*/e(f,{}),/*#__PURE__*/e(d,{}),/*#__PURE__*/o(u,{children:[/*#__PURE__*/e(n,{color:"var(--privy-color-success)",width:"64px",height:"64px"}),/*#__PURE__*/e(j,{title:"Success!",description:`You’ve successfully added ${bo} SOL to your ${Y.name} wallet. It may take a minute before the funds are available to use.`})]}),/*#__PURE__*/e(h,{}),/*#__PURE__*/e(g,{})]});let Po=io[so];return io.length>1&&Po?/*#__PURE__*/e(H,{displayName:Bo,configuredFundingChain:vo,formattedBalance:No,fundingAmount:bo,fundingCurrency:"SOL",fundingAmountInUsd:Lo,options:io,selectedOption:Po,isPreparing:mo,isSubmitting:uo,addressToFund:fo,fundingWalletAddress:Io?.address||"",errorMessage:eo,onSubmit:()=>{Z.funding?.amount!==bo?async function(){if(Io&&Po)try{let o=await A({isTestnet:!1,input:E({amount:Fo.toString(),user:Io.address,recipient:fo,destinationChainId:L,destinationCurrency:B,originChainId:Po.chain.id})}),t=F(o);if(!t)throw Error("Invalid transaction request");po(!0),Ao({data:t.data,to:t.to,value:t.value,chain:Po.chain})}catch(o){console.error(o),to(new w("Unable to fetch quotes for bridging",o,I.INSUFFICIENT_BALANCE))}}().catch(console.error):Ao({to:Po.bridgeTx.to,data:Po.bridgeTx.data,value:Po.bridgeTx.value,chain:Po.chain})},onSelect:o=>{o!==so&&(no(null),ao(o))},onAmountChange:wo}):uo&&Io?/*#__PURE__*/e($,{wallet:Io,displayName:Bo,addressToFund:fo,isBridging:lo,isErc20Flow:!1,chainId:"solana",chainName:vo.name,totalPriceInUsd:void 0,totalPriceInNativeCurrency:void 0,gasPriceInUsd:void 0,gasPriceInNativeCurrency:void 0}):
2
- /*#__PURE__*/o(t,{children:[/*#__PURE__*/e(f,{}),/*#__PURE__*/e(v,{}),/*#__PURE__*/e("div",{style:{marginTop:"1rem"}}),/*#__PURE__*/e(g,{})]})};export{z as AwaitingEvmToSolBridgingScreen};
1
+ import{jsxs as o,Fragment as t,jsx as e}from"react/jsx-runtime";import n from"@heroicons/react/24/outline/CheckCircleIcon";import{useState as i,useEffect as r}from"react";import{createWalletClient as s,custom as a,publicActions as m,createPublicClient as c,http as l,formatUnits as p}from"viem";import{RefactorSpacerTop as d,CenteredItemWithGap as u,RefactorSpacerBottom as h}from"../../components/Layouts.mjs";import{BlobbyFooter as g}from"../../components/ModalFooter.mjs";import{CenteredScreenHeader as j}from"../../components/ScreenHeader.mjs";import f from"../../components/embedded-wallets/FundWalletMethodHeader.mjs";import{NeutralSpinner as v}from"../../components/primitives/NeutralSpinner/index.mjs";import{addToDefaultChains as y}from"../../connectors/chains/utils.mjs";import{DEFAULT_SUCCESS_SCREEN_EXTRA_LONG_DURATION_MS as b}from"../../constants.mjs";import{PrivyClientError as w,PrivyErrorCode as I}from"../../errors.mjs";import{usePrivyInternal as C}from"../../hooks/internal-context.mjs";import{usePrivyModal as T}from"../../hooks/modal-context.mjs";import{useGetTokenPrice as S}from"../../hooks/useGetTokenPrice.mjs";import{useWallets as k}from"../../hooks/useWallets.mjs";import{toDisplayName as N}from"../../lib/external-wallets/displayHelpers.mjs";import{ON_RAMP_COMPLETE_ANALYTICS_EVENT as x}from"../../lib/funding/analytics.mjs";import{getQuote as A,toGetQuoteInput as E,toEvmTransactionRequestInfoFromQuote as F,useBridgingStatusPolling as B}from"../../lib/funding/reservoir.mjs";import{RELAY_SOLANA_MAINNET_CLUSTER_CHAIN_ID as L,RELAY_SOLANA_NATIVE_CURRENCY_ID as P}from"../../lib/solana/index.mjs";import{getNativeCurrencyFromLamports as M,getSolanaFormattedAmounts as U}from"../../lib/solana/transaction.mjs";import{getBalanceForChains as R}from"../../lib/wallets/actions/getBalanceForChains.mjs";import{usePlugins as H}from"../../plugins/context/PrivyPluginContext.mjs";import{SOLANA_FUNDING_PLUGIN_ID as O}from"../../plugins/solana-funding/id.mjs";import{formatWalletAddress as W}from"../../utils/index.mjs";import{getJsonRpcEndpointFromChain as _}from"../../utils/eth/getPublicClient.mjs";import{ModalScreen as q}from"../index.mjs";import{BridgeNetworkSelectionView as $}from"./BridgeNetworkSelectionView.mjs";import{TransferOrBridgeLoadingScreen as z}from"./TransferOrBridgeLoadingScreen.mjs";import"styled-components";import"../../configuration/context.mjs";import"../../config.mjs";import"../../configuration/defaultClientConfig.mjs";import"../../configuration/login-methods.mjs";import"../../configuration/wallets.mjs";import"../../connectors/chains/index.mjs";import"../../connectors/chains/arbitrum.mjs";import"../../connectors/chains/arbitrumSepolia.mjs";import"../../connectors/chains/avalanche.mjs";import"../../connectors/chains/avalancheFuji.mjs";import"../../connectors/chains/base.mjs";import"../../connectors/chains/baseSepolia.mjs";import"../../connectors/chains/berachainArtio.mjs";import"../../connectors/chains/celo.mjs";import"../../connectors/chains/celoAlfajores.mjs";import"../../connectors/chains/filecoin.mjs";import"../../connectors/chains/filecoinCalibration.mjs";import"../../connectors/chains/garnetHolesky.mjs";import"../../connectors/chains/holesky.mjs";import"../../connectors/chains/linea.mjs";import"../../connectors/chains/lineaTestnet.mjs";import"../../connectors/chains/lukso.mjs";import"../../connectors/chains/mainnet.mjs";import"../../connectors/chains/optimism.mjs";import"../../connectors/chains/optimismSepolia.mjs";import"../../connectors/chains/polygon.mjs";import"../../connectors/chains/polygonAmoy.mjs";import"../../connectors/chains/redstone.mjs";import"../../connectors/chains/sepolia.mjs";import"../../connectors/chains/zora.mjs";import"../../connectors/chains/zoraSepolia.mjs";import"../../connectors/chains/zoraTestnet.mjs";import"../../theme.mjs";import"tinycolor2";import"../../lib/cybr53.mjs";import"../../svg/protected-by-privy.mjs";import"../../components/ModalHeader.mjs";import"@heroicons/react/24/outline/ArrowLeftIcon";import"@heroicons/react/24/outline/ArrowRightIcon";import"@heroicons/react/24/outline/QuestionMarkCircleIcon";import"@heroicons/react/24/outline/XMarkIcon";import"../../hooks/index.mjs";import"ofetch";import"../../components/PrefetchedImage.mjs";import"../../hooks/useGetSolPrice.mjs";import"../../svg/backpack.mjs";import"../../svg/brave-browser-icon.mjs";import"../../svg/bybit.mjs";import"../../svg/coinbase-wallet.mjs";import"../../svg/cryptocom.mjs";import"../../svg/metamask.mjs";import"../../svg/okx-wallet.mjs";import"../../svg/phantom.mjs";import"../../svg/rabby.mjs";import"../../svg/rainbow.mjs";import"../../svg/safe.mjs";import"../../svg/solflare.mjs";import"../../svg/uniswap.mjs";import"../../svg/universal-profile.mjs";import"../../svg/wallet-connect.mjs";import"../../svg/zerion.mjs";import"../../utils/buffer/readBigInt64LE.mjs";import"../../lib/attempt.mjs";import"../../connectors/get-legacy-injected-providers.mjs";import"../../connectors/is-wallet-installed.mjs";import"@privy-io/js-sdk-core";import"../../components/Button.mjs";import"../../components/Loader.mjs";import"../../components/ui/layout/Row.mjs";import"../../components/ui/typography/ErrorMessage.mjs";import"../../components/ui/typography/LabelSm.mjs";import"../../components/ui/typography/Subtitle.mjs";import"../../components/ui/typography/Title.mjs";import"../../components/ui/wallet/NetworkBalanceCard.mjs";import"@heroicons/react/24/outline/WalletIcon";import"../../components/ui/chips/Chip.mjs";import"../../components/ui/animation/LoadingSkeleton.mjs";import"../../components/ui/typography/Value.mjs";import"../../components/ui/wallet/NetworkIcon.mjs";import"@heroicons/react/24/outline/GlobeAltIcon";import"../../components/ui/icons/Arbitum.mjs";import"../../components/ui/icons/Avalanche.mjs";import"../../components/ui/icons/Base.mjs";import"../../components/ui/icons/Celo.mjs";import"../../components/ui/icons/Linea.mjs";import"../../components/ui/icons/Mainnnet.mjs";import"../../components/ui/icons/Optimism.mjs";import"../../components/ui/icons/Polygon.mjs";import"../../components/ui/icons/Solana.mjs";import"../../components/ui/icons/Zora.mjs";import"../../components/ui/wallet/shared.mjs";import"../../components/ui/wallet/NetworkSelectorPanel.mjs";import"@headlessui/react";import"@heroicons/react/24/outline/ChevronDownIcon";import"../../lib/ethers.mjs";import"./styles.mjs";import"../LinkPasskeyScreen.mjs";import"@heroicons/react/24/outline/ClockIcon";import"@heroicons/react/24/outline/TrashIcon";import"@heroicons/react/24/solid/CheckBadgeIcon";import"@heroicons/react/24/solid/LockClosedIcon";import"../../hooks/privy-context.mjs";import"../../svg/face-id.mjs";import"../../svg/fingerprint.mjs";import"../MfaScreens/StyledComponents.mjs";import"../../components/external-wallets/InjectedWalletIcon.mjs";import"../../components/ui/wallet/Address.mjs";import"@heroicons/react/24/outline/CheckIcon";import"@heroicons/react/24/outline/Square2StackIcon";const D=()=>{let{rpcConfig:D,appId:G,closePrivyModal:V,createAnalyticsEvent:Q}=C(),{navigate:X,setModalData:Y,app:Z,data:J}=T(),{wallets:K}=k(),oo=H(),[to,eo]=i(null),[no,io]=i(null),[ro,so]=i([]),[ao,mo]=i(0),[co,lo]=i(!1),[po,uo]=i(!1),[ho,go]=i(!1),[jo,fo]=i(!1),[vo,yo]=i(),[bo,wo]=i();if(!J?.funding||"solana"!==J.funding.chainType)throw Error("Invalid funding data");let{address:Io,cluster:Co,connectedWalletAddress:To}=J.funding,[So,ko]=i(J.funding.amount),No=To?K.find((({address:o})=>o===To)):K[0],[xo,Ao]=i(null);r((()=>{(async()=>{if(!No)return;let o=await No.getEthereumProvider();Ao(s({account:No.address,transport:a(o)}).extend(m))})().catch(console.error)}),[No]);let[Eo,Fo]=i(0n),Bo=M(Eo);r((()=>{let o=oo(O);o?o.getBalance({address:Io,cluster:Co}).then((o=>Fo(BigInt(o)))):console.warn("Unable to load solana plugin, skipping balance")}),[]);let[Lo,Po]=i(),{tokenPrice:Mo}=S("solana"),{fundingAmountInBaseUnit:Uo,fundingAmountInUsd:Ro}=U({amount:So,fee:0n,tokenPrice:Mo});r((()=>{(async()=>{if(!xo||!No)return;let o=["testnet","devnet"].includes(Co.name);o&&console.warn("Solana testnets are not supported for bridging");let t=y(Z.chains).filter((({testnet:t})=>!!t===o)),e=(await R({chains:t,address:No.address,appId:G,rpcConfig:D})).filter((o=>o.balance>0n));if(e.length<1)return void eo(new w(`Wallet ${W(No.address)} does not have enough funds.`,void 0,I.INSUFFICIENT_BALANCE));e.sort(((o,t)=>Number(t.balance-o.balance)));let n=(await Promise.allSettled(e.map((async o=>({...o,quote:await A({isTestnet:!1,input:E({amount:Uo.toString(),user:No.address,recipient:Io,destinationChainId:L,destinationCurrency:P,originChainId:o.chain.id})})}))))).filter((o=>"fulfilled"===o.status)).map((o=>o.value));if(n.length<1)return void eo(new w(`Unable to fetch quotes for bridging. Wallet ${W(No.address)} does not have enough funds.`,void 0,I.INSUFFICIENT_BALANCE));let i=n.map((({quote:o,balance:t,chain:e})=>({bridgeTx:F(o),balance:t,chain:e}))).filter((({bridgeTx:o})=>!!o));if(i.length>1)return void so(i);let r=i.at(0);r?(uo(!0),Po({data:r.bridgeTx.data,to:r.bridgeTx.to,value:r.bridgeTx.value,chain:r.chain})):eo(new w(`Unable to select bridge option from quotes. Wallet ${W(No.address)} does not have enough funds.`,void 0,I.INSUFFICIENT_BALANCE))})().catch(console.error)}),[xo]),r((()=>{(async()=>{let o,t;if(!xo||!No||co||ho||!Lo)return;lo(!0);let e=c({chain:Lo.chain,transport:l(_(Lo.chain,D,G))});try{o=await e.prepareTransactionRequest({account:No.address,to:Lo.to,chain:Lo.chain,data:Lo.data,value:BigInt(Lo.value??0)})}catch(o){console.error(o),ro.length>1&&io(o.shortMessage??"Something went wrong")}if(o){lo(!1),go(!0);try{await xo.switchChain({id:Lo.chain.id})}catch(o){await xo.addChain({chain:Lo.chain}),await xo.switchChain({id:Lo.chain.id})}try{t=await xo.sendTransaction(o)}catch(o){console.error(o),"TransactionExecutionError"===o.name&&(ro.length<1?eo(new w(o.shortMessage,void 0,I.TRANSACTION_FAILURE)):io(o.shortMessage??"Something went wrong"))}if(t)return await xo.waitForTransactionReceipt({hash:t}),po?(wo("pending"),void yo(t)):(go(!1),fo(!0),void Q({eventName:x,payload:{provider:"external",status:"success",txHash:t,address:No.address,chainId:Lo.chain.id,chainType:"ethereum",value:Lo.value?p(BigInt(Lo.value),18):void 0,token:"ETH",destination:Io,destinationClusterName:"mainnet-beta",destinationChainType:"solana",destinationValue:p(Uo,9),destinationToken:"SOL"}}));go(!1)}else lo(!1)})().catch(console.error)}),[xo,Lo]),B({transactionHash:vo,wallet:No,isTestnet:!1,bridgingStatus:bo,setBridgingStatus:wo,onSuccess({transactionHash:o,wallet:t}){uo(!1),fo(!0),Q({eventName:x,payload:{provider:"external",status:"success",txHash:o,address:t.address,chainId:Lo?.chain.id,chainType:"ethereum",value:Lo?.value?p(BigInt(Lo.value),18):void 0,token:"ETH",destination:Io,destinationClusterName:"mainnet-beta",destinationChainType:"solana",destinationValue:p(Uo,9),destinationToken:"SOL"}})},onFailure({error:o}){uo(!1),eo(o)}}),r((()=>{if(!to)return;let o={error:to,previousScreen:q.FUNDING_TRANSFER_FROM_WALLET_SCREEN};Y({funding:J?.funding,sendTransaction:J?.sendTransaction,errorModalData:o}),X(q.ERROR_SCREEN,!1)}),[to]);let Ho=No?N(No.walletClientType,No.connectorType,No.walletClientType)||"wallet":null;if(r((()=>{if(!jo)return;let o=setTimeout(V,b);return()=>clearTimeout(o)}),[jo]),jo/*#__PURE__*/)return o(t,{children:[/*#__PURE__*/e(f,{}),/*#__PURE__*/e(d,{}),/*#__PURE__*/o(u,{children:[/*#__PURE__*/e(n,{color:"var(--privy-color-success)",width:"64px",height:"64px"}),/*#__PURE__*/e(j,{title:"Success!",description:`You’ve successfully added ${So} SOL to your ${Z.name} wallet. It may take a minute before the funds are available to use.`})]}),/*#__PURE__*/e(h,{}),/*#__PURE__*/e(g,{})]});let Oo=ro[ao];return ro.length>1&&Oo?/*#__PURE__*/e($,{displayName:Ho,configuredFundingChain:Co,formattedBalance:Bo,fundingAmount:So,fundingCurrency:"SOL",fundingAmountInUsd:Ro,options:ro,selectedOption:Oo,isPreparing:co,isSubmitting:ho,addressToFund:Io,fundingWalletAddress:No?.address||"",errorMessage:no,onSubmit:()=>{J.funding?.amount!==So?async function(){if(No&&Oo)try{let o=await A({isTestnet:!1,input:E({amount:Uo.toString(),user:No.address,recipient:Io,destinationChainId:L,destinationCurrency:P,originChainId:Oo.chain.id})}),t=F(o);if(!t)throw Error("Invalid transaction request");uo(!0),Po({data:t.data,to:t.to,value:t.value,chain:Oo.chain})}catch(o){console.error(o),eo(new w("Unable to fetch quotes for bridging",o,I.INSUFFICIENT_BALANCE))}}().catch(console.error):Po({to:Oo.bridgeTx.to,data:Oo.bridgeTx.data,value:Oo.bridgeTx.value,chain:Oo.chain})},onSelect:o=>{o!==ao&&(io(null),mo(o))},onAmountChange:ko}):ho&&No?/*#__PURE__*/e(z,{wallet:No,displayName:Ho,addressToFund:Io,isBridging:po,isErc20Flow:!1,chainId:"solana",chainName:Co.name,totalPriceInUsd:void 0,totalPriceInNativeCurrency:void 0,gasPriceInUsd:void 0,gasPriceInNativeCurrency:void 0}):
2
+ /*#__PURE__*/o(t,{children:[/*#__PURE__*/e(f,{}),/*#__PURE__*/e(v,{}),/*#__PURE__*/e("div",{style:{marginTop:"1rem"}}),/*#__PURE__*/e(g,{})]})};export{D as AwaitingEvmToSolBridgingScreen};
@@ -1,2 +1,2 @@
1
- import{jsxs as o,Fragment as e,jsx as t}from"react/jsx-runtime";import n from"@heroicons/react/24/outline/CheckCircleIcon";import{useState as i,useEffect as r}from"react";import{parseEther as s,createWalletClient as a,custom as c,publicActions as m,createPublicClient as l,http as p,encodeFunctionData as d,formatUnits as u}from"viem";import{RefactorSpacerTop as h,CenteredItemWithGap as g,RefactorSpacerBottom as j}from"../../components/Layouts.mjs";import{BlobbyFooter as f}from"../../components/ModalFooter.mjs";import{CenteredScreenHeader as v}from"../../components/ScreenHeader.mjs";import y from"../../components/embedded-wallets/FundWalletMethodHeader.mjs";import{NeutralSpinner as b}from"../../components/primitives/NeutralSpinner/index.mjs";import{addToDefaultChains as w}from"../../connectors/chains/utils.mjs";import{DEFAULT_SUCCESS_SCREEN_EXTRA_LONG_DURATION_MS as I}from"../../constants.mjs";import{PrivyClientError as C,PrivyErrorCode as T}from"../../errors.mjs";import{usePrivyInternal as S}from"../../hooks/internal-context.mjs";import{usePrivyModal as k}from"../../hooks/modal-context.mjs";import{useGetTokenPrice as N}from"../../hooks/useGetTokenPrice.mjs";import{useWallets as A}from"../../hooks/useWallets.mjs";import{ERC20_TRANSFER_ABI_STUB as E}from"../../lib/erc20/actions/abis/transfer.mjs";import{formatErc20TokenAmount as x}from"../../lib/erc20/formatErc20TokenAmount.mjs";import{getDollarsFromStringFloat as F,sumWeiQuantities as B,getDollarsFromWei as L,getNativeCurrencyFromWei as M}from"../../lib/ethers.mjs";import{toDisplayName as P}from"../../lib/external-wallets/displayHelpers.mjs";import{ON_RAMP_COMPLETE_ANALYTICS_EVENT as R}from"../../lib/funding/analytics.mjs";import{getQuote as U,toGetQuoteInput as W,toEvmTransactionRequestInfoFromQuote as _}from"../../lib/funding/reservoir.mjs";import{getBalanceForChains as q}from"../../lib/wallets/actions/getBalanceForChains.mjs";import{getErc20Balance as H}from"../../lib/wallets/actions/getErc20Balance.mjs";import{formatWalletAddress as $}from"../../utils/index.mjs";import{getJsonRpcEndpointFromChain as O}from"../../utils/eth/getPublicClient.mjs";import{ModalScreen as z}from"../index.mjs";import{BridgeNetworkSelectionView as D}from"./BridgeNetworkSelectionView.mjs";import{TransferOrBridgeLoadingScreen as G}from"./TransferOrBridgeLoadingScreen.mjs";import"styled-components";import"../../configuration/context.mjs";import"../../config.mjs";import"../../configuration/defaultClientConfig.mjs";import"../../configuration/login-methods.mjs";import"../../configuration/wallets.mjs";import"../../connectors/chains/index.mjs";import"../../connectors/chains/arbitrum.mjs";import"../../connectors/chains/arbitrumSepolia.mjs";import"../../connectors/chains/avalanche.mjs";import"../../connectors/chains/avalancheFuji.mjs";import"../../connectors/chains/base.mjs";import"../../connectors/chains/baseSepolia.mjs";import"../../connectors/chains/berachainArtio.mjs";import"../../connectors/chains/celo.mjs";import"../../connectors/chains/celoAlfajores.mjs";import"../../connectors/chains/filecoin.mjs";import"../../connectors/chains/filecoinCalibration.mjs";import"../../connectors/chains/garnetHolesky.mjs";import"../../connectors/chains/holesky.mjs";import"../../connectors/chains/linea.mjs";import"../../connectors/chains/lineaTestnet.mjs";import"../../connectors/chains/lukso.mjs";import"../../connectors/chains/mainnet.mjs";import"../../connectors/chains/optimism.mjs";import"../../connectors/chains/optimismSepolia.mjs";import"../../connectors/chains/polygon.mjs";import"../../connectors/chains/polygonAmoy.mjs";import"../../connectors/chains/redstone.mjs";import"../../connectors/chains/sepolia.mjs";import"../../connectors/chains/zora.mjs";import"../../connectors/chains/zoraSepolia.mjs";import"../../connectors/chains/zoraTestnet.mjs";import"../../lib/solana/index.mjs";import"../../theme.mjs";import"tinycolor2";import"../../lib/cybr53.mjs";import"../../svg/protected-by-privy.mjs";import"../../components/ModalHeader.mjs";import"@heroicons/react/24/outline/ArrowLeftIcon";import"@heroicons/react/24/outline/ArrowRightIcon";import"@heroicons/react/24/outline/QuestionMarkCircleIcon";import"@heroicons/react/24/outline/XMarkIcon";import"../../hooks/index.mjs";import"ofetch";import"../../components/PrefetchedImage.mjs";import"../../hooks/useGetSolPrice.mjs";import"../../connectors/get-legacy-injected-providers.mjs";import"../../connectors/is-wallet-installed.mjs";import"../../svg/backpack.mjs";import"../../svg/brave-browser-icon.mjs";import"../../svg/bybit.mjs";import"../../svg/coinbase-wallet.mjs";import"../../svg/cryptocom.mjs";import"../../svg/metamask.mjs";import"../../svg/okx-wallet.mjs";import"../../svg/phantom.mjs";import"../../svg/rabby.mjs";import"../../svg/rainbow.mjs";import"../../svg/safe.mjs";import"../../svg/solflare.mjs";import"../../svg/uniswap.mjs";import"../../svg/universal-profile.mjs";import"../../svg/wallet-connect.mjs";import"../../svg/zerion.mjs";import"@privy-io/js-sdk-core";import"../../components/Button.mjs";import"../../components/Loader.mjs";import"../../components/ui/layout/Row.mjs";import"../../components/ui/typography/ErrorMessage.mjs";import"../../components/ui/typography/LabelSm.mjs";import"../../components/ui/typography/Subtitle.mjs";import"../../components/ui/typography/Title.mjs";import"../../components/ui/wallet/NetworkBalanceCard.mjs";import"@heroicons/react/24/outline/WalletIcon";import"../../components/ui/chips/Chip.mjs";import"../../components/ui/animation/LoadingSkeleton.mjs";import"../../components/ui/typography/Value.mjs";import"../../components/ui/wallet/NetworkIcon.mjs";import"@heroicons/react/24/outline/GlobeAltIcon";import"../../components/ui/icons/Arbitum.mjs";import"../../components/ui/icons/Avalanche.mjs";import"../../components/ui/icons/Base.mjs";import"../../components/ui/icons/Celo.mjs";import"../../components/ui/icons/Linea.mjs";import"../../components/ui/icons/Mainnnet.mjs";import"../../components/ui/icons/Optimism.mjs";import"../../components/ui/icons/Polygon.mjs";import"../../components/ui/icons/Solana.mjs";import"../../components/ui/icons/Zora.mjs";import"../../components/ui/wallet/shared.mjs";import"../../components/ui/wallet/NetworkSelectorPanel.mjs";import"@headlessui/react";import"@heroicons/react/24/outline/ChevronDownIcon";import"./styles.mjs";import"../LinkPasskeyScreen.mjs";import"@heroicons/react/24/outline/ClockIcon";import"@heroicons/react/24/outline/TrashIcon";import"@heroicons/react/24/solid/CheckBadgeIcon";import"@heroicons/react/24/solid/LockClosedIcon";import"../../hooks/privy-context.mjs";import"../../svg/face-id.mjs";import"../../svg/fingerprint.mjs";import"../MfaScreens/StyledComponents.mjs";import"../../components/external-wallets/InjectedWalletIcon.mjs";import"../../components/ui/wallet/Address.mjs";import"@heroicons/react/24/outline/CheckIcon";import"@heroicons/react/24/outline/Square2StackIcon";const V=()=>{let{rpcConfig:V,appId:Q,closePrivyModal:X,createAnalyticsEvent:Y}=S(),{navigate:Z,setModalData:J,app:K,data:oo}=k(),{wallets:eo}=A(),[to,no]=i(!1),[io,ro]=i(0n),[so,ao]=i(!1),[co,mo]=i(null),[lo,po]=i(null),[uo,ho]=i([]),[go,jo]=i(0),[fo,vo]=i(!1),[yo,bo]=i(!1),[wo,Io]=i(!1),[Co,To]=i(!1);if(!oo?.funding||"ethereum"!==oo.funding.chainType)throw Error("Invalid funding data");let{erc20ContractInfo:So,chain:ko,connectedWalletAddress:No}=oo.funding,Ao=oo.funding.address,Eo=oo.funding.erc20Address,[xo,Fo]=i(oo.funding.amount);r((()=>{Eo&&!So&&mo(Error("Unable to fetch token details"))}),[]);let Bo=!!Eo&&!!So,Lo=Bo?BigInt(parseFloat(xo)*10**So.decimals):s(xo),Mo=No?eo.find((({address:o})=>o===No)):eo[0],[Po,Ro]=i(null);r((()=>{(async()=>{if(!Mo)return;let o=await Mo.getEthereumProvider();Ro(a({account:Mo.address,transport:c(o)}).extend(m))})().catch(console.error)}),[Mo]);let[Uo,Wo]=i(0n);r((()=>{l({chain:ko,transport:p(O(ko,V,Q))}).getBalance({address:Ao}).then(Wo).catch(console.error)}),[]);let[_o,qo]=i(0n);r((()=>{Bo&&H({chain:ko,address:Ao,appId:Q,rpcConfig:V,erc20Address:Eo}).then((o=>qo(o.balance))).catch(console.error)}),[]);let{tokenPrice:Ho}=N(ko.id),[$o,Oo]=i({to:Ao,chain:ko,value:Lo,data:void 0});r((()=>{(async()=>{let o,e;if(!Po||!Mo||fo||wo)return;vo(!0);let t=l({chain:$o.chain,transport:p(O($o.chain,V,Q))});if(Bo&&!$o.data)return await t.simulateContract({address:Eo,chain:$o.chain,abi:E,functionName:"transfer",args:[Ao,Lo],account:Mo.address}).catch((o=>{console.warn("Simulated token transfer failed with error, fetching bridge options.",o)}))?(vo(!1),void Oo({to:Eo,chain:$o.chain,data:d({abi:E,functionName:"transfer",args:[Ao,Lo]}),value:"0x0"})):(vo(!1),void ao(!0));try{o=await t.prepareTransactionRequest({account:Mo.address,to:$o.to,chain:$o.chain,data:$o.data,value:BigInt($o.value??0)})}catch(o){if(console.error(o),uo.length>1)po(o.shortMessage??"Something went wrong");else if(yo&&0===uo.length)return void mo(new C(`Wallet ${$(Mo.address)} does not have enough funds.`,void 0,T.INSUFFICIENT_BALANCE))}if(!o)return vo(!1),void ao(!0);vo(!1),Io(!0),no(!0),ro(o.gas);try{await Po.switchChain({id:$o.chain.id})}catch(o){await Po.addChain({chain:$o.chain}),await Po.switchChain({id:$o.chain.id})}try{e=await Po.sendTransaction(o),Y({eventName:R,payload:{provider:"external",status:"success",txHash:e,address:Mo.address,chainId:$o.chain.id,chainType:"ethereum",value:$o.value?u(BigInt($o.value),So?.decimals??18):void 0,token:So?.symbol??Eo??"ETH",destinationAddress:Ao,destinationChainId:ko.id,destinationChainType:"ethereum",destinationValue:Lo?u(Lo,So?.decimals??18):void 0,destinationToken:So?.symbol??Eo??ko.nativeCurrency.name}})}catch(o){if(console.error(o),"TransactionExecutionError"===o.name)if(uo.length<1){let e=o.shortMessage;(o.shortMessage.includes("rejected the request")||o.details.includes("rejected the request"))&&(e="User rejected the request."),mo(new C(e,void 0,T.TRANSACTION_FAILURE))}else po(o.shortMessage??"Something went wrong")}e?(await Po.waitForTransactionReceipt({hash:e}),Io(!1),To(!0)):Io(!1)})().catch(console.error)}),[Po,$o]),r((()=>{(async()=>{if(!so||!Po||!Mo)return;let o=w(K.chains).filter((o=>o.id!==ko.id&&!!o.testnet==!!ko.testnet));Bo&&o.unshift(ko);let e=await q({chains:o,address:Mo.address,appId:Q,rpcConfig:V}),t=Bo?e.filter((o=>o.balance>0n)):e.filter((o=>o.balance>Lo));if(t.length<1)return void mo(new C(`Wallet ${$(Mo.address)} does not have enough funds.`,void 0,T.INSUFFICIENT_BALANCE));t.sort(((o,e)=>Number(e.balance-o.balance)));let n=(await Promise.allSettled(t.map((async o=>({quote:await U({isTestnet:!!ko.testnet,input:W({amount:Lo.toString(),user:Mo.address,recipient:Ao,destinationChainId:ko.id,destinationCurrency:Eo,originChainId:o.chain.id})}),...o}))))).filter((o=>"fulfilled"===o.status)).map((o=>o.value));if(n.length<1)return void mo(new C(`Wallet ${$(Mo.address)} does not have enough funds.`,void 0,T.INSUFFICIENT_BALANCE));let i=n.map((o=>({bridgeTx:_(o.quote),balance:o.balance,chain:o.chain}))).filter((o=>!!o.bridgeTx));if(i.length>1)return void ho(i);let r=i[0];r?(bo(!0),Oo({data:r.bridgeTx.data,to:r.bridgeTx.to,value:r.bridgeTx.value,chain:r.chain})):mo(new C(`Wallet ${$(Mo.address)} does not have enough funds.`,void 0,T.INSUFFICIENT_BALANCE))})().catch(console.error)}),[so]),r((()=>{if(!co)return;let o={error:co,previousScreen:z.FUNDING_TRANSFER_FROM_WALLET_SCREEN};J({funding:oo?.funding,sendTransaction:oo?.sendTransaction,errorModalData:o}),Z(z.ERROR_SCREEN,!1)}),[co]);let zo=Mo?P(Mo.walletClientType,Mo.connectorType,Mo.walletClientType)||"wallet":null,Do=!Bo&&Ho?F(xo??"0",Ho):void 0,Go=Bo?io:B([io,Lo]),Vo=Go&&Ho?L(Go,Ho):void 0,Qo=Go?M(Go,"ETH"):void 0,Xo=io&&Ho?L(io,Ho):void 0,Yo=io?M(io,"ETH"):void 0;if(r((()=>{if(!Co)return;let o=setTimeout(X,I);return()=>clearTimeout(o)}),[Co]),Co/*#__PURE__*/)return o(e,{children:[/*#__PURE__*/t(y,{}),/*#__PURE__*/t(h,{}),/*#__PURE__*/o(g,{children:[/*#__PURE__*/t(n,{color:"var(--privy-color-success)",width:"64px",height:"64px"}),/*#__PURE__*/t(v,{title:"Success!",description:`You’ve successfully added ${xo} ${Bo?So.symbol:ko.nativeCurrency.symbol} to your ${K.name} wallet. It may take a minute before the funds are available to use.`})]}),/*#__PURE__*/t(j,{}),/*#__PURE__*/t(f,{})]});let Zo=Bo?`${x({amount:_o,decimals:So.decimals})} ${So.symbol}`:M(Uo,ko.nativeCurrency.symbol,3,!0),Jo=uo[go];return uo.length>1&&Jo?/*#__PURE__*/t(D,{displayName:zo,configuredFundingChain:ko,formattedBalance:Zo,fundingAmount:xo,fundingCurrency:Bo?So.symbol:ko.nativeCurrency.symbol,fundingAmountInUsd:Do,options:uo,selectedOption:Jo,isPreparing:fo,isSubmitting:wo,addressToFund:Ao,fundingWalletAddress:Mo?.address||"",errorMessage:lo,onSubmit:()=>{oo.funding?.amount!==xo?async function(){if(Mo&&Jo)try{let o=await U({isTestnet:!!ko.testnet,input:W({amount:Lo.toString(),user:Mo.address,recipient:Ao,destinationChainId:ko.id,destinationCurrency:Eo,originChainId:Jo.chain.id})}),e=_(o);if(!e)throw Error("Invalid transaction request");bo(!0),Oo({data:e.data,to:e.to,value:e.value,chain:Jo.chain})}catch(o){console.error(o),mo(new C("Unable to fetch quotes for bridging",o,T.INSUFFICIENT_BALANCE))}}().catch(console.error):Oo({to:Jo.bridgeTx.to,data:Jo.bridgeTx.data,value:Jo.bridgeTx.value,chain:Jo.chain})},onSelect:o=>{o!==go&&(po(null),jo(o))},onAmountChange:Fo}):to&&io&&Mo&&oo?.funding?/*#__PURE__*/t(G,{wallet:Mo,displayName:zo,addressToFund:Ao,isBridging:yo,isErc20Flow:Bo,totalPriceInUsd:Vo,totalPriceInNativeCurrency:Qo,gasPriceInUsd:Xo,gasPriceInNativeCurrency:Yo,chainId:ko.id,chainName:ko.name}):
2
- /*#__PURE__*/o(e,{children:[/*#__PURE__*/t(y,{}),/*#__PURE__*/t(b,{}),/*#__PURE__*/t("div",{style:{marginTop:"1rem"}}),/*#__PURE__*/t(f,{})]})};export{V as AwaitingExternalTransferScreen};
1
+ import{jsxs as e,Fragment as o,jsx as t}from"react/jsx-runtime";import n from"@heroicons/react/24/outline/CheckCircleIcon";import{useState as i,useEffect as r}from"react";import{parseEther as s,createWalletClient as a,custom as c,publicActions as m,createPublicClient as l,http as d,encodeFunctionData as p,formatUnits as u}from"viem";import{RefactorSpacerTop as h,CenteredItemWithGap as g,RefactorSpacerBottom as j}from"../../components/Layouts.mjs";import{BlobbyFooter as f}from"../../components/ModalFooter.mjs";import{CenteredScreenHeader as v}from"../../components/ScreenHeader.mjs";import y from"../../components/embedded-wallets/FundWalletMethodHeader.mjs";import{NeutralSpinner as b}from"../../components/primitives/NeutralSpinner/index.mjs";import{addToDefaultChains as w}from"../../connectors/chains/utils.mjs";import{DEFAULT_SUCCESS_SCREEN_EXTRA_LONG_DURATION_MS as I}from"../../constants.mjs";import{PrivyClientError as C,PrivyErrorCode as T}from"../../errors.mjs";import{usePrivyInternal as S}from"../../hooks/internal-context.mjs";import{usePrivyModal as k}from"../../hooks/modal-context.mjs";import{useGetTokenPrice as N}from"../../hooks/useGetTokenPrice.mjs";import{useWallets as A}from"../../hooks/useWallets.mjs";import{ERC20_TRANSFER_ABI_STUB as E}from"../../lib/erc20/actions/abis/transfer.mjs";import{formatErc20TokenAmount as x}from"../../lib/erc20/formatErc20TokenAmount.mjs";import{getDollarsFromStringFloat as F,sumWeiQuantities as B,getDollarsFromWei as L,getNativeCurrencyFromWei as M}from"../../lib/ethers.mjs";import{toDisplayName as P}from"../../lib/external-wallets/displayHelpers.mjs";import{ON_RAMP_COMPLETE_ANALYTICS_EVENT as R}from"../../lib/funding/analytics.mjs";import{getQuote as H,toGetQuoteInput as U,toEvmTransactionRequestInfoFromQuote as W,useBridgingStatusPolling as _}from"../../lib/funding/reservoir.mjs";import{getBalanceForChains as q}from"../../lib/wallets/actions/getBalanceForChains.mjs";import{getErc20Balance as $}from"../../lib/wallets/actions/getErc20Balance.mjs";import{formatWalletAddress as O}from"../../utils/index.mjs";import{getJsonRpcEndpointFromChain as z}from"../../utils/eth/getPublicClient.mjs";import{ModalScreen as D}from"../index.mjs";import{BridgeNetworkSelectionView as G}from"./BridgeNetworkSelectionView.mjs";import{TransferOrBridgeLoadingScreen as V}from"./TransferOrBridgeLoadingScreen.mjs";import"styled-components";import"../../configuration/context.mjs";import"../../config.mjs";import"../../configuration/defaultClientConfig.mjs";import"../../configuration/login-methods.mjs";import"../../configuration/wallets.mjs";import"../../connectors/chains/index.mjs";import"../../connectors/chains/arbitrum.mjs";import"../../connectors/chains/arbitrumSepolia.mjs";import"../../connectors/chains/avalanche.mjs";import"../../connectors/chains/avalancheFuji.mjs";import"../../connectors/chains/base.mjs";import"../../connectors/chains/baseSepolia.mjs";import"../../connectors/chains/berachainArtio.mjs";import"../../connectors/chains/celo.mjs";import"../../connectors/chains/celoAlfajores.mjs";import"../../connectors/chains/filecoin.mjs";import"../../connectors/chains/filecoinCalibration.mjs";import"../../connectors/chains/garnetHolesky.mjs";import"../../connectors/chains/holesky.mjs";import"../../connectors/chains/linea.mjs";import"../../connectors/chains/lineaTestnet.mjs";import"../../connectors/chains/lukso.mjs";import"../../connectors/chains/mainnet.mjs";import"../../connectors/chains/optimism.mjs";import"../../connectors/chains/optimismSepolia.mjs";import"../../connectors/chains/polygon.mjs";import"../../connectors/chains/polygonAmoy.mjs";import"../../connectors/chains/redstone.mjs";import"../../connectors/chains/sepolia.mjs";import"../../connectors/chains/zora.mjs";import"../../connectors/chains/zoraSepolia.mjs";import"../../connectors/chains/zoraTestnet.mjs";import"../../lib/solana/index.mjs";import"../../theme.mjs";import"tinycolor2";import"../../lib/cybr53.mjs";import"../../svg/protected-by-privy.mjs";import"../../components/ModalHeader.mjs";import"@heroicons/react/24/outline/ArrowLeftIcon";import"@heroicons/react/24/outline/ArrowRightIcon";import"@heroicons/react/24/outline/QuestionMarkCircleIcon";import"@heroicons/react/24/outline/XMarkIcon";import"../../hooks/index.mjs";import"ofetch";import"../../components/PrefetchedImage.mjs";import"../../hooks/useGetSolPrice.mjs";import"../../connectors/get-legacy-injected-providers.mjs";import"../../connectors/is-wallet-installed.mjs";import"../../svg/backpack.mjs";import"../../svg/brave-browser-icon.mjs";import"../../svg/bybit.mjs";import"../../svg/coinbase-wallet.mjs";import"../../svg/cryptocom.mjs";import"../../svg/metamask.mjs";import"../../svg/okx-wallet.mjs";import"../../svg/phantom.mjs";import"../../svg/rabby.mjs";import"../../svg/rainbow.mjs";import"../../svg/safe.mjs";import"../../svg/solflare.mjs";import"../../svg/uniswap.mjs";import"../../svg/universal-profile.mjs";import"../../svg/wallet-connect.mjs";import"../../svg/zerion.mjs";import"@privy-io/js-sdk-core";import"../../components/Button.mjs";import"../../components/Loader.mjs";import"../../components/ui/layout/Row.mjs";import"../../components/ui/typography/ErrorMessage.mjs";import"../../components/ui/typography/LabelSm.mjs";import"../../components/ui/typography/Subtitle.mjs";import"../../components/ui/typography/Title.mjs";import"../../components/ui/wallet/NetworkBalanceCard.mjs";import"@heroicons/react/24/outline/WalletIcon";import"../../components/ui/chips/Chip.mjs";import"../../components/ui/animation/LoadingSkeleton.mjs";import"../../components/ui/typography/Value.mjs";import"../../components/ui/wallet/NetworkIcon.mjs";import"@heroicons/react/24/outline/GlobeAltIcon";import"../../components/ui/icons/Arbitum.mjs";import"../../components/ui/icons/Avalanche.mjs";import"../../components/ui/icons/Base.mjs";import"../../components/ui/icons/Celo.mjs";import"../../components/ui/icons/Linea.mjs";import"../../components/ui/icons/Mainnnet.mjs";import"../../components/ui/icons/Optimism.mjs";import"../../components/ui/icons/Polygon.mjs";import"../../components/ui/icons/Solana.mjs";import"../../components/ui/icons/Zora.mjs";import"../../components/ui/wallet/shared.mjs";import"../../components/ui/wallet/NetworkSelectorPanel.mjs";import"@headlessui/react";import"@heroicons/react/24/outline/ChevronDownIcon";import"./styles.mjs";import"../LinkPasskeyScreen.mjs";import"@heroicons/react/24/outline/ClockIcon";import"@heroicons/react/24/outline/TrashIcon";import"@heroicons/react/24/solid/CheckBadgeIcon";import"@heroicons/react/24/solid/LockClosedIcon";import"../../hooks/privy-context.mjs";import"../../svg/face-id.mjs";import"../../svg/fingerprint.mjs";import"../MfaScreens/StyledComponents.mjs";import"../../components/external-wallets/InjectedWalletIcon.mjs";import"../../components/ui/wallet/Address.mjs";import"@heroicons/react/24/outline/CheckIcon";import"@heroicons/react/24/outline/Square2StackIcon";const Q=()=>{let{rpcConfig:Q,appId:X,closePrivyModal:Y,createAnalyticsEvent:Z}=S(),{navigate:J,setModalData:K,app:ee,data:oe}=k(),{wallets:te}=A(),[ne,ie]=i(!1),[re,se]=i(0n),[ae,ce]=i(!1),[me,le]=i(null),[de,pe]=i(null),[ue,he]=i([]),[ge,je]=i(0),[fe,ve]=i(!1),[ye,be]=i(!1),[we,Ie]=i(!1),[Ce,Te]=i(!1),[Se,ke]=i(),[Ne,Ae]=i();if(!oe?.funding||"ethereum"!==oe.funding.chainType)throw Error("Invalid funding data");let{erc20ContractInfo:Ee,chain:xe,connectedWalletAddress:Fe}=oe.funding,Be=oe.funding.address,Le=oe.funding.erc20Address,[Me,Pe]=i(oe.funding.amount);r((()=>{Le&&!Ee&&le(Error("Unable to fetch token details"))}),[]);let Re=!!Le&&!!Ee,He=Re?BigInt(parseFloat(Me)*10**Ee.decimals):s(Me),Ue=Fe?te.find((({address:e})=>e===Fe)):te[0],[We,_e]=i(null);r((()=>{(async()=>{if(!Ue)return;let e=await Ue.getEthereumProvider();_e(a({account:Ue.address,transport:c(e)}).extend(m))})().catch(console.error)}),[Ue]);let[qe,$e]=i(0n);r((()=>{l({chain:xe,transport:d(z(xe,Q,X))}).getBalance({address:Be}).then($e).catch(console.error)}),[]);let[Oe,ze]=i(0n);r((()=>{Re&&$({chain:xe,address:Be,appId:X,rpcConfig:Q,erc20Address:Le}).then((e=>ze(e.balance))).catch(console.error)}),[]);let{tokenPrice:De}=N(xe.id),[Ge,Ve]=i({to:Be,chain:xe,value:He,data:void 0});r((()=>{(async()=>{let e,o;if(!We||!Ue||fe||we)return;ve(!0);let t=l({chain:Ge.chain,transport:d(z(Ge.chain,Q,X))});if(Re&&!Ge.data)return await t.simulateContract({address:Le,chain:Ge.chain,abi:E,functionName:"transfer",args:[Be,He],account:Ue.address}).catch((e=>{console.warn("Simulated token transfer failed with error, fetching bridge options.",e)}))?(ve(!1),void Ve({to:Le,chain:Ge.chain,data:p({abi:E,functionName:"transfer",args:[Be,He]}),value:"0x0"})):(ve(!1),void ce(!0));try{e=await t.prepareTransactionRequest({account:Ue.address,to:Ge.to,chain:Ge.chain,data:Ge.data,value:BigInt(Ge.value??0)})}catch(e){if(console.error(e),ue.length>1)pe(e.shortMessage??"Something went wrong");else if(ye&&0===ue.length)return void le(new C(`Wallet ${O(Ue.address)} does not have enough funds.`,void 0,T.INSUFFICIENT_BALANCE))}if(!e)return ve(!1),void ce(!0);ve(!1),Ie(!0),ie(!0),se(e.gas);try{await We.switchChain({id:Ge.chain.id})}catch(e){await We.addChain({chain:Ge.chain}),await We.switchChain({id:Ge.chain.id})}try{o=await We.sendTransaction(e)}catch(e){if(console.error(e),"TransactionExecutionError"===e.name)if(ue.length<1){let o=e.shortMessage;(e.shortMessage.includes("rejected the request")||e.details.includes("rejected the request"))&&(o="User rejected the request."),le(new C(o,void 0,T.TRANSACTION_FAILURE))}else pe(e.shortMessage??"Something went wrong")}if(o)return await We.waitForTransactionReceipt({hash:o}),Ie(!1),ye?(ke(o),void Ae("pending")):(Te(!0),void Z({eventName:R,payload:{provider:"external",status:"success",txHash:o,address:Ue.address,chainId:Ge.chain.id,chainType:"ethereum",value:Ge.value?u(BigInt(Ge.value),Ee?.decimals??18):void 0,token:Ee?.symbol??Le??"ETH",destinationAddress:Be,destinationChainId:xe.id,destinationChainType:"ethereum",destinationValue:He?u(He,Ee?.decimals??18):void 0,destinationToken:Ee?.symbol??Le??xe.nativeCurrency.name}}));Ie(!1)})().catch(console.error)}),[We,Ge]),r((()=>{(async()=>{if(!ae||!We||!Ue)return;let e=w(ee.chains).filter((e=>e.id!==xe.id&&!!e.testnet==!!xe.testnet));Re&&e.unshift(xe);let o=await q({chains:e,address:Ue.address,appId:X,rpcConfig:Q}),t=Re?o.filter((e=>e.balance>0n)):o.filter((e=>e.balance>He));if(t.length<1)return void le(new C(`Wallet ${O(Ue.address)} does not have enough funds.`,void 0,T.INSUFFICIENT_BALANCE));t.sort(((e,o)=>Number(o.balance-e.balance)));let n=(await Promise.allSettled(t.map((async e=>({quote:await H({isTestnet:!!xe.testnet,input:U({amount:He.toString(),user:Ue.address,recipient:Be,destinationChainId:xe.id,destinationCurrency:Le,originChainId:e.chain.id})}),...e}))))).filter((e=>"fulfilled"===e.status)).map((e=>e.value));if(n.length<1)return void le(new C(`Wallet ${O(Ue.address)} does not have enough funds.`,void 0,T.INSUFFICIENT_BALANCE));let i=n.map((e=>({bridgeTx:W(e.quote),balance:e.balance,chain:e.chain}))).filter((e=>!!e.bridgeTx));if(i.length>1)return void he(i);let r=i[0];r?(be(!0),Ve({data:r.bridgeTx.data,to:r.bridgeTx.to,value:r.bridgeTx.value,chain:r.chain})):le(new C(`Wallet ${O(Ue.address)} does not have enough funds.`,void 0,T.INSUFFICIENT_BALANCE))})().catch(console.error)}),[ae]),_({transactionHash:Se,wallet:Ue,isTestnet:!!xe.testnet,bridgingStatus:Ne,setBridgingStatus:Ae,onSuccess({transactionHash:e,wallet:o}){be(!1),Te(!0),Z({eventName:R,payload:{provider:"external",status:"success",txHash:e,address:o.address,chainId:Ge.chain.id,chainType:"ethereum",value:Ge.value?u(BigInt(Ge.value),Ee?.decimals??18):void 0,token:Ee?.symbol??Le??"ETH",destinationAddress:Be,destinationChainId:xe.id,destinationChainType:"ethereum",destinationValue:He?u(He,Ee?.decimals??18):void 0,destinationToken:Ee?.symbol??Le??xe.nativeCurrency.name}})},onFailure({error:e}){be(!1),le(e)}}),r((()=>{if(!me)return;let e={error:me,previousScreen:D.FUNDING_TRANSFER_FROM_WALLET_SCREEN};K({funding:oe?.funding,sendTransaction:oe?.sendTransaction,errorModalData:e}),J(D.ERROR_SCREEN,!1)}),[me]);let Qe=Ue?P(Ue.walletClientType,Ue.connectorType,Ue.walletClientType)||"wallet":null,Xe=!Re&&De?F(Me??"0",De):void 0,Ye=Re?re:B([re,He]),Ze=Ye&&De?L(Ye,De):void 0,Je=Ye?M(Ye,"ETH"):void 0,Ke=re&&De?L(re,De):void 0,eo=re?M(re,"ETH"):void 0;if(r((()=>{if(!Ce)return;let e=setTimeout(Y,I);return()=>clearTimeout(e)}),[Ce]),Ce/*#__PURE__*/)return e(o,{children:[/*#__PURE__*/t(y,{}),/*#__PURE__*/t(h,{}),/*#__PURE__*/e(g,{children:[/*#__PURE__*/t(n,{color:"var(--privy-color-success)",width:"64px",height:"64px"}),/*#__PURE__*/t(v,{title:"Success!",description:`You’ve successfully added ${Me} ${Re?Ee.symbol:xe.nativeCurrency.symbol} to your ${ee.name} wallet. It may take a minute before the funds are available to use.`})]}),/*#__PURE__*/t(j,{}),/*#__PURE__*/t(f,{})]});let oo=Re?`${x({amount:Oe,decimals:Ee.decimals})} ${Ee.symbol}`:M(qe,xe.nativeCurrency.symbol,3,!0),to=ue[ge];return ue.length>1&&to?/*#__PURE__*/t(G,{displayName:Qe,configuredFundingChain:xe,formattedBalance:oo,fundingAmount:Me,fundingCurrency:Re?Ee.symbol:xe.nativeCurrency.symbol,fundingAmountInUsd:Xe,options:ue,selectedOption:to,isPreparing:fe,isSubmitting:we,addressToFund:Be,fundingWalletAddress:Ue?.address||"",errorMessage:de,onSubmit:()=>{oe.funding?.amount!==Me?async function(){if(Ue&&to)try{let e=await H({isTestnet:!!xe.testnet,input:U({amount:He.toString(),user:Ue.address,recipient:Be,destinationChainId:xe.id,destinationCurrency:Le,originChainId:to.chain.id})}),o=W(e);if(!o)throw Error("Invalid transaction request");be(!0),Ve({data:o.data,to:o.to,value:o.value,chain:to.chain})}catch(e){console.error(e),le(new C("Unable to fetch quotes for bridging",e,T.INSUFFICIENT_BALANCE))}}().catch(console.error):Ve({to:to.bridgeTx.to,data:to.bridgeTx.data,value:to.bridgeTx.value,chain:to.chain})},onSelect:e=>{e!==ge&&(pe(null),je(e))},onAmountChange:Pe}):ne&&re&&Ue&&oe?.funding?/*#__PURE__*/t(V,{wallet:Ue,displayName:Qe,addressToFund:Be,isBridging:ye,isErc20Flow:Re,totalPriceInUsd:Ze,totalPriceInNativeCurrency:Je,gasPriceInUsd:Ke,gasPriceInNativeCurrency:eo,chainId:xe.id,chainName:xe.name}):
2
+ /*#__PURE__*/e(o,{children:[/*#__PURE__*/t(y,{}),/*#__PURE__*/t(b,{}),/*#__PURE__*/t("div",{style:{marginTop:"1rem"}}),/*#__PURE__*/t(f,{})]})};export{Q as AwaitingExternalTransferScreen};
@@ -1,2 +1,2 @@
1
- import{jsxs as o,Fragment as e,jsx as n}from"react/jsx-runtime";import{ModalScreen as t}from"../index.mjs";import i from"@heroicons/react/24/outline/CheckCircleIcon";import{useRef as r,useState as s,useEffect as m}from"react";import{parseEther as a,formatUnits as c}from"viem";import{RefactorSpacerTop as l,CenteredItemWithGap as p,RefactorSpacerBottom as d}from"../../components/Layouts.mjs";import{BlobbyFooter as u}from"../../components/ModalFooter.mjs";import{CenteredScreenHeader as j}from"../../components/ScreenHeader.mjs";import h from"../../components/embedded-wallets/FundWalletMethodHeader.mjs";import{NeutralSpinner as f}from"../../components/primitives/NeutralSpinner/index.mjs";import{DEFAULT_SUCCESS_SCREEN_EXTRA_LONG_DURATION_MS as g}from"../../constants.mjs";import{PrivyClientError as v,PrivyErrorCode as y}from"../../errors.mjs";import{usePrivyInternal as w}from"../../hooks/internal-context.mjs";import{usePrivyModal as I}from"../../hooks/modal-context.mjs";import{toDisplayName as b}from"../../lib/external-wallets/displayHelpers.mjs";import{ON_RAMP_COMPLETE_ANALYTICS_EVENT as T}from"../../lib/funding/analytics.mjs";import{getQuote as C,toGetQuoteInput as S}from"../../lib/funding/reservoir.mjs";import{RELAY_SOLANA_MAINNET_CLUSTER_CHAIN_ID as A,RELAY_SOLANA_USDC_TOKEN_ID as N,RELAY_SOLANA_NATIVE_CURRENCY_ID as k}from"../../lib/solana/index.mjs";import{usePlugins as E}from"../../plugins/context/PrivyPluginContext.mjs";import{SOLANA_FUNDING_PLUGIN_ID as F}from"../../plugins/solana-funding/id.mjs";import{formatSolanaWalletAddress as x}from"../../utils/index.mjs";import{TransferOrBridgeLoadingScreen as R}from"./TransferOrBridgeLoadingScreen.mjs";import{useSolanaWallets as U}from"../../hooks/solana/useSolanaWallets.mjs";import"styled-components";import"../../configuration/context.mjs";import"../../config.mjs";import"../../configuration/defaultClientConfig.mjs";import"../../configuration/login-methods.mjs";import"../../configuration/wallets.mjs";import"../../connectors/chains/index.mjs";import"../../connectors/chains/arbitrum.mjs";import"../../connectors/chains/arbitrumSepolia.mjs";import"../../connectors/chains/avalanche.mjs";import"../../connectors/chains/avalancheFuji.mjs";import"../../connectors/chains/base.mjs";import"../../connectors/chains/baseSepolia.mjs";import"../../connectors/chains/berachainArtio.mjs";import"../../connectors/chains/celo.mjs";import"../../connectors/chains/celoAlfajores.mjs";import"../../connectors/chains/filecoin.mjs";import"../../connectors/chains/filecoinCalibration.mjs";import"../../connectors/chains/garnetHolesky.mjs";import"../../connectors/chains/holesky.mjs";import"../../connectors/chains/linea.mjs";import"../../connectors/chains/lineaTestnet.mjs";import"../../connectors/chains/lukso.mjs";import"../../connectors/chains/mainnet.mjs";import"../../connectors/chains/optimism.mjs";import"../../connectors/chains/optimismSepolia.mjs";import"../../connectors/chains/polygon.mjs";import"../../connectors/chains/polygonAmoy.mjs";import"../../connectors/chains/redstone.mjs";import"../../connectors/chains/sepolia.mjs";import"../../connectors/chains/zora.mjs";import"../../connectors/chains/zoraSepolia.mjs";import"../../connectors/chains/zoraTestnet.mjs";import"../../connectors/chains/utils.mjs";import"../../theme.mjs";import"tinycolor2";import"../../lib/cybr53.mjs";import"../../svg/protected-by-privy.mjs";import"../../components/ModalHeader.mjs";import"@heroicons/react/24/outline/ArrowLeftIcon";import"@heroicons/react/24/outline/ArrowRightIcon";import"@heroicons/react/24/outline/QuestionMarkCircleIcon";import"@heroicons/react/24/outline/XMarkIcon";import"../../hooks/index.mjs";import"ofetch";import"../../components/PrefetchedImage.mjs";import"../../svg/backpack.mjs";import"../../svg/brave-browser-icon.mjs";import"../../svg/bybit.mjs";import"../../svg/coinbase-wallet.mjs";import"../../svg/cryptocom.mjs";import"../../svg/metamask.mjs";import"../../svg/okx-wallet.mjs";import"../../svg/phantom.mjs";import"../../svg/rabby.mjs";import"../../svg/rainbow.mjs";import"../../svg/safe.mjs";import"../../svg/solflare.mjs";import"../../svg/uniswap.mjs";import"../../svg/universal-profile.mjs";import"../../svg/wallet-connect.mjs";import"../../svg/zerion.mjs";import"../../connectors/get-legacy-injected-providers.mjs";import"../../connectors/is-wallet-installed.mjs";import"../../utils/eth/getPublicClient.mjs";import"../../components/external-wallets/InjectedWalletIcon.mjs";import"@heroicons/react/24/outline/WalletIcon";import"../../components/ui/layout/Row.mjs";import"../../components/ui/typography/LabelSm.mjs";import"../../components/ui/typography/Value.mjs";import"../../components/ui/animation/LoadingSkeleton.mjs";import"../../components/ui/wallet/Address.mjs";import"@heroicons/react/24/outline/CheckIcon";import"@heroicons/react/24/outline/Square2StackIcon";import"../../components/ui/wallet/NetworkIcon.mjs";import"@heroicons/react/24/outline/GlobeAltIcon";import"../../components/ui/icons/Arbitum.mjs";import"../../components/ui/icons/Avalanche.mjs";import"../../components/ui/icons/Base.mjs";import"../../components/ui/icons/Celo.mjs";import"../../components/ui/icons/Linea.mjs";import"../../components/ui/icons/Mainnnet.mjs";import"../../components/ui/icons/Optimism.mjs";import"../../components/ui/icons/Polygon.mjs";import"../../components/ui/icons/Solana.mjs";import"../../components/ui/icons/Zora.mjs";import"../../hooks/useWallets.mjs";function L(){let{closePrivyModal:L,createAnalyticsEvent:_}=w(),{navigate:M,setModalData:P,app:W,data:O}=I(),{wallets:B}=U(),$=r(!1),D=E(),[H,q]=s(!1),[z,G]=s(!1),[Q,V]=s(null);if(!O?.funding||"ethereum"!==O.funding.chainType)throw Error("Invalid funding data");let{amount:X,connectedWalletAddress:Y,chain:Z,cluster:J,isUSDC:K}=O.funding,oo=O.funding.address,eo=O.funding.erc20Address,no=O.funding.isUSDC?"USDC":Z.nativeCurrency.symbol,to=J??{name:"mainnet-beta"},io=Y?B.find((({address:o})=>o===Y)):B[0];if(m((()=>{(async function(){if(!io||!Z||$.current)return;let o=D(F);if(!o)return void V(new v("Unable to solana plugin"));$.current=!0,Z?.testnet&&console.warn("Solana testnets are not supported for bridging");let e=K?1e6*parseFloat(X):a(X),n=await C({isTestnet:!!Z.testnet,input:S({amount:e.toString(),user:io.address,recipient:oo,destinationChainId:Z.id,originChainId:A,originCurrency:K?N:k,destinationCurrency:K?eo:void 0})}).catch(console.error);if(!n)return void V(new v(`Unable to fetch quotes for bridging. Wallet ${x(io.address)} does not have enough funds.`,void 0,y.INSUFFICIENT_BALANCE));let t=await o.createBridgeTransactionFromRelayQuote({quote:n,from:io.address,cluster:to});if(t)try{q(!0);let{connection:o,transaction:i}=t,r=await o.simulateTransaction(i);if(r.value.err)return r.value.logs?.find((o=>/insufficient (lamports|funds)/gi.test(o)))?void V(new v(`Wallet ${x(io?.address)} does not have enough funds. ${n.details.currencyIn.amountFormatted} ${no} are needed to complete the transaction.`,void 0,y.INSUFFICIENT_BALANCE)):(console.error("Transaction failed:",r.value.err),void V(new v("Something went wrong",void 0,y.TRANSACTION_FAILURE)));let s=await io.sendTransaction(i,o),m=await o.confirmTransaction(s);if(m.value.err)return console.error("Transaction failed:",m.value.err),void V(new v("Something went wrong",void 0,y.TRANSACTION_FAILURE));_({eventName:T,payload:{provider:"external",status:"success",txHash:s,address:io.address,chainType:"solana",clusterName:to.name,token:"SOL",destinationAddress:oo,destinationChainId:Z.id,destinationChainType:"ethereum",destinationValue:c(BigInt(e),K?6:18),destinationToken:K?"USDC":"ETH"}}),G(!0)}catch(o){if(console.error(o),/user rejected the request/gi.test(o.message||""))return void V(new v("Transaction was rejected by the user",void 0,y.TRANSACTION_FAILURE));V(new v("Something went wrong",void 0,y.TRANSACTION_FAILURE))}else V(new v(`Unable to select bridge option from quotes. Wallet ${x(io.address)} does not have enough funds.`,void 0,y.INSUFFICIENT_BALANCE))})().catch(console.error)}),[]),m((()=>{if(!z)return;let o=setTimeout(L,g);return()=>clearTimeout(o)}),[z]),m((()=>{if(!Q)return;let o={error:Q,previousScreen:t.FUNDING_TRANSFER_FROM_WALLET_SCREEN};P({funding:O?.funding,sendTransaction:O?.sendTransaction,errorModalData:o}),M(t.ERROR_SCREEN,!1)}),[Q]),z/*#__PURE__*/)return o(e,{children:[/*#__PURE__*/n(h,{}),/*#__PURE__*/n(l,{}),/*#__PURE__*/o(p,{children:[/*#__PURE__*/n(i,{color:"var(--privy-color-success)",width:"64px",height:"64px"}),/*#__PURE__*/n(j,{title:"Success!",description:`You’ve successfully added ${X} ${no} to your ${W.name} wallet. It may take a minute before the funds are available to use.`})]}),/*#__PURE__*/n(d,{}),/*#__PURE__*/n(u,{})]});if(H&&io){let o=io?b(io.walletClientType,io.connectorType,io.walletClientType)||"wallet":null;/*#__PURE__*/return n(R,{wallet:io,displayName:o,addressToFund:oo,isBridging:H,isErc20Flow:!1,chainId:Z.id,chainName:Z.name,totalPriceInUsd:void 0,totalPriceInNativeCurrency:void 0,gasPriceInUsd:void 0,gasPriceInNativeCurrency:void 0})}/*#__PURE__*/
2
- return o(e,{children:[/*#__PURE__*/n(h,{}),/*#__PURE__*/n(f,{}),/*#__PURE__*/n("div",{style:{marginTop:"1rem"}}),/*#__PURE__*/n(u,{})]})}export{L as AwaitingSolToEvmBridgingScreen};
1
+ import{jsxs as o,Fragment as e,jsx as n}from"react/jsx-runtime";import{ModalScreen as t}from"../index.mjs";import i from"@heroicons/react/24/outline/CheckCircleIcon";import{useRef as r,useState as s,useEffect as a}from"react";import{parseEther as m}from"viem";import{RefactorSpacerTop as c,CenteredItemWithGap as l,RefactorSpacerBottom as p}from"../../components/Layouts.mjs";import{BlobbyFooter as d}from"../../components/ModalFooter.mjs";import{CenteredScreenHeader as u}from"../../components/ScreenHeader.mjs";import j from"../../components/embedded-wallets/FundWalletMethodHeader.mjs";import{NeutralSpinner as h}from"../../components/primitives/NeutralSpinner/index.mjs";import{DEFAULT_SUCCESS_SCREEN_EXTRA_LONG_DURATION_MS as g}from"../../constants.mjs";import{PrivyClientError as f,PrivyErrorCode as v}from"../../errors.mjs";import{usePrivyInternal as y}from"../../hooks/internal-context.mjs";import{usePrivyModal as w}from"../../hooks/modal-context.mjs";import{toDisplayName as I}from"../../lib/external-wallets/displayHelpers.mjs";import{ON_RAMP_COMPLETE_ANALYTICS_EVENT as b}from"../../lib/funding/analytics.mjs";import{getQuote as T,toGetQuoteInput as S,useBridgingStatusPolling as C}from"../../lib/funding/reservoir.mjs";import{RELAY_SOLANA_MAINNET_CLUSTER_CHAIN_ID as A,RELAY_SOLANA_USDC_TOKEN_ID as N,RELAY_SOLANA_NATIVE_CURRENCY_ID as k}from"../../lib/solana/index.mjs";import{usePlugins as F}from"../../plugins/context/PrivyPluginContext.mjs";import{SOLANA_FUNDING_PLUGIN_ID as E}from"../../plugins/solana-funding/id.mjs";import{formatSolanaWalletAddress as x}from"../../utils/index.mjs";import{TransferOrBridgeLoadingScreen as R}from"./TransferOrBridgeLoadingScreen.mjs";import{useSolanaWallets as U}from"../../hooks/solana/useSolanaWallets.mjs";import"styled-components";import"../../configuration/context.mjs";import"../../config.mjs";import"../../configuration/defaultClientConfig.mjs";import"../../configuration/login-methods.mjs";import"../../configuration/wallets.mjs";import"../../connectors/chains/index.mjs";import"../../connectors/chains/arbitrum.mjs";import"../../connectors/chains/arbitrumSepolia.mjs";import"../../connectors/chains/avalanche.mjs";import"../../connectors/chains/avalancheFuji.mjs";import"../../connectors/chains/base.mjs";import"../../connectors/chains/baseSepolia.mjs";import"../../connectors/chains/berachainArtio.mjs";import"../../connectors/chains/celo.mjs";import"../../connectors/chains/celoAlfajores.mjs";import"../../connectors/chains/filecoin.mjs";import"../../connectors/chains/filecoinCalibration.mjs";import"../../connectors/chains/garnetHolesky.mjs";import"../../connectors/chains/holesky.mjs";import"../../connectors/chains/linea.mjs";import"../../connectors/chains/lineaTestnet.mjs";import"../../connectors/chains/lukso.mjs";import"../../connectors/chains/mainnet.mjs";import"../../connectors/chains/optimism.mjs";import"../../connectors/chains/optimismSepolia.mjs";import"../../connectors/chains/polygon.mjs";import"../../connectors/chains/polygonAmoy.mjs";import"../../connectors/chains/redstone.mjs";import"../../connectors/chains/sepolia.mjs";import"../../connectors/chains/zora.mjs";import"../../connectors/chains/zoraSepolia.mjs";import"../../connectors/chains/zoraTestnet.mjs";import"../../connectors/chains/utils.mjs";import"../../theme.mjs";import"tinycolor2";import"../../lib/cybr53.mjs";import"../../svg/protected-by-privy.mjs";import"../../components/ModalHeader.mjs";import"@heroicons/react/24/outline/ArrowLeftIcon";import"@heroicons/react/24/outline/ArrowRightIcon";import"@heroicons/react/24/outline/QuestionMarkCircleIcon";import"@heroicons/react/24/outline/XMarkIcon";import"../../hooks/index.mjs";import"ofetch";import"../../components/PrefetchedImage.mjs";import"../../svg/backpack.mjs";import"../../svg/brave-browser-icon.mjs";import"../../svg/bybit.mjs";import"../../svg/coinbase-wallet.mjs";import"../../svg/cryptocom.mjs";import"../../svg/metamask.mjs";import"../../svg/okx-wallet.mjs";import"../../svg/phantom.mjs";import"../../svg/rabby.mjs";import"../../svg/rainbow.mjs";import"../../svg/safe.mjs";import"../../svg/solflare.mjs";import"../../svg/uniswap.mjs";import"../../svg/universal-profile.mjs";import"../../svg/wallet-connect.mjs";import"../../svg/zerion.mjs";import"../../connectors/get-legacy-injected-providers.mjs";import"../../connectors/is-wallet-installed.mjs";import"../../utils/eth/getPublicClient.mjs";import"../../components/external-wallets/InjectedWalletIcon.mjs";import"@heroicons/react/24/outline/WalletIcon";import"../../components/ui/layout/Row.mjs";import"../../components/ui/typography/LabelSm.mjs";import"../../components/ui/typography/Value.mjs";import"../../components/ui/animation/LoadingSkeleton.mjs";import"../../components/ui/wallet/Address.mjs";import"@heroicons/react/24/outline/CheckIcon";import"@heroicons/react/24/outline/Square2StackIcon";import"../../components/ui/wallet/NetworkIcon.mjs";import"@heroicons/react/24/outline/GlobeAltIcon";import"../../components/ui/icons/Arbitum.mjs";import"../../components/ui/icons/Avalanche.mjs";import"../../components/ui/icons/Base.mjs";import"../../components/ui/icons/Celo.mjs";import"../../components/ui/icons/Linea.mjs";import"../../components/ui/icons/Mainnnet.mjs";import"../../components/ui/icons/Optimism.mjs";import"../../components/ui/icons/Polygon.mjs";import"../../components/ui/icons/Solana.mjs";import"../../components/ui/icons/Zora.mjs";import"../../hooks/useWallets.mjs";function L(){let{closePrivyModal:L,createAnalyticsEvent:_}=y(),{navigate:M,setModalData:P,app:W,data:H}=w(),{wallets:O}=U(),B=r(!1),$=F(),[D,q]=s(!1),[z,G]=s(!1),[Q,V]=s(null),[X,Y]=s(),[Z,J]=s();if(!H?.funding||"ethereum"!==H.funding.chainType)throw Error("Invalid funding data");let{amount:K,connectedWalletAddress:oo,chain:eo,cluster:no,isUSDC:to}=H.funding,io=H.funding.address,ro=H.funding.erc20Address,so=H.funding.isUSDC?"USDC":eo.nativeCurrency.symbol,ao=no??{name:"mainnet-beta"},mo=oo?O.find((({address:o})=>o===oo)):O[0];if(a((()=>{(async function(){if(!mo||!eo||B.current)return;let o=$(E);if(!o)return void V(new f("Unable to solana plugin"));B.current=!0,eo?.testnet&&console.warn("Solana testnets are not supported for bridging");let e=to?1e6*parseFloat(K):m(K),n=await T({isTestnet:!!eo.testnet,input:S({amount:e.toString(),user:mo.address,recipient:io,destinationChainId:eo.id,originChainId:A,originCurrency:to?N:k,destinationCurrency:to?ro:void 0})}).catch(console.error);if(!n)return void V(new f(`Unable to fetch quotes for bridging. Wallet ${x(mo.address)} does not have enough funds.`,void 0,v.INSUFFICIENT_BALANCE));let t=await o.createBridgeTransactionFromRelayQuote({quote:n,from:mo.address,cluster:ao});if(t)try{q(!0);let{connection:o,transaction:e}=t,i=await o.simulateTransaction(e);if(i.value.err)return i.value.logs?.find((o=>/insufficient (lamports|funds)/gi.test(o)))?void V(new f(`Wallet ${x(mo?.address)} does not have enough funds. ${n.details.currencyIn.amountFormatted} ${so} are needed to complete the transaction.`,void 0,v.INSUFFICIENT_BALANCE)):(console.error("Transaction failed:",i.value.err),void V(new f("Something went wrong",void 0,v.TRANSACTION_FAILURE)));let r=await mo.sendTransaction(e,o),s=await o.confirmTransaction(r);if(s.value.err)return console.error("Transaction failed:",s.value.err),void V(new f("Something went wrong",void 0,v.TRANSACTION_FAILURE));Y(r),J("pending")}catch(o){if(console.error(o),/user rejected the request/gi.test(o.message||""))return void V(new f("Transaction was rejected by the user",void 0,v.TRANSACTION_FAILURE));V(new f("Something went wrong",void 0,v.TRANSACTION_FAILURE))}else V(new f(`Unable to select bridge option from quotes. Wallet ${x(mo.address)} does not have enough funds.`,void 0,v.INSUFFICIENT_BALANCE))})().catch(console.error)}),[]),C({transactionHash:X,wallet:mo,isTestnet:!1,bridgingStatus:Z,setBridgingStatus:J,onSuccess({transactionHash:o,wallet:e}){q(!1),G(!0),_({eventName:b,payload:{provider:"external",status:"success",txHash:o,address:e.address,chainType:"solana",clusterName:ao.name,token:"SOL",destinationAddress:io,destinationChainId:eo.id,destinationChainType:"ethereum",destinationValue:K,destinationToken:to?"USDC":"ETH"}})},onFailure({error:o}){q(!1),V(o)}}),a((()=>{if(!z)return;let o=setTimeout(L,g);return()=>clearTimeout(o)}),[z]),a((()=>{if(!Q)return;let o={error:Q,previousScreen:t.FUNDING_TRANSFER_FROM_WALLET_SCREEN};P({funding:H?.funding,sendTransaction:H?.sendTransaction,errorModalData:o}),M(t.ERROR_SCREEN,!1)}),[Q]),z/*#__PURE__*/)return o(e,{children:[/*#__PURE__*/n(j,{}),/*#__PURE__*/n(c,{}),/*#__PURE__*/o(l,{children:[/*#__PURE__*/n(i,{color:"var(--privy-color-success)",width:"64px",height:"64px"}),/*#__PURE__*/n(u,{title:"Success!",description:`You’ve successfully added ${K} ${so} to your ${W.name} wallet. It may take a minute before the funds are available to use.`})]}),/*#__PURE__*/n(p,{}),/*#__PURE__*/n(d,{})]});if(D&&mo){let o=mo?I(mo.walletClientType,mo.connectorType,mo.walletClientType)||"wallet":null;/*#__PURE__*/return n(R,{wallet:mo,displayName:o,addressToFund:io,isBridging:D,isErc20Flow:!1,chainId:eo.id,chainName:eo.name,totalPriceInUsd:void 0,totalPriceInNativeCurrency:void 0,gasPriceInUsd:void 0,gasPriceInNativeCurrency:void 0})}/*#__PURE__*/
2
+ return o(e,{children:[/*#__PURE__*/n(j,{}),/*#__PURE__*/n(h,{}),/*#__PURE__*/n("div",{style:{marginTop:"1rem"}}),/*#__PURE__*/n(d,{})]})}export{L as AwaitingSolToEvmBridgingScreen};
@@ -1 +1 @@
1
- import{jsx as o,jsxs as e,Fragment as n}from"react/jsx-runtime";import i from"@heroicons/react/24/outline/ArrowRightEndOnRectangleIcon";import r from"@heroicons/react/24/outline/CheckCircleIcon";import t from"@heroicons/react/24/outline/ClockIcon";import s from"@heroicons/react/24/outline/ShieldCheckIcon";import{useState as c,useMemo as m}from"react";import{styled as a}from"styled-components";import{PrimaryButton as l}from"../../components/Button.mjs";import{Loader as p}from"../../components/Loader.mjs";import{ModalFooter as d}from"../../components/ModalFooter.mjs";import{ModalHeader as h}from"../../components/ModalHeader.mjs";import{usePrivyInternal as u}from"../../hooks/internal-context.mjs";import{usePrivyModal as y}from"../../hooks/modal-context.mjs";import{usePrivyContext as f}from"../../hooks/privy-context.mjs";import{useMfaEnrollment as j}from"../../hooks/useMfaEnrollment.mjs";import{FaceId as k}from"../../svg/face-id.mjs";import{FingerPrint as g}from"../../svg/fingerprint.mjs";import{ErrorScreenView as C}from"../ErrorScreen.mjs";import{DoubleIconWrapper as w}from"../LinkPasskeyScreen.mjs";import{AppLogoContainer as b,Title as v,List as I,ListItem as x,ListItemIcon as S,IconWrapper as P,SubTitle as A,BottomSection as E}from"./StyledComponents.mjs";import"../../configuration/context.mjs";import"../../config.mjs";import"../../configuration/defaultClientConfig.mjs";import"../../constants.mjs";import"../../configuration/login-methods.mjs";import"../../configuration/wallets.mjs";import"../../connectors/chains/index.mjs";import"../../connectors/chains/arbitrum.mjs";import"../../connectors/chains/arbitrumSepolia.mjs";import"../../connectors/chains/avalanche.mjs";import"../../connectors/chains/avalancheFuji.mjs";import"../../connectors/chains/base.mjs";import"../../connectors/chains/baseSepolia.mjs";import"../../connectors/chains/berachainArtio.mjs";import"../../connectors/chains/celo.mjs";import"../../connectors/chains/celoAlfajores.mjs";import"../../connectors/chains/filecoin.mjs";import"../../connectors/chains/filecoinCalibration.mjs";import"../../connectors/chains/garnetHolesky.mjs";import"../../connectors/chains/holesky.mjs";import"../../connectors/chains/linea.mjs";import"../../connectors/chains/lineaTestnet.mjs";import"../../connectors/chains/lukso.mjs";import"../../connectors/chains/mainnet.mjs";import"../../connectors/chains/optimism.mjs";import"../../connectors/chains/optimismSepolia.mjs";import"../../connectors/chains/polygon.mjs";import"../../connectors/chains/polygonAmoy.mjs";import"../../connectors/chains/redstone.mjs";import"../../connectors/chains/sepolia.mjs";import"../../connectors/chains/zora.mjs";import"../../connectors/chains/zoraSepolia.mjs";import"../../connectors/chains/zoraTestnet.mjs";import"../../connectors/chains/utils.mjs";import"../../lib/solana/index.mjs";import"../../theme.mjs";import"tinycolor2";import"../../lib/cybr53.mjs";import"../../svg/protected-by-privy.mjs";import"@heroicons/react/24/outline/ArrowLeftIcon";import"@heroicons/react/24/outline/ArrowRightIcon";import"@heroicons/react/24/outline/QuestionMarkCircleIcon";import"@heroicons/react/24/outline/XMarkIcon";import"../../hooks/index.mjs";import"../../components/PrefetchedImage.mjs";import"../index.mjs";import"@heroicons/react/24/outline/ExclamationTriangleIcon";import"@heroicons/react/24/outline/PhoneIcon";import"../../components/CircleBorder.mjs";import"../../components/layout/StackedContainer.mjs";import"../../embedded-wallets/errors.mjs";import"../../embedded-wallets/types.mjs";import"../../errors.mjs";import"ofetch";import"../../hooks/captcha-context.mjs";import"../../utils/index.mjs";import"../../connectors/get-legacy-injected-providers.mjs";import"../../connectors/is-wallet-installed.mjs";import"../../utils/eth/getPublicClient.mjs";import"viem";import"../../svg/lock-closed.mjs";import"@heroicons/react/24/outline/TrashIcon";import"@heroicons/react/24/solid/CheckBadgeIcon";import"@heroicons/react/24/solid/LockClosedIcon";const W=({onComplete:e,onClose:n,onReset:i})=>{let{user:r}=f(),{data:t}=y(),{initLinkWithPasskey:s,linkWithPasskey:a}=u(),{initEnrollmentWithPasskey:l,submitEnrollmentWithPasskey:p}=j(),[d,h]=c(!1),[k,g]=c(!1),[w,b]=c(!1),[v,I]=c(null),x=m((()=>r?.linkedAccounts.filter((o=>"passkey"===o.type))??[]),[r]),S=()=>{t?.mfaEnrollmentFlow?.onSuccess(),e()},P=async o=>{h(!0);try{await l(),await p({credentialIds:o},{removeForLogin:t?.mfaEnrollmentFlow?.shouldUnlinkOnUnenrollMfa}),b(!0)}catch(o){I(o)}finally{h(!1)}},A=async()=>{g(!0),I(null);try{await s();let o=await a(),e=o?.linkedAccounts.filter((o=>"passkey"===o.type)).map((o=>o.credentialId))??[];await P(e)}catch(o){I(o)}finally{g(!1)}};return 0===x.length||k?/*#__PURE__*/o(F,{onReset:i,onClose:n,onClick:A,isCreating:k}):w?/*#__PURE__*/o(B,{onClick:S,onClose:S}):v?/*#__PURE__*/o(C,{error:v,backFn:()=>I(null),onClick:()=>I(null)}):/*#__PURE__*/o(T,{passkeys:x,isSubmitting:d,isCreating:k,onReset:i,onClose:n,onSubmitEnrollment:()=>P(x.map((o=>o.credentialId))),onAddPasskey:A})};let F=({onReset:r,onClose:c,onClick:m,isCreating:a})=>/*#__PURE__*/e(n,{children:[/*#__PURE__*/o(h,{backFn:r,onClose:c},"header"),/*#__PURE__*/o(b,{children:/*#__PURE__*/e(w,{children:[/*#__PURE__*/o(k,{}),/*#__PURE__*/o(g,{})]})}),/*#__PURE__*/o(v,{children:"Set up passkey verification"}),/*#__PURE__*/e(I,{children:[/*#__PURE__*/e(x,{children:[/*#__PURE__*/o(S,{children:/*#__PURE__*/o(s,{})}),"Verify with Touch ID, Face ID, PIN, or hardware key"]}),/*#__PURE__*/e(x,{children:[/*#__PURE__*/o(S,{children:/*#__PURE__*/o(t,{})}),"Takes seconds to set up and use"]}),/*#__PURE__*/e(x,{children:[/*#__PURE__*/o(S,{children:/*#__PURE__*/o(i,{})}),"Use your passkey to verify transactions and login to your account"]})]}),/*#__PURE__*/o(l,{style:{marginTop:"2.25rem"},onClick:m,loading:a,children:"Add a new passkey"}),/*#__PURE__*/o(d,{})]}),T=({onReset:i,onClose:r,onAddPasskey:t,onSubmitEnrollment:s,passkeys:m,isSubmitting:a,isCreating:u})=>{let[y,f]=c(!1),j=y?m.length:m.length>3?2:3;/*#__PURE__*/return e(n,{children:[/*#__PURE__*/o(h,{backFn:y?()=>f(!1):i,onClose:r},"header"),!y&&/*#__PURE__*/o(b,{children:/*#__PURE__*/e(w,{children:[/*#__PURE__*/o(k,{}),/*#__PURE__*/o(g,{})]})}),/*#__PURE__*/o(v,{children:"Enable your passkeys for verification"}),/*#__PURE__*/e(I,{children:[m.slice(0,j).map((n=>/*#__PURE__*/e(L,{children:[/*#__PURE__*/o(N,{children:z(n)}),/*#__PURE__*/e(R,{children:["Last used: ",n.latestVerifiedAt?.toLocaleString()]})]},n.credentialId))),!y&&m.length>3&&/*#__PURE__*/o(M,{onClick:()=>f(!0),children:"View All"})]}),/*#__PURE__*/o(l,{style:{marginTop:"1.5rem"},onClick:s,loading:a,children:"Enable passkeys"}),m.length<5&&/*#__PURE__*/o(M,{style:{marginTop:"0.5rem"},onClick:t,disabled:u,children:u?/*#__PURE__*/o(p,{style:{height:"1rem",width:"1rem",borderWidth:2}}):"Add new passkey"}),/*#__PURE__*/o(d,{})]})},B=({onClick:i,onClose:t})=>/*#__PURE__*/e(n,{children:[/*#__PURE__*/o(h,{onClose:t},"header"),/*#__PURE__*/o(P,{style:{marginBottom:"1.5rem"},children:/*#__PURE__*/o(r,{})}),/*#__PURE__*/o(v,{children:"Passkey verification added"}),/*#__PURE__*/o(A,{children:"From now on, you'll use the passkey whenever you use your Privy wallet."}),/*#__PURE__*/o(E,{children:/*#__PURE__*/o(l,{onClick:i,children:"Done"})}),/*#__PURE__*/o(d,{})]}),L=/*#__PURE__*/a.div.withConfig({displayName:"PasskeyItem",componentId:"sc-f71dd8ba-0"})(["&&{padding:0.75rem 1rem;text-align:left;border-radius:0.5rem;border:1px solid var(--privy-color-foreground-4);width:100%;}"]),N=/*#__PURE__*/a.div.withConfig({displayName:"PasskeyItemTitle",componentId:"sc-f71dd8ba-1"})(["font-size:0.875rem;line-height:1.375rem;font-weight:500;color:var(--privy-color-foreground-1);"]),R=/*#__PURE__*/a.div.withConfig({displayName:"PasskeyItemSubtitle",componentId:"sc-f71dd8ba-2"})(["font-size:0.75rem;font-weight:400;line-height:1.125rem;color:var(--privy-color-foreground-2);"]),z=o=>o.authenticatorName?o.createdWithBrowser?`${o.authenticatorName} on ${o.createdWithBrowser}`:o.authenticatorName:o.createdWithBrowser?o.createdWithOs?`${o.createdWithBrowser} on ${o.createdWithOs}`:`${o.createdWithBrowser}`:"Unknown device";const M=/*#__PURE__*/a.button.withConfig({displayName:"StyledLink",componentId:"sc-f71dd8ba-3"})(["&&{width:100%;font-size:0.875rem;line-height:1rem;@media (min-width:440px){font-size:14px;}display:flex;gap:12px;justify-content:center;padding:0.75rem 1rem;background-color:var(--privy-color-background);transition:background-color 200ms ease;color:var(--privy-color-accent);:focus{outline:none;box-shadow:none;}}"]);export{W as EnrollPasskey,M as StyledLink};
1
+ import{jsx as o,jsxs as e,Fragment as n}from"react/jsx-runtime";import i from"@heroicons/react/24/outline/ArrowRightEndOnRectangleIcon";import r from"@heroicons/react/24/outline/CheckCircleIcon";import t from"@heroicons/react/24/outline/ClockIcon";import s from"@heroicons/react/24/outline/ShieldCheckIcon";import{useState as c,useMemo as m}from"react";import{styled as a}from"styled-components";import{PrimaryButton as l}from"../../components/Button.mjs";import{Loader as p}from"../../components/Loader.mjs";import{ModalFooter as d}from"../../components/ModalFooter.mjs";import{ModalHeader as h}from"../../components/ModalHeader.mjs";import{usePrivyInternal as u}from"../../hooks/internal-context.mjs";import{usePrivyModal as f}from"../../hooks/modal-context.mjs";import{usePrivyContext as j}from"../../hooks/privy-context.mjs";import{useMfaEnrollment as y}from"../../hooks/useMfaEnrollment.mjs";import{FaceId as k}from"../../svg/face-id.mjs";import{FingerPrint as g}from"../../svg/fingerprint.mjs";import{ErrorScreenView as C}from"../ErrorScreen.mjs";import{DoubleIconWrapper as b}from"../LinkPasskeyScreen.mjs";import{AppLogoContainer as w,Title as v,List as I,ListItem as x,ListItemIcon as S,IconWrapper as P,SubTitle as A,BottomSection as E}from"./StyledComponents.mjs";import"../../configuration/context.mjs";import"../../config.mjs";import"../../configuration/defaultClientConfig.mjs";import"../../constants.mjs";import"../../configuration/login-methods.mjs";import"../../configuration/wallets.mjs";import"../../connectors/chains/index.mjs";import"../../connectors/chains/arbitrum.mjs";import"../../connectors/chains/arbitrumSepolia.mjs";import"../../connectors/chains/avalanche.mjs";import"../../connectors/chains/avalancheFuji.mjs";import"../../connectors/chains/base.mjs";import"../../connectors/chains/baseSepolia.mjs";import"../../connectors/chains/berachainArtio.mjs";import"../../connectors/chains/celo.mjs";import"../../connectors/chains/celoAlfajores.mjs";import"../../connectors/chains/filecoin.mjs";import"../../connectors/chains/filecoinCalibration.mjs";import"../../connectors/chains/garnetHolesky.mjs";import"../../connectors/chains/holesky.mjs";import"../../connectors/chains/linea.mjs";import"../../connectors/chains/lineaTestnet.mjs";import"../../connectors/chains/lukso.mjs";import"../../connectors/chains/mainnet.mjs";import"../../connectors/chains/optimism.mjs";import"../../connectors/chains/optimismSepolia.mjs";import"../../connectors/chains/polygon.mjs";import"../../connectors/chains/polygonAmoy.mjs";import"../../connectors/chains/redstone.mjs";import"../../connectors/chains/sepolia.mjs";import"../../connectors/chains/zora.mjs";import"../../connectors/chains/zoraSepolia.mjs";import"../../connectors/chains/zoraTestnet.mjs";import"../../connectors/chains/utils.mjs";import"../../lib/solana/index.mjs";import"../../theme.mjs";import"tinycolor2";import"../../lib/cybr53.mjs";import"../../svg/protected-by-privy.mjs";import"@heroicons/react/24/outline/ArrowLeftIcon";import"@heroicons/react/24/outline/ArrowRightIcon";import"@heroicons/react/24/outline/QuestionMarkCircleIcon";import"@heroicons/react/24/outline/XMarkIcon";import"../../hooks/index.mjs";import"../../components/PrefetchedImage.mjs";import"../index.mjs";import"@heroicons/react/24/outline/ExclamationTriangleIcon";import"@heroicons/react/24/outline/PhoneIcon";import"../../components/CircleBorder.mjs";import"../../components/layout/StackedContainer.mjs";import"../../embedded-wallets/errors.mjs";import"../../embedded-wallets/types.mjs";import"../../errors.mjs";import"ofetch";import"../../hooks/captcha-context.mjs";import"../../utils/index.mjs";import"../../connectors/get-legacy-injected-providers.mjs";import"../../connectors/is-wallet-installed.mjs";import"../../utils/eth/getPublicClient.mjs";import"viem";import"../../lib/funding/reservoir.mjs";import"../../svg/lock-closed.mjs";import"@heroicons/react/24/outline/TrashIcon";import"@heroicons/react/24/solid/CheckBadgeIcon";import"@heroicons/react/24/solid/LockClosedIcon";const W=({appName:e,onComplete:n,onClose:i,onReset:r})=>{let{user:t}=j(),{data:s}=f(),{initLinkWithPasskey:a,linkWithPasskey:l}=u(),{initEnrollmentWithPasskey:p,submitEnrollmentWithPasskey:d}=y(),[h,k]=c(!1),[g,b]=c(!1),[w,v]=c(!1),[I,x]=c(null),S=m((()=>t?.linkedAccounts.filter((o=>"passkey"===o.type))??[]),[t]),P=()=>{s?.mfaEnrollmentFlow?.onSuccess(),n()},A=async o=>{k(!0);try{await p(),await d({credentialIds:o},{removeForLogin:s?.mfaEnrollmentFlow?.shouldUnlinkOnUnenrollMfa}),v(!0)}catch(o){x(o)}finally{k(!1)}},E=async()=>{b(!0),x(null);try{await a();let o=await l(),e=o?.linkedAccounts.filter((o=>"passkey"===o.type)).map((o=>o.credentialId))??[];await A(e)}catch(o){x(o)}finally{b(!1)}};return 0===S.length||g?/*#__PURE__*/o(N,{onReset:r,onClose:i,onClick:E,isCreating:g}):w?/*#__PURE__*/o(T,{appName:e,onClick:P,onClose:P}):I?/*#__PURE__*/o(C,{error:I,backFn:()=>x(null),onClick:()=>x(null)}):/*#__PURE__*/o(F,{passkeys:S,isSubmitting:h,isCreating:g,onReset:r,onClose:i,onSubmitEnrollment:()=>A(S.map((o=>o.credentialId))),onAddPasskey:E})};let N=({onReset:r,onClose:c,onClick:m,isCreating:a})=>/*#__PURE__*/e(n,{children:[/*#__PURE__*/o(h,{backFn:r,onClose:c},"header"),/*#__PURE__*/o(w,{children:/*#__PURE__*/e(b,{children:[/*#__PURE__*/o(k,{}),/*#__PURE__*/o(g,{})]})}),/*#__PURE__*/o(v,{children:"Set up passkey verification"}),/*#__PURE__*/e(I,{children:[/*#__PURE__*/e(x,{children:[/*#__PURE__*/o(S,{children:/*#__PURE__*/o(s,{})}),"Verify with Touch ID, Face ID, PIN, or hardware key"]}),/*#__PURE__*/e(x,{children:[/*#__PURE__*/o(S,{children:/*#__PURE__*/o(t,{})}),"Takes seconds to set up and use"]}),/*#__PURE__*/e(x,{children:[/*#__PURE__*/o(S,{children:/*#__PURE__*/o(i,{})}),"Use your passkey to verify transactions and login to your account"]})]}),/*#__PURE__*/o(l,{style:{marginTop:"2.25rem"},onClick:m,loading:a,children:"Add a new passkey"}),/*#__PURE__*/o(d,{})]}),F=({onReset:i,onClose:r,onAddPasskey:t,onSubmitEnrollment:s,passkeys:m,isSubmitting:a,isCreating:u})=>{let[f,j]=c(!1),y=f?m.length:m.length>3?2:3;/*#__PURE__*/return e(n,{children:[/*#__PURE__*/o(h,{backFn:f?()=>j(!1):i,onClose:r},"header"),!f&&/*#__PURE__*/o(w,{children:/*#__PURE__*/e(b,{children:[/*#__PURE__*/o(k,{}),/*#__PURE__*/o(g,{})]})}),/*#__PURE__*/o(v,{children:"Enable your passkeys for verification"}),/*#__PURE__*/e(I,{children:[m.slice(0,y).map((n=>/*#__PURE__*/e(B,{children:[/*#__PURE__*/o(L,{children:z(n)}),/*#__PURE__*/e(R,{children:["Last used: ",n.latestVerifiedAt?.toLocaleString()]})]},n.credentialId))),!f&&m.length>3&&/*#__PURE__*/o(M,{onClick:()=>j(!0),children:"View All"})]}),/*#__PURE__*/o(l,{style:{marginTop:"1.5rem"},onClick:s,loading:a,children:"Enable passkeys"}),m.length<5&&/*#__PURE__*/o(M,{style:{marginTop:"0.5rem"},onClick:t,disabled:u,children:u?/*#__PURE__*/o(p,{style:{height:"1rem",width:"1rem",borderWidth:2}}):"Add new passkey"}),/*#__PURE__*/o(d,{})]})},T=({appName:i,onClick:t,onClose:s})=>/*#__PURE__*/e(n,{children:[/*#__PURE__*/o(h,{onClose:s},"header"),/*#__PURE__*/o(P,{style:{marginBottom:"1.5rem"},children:/*#__PURE__*/o(r,{})}),/*#__PURE__*/o(v,{children:"Passkey verification added"}),/*#__PURE__*/e(A,{children:["From now on, you'll use the passkey whenever you use your ",i," wallet."]}),/*#__PURE__*/o(E,{children:/*#__PURE__*/o(l,{onClick:t,children:"Done"})}),/*#__PURE__*/o(d,{})]}),B=/*#__PURE__*/a.div.withConfig({displayName:"PasskeyItem",componentId:"sc-d5b2bf9c-0"})(["&&{padding:0.75rem 1rem;text-align:left;border-radius:0.5rem;border:1px solid var(--privy-color-foreground-4);width:100%;}"]),L=/*#__PURE__*/a.div.withConfig({displayName:"PasskeyItemTitle",componentId:"sc-d5b2bf9c-1"})(["font-size:0.875rem;line-height:1.375rem;font-weight:500;color:var(--privy-color-foreground-1);"]),R=/*#__PURE__*/a.div.withConfig({displayName:"PasskeyItemSubtitle",componentId:"sc-d5b2bf9c-2"})(["font-size:0.75rem;font-weight:400;line-height:1.125rem;color:var(--privy-color-foreground-2);"]),z=o=>o.authenticatorName?o.createdWithBrowser?`${o.authenticatorName} on ${o.createdWithBrowser}`:o.authenticatorName:o.createdWithBrowser?o.createdWithOs?`${o.createdWithBrowser} on ${o.createdWithOs}`:`${o.createdWithBrowser}`:"Unknown device";const M=/*#__PURE__*/a.button.withConfig({displayName:"StyledLink",componentId:"sc-d5b2bf9c-3"})(["&&{width:100%;font-size:0.875rem;line-height:1rem;@media (min-width:440px){font-size:14px;}display:flex;gap:12px;justify-content:center;padding:0.75rem 1rem;background-color:var(--privy-color-background);transition:background-color 200ms ease;color:var(--privy-color-accent);:focus{outline:none;box-shadow:none;}}"]);export{W as EnrollPasskey,M as StyledLink};
@@ -1 +1 @@
1
- import{jsx as o,jsxs as e,Fragment as n}from"react/jsx-runtime";import r from"@heroicons/react/24/outline/CheckCircleIcon";import t from"@heroicons/react/24/outline/PhoneIcon";import{useState as i}from"react";import{lastFourDigits as m}from"@privy-io/js-sdk-core";import{PrimaryButton as s}from"../../components/Button.mjs";import{ConnectPhoneNumberForm as c}from"../../components/ConnectPhoneForm.mjs";import{ModalFooter as a}from"../../components/ModalFooter.mjs";import{ModalHeader as l}from"../../components/ModalHeader.mjs";import{NumericPinInput as p}from"../../components/PinInput.mjs";import{errorIndicatesMfaRateLimit as h,errorIndicatesMfaVerificationFailed as d,errorIndicatesMfaTimeout as j,errorIndicatesMfaCanceled as u}from"../../embedded-wallets/errors.mjs";import{usePrivyModal as f}from"../../hooks/modal-context.mjs";import{useMfaEnrollment as y}from"../../hooks/useMfaEnrollment.mjs";import{ErrorScreenView as g}from"../ErrorScreen.mjs";import{IconWrapper as v,Title as b,SubTitle as k,Container as w,TermsText as C,BottomSection as x}from"./StyledComponents.mjs";import"styled-components";import"../../components/Loader.mjs";import"../../recent-login/context.mjs";import"../../configuration/context.mjs";import"../../config.mjs";import"../../configuration/defaultClientConfig.mjs";import"../../constants.mjs";import"../../configuration/login-methods.mjs";import"../../configuration/wallets.mjs";import"../../connectors/chains/index.mjs";import"../../connectors/chains/arbitrum.mjs";import"../../connectors/chains/arbitrumSepolia.mjs";import"../../connectors/chains/avalanche.mjs";import"../../connectors/chains/avalancheFuji.mjs";import"../../connectors/chains/base.mjs";import"../../connectors/chains/baseSepolia.mjs";import"../../connectors/chains/berachainArtio.mjs";import"../../connectors/chains/celo.mjs";import"../../connectors/chains/celoAlfajores.mjs";import"../../connectors/chains/filecoin.mjs";import"../../connectors/chains/filecoinCalibration.mjs";import"../../connectors/chains/garnetHolesky.mjs";import"../../connectors/chains/holesky.mjs";import"../../connectors/chains/linea.mjs";import"../../connectors/chains/lineaTestnet.mjs";import"../../connectors/chains/lukso.mjs";import"../../connectors/chains/mainnet.mjs";import"../../connectors/chains/optimism.mjs";import"../../connectors/chains/optimismSepolia.mjs";import"../../connectors/chains/polygon.mjs";import"../../connectors/chains/polygonAmoy.mjs";import"../../connectors/chains/redstone.mjs";import"../../connectors/chains/sepolia.mjs";import"../../connectors/chains/zora.mjs";import"../../connectors/chains/zoraSepolia.mjs";import"../../connectors/chains/zoraTestnet.mjs";import"../../connectors/chains/utils.mjs";import"../../lib/solana/index.mjs";import"../../theme.mjs";import"tinycolor2";import"../../lib/cybr53.mjs";import"../../hooks/events-context.mjs";import"../../storage.mjs";import"../../components/PhoneCountryDropdown.mjs";import"../../components/ui/chips/Chip.mjs";import"../../components/ui/animation/LoadingSkeleton.mjs";import"../../components/PrefetchedImage.mjs";import"../index.mjs";import"../../hooks/index.mjs";import"../../svg/protected-by-privy.mjs";import"@heroicons/react/24/outline/ArrowLeftIcon";import"@heroicons/react/24/outline/ArrowRightIcon";import"@heroicons/react/24/outline/QuestionMarkCircleIcon";import"@heroicons/react/24/outline/XMarkIcon";import"../../hooks/internal-context.mjs";import"react-device-detect";import"../../embedded-wallets/types.mjs";import"../../hooks/privy-context.mjs";import"@heroicons/react/24/outline/ExclamationTriangleIcon";import"../../components/CircleBorder.mjs";import"../../components/layout/StackedContainer.mjs";import"../../errors.mjs";import"ofetch";import"../../hooks/captcha-context.mjs";import"../../utils/index.mjs";import"../../connectors/get-legacy-injected-providers.mjs";import"../../connectors/is-wallet-installed.mjs";import"../../utils/eth/getPublicClient.mjs";import"viem";import"../../svg/lock-closed.mjs";const S=({onComplete:S,onReset:E,onClose:P})=>{let[I,F]=i(""),[M,B]=i(!1),[A,T]=i(null),[z,L]=i("enroll"),{initEnrollmentWithSms:N,submitEnrollmentWithSms:R}=y(),{app:W,data:D}=f();function H(){D?.mfaEnrollmentFlow?.onSuccess(),S()}return A?/*#__PURE__*/o(g,{error:A,backFn:()=>T(null),onClick:()=>T(null)}):/*#__PURE__*/e(n,"enroll"===z?{children:[/*#__PURE__*/o(l,{backFn:E,onClose:P},"header"),/*#__PURE__*/o(v,{style:{marginBottom:"1.5rem"},children:/*#__PURE__*/o(t,{})}),/*#__PURE__*/o(b,{children:"Set up SMS verification"}),/*#__PURE__*/o(k,{children:"We'll text a verification code to this mobile device whenever you use your Privy wallet."}),/*#__PURE__*/e(w,{children:[/*#__PURE__*/o(c,{onSubmit:async function({qualifiedPhoneNumber:o}){try{await N({phoneNumber:o}),F(o),L("verify")}catch(o){T(o)}},hideRecent:!0}),/*#__PURE__*/e(C,{children:["By providing your mobile number, you agree to receive text messages from ",W?.name,". Some carrier charges may apply"]})]}),/*#__PURE__*/o(a,{})]}:M?{children:[/*#__PURE__*/o(l,{onClose:H},"header"),/*#__PURE__*/o(v,{style:{marginBottom:"1.5rem"},children:/*#__PURE__*/o(r,{})}),/*#__PURE__*/o(b,{children:"SMS verification added"}),/*#__PURE__*/o(k,{children:"From now on, you'll enter the verification code sent to your mobile device whenever you use your Privy wallet."}),/*#__PURE__*/o(x,{children:/*#__PURE__*/o(s,{onClick:H,children:"Done"})}),/*#__PURE__*/o(a,{})]}:{children:[/*#__PURE__*/o(l,{backFn:function(){"verify"===z?L("enroll"):E()},onClose:P},"header"),/*#__PURE__*/o(v,{style:{marginBottom:"1.5rem"},children:/*#__PURE__*/o(t,{})}),/*#__PURE__*/o(b,{children:"Enter enrollment code"}),/*#__PURE__*/e(w,{children:[/*#__PURE__*/o(p,{onChange:async function(o){try{if(!o)return;await R({phoneNumber:I,mfaCode:o}),B(!0)}catch(o){if(h(o))throw Error("You have exceeded the maximum number of attempts. Please close this window and try again in 10 seconds.");if(d(o))throw Error("The code you entered is not valid");if(j(o))throw Error("You have exceeded the time limit for code entry. Please try again in 30 seconds.");throw u(o)?Error("Verification canceled"):Error("Unknown error")}}}),/*#__PURE__*/e(k,{children:["To continue, enter the 6-digit code sent to ",/*#__PURE__*/o("strong",{children:m(I)})]})]}),/*#__PURE__*/o(a,{})]})};export{S as EnrollSms};
1
+ import{jsx as o,jsxs as e,Fragment as n}from"react/jsx-runtime";import r from"@heroicons/react/24/outline/CheckCircleIcon";import t from"@heroicons/react/24/outline/PhoneIcon";import{useState as i}from"react";import{lastFourDigits as m}from"@privy-io/js-sdk-core";import{PrimaryButton as s}from"../../components/Button.mjs";import{ConnectPhoneNumberForm as c}from"../../components/ConnectPhoneForm.mjs";import{ModalFooter as a}from"../../components/ModalFooter.mjs";import{ModalHeader as l}from"../../components/ModalHeader.mjs";import{NumericPinInput as p}from"../../components/PinInput.mjs";import{errorIndicatesMfaRateLimit as h,errorIndicatesMfaVerificationFailed as d,errorIndicatesMfaTimeout as j,errorIndicatesMfaCanceled as u}from"../../embedded-wallets/errors.mjs";import{usePrivyModal as f}from"../../hooks/modal-context.mjs";import{useMfaEnrollment as y}from"../../hooks/useMfaEnrollment.mjs";import{ErrorScreenView as g}from"../ErrorScreen.mjs";import{IconWrapper as b,Title as v,SubTitle as k,Container as w,TermsText as C,BottomSection as x}from"./StyledComponents.mjs";import"styled-components";import"../../components/Loader.mjs";import"../../recent-login/context.mjs";import"../../configuration/context.mjs";import"../../config.mjs";import"../../configuration/defaultClientConfig.mjs";import"../../constants.mjs";import"../../configuration/login-methods.mjs";import"../../configuration/wallets.mjs";import"../../connectors/chains/index.mjs";import"../../connectors/chains/arbitrum.mjs";import"../../connectors/chains/arbitrumSepolia.mjs";import"../../connectors/chains/avalanche.mjs";import"../../connectors/chains/avalancheFuji.mjs";import"../../connectors/chains/base.mjs";import"../../connectors/chains/baseSepolia.mjs";import"../../connectors/chains/berachainArtio.mjs";import"../../connectors/chains/celo.mjs";import"../../connectors/chains/celoAlfajores.mjs";import"../../connectors/chains/filecoin.mjs";import"../../connectors/chains/filecoinCalibration.mjs";import"../../connectors/chains/garnetHolesky.mjs";import"../../connectors/chains/holesky.mjs";import"../../connectors/chains/linea.mjs";import"../../connectors/chains/lineaTestnet.mjs";import"../../connectors/chains/lukso.mjs";import"../../connectors/chains/mainnet.mjs";import"../../connectors/chains/optimism.mjs";import"../../connectors/chains/optimismSepolia.mjs";import"../../connectors/chains/polygon.mjs";import"../../connectors/chains/polygonAmoy.mjs";import"../../connectors/chains/redstone.mjs";import"../../connectors/chains/sepolia.mjs";import"../../connectors/chains/zora.mjs";import"../../connectors/chains/zoraSepolia.mjs";import"../../connectors/chains/zoraTestnet.mjs";import"../../connectors/chains/utils.mjs";import"../../lib/solana/index.mjs";import"../../theme.mjs";import"tinycolor2";import"../../lib/cybr53.mjs";import"../../hooks/events-context.mjs";import"../../storage.mjs";import"../../components/PhoneCountryDropdown.mjs";import"../../components/ui/chips/Chip.mjs";import"../../components/ui/animation/LoadingSkeleton.mjs";import"../../components/PrefetchedImage.mjs";import"../index.mjs";import"../../hooks/index.mjs";import"../../svg/protected-by-privy.mjs";import"@heroicons/react/24/outline/ArrowLeftIcon";import"@heroicons/react/24/outline/ArrowRightIcon";import"@heroicons/react/24/outline/QuestionMarkCircleIcon";import"@heroicons/react/24/outline/XMarkIcon";import"../../hooks/internal-context.mjs";import"react-device-detect";import"../../embedded-wallets/types.mjs";import"../../hooks/privy-context.mjs";import"@heroicons/react/24/outline/ExclamationTriangleIcon";import"../../components/CircleBorder.mjs";import"../../components/layout/StackedContainer.mjs";import"../../errors.mjs";import"ofetch";import"../../hooks/captcha-context.mjs";import"../../utils/index.mjs";import"../../connectors/get-legacy-injected-providers.mjs";import"../../connectors/is-wallet-installed.mjs";import"../../utils/eth/getPublicClient.mjs";import"viem";import"../../lib/funding/reservoir.mjs";import"../../svg/lock-closed.mjs";const S=({appName:S,onComplete:E,onReset:I,onClose:P})=>{let[F,M]=i(""),[B,A]=i(!1),[T,N]=i(null),[z,L]=i("enroll"),{initEnrollmentWithSms:R,submitEnrollmentWithSms:W}=y(),{app:D,data:H}=f();function Y(){H?.mfaEnrollmentFlow?.onSuccess(),E()}return T?/*#__PURE__*/o(g,{error:T,backFn:()=>N(null),onClick:()=>N(null)}):/*#__PURE__*/e(n,"enroll"===z?{children:[/*#__PURE__*/o(l,{backFn:I,onClose:P},"header"),/*#__PURE__*/o(b,{style:{marginBottom:"1.5rem"},children:/*#__PURE__*/o(t,{})}),/*#__PURE__*/o(v,{children:"Set up SMS verification"}),/*#__PURE__*/e(k,{children:["We'll text a verification code to this mobile device whenever you use your ",S," ","wallet."]}),/*#__PURE__*/e(w,{children:[/*#__PURE__*/o(c,{onSubmit:async function({qualifiedPhoneNumber:o}){try{await R({phoneNumber:o}),M(o),L("verify")}catch(o){N(o)}},hideRecent:!0}),/*#__PURE__*/e(C,{children:["By providing your mobile number, you agree to receive text messages from ",D?.name,". Some carrier charges may apply"]})]}),/*#__PURE__*/o(a,{})]}:B?{children:[/*#__PURE__*/o(l,{onClose:Y},"header"),/*#__PURE__*/o(b,{style:{marginBottom:"1.5rem"},children:/*#__PURE__*/o(r,{})}),/*#__PURE__*/o(v,{children:"SMS verification added"}),/*#__PURE__*/e(k,{children:["From now on, you'll enter the verification code sent to your mobile device whenever you use your ",S," wallet."]}),/*#__PURE__*/o(x,{children:/*#__PURE__*/o(s,{onClick:Y,children:"Done"})}),/*#__PURE__*/o(a,{})]}:{children:[/*#__PURE__*/o(l,{backFn:function(){"verify"===z?L("enroll"):I()},onClose:P},"header"),/*#__PURE__*/o(b,{style:{marginBottom:"1.5rem"},children:/*#__PURE__*/o(t,{})}),/*#__PURE__*/o(v,{children:"Enter enrollment code"}),/*#__PURE__*/e(w,{children:[/*#__PURE__*/o(p,{onChange:async function(o){try{if(!o)return;await W({phoneNumber:F,mfaCode:o}),A(!0)}catch(o){if(h(o))throw Error("You have exceeded the maximum number of attempts. Please close this window and try again in 10 seconds.");if(d(o))throw Error("The code you entered is not valid");if(j(o))throw Error("You have exceeded the time limit for code entry. Please try again in 30 seconds.");throw u(o)?Error("Verification canceled"):Error("Unknown error")}}}),/*#__PURE__*/e(k,{children:["To continue, enter the 6-digit code sent to ",/*#__PURE__*/o("strong",{children:m(F)})]})]}),/*#__PURE__*/o(a,{})]})};export{S as EnrollSms};
@@ -1 +1 @@
1
- import{jsxs as o,Fragment as e,jsx as r}from"react/jsx-runtime";import t from"@heroicons/react/24/outline/CheckCircleIcon";import n from"@heroicons/react/24/outline/DevicePhoneMobileIcon";import{useState as i}from"react";import{PrimaryButton as c}from"../../components/Button.mjs";import{CopytoClipboardButton as s}from"../../components/CopyToClipboard.mjs";import{CenteredItemWithPadding as m,CenteredItem as a}from"../../components/Layouts.mjs";import{ModalFooter as p}from"../../components/ModalFooter.mjs";import{ModalHeader as l}from"../../components/ModalHeader.mjs";import{NumericPinInput as h}from"../../components/PinInput.mjs";import{errorIndicatesMfaRateLimit as d,errorIndicatesMfaVerificationFailed as j,errorIndicatesMfaTimeout as u,errorIndicatesMfaCanceled as f}from"../../embedded-wallets/errors.mjs";import{usePrivyModal as y}from"../../hooks/modal-context.mjs";import{useMfaEnrollment as g}from"../../hooks/useMfaEnrollment.mjs";import{AddTotpProviderQr as v}from"../../svg/qr-codes.mjs";import{Title as b,SubTitle as C,BottomSection as k,IconWrapper as w,Container as x}from"./StyledComponents.mjs";import"styled-components";import"../../components/Loader.mjs";import"../../svg/checkmark.mjs";import"../../svg/copy.mjs";import"../../configuration/context.mjs";import"../../config.mjs";import"../../configuration/defaultClientConfig.mjs";import"../../constants.mjs";import"../../configuration/login-methods.mjs";import"../../configuration/wallets.mjs";import"../../connectors/chains/index.mjs";import"../../connectors/chains/arbitrum.mjs";import"../../connectors/chains/arbitrumSepolia.mjs";import"../../connectors/chains/avalanche.mjs";import"../../connectors/chains/avalancheFuji.mjs";import"../../connectors/chains/base.mjs";import"../../connectors/chains/baseSepolia.mjs";import"../../connectors/chains/berachainArtio.mjs";import"../../connectors/chains/celo.mjs";import"../../connectors/chains/celoAlfajores.mjs";import"../../connectors/chains/filecoin.mjs";import"../../connectors/chains/filecoinCalibration.mjs";import"../../connectors/chains/garnetHolesky.mjs";import"../../connectors/chains/holesky.mjs";import"../../connectors/chains/linea.mjs";import"../../connectors/chains/lineaTestnet.mjs";import"../../connectors/chains/lukso.mjs";import"../../connectors/chains/mainnet.mjs";import"../../connectors/chains/optimism.mjs";import"../../connectors/chains/optimismSepolia.mjs";import"../../connectors/chains/polygon.mjs";import"../../connectors/chains/polygonAmoy.mjs";import"../../connectors/chains/redstone.mjs";import"../../connectors/chains/sepolia.mjs";import"../../connectors/chains/zora.mjs";import"../../connectors/chains/zoraSepolia.mjs";import"../../connectors/chains/zoraTestnet.mjs";import"../../connectors/chains/utils.mjs";import"../../lib/solana/index.mjs";import"../../theme.mjs";import"tinycolor2";import"../../lib/cybr53.mjs";import"../../svg/protected-by-privy.mjs";import"@heroicons/react/24/outline/ArrowLeftIcon";import"@heroicons/react/24/outline/ArrowRightIcon";import"@heroicons/react/24/outline/QuestionMarkCircleIcon";import"@heroicons/react/24/outline/XMarkIcon";import"../../hooks/internal-context.mjs";import"../../hooks/index.mjs";import"react-device-detect";import"../../embedded-wallets/types.mjs";import"../../components/PrefetchedImage.mjs";import"../index.mjs";import"../../hooks/privy-context.mjs";import"@heroicons/react/24/solid/ShieldCheckIcon";import"../../components/QrCode.mjs";import"qrcode";import"../../svg/black-rounded-square.mjs";import"../../utils/index.mjs";import"../../connectors/get-legacy-injected-providers.mjs";import"../../connectors/is-wallet-installed.mjs";import"../../errors.mjs";import"ofetch";import"../../utils/eth/getPublicClient.mjs";import"viem";import"../../svg/coinbase-wallet.mjs";const I=({onComplete:I,onClose:E,onReset:S,totpInfo:P})=>{let[A,F]=i("enroll"),[M,T]=i(!1),{submitEnrollmentWithTotp:z}=g(),{data:Q}=y();function R(){Q?.mfaEnrollmentFlow?.onSuccess(),I()}/*#__PURE__*/return o(e,"enroll"===A?{children:[/*#__PURE__*/r(l,{backFn:S,onClose:E},"header"),/*#__PURE__*/r(b,{children:"Scan QR code"}),/*#__PURE__*/r(C,{children:"Open your authenticator app and scan the QR code to continue."}),/*#__PURE__*/r(m,{children:/*#__PURE__*/r(v,{authUrl:P.authUrl,size:200})}),/*#__PURE__*/o(k,{children:[/*#__PURE__*/r(a,{children:/*#__PURE__*/r(s,{itemName:"secret",text:P.secret})}),/*#__PURE__*/r(c,{onClick:function(){F("verify")},children:"Continue"})]}),/*#__PURE__*/r(p,{})]}:M?{children:[/*#__PURE__*/r(l,{onClose:R},"header"),/*#__PURE__*/r(w,{style:{marginBottom:"1.5rem"},children:/*#__PURE__*/r(t,{})}),/*#__PURE__*/r(b,{children:"Authenticator app verification added"}),/*#__PURE__*/r(C,{children:"From now on, you'll enter the verification code generated by your authenticator app whenever you use your Privy wallet."}),/*#__PURE__*/r(k,{children:/*#__PURE__*/r(c,{onClick:R,children:"Done"})}),/*#__PURE__*/r(p,{})]}:{children:[/*#__PURE__*/r(l,{backFn:function(){"verify"===A?F("enroll"):S()},onClose:E},"header"),/*#__PURE__*/r(w,{style:{marginBottom:"1.5rem"},children:/*#__PURE__*/r(n,{})}),/*#__PURE__*/r(b,{children:"Enter enrollment code"}),/*#__PURE__*/r(x,{children:/*#__PURE__*/r(h,{onChange:async function(o){try{if(!o)return;await z({mfaCode:o}),T(!0)}catch(o){if(d(o))throw Error("You have exceeded the maximum number of attempts. Please close this window and try again in 10 seconds.");if(j(o))throw Error("The code you entered is not valid");if(u(o))throw Error("You have exceeded the time limit for code entry. Please try again in 30 seconds.");throw f(o)?Error("Verification canceled"):Error("Unknown error")}}})}),/*#__PURE__*/o(C,{children:["To continue, enter the 6-digit code generated from your ",/*#__PURE__*/r("strong",{children:"authenticator app"})]}),/*#__PURE__*/r(p,{})]})};export{I as EnrollTotp};
1
+ import{jsxs as o,Fragment as e,jsx as t}from"react/jsx-runtime";import r from"@heroicons/react/24/outline/CheckCircleIcon";import n from"@heroicons/react/24/outline/DevicePhoneMobileIcon";import{useState as i}from"react";import{PrimaryButton as c}from"../../components/Button.mjs";import{CopytoClipboardButton as s}from"../../components/CopyToClipboard.mjs";import{CenteredItemWithPadding as m,CenteredItem as a}from"../../components/Layouts.mjs";import{ModalFooter as p}from"../../components/ModalFooter.mjs";import{ModalHeader as l}from"../../components/ModalHeader.mjs";import{NumericPinInput as h}from"../../components/PinInput.mjs";import{errorIndicatesMfaRateLimit as d,errorIndicatesMfaVerificationFailed as j,errorIndicatesMfaTimeout as u,errorIndicatesMfaCanceled as f}from"../../embedded-wallets/errors.mjs";import{usePrivyModal as y}from"../../hooks/modal-context.mjs";import{useMfaEnrollment as g}from"../../hooks/useMfaEnrollment.mjs";import{AddTotpProviderQr as b}from"../../svg/qr-codes.mjs";import{Title as v,SubTitle as C,BottomSection as k,IconWrapper as w,Container as x}from"./StyledComponents.mjs";import"styled-components";import"../../components/Loader.mjs";import"../../svg/checkmark.mjs";import"../../svg/copy.mjs";import"../../configuration/context.mjs";import"../../config.mjs";import"../../configuration/defaultClientConfig.mjs";import"../../constants.mjs";import"../../configuration/login-methods.mjs";import"../../configuration/wallets.mjs";import"../../connectors/chains/index.mjs";import"../../connectors/chains/arbitrum.mjs";import"../../connectors/chains/arbitrumSepolia.mjs";import"../../connectors/chains/avalanche.mjs";import"../../connectors/chains/avalancheFuji.mjs";import"../../connectors/chains/base.mjs";import"../../connectors/chains/baseSepolia.mjs";import"../../connectors/chains/berachainArtio.mjs";import"../../connectors/chains/celo.mjs";import"../../connectors/chains/celoAlfajores.mjs";import"../../connectors/chains/filecoin.mjs";import"../../connectors/chains/filecoinCalibration.mjs";import"../../connectors/chains/garnetHolesky.mjs";import"../../connectors/chains/holesky.mjs";import"../../connectors/chains/linea.mjs";import"../../connectors/chains/lineaTestnet.mjs";import"../../connectors/chains/lukso.mjs";import"../../connectors/chains/mainnet.mjs";import"../../connectors/chains/optimism.mjs";import"../../connectors/chains/optimismSepolia.mjs";import"../../connectors/chains/polygon.mjs";import"../../connectors/chains/polygonAmoy.mjs";import"../../connectors/chains/redstone.mjs";import"../../connectors/chains/sepolia.mjs";import"../../connectors/chains/zora.mjs";import"../../connectors/chains/zoraSepolia.mjs";import"../../connectors/chains/zoraTestnet.mjs";import"../../connectors/chains/utils.mjs";import"../../lib/solana/index.mjs";import"../../theme.mjs";import"tinycolor2";import"../../lib/cybr53.mjs";import"../../svg/protected-by-privy.mjs";import"@heroicons/react/24/outline/ArrowLeftIcon";import"@heroicons/react/24/outline/ArrowRightIcon";import"@heroicons/react/24/outline/QuestionMarkCircleIcon";import"@heroicons/react/24/outline/XMarkIcon";import"../../hooks/internal-context.mjs";import"../../hooks/index.mjs";import"react-device-detect";import"../../embedded-wallets/types.mjs";import"../../components/PrefetchedImage.mjs";import"../index.mjs";import"../../hooks/privy-context.mjs";import"@heroicons/react/24/solid/ShieldCheckIcon";import"../../components/QrCode.mjs";import"qrcode";import"../../svg/black-rounded-square.mjs";import"../../utils/index.mjs";import"../../connectors/get-legacy-injected-providers.mjs";import"../../connectors/is-wallet-installed.mjs";import"../../errors.mjs";import"ofetch";import"../../utils/eth/getPublicClient.mjs";import"viem";import"../../svg/coinbase-wallet.mjs";const I=({onComplete:I,onClose:E,onReset:S,totpInfo:A})=>{let[F,M]=i("enroll"),[P,T]=i(!1),{submitEnrollmentWithTotp:z}=g(),{data:Q}=y();function R(){Q?.mfaEnrollmentFlow?.onSuccess(),I()}/*#__PURE__*/return o(e,"enroll"===F?{children:[/*#__PURE__*/t(l,{backFn:S,onClose:E},"header"),/*#__PURE__*/t(v,{children:"Scan QR code"}),/*#__PURE__*/t(C,{children:"Open your authenticator app and scan the QR code to continue."}),/*#__PURE__*/t(m,{children:/*#__PURE__*/t(b,{authUrl:A.authUrl,size:200})}),/*#__PURE__*/o(k,{children:[/*#__PURE__*/t(a,{children:/*#__PURE__*/t(s,{itemName:"setup key",text:A.secret})}),/*#__PURE__*/t(c,{onClick:function(){M("verify")},children:"Continue"})]}),/*#__PURE__*/t(p,{})]}:P?{children:[/*#__PURE__*/t(l,{onClose:R},"header"),/*#__PURE__*/t(w,{style:{marginBottom:"1.5rem"},children:/*#__PURE__*/t(r,{})}),/*#__PURE__*/t(v,{children:"Authenticator app verification added"}),/*#__PURE__*/o(C,{children:["From now on, you'll enter the verification code generated by your authenticator app whenever you use your ",A.appName," wallet."]}),/*#__PURE__*/t(k,{children:/*#__PURE__*/t(c,{onClick:R,children:"Done"})}),/*#__PURE__*/t(p,{})]}:{children:[/*#__PURE__*/t(l,{backFn:function(){"verify"===F?M("enroll"):S()},onClose:E},"header"),/*#__PURE__*/t(w,{style:{marginBottom:"1.5rem"},children:/*#__PURE__*/t(n,{})}),/*#__PURE__*/t(v,{children:"Enter enrollment code"}),/*#__PURE__*/t(x,{children:/*#__PURE__*/t(h,{onChange:async function(o){try{if(!o)return;await z({mfaCode:o}),T(!0)}catch(o){if(d(o))throw Error("You have exceeded the maximum number of attempts. Please close this window and try again in 10 seconds.");if(j(o))throw Error("The code you entered is not valid");if(u(o))throw Error("You have exceeded the time limit for code entry. Please try again in 30 seconds.");throw f(o)?Error("Verification canceled"):Error("Unknown error")}}})}),/*#__PURE__*/o(C,{children:["To continue, enter the 6-digit code generated from your ",/*#__PURE__*/t("strong",{children:"authenticator app"})]}),/*#__PURE__*/t(p,{})]})};export{I as EnrollTotp};
@@ -1 +1 @@
1
- import{jsxs as o,Fragment as e,jsx as n}from"react/jsx-runtime";import t from"@heroicons/react/24/outline/QuestionMarkCircleIcon";import r from"@heroicons/react/24/outline/ShieldCheckIcon";import i from"@heroicons/react/24/solid/CheckBadgeIcon";import s from"@heroicons/react/24/solid/IdentificationIcon";import{useState as c,useEffect as m}from"react";import{PrimaryButton as a,SecondaryButton as l}from"../../components/Button.mjs";import{Loader as p}from"../../components/Loader.mjs";import{ModalFooter as h}from"../../components/ModalFooter.mjs";import{ModalHeader as d}from"../../components/ModalHeader.mjs";import{usePrivyInternal as u}from"../../hooks/internal-context.mjs";import{usePrivyModal as j}from"../../hooks/modal-context.mjs";import{usePrivyContext as f}from"../../hooks/privy-context.mjs";import{useMfa as y}from"../../hooks/useMfa.mjs";import{useMfaEnrollment as k}from"../../hooks/useMfaEnrollment.mjs";import{MfaShieldIcon as g}from"../../svg/mfa-shield.mjs";import{EnrollLandingScreen as v}from"./EnrollLandingScreen.mjs";import{EnrollPasskey as C}from"./EnrollPasskey.mjs";import{EnrollSms as M}from"./EnrollSms.mjs";import{EnrollTotp as w}from"./EnrollTotp.mjs";import{AppLogoContainer as I,Container as b,IconWrapper as S,Title as A,SubTitle as x,BottomSection as F,List as E,ListItem as P,ListItemIcon as R}from"./StyledComponents.mjs";import"styled-components";import"../../configuration/context.mjs";import"../../config.mjs";import"../../configuration/defaultClientConfig.mjs";import"../../constants.mjs";import"../../configuration/login-methods.mjs";import"../../configuration/wallets.mjs";import"../../connectors/chains/index.mjs";import"../../connectors/chains/arbitrum.mjs";import"../../connectors/chains/arbitrumSepolia.mjs";import"../../connectors/chains/avalanche.mjs";import"../../connectors/chains/avalancheFuji.mjs";import"../../connectors/chains/base.mjs";import"../../connectors/chains/baseSepolia.mjs";import"../../connectors/chains/berachainArtio.mjs";import"../../connectors/chains/celo.mjs";import"../../connectors/chains/celoAlfajores.mjs";import"../../connectors/chains/filecoin.mjs";import"../../connectors/chains/filecoinCalibration.mjs";import"../../connectors/chains/garnetHolesky.mjs";import"../../connectors/chains/holesky.mjs";import"../../connectors/chains/linea.mjs";import"../../connectors/chains/lineaTestnet.mjs";import"../../connectors/chains/lukso.mjs";import"../../connectors/chains/mainnet.mjs";import"../../connectors/chains/optimism.mjs";import"../../connectors/chains/optimismSepolia.mjs";import"../../connectors/chains/polygon.mjs";import"../../connectors/chains/polygonAmoy.mjs";import"../../connectors/chains/redstone.mjs";import"../../connectors/chains/sepolia.mjs";import"../../connectors/chains/zora.mjs";import"../../connectors/chains/zoraSepolia.mjs";import"../../connectors/chains/zoraTestnet.mjs";import"../../connectors/chains/utils.mjs";import"../../lib/solana/index.mjs";import"../../theme.mjs";import"tinycolor2";import"../../lib/cybr53.mjs";import"../../svg/protected-by-privy.mjs";import"@heroicons/react/24/outline/ArrowLeftIcon";import"@heroicons/react/24/outline/ArrowRightIcon";import"@heroicons/react/24/outline/XMarkIcon";import"../../hooks/index.mjs";import"../../components/PrefetchedImage.mjs";import"../index.mjs";import"@heroicons/react/24/outline/ChevronRightIcon";import"@heroicons/react/24/outline/DevicePhoneMobileIcon";import"@heroicons/react/24/outline/FingerPrintIcon";import"@heroicons/react/24/outline/MinusCircleIcon";import"@heroicons/react/24/outline/PhoneIcon";import"../../components/ui/chips/Chip.mjs";import"../../components/ui/animation/LoadingSkeleton.mjs";import"../LandingScreen/styles.mjs";import"@heroicons/react/24/outline/ArrowRightEndOnRectangleIcon";import"@heroicons/react/24/outline/CheckCircleIcon";import"@heroicons/react/24/outline/ClockIcon";import"../../svg/face-id.mjs";import"../../svg/fingerprint.mjs";import"../ErrorScreen.mjs";import"@heroicons/react/24/outline/ExclamationTriangleIcon";import"../../components/CircleBorder.mjs";import"../../components/layout/StackedContainer.mjs";import"../../embedded-wallets/errors.mjs";import"../../embedded-wallets/types.mjs";import"../../errors.mjs";import"ofetch";import"../../hooks/captcha-context.mjs";import"../../utils/index.mjs";import"../../connectors/get-legacy-injected-providers.mjs";import"../../connectors/is-wallet-installed.mjs";import"../../utils/eth/getPublicClient.mjs";import"viem";import"../../svg/lock-closed.mjs";import"../LinkPasskeyScreen.mjs";import"@heroicons/react/24/outline/TrashIcon";import"@heroicons/react/24/solid/LockClosedIcon";import"@privy-io/js-sdk-core";import"../../components/ConnectPhoneForm.mjs";import"../../recent-login/context.mjs";import"../../hooks/events-context.mjs";import"../../storage.mjs";import"../../components/PhoneCountryDropdown.mjs";import"../../components/PinInput.mjs";import"react-device-detect";import"../../components/CopyToClipboard.mjs";import"../../svg/checkmark.mjs";import"../../svg/copy.mjs";import"../../components/Layouts.mjs";import"../../svg/qr-codes.mjs";import"@heroicons/react/24/solid/ShieldCheckIcon";import"../../components/QrCode.mjs";import"qrcode";import"../../svg/black-rounded-square.mjs";import"../../svg/coinbase-wallet.mjs";const L=()=>{let{user:L,enrollInMfa:T}=f(),[B,U]=c(null),{unenrollWithSms:O,unenrollWithTotp:W,unenrollWithPasskey:q}=k(),{app:z,ready:D,data:H,onUserCloseViaDialogOrKeybindRef:Q}=j(),{closePrivyModal:Y}=u(),{promptMfa:K}=y(),{initEnrollmentWithTotp:N}=k(),[V,X]=c(!1),[G,J]=c(null),[Z,$]=c(null),_=()=>{Y({shouldCallAuthOnSuccess:!0}),T(!1),setTimeout((()=>{U(null),J(null)}),500)},{initEnrollmentWithPasskey:oo,submitEnrollmentWithPasskey:eo}=k(),[no,to]=c(!1),[ro,io]=c(null);Q.current=_;let so=L?.mfaMethods.includes("sms"),co=!!L?.phone,mo=L?.mfaMethods.includes("totp"),ao=L?.mfaMethods.includes("passkey"),lo=so||mo||ao,po=L?.linkedAccounts.filter((o=>"passkey"===o.type)).map((o=>o.credentialId))??[];function ho(){U(null),J(null)}if(m((()=>{lo&&X(!0)}),[lo]),!D||!L||!z/*#__PURE__*/)return o(e,{children:[/*#__PURE__*/n(d,{onClose:_},"header"),/*#__PURE__*/n(I,{children:/*#__PURE__*/n(g,{})}),/*#__PURE__*/n(b,{children:/*#__PURE__*/n(p,{})}),/*#__PURE__*/n(h,{})]});if("sms"===B)/*#__PURE__*/return o(e,{children:[/*#__PURE__*/n(d,{backFn:ho,onClose:_},"header"),/*#__PURE__*/n(S,{style:{marginBottom:"1.5rem"},children:/*#__PURE__*/n(t,{})}),/*#__PURE__*/n(A,{children:"Remove SMS verification?"}),/*#__PURE__*/o(x,{children:["MFA adds an extra layer of security to your ",z?.name," account. Make sure you have other methods to secure your account."]}),/*#__PURE__*/n(F,{children:/*#__PURE__*/n(a,{warn:!0,onClick:async function(){U(null);try{await O()}catch(o){U(null)}},children:"Remove SMS for MFA"})}),/*#__PURE__*/n(h,{})]});if("totp"===B)/*#__PURE__*/return o(e,{children:[/*#__PURE__*/n(d,{backFn:ho,onClose:_},"header"),/*#__PURE__*/n(S,{style:{marginBottom:"1.5rem"},children:/*#__PURE__*/n(t,{})}),/*#__PURE__*/n(A,{children:"Remove Authenticator App verification?"}),/*#__PURE__*/o(x,{children:["MFA adds an extra layer of security to your ",z?.name," account. Make sure you have other methods to secure your account."]}),/*#__PURE__*/n(F,{children:/*#__PURE__*/n(a,{warn:!0,onClick:async function(){U(null);try{await W()}catch(o){U(null)}},children:"Remove Authenticator App for MFA"})}),/*#__PURE__*/n(h,{})]});if("passkey"===B){let r=H?.mfaEnrollmentFlow?.shouldUnlinkOnUnenrollMfa??!0;/*#__PURE__*/return o(e,{children:[/*#__PURE__*/n(d,{backFn:ho,onClose:_},"header"),/*#__PURE__*/n(S,{style:{marginBottom:"1.5rem"},children:/*#__PURE__*/n(t,{})}),/*#__PURE__*/n(A,{children:"Are you sure you want to remove this passkey?"}),/*#__PURE__*/n(x,{children:r?"Removing your passkey will remove as both a verification method and a login method.":"Removing your passkey will remove as a verification method."}),/*#__PURE__*/n(F,{children:/*#__PURE__*/n(a,{warn:!0,onClick:async function(){U(null);try{await q({removeForLogin:H?.mfaEnrollmentFlow?.shouldUnlinkOnUnenrollMfa})}catch(o){U(null)}},children:"Yes, remove"})}),/*#__PURE__*/n(h,{})]})}if(0===H.mfaEnrollmentFlow.mfaMethods.length&&!lo)/*#__PURE__*/return o(e,{children:[/*#__PURE__*/n(d,{onClose:_},"header"),/*#__PURE__*/n(S,{style:{marginBottom:"1.5rem"},children:/*#__PURE__*/n(r,{})}),/*#__PURE__*/n(A,{children:"Add more security"}),/*#__PURE__*/o(x,{children:[z?.name," does not have any verification methods enabled."]}),/*#__PURE__*/n(F,{children:/*#__PURE__*/n(a,{onClick:_,children:"Close"})}),/*#__PURE__*/n(h,{})]});let uo=!lo&&!V;return uo?/*#__PURE__*/o(e,{children:[/*#__PURE__*/n(d,{onClose:_},"header"),/*#__PURE__*/n(S,{style:{marginBottom:"1.5rem"},children:/*#__PURE__*/n(r,{})}),/*#__PURE__*/n(A,{children:"Transaction Protection"}),/*#__PURE__*/n(x,{children:"Set up transaction protection to add an extra layer of security to your account"}),/*#__PURE__*/o(E,{children:[/*#__PURE__*/o(P,{children:[/*#__PURE__*/n(R,{children:/*#__PURE__*/n(i,{})}),"Enable 2-Step verification for your ",z?.name," wallet."]}),/*#__PURE__*/o(P,{children:[/*#__PURE__*/n(R,{children:/*#__PURE__*/n(s,{})}),"You'll be prompted to authenticate to complete transactions."]})]}),/*#__PURE__*/o(F,{children:[/*#__PURE__*/n(a,{onClick:()=>X(!0),children:"Continue"}),/*#__PURE__*/n(l,{onClick:_,children:"Not now"})]}),/*#__PURE__*/n(h,{})]}):"sms"===G?/*#__PURE__*/n(M,{onComplete:_,onReset:ho,onClose:_}):"totp"===G&&Z?/*#__PURE__*/n(w,{onComplete:_,onClose:_,onReset:ho,totpInfo:Z}):"passkey"===G?/*#__PURE__*/n(C,{onComplete:_,onReset:ho,onClose:_}):/*#__PURE__*/n(v,{showIntro:uo,userMfaMethods:L.mfaMethods,appMfaMethods:z.mfa.methods,userHasAuthSms:co,onBackToIntro:function(){X(!1)},handleSelectMethod:async function(o){return await K().catch(io),"totp"===o?(J(o),$(null),void N().then((o=>{$(o)})).catch((()=>{$(null),ho()}))):"passkey"===o&&1===po.length?await async function(){to(!0);try{await oo(),await eo({credentialIds:po},{removeForLogin:H?.mfaEnrollmentFlow?.shouldUnlinkOnUnenrollMfa})}catch(o){io(o)}finally{to(!1)}}():void J(o)},isTotpLoading:"totp"===G&&!Z,isPasskeyLoading:no,error:ro,onClose:_,setRemovingMfaMethod:async o=>{await K().catch(io),U(o)}})};export{L as MfaEnrollmentFlowScreen};
1
+ import{jsxs as o,Fragment as e,jsx as n}from"react/jsx-runtime";import t from"@heroicons/react/24/outline/QuestionMarkCircleIcon";import r from"@heroicons/react/24/outline/ShieldCheckIcon";import i from"@heroicons/react/24/solid/CheckBadgeIcon";import s from"@heroicons/react/24/solid/IdentificationIcon";import{useState as c,useEffect as m}from"react";import{PrimaryButton as a,SecondaryButton as l}from"../../components/Button.mjs";import{Loader as p}from"../../components/Loader.mjs";import{ModalFooter as h}from"../../components/ModalFooter.mjs";import{ModalHeader as d}from"../../components/ModalHeader.mjs";import{usePrivyInternal as u}from"../../hooks/internal-context.mjs";import{usePrivyModal as j}from"../../hooks/modal-context.mjs";import{usePrivyContext as f}from"../../hooks/privy-context.mjs";import{useMfa as y}from"../../hooks/useMfa.mjs";import{useMfaEnrollment as k}from"../../hooks/useMfaEnrollment.mjs";import{MfaShieldIcon as g}from"../../svg/mfa-shield.mjs";import{EnrollLandingScreen as v}from"./EnrollLandingScreen.mjs";import{EnrollPasskey as C}from"./EnrollPasskey.mjs";import{EnrollSms as M}from"./EnrollSms.mjs";import{EnrollTotp as w}from"./EnrollTotp.mjs";import{AppLogoContainer as I,Container as b,IconWrapper as S,Title as A,SubTitle as P,BottomSection as x,List as F,ListItem as E,ListItemIcon as R}from"./StyledComponents.mjs";import"styled-components";import"../../configuration/context.mjs";import"../../config.mjs";import"../../configuration/defaultClientConfig.mjs";import"../../constants.mjs";import"../../configuration/login-methods.mjs";import"../../configuration/wallets.mjs";import"../../connectors/chains/index.mjs";import"../../connectors/chains/arbitrum.mjs";import"../../connectors/chains/arbitrumSepolia.mjs";import"../../connectors/chains/avalanche.mjs";import"../../connectors/chains/avalancheFuji.mjs";import"../../connectors/chains/base.mjs";import"../../connectors/chains/baseSepolia.mjs";import"../../connectors/chains/berachainArtio.mjs";import"../../connectors/chains/celo.mjs";import"../../connectors/chains/celoAlfajores.mjs";import"../../connectors/chains/filecoin.mjs";import"../../connectors/chains/filecoinCalibration.mjs";import"../../connectors/chains/garnetHolesky.mjs";import"../../connectors/chains/holesky.mjs";import"../../connectors/chains/linea.mjs";import"../../connectors/chains/lineaTestnet.mjs";import"../../connectors/chains/lukso.mjs";import"../../connectors/chains/mainnet.mjs";import"../../connectors/chains/optimism.mjs";import"../../connectors/chains/optimismSepolia.mjs";import"../../connectors/chains/polygon.mjs";import"../../connectors/chains/polygonAmoy.mjs";import"../../connectors/chains/redstone.mjs";import"../../connectors/chains/sepolia.mjs";import"../../connectors/chains/zora.mjs";import"../../connectors/chains/zoraSepolia.mjs";import"../../connectors/chains/zoraTestnet.mjs";import"../../connectors/chains/utils.mjs";import"../../lib/solana/index.mjs";import"../../theme.mjs";import"tinycolor2";import"../../lib/cybr53.mjs";import"../../svg/protected-by-privy.mjs";import"@heroicons/react/24/outline/ArrowLeftIcon";import"@heroicons/react/24/outline/ArrowRightIcon";import"@heroicons/react/24/outline/XMarkIcon";import"../../hooks/index.mjs";import"../../components/PrefetchedImage.mjs";import"../index.mjs";import"@heroicons/react/24/outline/ChevronRightIcon";import"@heroicons/react/24/outline/DevicePhoneMobileIcon";import"@heroicons/react/24/outline/FingerPrintIcon";import"@heroicons/react/24/outline/MinusCircleIcon";import"@heroicons/react/24/outline/PhoneIcon";import"../../components/ui/chips/Chip.mjs";import"../../components/ui/animation/LoadingSkeleton.mjs";import"../LandingScreen/styles.mjs";import"@heroicons/react/24/outline/ArrowRightEndOnRectangleIcon";import"@heroicons/react/24/outline/CheckCircleIcon";import"@heroicons/react/24/outline/ClockIcon";import"../../svg/face-id.mjs";import"../../svg/fingerprint.mjs";import"../ErrorScreen.mjs";import"@heroicons/react/24/outline/ExclamationTriangleIcon";import"../../components/CircleBorder.mjs";import"../../components/layout/StackedContainer.mjs";import"../../embedded-wallets/errors.mjs";import"../../embedded-wallets/types.mjs";import"../../errors.mjs";import"ofetch";import"../../hooks/captcha-context.mjs";import"../../utils/index.mjs";import"../../connectors/get-legacy-injected-providers.mjs";import"../../connectors/is-wallet-installed.mjs";import"../../utils/eth/getPublicClient.mjs";import"viem";import"../../lib/funding/reservoir.mjs";import"../../svg/lock-closed.mjs";import"../LinkPasskeyScreen.mjs";import"@heroicons/react/24/outline/TrashIcon";import"@heroicons/react/24/solid/LockClosedIcon";import"@privy-io/js-sdk-core";import"../../components/ConnectPhoneForm.mjs";import"../../recent-login/context.mjs";import"../../hooks/events-context.mjs";import"../../storage.mjs";import"../../components/PhoneCountryDropdown.mjs";import"../../components/PinInput.mjs";import"react-device-detect";import"../../components/CopyToClipboard.mjs";import"../../svg/checkmark.mjs";import"../../svg/copy.mjs";import"../../components/Layouts.mjs";import"../../svg/qr-codes.mjs";import"@heroicons/react/24/solid/ShieldCheckIcon";import"../../components/QrCode.mjs";import"qrcode";import"../../svg/black-rounded-square.mjs";import"../../svg/coinbase-wallet.mjs";const L=()=>{let{user:L,enrollInMfa:T}=f(),[B,U]=c(null),{unenrollWithSms:O,unenrollWithTotp:W,unenrollWithPasskey:N}=k(),{app:q,ready:z,data:D,onUserCloseViaDialogOrKeybindRef:H}=j(),{closePrivyModal:Q}=u(),{promptMfa:Y}=y(),{initEnrollmentWithTotp:K}=k(),[V,X]=c(!1),[G,J]=c(null),[Z,$]=c(null),_=()=>{Q({shouldCallAuthOnSuccess:!0}),T(!1),setTimeout((()=>{U(null),J(null)}),500)},{initEnrollmentWithPasskey:oo,submitEnrollmentWithPasskey:eo}=k(),[no,to]=c(!1),[ro,io]=c(null);H.current=_;let so=L?.mfaMethods.includes("sms"),co=!!L?.phone,mo=L?.mfaMethods.includes("totp"),ao=L?.mfaMethods.includes("passkey"),lo=so||mo||ao,po=L?.linkedAccounts.filter((o=>"passkey"===o.type)).map((o=>o.credentialId))??[];function ho(){U(null),J(null)}if(m((()=>{lo&&X(!0)}),[lo]),!z||!L||!q/*#__PURE__*/)return o(e,{children:[/*#__PURE__*/n(d,{onClose:_},"header"),/*#__PURE__*/n(I,{children:/*#__PURE__*/n(g,{})}),/*#__PURE__*/n(b,{children:/*#__PURE__*/n(p,{})}),/*#__PURE__*/n(h,{})]});if("sms"===B)/*#__PURE__*/return o(e,{children:[/*#__PURE__*/n(d,{backFn:ho,onClose:_},"header"),/*#__PURE__*/n(S,{style:{marginBottom:"1.5rem"},children:/*#__PURE__*/n(t,{})}),/*#__PURE__*/n(A,{children:"Remove SMS verification?"}),/*#__PURE__*/o(P,{children:["MFA adds an extra layer of security to your ",q?.name," account. Make sure you have other methods to secure your account."]}),/*#__PURE__*/n(x,{children:/*#__PURE__*/n(a,{warn:!0,onClick:async function(){U(null);try{await O()}catch(o){U(null)}},children:"Remove SMS for MFA"})}),/*#__PURE__*/n(h,{})]});if("totp"===B)/*#__PURE__*/return o(e,{children:[/*#__PURE__*/n(d,{backFn:ho,onClose:_},"header"),/*#__PURE__*/n(S,{style:{marginBottom:"1.5rem"},children:/*#__PURE__*/n(t,{})}),/*#__PURE__*/n(A,{children:"Remove Authenticator App verification?"}),/*#__PURE__*/o(P,{children:["MFA adds an extra layer of security to your ",q?.name," account. Make sure you have other methods to secure your account."]}),/*#__PURE__*/n(x,{children:/*#__PURE__*/n(a,{warn:!0,onClick:async function(){U(null);try{await W()}catch(o){U(null)}},children:"Remove Authenticator App for MFA"})}),/*#__PURE__*/n(h,{})]});if("passkey"===B){let r=D?.mfaEnrollmentFlow?.shouldUnlinkOnUnenrollMfa??!0;/*#__PURE__*/return o(e,{children:[/*#__PURE__*/n(d,{backFn:ho,onClose:_},"header"),/*#__PURE__*/n(S,{style:{marginBottom:"1.5rem"},children:/*#__PURE__*/n(t,{})}),/*#__PURE__*/n(A,{children:"Are you sure you want to remove this passkey?"}),/*#__PURE__*/n(P,{children:r?"Removing your passkey will remove as both a verification method and a login method.":"Removing your passkey will remove as a verification method."}),/*#__PURE__*/n(x,{children:/*#__PURE__*/n(a,{warn:!0,onClick:async function(){U(null);try{await N({removeForLogin:D?.mfaEnrollmentFlow?.shouldUnlinkOnUnenrollMfa})}catch(o){U(null)}},children:"Yes, remove"})}),/*#__PURE__*/n(h,{})]})}if(0===D.mfaEnrollmentFlow.mfaMethods.length&&!lo)/*#__PURE__*/return o(e,{children:[/*#__PURE__*/n(d,{onClose:_},"header"),/*#__PURE__*/n(S,{style:{marginBottom:"1.5rem"},children:/*#__PURE__*/n(r,{})}),/*#__PURE__*/n(A,{children:"Add more security"}),/*#__PURE__*/o(P,{children:[q?.name," does not have any verification methods enabled."]}),/*#__PURE__*/n(x,{children:/*#__PURE__*/n(a,{onClick:_,children:"Close"})}),/*#__PURE__*/n(h,{})]});let uo=!lo&&!V;return uo?/*#__PURE__*/o(e,{children:[/*#__PURE__*/n(d,{onClose:_},"header"),/*#__PURE__*/n(S,{style:{marginBottom:"1.5rem"},children:/*#__PURE__*/n(r,{})}),/*#__PURE__*/n(A,{children:"Transaction Protection"}),/*#__PURE__*/n(P,{children:"Set up transaction protection to add an extra layer of security to your account"}),/*#__PURE__*/o(F,{children:[/*#__PURE__*/o(E,{children:[/*#__PURE__*/n(R,{children:/*#__PURE__*/n(i,{})}),"Enable 2-Step verification for your ",q?.name," wallet."]}),/*#__PURE__*/o(E,{children:[/*#__PURE__*/n(R,{children:/*#__PURE__*/n(s,{})}),"You'll be prompted to authenticate to complete transactions."]})]}),/*#__PURE__*/o(x,{children:[/*#__PURE__*/n(a,{onClick:()=>X(!0),children:"Continue"}),/*#__PURE__*/n(l,{onClick:_,children:"Not now"})]}),/*#__PURE__*/n(h,{})]}):"sms"===G?/*#__PURE__*/n(M,{appName:q?.name||"Privy",onComplete:_,onReset:ho,onClose:_}):"totp"===G&&Z?/*#__PURE__*/n(w,{onComplete:_,onClose:_,onReset:ho,totpInfo:{...Z,appName:q?.name||"Privy"}}):"passkey"===G?/*#__PURE__*/n(C,{appName:q?.name||"Privy",onComplete:_,onReset:ho,onClose:_}):/*#__PURE__*/n(v,{showIntro:uo,userMfaMethods:L.mfaMethods,appMfaMethods:q.mfa.methods,userHasAuthSms:co,onBackToIntro:function(){X(!1)},handleSelectMethod:async function(o){return await Y().catch(io),"totp"===o?(J(o),$(null),void K().then((o=>{$(o)})).catch((()=>{$(null),ho()}))):"passkey"===o&&1===po.length?await async function(){to(!0);try{await oo(),await eo({credentialIds:po},{removeForLogin:D?.mfaEnrollmentFlow?.shouldUnlinkOnUnenrollMfa})}catch(o){io(o)}finally{to(!1)}}():void J(o)},isTotpLoading:"totp"===G&&!Z,isPasskeyLoading:no,error:ro,onClose:_,setRemovingMfaMethod:async o=>{await Y().catch(io),U(o)}})};export{L as MfaEnrollmentFlowScreen};
@@ -1 +1 @@
1
- import{jsx as o}from"react/jsx-runtime";import{useState as n,useMemo as t,useEffect as e}from"react";import{formatUnits as r}from"viem";import{SolanaClient as i}from"@privy-io/js-sdk-core";import{getImportedPrivySolanaWallet as s,getPrivyPrimaryWallet as a,getSolanaSigningAndRootWallet as c,getEntropyDetailsFromAccount as m}from"../../client/user.mjs";import{useAppConfig as l}from"../../configuration/context.mjs";import{signSolanaTransaction as p,sendSolanaTransaction as d}from"../../embedded-wallets/solana/transaction.mjs";import{usePrivyInternal as u}from"../../hooks/internal-context.mjs";import{usePrivyModal as f}from"../../hooks/modal-context.mjs";import{usePrivyContext as h}from"../../hooks/privy-context.mjs";import{useGetSolPrice as j}from"../../hooks/useGetSolPrice.mjs";import{getSolanaNetworkFromRpcEndpoint as g}from"../../lib/solana/index.mjs";import{getNativeCurrencyFromLamports as y,parseSolanaTransaction as k,isVersionedTransaction as b,getDollarsFromLamport as S,createSolanaTransactionReceipt as w}from"../../lib/solana/transaction.mjs";import{ErrorScreenView as T}from"../ErrorScreen.mjs";import{SendSolanaTransactionScreenView as I}from"../SendTransactionScreen/SendTransactionScreenView.mjs";import{TransactionErrorView as v}from"../SendTransactionScreen/TransactionErrorView.mjs";import{ModalScreen as A}from"../index.mjs";import{SolanaTransactionReceiptView as x}from"./SolanaTransactionReceiptView.mjs";import"viem/utils";import"../../config.mjs";import"../../configuration/defaultClientConfig.mjs";import"../../constants.mjs";import"../../configuration/login-methods.mjs";import"../../configuration/wallets.mjs";import"../../connectors/chains/index.mjs";import"../../connectors/chains/arbitrum.mjs";import"../../connectors/chains/arbitrumSepolia.mjs";import"../../connectors/chains/avalanche.mjs";import"../../connectors/chains/avalancheFuji.mjs";import"../../connectors/chains/base.mjs";import"../../connectors/chains/baseSepolia.mjs";import"../../connectors/chains/berachainArtio.mjs";import"../../connectors/chains/celo.mjs";import"../../connectors/chains/celoAlfajores.mjs";import"../../connectors/chains/filecoin.mjs";import"../../connectors/chains/filecoinCalibration.mjs";import"../../connectors/chains/garnetHolesky.mjs";import"../../connectors/chains/holesky.mjs";import"../../connectors/chains/linea.mjs";import"../../connectors/chains/lineaTestnet.mjs";import"../../connectors/chains/lukso.mjs";import"../../connectors/chains/mainnet.mjs";import"../../connectors/chains/optimism.mjs";import"../../connectors/chains/optimismSepolia.mjs";import"../../connectors/chains/polygon.mjs";import"../../connectors/chains/polygonAmoy.mjs";import"../../connectors/chains/redstone.mjs";import"../../connectors/chains/sepolia.mjs";import"../../connectors/chains/zora.mjs";import"../../connectors/chains/zoraSepolia.mjs";import"../../connectors/chains/zoraTestnet.mjs";import"../../connectors/chains/utils.mjs";import"../../theme.mjs";import"tinycolor2";import"../../lib/cybr53.mjs";import"../../utils/buffer/readBigInt64LE.mjs";import"../../lib/attempt.mjs";import"../../hooks/index.mjs";import"../../components/PrefetchedImage.mjs";import"@heroicons/react/24/outline/ExclamationTriangleIcon";import"@heroicons/react/24/outline/PhoneIcon";import"styled-components";import"../../components/Button.mjs";import"../../components/Loader.mjs";import"../../components/CircleBorder.mjs";import"../../components/ModalHeader.mjs";import"@heroicons/react/24/outline/ArrowLeftIcon";import"@heroicons/react/24/outline/ArrowRightIcon";import"@heroicons/react/24/outline/QuestionMarkCircleIcon";import"@heroicons/react/24/outline/XMarkIcon";import"../../components/layout/StackedContainer.mjs";import"../../embedded-wallets/errors.mjs";import"../../embedded-wallets/types.mjs";import"../../errors.mjs";import"ofetch";import"../../hooks/captcha-context.mjs";import"../../utils/index.mjs";import"../../connectors/get-legacy-injected-providers.mjs";import"../../connectors/is-wallet-installed.mjs";import"../../utils/eth/getPublicClient.mjs";import"../../svg/lock-closed.mjs";import"@heroicons/react/24/outline";import"../../components/ModalFooter.mjs";import"../../svg/protected-by-privy.mjs";import"../../components/primitives/InteractiveLabel.mjs";import"../../components/ui/typography/LabelSm.mjs";import"../../components/ui/layout/Row.mjs";import"../../components/ui/typography/ErrorMessage.mjs";import"../../components/ui/typography/Subtitle.mjs";import"../../components/ui/typography/Title.mjs";import"../../components/ui/typography/Value.mjs";import"../../components/ui/animation/LoadingSkeleton.mjs";import"../../components/ui/wallet/Address.mjs";import"@heroicons/react/24/outline/CheckIcon";import"@heroicons/react/24/outline/Square2StackIcon";import"../../components/ui/wallet/WalletInfoCard.mjs";import"../../components/ui/chips/Chip.mjs";import"../../components/ui/layout/Column.mjs";import"../../components/ui/typography/LabelXs.mjs";import"../../components/ui/wallet/shared.mjs";import"../LandingScreen/styles.mjs";import"../SendTransactionScreen/TokenDescription.mjs";import"../SendTransactionScreen/TransactionDetail.mjs";import"../SendTransactionScreen/TransactionValidation.mjs";import"../../components/Checkbox.mjs";import"../../components/Pill.mjs";import"../SendTransactionScreen/useTransactionDetails.mjs";import"@heroicons/react/24/outline/ClipboardDocumentCheckIcon";import"@heroicons/react/24/outline/ClipboardDocumentIcon";import"@heroicons/react/24/outline/ExclamationCircleIcon";import"@heroicons/react/24/outline/CheckCircleIcon";import"../../components/CircleBackground.mjs";import"../../components/Layouts.mjs";import"../../components/ScreenHeader.mjs";import"../../components/embedded-wallets/SolanaTransactionDetails.mjs";import"@heroicons/react/24/outline/ChevronDownIcon";import"../../components/embedded-wallets/PriceDisplay.mjs";import"../../lib/ethers.mjs";import"../../components/embedded-wallets/WalletLink.mjs";const C=()=>{let{data:C,onUserCloseViaDialogOrKeybindRef:O,setModalData:E,navigate:L}=f(),{client:D,closePrivyModal:P,walletProxy:W}=u(),B=l(),{user:M,getAccessToken:V}=h(),[F,R]=n(C?.sendSolanaTransaction?.transactionRequest),[U,H]=n(),[N,$]=n(),[q,z]=n(0),[_,G]=n({value:0n,isLoading:!1}),[X,K]=n(!1),[Q,J]=n(),[Y,Z]=n(),oo=C?.sendSolanaTransaction?.connection,no=C?.sendSolanaTransaction?.transactingWallet,to=C?.sendSolanaTransaction?.signOnly??!1,eo=U?.instructions.length??1,ro=no?.imported?s(M):a(M),io=g(oo?.rpcEndpoint||""),so="fiat-currency"===B.embeddedWallets.priceDisplay.primary,{solPrice:ao,isSolPriceLoading:co}=j({enabled:so}),mo=t((()=>{let o,n;if(!U)return;let t=U.spender;0===q&&no?.address===t&&(o=y(U.fee));let e=y(_.value,3,!0),i=U.instructions[q];if(!i)return{fee:o,spender:t,balance:e};if("unknown"===i.type)return{fee:o,spender:t,program:i.program,balance:e};if("ata-creation"===i.type)return{fee:o,spender:t,balance:e,tokenAccountOwner:i.owner,tokenAccount:i.ata,tokenAddress:i.mint};let s=i.fromAccount,a="sol-transfer"===i.type?i.toAccount:i.toAccount||i.toAta,c="spl-transfer"===i.type?i.token.address:void 0;return null!=o&&"SOL"===i.token.symbol&&(n=y(i.value+U.fee)),{fee:o,spender:t,from:s,to:a,tokenAddress:c,amount:`${r(i.value,i.token.decimals)} ${i.token.symbol}`.trim(),total:n,balance:e}}),[U,q,no?.address,_]),lo=t((()=>{let o,n;if(!U||!so||!ao||co)return;function t(...o){return S(o.reduce(((o,n)=>o+n),0n),ao??0)}0===q&&no?.address===U.spender&&(o=t(U.fee));let e=t(_.value),i=U.instructions[q];return i&&"unknown"!==i.type&&"ata-creation"!==i.type?(null!=o&&"SOL"===i.token.symbol&&(n=t(i.value,U.fee)),{fee:o,amount:"SOL"===i.token.symbol?t(i.value):`${r(i.value,i.token.decimals)} ${i.token.symbol}`.trim(),total:n,balance:e}):{fee:o,balance:e}}),[U,so,ao,co,no?.address,q,_]),po=t((()=>{if(to||!U||_.isLoading||q>0)return!1;let o=U.instructions[q];if(!o)return!1;let n=0n;return no?.address===U.spender&&(n+=U.fee),"value"in o&&no?.address===o.fromAccount&&"SOL"===o.token.symbol&&(n+=o.value),_.value<n}),[U,_,q,to]);if(e((()=>{!async function(){if(F&&oo&&D)try{$(void 0);let o=await k({tx:F,connection:oo,client:D});H(o),z(0)}catch(o){console.error("Failed to prepare transaction",o),$(o)}}()}),[F,oo,D]),e((()=>{(async function(){if(!no||!oo)return;G({value:_.value,isLoading:!0});let o=new i({name:"mainnet-beta",rpcUrl:oo.rpcEndpoint});G({value:await o.getBalance(no.address).catch((()=>0n))??0n,isLoading:!1})})().catch(console.error)}),[U,oo]),!(F&&C?.sendSolanaTransaction&&no&&oo)){let n=Error("Invalid transaction request");/*#__PURE__*/return o(T,{error:n,onClick:()=>{C?.sendSolanaTransaction?.onFailure(n),P({shouldCallAuthOnSuccess:!1})}})}let uo=()=>{if(!X)return Q?C?.sendSolanaTransaction?.onSuccess(Q):(C?.sendSolanaTransaction?.onFailure(Y??N??Error("User exited the modal before submitting the transaction")),z(0)),P({shouldCallAuthOnSuccess:!1})};O.current=uo;let fo=C.sendTransaction?.uiOptions?.transactionInfo?.contractInfo?.imgUrl?/*#__PURE__*/o("img",{src:C.sendTransaction.uiOptions.transactionInfo.contractInfo.imgUrl,alt:C.sendTransaction.uiOptions.transactionInfo.contractInfo.imgAltText}):null,ho=!!(C.funding&&C.funding.supportedOptions.length>0),jo=po&&ho;return Q?/*#__PURE__*/o(x,{instructions:U?.instructions.reduce(((o,n)=>("ata-creation"===n.type&&o.push({tokenAccountOwner:n.owner,tokenAccount:n.ata}),"spl-transfer"===n.type&&o.push({from:n.fromAccount,to:n.toAccount||n.toAta,amount:n.value,token:n.token}),"sol-transfer"===n.type&&o.push({from:n.fromAccount,to:n.toAccount,amount:n.value,token:n.token}),o)),[])??[],fees:0===q?Q.fees:0n,onClose:uo,transactionInfo:C.sendTransaction?.uiOptions.transactionInfo,solPrice:ao,receiptHeader:C.sendTransaction?.uiOptions.successHeader,receiptDescription:C.sendTransaction?.uiOptions.successDescription,rpcEndpoint:oo.rpcEndpoint,signOnly:to}):Y?/*#__PURE__*/o(v,{transactionError:Y,connection:oo,onClose:uo,network:"solana",onRetry:async()=>{Z(void 0);let{blockhash:o}=await oo.getLatestBlockhash();b(F)?F.message.recentBlockhash=o:F.recentBlockhash=o,R(F)}}):/*#__PURE__*/o(I,{img:fo,title:C.sendTransaction?.uiOptions?.transactionInfo?.title||"Confirm transaction",subtitle:C.sendTransaction?.uiOptions?.description||`${B.name} wants your permission to approve the following transaction.`,cta:jo?"Add funds":C.sendTransaction?.uiOptions?.buttonText||"Approve",transactionIndex:q,maxIndex:eo-1,network:"mainnet-beta"==io?"Solana":io,blockExplorerUrl:"https://explorer.solana.com",total:so?lo?.total:mo?.total,amount:so?lo?.amount:mo?.amount,fee:so?lo?.fee:mo?.fee,balance:so?lo?.balance:mo?.balance,from:mo?.from,to:mo?.to,tokenAccount:mo?.tokenAccount,tokenAccountOwner:mo?.tokenAccountOwner,tokenAddress:mo?.tokenAddress,transactingWalletAddress:no.address,programAddress:mo?.program,disabled:po&&!ho,isSubmitting:X,isPreparing:!U||_.isLoading,isTokenPriceLoading:so&&co,isMissingFunds:po,submitError:Y??void 0,parseError:N,onClick:jo?async()=>{if(!no)return;if(!ho)throw Error("Funding wallet is not enabled");let o=A.FUNDING_METHOD_SELECTION_SCREEN;E({...C,funding:{...C.funding,methodScreen:o}}),L(o)}:async()=>{if(q<(U?.instructions.length??1)-1)z(q+1);else try{K(!0);let o=await V();if(X||!o||!no||!W||!M||!ro)return;let{rootWallet:n}=c(M,no.address);if(!n)throw Error("No root wallet for transacting wallet found");let{entropyId:t,entropyIdVerifier:e}=m(n);if(to)await p({tx:F,accessToken:o,walletProxy:W,entropyId:t,entropyIdVerifier:e,transactingWalletAddress:no.address,transactingWalletIndex:no.walletIndex??0}),J(w("",F,null));else{let{signature:n,receipt:r}=await d({tx:F,accessToken:o,connection:oo,walletProxy:W,entropyId:t,entropyIdVerifier:e,transactingWalletAddress:no.address,transactingWalletIndex:no.walletIndex??0,transactionOptions:C.sendSolanaTransaction?.transactionOptions});J(w(n,F,r))}}catch(o){console.warn({transaction:F,error:o}),Z(o)}finally{K(!1)}},onClose:uo,onBack:q>0&&eo>1?()=>z(q-1):void 0})};export{C as SendSolanaTransactionScreen};
1
+ import{jsx as o}from"react/jsx-runtime";import{useState as n,useMemo as t,useEffect as e}from"react";import{formatUnits as r}from"viem";import{SolanaClient as i}from"@privy-io/js-sdk-core";import{getImportedPrivySolanaWallet as s,getPrivyPrimaryWallet as a,getSolanaSigningAndRootWallet as c,getEntropyDetailsFromAccount as m}from"../../client/user.mjs";import{useAppConfig as l}from"../../configuration/context.mjs";import{signSolanaTransaction as p,sendSolanaTransaction as d}from"../../embedded-wallets/solana/transaction.mjs";import{usePrivyInternal as u}from"../../hooks/internal-context.mjs";import{usePrivyModal as f}from"../../hooks/modal-context.mjs";import{usePrivyContext as h}from"../../hooks/privy-context.mjs";import{useGetSolPrice as j}from"../../hooks/useGetSolPrice.mjs";import{getSolanaNetworkFromRpcEndpoint as g}from"../../lib/solana/index.mjs";import{getNativeCurrencyFromLamports as y,parseSolanaTransaction as k,isVersionedTransaction as S,getDollarsFromLamport as b,createSolanaTransactionReceipt as w}from"../../lib/solana/transaction.mjs";import{ErrorScreenView as T}from"../ErrorScreen.mjs";import{SendSolanaTransactionScreenView as I}from"../SendTransactionScreen/SendTransactionScreenView.mjs";import{TransactionErrorView as v}from"../SendTransactionScreen/TransactionErrorView.mjs";import{ModalScreen as A}from"../index.mjs";import{SolanaTransactionReceiptView as x}from"./SolanaTransactionReceiptView.mjs";import"viem/utils";import"../../config.mjs";import"../../configuration/defaultClientConfig.mjs";import"../../constants.mjs";import"../../configuration/login-methods.mjs";import"../../configuration/wallets.mjs";import"../../connectors/chains/index.mjs";import"../../connectors/chains/arbitrum.mjs";import"../../connectors/chains/arbitrumSepolia.mjs";import"../../connectors/chains/avalanche.mjs";import"../../connectors/chains/avalancheFuji.mjs";import"../../connectors/chains/base.mjs";import"../../connectors/chains/baseSepolia.mjs";import"../../connectors/chains/berachainArtio.mjs";import"../../connectors/chains/celo.mjs";import"../../connectors/chains/celoAlfajores.mjs";import"../../connectors/chains/filecoin.mjs";import"../../connectors/chains/filecoinCalibration.mjs";import"../../connectors/chains/garnetHolesky.mjs";import"../../connectors/chains/holesky.mjs";import"../../connectors/chains/linea.mjs";import"../../connectors/chains/lineaTestnet.mjs";import"../../connectors/chains/lukso.mjs";import"../../connectors/chains/mainnet.mjs";import"../../connectors/chains/optimism.mjs";import"../../connectors/chains/optimismSepolia.mjs";import"../../connectors/chains/polygon.mjs";import"../../connectors/chains/polygonAmoy.mjs";import"../../connectors/chains/redstone.mjs";import"../../connectors/chains/sepolia.mjs";import"../../connectors/chains/zora.mjs";import"../../connectors/chains/zoraSepolia.mjs";import"../../connectors/chains/zoraTestnet.mjs";import"../../connectors/chains/utils.mjs";import"../../theme.mjs";import"tinycolor2";import"../../lib/cybr53.mjs";import"../../utils/buffer/readBigInt64LE.mjs";import"../../lib/attempt.mjs";import"../../hooks/index.mjs";import"../../components/PrefetchedImage.mjs";import"@heroicons/react/24/outline/ExclamationTriangleIcon";import"@heroicons/react/24/outline/PhoneIcon";import"styled-components";import"../../components/Button.mjs";import"../../components/Loader.mjs";import"../../components/CircleBorder.mjs";import"../../components/ModalHeader.mjs";import"@heroicons/react/24/outline/ArrowLeftIcon";import"@heroicons/react/24/outline/ArrowRightIcon";import"@heroicons/react/24/outline/QuestionMarkCircleIcon";import"@heroicons/react/24/outline/XMarkIcon";import"../../components/layout/StackedContainer.mjs";import"../../embedded-wallets/errors.mjs";import"../../embedded-wallets/types.mjs";import"../../errors.mjs";import"ofetch";import"../../hooks/captcha-context.mjs";import"../../utils/index.mjs";import"../../connectors/get-legacy-injected-providers.mjs";import"../../connectors/is-wallet-installed.mjs";import"../../utils/eth/getPublicClient.mjs";import"../../lib/funding/reservoir.mjs";import"../../svg/lock-closed.mjs";import"@heroicons/react/24/outline";import"../../components/ModalFooter.mjs";import"../../svg/protected-by-privy.mjs";import"../../components/primitives/InteractiveLabel.mjs";import"../../components/ui/typography/LabelSm.mjs";import"../../components/ui/layout/Row.mjs";import"../../components/ui/typography/ErrorMessage.mjs";import"../../components/ui/typography/Subtitle.mjs";import"../../components/ui/typography/Title.mjs";import"../../components/ui/typography/Value.mjs";import"../../components/ui/animation/LoadingSkeleton.mjs";import"../../components/ui/wallet/Address.mjs";import"@heroicons/react/24/outline/CheckIcon";import"@heroicons/react/24/outline/Square2StackIcon";import"../../components/ui/wallet/WalletInfoCard.mjs";import"../../components/ui/chips/Chip.mjs";import"../../components/ui/layout/Column.mjs";import"../../components/ui/typography/LabelXs.mjs";import"../../components/ui/wallet/shared.mjs";import"../LandingScreen/styles.mjs";import"../SendTransactionScreen/TokenDescription.mjs";import"../SendTransactionScreen/TransactionDetail.mjs";import"../SendTransactionScreen/TransactionValidation.mjs";import"../../components/Checkbox.mjs";import"../../components/Pill.mjs";import"../SendTransactionScreen/useTransactionDetails.mjs";import"@heroicons/react/24/outline/ClipboardDocumentCheckIcon";import"@heroicons/react/24/outline/ClipboardDocumentIcon";import"@heroicons/react/24/outline/ExclamationCircleIcon";import"@heroicons/react/24/outline/CheckCircleIcon";import"../../components/CircleBackground.mjs";import"../../components/Layouts.mjs";import"../../components/ScreenHeader.mjs";import"../../components/embedded-wallets/SolanaTransactionDetails.mjs";import"@heroicons/react/24/outline/ChevronDownIcon";import"../../components/embedded-wallets/PriceDisplay.mjs";import"../../lib/ethers.mjs";import"../../components/embedded-wallets/WalletLink.mjs";const C=()=>{let{data:C,onUserCloseViaDialogOrKeybindRef:O,setModalData:E,navigate:L}=f(),{client:D,closePrivyModal:P,walletProxy:W}=u(),B=l(),{user:M,getAccessToken:V}=h(),[F,R]=n(C?.sendSolanaTransaction?.transactionRequest),[U,H]=n(),[N,$]=n(),[q,z]=n(0),[_,G]=n({value:0n,isLoading:!1}),[X,K]=n(!1),[Q,J]=n(),[Y,Z]=n(),oo=C?.sendSolanaTransaction?.connection,no=C?.sendSolanaTransaction?.transactingWallet,to=C?.sendSolanaTransaction?.signOnly??!1,eo=U?.instructions.length??1,ro=no?.imported?s(M):a(M),io=g(oo?.rpcEndpoint||""),so="fiat-currency"===B.embeddedWallets.priceDisplay.primary,{solPrice:ao,isSolPriceLoading:co}=j({enabled:so}),mo=t((()=>{let o,n;if(!U)return;let t=U.spender;0===q&&no?.address===t&&(o=y(U.fee));let e=y(_.value,3,!0),i=U.instructions[q];if(!i)return{fee:o,spender:t,balance:e};if("unknown"===i.type)return{fee:o,spender:t,program:i.program,balance:e};if("ata-creation"===i.type)return{fee:o,spender:t,balance:e,tokenAccountOwner:i.owner,tokenAccount:i.ata,tokenAddress:i.mint};let s=i.fromAccount,a="sol-transfer"===i.type?i.toAccount:i.toAccount||i.toAta,c="spl-transfer"===i.type?i.token.address:void 0;return null!=o&&"SOL"===i.token.symbol&&(n=y(i.value+U.fee)),{fee:o,spender:t,from:s,to:a,tokenAddress:c,amount:`${r(i.value,i.token.decimals)} ${i.token.symbol}`.trim(),total:n,balance:e}}),[U,q,no?.address,_]),lo=t((()=>{let o,n;if(!U||!so||!ao||co)return;function t(...o){return b(o.reduce(((o,n)=>o+n),0n),ao??0)}0===q&&no?.address===U.spender&&(o=t(U.fee));let e=t(_.value),i=U.instructions[q];return i&&"unknown"!==i.type&&"ata-creation"!==i.type?(null!=o&&"SOL"===i.token.symbol&&(n=t(i.value,U.fee)),{fee:o,amount:"SOL"===i.token.symbol?t(i.value):`${r(i.value,i.token.decimals)} ${i.token.symbol}`.trim(),total:n,balance:e}):{fee:o,balance:e}}),[U,so,ao,co,no?.address,q,_]),po=t((()=>{if(to||!U||_.isLoading||q>0)return!1;let o=U.instructions[q];if(!o)return!1;let n=0n;return no?.address===U.spender&&(n+=U.fee),"value"in o&&no?.address===o.fromAccount&&"SOL"===o.token.symbol&&(n+=o.value),_.value<n}),[U,_,q,to]);if(e((()=>{!async function(){if(F&&oo&&D)try{$(void 0);let o=await k({tx:F,connection:oo,client:D});H(o),z(0)}catch(o){console.error("Failed to prepare transaction",o),$(o)}}()}),[F,oo,D]),e((()=>{(async function(){if(!no||!oo)return;G({value:_.value,isLoading:!0});let o=new i({name:"mainnet-beta",rpcUrl:oo.rpcEndpoint});G({value:await o.getBalance(no.address).catch((()=>0n))??0n,isLoading:!1})})().catch(console.error)}),[U,oo]),!(F&&C?.sendSolanaTransaction&&no&&oo)){let n=Error("Invalid transaction request");/*#__PURE__*/return o(T,{error:n,onClick:()=>{C?.sendSolanaTransaction?.onFailure(n),P({shouldCallAuthOnSuccess:!1})}})}let uo=()=>{if(!X)return Q?C?.sendSolanaTransaction?.onSuccess(Q):(C?.sendSolanaTransaction?.onFailure(Y??N??Error("User exited the modal before submitting the transaction")),z(0)),P({shouldCallAuthOnSuccess:!1})};O.current=uo;let fo=C.sendSolanaTransaction?.uiOptions?.transactionInfo?.contractInfo?.imgUrl?/*#__PURE__*/o("img",{src:C.sendSolanaTransaction.uiOptions.transactionInfo.contractInfo.imgUrl,alt:C.sendSolanaTransaction.uiOptions.transactionInfo.contractInfo.imgAltText}):null,ho=!!(C.funding&&C.funding.supportedOptions.length>0),jo=po&&ho;return Q?/*#__PURE__*/o(x,{instructions:U?.instructions.reduce(((o,n)=>("ata-creation"===n.type&&o.push({tokenAccountOwner:n.owner,tokenAccount:n.ata}),"spl-transfer"===n.type&&o.push({from:n.fromAccount,to:n.toAccount||n.toAta,amount:n.value,token:n.token}),"sol-transfer"===n.type&&o.push({from:n.fromAccount,to:n.toAccount,amount:n.value,token:n.token}),o)),[])??[],fees:0===q?Q.fees:0n,onClose:uo,transactionInfo:C.sendSolanaTransaction?.uiOptions.transactionInfo,solPrice:ao,receiptHeader:C.sendSolanaTransaction?.uiOptions.successHeader,receiptDescription:C.sendSolanaTransaction?.uiOptions.successDescription,rpcEndpoint:oo.rpcEndpoint,signOnly:to}):Y?/*#__PURE__*/o(v,{transactionError:Y,connection:oo,onClose:uo,network:"solana",onRetry:async()=>{Z(void 0);let{blockhash:o}=await oo.getLatestBlockhash();S(F)?F.message.recentBlockhash=o:F.recentBlockhash=o,R(F)}}):/*#__PURE__*/o(I,{img:fo,title:C.sendSolanaTransaction?.uiOptions?.transactionInfo?.title||"Confirm transaction",subtitle:C.sendSolanaTransaction?.uiOptions?.description||`${B.name} wants your permission to approve the following transaction.`,cta:jo?"Add funds":C.sendSolanaTransaction?.uiOptions?.buttonText||"Approve",transactionIndex:q,maxIndex:eo-1,network:"mainnet-beta"==io?"Solana":io,blockExplorerUrl:"https://explorer.solana.com",total:so?lo?.total:mo?.total,amount:so?lo?.amount:mo?.amount,fee:so?lo?.fee:mo?.fee,balance:so?lo?.balance:mo?.balance,from:mo?.from,to:mo?.to,tokenAccount:mo?.tokenAccount,tokenAccountOwner:mo?.tokenAccountOwner,tokenAddress:mo?.tokenAddress,transactingWalletAddress:no.address,programAddress:mo?.program,disabled:po&&!ho,isSubmitting:X,isPreparing:!U||_.isLoading,isTokenPriceLoading:so&&co,isMissingFunds:po,submitError:Y??void 0,parseError:N,onClick:jo?async()=>{if(!no)return;if(!ho)throw Error("Funding wallet is not enabled");let o=A.FUNDING_METHOD_SELECTION_SCREEN;E({...C,funding:{...C.funding,methodScreen:o}}),L(o)}:async()=>{if(q<(U?.instructions.length??1)-1)z(q+1);else try{K(!0);let o=await V();if(X||!o||!no||!W||!M||!ro)return;let{rootWallet:n}=c(M,no.address);if(!n)throw Error("No root wallet for transacting wallet found");let{entropyId:t,entropyIdVerifier:e}=m(n);if(to)await p({tx:F,accessToken:o,walletProxy:W,entropyId:t,entropyIdVerifier:e,transactingWalletAddress:no.address,transactingWalletIndex:no.walletIndex??0}),J(w("",F,null));else{let{signature:n,receipt:r}=await d({tx:F,accessToken:o,connection:oo,walletProxy:W,entropyId:t,entropyIdVerifier:e,transactingWalletAddress:no.address,transactingWalletIndex:no.walletIndex??0,transactionOptions:C.sendSolanaTransaction?.transactionOptions});J(w(n,F,r))}}catch(o){console.warn({transaction:F,error:o}),Z(o)}finally{K(!1)}},onClose:uo,onBack:q>0&&eo>1?()=>z(q-1):void 0})};export{C as SendSolanaTransactionScreen};