@privy-io/react-auth 1.98.2 → 1.98.4-beta-20241220190625

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 (187) hide show
  1. package/dist/cjs/abstract-smart-wallets.js +1 -1
  2. package/dist/cjs/client.js +1 -1
  3. package/dist/cjs/components/ConnectPhoneForm.js +1 -1
  4. package/dist/cjs/components/LoginModal.js +1 -1
  5. package/dist/cjs/components/PhoneCountryDropdown.js +1 -1
  6. package/dist/cjs/components/embedded-wallets/PriceDisplay.js +1 -1
  7. package/dist/cjs/components/embedded-wallets/SolanaTransactionDetails.js +1 -1
  8. package/dist/cjs/components/embedded-wallets/TransactionDetails.js +1 -1
  9. package/dist/cjs/components/embedded-wallets/TransactionDetailsWrapper.js +1 -1
  10. package/dist/cjs/components/embedded-wallets/TransactionTotal.js +1 -1
  11. package/dist/cjs/components/embedded-wallets/WalletLink.js +1 -1
  12. package/dist/cjs/components/embedded-wallets/index.js +1 -1
  13. package/dist/cjs/connectors/coinbase.js +1 -1
  14. package/dist/cjs/connectors/embedded.js +1 -1
  15. package/dist/cjs/connectors/embeddedProvider.js +1 -1
  16. package/dist/cjs/connectors/errors.js +1 -1
  17. package/dist/cjs/connectors/ethereum/EthereumNullConnector.js +1 -1
  18. package/dist/cjs/connectors/ethereum/index.js +1 -1
  19. package/dist/cjs/connectors/index.js +1 -1
  20. package/dist/cjs/connectors/injected.js +1 -1
  21. package/dist/cjs/connectors/metamask.js +1 -1
  22. package/dist/cjs/connectors/phantom-solana.js +1 -1
  23. package/dist/cjs/connectors/phantom.js +1 -1
  24. package/dist/cjs/connectors/privyProxyProvider.js +1 -1
  25. package/dist/cjs/connectors/solana/SolanaNullConnector.js +1 -1
  26. package/dist/cjs/connectors/solana/index.js +1 -1
  27. package/dist/cjs/connectors/solana/toSolanaWalletConnectors.js +1 -1
  28. package/dist/cjs/connectors/walletconnect-v2.js +1 -1
  29. package/dist/cjs/constants.js +1 -1
  30. package/dist/cjs/embedded-wallets/rpc/index.js +1 -1
  31. package/dist/cjs/embedded-wallets/solana/provider.js +1 -1
  32. package/dist/cjs/hooks/privy-provider.js +1 -1
  33. package/dist/cjs/hooks/smart-wallets-provider.js +1 -1
  34. package/dist/cjs/hooks/useFormattedBalances.js +1 -1
  35. package/dist/cjs/hooks/useFundSolanaWallet.js +1 -1
  36. package/dist/cjs/index.js +1 -1
  37. package/dist/cjs/lib/abstract-smart-wallets.js +1 -1
  38. package/dist/cjs/lib/ethers.js +1 -1
  39. package/dist/cjs/lib/funding/coinbase/triggerCoinbaseFlow.js +1 -1
  40. package/dist/cjs/lib/funding/prepareFundingMethods.js +1 -1
  41. package/dist/cjs/lib/smart-wallets-shared.js +1 -1
  42. package/dist/cjs/lib/smart-wallets.js +1 -1
  43. package/dist/cjs/plugins/solana-funding/plugin.js +1 -1
  44. package/dist/cjs/plugins/solana-funding/useSolanaFundingPlugin.js +1 -1
  45. package/dist/cjs/privy-components/user-pill/PrimaryWallet.js +1 -1
  46. package/dist/cjs/privy-components/user-pill/UserMenu.js +1 -1
  47. package/dist/cjs/privy-components/user-pill/UserPill.js +2 -2
  48. package/dist/cjs/privy-components/user-pill/UserPill.test.js +1 -1
  49. package/dist/cjs/privy-components/user-pill/screens/AccountScreen.js +1 -1
  50. package/dist/cjs/privy-components/user-pill/screens/MenuScreen.js +1 -1
  51. package/dist/cjs/privy-components/user-pill/screens/WalletActionsScreen.js +1 -1
  52. package/dist/cjs/privy-components/wallets-pill/ActiveWalletCard.js +1 -1
  53. package/dist/cjs/privy-components/wallets-pill/ConnectWalletView.js +1 -1
  54. package/dist/cjs/privy-components/wallets-pill/SelectActiveWalletView.js +1 -1
  55. package/dist/cjs/privy-components/wallets-pill/WalletCardView.js +1 -1
  56. package/dist/cjs/privy-components/wallets-pill/WalletsDialog.js +1 -1
  57. package/dist/cjs/privy-provider-9bKjf4YL.js +2 -0
  58. package/dist/cjs/screens/ConnectOnlyStatusScreen.js +1 -1
  59. package/dist/cjs/screens/ConnectionStatusScreen.js +2 -2
  60. package/dist/cjs/screens/Funding/AwaitingEvmToSolBridgingScreen.js +1 -1
  61. package/dist/cjs/screens/Funding/AwaitingExternalTransferScreen.js +2 -2
  62. package/dist/cjs/screens/Funding/BridgeNetworkSelectionView.js +1 -1
  63. package/dist/cjs/screens/Funding/FundingEditAmountScreen.js +1 -1
  64. package/dist/cjs/screens/Funding/FundingMethodSelectionScreen.js +1 -1
  65. package/dist/cjs/screens/Funding/ManualTransferScreen.js +1 -1
  66. package/dist/cjs/screens/LandingScreen/ConnectOrCreateScreen.js +1 -1
  67. package/dist/cjs/screens/LandingScreen/CustomLandingScreenView.js +1 -1
  68. package/dist/cjs/screens/LandingScreen/LandingScreen.js +1 -1
  69. package/dist/cjs/screens/LandingScreen/LandingScreenView.js +1 -1
  70. package/dist/cjs/screens/LandingScreen/SmsButton.js +1 -1
  71. package/dist/cjs/screens/LinkPhoneScreen.js +1 -1
  72. package/dist/cjs/screens/LinkWalletScreen.js +1 -1
  73. package/dist/cjs/screens/MfaScreens/EnrollSms.js +1 -1
  74. package/dist/cjs/screens/MfaScreens/MfaEnrollmentFlowScreen.js +1 -1
  75. package/dist/cjs/screens/MfaScreens/MfaVerifyFlowScreen.js +1 -1
  76. package/dist/cjs/screens/MfaScreens/VerifyWithPasskey.js +1 -1
  77. package/dist/cjs/screens/SendSolanaTransactionScreen/SendSolanaTransactionScreen.js +1 -1
  78. package/dist/cjs/screens/SendSolanaTransactionScreen/SolanaTransactionReceiptView.js +1 -1
  79. package/dist/cjs/screens/SendTransactionScreen/SendTransactionScreen.js +1 -1
  80. package/dist/cjs/screens/SendTransactionScreen/TransactionReceiptView.js +1 -1
  81. package/dist/cjs/screens/SendTransactionScreen/index.js +1 -1
  82. package/dist/cjs/screens/SendTransactionScreen/usePrepareTransaction.js +1 -1
  83. package/dist/cjs/screens/SignRequestScreen.js +1 -1
  84. package/dist/cjs/screens/UpdatePhoneScreen.js +1 -1
  85. package/dist/cjs/smart-wallets.js +1 -1
  86. package/dist/cjs/solana.js +1 -1
  87. package/dist/cjs/ui.js +1 -1
  88. package/dist/esm/abstract-smart-wallets.mjs +1 -1
  89. package/dist/esm/client.mjs +1 -1
  90. package/dist/esm/components/ConnectPhoneForm.mjs +1 -1
  91. package/dist/esm/components/LoginModal.mjs +1 -1
  92. package/dist/esm/components/PhoneCountryDropdown.mjs +1 -1
  93. package/dist/esm/components/embedded-wallets/PriceDisplay.mjs +3 -3
  94. package/dist/esm/components/embedded-wallets/SolanaTransactionDetails.mjs +1 -1
  95. package/dist/esm/components/embedded-wallets/TransactionDetails.mjs +2 -2
  96. package/dist/esm/components/embedded-wallets/TransactionDetailsWrapper.mjs +1 -1
  97. package/dist/esm/components/embedded-wallets/TransactionTotal.mjs +1 -1
  98. package/dist/esm/components/embedded-wallets/WalletLink.mjs +1 -1
  99. package/dist/esm/components/embedded-wallets/index.mjs +1 -1
  100. package/dist/esm/connectors/coinbase.mjs +1 -1
  101. package/dist/esm/connectors/embedded.mjs +1 -1
  102. package/dist/esm/connectors/embeddedProvider.mjs +1 -1
  103. package/dist/esm/connectors/errors.mjs +1 -1
  104. package/dist/esm/connectors/ethereum/EthereumNullConnector.mjs +1 -1
  105. package/dist/esm/connectors/ethereum/index.mjs +1 -1
  106. package/dist/esm/connectors/index.mjs +1 -1
  107. package/dist/esm/connectors/injected.mjs +1 -1
  108. package/dist/esm/connectors/metamask.mjs +1 -1
  109. package/dist/esm/connectors/phantom-solana.mjs +1 -1
  110. package/dist/esm/connectors/phantom.mjs +1 -1
  111. package/dist/esm/connectors/privyProxyProvider.mjs +1 -1
  112. package/dist/esm/connectors/solana/SolanaNullConnector.mjs +1 -1
  113. package/dist/esm/connectors/solana/index.mjs +1 -1
  114. package/dist/esm/connectors/solana/toSolanaWalletConnectors.mjs +1 -1
  115. package/dist/esm/connectors/walletconnect-v2.mjs +1 -1
  116. package/dist/esm/constants.mjs +1 -1
  117. package/dist/esm/embedded-wallets/rpc/index.mjs +1 -1
  118. package/dist/esm/embedded-wallets/solana/provider.mjs +1 -1
  119. package/dist/esm/hooks/privy-provider.mjs +1 -1
  120. package/dist/esm/hooks/smart-wallets-provider.mjs +1 -1
  121. package/dist/esm/hooks/useFormattedBalances.mjs +1 -1
  122. package/dist/esm/hooks/useFundSolanaWallet.mjs +1 -1
  123. package/dist/esm/index.mjs +1 -1
  124. package/dist/esm/lib/abstract-smart-wallets.mjs +1 -1
  125. package/dist/esm/lib/ethers.mjs +1 -1
  126. package/dist/esm/lib/funding/coinbase/triggerCoinbaseFlow.mjs +1 -1
  127. package/dist/esm/lib/funding/prepareFundingMethods.mjs +1 -1
  128. package/dist/esm/lib/smart-wallets-shared.mjs +1 -1
  129. package/dist/esm/lib/smart-wallets.mjs +1 -1
  130. package/dist/esm/plugins/solana-funding/plugin.mjs +1 -1
  131. package/dist/esm/plugins/solana-funding/useSolanaFundingPlugin.mjs +1 -1
  132. package/dist/esm/privy-components/user-pill/PrimaryWallet.mjs +1 -1
  133. package/dist/esm/privy-components/user-pill/UserMenu.mjs +1 -1
  134. package/dist/esm/privy-components/user-pill/UserPill.mjs +2 -2
  135. package/dist/esm/privy-components/user-pill/UserPill.test.mjs +1 -1
  136. package/dist/esm/privy-components/user-pill/screens/AccountScreen.mjs +1 -1
  137. package/dist/esm/privy-components/user-pill/screens/MenuScreen.mjs +1 -1
  138. package/dist/esm/privy-components/user-pill/screens/WalletActionsScreen.mjs +1 -1
  139. package/dist/esm/privy-components/wallets-pill/ActiveWalletCard.mjs +1 -1
  140. package/dist/esm/privy-components/wallets-pill/ConnectWalletView.mjs +1 -1
  141. package/dist/esm/privy-components/wallets-pill/SelectActiveWalletView.mjs +1 -1
  142. package/dist/esm/privy-components/wallets-pill/WalletCardView.mjs +1 -1
  143. package/dist/esm/privy-components/wallets-pill/WalletsDialog.mjs +1 -1
  144. package/dist/esm/privy-provider-D7NWvJJy.mjs +2 -0
  145. package/dist/esm/screens/ConnectOnlyStatusScreen.mjs +1 -1
  146. package/dist/esm/screens/ConnectionStatusScreen.mjs +1 -1
  147. package/dist/esm/screens/Funding/AwaitingEvmToSolBridgingScreen.mjs +1 -1
  148. package/dist/esm/screens/Funding/AwaitingExternalTransferScreen.mjs +1 -1
  149. package/dist/esm/screens/Funding/BridgeNetworkSelectionView.mjs +1 -1
  150. package/dist/esm/screens/Funding/FundingEditAmountScreen.mjs +1 -1
  151. package/dist/esm/screens/Funding/FundingMethodSelectionScreen.mjs +1 -1
  152. package/dist/esm/screens/Funding/ManualTransferScreen.mjs +1 -1
  153. package/dist/esm/screens/LandingScreen/ConnectOrCreateScreen.mjs +1 -1
  154. package/dist/esm/screens/LandingScreen/CustomLandingScreenView.mjs +1 -1
  155. package/dist/esm/screens/LandingScreen/LandingScreen.mjs +1 -1
  156. package/dist/esm/screens/LandingScreen/LandingScreenView.mjs +1 -1
  157. package/dist/esm/screens/LandingScreen/SmsButton.mjs +1 -1
  158. package/dist/esm/screens/LinkPhoneScreen.mjs +1 -1
  159. package/dist/esm/screens/LinkWalletScreen.mjs +1 -1
  160. package/dist/esm/screens/MfaScreens/EnrollSms.mjs +1 -1
  161. package/dist/esm/screens/MfaScreens/MfaEnrollmentFlowScreen.mjs +1 -1
  162. package/dist/esm/screens/MfaScreens/MfaVerifyFlowScreen.mjs +1 -1
  163. package/dist/esm/screens/MfaScreens/VerifyWithPasskey.mjs +1 -1
  164. package/dist/esm/screens/SendSolanaTransactionScreen/SendSolanaTransactionScreen.mjs +1 -1
  165. package/dist/esm/screens/SendSolanaTransactionScreen/SolanaTransactionReceiptView.mjs +1 -1
  166. package/dist/esm/screens/SendTransactionScreen/SendTransactionScreen.mjs +1 -1
  167. package/dist/esm/screens/SendTransactionScreen/TransactionReceiptView.mjs +1 -1
  168. package/dist/esm/screens/SendTransactionScreen/index.mjs +1 -1
  169. package/dist/esm/screens/SendTransactionScreen/usePrepareTransaction.mjs +1 -1
  170. package/dist/esm/screens/SignRequestScreen.mjs +1 -1
  171. package/dist/esm/screens/UpdatePhoneScreen.mjs +1 -1
  172. package/dist/esm/smart-wallets.mjs +1 -1
  173. package/dist/esm/solana.mjs +1 -1
  174. package/dist/esm/ui.mjs +1 -1
  175. package/package.json +3 -2
  176. package/dist/cjs/PhoneCountryDropdown-JNQITU4K.js +0 -1
  177. package/dist/cjs/errors-3fxlG6WB.js +0 -1
  178. package/dist/cjs/ethers-De6TACnn.js +0 -1
  179. package/dist/cjs/formatters-DnPKmSM4.js +0 -1
  180. package/dist/cjs/index-DNFBYH7-.js +0 -1
  181. package/dist/cjs/privy-provider-D0xgmci9.js +0 -2
  182. package/dist/esm/PhoneCountryDropdown-BXDwBRL5.mjs +0 -1
  183. package/dist/esm/errors-9ucGZPEs.mjs +0 -1
  184. package/dist/esm/ethers-Cz-frLvN.mjs +0 -1
  185. package/dist/esm/formatters--YjgN2Dw.mjs +0 -1
  186. package/dist/esm/index-B3QfI7v9.mjs +0 -1
  187. package/dist/esm/privy-provider-BUtSVRxn.mjs +0 -2
@@ -0,0 +1,2 @@
1
+ import{jsx as e,jsxs as t}from"react/jsx-runtime";import{getAddress as r}from"@ethersproject/address";import{Web3Provider as a}from"@ethersproject/providers";import{createStore as n}from"mipd";import{useState as i,useRef as o,useEffect as s,useMemo as l}from"react";import{isAndroid as c}from"react-device-detect";import{populateTransactionRequest as d,calculateTotalGasEstimate as u,ProviderErrors as h}from"@privy-io/js-sdk-core";import{CustomJwtAccountFlow as p}from"./auth-flows/custom-jwt-account.mjs";import{UpdateEmailFlow as w,EmailFlow as m}from"./auth-flows/email.mjs";import{FarcasterFlow as y}from"./auth-flows/farcaster.mjs";import{GuestFlow as f}from"./auth-flows/guest.mjs";import{PasskeyFlow as g}from"./auth-flows/passkey.mjs";import{SiweFlow as E}from"./auth-flows/siwe.mjs";import{SiwsFlow as _}from"./auth-flows/siws.mjs";import{UpdateSmsFlow as A,SmsFlow as T}from"./auth-flows/sms.mjs";import{TelegramAuthFlow as v,detectCompletingTelegramFlow as C}from"./auth-flows/telegram.mjs";import{v4 as I}from"uuid";import{AccessToken as W}from"./accessToken.mjs";import{getEntropyDetailsFromAccount as k,convertUserResponseToUser as N,getPrivySolanaHDWallets as b,getPrivyPrimaryWallet as U,getEntropyDetailsFromUser as O,getPrivyEthereumWallet as S,getPrivyEthereumHDWallets as R,getImportedPrivyEthereumWallet as P,shouldProceedtoEmbeddedWalletCreationFlow as D,getPrivySolanaWallet as L,getLatestPrivyEthereumWallet as M,getEthereumSigningAndRootWallet as F,getSolanaSigningAndRootWallet as x,getLatestPrivySolanaWallet as j}from"./client/user.mjs";import B from"eventemitter3";import{CONNECTORS_STATE_KEY as V,CONNECTIONS_HISTORY_KEY as H,DEFAULT_PRIVY_API_URL as K,DEFAULT_API_TIMEOUT_MS as G,CLIENT_ANALYTICS_ID_KEY as z,CUSTOMER_ACCESS_TOKEN_STORAGE_KEY as q,PRIVY_ACCESS_TOKEN_STORAGE_KEY as $,getGuestCredentialStorageKey as Y,HEADLESS_OAUTH_KEY as X,OAUTH_DISABLE_SIGNUP_KEY as Q,STATE_CODE_KEY as J,WALLET_PROXY_TIMEOUT as Z,FORKED_TOKEN_STORAGE_KEY as ee}from"./constants.mjs";import te,{isLocalStorageAccessible as re}from"./storage.mjs";import{getJsonRpcProvider as ae,generateTypedDataWithDomainType as ne,toHex as ie,detectInjectedConnectors as oe,formatChainIdToCAIP2 as se}from"./utils/index.mjs";import{CoinbaseWalletConnector as le}from"./connectors/coinbase.mjs";import{EmbeddedWalletConnector as ce}from"./connectors/embedded.mjs";import{isSupportedEthereumRpcMethod as de}from"./embedded-wallets/rpc/types.mjs";import{Captcha as ue}from"./components/Captcha.mjs";import{LoginModal as he}from"./components/LoginModal.mjs";import{TelegramLoginButton as pe}from"./components/TelegramLoginButton.mjs";import{PrivyAppConfigProvider as we,useAppConfig as me,useIsServerConfigLoaded as ye}from"./configuration/context.mjs";import{areWalletArraysEqual as fe}from"./connectors/areWalletArraysEqual.mjs";import{PrivyProviderRpcError as ge,ProviderRpcError as Ee}from"./connectors/errors.mjs";import{isPhantomInstalled as _e}from"./connectors/is-wallet-installed.mjs";import{isBaseConnectedEthereumWallet as Ae}from"./connectors/isBaseConnectedEthereumWallet.mjs";import{PrivyProxyProvider as Te,AsExternalProvider as ve,AsAbstractProvider as Ce}from"./connectors/privyProxyProvider.mjs";import{isSolanaWalletConnector as Ie,isBaseConnectedSolanaWallet as We}from"./connectors/solana/index.mjs";import{WalletConnectV2WalletConnector as ke}from"./connectors/walletconnect-v2.mjs";import{EmbeddedWalletIframe as Ne}from"./embedded-wallets/EmbeddedWalletIframe.mjs";import{isWalletDelegated as be,getDelegatedWalletsData as Ue,getRootWalletDataForDelegation as Oe,getDelegatedWalletsForUser as Se}from"./embedded-wallets/delegated-actions.mjs";import{errorIndicatesRecoveryIsNeeded as Re}from"./embedded-wallets/errors.mjs";import{formatReceipt as Pe,getAndCheckBalance as De,sendTransaction as Le}from"./embedded-wallets/rpc/index.mjs";import{PrivyClientError as Me,formatApiError as Fe,formatPrivyError as xe,PrivyErrorCode as je,PrivyNotReadyError as Be,PrivyConnectorError as Ve,PrivyError as He}from"./errors.mjs";import{signSolanaTransaction as Ke,sendSolanaTransaction as Ge}from"./embedded-wallets/solana/transaction.mjs";import{extractChainIdFromCAIP2 as ze}from"./lib/caip2.mjs";import{USE_BROADCAST_CHANNEL_EVENT_TYPE as qe,isPrivyTheOAuthProvider as $e,CROSS_APP_BROADCAST_CHANNEL_NAME as Ye}from"./lib/cross-app/index.mjs";import{getCrossAppAuthorizationUrl as Xe,authenticateCrossAppAccount as Qe,getProviderAppMetadata as Je}from"./lib/cross-app/authFlow.mjs";import{popupCrossAppAuthFlow as Ze}from"./lib/cross-app/popupCrossAppAuthFlow.mjs";import{sendCrossAppRequest as et}from"./lib/cross-app/sendCrossAppRequest.mjs";import{getRecoveryAuthorizationUrl as tt,authenticateRecovery as rt,embeddedWalletRecoveryScreen as at,toEmbeddedWalletSetRecoveryScreen as nt}from"./lib/embeddedWalletRecovery.mjs";import{FUNDING_SCREENS as it,fundingScreenMethodMap as ot}from"./lib/funding/index.mjs";import{isFundingEnabled as st}from"./lib/funding/isFundingEnabled.mjs";import lt from"./lib/isEmbeddedWebview.mjs";import{triggerPopup as ct}from"./lib/popup/triggerPopup.mjs";import{popupOAuthFlow as dt}from"./lib/popupOAuthFlow.mjs";import{prepareSiweMessageWithNonce as ut}from"./lib/siwe.mjs";import{decodeSolanaTransaction as ht,createSolanaTransactionReceipt as pt}from"./lib/solana/transaction.mjs";import{toDisplayFromAccountType as wt}from"./lib/toDisplayFromAccountType.mjs";import{transformResponseToSnakeCase as mt}from"./passkeys/transformResponseToSnakeCase.mjs";import{PrivyPluginProvider as yt,usePlugins as ft}from"./plugins/context/PrivyPluginContext.mjs";import{SOLANA_FUNDING_PLUGIN_ID as gt}from"./plugins/solana-funding/id.mjs";import{RecentlyUsedAccountProvider as Et}from"./recent-login/context.mjs";import{ModalScreen as _t}from"./screens/index.mjs";import{Hide as At}from"./screens/LandingScreen/styles.mjs";import{GlobalStyle as Tt}from"./styles.mjs";import{notImplemented as vt}from"./hooks/index.mjs";import{CaptchaProvider as Ct}from"./hooks/captcha-context.mjs";import{privyEventsDefault as It,emitPrivyEvent as Wt,PrivyEventsContext as kt}from"./hooks/events-context.mjs";import{InternalPrivyContext as Nt}from"./hooks/internal-context.mjs";import{ModalProvider as bt}from"./hooks/modal-context.mjs";import{PrivyContext as Ut}from"./hooks/privy-context.mjs";import{UseWalletsContext as Ot}from"./hooks/useWallets.mjs";import{prepareSolanaFundingModalData as St,prepareFundingModalData as Rt}from"./lib/funding/prepareFundingModalData.mjs";import{detectCompletingOAuthFlow as Pt}from"./auth-flows/oauth/detectCompletingOAuthFlow.mjs";import{OAuthFlow as Dt}from"./auth-flows/oauth/OAuthFlow.mjs";import{getRpcTimeout as Lt}from"./connectors/getRpcTimeout.mjs";import{EmbeddedProviderError as Mt}from"./connectors/providerTypes.mjs";import{isEthereumWalletConnector as Ft}from"./connectors/ethereum/index.mjs";import{LegacyInjectedWalletConnector as xt,Injected6963WalletConnector as jt}from"./connectors/injected.mjs";import{MetamaskWalletConnector as Bt}from"./connectors/metamask.mjs";import{PhantomEthereumNullWalletConnector as Vt}from"./connectors/phantom.mjs";import{PhantomSolanaNullWalletConnector as Ht}from"./connectors/phantom-solana.mjs";import{Http as Kt}from"./http.mjs";import{getPaymasterContext as Gt}from"./lib/smart-wallet-helpers.mjs";import{transformOptionsToCamelCase as zt}from"./passkeys/transformOptionsToCamelCase.mjs";import{mfaPasswordlessSmsInitPath as qt,mfaPasskeyInitPath as $t,acceptTermsPath as Yt,unlinkEmailPath as Xt,unlinkPhonePath as Qt,unlinkWalletPath as Jt,siwsUnlinkWalletPath as Zt,unlinkOAuthPath as er,unlinkFarcasterPath as tr,telegramAccountUnlinkPath as rr,unlinkPasskeyPath as ar,delegatedActionsRevokePath as nr,analyticsEventsPath as ir,moonpayPluginOnRampPath as or,coinbaseOnRampInitPath as sr,coinbaseOnRampStatusPath as lr,siweInitPath as cr,siweAuthenticatePath as dr,siweLinkPath as ur,smartWalletLinkPath as hr,siwsInitPath as pr,siwsAuthenticatePath as wr,transferOAuthPath as mr,telegramAccountTransferPath as yr,transferFarcasterPath as fr,transferWalletPath as gr,transferPhonePath as Er,transferEmailPath as _r,siwsLinkPath as Ar}from"./paths.mjs";import{AccessTokenTypes as Tr,Session as vr}from"./session.mjs";class Cr extends B{async handleSendTransaction(e){if(!e.params||!Array.isArray(e.params))throw new Mt(`Invalid params for ${e.method}`,4200);let t=e.params[0];if(!await Br()||!this.address)throw new Mt("Disconnected",4900);return(await Kr(t,void 0,void 0,this.address)).hash}handleSwitchEthereumChain(e){let t;if(!e.params||!Array.isArray(e.params))throw new Mt(`Invalid params for ${e.method}`,4200);if("string"==typeof e.params[0])t=e.params[0];else{if(!("chainId"in e.params[0])||"string"!=typeof e.params[0].chainId)throw new Mt(`Invalid params for ${e.method}`,4200);t=e.params[0].chainId}this.chainId=Number(t),this.provider=ae(this.chainId,this.chains,this.rpcConfig,{appId:this.appId}),this.emit("chainChanged",t)}async handlePersonalSign(e){if(!e.params||!Array.isArray(e.params))throw Error("Invalid params for personal_sign");let t=e.params[0],r=e.params[1];return await Vr(t,void 0,r)}async handleSignedTypedData(e){if(!e.params||!Array.isArray(e.params))throw Error("Invalid params for eth_signTypedData_v4");let t=e.params[0],r="string"==typeof e.params[1]?JSON.parse(e.params[1]):e.params[1];return await Hr(ne(r),void 0,t)}async handleEstimateGas(e){if(!e.params||!Array.isArray(e.params))throw Error("Invalid params for eth_estimateGas");delete e.params[0].gasPrice,delete e.params[0].maxFeePerGas,delete e.params[0].maxPriorityFeePerGas;let t={...e.params[0],chainId:ie(this.chainId)};try{return await this.provider.send("eth_estimateGas",[t])}catch(e){console.warn(`Gas estimation failed with error: ${e}. Retrying gas estimation by omitting the 'from' address`);try{return delete t.from,await this.provider.send("eth_estimateGas",[t])}catch(t){throw console.warn(`Gas estimation failed with error: ${t} when omitting the 'from' address`),e}}}async request(e){switch(console.debug("Embedded1193Provider.request() called with args",e),e.method){case"eth_accounts":case"eth_requestAccounts":return this.address?[this.address]:[];case"eth_chainId":return ie(this.chainId);case"eth_estimateGas":return this.handleEstimateGas(e);case"eth_sendTransaction":return this.handleSendTransaction(e);case"wallet_switchEthereumChain":return this.handleSwitchEthereumChain(e);case"personal_sign":return this.handlePersonalSign(e);case"eth_signTypedData_v4":return this.handleSignedTypedData(e)}if(!de(e.method))return this.provider.send(e.method,e.params);{let t=await Br();if(await Gr(),!t||!this.address)throw new Mt("Disconnected",4900);try{return(await this.walletProxy.rpc({accessToken:t,entropyId:this.entropyId,entropyIdVerifier:this.entropyIdVerifier,chainType:"ethereum",hdWalletIndex:this.walletIndex,request:{method:e.method,params:e.params}})).response.data}catch(e){throw console.error(e),new Mt("Disconnected",4900)}}}constructor({walletProxy:e,address:t,entropyId:r,entropyIdVerifier:a,rpcConfig:n,chains:i,appId:o,chainId:s=1,walletIndex:l}){super(),this.walletProxy=e,this.address=t,this.entropyId=r,this.entropyIdVerifier=a,this.chainId=s,this.rpcConfig=n,this.chains=i,this.provider=ae(s,this.chains,n,{appId:o}),this.rpcTimeoutDuration=Lt(n,"privy"),this.appId=o,this.walletIndex=l}}class Ir extends B{get wallets(){let e=new Set,t=this.walletConnectors.flatMap((e=>e.wallets)).sort(((e,t)=>e.connectedAt&&t.connectedAt?t.connectedAt-e.connectedAt:0)).filter((t=>{let r=`${t.address}${t.walletClientType}${t.connectorType}`;return!e.has(r)&&(e.add(r),!0)})),r=t.findIndex((e=>e.address===(this.activeWallet?this.activeWallet:"unknown")));return r>=0&&t.unshift(t.splice(r,1)[0]),t}async initialize(){if(this.initialized)return;te.get(V)&&(te.getKeys().forEach((e=>{e.startsWith("walletconnect")&&te.del(e)})),te.del(V));let e=oe({store:this.store,walletList:this.walletList,externalWalletConfig:this.externalWalletConfig,walletChainType:this.walletChainType}).then((e=>{e.forEach((({type:e,eip6963InjectedProvider:t,legacyInjectedProvider:r})=>{this.createEthereumWalletConnector("injected",e,{eip6963InjectedProvider:t,legacyInjectedProvider:r})}))}));this.walletList.includes("coinbase_wallet")&&this.createEthereumWalletConnector("coinbase_wallet","coinbase_wallet"),!_e()&&this.walletList.includes("phantom")&&(["ethereum-only","ethereum-and-solana"].includes(this.walletChainType)&&this.createEthereumWalletConnector("phantom","phantom"),["ethereum-and-solana","solana-only"].includes(this.walletChainType)&&this.addWalletConnector(new Ht)),this.externalWalletConfig.walletConnect.enabled&&this.createEthereumWalletConnector("wallet_connect_v2","unknown"),this.externalWalletConfig.solana.connectors?.get().forEach(this.addSolanaWalletConnector),this.externalWalletConfig.solana.connectors?._setOnConnectorsUpdated?.((e=>{e?.forEach(this.addSolanaWalletConnector)})),await e,this.initialized=!0}findWalletConnector(e,t){return"wallet_connect_v2"===e?this.walletConnectors.filter(Ft).find((t=>t.connectorType===e))??null:this.walletConnectors.filter(Ft).find((r=>r.connectorType===e&&r.walletClientType===t))??null}findSolanaWalletConnector(e,t){return this.walletConnectors.filter(Ie).find((r=>r.connectorType===e&&r.walletClientType===t))??null}findEmbeddedWalletConnectors(){return this.walletConnectors.filter((e=>"embedded"===e.connectorType))}onInitialized(e){e.wallets.forEach((e=>{let t=this.storedConnections.find((t=>t.address===e.address&&t.connectorType===e.connectorType&&t.walletClientType===e.walletClientType));t&&(e.connectedAt=t.connectedAt)})),this.saveConnectionHistory(),this.emit("walletsUpdated"),this.emit("connectorInitialized")}onWalletsUpdated(e){e.initialized&&(this.saveConnectionHistory(),this.emit("walletsUpdated"))}addEmbeddedWalletConnectors({walletProxy:e,rootWallet:t,embeddedWallets:r,defaultChain:a,appId:n}){for(let i of r){let r=this.findEmbeddedWalletConnectors().find((e=>e.walletIndex===i.walletIndex));if(r&&Ft(r))r.proxyProvider.walletProxy=e;else{let{entropyId:r,entropyIdVerifier:o}=k(t),s=new ce({provider:new Cr({walletProxy:e,address:i.address,entropyId:r,entropyIdVerifier:o,rpcConfig:this.rpcConfig,chains:this.chains,appId:n,chainId:a.id,walletIndex:i.walletIndex}),chains:this.chains,defaultChain:a,rpcConfig:this.rpcConfig,imported:!1,walletIndex:i.walletIndex});this.addWalletConnector(s)}}}addImportedWalletConnector(e,t,r,a){let n=this.findWalletConnector("embedded_imported","privy");if(n&&Ft(n))n.proxyProvider.walletProxy=e;else{let n=new ce({provider:new Cr({walletProxy:e,address:t,entropyId:t,entropyIdVerifier:"ethereum-address-verifier",walletIndex:0,rpcConfig:this.rpcConfig,chains:this.chains,appId:a,chainId:r.id}),chains:this.chains,walletIndex:0,defaultChain:r,rpcConfig:this.rpcConfig,imported:!0});this.addWalletConnector(n)}}removeEmbeddedWalletConnectors(){this.walletConnectors=this.walletConnectors.filter((e=>"embedded"!==e.connectorType)),this.saveConnectionHistory(),this.storedConnections=Wr(),this.emit("walletsUpdated")}removeImportedWalletConnector(){let e=this.findWalletConnector("embedded_imported","privy");if(e){let t=this.walletConnectors.indexOf(e);this.walletConnectors.splice(t,1),this.saveConnectionHistory(),this.storedConnections=Wr(),this.emit("walletsUpdated")}}async createEthereumWalletConnector(e,t,r){let a=this.findWalletConnector(e,t);if(a&&Ft(a))return a instanceof ke&&a.resetConnection(t),a;let n=(()=>"injected"!==e?"coinbase_wallet"===e?new le(this.chains,this.defaultChain,this.rpcConfig,this.externalWalletConfig,this.privyAppName,this.privyAppLogo):"phantom"===e?new Vt(this.defaultChain):new ke(this.walletConnectCloudProjectId,this.rpcConfig,this.chains,this.defaultChain,this.shouldEnforceDefaultChainOnConnect,this.privyAppId,this.privyAppName,t):"metamask"===t&&r?.eip6963InjectedProvider?new Bt(this.chains,this.defaultChain,this.rpcConfig,r?.eip6963InjectedProvider,"metamask"):"metamask"===t&&r?.legacyInjectedProvider?new xt(this.chains,this.defaultChain,this.rpcConfig,r?.legacyInjectedProvider,"metamask"):"phantom"===t&&r?.legacyInjectedProvider?new xt(this.chains,this.defaultChain,this.rpcConfig,r?.legacyInjectedProvider,"phantom"):r?.legacyInjectedProvider&&"unknown_browser_extension"===t?new xt(this.chains,this.defaultChain,this.rpcConfig,r?.legacyInjectedProvider):r?.eip6963InjectedProvider?new jt(this.chains,this.defaultChain,this.rpcConfig,r?.eip6963InjectedProvider,t):void 0)();return n&&this.addWalletConnector(n),n||null}addWalletConnector(e){this.walletConnectors.push(e),e.on("initialized",(()=>this.onInitialized(e))),e.on("walletsUpdated",(()=>this.onWalletsUpdated(e))),e.initialize().catch((e=>{console.debug("Failed to initialize connector",e)}))}saveConnectionHistory(){let e=this.wallets.map((e=>({address:e.address,connectorType:e.connectorType,walletClientType:e.walletClientType,connectedAt:e.connectedAt})));te.put(H,e)}async activeWalletSign(e){let t=this.wallets,r=t.length>0?t[0]:null;return r&&Ae(r)?r.sign(e):null}setActiveWallet(e){this.activeWallet=r(e),this.emit("walletsUpdated")}constructor(e,t,r,a,n,i,o,s,l,c,d,u){super(),this.addSolanaWalletConnector=async e=>{this.findSolanaWalletConnector("solana_adapter",e.walletClientType)||this.addWalletConnector(e)},this.getEthereumProvider=()=>{let e=this.wallets[0],t=this.walletConnectors.find((t=>t.wallets.find((t=>t.address===e?.address))));return e&&t?t.proxyProvider:new Te},this.privyAppId=e,this.walletConnectCloudProjectId=t,this.rpcConfig=r,this.chains=a,this.defaultChain=n,this.walletConnectors=[],this.initialized=!1,this.store=i,this.walletList=o,this.shouldEnforceDefaultChainOnConnect=s,this.externalWalletConfig=l,this.privyAppName=c,this.privyAppLogo=d,this.walletChainType=u||"ethereum-only",this.storedConnections=Wr()}}const Wr=()=>{let e=te.get(H);return e&&Array.isArray(e)&&e.map((e=>(e=>e&&"string"==typeof e.address&&"string"==typeof e.connectorType&&"string"==typeof e.walletClientType&&"number"==typeof e.connectedAt)(e))).every(Boolean)?e:[]};let kr;var Nr=0,br="__private_"+Nr+++"__getOrGenerateClientAnalyticsId";class Ur{initializeConnectorManager({walletConnectCloudProjectId:e,rpcConfig:t,chains:r,defaultChain:a,store:n,walletList:i,shouldEnforceDefaultChainOnConnect:o,externalWalletConfig:s,appName:l,walletChainType:c}){this.connectors||(this.connectors=new Ir(this.appId,e,t,r,a,n,i,o,s,l,void 0,c))}generateApi(){let e=new Kt({appId:this.appId,appClientId:this.appClientId,client:this,defaults:{baseURL:this.apiUrl,timeout:this.timeout}});return this.session.api=e,e}updateApiUrl(e){this.apiUrl=e||this.fallbackApiUrl,this.api=this.generateApi(),e&&(this.useServerCookies=!0)}authenticate(){if(!this.authFlow)throw new Me("No auth flow in progress.");return this.session.authenticate(this.authFlow)}async link(){if(!this.authFlow)throw new Me("No auth flow in progress.");let{oAuthTokens:e}=await this.session.link(this.authFlow);return{user:await this.getAuthenticatedUser(),oAuthTokens:e}}storeProviderAccessToken(e,t){this.session.storeProviderAccessToken(e,t)}getProviderAccessToken(e){return this.session.getProviderAccessToken(e)}async logout(){await this.session.destroy(),this.authFlow=void 0}clearProviderAcccessTokens(e){e.linkedAccounts.filter((e=>"cross_app"===e.type)).forEach((e=>{this.storeProviderAccessToken(e.providerApp.id,null)}))}startAuthFlow(e){return e.api=this.api,this.authFlow=e,this.authFlow}async initMfaSmsVerification(){try{await this.api.post(qt,{action:"verify"})}catch(e){throw Fe(e)}}async initMfaPasskeyVerification(){try{let e=await this.api.post($t,{});return zt(e.options)}catch(e){throw Fe(e)}}async getCrossAppProviderDetails(e){try{return this._cachedProviderAppDetails[e]||(this._cachedProviderAppDetails[e]=await this.api.get(`/api/v1/apps/${e}/cross-app/details`)),this._cachedProviderAppDetails[e]}catch(e){console.error("Error fetching cross app provider details",e)}}async acceptTerms(){try{let e=await this.api.post(Yt,{});return N(e)}catch(e){throw xe(e)}}async unlinkEmail(e){try{let t=await this.api.post(Xt,{address:e});return await this.getAuthenticatedUser()??N(t)}catch(e){throw xe(e)}}async unlinkPhone(e){try{let t=await this.api.post(Qt,{phoneNumber:e});return await this.getAuthenticatedUser()??N(t)}catch(e){throw xe(e)}}async unlinkEthereumWallet(e){try{let t=await this.api.post(Jt,{address:e});return await this.getAuthenticatedUser()??N(t)}catch(e){throw xe(e)}}async unlinkSolanaWallet(e){try{let t=await this.api.post(Zt,{address:e});return await this.getAuthenticatedUser()??N(t)}catch(e){throw xe(e)}}async unlinkOAuth(e,t){try{let r=await this.api.post(er,{provider:e,subject:t});return await this.getAuthenticatedUser()??N(r)}catch(e){throw xe(e)}}async unlinkFarcaster(e){try{let t=await this.api.post(tr,{fid:e});return await this.getAuthenticatedUser()??N(t)}catch(e){throw xe(e)}}async unlinkTelegram(e){try{let t=await this.api.post(rr,{telegram_user_id:e});return await this.getAuthenticatedUser()??N(t)}catch(e){throw xe(e)}}async unlinkPasskey(e){try{let t=await this.api.post(ar,{credential_id:e});return await this.getAuthenticatedUser()??N(t)}catch(e){throw xe(e)}}async revokeDelegatedWallet(){try{await this.api.post(nr,{})}catch(e){throw xe(e)}}async createAnalyticsEvent({eventName:e,payload:t,timestamp:r,options:a}){if("undefined"!=typeof window)try{this.clientAnalyticsId||console.warn("No client analytics id set, refusing to send analytics event"),await this.api.post(ir,{event_name:e,client_id:this.clientAnalyticsId,payload:{...t||{},clientTimestamp:r?r.toISOString():(new Date).toISOString()}},{retry:-1,keepalive:a?.keepAlive??!1})}catch(e){}}async signMoonpayOnRampUrl(e){try{return this.api.post(or,e)}catch(e){throw xe(e)}}async initCoinbaseOnRamp(e){try{return this.api.post(sr,e)}catch(e){throw xe(e)}}async getCoinbaseOnRampStatus({partnerUserId:e}){try{return this.api.get(`${lr}?partnerUserId=${e}`)}catch(e){throw xe(e)}}async getAuthenticatedUser(){return this.session.hasRefreshCredentials()||this.session.hasRecoveryCredentials()?this.session.refresh():null}async getAccessToken(e){return await this.getPrivyAccessToken(e)||await this.getCustomerAccessToken(e)}async getCustomerAccessToken(e){return await this._getToken(Tr.CUSTOMER,e)}async getPrivyAccessToken(e){return await this._getToken(Tr.PRIVY,e)}async _getToken(e,t){return this.session.getToken(e)?this.session.hasActiveAccessToken(e)?this.session.hasRefreshCredentials(e)?W.parse(this.session.getToken(e))?.appId!==this.appId?(await this.logout(),null):this.session.getToken(e):(this.session.destroyLocalState(),null):!t?.disableAutoRefresh&&this.session.hasRefreshCredentials(e)?(await this.session.refresh(),this.session.getToken(e)):null:null}async getSmartWalletsConfig(){try{let e={},t=this.session.token;t&&(e.authorization=`Bearer ${t}`);let r=await this.api.get(`/api/v1/apps/${this.appId}/smart_wallets`,{baseURL:this.fallbackApiUrl,headers:e});return r.enabled?{enabled:r.enabled,smartWalletType:r.smart_wallet_type,configuredNetworks:r.configured_networks.map((e=>({chainId:e.chain_id,bundlerUrl:e.bundler_url,paymasterUrl:e.paymaster_url,paymasterContext:Gt(e.paymaster_url,e.paymaster_context)})))}:{enabled:r.enabled}}catch(e){throw xe(e)}}async getServerConfig(){try{let e={},t=this.session.token;t&&(e.authorization=`Bearer ${t}`);let r=await this.api.get(`/api/v1/apps/${this.appId}`,{baseURL:this.fallbackApiUrl,headers:e}),a=r.telegram_auth_config?{botId:r.telegram_auth_config.bot_id,botName:r.telegram_auth_config.bot_name,linkEnabled:r.telegram_auth_config.link_enabled,seamlessAuthEnabled:r.telegram_auth_config.seamless_auth_enabled}:void 0,n=r.funding_config?{methods:r.funding_config.methods,options:r.funding_config.options,defaultRecommendedAmount:r.funding_config.default_recommended_amount,defaultRecommendedCurrency:r.funding_config.default_recommended_currency,promptFundingOnWalletCreation:r.funding_config.prompt_funding_on_wallet_creation,crossChainBridgingEnabled:r.funding_config.cross_chain_bridging_enabled}:void 0;return{id:r.id,name:r.name,verificationKey:r.verification_key,logoUrl:r.logo_url||void 0,accentColor:r.accent_color||void 0,showWalletLoginFirst:r.show_wallet_login_first,allowlistConfig:{errorTitle:r.allowlist_config.error_title,errorDetail:r.allowlist_config.error_detail,errorCtaText:r.allowlist_config.cta_text,errorCtaLink:r.allowlist_config.cta_link},walletAuth:r.wallet_auth,solanaWalletAuth:r.solana_wallet_auth,emailAuth:r.email_auth,smsAuth:r.sms_auth,googleOAuth:r.google_oauth,twitterOAuth:r.twitter_oauth,discordOAuth:r.discord_oauth,githubOAuth:r.github_oauth,spotifyOAuth:r.spotify_oauth,instagramOAuth:r.instagram_oauth,tiktokOAuth:r.tiktok_oauth,linkedinOAuth:r.linkedin_oauth,appleOAuth:r.apple_oauth,farcasterAuth:r.farcaster_auth,passkeyAuth:r.passkey_auth,telegramAuth:r.telegram_auth,disablePlusEmails:r.disable_plus_emails,termsAndConditionsUrl:r.terms_and_conditions_url,embeddedWalletConfig:{createOnLogin:r.embedded_wallet_config?.create_on_login,userOwnedRecoveryOptions:r.embedded_wallet_config.user_owned_recovery_options,requireUserOwnedRecoveryOnCreate:r.embedded_wallet_config.require_user_owned_recovery_on_create},privacyPolicyUrl:r.privacy_policy_url,requireUsersAcceptTerms:r.require_users_accept_terms,customApiUrl:r.custom_api_url,walletConnectCloudProjectId:r.wallet_connect_cloud_project_id,fiatOnRampEnabled:r.fiat_on_ramp_enabled,captchaEnabled:r.captcha_enabled,captchaSiteKey:r.captcha_site_key,createdAt:new Date(1e3*r.created_at),updatedAt:new Date(1e3*r.updated_at),mfaMethods:r.mfa_methods,enforceWalletUis:r.enforce_wallet_uis,legacyWalletUiConfig:r.legacy_wallet_ui_config,telegramAuthConfiguration:a,fundingConfig:n}}catch(e){throw xe(e)}}async getUsdTokenPrice(e){try{return(await this.api.get(`/api/v1/token_price?chainId=${e.id}&tokenSymbol=${e.nativeCurrency.symbol}`)).usd}catch(t){return void console.error(`Unable to fetch token price for chain with id ${e.id}`)}}async getUsdPriceForSol(){try{return(await this.api.get("/api/v1/token_price?chainId=0&tokenSymbol=SOL")).usd}catch(e){return void console.error("Unable to fetch token price for SOL")}}async requestFarcasterSignerStatus(e){try{return await this.api.post("/api/v1/farcaster/signer/status",{ed25519_public_key:e})}catch(e){throw console.error("Unable to fetch Farcaster signer status"),e}}async forkSession(){return await this.session.forkSession()}async generateSiweNonce({address:e,captchaToken:t}){try{return(await this.api.post(cr,{address:e,token:t})).nonce}catch(e){throw xe(e)}}async authenticateWithSiweInternal({message:e,signature:t,chainId:r,walletClientType:a,connectorType:n,mode:i}){return await this.api.post(dr,{message:e,signature:t,chainId:r,walletClientType:a,connectorType:n,mode:i})}async linkWithSiweInternal({message:e,signature:t,chainId:r,walletClientType:a,connectorType:n}){return await this.api.post(ur,{message:e,signature:t,chainId:r,walletClientType:a,connectorType:n})}async linkSmartWallet({message:e,signature:t,smartWalletType:r}){try{let a=await this.api.post(hr,{message:e,signature:t,smart_wallet_type:r});return N(a)}catch(e){throw xe(e)}}async linkWithSiwe({message:e,signature:t,chainId:r,walletClientType:a,connectorType:n}){try{let i=await this.linkWithSiweInternal({message:e,signature:t,chainId:r,walletClientType:a,connectorType:n});return N(i)}catch(e){throw xe(e)}}async generateSiwsNonce({address:e,captchaToken:t}){try{return(await this.api.post(pr,{address:e,token:t})).nonce}catch(e){throw xe(e)}}async authenticateWithSiwsInternal({message:e,signature:t,walletClientType:r,connectorType:a,mode:n}){return await this.api.post(wr,{message:e,signature:t,walletClientType:r,connectorType:a,mode:n})}async sendAccountTransferRequest({nonce:e,account:t,accountType:r,externalWalletMetadata:a,telegramAuthResult:n,farcasterEmbeddedAddress:i,oAuthUserInfo:o}){try{let s,l;switch(r){case"email":s=_r,l={nonce:e,email:t};break;case"sms":s=Er,l={nonce:e,phoneNumber:t};break;case"siwe":if(s=gr,!a)throw Error("Wallet parameters must be defined");l={nonce:e,address:t,...a};break;case"farcaster":s=fr,l={nonce:e,farcaster_id:t,farcaster_embedded_address:i};break;case"telegram":s=yr,l={nonce:e,telegram_auth_result:n};break;case"custom":case"guest":case"passkey":throw Error("Invalid transfer account type");default:s=mr,l={nonce:e,userInfo:o}}let c=await this.api.post(s,l);return await this.getAuthenticatedUser()??N(c)}catch(e){throw xe(e)}}async linkWithSiwsInternal({message:e,signature:t,walletClientType:r,connectorType:a}){return await this.api.post(Ar,{message:e,signature:t,walletClientType:r,connectorType:a})}async linkWithSiws({message:e,signature:t,walletClientType:r,connectorType:a}){try{let n=await this.linkWithSiwsInternal({message:e,signature:t,walletClientType:r,connectorType:a});return N(n)}catch(e){throw xe(e)}}constructor({apiUrl:e=K,appId:t,appClientId:r,timeout:a=G}){Object.defineProperty(this,br,{value:Or}),this._cachedProviderAppDetails={},this.apiUrl=e,this.fallbackApiUrl=this.apiUrl,this.useServerCookies=e!==K&&e.startsWith("https://privy."),this.timeout=a,this.appId=t,this.appClientId=r,this.clientAnalyticsId=function(e,t){if(!Object.prototype.hasOwnProperty.call(e,t))throw TypeError("attempted to use private field on non-instance");return e}(this,br)[br](),kr||(kr=new vr),this.session=kr,this.api=this.generateApi(),this.session.client=this}}function Or(){if("undefined"==typeof window)return null;try{let e=te.get(z);if("string"==typeof e&&e.length>0)return e}catch(e){}let e=I();try{return te.put(z,e),e}catch(t){return e}}class Sr{async handleSignMessage(e){if(!e.params||"string"!=typeof e.params.message)throw Error("Message must be provided as a string for Solana signMessage RPC");return await qr({message:e.params.message,address:this.address})}async request(e){if(console.debug("EmbeddedSolanaProvider.request() called with args",e),!await Br())throw Error("User must be authenticated to use embedded Solana wallet");if(!await zr())throw new Me("Unable to connect to Solana embedded wallet");if("signMessage"===e.method)return await this.handleSignMessage(e);throw Error("Embedded Solana provider does not yet support this RPC method.")}constructor(e,t){this.walletProxy=e,this.address=t}}let Rr,Pr,Dr,Lr,Mr,Fr,xr;function jr(){return Rr?Rr.getCustomerAccessToken():Promise.resolve(te.get(q)||null)}async function Br(){return Rr?Rr.getAccessToken():Promise.resolve(te.get($)||te.get(q)||null)}const Vr=(e,t,r)=>Pr(e,t,r),Hr=(e,t,r)=>Dr(e,t,r),Kr=(e,t,r,a)=>Lr(e,t,r,a),Gr=()=>Mr(),zr=()=>Fr(),qr=({message:e,address:t})=>xr({message:e,address:t});const $r=({config:t,...r})=>{var a;if("undefined"!=typeof window&&0>["localhost","127.0.0.1"].indexOf(window.location.hostname)&&"https:"!==window.location.protocol)throw new Me("Embedded wallet is only available over HTTPS");if("string"!=typeof(a=r.appId)||25!==a.length)throw new Me("Cannot initialize the Privy provider with an invalid Privy app ID");Rr||(Rr=new Ur({appId:r.appId,appClientId:r.clientId,apiUrl:r.apiUrl}));let n=Object.assign({},t);return void 0!==r.createPrivyWalletOnLogin&&void 0===n.embeddedWallets?.createOnLogin&&(n.embeddedWallets||(n.embeddedWallets={}),n.embeddedWallets.createOnLogin=r.createPrivyWalletOnLogin?"users-without-wallets":"off"),void 0!==r.createPrivyWalletOnLogin&&t?.embeddedWallets?.createOnLogin&&console.warn("Both `createPrivyWalletOnLogin` and `config.embeddedWallets.createOnLogin` are set. `createPrivyWalletOnLogin` is deprecated and should be removed."),/*#__PURE__*/e(we,{client:Rr,clientConfig:n,legacyCreateEmbeddedWalletFlag:r.createPrivyWalletOnLogin,children:/*#__PURE__*/e(yt,{children:/*#__PURE__*/e(Yr,{...r,client:Rr})})})};let Yr=I=>{let W=I.client,N=ft(),[B,V]=i(!1),[H,G]=i(!1),[q,$]=i(!1),[oe,le]=i(null),[ce,de]=i([]),[we,Ie]=i([]),[Fe,xe]=i([]),yt=o(ce),[Lt,Mt]=i(!1),[Ft,xt]=i(null),[jt,Bt]=i(!1),[Vt,Ht]=i({status:"disconnected",connectedWallet:null,connectError:null,connector:null,connectRetry:vt}),[Kt,Gt]=i({status:"initial"}),[zt,qt]=i({status:"initial"}),[$t,Yt]=i({status:"initial"}),[Xt,Qt]=i({status:"initial"}),[Jt,Zt]=i({status:"initial"}),[er,tr]=i(null),rr=me(),ar=ye(),[nr,ir]=i(!0),[or,sr]=i({}),[lr,cr]=i(null),[dr,ur]=i(null),[hr,pr]=i(!1),[wr,mr]=i(!1),[yr,fr]=i(rr.customAuth?.enabled?{status:"initial"}:{status:"not-enabled"}),gr=o(null),Er=o(null),_r=o(It),[Ar,Tr]=i(!1);W.onStoreCustomerAccessToken=e=>{e&&Wt(_r,"accessToken","onAccessTokenGranted",e)},W.onDeleteCustomerAccessToken=()=>{le(null),$(!1),Wt(_r,"accessToken","onAccessTokenRemoved")};let vr=o(null),Cr=o(null),Ir=o(!1),Wr=({showWalletUIs:e,typedData:t})=>Ir.current?Ir.current:void 0!==e?!e:void 0!==rr.embeddedWallets.showWalletUIs?!rr.embeddedWallets.showWalletUIs:t?rr.embeddedWallets.noPromptOnSignature||(rr.legacyWalletUiConfig??!1):!!rr.embeddedWallets.noPromptOnSignature,kr=e=>{xt(e),setTimeout((()=>{V(!0)}),15),W.createAnalyticsEvent({eventName:"modal_open",payload:{initialScreen:e}})},Nr=e=>{"off"!==rr.embeddedWallets.createOnLogin&&ir(!0),kr(e)};s((()=>{let e=b(oe);er&&xe(e.map((e=>({type:"solana",imported:!1,address:e.address,connectedAt:Date.now(),walletClientType:"privy",connectorType:"embedded",walletIndex:e.walletIndex??void 0,meta:{name:"Privy Wallet",icon:void 0,id:"io.privy.solana.wallet"},linked:!0,fund(){throw new Me("'fund' is deprecated for Solana wallets - use 'fundWallet' instead")},unlink:()=>{throw new Me("Cannot unlink an embedded Solana wallet")},getProvider:async()=>new Sr(er,e.address),async signMessage(e){let t=await Br(),r=U(oe);if(!t||!er||!r)throw new Me("Must have valid access token and Privy wallet to send transaction",je.MUST_BE_AUTHENTICATED);if(!await da.recoverPrimaryWallet().catch((()=>!1)))throw new Me("Wallet couldn't be connected",je.UNKNOWN_CONNECT_WALLET_ERROR);let{entropyId:a,entropyIdVerifier:n}=k(r),{response:i}=await er.rpc({accessToken:t,entropyId:a,entropyIdVerifier:n,chainType:"solana",hdWalletIndex:this.walletIndex??0,request:{method:"signMessage",params:{message:Buffer.from(e).toString("base64")}}});return Buffer.from(i.data.signature,"base64")},async sendTransaction(e,t,r){let{signature:a}=await aa({transaction:e,connection:t,transactionOptions:r,wallet:this});return a},async signTransaction(e){let t=await Br();if(!t||!er)throw new Me("Must have valid access token and Privy wallet to send transaction",je.MUST_BE_AUTHENTICATED);if(!await da.recoverPrimaryWallet().catch((()=>!1)))throw new Me("Wallet couldn't be connected",je.UNKNOWN_CONNECT_WALLET_ERROR);let{entropyId:r,entropyIdVerifier:a}=O(oe);return await Ke({tx:e,accessToken:t,walletProxy:er,entropyId:r,entropyIdVerifier:a,transactingWalletAddress:this.address,transactingWalletIndex:this.walletIndex??0}),e},loginOrLink:async()=>{throw new Me("Cannot login or link with an embedded Solana wallet")},disconnect:()=>{},isConnected:async()=>!0}))))}),[er,oe]),s((()=>{if(!oe)return void W.connectors?.removeEmbeddedWalletConnectors();let e=S(oe),t=R(oe),r=P(oe);e&&t.length||W.connectors?.removeEmbeddedWalletConnectors(),r||W.connectors?.removeImportedWalletConnector(),W.connectors?er?(e&&W.connectors.addEmbeddedWalletConnectors({walletProxy:er,rootWallet:e,embeddedWallets:t,defaultChain:rr.defaultChain,appId:I.appId}),r&&W.connectors.addImportedWalletConnector(er,r.address,rr.defaultChain,I.appId)):console.debug("Failed to add embedded wallet connector: Wallet proxy not initialized"):console.debug("Failed to add embedded wallet connector: Client connectors not initialized")}),[er,oe]),s((()=>{er&&dr?.(er)}),[er]);let br=o();s((()=>{(async()=>{if(!rr.customAuth?.enabled)return void fr({status:"not-enabled"});ir(!0);let{getCustomAccessToken:e,isLoading:t}=rr.customAuth;if(H&&!t&&"loading"!==yr.status){fr({status:"loading"});try{let t=await e();if(t===br.current)return void fr({status:"done"});if(!t&&q)return br.current=t,await ca.logout(),fr({status:"done"}),void Wt(_r,"customAuth","onUnauthenticated");if(!t)return br.current=t,void fr({status:"done"});W.startAuthFlow(new p(t));let{user:r,isNewUser:a}=await W.authenticate();if(!r)return await ca.logout(),fr({status:"error",error:new Me("Failed to sync with custom auth provider")}),void Wt(_r,"customAuth","onUnauthenticated");void 0!==a&&Wt(_r,"login","onComplete",r,a,!1,"custom",null),br.current=t,Wt(_r,"customAuth","onAuthenticated",{user:r}),fr({status:"done"}),le(r||null),Mt(a||!1),$(!0),mr(!0)}catch(e){if(console.warn(e),await ca.logout(),Wt(_r,"customAuth","onUnauthenticated"),"User already exists with provided custom JWT account."===e.message)return void fr({status:"initial"});Wt(_r,"login","onError",e.privyErrorCode||je.UNKNOWN_AUTH_ERROR),fr({status:"error",error:e})}}})()}),["initial"===yr.status,rr.customAuth?.enabled,rr.customAuth?.getCustomAccessToken,rr.customAuth?.isLoading,H,q]),s((()=>{wr&&er&&oe&&D(oe,rr.embeddedWallets.createOnLogin)&&(mr(!1),Qr(oe,Z).catch(console.error))}),[wr&&er&&oe]),s((()=>{if(rr.externalWallets.solana.connectors)return rr.externalWallets.solana.connectors.onMount(),()=>rr.externalWallets.solana.connectors?.onUnmount()}),[rr.externalWallets.solana.connectors]),s((()=>{!H&&ar&&async function(){let e,t=Ur(),r=Or();(()=>{let e=new URLSearchParams(window.location.search).get("privy_token");if(!e)return;te.put(ee,e);let t=new URL(window.location.href);t.searchParams.delete("privy_token"),window.history.pushState({},"",t)})();let a=n();W.initializeConnectorManager({walletConnectCloudProjectId:rr.walletConnectCloudProjectId,rpcConfig:rr.rpcConfig,chains:rr.chains,defaultChain:rr.defaultChain,store:a,walletList:rr.appearance.walletList,shouldEnforceDefaultChainOnConnect:rr.shouldEnforceDefaultChainOnConnect,externalWalletConfig:rr.externalWallets,appName:rr.name??"Privy",walletChainType:rr.appearance.walletChainType}),W.connectors?.on("connectorInitialized",(()=>{e&&clearTimeout(e);let t=W.connectors.walletConnectors.length,r=W.connectors.walletConnectors.reduce(((e,t)=>e+(t.initialized?1:0)),0);r===t?Tr(!0):e=setTimeout((()=>{console.debug({message:"Unable to initialize all expected connectors before timeout",initialized:r,expected:t}),Tr(!0)}),1500)})),W.connectors?.initialize().then((()=>{Gr()}));let i=await W.getAuthenticatedUser(),o=!!i;rr.legal.requireUsersAcceptTerms&&i&&!i.hasAcceptedTerms?(await W.logout(),da.setReadyToTrue(!0),Wt(_r,"logout","onSuccess")):(rr.customAuth?.enabled||($(!!i),i&&Wt(_r,"login","onComplete",i,!1,!0,null,null),le(i)),t?Cr.current=o?"link":"login":r&&!o?(Cr.current="login",sr({telegramAuthModalData:{seamlessAuth:!0}}),Nr(_t.TELEGRAM_AUTH_SCREEN)):da.setReadyToTrue(!!i))}()}),[W,lr,H,ar]),s((()=>{if(H){if(!oe||!oe.linkedAccounts.find((e=>"wallet"===e.type&&"privy"===e.walletClientType)))return void pr(!0);pr(!!ce.find((e=>"privy"===e.walletClientType)))}}),[H,oe,ce]);let Ur=()=>{let e=Pt();return e.inProgress&&e.popupFlow?window.opener.location.origin!==window.location.origin?void window.opener.postMessage({type:"PRIVY_OAUTH_ERROR",error:"Origins between parent and child windows do not match."}):"error"===e.authorizationCode?void window.opener.postMessage({type:"PRIVY_OAUTH_ERROR",error:"Something went wrong. Try again."}):void window.opener.postMessage({type:"PRIVY_OAUTH_RESPONSE",stateCode:e.stateCode,authorizationCode:e.authorizationCode}):(e.inProgress&&$e(e.provider)&&!e.popupFlow&&(new BroadcastChannel(Ye).postMessage({type:"PRIVY_OAUTH_RESPONSE",stateCode:e.stateCode,authorizationCode:e.authorizationCode}),window.close()),!!e.inProgress&&!!e.withPrivyUi&&(W.startAuthFlow(new Dt(e)),Nr(_t.AWAITING_OAUTH_SCREEN),!0))},Or=()=>{let e=C();if(!e||!rr.loginMethods.telegram||!rr.loginConfig.telegramAuthConfiguration?.seamlessAuthEnabled)return;let t=new v;return W.startAuthFlow(t),"login-url"===e.flowType&&(t.meta.telegramWebAppData=void 0,t.meta.telegramAuthResult=e.authData),"web-app"===e.flowType&&(t.meta.telegramAuthResult=void 0,t.meta.telegramWebAppData=e.authData),!0},jr=async(e,t,r,a)=>{Vr(await(W.connectors?.createEthereumWalletConnector(e,t))||null,t,r,a)};async function Vr(e,t,r,a){if(!e)return Ht({status:"disconnected",connectedWallet:null,connectError:new Ve("Unable to connect to wallet."),connector:null,connectRetry:vt}),a?.(null,r);Ht({status:"disconnected",connectedWallet:null,connectError:null,connector:e,connectRetry:vt}),e instanceof ke&&t&&await e.resetConnection(t),Ht({connector:e,status:"connecting",connectedWallet:null,connectError:null,connectRetry:()=>Vr(e,t,r,a)});try{let t=await e.connect({showPrompt:!0});if((!t||Ae(t))&&rr.shouldEnforceDefaultChainOnConnect&&!rr.chains.find((e=>e.id===Number(t?.chainId.replace("eip155:",""))))&&("wallet_connect_v2"!==t?.connectorType||"metamask"!==t?.walletClientType)){Ht((t=>({...t,connector:e,status:"switching_to_supported_chain",connectedWallet:null,connectError:null,connectRetry:vt})));try{await(t?.switchChain(rr.defaultChain.id)),t&&(t.chainId=se(ie(rr.defaultChain.id)))}catch{console.warn(`Unable to switch to default chain: ${rr.defaultChain.id}`)}}return Ht((e=>({...e,status:"connected",connectedWallet:t,connectError:null,connectRetry:vt}))),t&&Wt(_r,"connectWallet","onSuccess",(e.chainType,t)),a?.(t,r)}catch(e){return e instanceof He?(console.warn(e.cause?e.cause:e.message),Wt(_r,"connectWallet","onError",e.privyErrorCode||je.GENERIC_CONNECT_WALLET_ERROR)):(console.warn(e),Wt(_r,"connectWallet","onError",je.UNKNOWN_CONNECT_WALLET_ERROR)),Ht((t=>({...t,status:"disconnected",connectedWallet:null,connectError:e}))),a?.(null,r)}}let Hr=async(e,t,r)=>{if(null===e||!Ae(e))return;let a=new E(e,W,t,r);W.startAuthFlow(a)},Kr=async(e,t)=>{if(null===e||!We(e))return;let r=new _(e,W,t);W.startAuthFlow(r)},Gr=()=>{let e=new URLSearchParams(window.location.search),t=e.get("privy_connector"),r=e.get("privy_wallet_client");if(!t||!r)return;if("phantom"!==r||_e()||Nr(_t.LOGIN_FAILED_SCREEN),!W.connectors)throw new Me("Connector not initialized");kr(_t.AWAITING_CONNECTION);let a=new URL(window.location.href);a.searchParams.delete("privy_connector"),a.searchParams.delete("privy_wallet_client"),window.history.pushState({},"",a),jr(t,r,void 0,Hr)};s((()=>{H&&q&&null===oe&&W.getAuthenticatedUser().then(le)}),[H,q,oe,W]);let zr=e=>{if(!q)throw Wt(_r,"linkAccount","onError",je.MUST_BE_AUTHENTICATED,{linkMethod:e}),new Me("User must be authenticated before linking an account.")},qr=()=>{zr("siwe"),vr.current="siwe",Cr.current="link",kr(_t.LINK_WALLET_SCREEN)},$r=e=>{if(!q||!oe)return!1;if("privy"===e.walletClientType)return!0;for(let t of oe.linkedAccounts)if("wallet"===t.type&&t.address===e.address&&"privy"!==t.walletClientType)return!0;return!1},Yr=async e=>{let t;if(!W.connectors)throw new Me("Connector not initialized");t="ethereum"===e.type?W.connectors.findWalletConnector(e.connectorType,e.walletClientType)||null:W.connectors.findSolanaWalletConnector(e.connectorType,e.walletClientType)||null,Ht((r=>({...r,connector:t,status:"connected",connectedWallet:e,connectError:null,connectRetry:vt}))),rr.captchaEnabled&&!q?(sr({captchaModalData:{callback:t=>Ae(e)?Hr(e,t):Kr(e,t),userIntentRequired:!1,onSuccessNavigateTo:_t.AWAITING_CONNECTION,onErrorNavigateTo:_t.ERROR_SCREEN}}),Nr(_t.CAPTCHA_SCREEN)):(Ae(e)?await Hr(e):await Kr(e),Nr(_t.AWAITING_CONNECTION))},Xr=()=>{de((e=>{let t=W.connectors?.wallets.filter(Ae).map((e=>({...e,linked:$r(e),loginOrLink:async()=>{if(!await e.isConnected())throw new Me("Wallet is not connected");if("embedded"===e.connectorType&&"privy"===e.walletClientType)throw new Me("Cannot link or login with embedded wallet");Yr(e)},fund:async t=>{await da.fundWallet(e.address,t)},unlink:async()=>{if(!q)throw new Me("User is not authenticated.");if("embedded"===e.connectorType&&"privy"===e.walletClientType)throw new Me("Cannot unlink an embedded wallet");le(await W.unlinkEthereumWallet(e.address))}})))||[];return fe(e,t)?e:t})),Ie((e=>{let t=(W.connectors?.wallets??[]).concat(Fe).filter(We).map((e=>({...e,linked:$r(e),loginOrLink:async()=>{if(!await e.isConnected())throw new Me("Wallet is not connected");if("embedded"===e.connectorType&&"privy"===e.walletClientType)throw new Me("Cannot link or login with embedded wallet");Yr(e)},fund:async()=>{throw new Me("'fund' is deprecated for Solana wallets - use 'fundWallet' instead")},unlink:async()=>{if(!q)throw new Me("User is not authenticated.");if("embedded"===e.connectorType&&"privy"===e.walletClientType)throw new Me("Cannot unlink an embedded wallet");le(await W.unlinkSolanaWallet(e.address))}})));return fe(e,t)?e:t}))};s((()=>{Xr()}),[oe?.linkedAccounts,q,H,Fe]),s((()=>{if(H){if(!W.connectors)throw new Me("Connector not initialized");Xr(),W.connectors.on("walletsUpdated",Xr)}}),[H]),s((()=>{[...rr.loginMethodsAndOrder?.primary??[],...rr.loginMethodsAndOrder?.overflow??[]].filter((e=>e.startsWith("privy:"))).forEach((e=>W.getCrossAppProviderDetails(e.replace("privy:",""))))}),[!!W]),s((()=>{let e;if(!ce[0])return;let t=ce[0],r=yt.current.find((e=>e.address===t.address));if(e="privy"===t.walletClientType?oe?.linkedAccounts.find((e=>"wallet"===e.type&&e.address===t.address&&"privy"===e.walletClientType)):oe?.linkedAccounts.find((e=>"wallet"===e.type&&e.address===t.address&&"privy"!==e.walletClientType)),!r&&e){let t=Object.assign({},oe);t.wallet=e&&{address:e.address,chainType:e.chainType,chainId:e.chainId,walletClient:e.walletClient,walletClientType:e.walletClientType,connectorType:e.connectorType,imported:e.imported,delegated:e.delegated,walletIndex:e.walletIndex},le(t)}yt.current=ce}),[ce]);let Qr=async(e,t,r)=>{let a=S(e),n=L(e);if(r&&"walletIndex"in r)return Zr(e,t,r.walletIndex,a,n);let i=r&&"createAdditional"in r&&r.createAdditional;if(a&&!i)throw Wt(_r,"createWallet","onError",je.EMBEDDED_WALLET_ALREADY_EXISTS),Error("User already has an embedded wallet.");let[o,s]=await Promise.all([da.initializeWalletProxy(t),Br()]);if(!o&&rr.customAuth?.enabled)throw Wt(_r,"createWallet","onError",je.UNKNOWN_EMBEDDED_WALLET_ERROR),Error("Failed to connect to wallet proxy");if(!o||!s||rr.embeddedWallets?.requireUserOwnedRecoveryOnCreate)return Jr();if(!a)return console.log("solanaWallet",n),await o.create({accessToken:s,solanaAddress:n?.address}),ta(0,"ethereum");{let t=(M(e)?.walletIndex??0)+1,{entropyId:r,entropyIdVerifier:a}=k(U(e));return await da.recoverPrimaryWallet(),await o.addWallet({accessToken:s,entropyId:r,entropyIdVerifier:a,chainType:"ethereum",hdWalletIndex:t}),ta(t,"ethereum")}},Jr=async()=>new Promise(((e,t)=>{ir(!0),sr({createWallet:{onSuccess:t=>{Wt(_r,"createWallet","onSuccess",t),e(t)},onFailure:e=>{Wt(_r,"createWallet","onError",je.UNKNOWN_EMBEDDED_WALLET_ERROR),t(e)},callAuthOnSuccessOnClose:!1}}),kr(_t.EMBEDDED_WALLET_ON_ACCOUNT_CREATE_SCREEN)})),Zr=async(e,t,r,a,n)=>{if(r<0)throw Wt(_r,"createWallet","onError",je.EMBEDDED_WALLET_CREATE_ERROR),Error(`A negative walletIndex (${r}) is invalid.`);let[i,o]=await Promise.all([da.initializeWalletProxy(t),Br()]);if(!i&&rr.customAuth?.enabled)throw Wt(_r,"createWallet","onError",je.UNKNOWN_EMBEDDED_WALLET_ERROR),Error("Failed to connect to wallet proxy");if(!i||!o||rr.embeddedWallets?.requireUserOwnedRecoveryOnCreate){if(0==r)return Jr();throw Wt(_r,"createWallet","onError",je.UNKNOWN_EMBEDDED_WALLET_ERROR),Error("Create wallet UI can only be displayed when walletIndex is 0.")}if(0==r){if(a)return a;await i.create({accessToken:o,solanaAddress:n?.address})}else{if(!a)throw Wt(_r,"createWallet","onError",je.EMBEDDED_WALLET_CREATE_ERROR),Error("A user must have a wallet at HD index 0 before creating a wallet at greater HD indices.");let t=R(e).find((e=>e.walletIndex===r));if(t)return t;let{entropyId:n,entropyIdVerifier:s}=k(U(e));await da.recoverPrimaryWallet(),await i.addWallet({accessToken:o,entropyId:n,entropyIdVerifier:s,chainType:"ethereum",hdWalletIndex:r})}return ta(r,"ethereum")},ea=async({user:e,wp:t,accessToken:r,walletIndex:a,ethereumWallet:n})=>{let i=b(e).find((e=>e.walletIndex===a));if(i)return i;if(0===a)await t.createSolana({accessToken:r,ethereumAddress:n?.address});else{let n=U(e);if(!n)throw Wt(_r,"createWallet","onError",je.EMBEDDED_WALLET_CREATE_ERROR),Error("User must have a wallet at HD index 0 before creating a wallet at greater HD indices.");let{entropyId:i,entropyIdVerifier:o}=k(n);await da.recoverPrimaryWallet(),await t.addWallet({accessToken:r,entropyId:i,entropyIdVerifier:o,chainType:"solana",hdWalletIndex:a})}return ta(a,"solana")},ta=async(e,t)=>{let r=await da.refreshUser(),a=("ethereum"===t?R(r):b(r)).find((t=>t.walletIndex===e));if(!a)throw Wt(_r,"createWallet","onError",je.UNKNOWN_EMBEDDED_WALLET_ERROR),Error("Failed to create wallet");return Wt(_r,"createWallet","onSuccess",a),a},ra=(e,t,a,n)=>new Promise((async(i,o)=>{let{requesterAppId:s}=t||{};if(!q||!oe)return Wt(_r,"sendTransaction","onError",je.MUST_BE_AUTHENTICATED),void o(Error("User must be authenticated before signing with a Privy wallet"));let l=n??S(oe)?.address;if(!l)throw new Me("User must have an embedded wallet to send a transaction.");let{signingWallet:c,rootWallet:p}=F(oe,l);if(!p||!c)return Wt(_r,"sendTransaction","onError",je.EMBEDDED_WALLET_NOT_FOUND),void o(Error("Must have a Privy wallet before signing"));ir(!0);let w=ua.wallets.find((e=>"privy"===e.walletClientType&&r(e.address)===r(c.address))),m=await(w?.getEthereumProvider());if(!w||!m)throw new Me(`Cannot sendTransaction before embedded wallet ${c.address} is connected`);let y=e.chainId?Number(e.chainId):ze(w.chainId);(e=>{if(!rr.chains.map((e=>e.id)).includes(e))throw new Ve(`Chain ID ${e} is not supported. It must be added to the config.supportedChains property of the PrivyProvider.`,je.UNSUPPORTED_CHAIN_ID)})(y);let f=Object.assign({},e,{chainId:y});if(Wr({showWalletUIs:t?.showWalletUIs}))(async()=>{let e=await Br();if(!e||!er)return Wt(_r,"sendTransaction","onError",je.EMBEDDED_WALLET_NOT_FOUND),void o(Error("Must have valid access token and Privy wallet to send transaction"));try{if(!await da.recoverPrimaryWallet())return Wt(_r,"sendTransaction","onError",je.UNKNOWN_CONNECT_WALLET_ERROR),void o(Error("Unable to connect to wallet"));let r=ae(f.chainId,rr.chains,rr.rpcConfig,{appId:I.appId}),a=await d(c.address,f,r);if(Wr({showWalletUIs:t?.showWalletUIs})){let{totalGasEstimate:e}=await u(a,r),{hasSufficientFunds:t}=await De(c.address,a,e,r);if(!t)throw new ge(new Ee("Wallet has insufficient funds for this transaction.",h.E32603_DEFAULT_INTERNAL_ERROR.eipCode))}let{entropyId:n,entropyIdVerifier:l}=k(p),w=await Le({accessToken:e,entropyId:n,entropyIdVerifier:l,transactingWallet:c,walletProxy:er,transactionRequest:a,provider:r,requesterAppId:s});Wt(_r,"sendTransaction","onSuccess",w),i(w)}catch(e){Wt(_r,"sendTransaction","onError",je.TRANSACTION_FAILURE),o(e)}})();else{let{entropyId:e,entropyIdVerifier:r}=k(p),n={entropyId:e,entropyIdVerifier:r,onCompleteNavigateTo:_t.EMBEDDED_WALLET_SEND_TRANSACTION_SCREEN,onFailure:e=>{Wt(_r,"sendTransaction","onError",je.UNKNOWN_CONNECT_WALLET_ERROR),o(e)}},l=st(rr)?Rt({address:c.address,appConfig:rr,fundWalletConfig:a,methodScreen:_t.FUNDING_METHOD_SELECTION_SCREEN,chainIdOverride:f.chainId,comingFromSendTransactionScreen:!0}):void 0;sr({connectWallet:n,sendTransaction:{transactionRequest:f,transactingWallet:c,entropyId:e,entropyIdVerifier:r,onSuccess:e=>{Wt(_r,"sendTransaction","onSuccess",e),i(e)},onFailure:e=>{Wt(_r,"sendTransaction","onError",je.TRANSACTION_FAILURE),o(e)},uiOptions:t||{},fundWalletConfig:a,requesterAppId:s},funding:l}),kr(_t.EMBEDDED_WALLET_CONNECTING_SCREEN)}})),aa=({transaction:e,connection:t,transactionOptions:r,fundWalletConfig:a,uiOptions:n,wallet:i})=>new Promise((async(o,s)=>{let{requesterAppId:l}=n||{};if(!q||!oe)return Wt(_r,"sendSolanaTransaction","onError",je.MUST_BE_AUTHENTICATED),void s(new Me("User must be authenticated before signing with a Privy wallet",je.MUST_BE_AUTHENTICATED));let c=i?oe.linkedAccounts.find((e=>"wallet"===e.type&&e.address===i.address)):L(oe);if(!c)return Wt(_r,"sendSolanaTransaction","onError",je.EMBEDDED_WALLET_NOT_FOUND),void s(new Me("Must have a Privy wallet before signing",je.EMBEDDED_WALLET_NOT_FOUND));ir(!0);let d=L(oe);if(!await da.recoverPrimaryWallet().catch((()=>!1))||!d)throw Wt(_r,"sendSolanaTransaction","onError",je.EMBEDDED_WALLET_NOT_FOUND),new Me(`Cannot sendSolanaTransaction before embedded wallet ${c.address} is connected`,je.EMBEDDED_WALLET_NOT_FOUND);if(Wr({showWalletUIs:n?.showWalletUIs}))(async()=>{let a=await Br();if(!a||!er)return Wt(_r,"sendSolanaTransaction","onError",je.EMBEDDED_WALLET_NOT_FOUND),void s(new Me("Must have valid access token and Privy wallet to send transaction",je.EMBEDDED_WALLET_NOT_FOUND));try{if(!await da.recoverPrimaryWallet())return Wt(_r,"sendSolanaTransaction","onError",je.UNKNOWN_CONNECT_WALLET_ERROR),void s(new Me("Unable to connect to wallet",je.UNKNOWN_CONNECT_WALLET_ERROR));if(Wr({showWalletUIs:n?.showWalletUIs})){let{instructions:r}=await ht(e,t);r.every((e=>e.hasFunds))||(Wt(_r,"sendSolanaTransaction","onError",je.INSUFFICIENT_BALANCE),s(new Me("Solana wallet has insufficient funds for this transaction.",je.INSUFFICIENT_BALANCE)))}let{entropyId:i,entropyIdVerifier:l}=O(oe),{signature:d,receipt:u}=await Ge({accessToken:a,tx:e,connection:t,walletProxy:er,transactionOptions:r,entropyId:i,entropyIdVerifier:l,transactingWalletAddress:c.address,transactingWalletIndex:c.walletIndex??0}),h=pt(d,u);Wt(_r,"sendSolanaTransaction","onSuccess",h),o(h)}catch(e){Wt(_r,"sendSolanaTransaction","onError",je.TRANSACTION_FAILURE),s(e)}})();else{let{entropyId:i,entropyIdVerifier:u}=k(d),h={entropyId:i,entropyIdVerifier:u,onCompleteNavigateTo:_t.EMBEDDED_WALLET_SEND_SOLANA_TRANSACTION_SCREEN,onFailure:e=>{Wt(_r,"sendSolanaTransaction","onError",je.UNKNOWN_CONNECT_WALLET_ERROR),s(e)}},p=st(rr)?St({address:c.address,appConfig:rr,methodScreen:_t.FUNDING_METHOD_SELECTION_SCREEN,fundWalletConfig:a,comingFromSendTransactionScreen:!0}):void 0;sr({connectWallet:h,sendSolanaTransaction:{transactionRequest:e,connection:t,transactionOptions:r,transactingWallet:c,onSuccess:e=>{Wt(_r,"sendSolanaTransaction","onSuccess",e),o(e)},onFailure:e=>{Wt(_r,"sendSolanaTransaction","onError",je.TRANSACTION_FAILURE),s(e)},uiOptions:n||{},requesterAppId:l},funding:p}),kr(_t.EMBEDDED_WALLET_CONNECTING_SCREEN)}}));function na(){return new Promise((async(e,t)=>{let r=await Br();if(!r||!er)throw Error("Must have valid access token to enroll in MFA");try{await er.verifyMfa({accessToken:r}),e()}catch(e){t(e)}}))}let ia=e=>e?.linkedAccounts.filter((e=>null!==e.latestVerifiedAt&&!("wallet"===e.type&&"privy"===e.walletClientType))).sort(((e,t)=>t.latestVerifiedAt.getTime()-e.latestVerifiedAt.getTime()))[0],oa=e=>{let t=oe?.linkedAccounts.filter((t=>t.type===e)).length??0,{displayName:r,loginMethod:a}=wt(e);if("passkey"===e&&t>=5||"passkey"!==e&&t>=1)throw Wt(_r,"linkAccount","onError",je.CANNOT_LINK_MORE_OF_TYPE,{linkMethod:a}),new Me(`User already has an account of type ${r} linked.`)};async function sa({showAutomaticRecovery:e=!1,legacySetWalletPasswordFlow:t=!1}){xt(null);let r=t?"setWalletPassword":"setWalletRecovery";if(!q||!oe)throw Wt(_r,r,"onError",je.MUST_BE_AUTHENTICATED),Error("User must be authenticated before adding recovery method to Privy wallet");let a=U(oe);if(!a||!er)throw Wt(_r,r,"onError",je.EMBEDDED_WALLET_NOT_FOUND),Error("Must have a Privy wallet to add a recovery method");try{await na()}catch(e){throw Wt(_r,r,"onError",je.MISSING_MFA_CREDENTIALS),e}return new Promise(((n,i)=>{ir(!0);let o={onSuccess:e=>{Wt(_r,r,"onSuccess","user-passcode",e),n(e)},onFailure:e=>{Wt(_r,r,"onError",je.USER_EXITED_SET_PASSWORD_FLOW),i(e)},callAuthOnSuccessOnClose:!1},s="user-passcode"===a.recoveryMethod,l=nt({walletAction:"update",availableRecoveryMethods:rr.embeddedWallets.userOwnedRecoveryOptions,legacySetWalletPasswordFlow:t,isResettingPassword:s,showAutomaticRecovery:e}),{entropyId:c,entropyIdVerifier:d}=k(a);sr({setWalletPassword:o,recoverWallet:{entropyId:c,entropyIdVerifier:d,onFailure:i},createWallet:o,connectWallet:{onCompleteNavigateTo:l,shouldForceMFA:!1,entropyId:c,entropyIdVerifier:d,onFailure:e=>{Wt(_r,r,"onError",je.UNKNOWN_CONNECT_WALLET_ERROR),i(e)}},recoverySelection:{isInAccountCreateFlow:!1,isResettingPassword:s}}),kr(_t.EMBEDDED_WALLET_CONNECTING_SCREEN)}))}async function la({appId:e,action:t}){let r=await Br();if("link"===t&&!r)throw Wt(_r,"linkAccount","onError",je.MUST_BE_AUTHENTICATED,{linkMethod:`privy:${e}`}),new Me("User must be authenticated before linking an account.");if("login"===t&&r)throw Wt(_r,"login","onError",je.UNKNOWN_AUTH_ERROR),new Me("Attempted to log in, but user is already logged in. Use a `link` helper instead.");vr.current=`privy:${e}`,Cr.current=t;let a=ct();return W.createAnalyticsEvent({eventName:"cross_app_auth_started",payload:{providerAppId:e}}),new Promise((async(r,n)=>{let{name:i,logoUrl:o}=await Je({api:W.api,providerAppId:e,requesterAppId:rr.id});sr({crossAppAuth:{appId:e,name:i,logoUrl:o,action:t,popup:a,onSuccess:r,onError:n}}),Nr(_t.CROSS_APP_AUTH_SCREEN)}))}let ca={ready:H,authenticated:q,user:oe,walletConnectors:W.connectors||null,connectWallet:e=>{e&&"target"in e&&e&&(e=void 0),sr({externalConnectWallet:{walletList:e?.walletList&&e?.walletList.length>0?e.walletList:void 0,suggestedAddress:e?.suggestedAddress}}),kr(q?_t.CONNECT_ONLY_AUTHENTICATED_SCREEN:_t.CONNECT_ONLY_LANDING_SCREEN)},linkWallet:qr,startCrossAppAuthFlow:la,linkEmail:()=>{zr("email"),oa("email"),vr.current="email",Cr.current="link",kr(_t.LINK_EMAIL_SCREEN)},linkPhone:()=>{zr("sms"),oa("phone"),vr.current="sms",Cr.current="link",kr(_t.LINK_PHONE_SCREEN)},linkGoogle:async()=>{zr("google"),oa("google_oauth"),Cr.current="link",await da.initLoginWithOAuth("google")},linkTwitter:async()=>{zr("twitter"),oa("twitter_oauth"),Cr.current="link",await da.initLoginWithOAuth("twitter")},linkDiscord:async()=>{zr("discord"),oa("discord_oauth"),Cr.current="link",await da.initLoginWithOAuth("discord")},linkGithub:async()=>{zr("github"),oa("github_oauth"),Cr.current="link",await da.initLoginWithOAuth("github")},linkSpotify:async()=>{zr("spotify"),oa("spotify_oauth"),Cr.current="link",await da.initLoginWithOAuth("spotify")},linkInstagram:async()=>{zr("instagram"),oa("instagram_oauth"),Cr.current="link",await da.initLoginWithOAuth("instagram")},linkTiktok:async()=>{zr("tiktok"),oa("tiktok_oauth"),Cr.current="link",await da.initLoginWithOAuth("tiktok")},linkLinkedIn:async()=>{zr("linkedin"),oa("linkedin_oauth"),Cr.current="link",await da.initLoginWithOAuth("linkedin")},linkApple:async()=>{zr("apple"),oa("apple_oauth"),Cr.current="link",await da.initLoginWithOAuth("apple")},linkPasskey:async()=>{zr("passkey"),oa("passkey"),await da.initLinkWithPasskey(),kr(_t.LINK_PASSKEY_SCREEN)},linkTelegram:async()=>{zr("telegram"),oa("telegram"),Cr.current="link",vr.current="telegram",await da.initLoginWithTelegram(),kr(_t.TELEGRAM_AUTH_SCREEN)},linkFarcaster:async()=>{zr("farcaster"),oa("farcaster"),await da.initLoginWithFarcaster(),Cr.current="link",vr.current="farcaster",kr(_t.AWAITING_FARCASTER_CONNECTION)},updateEmail:()=>{if(zr("email"),!oe?.email)throw new Me("User does not have an email linked to their account.");Cr.current="update",vr.current="email",kr(_t.UPDATE_EMAIL_SCREEN)},updatePhone:()=>{if(zr("sms"),!oe?.phone)throw new Me("User does not have a phone number linked to their account.");Cr.current="update",vr.current="sms",kr(_t.UPDATE_PHONE_SCREEN)},login:async e=>{e&&"target"in e&&e&&(e=void 0);let t="Attempted to log in, but user is already logged in. Use a `link` helper instead.";if(!H){let e=await new Promise((e=>{cr((t=>e.bind(t)))}));if(cr(null),e)return void console.warn(t)}!oe||oe.isGuest?(Cr.current="login",sr({login:e}),Nr(_t.LANDING)):console.warn(t)},connectOrCreateWallet:async()=>{H||(await new Promise((e=>{cr((()=>e))})),cr(null)),q?console.warn("User must be unauthenticated to `connectOrCreateWallet`"):(Cr.current="login",Nr(_t.CONNECT_OR_CREATE))},logout:async()=>{if(Cr.current=null,vr.current=null,oe&&W.clearProviderAcccessTokens(oe),xt(null),await W.logout(),oe&&er)try{await er.clearMfa({userId:oe.id})}catch(e){}le(null),$(!1),Wt(_r,"logout","onSuccess"),V(!1),te.del(z),te.del(Y(rr.id))},getAccessToken:()=>W.getCustomerAccessToken(),getEthereumProvider:()=>{if(!oe||!oe.wallet)return new Te;let e=ce.find((e=>oe.wallet&&e.address===oe.wallet.address)),t=W.connectors?.walletConnectors.find((t=>t.wallets.find((t=>t.address===e?.address))));return e&&t?t.proxyProvider:new Te},getEthersProvider:()=>{if(!oe||!oe.wallet)return new a(new ve(new Te));let e=ce.find((e=>oe.wallet&&e.address===oe.wallet.address)),t=W.connectors?.walletConnectors.find((t=>t.wallets.find((t=>t.address===e?.address))));return new a(new ve(e&&t?t.proxyProvider:new Te))},getWeb3jsProvider:()=>{if(!oe||!oe.wallet)return new Ce(new Te);let e=ce.find((e=>oe.wallet&&e.address===oe.wallet.address)),t=W.connectors?.walletConnectors.find((t=>t.wallets.find((t=>t.address===e?.address))));return new Ce(e&&t?t.proxyProvider:new Te)},unlinkWallet:async e=>{let t;return le(t=e.startsWith("0x")?await W.unlinkEthereumWallet(e):await W.unlinkSolanaWallet(e)),t},unlinkEmail:async e=>{let t=await W.unlinkEmail(e);return le(t),t},unlinkPhone:async e=>{let t=await W.unlinkPhone(e);return le(t),t},unlinkGoogle:async e=>{let t=await W.unlinkOAuth("google",e);return le(t),t},unlinkTwitter:async e=>{let t=await W.unlinkOAuth("twitter",e);return le(t),t},unlinkDiscord:async e=>{let t=await W.unlinkOAuth("discord",e);return le(t),t},unlinkGithub:async e=>{let t=await W.unlinkOAuth("github",e);return le(t),t},unlinkSpotify:async e=>{let t=await W.unlinkOAuth("spotify",e);return le(t),t},unlinkInstagram:async e=>{let t=await W.unlinkOAuth("instagram",e);return le(t),t},unlinkTiktok:async e=>{let t=await W.unlinkOAuth("tiktok",e);return le(t),t},unlinkLinkedIn:async e=>{let t=await W.unlinkOAuth("linkedin",e);return le(t),t},unlinkApple:async e=>{let t=await W.unlinkOAuth("apple",e);return le(t),t},unlinkFarcaster:async e=>{let t=await W.unlinkFarcaster(e);return le(t),t},unlinkTelegram:async e=>{let t=await W.unlinkTelegram(e);return le(t),t},unlinkPasskey:async e=>{let t=await W.unlinkPasskey(e);return le(t),t},unlinkCrossAppAccount:async({subject:e})=>{let t=oe?.linkedAccounts.find((t=>"cross_app"===t.type&&t.subject===e))?.providerApp;if(!t)throw new Me("Invalid subject");W.storeProviderAccessToken(t.id,null);let r=await W.unlinkOAuth(`privy:${t.id}`,e);return le(r),r},setActiveWallet:async e=>{let t=ce.find((t=>r(t.address)===r(e))),a=oe?.linkedAccounts.find((t=>"wallet"===t.type&&r(t.address)===r(e)));if(t&&await t.isConnected())if(t.linked){let e=Object.assign({},oe);e.wallet=a&&{address:a.address,chainType:a.chainType,chainId:a.chainId,walletClient:a.walletClient,walletClientType:a.walletClientType,connectorType:a.connectorType,imported:a.imported,delegated:a.delegated,walletIndex:a.walletIndex},le(e)}else t.loginOrLink();else sr({externalConnectWallet:{suggestedAddress:e}}),qr()},forkSession:()=>W.forkSession(),createWallet:async e=>{if(e&&"target"in e&&e&&(e=void 0),!q||!oe)throw Wt(_r,"createWallet","onError",je.MUST_BE_AUTHENTICATED),Error("User must be authenticated before creating a Privy wallet");return Qr(oe,15e3,e)},setWalletRecovery:async e=>sa({legacySetWalletPasswordFlow:!1,showAutomaticRecovery:e?.showAutomaticRecovery??!1}),setWalletPassword:async()=>sa({legacySetWalletPasswordFlow:!0,showAutomaticRecovery:!1}),signMessage:(e,t,r)=>new Promise((async(a,n)=>{let{requesterAppId:i}=t||{};if(!q||!oe)return Wt(_r,"signMessage","onError",je.MUST_BE_AUTHENTICATED),void n(Error("User must be authenticated before signing with a Privy wallet"));let o=r??S(oe)?.address;if(!o)throw new Me("User must have an embedded wallet to sign a message.");let{signingWallet:s,rootWallet:l}=F(oe,o);if(!s||!l)return Wt(_r,"signMessage","onError",je.EMBEDDED_WALLET_NOT_FOUND),void n(Error("Must have a Privy wallet before signing"));if("string"!=typeof e||e.length<1)return Wt(_r,"signMessage","onError",je.INVALID_MESSAGE),void n(Error("Message must be a non-empty string"));ir(!0);let c=async()=>{if(!q)throw Error("User must be authenticated before signing with a Privy wallet");let t=await Br();if(!er||!t||!await da.recoverPrimaryWallet())throw Error("Unable to connect to wallet");W.createAnalyticsEvent({eventName:"embedded_wallet_sign_message_started",payload:{walletAddress:s.address,requesterAppId:i}});let{entropyId:r,entropyIdVerifier:a}=k(l),{response:n}=await er.rpc({accessToken:t,entropyId:r,entropyIdVerifier:a,chainType:"ethereum",hdWalletIndex:s.walletIndex??0,requesterAppId:i,request:{method:"personal_sign",params:[e,s.address]}}),o=n.data;return W.createAnalyticsEvent({eventName:"embedded_wallet_sign_message_completed",payload:{walletAddress:s.address,requesterAppId:i}}),o};if(Wr({showWalletUIs:t?.showWalletUIs}))try{let e=await c();Wt(_r,"signMessage","onSuccess",e),a(e)}catch(e){Wt(_r,"signMessage","onError",je.UNABLE_TO_SIGN),n(e??new ge("Unable to sign message"))}else{let{entropyId:r,entropyIdVerifier:i}=k(l);sr({signMessage:{method:"personal_sign",data:e,confirmAndSign:c,onSuccess:e=>{Wt(_r,"signMessage","onSuccess",e),a(e)},onFailure:e=>{Wt(_r,"signMessage","onError",je.UNABLE_TO_SIGN),n(e)},uiOptions:t||{}},connectWallet:{entropyId:r,entropyIdVerifier:i,onCompleteNavigateTo:_t.EMBEDDED_WALLET_SIGN_REQUEST_SCREEN,onFailure:e=>{Wt(_r,"signMessage","onError",je.UNKNOWN_CONNECT_WALLET_ERROR),n(e)}}}),kr(_t.EMBEDDED_WALLET_CONNECTING_SCREEN)}})),signTypedData:(e,t,r)=>new Promise((async(a,n)=>{let{requesterAppId:i}=t||{};if(!q||!oe)return Wt(_r,"signTypedData","onError",je.MUST_BE_AUTHENTICATED),void n(Error("User must be authenticated before signing with a Privy wallet"));let o=r??S(oe)?.address;if(!o)throw new Me("User must have an embedded wallet to sign a message.");let{signingWallet:s,rootWallet:l}=F(oe,o);if(!l||!s)return Wt(_r,"signTypedData","onError",je.EMBEDDED_WALLET_NOT_FOUND),void n(Error("Must have a Privy wallet before signing"));ir(!0);let c=ne(e),d=async()=>{if(!q)throw Error("User must be authenticated before signing with a Privy wallet");let e=await Br();if(!er||!e||!await da.recoverPrimaryWallet())throw Error("Unable to connect to wallet");W.createAnalyticsEvent({eventName:"embedded_wallet_sign_typed_data_started",payload:{walletAddress:s.address,requesterAppId:i}});let{entropyId:t,entropyIdVerifier:r}=k(l),{response:a}=await er.rpc({accessToken:e,entropyId:t,entropyIdVerifier:r,chainType:"ethereum",hdWalletIndex:s.walletIndex??0,requesterAppId:i,request:{method:"eth_signTypedData_v4",params:[s.address,c]}}),n=a.data;return W.createAnalyticsEvent({eventName:"embedded_wallet_sign_typed_data_completed",payload:{walletAddress:s.address,requesterAppId:i}}),n};if(Wr({showWalletUIs:t?.showWalletUIs,typedData:!0}))try{let e=await d();Wt(_r,"signTypedData","onSuccess",e),a(e)}catch(e){Wt(_r,"signTypedData","onError",je.UNABLE_TO_SIGN),n(e??new ge("Unable to sign message"))}else{let{entropyId:e,entropyIdVerifier:r}=k(l);sr({signMessage:{method:"eth_signTypedData_v4",data:c,confirmAndSign:d,onSuccess:e=>{Wt(_r,"signTypedData","onSuccess",e),a(e)},onFailure:e=>{Wt(_r,"signTypedData","onError",je.UNABLE_TO_SIGN),n(e)},uiOptions:t||{}},connectWallet:{entropyId:e,entropyIdVerifier:r,onCompleteNavigateTo:_t.EMBEDDED_WALLET_SIGN_REQUEST_SCREEN,onFailure:e=>{Wt(_r,"signMessage","onError",je.UNKNOWN_CONNECT_WALLET_ERROR),n(e)}}}),kr(_t.EMBEDDED_WALLET_CONNECTING_SCREEN)}})),sendTransaction:async(e,t,r,a)=>{let n=await ra(e,t,r,a);return Pe(await n.wait())},sendSolanaTransaction:async(e,t,r,a,n,i)=>{let o=i?we.find((({address:e})=>e===i)):we.slice().sort(((e,t)=>(e.walletIndex??0)-(t.walletIndex??0)))[0];if(!o)throw Wt(_r,"sendSolanaTransaction","onError",je.EMBEDDED_WALLET_NOT_FOUND),new Me("Embedded wallet not found",je.EMBEDDED_WALLET_NOT_FOUND);return await aa({transaction:e,connection:t,transactionOptions:a,uiOptions:r,fundWalletConfig:n,wallet:o})},exportWallet:e=>new Promise((async(t,r)=>{if(!q||!oe)return void r(Error("User must be authenticated before exporting their Privy wallet"));e&&"target"in e&&e&&(e=void 0);let a=e?.address??S(oe)?.address;if(!a)return void r(Error("User does not have an HD Ethereum wallet. To export an imported wallet, pass the `address` of the wallet to `exportWallet`."));let{signingWallet:n,rootWallet:i}=F(oe,a);if(!n||!i)return void r(Error("Must have a Privy wallet before exporting"));ir(!0);let{entropyId:o,entropyIdVerifier:s}=k(i),l={entropyId:o,entropyIdVerifier:s,onCompleteNavigateTo:_t.EMBEDDED_WALLET_KEY_EXPORT_SCREEN,onFailure:r,shouldForceMFA:!0};sr(or),await Br()&&er?er?(sr({keyExport:{appId:I.appId,appClientId:I.clientId,origin:W.apiUrl,walletToExport:n,primaryWallet:i,onSuccess:t,onFailure:r},connectWallet:l}),kr(_t.EMBEDDED_WALLET_CONNECTING_SCREEN)):r(Error("Must have a Privy wallet before exporting")):r(Error("Must have valid access token to enroll in MFA"))})),promptMfa:na,async init(e){switch(e){case"sms":return void await W.initMfaSmsVerification();case"passkey":return await W.initMfaPasskeyVerification();case"totp":return;default:throw Error(`Unsupported MFA method: ${e}`)}},async submit(e,t){switch(e){case"totp":case"sms":if("string"!=typeof t)throw new Me("Invalid MFA code");gr.current?.resolve({mfaMethod:e,mfaCode:t,relyingParty:window.origin}),await new Promise(((e,t)=>{Er.current={resolve:e,reject:t}}));break;case"passkey":if("string"==typeof t)throw new Me("Invalid authenticator response");let r=await import("@simplewebauthn/browser"),a=mt(await r.startAuthentication(t));gr.current?.resolve({mfaMethod:e,mfaCode:a,relyingParty:window.origin}),await new Promise(((e,t)=>{Er.current={resolve:e,reject:t}}));break;default:throw gr.current?.reject(new Me("Unsupported MFA method")),new Me(`Unsupported MFA method: ${e}`)}},cancel(){gr.current?.reject(new Me("MFA canceled"))},async initEnrollmentWithSms(e){let t=await Br();if(!t||!er)throw Error("Must have valid access token to enroll in MFA");await er.initEnrollMfa({method:"sms",accessToken:t,phoneNumber:e.phoneNumber})},enrollInMfa:e=>new Promise(((t,r)=>{if(!e)return da.closePrivyModal(),void t();rr.mfa.noPromptOnMfaRequired&&console.warn("[Privy Warning] Triggering the 'showMfaEnrollmentModal' function when 'noPromptOnMfaRequired' is set to true is unexpected. If this is intentional, ensure that you are building custom UIs for MFA verification."),sr({mfaEnrollmentFlow:{mfaMethods:rr.mfa.methods,onSuccess:t,onFailure:r}}),kr(_t.MFA_ENROLLMENT_FLOW_SCREEN)})),async initEnrollmentWithTotp(){let e=await Br();if(!e||!er)throw Error("Must have valid access token to enroll in MFA");let t=await er.initEnrollMfa({method:"totp",accessToken:e});return{secret:t.secret,authUrl:t.authUrl}},async submitEnrollmentWithSms(e){let t=await Br();if(!t||!er)throw Error("Must have valid access token to enroll in MFA");await er.submitEnrollMfa({method:"sms",accessToken:t,phoneNumber:e.phoneNumber,code:e.mfaCode}),le(await W.getAuthenticatedUser())},async submitEnrollmentWithTotp(e){let t=await Br();if(!t||!er)throw Error("Must have valid access token to enroll in MFA");await er.submitEnrollMfa({method:"totp",accessToken:t,code:e.mfaCode}),le(await W.getAuthenticatedUser())},async initEnrollmentWithPasskey(){},async submitEnrollmentWithPasskey({credentialIds:e}){let t=await Br();if(!t||!er)throw Error("Must have valid access token to enroll in MFA");await er.submitEnrollMfa({method:"passkey",accessToken:t,credentialIds:e}),le(await W.getAuthenticatedUser())},async unenroll(e){let t=await Br();if(!t||!er)throw Error("Must have valid access token to remove MFA");"passkey"===e?await er.submitEnrollMfa({method:"passkey",accessToken:t,credentialIds:[]}):await er.unenrollMfa({method:e,accessToken:t}),le(await W.getAuthenticatedUser())},requestFarcasterSignerFromWarpcast:async()=>{let e=await Br(),t=oe?.linkedAccounts.find((e=>"wallet"===e.type&&"privy"===e.walletClientType));if(!e)throw Error("Must have valid access token to connect with Farcaster");if(!er||!t)throw Error("Must have an embedded wallet to use Farcaster signers");if(!oe?.farcaster?.fid)throw Error("Must have Farcaster account to use Farcaster signers");if(!await da.recoverPrimaryWallet())throw Error("Unable to connect to wallet");let r=await er.initFarcasterSigner({address:t.address,hdWalletIndex:null,accessToken:e,mfaCode:null,mfaMethod:null,relyingParty:window.origin});"approved"===r.status&&le(await W.getAuthenticatedUser()||oe||null),sr({farcasterSigner:r}),kr(_t.AWAITING_FARCASTER_SIGNER)},getFarcasterSignerPublicKey:async()=>{let e,t=await Br(),r=oe?.linkedAccounts.find((e=>"wallet"===e.type&&"privy"===e.walletClientType));if(!t)throw Error("Must have valid access token to connect with Farcaster");if(!er||!r)throw Error("Must have an embedded wallet to use Farcaster signers");if(!oe?.farcaster?.fid)throw Error("Must have Farcaster account to use Farcaster signers");if(!await da.recoverPrimaryWallet())throw Error("Unable to connect to wallet");if(!oe.farcaster?.signerPublicKey)throw Error("Must have a Farcaster signer public key to sign");return e=oe.farcaster.signerPublicKey.slice(2),Uint8Array.from(e.match(/.{1,2}/g).map((e=>parseInt(e,16))))},signFarcasterMessage:async e=>{let t=await Br(),r=oe?.linkedAccounts.find((e=>"wallet"===e.type&&"privy"===e.walletClientType));if(!t)throw Error("Must have valid access token to connect with Farcaster");if(!er||!r)throw Error("Must have an embedded wallet to use Farcaster signers");if(!oe?.farcaster?.fid)throw Error("Must have Farcaster account to use Farcaster signers");if(!await da.recoverPrimaryWallet())throw Error("Unable to connect to wallet");if(!oe.farcaster?.signerPublicKey)throw Error("Must have a Farcaster signer public key to sign");let a=await import("@simplewebauthn/browser"),n=await er.signFarcasterMessage({address:r.address,hdWalletIndex:null,accessToken:t,mfaCode:null,mfaMethod:null,payload:{hash:a.bufferToBase64URLString(e)},fid:BigInt(oe.farcaster.fid),relyingParty:window.origin});return new Uint8Array(a.base64URLStringToBuffer(n.signature))},createGuestAccount:async()=>{if(oe&&!oe.isGuest)throw Error("User cannot already be authenticated to create a guest account");return oe?.isGuest?oe:da.loginWithGuestAccountFlow()},signMessageWithCrossAppWallet(e,{address:t}){let r=oe?.linkedAccounts.some((e=>"cross_app"===e.type&&e.smartWallets.some((e=>e.address===t))));return et({user:oe,client:W,address:t,requesterAppId:rr.id,request:{method:r?"privy_signSmartWalletMessage":"personal_sign",params:[e,t]},reconnect:la})},signTypedDataWithCrossAppWallet(e,{address:t}){let r=oe?.linkedAccounts.some((e=>"cross_app"===e.type&&e.smartWallets.some((e=>e.address===t)))),a=ne(e);return et({user:oe,client:W,address:t,requesterAppId:rr.id,request:{method:r?"privy_signSmartWalletTypedData":"eth_signTypedData_v4",params:[t,a]},reconnect:la})},sendTransactionWithCrossAppWallet(e,{address:t}){let r=oe?.linkedAccounts.some((e=>"cross_app"===e.type&&e.smartWallets.some((e=>e.address===t))));return et({user:oe,client:W,address:t,requesterAppId:rr.id,request:{method:r?"privy_sendSmartWalletTx":"eth_sendTransaction",params:[e]},reconnect:la})},isModalOpen:B,mfaMethods:rr.mfa.methods};Pr=ca.signMessage,Dr=ca.signTypedData,Lr=async(...e)=>{let t=await ra(...e);return rr.embeddedWallets.waitForTransactionConfirmation&&await t.wait(),t};let da={setAuthenticated:$,setUser:le,isNewUserThisSession:Lt,pendingTransaction:null,walletConnectionStatus:Vt,connectors:W.connectors?.walletConnectors??[],solanaWallets:we,rpcConfig:rr.rpcConfig,chains:rr.chains,appId:I.appId,showFiatPrices:"native-token"!==rr.embeddedWallets.priceDisplay.primary,clientAnalyticsId:W.clientAnalyticsId,customAuthStatus:yr,noPromptOnSignature:Ir,emailOtpState:zt,setEmailOtpState:qt,smsOtpState:$t,setSmsOtpState:Yt,oAuthState:Jt,setOAuthState:Zt,siweState:Xt,setSiweState:Qt,isHeadlessOAuthLoading:jt,nativeTokenSymbolForChainId:e=>rr.chains.find((t=>t.id===Number(e)))?.nativeCurrency.symbol,initializeWalletProxy:async e=>{if(er)return er;let t=new Promise((e=>{ur((()=>t=>e(t)))})),r=new Promise((t=>setTimeout((()=>t(null)),e))),a=await Promise.race([t,r]);return ur(null),a},getAuthFlow:()=>W.authFlow,getAuthMeta:()=>W.authFlow?.meta,client:W,closePrivyModal:async(e={shouldCallAuthOnSuccess:!0,isSuccess:!1})=>{let t,r=H&&q&&oe;r&&vr.current&&(t=ia(oe)),"login"===Cr.current?e.shouldCallAuthOnSuccess&&r&&vr.current?(Wt(_r,"login","onComplete",oe,Lt,!1,vr.current,t??null),I.onSuccess?.(oe,Lt)):Wt(_r,"login","onError",je.USER_EXITED_AUTH_FLOW):"link"===Cr.current&&t?e.isSuccess&&r&&vr.current?Wt(_r,"linkAccount","onSuccess",oe,vr.current,t):vr.current&&Wt(_r,"linkAccount","onError",je.USER_EXITED_LINK_FLOW,{linkMethod:vr.current}):"update"===Cr.current&&t&&(e.isSuccess&&r&&vr.current?Wt(_r,"update","onSuccess",oe,vr.current,t):vr.current&&Wt(_r,"update","onError",je.USER_EXITED_UPDATE_FLOW,{linkMethod:vr.current}));let a=Ft&&it.includes(Ft),n=Ft===_t.ERROR_SCREEN&&or.errorModalData&&it.includes(or.errorModalData.previousScreen);if((a||n)&&or.funding){let e,t=ot[Ft]??null;if("solana"===or.funding.chainType){let r=N(gt);if(!r)return void console.warn("Unable to load solana plugin, skipping balance");try{e=BigInt(await r.getBalance({address:or.funding.address,cluster:or.funding.cluster}))}catch{console.error("Unable to pull wallet balance")}Wt(_r,"fundSolanaWallet","onUserExited",{address:or.funding.address,cluster:or.funding.cluster,fundingMethod:t,balance:e})}else{let r=ae(or.funding.chain.id,rr.chains,rr.rpcConfig,{appId:I.appId});try{e=(await r.getBalance(or.funding.address)).toBigInt()}catch{console.error("Unable to pull wallet balance")}Wt(_r,"fundWallet","onUserExited",{address:or.funding.address,chain:or.funding.chain,fundingMethod:t,balance:e})}}sr({...or,externalConnectWallet:{suggestedAddress:void 0}}),Cr.current=null,vr.current=null,Mt(!1),V(!1),setTimeout((()=>{W.authFlow=void 0}),200),W.createAnalyticsEvent({eventName:"modal_closed"})},solanaSignMessage:({message:e,address:t})=>new Promise((async(r,a)=>{if(!q||!oe)return Wt(_r,"signMessage","onError",je.MUST_BE_AUTHENTICATED),void a(Error("User must be authenticated before signing with a Privy wallet"));let n=t??L(oe)?.address;if(!n)throw new Me("User must have an embedded wallet to sign a message.");let{signingWallet:i}=x(oe,n);if(!i)return Wt(_r,"signMessage","onError",je.EMBEDDED_WALLET_NOT_FOUND),void a(Error("Must have a Privy wallet before signing"));if("string"!=typeof e||e.length<1)return Wt(_r,"signMessage","onError",je.INVALID_MESSAGE),void a(Error("Message must be a non-empty string"));ir(!0);let o=async()=>{if(!q)throw Error("User must be authenticated before signing with a Privy wallet");let t=await W.getAccessToken();if(!t)throw Error("User must be authenticated to use their embedded wallet.");let r=da.walletProxy??await da.initializeWalletProxy(15e3);if(!r)throw Error("Failed to initialize embedded wallet proxy.");if(!await da.recoverPrimaryWallet())throw Error("Unable to connect to wallet");let{entropyId:a,entropyIdVerifier:n}=O(oe),{response:o}=await r.rpc({accessToken:t,entropyId:a,entropyIdVerifier:n,chainType:"solana",hdWalletIndex:i.walletIndex??0,request:{method:"signMessage",params:{message:e}}});return o.data.signature};if(Wr({showWalletUIs:void 0}))try{let e=await o();r({signature:e})}catch(e){a(e)}else{let{entropyId:t,entropyIdVerifier:n}=O(oe);sr({signMessage:{method:"solana_signMessage",data:e,confirmAndSign:o,onSuccess:e=>{r({signature:e})},onFailure:e=>{a(e)},uiOptions:{}},connectWallet:{entropyId:t,entropyIdVerifier:n,onCompleteNavigateTo:_t.EMBEDDED_WALLET_SIGN_REQUEST_SCREEN,onFailure:e=>{Wt(_r,"signMessage","onError",je.UNKNOWN_CONNECT_WALLET_ERROR),a(e)}}}),Nr(_t.EMBEDDED_WALLET_CONNECTING_SCREEN)}})),openPrivyModal:kr,connectWallet:Vr,initLoginWithWallet:async(e,t,r)=>{Ae(e)?(vr.current="siwe",Hr(e,t,r)):(vr.current="siws",Kr(e,t))},loginWithWallet:async()=>{let e,t,r;if(!H)throw new Be;if(W.authFlow instanceof E?e="siwe":W.authFlow instanceof _&&(e="siws"),!e)throw new Me("Must initialize SIWE/SIWS flow first.");if(null!==await W.getAccessToken())try{({user:t}=await W.link()),vr.current=e}catch(t){throw Wt(_r,"linkAccount","onError",t.privyErrorCode||je.FAILED_TO_LINK_ACCOUNT,{linkMethod:e}),t}else try{({user:t,isNewUser:r}=await W.authenticate()),vr.current=e}catch(e){throw Wt(_r,"login","onError",e.privyErrorCode||je.GENERIC_CONNECT_WALLET_ERROR),e}le(t||oe||null),Mt(r||!1),$(!0)},delegateWallet:async({address:e,chainType:t})=>new Promise((async(r,a)=>{let n=await Br();if(!q||!oe||!n)throw new Me("User must be authenticated and have an embedded wallet to delegate actions.");if("solana"!==t&&"ethereum"!==t)throw new Me("Only Solana and Ethereum embedded wallets are supported for delegation and revocation.");let i=da.walletProxy??await da.initializeWalletProxy(15e3);if(!i)throw new Me("Wallet proxy not initialized.");if(be({address:e,chainType:t,user:oe}))return r();let o=Ue({address:e,user:oe}),s=Oe({address:e,user:oe});await da.recoverPrimaryWallet(),sr({delegatedActions:{consent:{address:e,onDelegate:async()=>{await i.createDelegatedAction({accessToken:n,rootWallet:s,delegatedWallets:[o]}),await da.refreshUser()},onSuccess:async()=>{r()},onError:async e=>{a(e)}}}}),kr(_t.EMBEDDED_WALLET_DELEGATED_ACTIONS_CONSENT_SCREEN)})),revokeDelegatedWallets:async()=>new Promise((async(e,t)=>{if(!q||!oe)throw new Me("User must be authenticated and have an embedded wallet to revoke a delegated wallet.");if(0===Se(oe).length)throw new Me("User has no delegated wallets to revoke.");sr({delegatedActions:{revoke:{onRevoke:async()=>{await W.revokeDelegatedWallet(),await da.refreshUser()},onSuccess:async()=>{e()},onError:async e=>{t(e)}}}}),kr(_t.EMBEDDED_WALLET_DELEGATED_ACTIONS_REVOKE_SCREEN)})),initLoginWithFarcaster:async(e,t)=>{let r=new y(e,t);W.startAuthFlow(r);try{vr.current="farcaster",await r.initializeFarcasterConnect()}catch(e){throw"login"===Cr.current?Wt(_r,"login","onError",e.privyErrorCode||je.UNKNOWN_AUTH_ERROR):"link"===Cr.current&&Wt(_r,"linkAccount","onError",e.privyErrorCode||je.UNKNOWN_AUTH_ERROR,{linkMethod:"farcaster"}),e}},loginWithFarcaster:async()=>{let e,t;if(!H)throw new Be;if(!(W.authFlow instanceof y))throw new Me("Must initialize Farcaster flow first.");if(null!==await W.getAccessToken())try{({user:e}=await W.link()),vr.current="farcaster"}catch(e){throw Wt(_r,"linkAccount","onError",e.privyErrorCode||je.FAILED_TO_LINK_ACCOUNT,{linkMethod:"farcaster"}),e}else try{({user:e,isNewUser:t}=await W.authenticate()),vr.current="farcaster"}catch(e){throw Wt(_r,"login","onError",e.privyErrorCode||je.UNKNOWN_AUTH_ERROR),e}le(e||null),Mt(t||!1),$(!0)},async loginWithGuestAccountFlow(){let e=new f(this.appId);W.startAuthFlow(e);try{Cr.current="login",vr.current="guest";let{user:e,isNewUser:t}=await W.authenticate();if(t=t||!1,!e)throw new Me("Unable to authenticate guest account");if(D(e,rr.embeddedWallets.createOnLogin))try{await Qr(e,15e3),e=await da.refreshUser()}catch(t){le(e),console.warn("Unable to create embedded wallet for guest account")}else le(e);return Mt(t),$(!0),Wt(_r,"login","onComplete",e,t,!1,"guest",null),e}catch(e){throw Wt(_r,"login","onError",e.privyErrorCode||je.UNKNOWN_AUTH_ERROR),e}},async crossAppAuthFlow({appId:e,popup:t,action:r}){let a=`privy:${e}`;vr.current=a;let{url:n,stateCode:i,codeVerifier:o}=await Xe({api:W.api,appId:e});if(!n)throw W.createAnalyticsEvent({eventName:"cross_app_auth_error",payload:{error:"Unable to open cross-app auth popup",appId:e}}),new Me("No authorization URL returned for cross-app auth.");try{let s=await Ze({url:n,popup:t,provider:a}),l=s.stateCode,c=s.authorizationCode;if(l!==i)throw W.createAnalyticsEvent({eventName:"possible_phishing_attempt",payload:{provider:a,storedStateCode:i??"",returnedStateCode:l??""}}),new Me("Unexpected auth flow. This may be a phishing attempt.",void 0,je.OAUTH_UNEXPECTED);let d=await Qe({appId:e,codeVerifier:o,stateCode:l,authorizationCode:c,action:r,client:W});d&&W.storeProviderAccessToken(e,d);let u=await da.refreshUser();if(!u)throw new Me("Unable to update user");return W.createAnalyticsEvent({eventName:"cross_app_auth_completed",payload:{providerAppId:e}}),u}catch(e){throw W.createAnalyticsEvent({eventName:"cross_app_auth_error",payload:{error:e.toString(),provider:a}}),e}},async initLoginWithOAuth(e,t,r){if(vr.current=e,!re())return void Nr(_t.IN_APP_BROWSER_LOGIN_NOT_POSSIBLE);if("google"===e&&lt(window.navigator.userAgent))return void Nr(_t.IN_APP_BROWSER_LOGIN_NOT_POSSIBLE);"twitter"===e&&window.opener&&window.opener.postMessage({type:qe},"*"),te.del(X),te.del(Q);let a=new Dt({provider:e,disableSignup:!!r,withPrivyUi:!0});t&&a.addCaptchaToken(t),W.startAuthFlow(a);let n=await W.authFlow.getAuthorizationUrl();n&&n.url&&("twitter"===e&&c&&(n.url=n.url.replace("x.com","twitter.com")),window.location.assign(n.url))},async initLoginWithTelegram(e,t){if(!H)throw new Be;vr.current="telegram";let r=new v(e,t);W.startAuthFlow(r),r.meta.telegramWebAppData=void 0,r.meta.telegramAuthResult=await new Promise(((e,t)=>rr.loginConfig.telegramAuthConfiguration?window.Telegram?void window.Telegram.Login.auth({bot_id:rr.loginConfig.telegramAuthConfiguration.botId,request_access:!0},(r=>r?e(r):t(new Me("Telegram auth failed or was canceled by the client")))):t(new Me("Telegram was not initialized")):t(new Me("Telegram Auth configuration is not loaded"))))},async loginWithTelegram(e){let t,r;if(!(W.authFlow instanceof v))throw new Me("Must initialize Telegram flow before calling loginWithTelegram");if(W.authFlow.meta.captchaToken||=e,"login"===Cr.current)try{let e=await W.authenticate();t=e.user,r=e.isNewUser,vr.current="telegram"}catch(e){throw Wt(_r,"login","onError",e.privyErrorCode||je.UNKNOWN_AUTH_ERROR),e}else{if("link"!==Cr.current)throw new Me("Unknown auth intent");try{t=(await W.link()).user,vr.current="telegram"}catch(e){throw Wt(_r,"linkAccount","onError",e.privyErrorCode||je.FAILED_TO_LINK_ACCOUNT,{linkMethod:"telegram"}),e}}le(t),Mt(r||!1),$(!0)},async recoveryOAuthFlow(e,t,r){let a,n;function i(t){if(!t)throw W.createAnalyticsEvent({eventName:"recovery_oauth_error",payload:{error:"Unable to open recovery OAuth popup",provider:e}}),new Me("Recovery OAuth failed")}switch(e){case"google-drive":{let t,o,{url:s,codeVerifier:l,stateCode:c}=await tt({api:Rr.api,provider:e});i(s);try{let a=await dt({url:s,popup:r,provider:e});if(t=a.stateCode,o=a.authorizationCode,t!==c)throw W.createAnalyticsEvent({eventName:"possible_phishing_attempt",payload:{provider:e,storedStateCode:c??"",returnedStateCode:t??""}}),new Me("Unexpected auth flow. This may be a phishing attempt.",void 0,je.OAUTH_UNEXPECTED)}catch(t){throw W.createAnalyticsEvent({eventName:"recovery_oauth_error",payload:{error:t.toString(),provider:e}}),new Me("Recovery OAuth failed")}[a,n]=await Promise.all([Br(),rt({api:Rr.api,provider:e,codeVerifier:l,stateCode:t,authorizationCode:o})]);break}case"icloud":{let{url:t}=await tt({api:Rr.api,provider:e});i(t);let{ckWebAuthToken:o}=await dt({url:t,popup:r,provider:e});n=o,a=await Br()}}if(!er)throw new Me("Cannot connect to wallet proxy");if(!a)throw new Me("Unable to authorize user");switch(t){case"recover":{let t=or.recoverWallet?.entropyId,r=or.recoverWallet?.entropyIdVerifier;if(!t||!r)throw new Me("Recovery OAuth failed");W.createAnalyticsEvent({eventName:"embedded_wallet_recovery_started",payload:{walletAddress:t,recoveryMethod:e}}),await er.recover({accessToken:a,entropyId:t,entropyIdVerifier:r,recoveryAccessToken:n}),W.createAnalyticsEvent({eventName:"embedded_wallet_recovery_completed",payload:{walletAddress:t,recoveryMethod:e}});break}case"create-wallet":{W.createAnalyticsEvent({eventName:"embedded_wallet_creation_started"}),await er.create({accessToken:a,recoveryAccessToken:n,recoveryMethod:e});let t=S(await da.refreshUser());if(!t)throw Wt(_r,"createWallet","onError",je.UNKNOWN_EMBEDDED_WALLET_ERROR),Error("Failed to create wallet");W.createAnalyticsEvent({eventName:"embedded_wallet_creation_completed",payload:{walletAddress:t.address}}),Wt(_r,"createWallet","onSuccess",t);break}case"set-recovery":{let t=U(oe);if(!t)throw Wt(_r,"setWalletRecovery","onError",je.EMBEDDED_WALLET_NOT_FOUND),Error("Embedded wallet not found");W.createAnalyticsEvent({eventName:"embedded_wallet_set_recovery_started",payload:{walletAddress:t.address,existingRecoveryMethod:t.recoveryMethod,targetRecoveryMethod:e}});let{entropyId:r,entropyIdVerifier:i}=k(t);await er.setRecovery({accessToken:a,entropyId:r,entropyIdVerifier:i,recoveryMethod:e,recoveryAccessToken:n});let o=U(await da.refreshUser());if(!o)throw Wt(_r,"createWallet","onError",je.UNKNOWN_EMBEDDED_WALLET_ERROR),Error("Failed to set recovery on wallet");W.createAnalyticsEvent({eventName:"embedded_wallet_set_recovery_completed",payload:{walletAddress:t.address,existingRecoveryMethod:t.recoveryMethod,targetRecoveryMethod:e}}),Wt(_r,"setWalletRecovery","onSuccess",e,o);break}default:throw new Me("Unsupported recovery action")}},async loginWithOAuth(e){let t,r,a;if(!(W.authFlow instanceof Dt))throw new Me("Must initialize OAuth flow before calling loginWithOAuth");let n=te.get(J),i=W.authFlow.meta.stateCode;if(n!==i)throw W.createAnalyticsEvent({eventName:"possible_phishing_attempt",payload:{provider:e,storedStateCode:n??"",returnedStateCode:i??""}}),new Me("Unexpected auth flow. This may be a phishing attempt.",void 0,je.OAUTH_UNEXPECTED);if(null!==await W.getAccessToken())try{let r=await W.link();t=r.user,a=r.oAuthTokens,vr.current=e}catch(t){throw Wt(_r,"linkAccount","onError",t.privyErrorCode||je.FAILED_TO_LINK_ACCOUNT,{linkMethod:e}),t}else try{let n=await W.authenticate();t=n.user,r=n.isNewUser,a=n.oAuthTokens,vr.current=e}catch(t){throw"login"===Cr.current?Wt(_r,"login","onError",t.privyErrorCode||je.UNKNOWN_AUTH_ERROR):"link"===Cr.current&&Wt(_r,"linkAccount","onError",t.privyErrorCode||je.FAILED_TO_LINK_ACCOUNT,{linkMethod:e}),t}return le(t),Mt(r||!1),$(!0),a&&t&&Wt(_r,"oAuthAuthorization","onOAuthTokenGrant",a,{user:t}),a},passkeyAuthState:Kt,setPasskeyAuthState:Gt,async initLoginWithPasskey({captchaToken:e,withPrivyUi:t}){let r=new g({captchaToken:e,setPasskeyAuthState:Gt});W.startAuthFlow(r),Cr.current="login";try{vr.current="passkey",Gt({status:"generating-challenge"}),await r.initAuthenticationFlow(t),Gt({status:"awaiting-passkey"})}catch(e){throw Gt({status:"error",error:e}),Wt(_r,"login","onError",e.privyErrorCode||je.UNKNOWN_AUTH_ERROR),e}},async loginWithPasskey(){let e,t;if(!H)throw new Be;if(!(W.authFlow instanceof g))throw new Me("Must initialize Passkey flow first.");if("passkey"!==vr.current){let e=new Me("Must init login with Passkey flow first.");throw Gt({status:"error",error:e}),e}let r=await Br();try{vr.current="passkey",Gt({status:"awaiting-passkey"}),({user:e,isNewUser:t}=await W.authenticate())}catch(e){throw Gt({status:"error",error:e}),Wt(_r,"login","onError",e.privyErrorCode||je.UNKNOWN_AUTH_ERROR),e}le(e),Mt(t||!1),$(!0),Gt({status:"done"});let a=e?.linkedAccounts.find((({type:e})=>"passkey"===e))||null;return{user:e,isNewUser:t||!1,wasAlreadyAuthenticated:!!r,loginAccount:a}},async initLinkWithPasskey(e){let t=new g({captchaToken:e});W.startAuthFlow(t),Cr.current="link",vr.current="passkey",Gt({status:"generating-challenge"});try{await t.initLinkFlow(),Gt({status:"awaiting-passkey"})}catch(e){throw Wt(_r,"linkAccount","onError",e.privyErrorCode||je.UNKNOWN_AUTH_ERROR,{linkMethod:"passkey"}),Gt({status:"error",error:e}),e}},async linkWithPasskey(){let e;if(!H)throw new Be;if(!(W.authFlow instanceof g))throw new Me("Must initialize Passkey flow first.");if("passkey"!==vr.current)throw new Me("Must init login with Passkey flow first.");try{vr.current="passkey",({user:e}=await W.link())}catch(e){throw Wt(_r,"linkAccount","onError",e.privyErrorCode||je.FAILED_TO_LINK_ACCOUNT,{linkMethod:"passkey"}),e}return le(e||oe||null),Gt({status:"done"}),e},async initLoginWithHeadlessOAuth(e,t,r){if(!re())throw Error("It looks like you're using an in-app browser. To log in, please try again using an external browser.");if("google"===e&&lt(window.navigator.userAgent))throw Error("It looks like you're using an in-app browser. To log in, please try again using an external browser.");let a=new Dt({provider:e,withPrivyUi:!1,disableSignup:r??!1});t&&a.addCaptchaToken(t),Zt({status:"loading"});let n=await W.startAuthFlow(a).getAuthorizationUrl();n?.url&&window.location.assign(n.url)},async loginWithHeadlessOAuth(e){let t,r,a;Bt(!0),Zt({status:"loading"}),W.startAuthFlow(new Dt(e));let n=te.get(J),i=e.stateCode;if(n!==i)throw W.createAnalyticsEvent({eventName:"possible_phishing_attempt",payload:{provider:e.provider,storedStateCode:n??"",returnedStateCode:i??""}}),Bt(!1),new Me("Unexpected auth flow. This may be a phishing attempt.",void 0,je.OAUTH_UNEXPECTED);if(null!==await W.getAccessToken())try{({user:t,oAuthTokens:a}=await W.link()),vr.current=e.provider;let r=ia(t);t&&r&&Wt(_r,"linkAccount","onSuccess",t,vr.current,r)}catch(t){throw Bt(!1),Wt(_r,"linkAccount","onError",t.privyErrorCode||je.FAILED_TO_LINK_ACCOUNT,{linkMethod:e.provider}),t}else try{({user:t,isNewUser:r,oAuthTokens:a}=await W.authenticate()),vr.current=e.provider;let n=ia(t);t&&n&&void 0!==r&&Wt(_r,"login","onComplete",t,r,!1,vr.current,n)}catch(e){throw Bt(!1),Zt({status:"error",error:e}),Wt(_r,"login","onError",e.privyErrorCode||je.UNKNOWN_AUTH_ERROR),e}return le(t),Mt(r||!1),$(!0),Bt(!1),Zt({status:"done"}),a&&t&&Wt(_r,"oAuthAuthorization","onOAuthTokenGrant",a,{user:t}),t??void 0},initLoginWithEmail:async({email:e,captchaToken:t,disableSignup:r,withPrivyUi:a})=>{let n=new m({email:e,captchaToken:t,disableSignup:r});W.startAuthFlow(n);try{vr.current="email",qt({status:"sending-code"}),await n.sendCodeEmail({withPrivyUi:a}),qt({status:"awaiting-code-input"})}catch(e){throw qt({status:"error",error:e}),"login"===Cr.current?Wt(_r,"login","onError",e.privyErrorCode||je.UNKNOWN_AUTH_ERROR):"link"===Cr.current&&Wt(_r,"linkAccount","onError",e.privyErrorCode||je.FAILED_TO_LINK_ACCOUNT,{linkMethod:"email"}),e}},initUpdateEmail:async(e,t,r)=>{let a=new w(e,t,r);W.startAuthFlow(a);try{await a.sendCodeEmail({withPrivyUi:!0})}catch(e){Wt(_r,"update","onError",e.privyErrorCode||je.UNKNOWN_AUTH_ERROR,{linkMethod:vr.current})}},initUpdatePhone:async(e,t,r)=>{let a=new A(e,t,r);W.startAuthFlow(a);try{await a.sendSmsCode({withPrivyUi:!0})}catch(e){Wt(_r,"update","onError",e.privyErrorCode||je.UNKNOWN_AUTH_ERROR,{linkMethod:vr.current})}},initLoginWithSms:async({phoneNumber:e,captchaToken:t,disableSignup:r,withPrivyUi:a})=>{Yt({status:"sending-code"});let n=new T({phoneNumber:e,captchaToken:t,disableSignup:r});W.startAuthFlow(n);try{vr.current="sms",await n.sendSmsCode({withPrivyUi:a}),Yt({status:"awaiting-code-input"})}catch(e){throw Yt({status:"error",error:e}),"login"===Cr.current?Wt(_r,"login","onError",e.privyErrorCode||je.UNKNOWN_AUTH_ERROR):"link"===Cr.current&&Wt(_r,"linkAccount","onError",e.privyErrorCode||je.FAILED_TO_LINK_ACCOUNT,{linkMethod:"sms"}),e}},resendEmailCode:async()=>{await(W.authFlow?.sendCodeEmail({withPrivyUi:!0}))},resendSmsCode:async()=>{await(W.authFlow?.sendSmsCode({withPrivyUi:!0}))},loginWithCode:async e=>{let t,r;function a(e){W.authFlow instanceof m?qt(e):W.authFlow instanceof T&&Yt(e)}if(a({status:"submitting-code"}),!H){let e=new Be;throw a({status:"error",error:e}),e}if(W.authFlow instanceof m)W.authFlow.meta.emailCode=e.trim();else{if(!(W.authFlow instanceof T)){let e=new Me("Must initialize a passwordless code flow first");throw a({status:"error",error:e}),e}W.authFlow.meta.smsCode=e.trim()}let n=await Br();if("link"===Cr.current)try{({user:t}=await W.link())}catch(e){throw a({status:"error",error:e}),Wt(_r,"linkAccount","onError",e.privyErrorCode||je.FAILED_TO_LINK_ACCOUNT,{linkMethod:vr.current}),e}else if("update"===Cr.current)try{({user:t}=await W.link())}catch(e){throw a({status:"error",error:e}),Wt(_r,"update","onError",e.privyErrorCode||je.FAILED_TO_UPDATE_ACCOUNT,{linkMethod:vr.current}),e}else try{({user:t,isNewUser:r}=await W.authenticate())}catch(e){throw a({status:"error",error:e}),Wt(_r,"login","onError",e.privyErrorCode||je.UNKNOWN_AUTH_ERROR),e}let i=t||oe;le(i||null),Mt(r||!1),$(!0),a({status:"done"});let o=null;return W.authFlow instanceof m?o=i?.linkedAccounts.find((({type:e})=>"email"===e))||null:W.authFlow instanceof T&&(o=i?.linkedAccounts.find((({type:e})=>"phone"===e))||null),{user:i,isNewUser:r||!1,wasAlreadyAuthenticated:!!n,linkedAccount:o}},generateSiweMessage:async({address:e,chainId:t,captchaToken:r})=>{Cr.current="link",vr.current="siwe",Qt({status:"generating-message"});let a=await W.generateSiweNonce({address:e,captchaToken:r});return Qt({status:"awaiting-signature"}),ut({address:e,chainId:t.replace("eip155:",""),nonce:a})},generateSiweMessageForSmartWallet:async({address:e,chainId:t})=>{let r=await W.generateSiweNonce({address:e});return ut({address:e,chainId:t.replace("eip155:",""),nonce:r})},linkSmartWallet:async({message:e,signature:t,smartWalletType:r})=>{let a;a=await W.linkSmartWallet({message:e,signature:t,smartWalletType:r}),le((a=await da.refreshUser()??a)||oe||null)},linkWithSiwe:async({message:e,signature:t,chainId:r,walletClientType:a,connectorType:n})=>{let i;zr("siwe");let o=null;try{Qt({status:"submitting-signature"}),i=await W.linkWithSiwe({message:e,signature:t,chainId:r,walletClientType:a,connectorType:n}),i=await da.refreshUser()??i,Qt({status:"done"}),(o=ia(i)||null)&&Wt(_r,"linkAccount","onSuccess",i,"siwe",o)}catch(e){throw Wt(_r,"linkAccount","onError",e.privyErrorCode||je.FAILED_TO_LINK_ACCOUNT,{linkMethod:"siwe"}),Cr.current=null,vr.current=null,Qt({status:"error",error:e}),e}let s=i||oe;return le(s||null),Cr.current=null,vr.current=null,{user:s,linkedAccount:o}},refreshUser:async()=>{let e=await W.getAuthenticatedUser();return $(!!e),le(e),e},walletProxy:er,createAnalyticsEvent:({eventName:e,payload:t,timestamp:r})=>W.createAnalyticsEvent({eventName:e,payload:t,timestamp:r}),acceptTerms:async()=>{let e=await W.acceptTerms();return le(e),e},getUsdTokenPrice:e=>W.getUsdTokenPrice(e),getUsdPriceForSol:()=>W.getUsdPriceForSol(),recoverPrimaryWallet:async e=>new Promise((async(t,r)=>{let a=U(e?.user??oe)||P(e?.user??oe),n=await Br();if(!n||!er||!a)return void r(Error("Must have valid access token and Privy wallet to recover wallet"));ir(!0);let{entropyId:i,entropyIdVerifier:o}=k(a);try{await er.connect({accessToken:n,entropyId:i,entropyIdVerifier:o}),t(!0)}catch(e){Re(e)&&"privy"===a.recoveryMethod?(W.createAnalyticsEvent({eventName:"embedded_wallet_pinless_recovery_started",payload:{walletAddress:a.address}}),(await er.recover({entropyId:i,entropyIdVerifier:o,accessToken:n})).entropyId||r(Error("Unable to recover wallet")),W.createAnalyticsEvent({eventName:"embedded_wallet_recovery_completed",payload:{walletAddress:a.address}}),t(!0)):Re(e)&&"privy"!==a.recoveryMethod?(sr({recoverWallet:{entropyId:i,entropyIdVerifier:o,onFailure:r,onSuccess:()=>t(!0)},recoveryOAuthStatus:{provider:a.recoveryMethod,action:"recover"}}),kr(at(a.recoveryMethod))):r(e)}})),createEmbeddedSolanaWallet:async e=>{if(e&&"target"in e&&(e=void 0),!q||!oe)throw Wt(_r,"createWallet","onError",je.MUST_BE_AUTHENTICATED),Error("User must be authenticated before creating a Privy wallet");return(async(e,t,r)=>{let a=S(e),n=L(e),i=r&&"createAdditional"in r&&r.createAdditional,o=r&&"walletIndex"in r?r.walletIndex:void 0,s=(j(e)?.walletIndex??-1)+1;if(n&&!i&&"number"!=typeof o)throw Wt(_r,"createWallet","onError",je.EMBEDDED_WALLET_ALREADY_EXISTS),Error("User already has an embedded wallet.");if("number"==typeof o&&o<0)throw Wt(_r,"createWallet","onError",je.EMBEDDED_WALLET_CREATE_ERROR),Error(`A negative walletIndex (${o}) is invalid.`);let[l,c]=await Promise.all([da.initializeWalletProxy(t),Br()]);if(!l||!c)throw Wt(_r,"createWallet","onError",je.UNKNOWN_EMBEDDED_WALLET_ERROR),Error("Failed to connect to wallet proxy");return await ea({user:e,wp:l,accessToken:c,walletIndex:o??s,ethereumWallet:a})})(oe,15e3,e)},exportSolanaWallet:e=>new Promise((async(t,r)=>{if(!q||!oe)return void r(Error("User must be authenticated before exporting their Privy wallet"));let a=e?.address??L(oe)?.address;if(!a)return void r(Error("User does not have an HD Solana wallet."));let{signingWallet:n,rootWallet:i}=x(oe,a);if(!n||!i)return void r(Error("Must have a Privy wallet before exporting"));if(ir(!0),!await Br()||!er)return void r(Error("Must have valid access token to enroll in MFA"));if(!er)return void r(Error("Must have a Privy wallet before exporting"));let{entropyId:o,entropyIdVerifier:s}=k(i);sr({connectWallet:{entropyId:o,entropyIdVerifier:s,onCompleteNavigateTo:_t.EMBEDDED_WALLET_KEY_EXPORT_SCREEN,onFailure:r,shouldForceMFA:!0},keyExport:{appId:I.appId,appClientId:I.clientId,origin:W.apiUrl,walletToExport:n,primaryWallet:i,onSuccess:t,onFailure:r}}),kr(_t.EMBEDDED_WALLET_CONNECTING_SCREEN)})),setReadyToTrue:e=>{G(!0),lr?.(e)},updateWallets:()=>Xr(),fundWallet:async(e,t)=>{let r=_t.FUNDING_METHOD_SELECTION_SCREEN;sr({funding:Rt({address:e,appConfig:rr,fundWalletConfig:t,methodScreen:r})}),kr(r)},openModal:kr,requestFarcasterSignerStatus:async e=>{let t=await Br(),r=oe?.linkedAccounts.find((e=>"wallet"===e.type&&"privy"===e.walletClientType));if(!t)throw Error("Must have valid access token to connect with Farcaster");if(!er||!r)throw Error("Must have an embedded wallet to use Farcaster signers");if(!oe?.farcaster?.fid)throw Error("Must have Farcaster account to use Farcaster signers");let a=await W.requestFarcasterSignerStatus(e);return"approved"===a.status&&le(await W.getAuthenticatedUser()||oe||null),a},connectCoinbaseSmartWallet:async()=>{rr.externalWallets.coinbaseWallet.connectionOptions="smartWalletOnly";let e=W.connectors?.findWalletConnector("coinbase_wallet","coinbase_smart_wallet")||W.connectors?.findWalletConnector("coinbase_wallet","coinbase_wallet");if(e)return e.updateConnectionPreference("smartWalletOnly"),Vr(e);await jr("coinbase_wallet","coinbase_smart_wallet")},initiateAccountTransfer:async({nonce:e,account:t,accountType:r,externalWalletMetadata:a,telegramAuthResult:n,farcasterEmbeddedAddress:i,oAuthUserInfo:o})=>{let s=await W.sendAccountTransferRequest({nonce:e,account:t,accountType:r,externalWalletMetadata:a,telegramAuthResult:n,farcasterEmbeddedAddress:i,oAuthUserInfo:o});return le(s),s}};Mr=da.recoverPrimaryWallet,Fr=da.recoverPrimaryWallet,xr=da.solanaSignMessage;let ua=l((()=>({wallets:ce,ready:hr&&Ar})),[ce,hr,Ar]),ha=W.authFlow instanceof v,pa=!rr.headless&&rr.captchaEnabled&&!q&&(H||ha);/*#__PURE__*/return e(Ut.Provider,{value:ca,children:/*#__PURE__*/e(kt.Provider,{value:_r,children:/*#__PURE__*/e(Ot.Provider,{value:ua,children:/*#__PURE__*/e(Ct,{...rr,children:/*#__PURE__*/t(Nt.Provider,{value:da,children:[/*#__PURE__*/e(Et,{children:/*#__PURE__*/t(bt,{data:or,setModalData:sr,setInitialScreen:xt,initialScreen:Ft,authenticated:q,open:B,children:[I.children,pa&&/*#__PURE__*/e(ue,{delayedExecution:!1}),/*#__PURE__*/e(Tt,{theme:{...rr.appearance.palette||{}}}),!rr.render.standalone&&/*#__PURE__*/e(he,{open:B})]})}),nr&&ar?/*#__PURE__*/e(Ne,{appId:I.appId,appClientId:I.clientId,clientAnalyticsId:W.clientAnalyticsId,origin:W.apiUrl,mfaMethods:oe?.mfaMethods,mfaPromise:gr,mfaSubmitPromise:Er,onLoad:tr,onLoadFailed:()=>null}):null,rr.loginConfig.telegramAuthConfiguration&&
2
+ /*#__PURE__*/e(At,{$if:!0,children:/*#__PURE__*/e(pe,{scriptHost:I.apiUrl||K,botUsername:rr.loginConfig.telegramAuthConfiguration.botName})})]})})})})})};export{Ir as C,Cr as E,$r as P,Ur as a,Sr as b,Br as c,Vr as d,Hr as e,Kr as f,jr as g,Gr as h,zr as i,qr as j,Wr as l};
@@ -1 +1 @@
1
- import{jsx as o,jsxs as t,Fragment as e}from"react/jsx-runtime";import{useState as n,useEffect as r}from"react";import{isMobile as s}from"react-device-detect";import{styled as i}from"styled-components";import{PrimaryButton as c}from"../components/Button.mjs";import{FixedGappedContainer as m}from"../components/Layouts.mjs";import{ModalFooter as a}from"../components/ModalFooter.mjs";import{ModalHeader as l}from"../components/ModalHeader.mjs";import{ConnectorErrors as p}from"../connectors/errors.mjs";import{DEFAULT_SUCCESS_SCREEN_DURATION_MS as j}from"../constants.mjs";import{usePrivyInternal as h}from"../hooks/internal-context.mjs";import{usePrivyModal as d}from"../hooks/modal-context.mjs";import{WALLET_UI_MAP as u}from"../lib/external-wallets/displayHelpers.mjs";import{BrowserExtensionWallet as g}from"../svg/browser-extension-wallet-icon.mjs";import{WalletLoading as w,getErrorDetails as f}from"./ConnectionStatusScreen.mjs";import"../components/Loader.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"../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"../lib/solana/index.mjs";import"../theme.mjs";import"tinycolor2";import"../lib/cybr53.mjs";import"../hooks/index.mjs";import"@ethersproject/logger";import"../errors.mjs";import"ofetch";import"../errors-9ucGZPEs.mjs";import"../components/PrefetchedImage.mjs";import"./index.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/phantom.mjs";import"../svg/rabby.mjs";import"../svg/rainbow.mjs";import"../svg/safe.mjs";import"../svg/uniswap.mjs";import"../svg/universal-profile.mjs";import"../svg/wallet-connect.mjs";import"../svg/zerion.mjs";import"../auth-flows/siwe.mjs";import"../effect.mjs";import"../lib/siwe.mjs";import"../auth-flows/siws.mjs";import"../lib/siws.mjs";import"../client/user.mjs";import"@ethersproject/address";import"../connectors/is-wallet-installed.mjs";import"../connectors/get-legacy-injected-providers.mjs";import"../connectors/userAlreadyHasConnectedCoinbaseWallet.mjs";import"viem";import"../connectors/walletconnect-v2.mjs";import"@walletconnect/ethereum-provider";import"../utils/index.mjs";import"@ethersproject/providers";import"../connectors/ethereum/index.mjs";import"../storage.mjs";import"../connectors/areWalletArraysEqual.mjs";import"../connectors/isBaseConnectedEthereumWallet.mjs";import"../connectors/base.mjs";import"eventemitter3";import"../connectors/getRpcTimeout.mjs";import"../connectors/privyProxyProvider.mjs";import"../connectors/walletconnect-registry.mjs";import"../hook-utils/useInterval.mjs";import"../hooks/captcha-context.mjs";import"../hooks/privy-context.mjs";import"../lib/useHasTabbedAway.mjs";const y=()=>{let i,{navigateBack:y,navigate:b,lastScreen:k,currentScreen:C,data:x,setModalData:S}=d(),{walletConnectionStatus:T,closePrivyModal:A}=h(),[E,I]=n(void 0),[M,R]=n(0),W="connected"===T?.status,_="switching_to_supported_chain"===T?.status;r((()=>{if(W){let o;if(x?.externalConnectWallet?.onCompleteNavigateTo){let t=x.externalConnectWallet.onCompleteNavigateTo,e=T.connectedWallet?.address;o=setTimeout((()=>{x.funding&&S({...x,funding:{...x.funding,connectedWalletAddress:e}}),b(t({walletChainType:T.connector?.chainType}))}),j)}else o=setTimeout(A,j);return()=>clearTimeout(o)}}),[W]);r((()=>{var o;T?.connectError&&(o=T?.connectError,I(f(o)))}),[T]);let B=T?.connector?.connectorType||"injected",H=T?.connector?.walletClientType||"unknown",L=u[H]?.displayName||T?.connector?.walletBranding.name||"Browser Extension",z=u[H]?.logo||T?.connector?.walletBranding.icon||(t=>/*#__PURE__*/o(g,{...t})),F="Browser Extension"===L?L.toLowerCase():L;i=W?`Successfully connected with ${F}`:E?E.message:_?"Switching networks":`Waiting for ${F}`;let N="Don’t see your wallet? Check your other browser windows.";return W?N="You’re good to go!":M>=2&&E?N="Unable to connect wallet":E?N=E.detail:_?N="Switch your wallet to the requested network.":"metamask"===H&&s?N="Click to continue to open and connect MetaMask.":"metamask"===H?N="For the best experience, connect only one wallet at a time.":"wallet_connect_v2"===B?N="Open your mobile wallet app to continue":"coinbase_wallet"===B&&(N="Open the Coinbase app on your phone to continue."),/*#__PURE__*/t(e,{children:[/*#__PURE__*/o(l,{backFn:C===k?void 0:y}),/*#__PURE__*/t(v,{children:[/*#__PURE__*/o(w,{walletLogo:z,success:W,fail:!!E}),/*#__PURE__*/t(m,{children:[/*#__PURE__*/o("h3",{children:i}),/*#__PURE__*/o("p",{children:N})]}),E==p.ERROR_USER_EXISTS?/*#__PURE__*/o(c,{onClick:y,children:"Use a different wallet"}):!W&&E?.retryable&&M<2?/*#__PURE__*/o(c,{onClick:()=>{R(M+1),I(void 0),T?.connectRetry()},disabled:!W&&(!E?.retryable||M>=2),children:"Retry"}):!W&&E&&M>=2?/*#__PURE__*/o(c,{onClick:y,children:"Use a different wallet"}):null]}),/*#__PURE__*/o(a,{})]})};let v=/*#__PURE__*/i.div.withConfig({displayName:"ConnectContainer",componentId:"sc-1346f57-0"})(["display:flex;flex-direction:column;align-items:center;justify-content:center;gap:24px;width:100%;"]);export{y as ConnectOnlyStatusScreen};
1
+ import{jsx as o,jsxs as t,Fragment as e}from"react/jsx-runtime";import{useState as n,useEffect as r}from"react";import{isMobile as i}from"react-device-detect";import{styled as s}from"styled-components";import{PrimaryButton as c}from"../components/Button.mjs";import{FixedGappedContainer as m}from"../components/Layouts.mjs";import{ModalFooter as a}from"../components/ModalFooter.mjs";import{ModalHeader as l}from"../components/ModalHeader.mjs";import{ConnectorErrors as p}from"../connectors/errors.mjs";import{DEFAULT_SUCCESS_SCREEN_DURATION_MS as j}from"../constants.mjs";import{usePrivyInternal as h}from"../hooks/internal-context.mjs";import{usePrivyModal as d}from"../hooks/modal-context.mjs";import{WALLET_UI_MAP as u}from"../lib/external-wallets/displayHelpers.mjs";import{BrowserExtensionWallet as g}from"../svg/browser-extension-wallet-icon.mjs";import{WalletLoading as w,getErrorDetails as f}from"./ConnectionStatusScreen.mjs";import"../components/Loader.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"../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"../lib/solana/index.mjs";import"../theme.mjs";import"tinycolor2";import"../lib/cybr53.mjs";import"../hooks/index.mjs";import"@ethersproject/logger";import"@privy-io/js-sdk-core";import"../errors.mjs";import"ofetch";import"../components/PrefetchedImage.mjs";import"./index.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/phantom.mjs";import"../svg/rabby.mjs";import"../svg/rainbow.mjs";import"../svg/safe.mjs";import"../svg/uniswap.mjs";import"../svg/universal-profile.mjs";import"../svg/wallet-connect.mjs";import"../svg/zerion.mjs";import"../auth-flows/siwe.mjs";import"../effect.mjs";import"../lib/siwe.mjs";import"../auth-flows/siws.mjs";import"../lib/siws.mjs";import"../client/user.mjs";import"@ethersproject/address";import"../connectors/is-wallet-installed.mjs";import"../connectors/get-legacy-injected-providers.mjs";import"../connectors/userAlreadyHasConnectedCoinbaseWallet.mjs";import"viem";import"../connectors/walletconnect-v2.mjs";import"@walletconnect/ethereum-provider";import"../utils/index.mjs";import"@ethersproject/providers";import"../connectors/ethereum/index.mjs";import"../storage.mjs";import"../connectors/areWalletArraysEqual.mjs";import"../connectors/isBaseConnectedEthereumWallet.mjs";import"../connectors/base.mjs";import"eventemitter3";import"../connectors/getRpcTimeout.mjs";import"../connectors/privyProxyProvider.mjs";import"../connectors/walletconnect-registry.mjs";import"../hook-utils/useInterval.mjs";import"../hooks/captcha-context.mjs";import"../hooks/privy-context.mjs";import"../lib/useHasTabbedAway.mjs";const y=()=>{let s,{navigateBack:y,navigate:b,lastScreen:k,currentScreen:C,data:x,setModalData:S}=d(),{walletConnectionStatus:T,closePrivyModal:A}=h(),[E,I]=n(void 0),[M,R]=n(0),W="connected"===T?.status,_="switching_to_supported_chain"===T?.status;r((()=>{if(W){let o;if(x?.externalConnectWallet?.onCompleteNavigateTo){let t=x.externalConnectWallet.onCompleteNavigateTo,e=T.connectedWallet?.address;o=setTimeout((()=>{x.funding&&S({...x,funding:{...x.funding,connectedWalletAddress:e}}),b(t({walletChainType:T.connector?.chainType}))}),j)}else o=setTimeout(A,j);return()=>clearTimeout(o)}}),[W]);r((()=>{var o;T?.connectError&&(o=T?.connectError,I(f(o)))}),[T]);let B=T?.connector?.connectorType||"injected",H=T?.connector?.walletClientType||"unknown",L=u[H]?.displayName||T?.connector?.walletBranding.name||"Browser Extension",z=u[H]?.logo||T?.connector?.walletBranding.icon||(t=>/*#__PURE__*/o(g,{...t})),F="Browser Extension"===L?L.toLowerCase():L;s=W?`Successfully connected with ${F}`:E?E.message:_?"Switching networks":`Waiting for ${F}`;let N="Don’t see your wallet? Check your other browser windows.";return W?N="You’re good to go!":M>=2&&E?N="Unable to connect wallet":E?N=E.detail:_?N="Switch your wallet to the requested network.":"metamask"===H&&i?N="Click to continue to open and connect MetaMask.":"metamask"===H?N="For the best experience, connect only one wallet at a time.":"wallet_connect_v2"===B?N="Open your mobile wallet app to continue":"coinbase_wallet"===B&&(N="Open the Coinbase app on your phone to continue."),/*#__PURE__*/t(e,{children:[/*#__PURE__*/o(l,{backFn:C===k?void 0:y}),/*#__PURE__*/t(v,{children:[/*#__PURE__*/o(w,{walletLogo:z,success:W,fail:!!E}),/*#__PURE__*/t(m,{children:[/*#__PURE__*/o("h3",{children:s}),/*#__PURE__*/o("p",{children:N})]}),E==p.ERROR_USER_EXISTS?/*#__PURE__*/o(c,{onClick:y,children:"Use a different wallet"}):!W&&E?.retryable&&M<2?/*#__PURE__*/o(c,{onClick:()=>{R(M+1),I(void 0),T?.connectRetry()},disabled:!W&&(!E?.retryable||M>=2),children:"Retry"}):!W&&E&&M>=2?/*#__PURE__*/o(c,{onClick:y,children:"Use a different wallet"}):null]}),/*#__PURE__*/o(a,{})]})};let v=/*#__PURE__*/s.div.withConfig({displayName:"ConnectContainer",componentId:"sc-1346f57-0"})(["display:flex;flex-direction:column;align-items:center;justify-content:center;gap:24px;width:100%;"]);export{y as ConnectOnlyStatusScreen};
@@ -1,2 +1,2 @@
1
- import{jsx as e,jsxs as o,Fragment as t}from"react/jsx-runtime";import{useState as n,useEffect as r}from"react";import{isMobile as i}from"react-device-detect";import{styled as c}from"styled-components";import{SiweFlow as s}from"../auth-flows/siwe.mjs";import{SiwsFlow as a}from"../auth-flows/siws.mjs";import{shouldProceedtoEmbeddedWalletCreationFlow as l}from"../client/user.mjs";import{PrimaryButton as m}from"../components/Button.mjs";import{FixedGappedContainer as p}from"../components/Layouts.mjs";import{ConnectionLoader as d}from"../components/Loader.mjs";import{ModalFooter as h}from"../components/ModalFooter.mjs";import{ModalHeader as u}from"../components/ModalHeader.mjs";import{ConnectorErrors as j,PrivyProviderRpcError as f,WalletTimeoutError as g,UserRejectedConnectionError as w}from"../connectors/errors.mjs";import{isCoinbaseWalletInstalled as E}from"../connectors/is-wallet-installed.mjs";import{userAlreadyHasConnectedCoinbaseWallet as y}from"../connectors/userAlreadyHasConnectedCoinbaseWallet.mjs";import{WalletConnectV2WalletConnector as C}from"../connectors/walletconnect-v2.mjs";import{DEFAULT_SUCCESS_SCREEN_DURATION_MS as _}from"../constants.mjs";import{PrivyErrorCode as v,PrivyUserLimitReachedError as b}from"../errors.mjs";import T from"../hook-utils/useInterval.mjs";import{useCaptcha as R}from"../hooks/captcha-context.mjs";import{usePrivyInternal as S}from"../hooks/internal-context.mjs";import{usePrivyModal as N}from"../hooks/modal-context.mjs";import{usePrivyContext as k}from"../hooks/privy-context.mjs";import{WALLET_UI_MAP as A}from"../lib/external-wallets/displayHelpers.mjs";import{useHasTabbedAway as O}from"../lib/useHasTabbedAway.mjs";import{BrowserExtensionWallet as x}from"../svg/browser-extension-wallet-icon.mjs";import{sleep as I}from"../utils/index.mjs";import{ModalScreen as L}from"./index.mjs";import"../effect.mjs";import"../lib/siwe.mjs";import"../lib/siws.mjs";import"@ethersproject/address";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"../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"../lib/solana/index.mjs";import"../theme.mjs";import"tinycolor2";import"../lib/cybr53.mjs";import"@ethersproject/logger";import"../errors-9ucGZPEs.mjs";import"../connectors/get-legacy-injected-providers.mjs";import"viem";import"@walletconnect/ethereum-provider";import"../svg/metamask.mjs";import"../svg/wallet-connect.mjs";import"../connectors/ethereum/index.mjs";import"@ethersproject/providers";import"../storage.mjs";import"../connectors/areWalletArraysEqual.mjs";import"../connectors/isBaseConnectedEthereumWallet.mjs";import"../connectors/base.mjs";import"eventemitter3";import"../connectors/getRpcTimeout.mjs";import"../connectors/privyProxyProvider.mjs";import"../connectors/walletconnect-registry.mjs";import"ofetch";import"../hooks/index.mjs";import"../components/PrefetchedImage.mjs";import"../svg/brave-browser-icon.mjs";import"../svg/bybit.mjs";import"../svg/coinbase-wallet.mjs";import"../svg/cryptocom.mjs";import"../svg/phantom.mjs";import"../svg/rabby.mjs";import"../svg/rainbow.mjs";import"../svg/safe.mjs";import"../svg/uniswap.mjs";import"../svg/universal-profile.mjs";import"../svg/zerion.mjs";const U=e=>e?.privyErrorCode===v.LINKED_TO_ANOTHER_USER?j.ERROR_USER_EXISTS:e instanceof f&&!e.details.default?e.details:e instanceof g?j.ERROR_TIMED_OUT:e instanceof w?j.ERROR_USER_REJECTED_CONNECTION:e?.privyErrorCode===v.CANNOT_LINK_MORE_OF_TYPE?j.ERROR_USER_LIMIT_REACHED:j.ERROR_WALLET_CONNECTION,W=()=>{let c,[d,f]=n(!1),[g,w]=n(!1),[W,D]=n(void 0),{authenticated:H,logout:B}=k(),{app:P,navigate:z,navigateBack:X,lastScreen:q,currentScreen:J,setModalData:K,data:$}=N(),{getAuthFlow:Q,walletConnectionStatus:Y,closePrivyModal:G,initLoginWithWallet:V,loginWithWallet:Z,updateWallets:ee,createAnalyticsEvent:oe}=S(),{walletConnectors:te}=k(),[ne,re]=n(0),{user:ie}=k(),[ce]=n(ie?.linkedAccounts.length||0),[se,ae]=n(""),[le,me]=n(""),[pe,de]=n(!1),{hasTabbedAway:he}=O(),{enabled:ue,token:je}=R(),fe=i&&"wallet_connect_v2"===Y?.connector?.connectorType||i&&"coinbase_wallet"===Y?.connector?.connectorType||i&&"injected"===Y?.connector?.connectorType&&"phantom"===Y?.connector?.walletClientType,ge="connected"===Y?.status,we="switching_to_supported_chain"===Y?.status;r((()=>{let e=Q(),o=e instanceof s||e instanceof a?e:void 0;ge&&!o&&(!ue||je||H?V(Y.connectedWallet,je,$?.login?.disableSignup).then((()=>{de(!0)})):(K({captchaModalData:{callback:e=>V(Y.connectedWallet,e,$?.login?.disableSignup).then((()=>{de(!0)})),userIntentRequired:!1,onSuccessNavigateTo:L.AWAITING_CONNECTION,onErrorNavigateTo:L.ERROR_SCREEN}}),z(L.CAPTCHA_SCREEN,!1))),o&&fe&&ge&&!o.preparedMessage?o.buildMessage():o&&!fe&&ge&&(g||(async()=>{w(!0),D(void 0);try{"wallet_connect_v2"===Y?.connector?.connectorType&&"metamask"===Y?.connector?.walletClientType&&await I(2500),await ye()}catch(e){console.warn("Auto-prompted signature failed",e)}finally{w(!1)}})())}),[ne,ge,pe]),r((()=>{if(ie&&d){let e=_-500;if(P?.legal.requireUsersAcceptTerms&&!ie.hasAcceptedTerms){let o=setTimeout((()=>{z(L.AFFIRMATIVE_CONSENT_SCREEN)}),e);return()=>clearTimeout(o)}if(l(ie,P?.embeddedWallets?.createOnLogin)){let o=setTimeout((()=>{K({createWallet:{onSuccess:()=>{},onFailure:e=>{console.error(e),oe({eventName:"embedded_wallet_creation_failure_logout",payload:{error:e,screen:"ConnectionStatusScreen"}}),B()},callAuthOnSuccessOnClose:!0}}),z(L.EMBEDDED_WALLET_ON_ACCOUNT_CREATE_SCREEN)}),e);return()=>clearTimeout(o)}ee();let o=setTimeout((()=>G({shouldCallAuthOnSuccess:!0,isSuccess:!0})),_);return()=>clearTimeout(o)}}),[ie,d]);let Ee=e=>{if(e?.privyErrorCode!==v.ALLOWLIST_REJECTED){if(e?.privyErrorCode===v.USER_LIMIT_REACHED)return console.error(new b(e).toString()),void z(L.USER_LIMIT_REACHED_SCREEN);if(e?.privyErrorCode!==v.USER_DOES_NOT_EXIST)return e?.privyErrorCode===v.ACCOUNT_TRANSFER_REQUIRED&&e.data?.data?.nonce?(K({accountTransfer:{nonce:e.data?.data?.nonce,account:Q()?.meta.address,displayName:e.data?.data?.account?.displayName,externalWalletMetadata:{walletClientType:Q()?.meta.walletClientType,chainId:Q()?.meta.chainId,connectorType:Q()?.meta.connectorType},linkMethod:"siwe",embeddedWalletAddress:e.data?.data?.otherUser?.embeddedWalletAddress}}),void z(L.LINK_CONFLICT_SCREEN)):void D(U(e));z(L.ACCOUNT_NOT_FOUND_SCREEN)}else z(L.ALLOWLIST_REJECTION_SCREEN)};async function ye(){try{await Z(),f(!0)}catch(e){Ee(e)}finally{w(!1)}}r((()=>{Y?.connectError&&Ee(Y?.connectError)}),[Y]),T((()=>{let e="wallet_connect_v2"===Ce&&Y?.connector instanceof C?Y.connector.redirectUri:void 0;e&&ae(e);let o="wallet_connect_v2"===Ce&&Y?.connector instanceof C?Y.connector.fallbackUniversalRedirectUri:void 0;o&&me(o)}),Y?.connector instanceof C&&!se?500:null);let Ce=Y?.connector?.connectorType||"injected",_e=Y?.connector?.walletClientType||"unknown",ve=A[_e]?.displayName||Y?.connector?.walletBranding.name||"Browser Extension",be=A[_e]?.logo||Y?.connector?.walletBranding.icon||(o=>/*#__PURE__*/e(x,{...o})),Te="Browser Extension"===ve?ve.toLowerCase():ve;c=d?`Successfully connected with ${Te}`:W?W.message:we?"Switching networks":ge?g&&fe?"Signing":"Sign to verify":`Waiting for ${Te}`;let Re="Don’t see your wallet? Check your other browser windows.";d?Re=ce===(ie?.linkedAccounts.length||0)?"Wallet was already linked.":"You’re good to go!":ne>=2&&W?Re="Unable to connect wallet":W?Re=W.detail:we?Re="Switch your wallet to the requested network.":ge&&fe?Re="Sign the message in your wallet to verify it belongs to you.":"metamask"===_e&&i?Re="Click continue to open and connect MetaMask.":"metamask"===_e?Re="For the best experience, connect only one wallet at a time.":"wallet_connect"===Ce?Re="Open your mobile wallet app to continue":"coinbase_wallet"!==Ce||E()||(Re=y(ie)?"Continue with the Coinbase app. Not the right wallet? Reset your connection below.":"Open the Coinbase app on your phone to continue.");let Se=te?.walletConnectors?.find((e=>"coinbase_wallet"===e.walletClientType)),Ne="coinbase_wallet"===_e&&(y(ie)||W===j.ERROR_USER_EXISTS);/*#__PURE__*/return o(t,{children:[/*#__PURE__*/e(u,{backFn:q&&J!==q?X:void 0}),/*#__PURE__*/o(M,{children:[/*#__PURE__*/e(F,{walletLogo:be,success:d,fail:!!W}),/*#__PURE__*/o(p,{children:[/*#__PURE__*/e("h3",{children:c}),/*#__PURE__*/e("p",{children:Re}),ge||!se||he?null:/*#__PURE__*/o("p",{children:["Still here?"," ",/*#__PURE__*/e("a",{href:se,target:"_blank",style:{textDecoration:"underline"},children:"Try connecting again"}),le&&/*#__PURE__*/o(t,{children:[" ","or"," ",/*#__PURE__*/e("a",{href:le,target:"_blank",style:{textDecoration:"underline"},children:"use this different link"})]})]})]}),Ne?/*#__PURE__*/e(m,{onClick:()=>Se&&Se?.disconnect(),disabled:d,children:"Use a different wallet"}):W==j.ERROR_USER_EXISTS&&J!==q?/*#__PURE__*/e(m,{onClick:X,children:"Use a different wallet"}):ge&&!d&&fe?/*#__PURE__*/e(m,{onClick:()=>{w(!0),ye()},disabled:g,children:g?"Signing":"Sign with your wallet"}):!d&&W?.retryable&&ne<2?/*#__PURE__*/e(m,{onClick:()=>{re(ne+1),D(void 0),ge?(w(!0),ye()):Y?.connectRetry()},disabled:!d&&(!W?.retryable||ne>=2),children:"Retry"}):d||W?null:/*#__PURE__*/e(m,{onClick:()=>{},disabled:!0,children:"Connecting"})]}),/*#__PURE__*/e(h,{})]})};let M=/*#__PURE__*/c.div.withConfig({displayName:"ConnectContainer",componentId:"sc-afad057-0"})(["display:flex;flex-direction:column;align-items:center;justify-content:center;gap:24px;width:100%;"]),D=/*#__PURE__*/c.div.withConfig({displayName:"StackedContainer",componentId:"sc-afad057-1"})(["display:flex;flex-direction:column;justify-content:center;align-items:center;width:100%;height:82px;> div{position:relative;}> div > span{position:absolute;left:-41px;top:-41px;}> div > :last-child{position:absolute;left:-19px;top:-19px;}"]);const F=n=>{let r=n.walletLogo;/*#__PURE__*/return e(t,{children:/*#__PURE__*/e(D,{children:/*#__PURE__*/o("div",{children:[/*#__PURE__*/e(d,{success:n.success,fail:n.fail}),"string"==typeof r?
1
+ import{jsx as e,jsxs as o,Fragment as t}from"react/jsx-runtime";import{useState as n,useEffect as r}from"react";import{isMobile as i}from"react-device-detect";import{styled as c}from"styled-components";import{SiweFlow as s}from"../auth-flows/siwe.mjs";import{SiwsFlow as a}from"../auth-flows/siws.mjs";import{shouldProceedtoEmbeddedWalletCreationFlow as l}from"../client/user.mjs";import{PrimaryButton as m}from"../components/Button.mjs";import{FixedGappedContainer as p}from"../components/Layouts.mjs";import{ConnectionLoader as d}from"../components/Loader.mjs";import{ModalFooter as h}from"../components/ModalFooter.mjs";import{ModalHeader as u}from"../components/ModalHeader.mjs";import{ConnectorErrors as j,PrivyProviderRpcError as f,WalletTimeoutError as g,UserRejectedConnectionError as w}from"../connectors/errors.mjs";import{isCoinbaseWalletInstalled as y}from"../connectors/is-wallet-installed.mjs";import{userAlreadyHasConnectedCoinbaseWallet as E}from"../connectors/userAlreadyHasConnectedCoinbaseWallet.mjs";import{WalletConnectV2WalletConnector as C}from"../connectors/walletconnect-v2.mjs";import{DEFAULT_SUCCESS_SCREEN_DURATION_MS as _}from"../constants.mjs";import{PrivyErrorCode as v,PrivyUserLimitReachedError as b}from"../errors.mjs";import T from"../hook-utils/useInterval.mjs";import{useCaptcha as R}from"../hooks/captcha-context.mjs";import{usePrivyInternal as S}from"../hooks/internal-context.mjs";import{usePrivyModal as N}from"../hooks/modal-context.mjs";import{usePrivyContext as k}from"../hooks/privy-context.mjs";import{WALLET_UI_MAP as A}from"../lib/external-wallets/displayHelpers.mjs";import{useHasTabbedAway as O}from"../lib/useHasTabbedAway.mjs";import{BrowserExtensionWallet as x}from"../svg/browser-extension-wallet-icon.mjs";import{sleep as I}from"../utils/index.mjs";import{ModalScreen as L}from"./index.mjs";import"../effect.mjs";import"../lib/siwe.mjs";import"../lib/siws.mjs";import"@ethersproject/address";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"../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"../lib/solana/index.mjs";import"../theme.mjs";import"tinycolor2";import"../lib/cybr53.mjs";import"@ethersproject/logger";import"@privy-io/js-sdk-core";import"../connectors/get-legacy-injected-providers.mjs";import"viem";import"@walletconnect/ethereum-provider";import"../svg/metamask.mjs";import"../svg/wallet-connect.mjs";import"../connectors/ethereum/index.mjs";import"@ethersproject/providers";import"../storage.mjs";import"../connectors/areWalletArraysEqual.mjs";import"../connectors/isBaseConnectedEthereumWallet.mjs";import"../connectors/base.mjs";import"eventemitter3";import"../connectors/getRpcTimeout.mjs";import"../connectors/privyProxyProvider.mjs";import"../connectors/walletconnect-registry.mjs";import"ofetch";import"../hooks/index.mjs";import"../components/PrefetchedImage.mjs";import"../svg/brave-browser-icon.mjs";import"../svg/bybit.mjs";import"../svg/coinbase-wallet.mjs";import"../svg/cryptocom.mjs";import"../svg/phantom.mjs";import"../svg/rabby.mjs";import"../svg/rainbow.mjs";import"../svg/safe.mjs";import"../svg/uniswap.mjs";import"../svg/universal-profile.mjs";import"../svg/zerion.mjs";const U=e=>e?.privyErrorCode===v.LINKED_TO_ANOTHER_USER?j.ERROR_USER_EXISTS:e instanceof f&&!e.details.default?e.details:e instanceof g?j.ERROR_TIMED_OUT:e instanceof w?j.ERROR_USER_REJECTED_CONNECTION:e?.privyErrorCode===v.CANNOT_LINK_MORE_OF_TYPE?j.ERROR_USER_LIMIT_REACHED:j.ERROR_WALLET_CONNECTION,W=()=>{let c,[d,f]=n(!1),[g,w]=n(!1),[W,D]=n(void 0),{authenticated:H,logout:B}=k(),{app:P,navigate:z,navigateBack:X,lastScreen:q,currentScreen:J,setModalData:K,data:$}=N(),{getAuthFlow:Q,walletConnectionStatus:Y,closePrivyModal:G,initLoginWithWallet:V,loginWithWallet:Z,updateWallets:ee,createAnalyticsEvent:oe}=S(),{walletConnectors:te}=k(),[ne,re]=n(0),{user:ie}=k(),[ce]=n(ie?.linkedAccounts.length||0),[se,ae]=n(""),[le,me]=n(""),[pe,de]=n(!1),{hasTabbedAway:he}=O(),{enabled:ue,token:je}=R(),fe=i&&"wallet_connect_v2"===Y?.connector?.connectorType||i&&"coinbase_wallet"===Y?.connector?.connectorType||i&&"injected"===Y?.connector?.connectorType&&"phantom"===Y?.connector?.walletClientType,ge="connected"===Y?.status,we="switching_to_supported_chain"===Y?.status;r((()=>{let e=Q(),o=e instanceof s||e instanceof a?e:void 0;ge&&!o&&(!ue||je||H?V(Y.connectedWallet,je,$?.login?.disableSignup).then((()=>{de(!0)})):(K({captchaModalData:{callback:e=>V(Y.connectedWallet,e,$?.login?.disableSignup).then((()=>{de(!0)})),userIntentRequired:!1,onSuccessNavigateTo:L.AWAITING_CONNECTION,onErrorNavigateTo:L.ERROR_SCREEN}}),z(L.CAPTCHA_SCREEN,!1))),o&&fe&&ge&&!o.preparedMessage?o.buildMessage():o&&!fe&&ge&&(g||(async()=>{w(!0),D(void 0);try{"wallet_connect_v2"===Y?.connector?.connectorType&&"metamask"===Y?.connector?.walletClientType&&await I(2500),await Ee()}catch(e){console.warn("Auto-prompted signature failed",e)}finally{w(!1)}})())}),[ne,ge,pe]),r((()=>{if(ie&&d){let e=_-500;if(P?.legal.requireUsersAcceptTerms&&!ie.hasAcceptedTerms){let o=setTimeout((()=>{z(L.AFFIRMATIVE_CONSENT_SCREEN)}),e);return()=>clearTimeout(o)}if(l(ie,P?.embeddedWallets?.createOnLogin)){let o=setTimeout((()=>{K({createWallet:{onSuccess:()=>{},onFailure:e=>{console.error(e),oe({eventName:"embedded_wallet_creation_failure_logout",payload:{error:e,screen:"ConnectionStatusScreen"}}),B()},callAuthOnSuccessOnClose:!0}}),z(L.EMBEDDED_WALLET_ON_ACCOUNT_CREATE_SCREEN)}),e);return()=>clearTimeout(o)}ee();let o=setTimeout((()=>G({shouldCallAuthOnSuccess:!0,isSuccess:!0})),_);return()=>clearTimeout(o)}}),[ie,d]);let ye=e=>{if(e?.privyErrorCode!==v.ALLOWLIST_REJECTED){if(e?.privyErrorCode===v.USER_LIMIT_REACHED)return console.error(new b(e).toString()),void z(L.USER_LIMIT_REACHED_SCREEN);if(e?.privyErrorCode!==v.USER_DOES_NOT_EXIST)return e?.privyErrorCode===v.ACCOUNT_TRANSFER_REQUIRED&&e.data?.data?.nonce?(K({accountTransfer:{nonce:e.data?.data?.nonce,account:Q()?.meta.address,displayName:e.data?.data?.account?.displayName,externalWalletMetadata:{walletClientType:Q()?.meta.walletClientType,chainId:Q()?.meta.chainId,connectorType:Q()?.meta.connectorType},linkMethod:"siwe",embeddedWalletAddress:e.data?.data?.otherUser?.embeddedWalletAddress}}),void z(L.LINK_CONFLICT_SCREEN)):void D(U(e));z(L.ACCOUNT_NOT_FOUND_SCREEN)}else z(L.ALLOWLIST_REJECTION_SCREEN)};async function Ee(){try{await Z(),f(!0)}catch(e){ye(e)}finally{w(!1)}}r((()=>{Y?.connectError&&ye(Y?.connectError)}),[Y]),T((()=>{let e="wallet_connect_v2"===Ce&&Y?.connector instanceof C?Y.connector.redirectUri:void 0;e&&ae(e);let o="wallet_connect_v2"===Ce&&Y?.connector instanceof C?Y.connector.fallbackUniversalRedirectUri:void 0;o&&me(o)}),Y?.connector instanceof C&&!se?500:null);let Ce=Y?.connector?.connectorType||"injected",_e=Y?.connector?.walletClientType||"unknown",ve=A[_e]?.displayName||Y?.connector?.walletBranding.name||"Browser Extension",be=A[_e]?.logo||Y?.connector?.walletBranding.icon||(o=>/*#__PURE__*/e(x,{...o})),Te="Browser Extension"===ve?ve.toLowerCase():ve;c=d?`Successfully connected with ${Te}`:W?W.message:we?"Switching networks":ge?g&&fe?"Signing":"Sign to verify":`Waiting for ${Te}`;let Re="Don’t see your wallet? Check your other browser windows.";d?Re=ce===(ie?.linkedAccounts.length||0)?"Wallet was already linked.":"You’re good to go!":ne>=2&&W?Re="Unable to connect wallet":W?Re=W.detail:we?Re="Switch your wallet to the requested network.":ge&&fe?Re="Sign the message in your wallet to verify it belongs to you.":"metamask"===_e&&i?Re="Click continue to open and connect MetaMask.":"metamask"===_e?Re="For the best experience, connect only one wallet at a time.":"wallet_connect"===Ce?Re="Open your mobile wallet app to continue":"coinbase_wallet"!==Ce||y()||(Re=E(ie)?"Continue with the Coinbase app. Not the right wallet? Reset your connection below.":"Open the Coinbase app on your phone to continue.");let Se=te?.walletConnectors?.find((e=>"coinbase_wallet"===e.walletClientType)),Ne="coinbase_wallet"===_e&&(E(ie)||W===j.ERROR_USER_EXISTS);/*#__PURE__*/return o(t,{children:[/*#__PURE__*/e(u,{backFn:q&&J!==q?X:void 0}),/*#__PURE__*/o(M,{children:[/*#__PURE__*/e(F,{walletLogo:be,success:d,fail:!!W}),/*#__PURE__*/o(p,{children:[/*#__PURE__*/e("h3",{children:c}),/*#__PURE__*/e("p",{children:Re}),ge||!se||he?null:/*#__PURE__*/o("p",{children:["Still here?"," ",/*#__PURE__*/e("a",{href:se,target:"_blank",style:{textDecoration:"underline"},children:"Try connecting again"}),le&&/*#__PURE__*/o(t,{children:[" ","or"," ",/*#__PURE__*/e("a",{href:le,target:"_blank",style:{textDecoration:"underline"},children:"use this different link"})]})]})]}),Ne?/*#__PURE__*/e(m,{onClick:()=>Se&&Se?.disconnect(),disabled:d,children:"Use a different wallet"}):W==j.ERROR_USER_EXISTS&&J!==q?/*#__PURE__*/e(m,{onClick:X,children:"Use a different wallet"}):ge&&!d&&fe?/*#__PURE__*/e(m,{onClick:()=>{w(!0),Ee()},disabled:g,children:g?"Signing":"Sign with your wallet"}):!d&&W?.retryable&&ne<2?/*#__PURE__*/e(m,{onClick:()=>{re(ne+1),D(void 0),ge?(w(!0),Ee()):Y?.connectRetry()},disabled:!d&&(!W?.retryable||ne>=2),children:"Retry"}):d||W?null:/*#__PURE__*/e(m,{onClick:()=>{},disabled:!0,children:"Connecting"})]}),/*#__PURE__*/e(h,{})]})};let M=/*#__PURE__*/c.div.withConfig({displayName:"ConnectContainer",componentId:"sc-afad057-0"})(["display:flex;flex-direction:column;align-items:center;justify-content:center;gap:24px;width:100%;"]),D=/*#__PURE__*/c.div.withConfig({displayName:"StackedContainer",componentId:"sc-afad057-1"})(["display:flex;flex-direction:column;justify-content:center;align-items:center;width:100%;height:82px;> div{position:relative;}> div > span{position:absolute;left:-41px;top:-41px;}> div > :last-child{position:absolute;left:-19px;top:-19px;}"]);const F=n=>{let r=n.walletLogo;/*#__PURE__*/return e(t,{children:/*#__PURE__*/e(D,{children:/*#__PURE__*/o("div",{children:[/*#__PURE__*/e(d,{success:n.success,fail:n.fail}),"string"==typeof r?
2
2
  /*#__PURE__*/e("span",{style:{background:`url('${r}')`,height:"38px",width:"38px",borderRadius:"6px",margin:"auto",backgroundSize:"cover"}}):/*#__PURE__*/e(r,{style:{width:"38px",height:"38px"}})]})})})};export{W as ConnectionStatusScreen,F as WalletLoading,U as getErrorDetails};
@@ -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}from"viem";import{RefactorSpacerTop as p,CenteredItemWithGap as d,RefactorSpacerBottom as u}from"../../components/Layouts.mjs";import{BlobbyFooter as h}from"../../components/ModalFooter.mjs";import{CenteredScreenHeader as g}from"../../components/ScreenHeader.mjs";import j from"../../components/embedded-wallets/FundWalletMethodHeader.mjs";import{NeutralSpinner as f}from"../../components/primitives/NeutralSpinner/index.mjs";import{addToDefaultChains as v}from"../../connectors/chains/utils.mjs";import{DEFAULT_SUCCESS_SCREEN_EXTRA_LONG_DURATION_MS as y}from"../../constants.mjs";import{PrivyClientError as w,PrivyErrorCode as b}from"../../errors.mjs";import{usePrivyInternal as I}from"../../hooks/internal-context.mjs";import{usePrivyModal as C}from"../../hooks/modal-context.mjs";import{useGetTokenPrice as S}from"../../hooks/useGetTokenPrice.mjs";import{useWallets as T}from"../../hooks/useWallets.mjs";import{toDisplayName as k}from"../../lib/external-wallets/displayHelpers.mjs";import{ON_RAMP_COMPLETE_ANALYTICS_EVENT as N}from"../../lib/funding/analytics.mjs";import{getQuote as x,toGetQuoteInput as A,toEvmTransactionRequestInfoFromQuote as E}from"../../lib/funding/reservoir.mjs";import{RELAY_SOLANA_MAINNET_CLUSTER_CHAIN_ID as F,RELAY_SOLANA_NATIVE_CURRENCY_ID as L}from"../../lib/solana/index.mjs";import{getNativeCurrencyFromLamports as B,getSolanaFormattedAmounts as P}from"../../lib/solana/transaction.mjs";import{getBalanceForChains as M}from"../../lib/wallets/actions/getBalanceForChains.mjs";import{usePlugins as U}from"../../plugins/context/PrivyPluginContext.mjs";import{SOLANA_FUNDING_PLUGIN_ID as R}from"../../plugins/solana-funding/id.mjs";import{formatWalletAddress as W,getJsonRpcEndpointFromChain as _}from"../../utils/index.mjs";import{ModalScreen as q}from"../index.mjs";import{BridgeNetworkSelectionView as O}from"./BridgeNetworkSelectionView.mjs";import{TransferOrBridgeLoadingScreen as H}from"./TransferOrBridgeLoadingScreen.mjs";import"styled-components";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"../../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"../../hooks/index.mjs";import"ofetch";import"../../components/PrefetchedImage.mjs";import"../../hooks/useGetSolPrice.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/phantom.mjs";import"../../svg/rabby.mjs";import"../../svg/rainbow.mjs";import"../../svg/safe.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"@ethersproject/providers";import"../../connectors/get-legacy-injected-providers.mjs";import"../../connectors/is-wallet-installed.mjs";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"@ethersproject/bignumber";import"@ethersproject/units";import"../../ethers-Cz-frLvN.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"../../formatters--YjgN2Dw.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 $=()=>{let{rpcConfig:$,appId:z,closePrivyModal:D,createAnalyticsEvent:G}=I(),{navigate:V,setModalData:Q,app:X,data:Y}=C(),{wallets:Z}=T(),J=U(),[K,oo]=i(null),[to,eo]=i(null),[no,io]=i([]),[ro,so]=i(0),[ao,mo]=i(!1),[co,lo]=i(!1),[po,uo]=i(!1),[ho,go]=i(!1);if(!Y?.funding||"solana"!==Y.funding.chainType)throw Error("Invalid funding data");let{address:jo,cluster:fo,connectedWalletAddress:vo}=Y.funding,[yo,wo]=i(Y.funding.amount),bo=vo?Z.find((({address:o})=>o===vo)):Z[0],[Io,Co]=i(null);r((()=>{(async()=>{if(!bo)return;let o=await bo.getEthereumProvider();Co(s({account:bo.address,transport:a(o)}).extend(m))})().catch(console.error)}),[bo]);let[So,To]=i(0n),ko=B(So);r((()=>{let o=J(R);o?o.getBalance({address:jo,cluster:fo}).then((o=>To(BigInt(o)))):console.warn("Unable to load solana plugin, skipping balance")}),[]);let[No,xo]=i(),{tokenPrice:Ao}=S("solana"),{fundingAmountInBaseUnit:Eo,fundingAmountInUsd:Fo}=P({amount:yo,fee:0n,tokenPrice:Ao});r((()=>{(async()=>{if(!Io||!bo)return;let o=["testnet","devnet"].includes(fo.name);o&&console.warn("Solana testnets are not supported for bridging");let t=v(X.chains).filter((({testnet:t})=>!!t===o)),e=(await M({chains:t,address:bo.address,appId:z,rpcConfig:$})).filter((o=>o.balance>0n));if(e.length<1)return void oo(new w(`Wallet ${W(bo.address)} does not have enough funds.`,void 0,b.INSUFFICIENT_BALANCE));e.sort(((o,t)=>Number(t.balance-o.balance)));let n=(await Promise.allSettled(e.map((async o=>({...o,quote:await x({isTestnet:!1,input:A({amount:Eo.toString(),user:bo.address,recipient:jo,destinationChainId:F,destinationCurrency:L,originChainId:o.chain.id})})}))))).filter((o=>"fulfilled"===o.status)).map((o=>o.value));if(n.length<1)return void oo(new w(`Unable to fetch quotes for bridging. Wallet ${W(bo.address)} does not have enough funds.`,void 0,b.INSUFFICIENT_BALANCE));let i=n.map((({quote:o,balance:t,chain:e})=>({bridgeTx:E(o),balance:t,chain:e}))).filter((({bridgeTx:o})=>!!o));if(i.length>1)return void io(i);let r=i.at(0);r?(lo(!0),xo({data:r.bridgeTx.data,to:r.bridgeTx.to,value:r.bridgeTx.value,chain:r.chain})):oo(new w(`Unable to select bridge option from quotes. Wallet ${W(bo.address)} does not have enough funds.`,void 0,b.INSUFFICIENT_BALANCE))})().catch(console.error)}),[Io]),r((()=>{(async()=>{let o,t;if(!Io||!bo||ao||po||!No)return;mo(!0);let e=c({chain:No.chain,transport:l(_(No.chain,$,z))});try{o=await e.prepareTransactionRequest({account:bo.address,to:No.to,chain:No.chain,data:No.data,value:BigInt(No.value??0)})}catch(o){console.error(o),no.length>1&&eo(o.shortMessage??"Something went wrong")}if(o){mo(!1),uo(!0);try{await Io.switchChain({id:No.chain.id})}catch(o){await Io.addChain({chain:No.chain}),await Io.switchChain({id:No.chain.id})}try{t=await Io.sendTransaction(o),G({eventName:N,payload:{provider:"external",status:"success",address:bo.address,chainId:No.chain.id,value:No.value?.toString(),txHash:t}})}catch(o){console.error(o),"TransactionExecutionError"===o.name&&(no.length<1?oo(new w(o.shortMessage,void 0,b.TRANSACTION_FAILURE)):eo(o.shortMessage??"Something went wrong"))}t?(await Io.waitForTransactionReceipt({hash:t}),uo(!1),go(!0)):uo(!1)}else mo(!1)})().catch(console.error)}),[Io,No]),r((()=>{if(!K)return;let o={error:K,previousScreen:q.FUNDING_TRANSFER_FROM_WALLET_SCREEN};Q({funding:Y?.funding,sendTransaction:Y?.sendTransaction,errorModalData:o}),V(q.ERROR_SCREEN,!1)}),[K]);let Lo=bo?k(bo.walletClientType,bo.connectorType,bo.walletClientType)||"wallet":null;if(r((()=>{if(!ho)return;let o=setTimeout(D,y);return()=>clearTimeout(o)}),[ho]),ho/*#__PURE__*/)return o(t,{children:[/*#__PURE__*/e(j,{}),/*#__PURE__*/e(p,{}),/*#__PURE__*/o(d,{children:[/*#__PURE__*/e(n,{color:"var(--privy-color-success)",width:"64px",height:"64px"}),/*#__PURE__*/e(g,{title:"Success!",description:`You’ve successfully added ${yo} SOL to your ${X.name} wallet. It may take a minute before the funds are available to use.`})]}),/*#__PURE__*/e(u,{}),/*#__PURE__*/e(h,{})]});let Bo=no[ro];return no.length>1&&Bo?/*#__PURE__*/e(O,{displayName:Lo,configuredFundingChain:fo,formattedBalance:ko,fundingAmount:yo,fundingCurrency:"SOL",fundingAmountInUsd:Fo,options:no,selectedOption:Bo,isPreparing:ao,isSubmitting:po,addressToFund:jo,fundingWalletAddress:bo?.address||"",errorMessage:to,onSubmit:()=>{Y.funding?.amount!==yo?async function(){if(bo&&Bo)try{let o=await x({isTestnet:!1,input:A({amount:Eo.toString(),user:bo.address,recipient:jo,destinationChainId:F,destinationCurrency:L,originChainId:Bo.chain.id})}),t=E(o);if(!t)throw Error("Invalid transaction request");lo(!0),xo({data:t.data,to:t.to,value:t.value,chain:Bo.chain})}catch(o){console.error(o),oo(new w("Unable to fetch quotes for bridging",o,b.INSUFFICIENT_BALANCE))}}().catch(console.error):xo({to:Bo.bridgeTx.to,data:Bo.bridgeTx.data,value:Bo.bridgeTx.value,chain:Bo.chain})},onSelect:o=>{o!==ro&&(eo(null),so(o))},onAmountChange:wo}):po&&bo?/*#__PURE__*/e(H,{wallet:bo,displayName:Lo,addressToFund:jo,isBridging:co,isErc20Flow:!1,chainId:"solana",chainName:fo.name,totalPriceInUsd:void 0,totalPriceInNativeCurrency:void 0,gasPriceInUsd:void 0,gasPriceInNativeCurrency:void 0}):
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}from"viem";import{RefactorSpacerTop as p,CenteredItemWithGap as d,RefactorSpacerBottom as u}from"../../components/Layouts.mjs";import{BlobbyFooter as h}from"../../components/ModalFooter.mjs";import{CenteredScreenHeader as g}from"../../components/ScreenHeader.mjs";import j from"../../components/embedded-wallets/FundWalletMethodHeader.mjs";import{NeutralSpinner as f}from"../../components/primitives/NeutralSpinner/index.mjs";import{addToDefaultChains as v}from"../../connectors/chains/utils.mjs";import{DEFAULT_SUCCESS_SCREEN_EXTRA_LONG_DURATION_MS as y}from"../../constants.mjs";import{PrivyClientError as w,PrivyErrorCode as b}from"../../errors.mjs";import{usePrivyInternal as I}from"../../hooks/internal-context.mjs";import{usePrivyModal as C}from"../../hooks/modal-context.mjs";import{useGetTokenPrice as S}from"../../hooks/useGetTokenPrice.mjs";import{useWallets as T}from"../../hooks/useWallets.mjs";import{toDisplayName as k}from"../../lib/external-wallets/displayHelpers.mjs";import{ON_RAMP_COMPLETE_ANALYTICS_EVENT as N}from"../../lib/funding/analytics.mjs";import{getQuote as x,toGetQuoteInput as A,toEvmTransactionRequestInfoFromQuote as E}from"../../lib/funding/reservoir.mjs";import{RELAY_SOLANA_MAINNET_CLUSTER_CHAIN_ID as F,RELAY_SOLANA_NATIVE_CURRENCY_ID as L}from"../../lib/solana/index.mjs";import{getNativeCurrencyFromLamports as B,getSolanaFormattedAmounts as P}from"../../lib/solana/transaction.mjs";import{getBalanceForChains as M}from"../../lib/wallets/actions/getBalanceForChains.mjs";import{usePlugins as U}from"../../plugins/context/PrivyPluginContext.mjs";import{SOLANA_FUNDING_PLUGIN_ID as R}from"../../plugins/solana-funding/id.mjs";import{formatWalletAddress as W,getJsonRpcEndpointFromChain as _}from"../../utils/index.mjs";import{ModalScreen as q}from"../index.mjs";import{BridgeNetworkSelectionView as O}from"./BridgeNetworkSelectionView.mjs";import{TransferOrBridgeLoadingScreen as H}from"./TransferOrBridgeLoadingScreen.mjs";import"styled-components";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"../../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"../../hooks/index.mjs";import"ofetch";import"../../components/PrefetchedImage.mjs";import"../../hooks/useGetSolPrice.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/phantom.mjs";import"../../svg/rabby.mjs";import"../../svg/rainbow.mjs";import"../../svg/safe.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"@ethersproject/providers";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"@ethersproject/bignumber";import"@ethersproject/units";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 $=()=>{let{rpcConfig:$,appId:z,closePrivyModal:D,createAnalyticsEvent:G}=I(),{navigate:V,setModalData:Q,app:X,data:Y}=C(),{wallets:Z}=T(),J=U(),[K,oo]=i(null),[to,eo]=i(null),[no,io]=i([]),[ro,so]=i(0),[ao,mo]=i(!1),[co,lo]=i(!1),[po,uo]=i(!1),[ho,go]=i(!1);if(!Y?.funding||"solana"!==Y.funding.chainType)throw Error("Invalid funding data");let{address:jo,cluster:fo,connectedWalletAddress:vo}=Y.funding,[yo,wo]=i(Y.funding.amount),bo=vo?Z.find((({address:o})=>o===vo)):Z[0],[Io,Co]=i(null);r((()=>{(async()=>{if(!bo)return;let o=await bo.getEthereumProvider();Co(s({account:bo.address,transport:a(o)}).extend(m))})().catch(console.error)}),[bo]);let[So,To]=i(0n),ko=B(So);r((()=>{let o=J(R);o?o.getBalance({address:jo,cluster:fo}).then((o=>To(BigInt(o)))):console.warn("Unable to load solana plugin, skipping balance")}),[]);let[No,xo]=i(),{tokenPrice:Ao}=S("solana"),{fundingAmountInBaseUnit:Eo,fundingAmountInUsd:Fo}=P({amount:yo,fee:0n,tokenPrice:Ao});r((()=>{(async()=>{if(!Io||!bo)return;let o=["testnet","devnet"].includes(fo.name);o&&console.warn("Solana testnets are not supported for bridging");let t=v(X.chains).filter((({testnet:t})=>!!t===o)),e=(await M({chains:t,address:bo.address,appId:z,rpcConfig:$})).filter((o=>o.balance>0n));if(e.length<1)return void oo(new w(`Wallet ${W(bo.address)} does not have enough funds.`,void 0,b.INSUFFICIENT_BALANCE));e.sort(((o,t)=>Number(t.balance-o.balance)));let n=(await Promise.allSettled(e.map((async o=>({...o,quote:await x({isTestnet:!1,input:A({amount:Eo.toString(),user:bo.address,recipient:jo,destinationChainId:F,destinationCurrency:L,originChainId:o.chain.id})})}))))).filter((o=>"fulfilled"===o.status)).map((o=>o.value));if(n.length<1)return void oo(new w(`Unable to fetch quotes for bridging. Wallet ${W(bo.address)} does not have enough funds.`,void 0,b.INSUFFICIENT_BALANCE));let i=n.map((({quote:o,balance:t,chain:e})=>({bridgeTx:E(o),balance:t,chain:e}))).filter((({bridgeTx:o})=>!!o));if(i.length>1)return void io(i);let r=i.at(0);r?(lo(!0),xo({data:r.bridgeTx.data,to:r.bridgeTx.to,value:r.bridgeTx.value,chain:r.chain})):oo(new w(`Unable to select bridge option from quotes. Wallet ${W(bo.address)} does not have enough funds.`,void 0,b.INSUFFICIENT_BALANCE))})().catch(console.error)}),[Io]),r((()=>{(async()=>{let o,t;if(!Io||!bo||ao||po||!No)return;mo(!0);let e=c({chain:No.chain,transport:l(_(No.chain,$,z))});try{o=await e.prepareTransactionRequest({account:bo.address,to:No.to,chain:No.chain,data:No.data,value:BigInt(No.value??0)})}catch(o){console.error(o),no.length>1&&eo(o.shortMessage??"Something went wrong")}if(o){mo(!1),uo(!0);try{await Io.switchChain({id:No.chain.id})}catch(o){await Io.addChain({chain:No.chain}),await Io.switchChain({id:No.chain.id})}try{t=await Io.sendTransaction(o),G({eventName:N,payload:{provider:"external",status:"success",address:bo.address,chainId:No.chain.id,value:No.value?.toString(),txHash:t}})}catch(o){console.error(o),"TransactionExecutionError"===o.name&&(no.length<1?oo(new w(o.shortMessage,void 0,b.TRANSACTION_FAILURE)):eo(o.shortMessage??"Something went wrong"))}t?(await Io.waitForTransactionReceipt({hash:t}),uo(!1),go(!0)):uo(!1)}else mo(!1)})().catch(console.error)}),[Io,No]),r((()=>{if(!K)return;let o={error:K,previousScreen:q.FUNDING_TRANSFER_FROM_WALLET_SCREEN};Q({funding:Y?.funding,sendTransaction:Y?.sendTransaction,errorModalData:o}),V(q.ERROR_SCREEN,!1)}),[K]);let Lo=bo?k(bo.walletClientType,bo.connectorType,bo.walletClientType)||"wallet":null;if(r((()=>{if(!ho)return;let o=setTimeout(D,y);return()=>clearTimeout(o)}),[ho]),ho/*#__PURE__*/)return o(t,{children:[/*#__PURE__*/e(j,{}),/*#__PURE__*/e(p,{}),/*#__PURE__*/o(d,{children:[/*#__PURE__*/e(n,{color:"var(--privy-color-success)",width:"64px",height:"64px"}),/*#__PURE__*/e(g,{title:"Success!",description:`You’ve successfully added ${yo} SOL to your ${X.name} wallet. It may take a minute before the funds are available to use.`})]}),/*#__PURE__*/e(u,{}),/*#__PURE__*/e(h,{})]});let Bo=no[ro];return no.length>1&&Bo?/*#__PURE__*/e(O,{displayName:Lo,configuredFundingChain:fo,formattedBalance:ko,fundingAmount:yo,fundingCurrency:"SOL",fundingAmountInUsd:Fo,options:no,selectedOption:Bo,isPreparing:ao,isSubmitting:po,addressToFund:jo,fundingWalletAddress:bo?.address||"",errorMessage:to,onSubmit:()=>{Y.funding?.amount!==yo?async function(){if(bo&&Bo)try{let o=await x({isTestnet:!1,input:A({amount:Eo.toString(),user:bo.address,recipient:jo,destinationChainId:F,destinationCurrency:L,originChainId:Bo.chain.id})}),t=E(o);if(!t)throw Error("Invalid transaction request");lo(!0),xo({data:t.data,to:t.to,value:t.value,chain:Bo.chain})}catch(o){console.error(o),oo(new w("Unable to fetch quotes for bridging",o,b.INSUFFICIENT_BALANCE))}}().catch(console.error):xo({to:Bo.bridgeTx.to,data:Bo.bridgeTx.data,value:Bo.bridgeTx.value,chain:Bo.chain})},onSelect:o=>{o!==ro&&(eo(null),so(o))},onAmountChange:wo}):po&&bo?/*#__PURE__*/e(H,{wallet:bo,displayName:Lo,addressToFund:jo,isBridging:co,isErc20Flow:!1,chainId:"solana",chainName:fo.name,totalPriceInUsd:void 0,totalPriceInNativeCurrency:void 0,gasPriceInUsd:void 0,gasPriceInNativeCurrency:void 0}):
2
2
  /*#__PURE__*/o(t,{children:[/*#__PURE__*/e(j,{}),/*#__PURE__*/e(f,{}),/*#__PURE__*/e("div",{style:{marginTop:"1rem"}}),/*#__PURE__*/e(h,{})]})};export{$ 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}from"viem";import{RefactorSpacerTop as u,CenteredItemWithGap as h,RefactorSpacerBottom as j}from"../../components/Layouts.mjs";import{BlobbyFooter as g}from"../../components/ModalFooter.mjs";import{CenteredScreenHeader as f}from"../../components/ScreenHeader.mjs";import v from"../../components/embedded-wallets/FundWalletMethodHeader.mjs";import{NeutralSpinner as y}from"../../components/primitives/NeutralSpinner/index.mjs";import{addToDefaultChains as b}from"../../connectors/chains/utils.mjs";import{DEFAULT_SUCCESS_SCREEN_EXTRA_LONG_DURATION_MS as w}from"../../constants.mjs";import{PrivyClientError as I,PrivyErrorCode as C}from"../../errors.mjs";import{usePrivyInternal as T}from"../../hooks/internal-context.mjs";import{usePrivyModal as S}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 k}from"../../lib/erc20/actions/abis/transfer.mjs";import{formatErc20TokenAmount as E}from"../../lib/erc20/formatErc20TokenAmount.mjs";import{getDollarsFromStringFloat as x,sumWeiQuantitiesToHexString as F,getDollarsFromWei as B,getNativeCurrencyFromWei as L}from"../../lib/ethers.mjs";import{toDisplayName as M}from"../../lib/external-wallets/displayHelpers.mjs";import{ON_RAMP_COMPLETE_ANALYTICS_EVENT as P}from"../../lib/funding/analytics.mjs";import{getQuote as R,toGetQuoteInput as U,toEvmTransactionRequestInfoFromQuote as W}from"../../lib/funding/reservoir.mjs";import{getBalanceForChains as _}from"../../lib/wallets/actions/getBalanceForChains.mjs";import{getErc20Balance as q}from"../../lib/wallets/actions/getErc20Balance.mjs";import{getJsonRpcEndpointFromChain as $,formatWalletAddress as H}from"../../utils/index.mjs";import{ModalScreen as O}from"../index.mjs";import{BridgeNetworkSelectionView as z}from"./BridgeNetworkSelectionView.mjs";import{TransferOrBridgeLoadingScreen as D}from"./TransferOrBridgeLoadingScreen.mjs";import"styled-components";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"../../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"../../hooks/index.mjs";import"ofetch";import"../../components/PrefetchedImage.mjs";import"../../hooks/useGetSolPrice.mjs";import"@ethersproject/bignumber";import"@ethersproject/units";import"../../ethers-Cz-frLvN.mjs";import"@ethersproject/providers";import"../../connectors/get-legacy-injected-providers.mjs";import"../../connectors/is-wallet-installed.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/phantom.mjs";import"../../svg/rabby.mjs";import"../../svg/rainbow.mjs";import"../../svg/safe.mjs";import"../../svg/uniswap.mjs";import"../../svg/universal-profile.mjs";import"../../svg/wallet-connect.mjs";import"../../svg/zerion.mjs";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"../../formatters--YjgN2Dw.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 G=()=>{let{rpcConfig:G,appId:V,closePrivyModal:Q,createAnalyticsEvent:X}=T(),{navigate:Y,setModalData:Z,app:J,data:K}=S(),{wallets:oo}=A(),[eo,to]=i(!1),[no,io]=i(0n),[ro,so]=i(!1),[ao,co]=i(null),[mo,lo]=i(null),[po,uo]=i([]),[ho,jo]=i(0),[go,fo]=i(!1),[vo,yo]=i(!1),[bo,wo]=i(!1),[Io,Co]=i(!1);if(!K?.funding||"ethereum"!==K.funding.chainType)throw Error("Invalid funding data");let{erc20ContractInfo:To,chain:So,connectedWalletAddress:No}=K.funding,Ao=K.funding.address,ko=K.funding.erc20Address,[Eo,xo]=i(K.funding.amount);r((()=>{ko&&!To&&co(Error("Unable to fetch token details"))}),[]);let Fo=!!ko&&!!To,Bo=Fo?BigInt(parseFloat(Eo)*10**To.decimals):s(Eo),Lo=No?oo.find((({address:o})=>o===No)):oo[0],[Mo,Po]=i(null);r((()=>{(async()=>{if(!Lo)return;let o=await Lo.getEthereumProvider();Po(a({account:Lo.address,transport:c(o)}).extend(m))})().catch(console.error)}),[Lo]);let[Ro,Uo]=i(0n);r((()=>{l({chain:So,transport:p($(So,G,V))}).getBalance({address:Ao}).then(Uo).catch(console.error)}),[]);let[Wo,_o]=i(0n);r((()=>{Fo&&q({chain:So,address:Ao,appId:V,rpcConfig:G,erc20Address:ko}).then((o=>_o(o.balance))).catch(console.error)}),[]);let{tokenPrice:qo}=N(So.id),[$o,Ho]=i({to:Ao,chain:So,value:Bo,data:void 0});r((()=>{(async()=>{let o,e;if(!Mo||!Lo||go||bo)return;fo(!0);let t=l({chain:$o.chain,transport:p($($o.chain,G,V))});if(Fo&&!$o.data)return await t.simulateContract({address:ko,chain:$o.chain,abi:k,functionName:"transfer",args:[Ao,Bo],account:Lo.address}).catch((o=>{console.warn("Simulated token transfer failed with error, fetching bridge options.",o)}))?(fo(!1),void Ho({to:ko,chain:$o.chain,data:d({abi:k,functionName:"transfer",args:[Ao,Bo]}),value:"0x0"})):(fo(!1),void so(!0));try{o=await t.prepareTransactionRequest({account:Lo.address,to:$o.to,chain:$o.chain,data:$o.data,value:BigInt($o.value??0)})}catch(o){if(console.error(o),po.length>1)lo(o.shortMessage??"Something went wrong");else if(vo&&0===po.length)return void co(new I(`Wallet ${H(Lo.address)} does not have enough funds.`,void 0,C.INSUFFICIENT_BALANCE))}if(!o)return fo(!1),void so(!0);fo(!1),wo(!0),to(!0),io(o.gas);try{await Mo.switchChain({id:$o.chain.id})}catch(o){await Mo.addChain({chain:$o.chain}),await Mo.switchChain({id:$o.chain.id})}try{e=await Mo.sendTransaction(o),X({eventName:P,payload:{provider:"external",status:"success",address:Lo.address,chainId:$o.chain.id,value:$o.value?.toString(),txHash:e}})}catch(o){if(console.error(o),"TransactionExecutionError"===o.name)if(po.length<1){let e=o.shortMessage;(o.shortMessage.includes("rejected the request")||o.details.includes("rejected the request"))&&(e="User rejected the request."),co(new I(e,void 0,C.TRANSACTION_FAILURE))}else lo(o.shortMessage??"Something went wrong")}e?(await Mo.waitForTransactionReceipt({hash:e}),wo(!1),Co(!0)):wo(!1)})().catch(console.error)}),[Mo,$o]),r((()=>{(async()=>{if(!ro||!Mo||!Lo)return;let o=b(J.chains).filter((o=>o.id!==So.id&&!!o.testnet==!!So.testnet));Fo&&o.unshift(So);let e=await _({chains:o,address:Lo.address,appId:V,rpcConfig:G}),t=Fo?e.filter((o=>o.balance>0n)):e.filter((o=>o.balance>Bo));if(t.length<1)return void co(new I(`Wallet ${H(Lo.address)} does not have enough funds.`,void 0,C.INSUFFICIENT_BALANCE));t.sort(((o,e)=>Number(e.balance-o.balance)));let n=(await Promise.allSettled(t.map((async o=>({quote:await R({isTestnet:!!So.testnet,input:U({amount:Bo.toString(),user:Lo.address,recipient:Ao,destinationChainId:So.id,destinationCurrency:ko,originChainId:o.chain.id})}),...o}))))).filter((o=>"fulfilled"===o.status)).map((o=>o.value));if(n.length<1)return void co(new I(`Wallet ${H(Lo.address)} does not have enough funds.`,void 0,C.INSUFFICIENT_BALANCE));let i=n.map((o=>({bridgeTx:W(o.quote),balance:o.balance,chain:o.chain}))).filter((o=>!!o.bridgeTx));if(i.length>1)return void uo(i);let r=i[0];r?(yo(!0),Ho({data:r.bridgeTx.data,to:r.bridgeTx.to,value:r.bridgeTx.value,chain:r.chain})):co(new I(`Wallet ${H(Lo.address)} does not have enough funds.`,void 0,C.INSUFFICIENT_BALANCE))})().catch(console.error)}),[ro]),r((()=>{if(!ao)return;let o={error:ao,previousScreen:O.FUNDING_TRANSFER_FROM_WALLET_SCREEN};Z({funding:K?.funding,sendTransaction:K?.sendTransaction,errorModalData:o}),Y(O.ERROR_SCREEN,!1)}),[ao]);let Oo=Lo?M(Lo.walletClientType,Lo.connectorType,Lo.walletClientType)||"wallet":null,zo=!Fo&&qo?x(Eo??"0",qo):void 0,Do=Fo?no:F([no,Bo]),Go=Do&&qo?B(Do,qo):void 0,Vo=Do?L(Do,"ETH"):void 0,Qo=no&&qo?B(no,qo):void 0,Xo=no?L(no,"ETH"):void 0;if(r((()=>{if(!Io)return;let o=setTimeout(Q,w);return()=>clearTimeout(o)}),[Io]),Io/*#__PURE__*/)return o(e,{children:[/*#__PURE__*/t(v,{}),/*#__PURE__*/t(u,{}),/*#__PURE__*/o(h,{children:[/*#__PURE__*/t(n,{color:"var(--privy-color-success)",width:"64px",height:"64px"}),/*#__PURE__*/t(f,{title:"Success!",description:`You’ve successfully added ${Eo} ${Fo?To.symbol:So.nativeCurrency.symbol} to your ${J.name} wallet. It may take a minute before the funds are available to use.`})]}),/*#__PURE__*/t(j,{}),/*#__PURE__*/t(g,{})]});let Yo=Fo?`${E({amount:Wo,decimals:To.decimals})} ${To.symbol}`:L(Ro,So.nativeCurrency.symbol,3,!0),Zo=po[ho];return po.length>1&&Zo?/*#__PURE__*/t(z,{displayName:Oo,configuredFundingChain:So,formattedBalance:Yo,fundingAmount:Eo,fundingCurrency:Fo?To.symbol:So.nativeCurrency.symbol,fundingAmountInUsd:zo,options:po,selectedOption:Zo,isPreparing:go,isSubmitting:bo,addressToFund:Ao,fundingWalletAddress:Lo?.address||"",errorMessage:mo,onSubmit:()=>{K.funding?.amount!==Eo?async function(){if(Lo&&Zo)try{let o=await R({isTestnet:!!So.testnet,input:U({amount:Bo.toString(),user:Lo.address,recipient:Ao,destinationChainId:So.id,destinationCurrency:ko,originChainId:Zo.chain.id})}),e=W(o);if(!e)throw Error("Invalid transaction request");yo(!0),Ho({data:e.data,to:e.to,value:e.value,chain:Zo.chain})}catch(o){console.error(o),co(new I("Unable to fetch quotes for bridging",o,C.INSUFFICIENT_BALANCE))}}().catch(console.error):Ho({to:Zo.bridgeTx.to,data:Zo.bridgeTx.data,value:Zo.bridgeTx.value,chain:Zo.chain})},onSelect:o=>{o!==ho&&(lo(null),jo(o))},onAmountChange:xo}):eo&&no&&Lo&&K?.funding?/*#__PURE__*/t(D,{wallet:Lo,displayName:Oo,addressToFund:Ao,isBridging:vo,isErc20Flow:Fo,totalPriceInUsd:Go,totalPriceInNativeCurrency:Vo,gasPriceInUsd:Qo,gasPriceInNativeCurrency:Xo,chainId:So.id,chainName:So.name}):
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}from"viem";import{RefactorSpacerTop as u,CenteredItemWithGap as h,RefactorSpacerBottom as j}from"../../components/Layouts.mjs";import{BlobbyFooter as g}from"../../components/ModalFooter.mjs";import{CenteredScreenHeader as f}from"../../components/ScreenHeader.mjs";import v from"../../components/embedded-wallets/FundWalletMethodHeader.mjs";import{NeutralSpinner as y}from"../../components/primitives/NeutralSpinner/index.mjs";import{addToDefaultChains as b}from"../../connectors/chains/utils.mjs";import{DEFAULT_SUCCESS_SCREEN_EXTRA_LONG_DURATION_MS as w}from"../../constants.mjs";import{PrivyClientError as I,PrivyErrorCode as C}from"../../errors.mjs";import{usePrivyInternal as T}from"../../hooks/internal-context.mjs";import{usePrivyModal as S}from"../../hooks/modal-context.mjs";import{useGetTokenPrice as N}from"../../hooks/useGetTokenPrice.mjs";import{useWallets as k}from"../../hooks/useWallets.mjs";import{ERC20_TRANSFER_ABI_STUB as A}from"../../lib/erc20/actions/abis/transfer.mjs";import{formatErc20TokenAmount as E}from"../../lib/erc20/formatErc20TokenAmount.mjs";import{getDollarsFromStringFloat as x,sumWeiQuantitiesToHexString as F,getDollarsFromWei as B,getNativeCurrencyFromWei as L}from"../../lib/ethers.mjs";import{toDisplayName as M}from"../../lib/external-wallets/displayHelpers.mjs";import{ON_RAMP_COMPLETE_ANALYTICS_EVENT as P}from"../../lib/funding/analytics.mjs";import{getQuote as R,toGetQuoteInput as U,toEvmTransactionRequestInfoFromQuote as W}from"../../lib/funding/reservoir.mjs";import{getBalanceForChains as _}from"../../lib/wallets/actions/getBalanceForChains.mjs";import{getErc20Balance as q}from"../../lib/wallets/actions/getErc20Balance.mjs";import{getJsonRpcEndpointFromChain as $,formatWalletAddress as H}from"../../utils/index.mjs";import{ModalScreen as O}from"../index.mjs";import{BridgeNetworkSelectionView as z}from"./BridgeNetworkSelectionView.mjs";import{TransferOrBridgeLoadingScreen as D}from"./TransferOrBridgeLoadingScreen.mjs";import"styled-components";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"../../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"../../hooks/index.mjs";import"ofetch";import"../../components/PrefetchedImage.mjs";import"../../hooks/useGetSolPrice.mjs";import"@ethersproject/bignumber";import"@ethersproject/units";import"@privy-io/js-sdk-core";import"@ethersproject/providers";import"../../connectors/get-legacy-injected-providers.mjs";import"../../connectors/is-wallet-installed.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/phantom.mjs";import"../../svg/rabby.mjs";import"../../svg/rainbow.mjs";import"../../svg/safe.mjs";import"../../svg/uniswap.mjs";import"../../svg/universal-profile.mjs";import"../../svg/wallet-connect.mjs";import"../../svg/zerion.mjs";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 G=()=>{let{rpcConfig:G,appId:V,closePrivyModal:Q,createAnalyticsEvent:X}=T(),{navigate:Y,setModalData:Z,app:J,data:K}=S(),{wallets:oo}=k(),[eo,to]=i(!1),[no,io]=i(0n),[ro,so]=i(!1),[ao,co]=i(null),[mo,lo]=i(null),[po,uo]=i([]),[ho,jo]=i(0),[go,fo]=i(!1),[vo,yo]=i(!1),[bo,wo]=i(!1),[Io,Co]=i(!1);if(!K?.funding||"ethereum"!==K.funding.chainType)throw Error("Invalid funding data");let{erc20ContractInfo:To,chain:So,connectedWalletAddress:No}=K.funding,ko=K.funding.address,Ao=K.funding.erc20Address,[Eo,xo]=i(K.funding.amount);r((()=>{Ao&&!To&&co(Error("Unable to fetch token details"))}),[]);let Fo=!!Ao&&!!To,Bo=Fo?BigInt(parseFloat(Eo)*10**To.decimals):s(Eo),Lo=No?oo.find((({address:o})=>o===No)):oo[0],[Mo,Po]=i(null);r((()=>{(async()=>{if(!Lo)return;let o=await Lo.getEthereumProvider();Po(a({account:Lo.address,transport:c(o)}).extend(m))})().catch(console.error)}),[Lo]);let[Ro,Uo]=i(0n);r((()=>{l({chain:So,transport:p($(So,G,V))}).getBalance({address:ko}).then(Uo).catch(console.error)}),[]);let[Wo,_o]=i(0n);r((()=>{Fo&&q({chain:So,address:ko,appId:V,rpcConfig:G,erc20Address:Ao}).then((o=>_o(o.balance))).catch(console.error)}),[]);let{tokenPrice:qo}=N(So.id),[$o,Ho]=i({to:ko,chain:So,value:Bo,data:void 0});r((()=>{(async()=>{let o,e;if(!Mo||!Lo||go||bo)return;fo(!0);let t=l({chain:$o.chain,transport:p($($o.chain,G,V))});if(Fo&&!$o.data)return await t.simulateContract({address:Ao,chain:$o.chain,abi:A,functionName:"transfer",args:[ko,Bo],account:Lo.address}).catch((o=>{console.warn("Simulated token transfer failed with error, fetching bridge options.",o)}))?(fo(!1),void Ho({to:Ao,chain:$o.chain,data:d({abi:A,functionName:"transfer",args:[ko,Bo]}),value:"0x0"})):(fo(!1),void so(!0));try{o=await t.prepareTransactionRequest({account:Lo.address,to:$o.to,chain:$o.chain,data:$o.data,value:BigInt($o.value??0)})}catch(o){if(console.error(o),po.length>1)lo(o.shortMessage??"Something went wrong");else if(vo&&0===po.length)return void co(new I(`Wallet ${H(Lo.address)} does not have enough funds.`,void 0,C.INSUFFICIENT_BALANCE))}if(!o)return fo(!1),void so(!0);fo(!1),wo(!0),to(!0),io(o.gas);try{await Mo.switchChain({id:$o.chain.id})}catch(o){await Mo.addChain({chain:$o.chain}),await Mo.switchChain({id:$o.chain.id})}try{e=await Mo.sendTransaction(o),X({eventName:P,payload:{provider:"external",status:"success",address:Lo.address,chainId:$o.chain.id,value:$o.value?.toString(),txHash:e}})}catch(o){if(console.error(o),"TransactionExecutionError"===o.name)if(po.length<1){let e=o.shortMessage;(o.shortMessage.includes("rejected the request")||o.details.includes("rejected the request"))&&(e="User rejected the request."),co(new I(e,void 0,C.TRANSACTION_FAILURE))}else lo(o.shortMessage??"Something went wrong")}e?(await Mo.waitForTransactionReceipt({hash:e}),wo(!1),Co(!0)):wo(!1)})().catch(console.error)}),[Mo,$o]),r((()=>{(async()=>{if(!ro||!Mo||!Lo)return;let o=b(J.chains).filter((o=>o.id!==So.id&&!!o.testnet==!!So.testnet));Fo&&o.unshift(So);let e=await _({chains:o,address:Lo.address,appId:V,rpcConfig:G}),t=Fo?e.filter((o=>o.balance>0n)):e.filter((o=>o.balance>Bo));if(t.length<1)return void co(new I(`Wallet ${H(Lo.address)} does not have enough funds.`,void 0,C.INSUFFICIENT_BALANCE));t.sort(((o,e)=>Number(e.balance-o.balance)));let n=(await Promise.allSettled(t.map((async o=>({quote:await R({isTestnet:!!So.testnet,input:U({amount:Bo.toString(),user:Lo.address,recipient:ko,destinationChainId:So.id,destinationCurrency:Ao,originChainId:o.chain.id})}),...o}))))).filter((o=>"fulfilled"===o.status)).map((o=>o.value));if(n.length<1)return void co(new I(`Wallet ${H(Lo.address)} does not have enough funds.`,void 0,C.INSUFFICIENT_BALANCE));let i=n.map((o=>({bridgeTx:W(o.quote),balance:o.balance,chain:o.chain}))).filter((o=>!!o.bridgeTx));if(i.length>1)return void uo(i);let r=i[0];r?(yo(!0),Ho({data:r.bridgeTx.data,to:r.bridgeTx.to,value:r.bridgeTx.value,chain:r.chain})):co(new I(`Wallet ${H(Lo.address)} does not have enough funds.`,void 0,C.INSUFFICIENT_BALANCE))})().catch(console.error)}),[ro]),r((()=>{if(!ao)return;let o={error:ao,previousScreen:O.FUNDING_TRANSFER_FROM_WALLET_SCREEN};Z({funding:K?.funding,sendTransaction:K?.sendTransaction,errorModalData:o}),Y(O.ERROR_SCREEN,!1)}),[ao]);let Oo=Lo?M(Lo.walletClientType,Lo.connectorType,Lo.walletClientType)||"wallet":null,zo=!Fo&&qo?x(Eo??"0",qo):void 0,Do=Fo?no:F([no,Bo]),Go=Do&&qo?B(Do,qo):void 0,Vo=Do?L(Do,"ETH"):void 0,Qo=no&&qo?B(no,qo):void 0,Xo=no?L(no,"ETH"):void 0;if(r((()=>{if(!Io)return;let o=setTimeout(Q,w);return()=>clearTimeout(o)}),[Io]),Io/*#__PURE__*/)return o(e,{children:[/*#__PURE__*/t(v,{}),/*#__PURE__*/t(u,{}),/*#__PURE__*/o(h,{children:[/*#__PURE__*/t(n,{color:"var(--privy-color-success)",width:"64px",height:"64px"}),/*#__PURE__*/t(f,{title:"Success!",description:`You’ve successfully added ${Eo} ${Fo?To.symbol:So.nativeCurrency.symbol} to your ${J.name} wallet. It may take a minute before the funds are available to use.`})]}),/*#__PURE__*/t(j,{}),/*#__PURE__*/t(g,{})]});let Yo=Fo?`${E({amount:Wo,decimals:To.decimals})} ${To.symbol}`:L(Ro,So.nativeCurrency.symbol,3,!0),Zo=po[ho];return po.length>1&&Zo?/*#__PURE__*/t(z,{displayName:Oo,configuredFundingChain:So,formattedBalance:Yo,fundingAmount:Eo,fundingCurrency:Fo?To.symbol:So.nativeCurrency.symbol,fundingAmountInUsd:zo,options:po,selectedOption:Zo,isPreparing:go,isSubmitting:bo,addressToFund:ko,fundingWalletAddress:Lo?.address||"",errorMessage:mo,onSubmit:()=>{K.funding?.amount!==Eo?async function(){if(Lo&&Zo)try{let o=await R({isTestnet:!!So.testnet,input:U({amount:Bo.toString(),user:Lo.address,recipient:ko,destinationChainId:So.id,destinationCurrency:Ao,originChainId:Zo.chain.id})}),e=W(o);if(!e)throw Error("Invalid transaction request");yo(!0),Ho({data:e.data,to:e.to,value:e.value,chain:Zo.chain})}catch(o){console.error(o),co(new I("Unable to fetch quotes for bridging",o,C.INSUFFICIENT_BALANCE))}}().catch(console.error):Ho({to:Zo.bridgeTx.to,data:Zo.bridgeTx.data,value:Zo.bridgeTx.value,chain:Zo.chain})},onSelect:o=>{o!==ho&&(lo(null),jo(o))},onAmountChange:xo}):eo&&no&&Lo&&K?.funding?/*#__PURE__*/t(D,{wallet:Lo,displayName:Oo,addressToFund:ko,isBridging:vo,isErc20Flow:Fo,totalPriceInUsd:Go,totalPriceInNativeCurrency:Vo,gasPriceInUsd:Qo,gasPriceInNativeCurrency:Xo,chainId:So.id,chainName:So.name}):
2
2
  /*#__PURE__*/o(e,{children:[/*#__PURE__*/t(v,{}),/*#__PURE__*/t(y,{}),/*#__PURE__*/t("div",{style:{marginTop:"1rem"}}),/*#__PURE__*/t(g,{})]})};export{G as AwaitingExternalTransferScreen};