@privy-io/react-auth 1.98.3 → 1.98.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/abstract-smart-wallets.js +1 -1
- package/dist/cjs/actions/importWallet.js +1 -1
- package/dist/cjs/client/user.js +1 -1
- package/dist/cjs/client.js +1 -1
- package/dist/cjs/components/ConnectPhoneForm.js +1 -1
- package/dist/cjs/components/LoginModal.js +1 -1
- package/dist/cjs/components/PhoneCountryDropdown.js +1 -1
- package/dist/cjs/components/embedded-wallets/PriceDisplay.js +1 -1
- package/dist/cjs/components/embedded-wallets/SolanaTransactionDetails.js +1 -1
- package/dist/cjs/components/embedded-wallets/TransactionDetails.js +1 -1
- package/dist/cjs/components/embedded-wallets/TransactionDetailsWrapper.js +1 -1
- package/dist/cjs/components/embedded-wallets/TransactionTotal.js +1 -1
- package/dist/cjs/components/embedded-wallets/WalletLink.js +1 -1
- package/dist/cjs/components/embedded-wallets/index.js +1 -1
- package/dist/cjs/connectors/coinbase.js +1 -1
- package/dist/cjs/connectors/embedded.js +1 -1
- package/dist/cjs/connectors/embeddedProvider.js +1 -1
- package/dist/cjs/connectors/errors.js +1 -1
- package/dist/cjs/connectors/ethereum/EthereumNullConnector.js +1 -1
- package/dist/cjs/connectors/ethereum/index.js +1 -1
- package/dist/cjs/connectors/index.js +1 -1
- package/dist/cjs/connectors/injected.js +1 -1
- package/dist/cjs/connectors/metamask.js +1 -1
- package/dist/cjs/connectors/phantom-solana.js +1 -1
- package/dist/cjs/connectors/phantom.js +1 -1
- package/dist/cjs/connectors/privyProxyProvider.js +1 -1
- package/dist/cjs/connectors/solana/SolanaNullConnector.js +1 -1
- package/dist/cjs/connectors/solana/index.js +1 -1
- package/dist/cjs/connectors/solana/toSolanaWalletConnectors.js +1 -1
- package/dist/cjs/connectors/walletconnect-v2.js +1 -1
- package/dist/cjs/constants.js +1 -1
- package/dist/cjs/embedded-wallets/EmbeddedWalletIframe.js +1 -1
- package/dist/cjs/embedded-wallets/eventCallbacksQueue.js +1 -1
- package/dist/cjs/embedded-wallets/rpc/index.js +1 -1
- package/dist/cjs/embedded-wallets/solana/provider.js +1 -1
- package/dist/cjs/hooks/privy-provider.js +1 -1
- package/dist/cjs/hooks/smart-wallets-provider.js +1 -1
- package/dist/cjs/hooks/useFormattedBalances.js +1 -1
- package/dist/cjs/hooks/useFundSolanaWallet.js +1 -1
- package/dist/cjs/hooks/useImportSolanaWallet.js +1 -0
- package/dist/cjs/hooks/useImportWallet.js +1 -1
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/lib/abstract-smart-wallets.js +1 -1
- package/dist/cjs/lib/ethers.js +1 -1
- package/dist/cjs/lib/funding/coinbase/triggerCoinbaseFlow.js +1 -1
- package/dist/cjs/lib/funding/prepareFundingMethods.js +1 -1
- package/dist/cjs/lib/smart-wallets-shared.js +1 -1
- package/dist/cjs/lib/smart-wallets.js +1 -1
- package/dist/cjs/plugins/solana-funding/plugin.js +1 -1
- package/dist/cjs/plugins/solana-funding/useSolanaFundingPlugin.js +1 -1
- package/dist/cjs/privy-components/user-pill/PrimaryWallet.js +1 -1
- package/dist/cjs/privy-components/user-pill/UserMenu.js +1 -1
- package/dist/cjs/privy-components/user-pill/UserPill.js +2 -2
- package/dist/cjs/privy-components/user-pill/UserPill.test.js +1 -1
- package/dist/cjs/privy-components/user-pill/screens/AccountScreen.js +1 -1
- package/dist/cjs/privy-components/user-pill/screens/MenuScreen.js +1 -1
- package/dist/cjs/privy-components/user-pill/screens/WalletActionsScreen.js +1 -1
- package/dist/cjs/privy-components/wallets-pill/ActiveWalletCard.js +1 -1
- package/dist/cjs/privy-components/wallets-pill/ConnectWalletView.js +1 -1
- package/dist/cjs/privy-components/wallets-pill/SelectActiveWalletView.js +1 -1
- package/dist/cjs/privy-components/wallets-pill/WalletCardView.js +1 -1
- package/dist/cjs/privy-components/wallets-pill/WalletsDialog.js +1 -1
- package/dist/cjs/privy-provider-zFh8lpI0.js +2 -0
- package/dist/cjs/screens/ConnectOnlyStatusScreen.js +1 -1
- package/dist/cjs/screens/ConnectionStatusScreen.js +2 -2
- package/dist/cjs/screens/Funding/AwaitingEvmToSolBridgingScreen.js +1 -1
- package/dist/cjs/screens/Funding/AwaitingExternalTransferScreen.js +2 -2
- package/dist/cjs/screens/Funding/BridgeNetworkSelectionView.js +1 -1
- package/dist/cjs/screens/Funding/FundingEditAmountScreen.js +1 -1
- package/dist/cjs/screens/Funding/FundingMethodSelectionScreen.js +1 -1
- package/dist/cjs/screens/Funding/ManualTransferScreen.js +1 -1
- package/dist/cjs/screens/LandingScreen/ConnectOrCreateScreen.js +1 -1
- package/dist/cjs/screens/LandingScreen/CustomLandingScreenView.js +1 -1
- package/dist/cjs/screens/LandingScreen/LandingScreen.js +1 -1
- package/dist/cjs/screens/LandingScreen/LandingScreenView.js +1 -1
- package/dist/cjs/screens/LandingScreen/SmsButton.js +1 -1
- package/dist/cjs/screens/LinkPhoneScreen.js +1 -1
- package/dist/cjs/screens/MfaScreens/EnrollSms.js +1 -1
- package/dist/cjs/screens/MfaScreens/MfaEnrollmentFlowScreen.js +1 -1
- package/dist/cjs/screens/MfaScreens/MfaVerifyFlowScreen.js +1 -1
- package/dist/cjs/screens/MfaScreens/VerifyWithPasskey.js +1 -1
- package/dist/cjs/screens/SendSolanaTransactionScreen/SendSolanaTransactionScreen.js +1 -1
- package/dist/cjs/screens/SendSolanaTransactionScreen/SolanaTransactionReceiptView.js +1 -1
- package/dist/cjs/screens/SendTransactionScreen/SendTransactionScreen.js +1 -1
- package/dist/cjs/screens/SendTransactionScreen/TransactionReceiptView.js +1 -1
- package/dist/cjs/screens/SendTransactionScreen/index.js +1 -1
- package/dist/cjs/screens/SendTransactionScreen/usePrepareTransaction.js +1 -1
- package/dist/cjs/screens/SignRequestScreen.js +1 -1
- package/dist/cjs/screens/UpdatePhoneScreen.js +1 -1
- package/dist/cjs/smart-wallets.js +1 -1
- package/dist/cjs/solana.js +1 -1
- package/dist/cjs/ui.js +1 -1
- package/dist/dts/index.d.mts +10 -10
- package/dist/dts/index.d.ts +10 -10
- package/dist/dts/solana.d.mts +24 -1
- package/dist/dts/solana.d.ts +24 -1
- package/dist/esm/abstract-smart-wallets.mjs +1 -1
- package/dist/esm/actions/importWallet.mjs +1 -1
- package/dist/esm/client/user.mjs +1 -1
- package/dist/esm/client.mjs +1 -1
- package/dist/esm/components/ConnectPhoneForm.mjs +1 -1
- package/dist/esm/components/LoginModal.mjs +1 -1
- package/dist/esm/components/PhoneCountryDropdown.mjs +1 -1
- package/dist/esm/components/embedded-wallets/PriceDisplay.mjs +3 -3
- package/dist/esm/components/embedded-wallets/SolanaTransactionDetails.mjs +1 -1
- package/dist/esm/components/embedded-wallets/TransactionDetails.mjs +2 -2
- package/dist/esm/components/embedded-wallets/TransactionDetailsWrapper.mjs +1 -1
- package/dist/esm/components/embedded-wallets/TransactionTotal.mjs +1 -1
- package/dist/esm/components/embedded-wallets/WalletLink.mjs +1 -1
- package/dist/esm/components/embedded-wallets/index.mjs +1 -1
- package/dist/esm/connectors/coinbase.mjs +1 -1
- package/dist/esm/connectors/embedded.mjs +1 -1
- package/dist/esm/connectors/embeddedProvider.mjs +1 -1
- package/dist/esm/connectors/errors.mjs +1 -1
- package/dist/esm/connectors/ethereum/EthereumNullConnector.mjs +1 -1
- package/dist/esm/connectors/ethereum/index.mjs +1 -1
- package/dist/esm/connectors/index.mjs +1 -1
- package/dist/esm/connectors/injected.mjs +1 -1
- package/dist/esm/connectors/metamask.mjs +1 -1
- package/dist/esm/connectors/phantom-solana.mjs +1 -1
- package/dist/esm/connectors/phantom.mjs +1 -1
- package/dist/esm/connectors/privyProxyProvider.mjs +1 -1
- package/dist/esm/connectors/solana/SolanaNullConnector.mjs +1 -1
- package/dist/esm/connectors/solana/index.mjs +1 -1
- package/dist/esm/connectors/solana/toSolanaWalletConnectors.mjs +1 -1
- package/dist/esm/connectors/walletconnect-v2.mjs +1 -1
- package/dist/esm/constants.mjs +1 -1
- package/dist/esm/embedded-wallets/EmbeddedWalletIframe.mjs +1 -1
- package/dist/esm/embedded-wallets/eventCallbacksQueue.mjs +1 -1
- package/dist/esm/embedded-wallets/rpc/index.mjs +1 -1
- package/dist/esm/embedded-wallets/solana/provider.mjs +1 -1
- package/dist/esm/hooks/privy-provider.mjs +1 -1
- package/dist/esm/hooks/smart-wallets-provider.mjs +1 -1
- package/dist/esm/hooks/useFormattedBalances.mjs +1 -1
- package/dist/esm/hooks/useFundSolanaWallet.mjs +1 -1
- package/dist/esm/hooks/useImportSolanaWallet.mjs +1 -0
- package/dist/esm/hooks/useImportWallet.mjs +1 -1
- package/dist/esm/index.mjs +1 -1
- package/dist/esm/lib/abstract-smart-wallets.mjs +1 -1
- package/dist/esm/lib/ethers.mjs +1 -1
- package/dist/esm/lib/funding/coinbase/triggerCoinbaseFlow.mjs +1 -1
- package/dist/esm/lib/funding/prepareFundingMethods.mjs +1 -1
- package/dist/esm/lib/smart-wallets-shared.mjs +1 -1
- package/dist/esm/lib/smart-wallets.mjs +1 -1
- package/dist/esm/plugins/solana-funding/plugin.mjs +1 -1
- package/dist/esm/plugins/solana-funding/useSolanaFundingPlugin.mjs +1 -1
- package/dist/esm/privy-components/user-pill/PrimaryWallet.mjs +1 -1
- package/dist/esm/privy-components/user-pill/UserMenu.mjs +1 -1
- package/dist/esm/privy-components/user-pill/UserPill.mjs +2 -2
- package/dist/esm/privy-components/user-pill/UserPill.test.mjs +1 -1
- package/dist/esm/privy-components/user-pill/screens/AccountScreen.mjs +1 -1
- package/dist/esm/privy-components/user-pill/screens/MenuScreen.mjs +1 -1
- package/dist/esm/privy-components/user-pill/screens/WalletActionsScreen.mjs +1 -1
- package/dist/esm/privy-components/wallets-pill/ActiveWalletCard.mjs +1 -1
- package/dist/esm/privy-components/wallets-pill/ConnectWalletView.mjs +1 -1
- package/dist/esm/privy-components/wallets-pill/SelectActiveWalletView.mjs +1 -1
- package/dist/esm/privy-components/wallets-pill/WalletCardView.mjs +1 -1
- package/dist/esm/privy-components/wallets-pill/WalletsDialog.mjs +1 -1
- package/dist/esm/privy-provider-BnF-KW5M.mjs +2 -0
- package/dist/esm/screens/ConnectOnlyStatusScreen.mjs +1 -1
- package/dist/esm/screens/ConnectionStatusScreen.mjs +1 -1
- package/dist/esm/screens/Funding/AwaitingEvmToSolBridgingScreen.mjs +1 -1
- package/dist/esm/screens/Funding/AwaitingExternalTransferScreen.mjs +1 -1
- package/dist/esm/screens/Funding/BridgeNetworkSelectionView.mjs +1 -1
- package/dist/esm/screens/Funding/FundingEditAmountScreen.mjs +1 -1
- package/dist/esm/screens/Funding/FundingMethodSelectionScreen.mjs +1 -1
- package/dist/esm/screens/Funding/ManualTransferScreen.mjs +1 -1
- package/dist/esm/screens/LandingScreen/ConnectOrCreateScreen.mjs +1 -1
- package/dist/esm/screens/LandingScreen/CustomLandingScreenView.mjs +1 -1
- package/dist/esm/screens/LandingScreen/LandingScreen.mjs +1 -1
- package/dist/esm/screens/LandingScreen/LandingScreenView.mjs +1 -1
- package/dist/esm/screens/LandingScreen/SmsButton.mjs +1 -1
- package/dist/esm/screens/LinkPhoneScreen.mjs +1 -1
- package/dist/esm/screens/MfaScreens/EnrollSms.mjs +1 -1
- package/dist/esm/screens/MfaScreens/MfaEnrollmentFlowScreen.mjs +1 -1
- package/dist/esm/screens/MfaScreens/MfaVerifyFlowScreen.mjs +1 -1
- package/dist/esm/screens/MfaScreens/VerifyWithPasskey.mjs +1 -1
- package/dist/esm/screens/SendSolanaTransactionScreen/SendSolanaTransactionScreen.mjs +1 -1
- package/dist/esm/screens/SendSolanaTransactionScreen/SolanaTransactionReceiptView.mjs +1 -1
- package/dist/esm/screens/SendTransactionScreen/SendTransactionScreen.mjs +1 -1
- package/dist/esm/screens/SendTransactionScreen/TransactionReceiptView.mjs +1 -1
- package/dist/esm/screens/SendTransactionScreen/index.mjs +1 -1
- package/dist/esm/screens/SendTransactionScreen/usePrepareTransaction.mjs +1 -1
- package/dist/esm/screens/SignRequestScreen.mjs +1 -1
- package/dist/esm/screens/UpdatePhoneScreen.mjs +1 -1
- package/dist/esm/smart-wallets.mjs +1 -1
- package/dist/esm/solana.mjs +1 -1
- package/dist/esm/ui.mjs +1 -1
- package/package.json +3 -2
- package/dist/cjs/PhoneCountryDropdown-JNQITU4K.js +0 -1
- package/dist/cjs/errors-3fxlG6WB.js +0 -1
- package/dist/cjs/ethers-De6TACnn.js +0 -1
- package/dist/cjs/formatters-DnPKmSM4.js +0 -1
- package/dist/cjs/index-DNFBYH7-.js +0 -1
- package/dist/cjs/privy-provider-D0xgmci9.js +0 -2
- package/dist/esm/PhoneCountryDropdown-BXDwBRL5.mjs +0 -1
- package/dist/esm/errors-9ucGZPEs.mjs +0 -1
- package/dist/esm/ethers-Cz-frLvN.mjs +0 -1
- package/dist/esm/formatters--YjgN2Dw.mjs +0 -1
- package/dist/esm/index-B3QfI7v9.mjs +0 -1
- package/dist/esm/privy-provider-BUtSVRxn.mjs +0 -2
|
@@ -1,2 +0,0 @@
|
|
|
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{CustomJwtAccountFlow as d}from"./auth-flows/custom-jwt-account.mjs";import{UpdateEmailFlow as u,EmailFlow as h}from"./auth-flows/email.mjs";import{FarcasterFlow as p}from"./auth-flows/farcaster.mjs";import{GuestFlow as w}from"./auth-flows/guest.mjs";import{PasskeyFlow as m}from"./auth-flows/passkey.mjs";import{SiweFlow as y}from"./auth-flows/siwe.mjs";import{SiwsFlow as f}from"./auth-flows/siws.mjs";import{UpdateSmsFlow as g,SmsFlow as E}from"./auth-flows/sms.mjs";import{TelegramAuthFlow as _,detectCompletingTelegramFlow as A}from"./auth-flows/telegram.mjs";import{v4 as T}from"uuid";import{AccessToken as v}from"./accessToken.mjs";import{getEntropyDetailsFromAccount as C,convertUserResponseToUser as I,getPrivySolanaHDWallets as W,getPrivyPrimaryWallet as k,getEntropyDetailsFromUser as N,getPrivyEthereumWallet as b,getPrivyEthereumHDWallets as U,getImportedPrivyEthereumWallet as O,shouldProceedtoEmbeddedWalletCreationFlow as S,getPrivySolanaWallet as R,getLatestPrivyEthereumWallet as P,getEthereumSigningAndRootWallet as D,getSolanaSigningAndRootWallet as L,getLatestPrivySolanaWallet as M}from"./client/user.mjs";import F from"eventemitter3";import{CONNECTORS_STATE_KEY as x,CONNECTIONS_HISTORY_KEY as j,DEFAULT_PRIVY_API_URL as B,DEFAULT_API_TIMEOUT_MS as V,CLIENT_ANALYTICS_ID_KEY as H,CUSTOMER_ACCESS_TOKEN_STORAGE_KEY as K,PRIVY_ACCESS_TOKEN_STORAGE_KEY as G,getGuestCredentialStorageKey as z,HEADLESS_OAUTH_KEY as q,OAUTH_DISABLE_SIGNUP_KEY as $,STATE_CODE_KEY as Y,WALLET_PROXY_TIMEOUT as X,FORKED_TOKEN_STORAGE_KEY as Q}from"./constants.mjs";import J,{isLocalStorageAccessible as Z}from"./storage.mjs";import{getJsonRpcProvider as ee,generateTypedDataWithDomainType as te,toHex as re,detectInjectedConnectors as ae,formatChainIdToCAIP2 as ne}from"./utils/index.mjs";import{CoinbaseWalletConnector as ie}from"./connectors/coinbase.mjs";import{EmbeddedWalletConnector as oe}from"./connectors/embedded.mjs";import{isSupportedEthereumRpcMethod as se}from"./embedded-wallets/rpc/types.mjs";import{Captcha as le}from"./components/Captcha.mjs";import{LoginModal as ce}from"./components/LoginModal.mjs";import{TelegramLoginButton as de}from"./components/TelegramLoginButton.mjs";import{PrivyAppConfigProvider as ue,useAppConfig as he,useIsServerConfigLoaded as pe}from"./configuration/context.mjs";import{areWalletArraysEqual as we}from"./connectors/areWalletArraysEqual.mjs";import{PrivyProviderRpcError as me,ProviderRpcError as ye}from"./connectors/errors.mjs";import{isPhantomInstalled as fe}from"./connectors/is-wallet-installed.mjs";import{isBaseConnectedEthereumWallet as ge}from"./connectors/isBaseConnectedEthereumWallet.mjs";import{PrivyProxyProvider as Ee,AsExternalProvider as _e,AsAbstractProvider as Ae}from"./connectors/privyProxyProvider.mjs";import{isSolanaWalletConnector as Te,isBaseConnectedSolanaWallet as ve}from"./connectors/solana/index.mjs";import{WalletConnectV2WalletConnector as Ce}from"./connectors/walletconnect-v2.mjs";import{EmbeddedWalletIframe as Ie}from"./embedded-wallets/EmbeddedWalletIframe.mjs";import{isWalletDelegated as We,getDelegatedWalletsData as ke,getRootWalletDataForDelegation as Ne,getDelegatedWalletsForUser as be}from"./embedded-wallets/delegated-actions.mjs";import{errorIndicatesRecoveryIsNeeded as Ue}from"./embedded-wallets/errors.mjs";import{formatReceipt as Oe,getAndCheckBalance as Se,sendTransaction as Re}from"./embedded-wallets/rpc/index.mjs";import{PrivyClientError as Pe,formatApiError as De,formatPrivyError as Le,PrivyErrorCode as Me,PrivyNotReadyError as Fe,PrivyConnectorError as xe,PrivyError as je}from"./errors.mjs";import{signSolanaTransaction as Be,sendSolanaTransaction as Ve}from"./embedded-wallets/solana/transaction.mjs";import{extractChainIdFromCAIP2 as He}from"./lib/caip2.mjs";import{USE_BROADCAST_CHANNEL_EVENT_TYPE as Ke,isPrivyTheOAuthProvider as Ge,CROSS_APP_BROADCAST_CHANNEL_NAME as ze}from"./lib/cross-app/index.mjs";import{getCrossAppAuthorizationUrl as qe,authenticateCrossAppAccount as $e,getProviderAppMetadata as Ye}from"./lib/cross-app/authFlow.mjs";import{popupCrossAppAuthFlow as Xe}from"./lib/cross-app/popupCrossAppAuthFlow.mjs";import{sendCrossAppRequest as Qe}from"./lib/cross-app/sendCrossAppRequest.mjs";import{getRecoveryAuthorizationUrl as Je,authenticateRecovery as Ze,embeddedWalletRecoveryScreen as et,toEmbeddedWalletSetRecoveryScreen as tt}from"./lib/embeddedWalletRecovery.mjs";import{FUNDING_SCREENS as rt,fundingScreenMethodMap as at}from"./lib/funding/index.mjs";import{isFundingEnabled as nt}from"./lib/funding/isFundingEnabled.mjs";import it from"./lib/isEmbeddedWebview.mjs";import{triggerPopup as ot}from"./lib/popup/triggerPopup.mjs";import{popupOAuthFlow as st}from"./lib/popupOAuthFlow.mjs";import{prepareSiweMessageWithNonce as lt}from"./lib/siwe.mjs";import{decodeSolanaTransaction as ct,createSolanaTransactionReceipt as dt}from"./lib/solana/transaction.mjs";import{toDisplayFromAccountType as ut}from"./lib/toDisplayFromAccountType.mjs";import{transformResponseToSnakeCase as ht}from"./passkeys/transformResponseToSnakeCase.mjs";import{PrivyPluginProvider as pt,usePlugins as wt}from"./plugins/context/PrivyPluginContext.mjs";import{SOLANA_FUNDING_PLUGIN_ID as mt}from"./plugins/solana-funding/id.mjs";import{RecentlyUsedAccountProvider as yt}from"./recent-login/context.mjs";import{ModalScreen as ft}from"./screens/index.mjs";import{Hide as gt}from"./screens/LandingScreen/styles.mjs";import{GlobalStyle as Et}from"./styles.mjs";import{notImplemented as _t}from"./hooks/index.mjs";import{CaptchaProvider as At}from"./hooks/captcha-context.mjs";import{privyEventsDefault as Tt,emitPrivyEvent as vt,PrivyEventsContext as Ct}from"./hooks/events-context.mjs";import{InternalPrivyContext as It}from"./hooks/internal-context.mjs";import{ModalProvider as Wt}from"./hooks/modal-context.mjs";import{PrivyContext as kt}from"./hooks/privy-context.mjs";import{UseWalletsContext as Nt}from"./hooks/useWallets.mjs";import{prepareSolanaFundingModalData as bt,prepareFundingModalData as Ut}from"./lib/funding/prepareFundingModalData.mjs";import{detectCompletingOAuthFlow as Ot}from"./auth-flows/oauth/detectCompletingOAuthFlow.mjs";import{g as St,o as Rt}from"./index-B3QfI7v9.mjs";import{n as Pt}from"./errors-9ucGZPEs.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 F{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=ee(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(te(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:re(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 re(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(!se(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=ee(s,this.chains,n,{appId:o}),this.rpcTimeoutDuration=Lt(n,"privy"),this.appId=o,this.walletIndex=l}}class Ir extends F{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;J.get(x)&&(J.getKeys().forEach((e=>{e.startsWith("walletconnect")&&J.del(e)})),J.del(x));let e=ae({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"),!fe()&&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(Te).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}=C(t),s=new oe({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 oe({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 Ce&&a.resetConnection(t),a;let n=(()=>"injected"!==e?"coinbase_wallet"===e?new ie(this.chains,this.defaultChain,this.rpcConfig,this.externalWalletConfig,this.privyAppName,this.privyAppLogo):"phantom"===e?new Vt(this.defaultChain):new Ce(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})));J.put(j,e)}async activeWalletSign(e){let t=this.wallets,r=t.length>0?t[0]:null;return r&&ge(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 Ee},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=J.get(j);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 Pe("No auth flow in progress.");return this.session.authenticate(this.authFlow)}async link(){if(!this.authFlow)throw new Pe("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 De(e)}}async initMfaPasskeyVerification(){try{let e=await this.api.post($t,{});return zt(e.options)}catch(e){throw De(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 I(e)}catch(e){throw Le(e)}}async unlinkEmail(e){try{let t=await this.api.post(Xt,{address:e});return await this.getAuthenticatedUser()??I(t)}catch(e){throw Le(e)}}async unlinkPhone(e){try{let t=await this.api.post(Qt,{phoneNumber:e});return await this.getAuthenticatedUser()??I(t)}catch(e){throw Le(e)}}async unlinkEthereumWallet(e){try{let t=await this.api.post(Jt,{address:e});return await this.getAuthenticatedUser()??I(t)}catch(e){throw Le(e)}}async unlinkSolanaWallet(e){try{let t=await this.api.post(Zt,{address:e});return await this.getAuthenticatedUser()??I(t)}catch(e){throw Le(e)}}async unlinkOAuth(e,t){try{let r=await this.api.post(er,{provider:e,subject:t});return await this.getAuthenticatedUser()??I(r)}catch(e){throw Le(e)}}async unlinkFarcaster(e){try{let t=await this.api.post(tr,{fid:e});return await this.getAuthenticatedUser()??I(t)}catch(e){throw Le(e)}}async unlinkTelegram(e){try{let t=await this.api.post(rr,{telegram_user_id:e});return await this.getAuthenticatedUser()??I(t)}catch(e){throw Le(e)}}async unlinkPasskey(e){try{let t=await this.api.post(ar,{credential_id:e});return await this.getAuthenticatedUser()??I(t)}catch(e){throw Le(e)}}async revokeDelegatedWallet(){try{await this.api.post(nr,{})}catch(e){throw Le(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 Le(e)}}async initCoinbaseOnRamp(e){try{return this.api.post(sr,e)}catch(e){throw Le(e)}}async getCoinbaseOnRampStatus({partnerUserId:e}){try{return this.api.get(`${lr}?partnerUserId=${e}`)}catch(e){throw Le(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)?v.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 Le(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 Le(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 Le(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 I(a)}catch(e){throw Le(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 I(i)}catch(e){throw Le(e)}}async generateSiwsNonce({address:e,captchaToken:t}){try{return(await this.api.post(pr,{address:e,token:t})).nonce}catch(e){throw Le(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()??I(c)}catch(e){throw Le(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 I(n)}catch(e){throw Le(e)}}constructor({apiUrl:e=B,appId:t,appClientId:r,timeout:a=V}){Object.defineProperty(this,br,{value:Or}),this._cachedProviderAppDetails={},this.apiUrl=e,this.fallbackApiUrl=this.apiUrl,this.useServerCookies=e!==B&&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=J.get(H);if("string"==typeof e&&e.length>0)return e}catch(e){}let e=T();try{return J.put(H,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 Pe("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(J.get(K)||null)}async function Br(){return Rr?Rr.getAccessToken():Promise.resolve(J.get(G)||J.get(K)||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 Pe("Embedded wallet is only available over HTTPS");if("string"!=typeof(a=r.appId)||25!==a.length)throw new Pe("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(ue,{client:Rr,clientConfig:n,legacyCreateEmbeddedWalletFlag:r.createPrivyWalletOnLogin,children:/*#__PURE__*/e(pt,{children:/*#__PURE__*/e(Yr,{...r,client:Rr})})})};let Yr=T=>{let v=T.client,I=wt(),[F,x]=i(!1),[j,V]=i(!1),[K,G]=i(!1),[ae,ie]=i(null),[oe,se]=i([]),[ue,Te]=i([]),[De,Le]=i([]),pt=o(oe),[Lt,Mt]=i(!1),[Ft,xt]=i(null),[jt,Bt]=i(!1),[Vt,Ht]=i({status:"disconnected",connectedWallet:null,connectError:null,connector:null,connectRetry:_t}),[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=he(),ar=pe(),[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(Tt),[Ar,Tr]=i(!1);v.onStoreCustomerAccessToken=e=>{e&&vt(_r,"accessToken","onAccessTokenGranted",e)},v.onDeleteCustomerAccessToken=()=>{ie(null),G(!1),vt(_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((()=>{x(!0)}),15),v.createAnalyticsEvent({eventName:"modal_open",payload:{initialScreen:e}})},Nr=e=>{"off"!==rr.embeddedWallets.createOnLogin&&ir(!0),kr(e)};s((()=>{let e=W(ae);er&&Le(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 Pe("'fund' is deprecated for Solana wallets - use 'fundWallet' instead")},unlink:()=>{throw new Pe("Cannot unlink an embedded Solana wallet")},getProvider:async()=>new Sr(er,e.address),async signMessage(e){let t=await Br(),r=k(ae);if(!t||!er||!r)throw new Pe("Must have valid access token and Privy wallet to send transaction",Me.MUST_BE_AUTHENTICATED);if(!await da.recoverPrimaryWallet().catch((()=>!1)))throw new Pe("Wallet couldn't be connected",Me.UNKNOWN_CONNECT_WALLET_ERROR);let{entropyId:a,entropyIdVerifier:n}=C(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 Pe("Must have valid access token and Privy wallet to send transaction",Me.MUST_BE_AUTHENTICATED);if(!await da.recoverPrimaryWallet().catch((()=>!1)))throw new Pe("Wallet couldn't be connected",Me.UNKNOWN_CONNECT_WALLET_ERROR);let{entropyId:r,entropyIdVerifier:a}=N(ae);return await Be({tx:e,accessToken:t,walletProxy:er,entropyId:r,entropyIdVerifier:a,transactingWalletAddress:this.address,transactingWalletIndex:this.walletIndex??0}),e},loginOrLink:async()=>{throw new Pe("Cannot login or link with an embedded Solana wallet")},disconnect:()=>{},isConnected:async()=>!0}))))}),[er,ae]),s((()=>{if(!ae)return void v.connectors?.removeEmbeddedWalletConnectors();let e=b(ae),t=U(ae),r=O(ae);e&&t.length||v.connectors?.removeEmbeddedWalletConnectors(),r||v.connectors?.removeImportedWalletConnector(),v.connectors?er?(e&&v.connectors.addEmbeddedWalletConnectors({walletProxy:er,rootWallet:e,embeddedWallets:t,defaultChain:rr.defaultChain,appId:T.appId}),r&&v.connectors.addImportedWalletConnector(er,r.address,rr.defaultChain,T.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,ae]),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(j&&!t&&"loading"!==yr.status){fr({status:"loading"});try{let t=await e();if(t===br.current)return void fr({status:"done"});if(!t&&K)return br.current=t,await ca.logout(),fr({status:"done"}),void vt(_r,"customAuth","onUnauthenticated");if(!t)return br.current=t,void fr({status:"done"});v.startAuthFlow(new d(t));let{user:r,isNewUser:a}=await v.authenticate();if(!r)return await ca.logout(),fr({status:"error",error:new Pe("Failed to sync with custom auth provider")}),void vt(_r,"customAuth","onUnauthenticated");void 0!==a&&vt(_r,"login","onComplete",r,a,!1,"custom",null),br.current=t,vt(_r,"customAuth","onAuthenticated",{user:r}),fr({status:"done"}),ie(r||null),Mt(a||!1),G(!0),mr(!0)}catch(e){if(console.warn(e),await ca.logout(),vt(_r,"customAuth","onUnauthenticated"),"User already exists with provided custom JWT account."===e.message)return void fr({status:"initial"});vt(_r,"login","onError",e.privyErrorCode||Me.UNKNOWN_AUTH_ERROR),fr({status:"error",error:e})}}})()}),["initial"===yr.status,rr.customAuth?.enabled,rr.customAuth?.getCustomAccessToken,rr.customAuth?.isLoading,j,K]),s((()=>{wr&&er&&ae&&S(ae,rr.embeddedWallets.createOnLogin)&&(mr(!1),Qr(ae,X).catch(console.error))}),[wr&&er&&ae]),s((()=>{if(rr.externalWallets.solana.connectors)return rr.externalWallets.solana.connectors.onMount(),()=>rr.externalWallets.solana.connectors?.onUnmount()}),[rr.externalWallets.solana.connectors]),s((()=>{!j&&ar&&async function(){let e,t=Ur(),r=Or();(()=>{let e=new URLSearchParams(window.location.search).get("privy_token");if(!e)return;J.put(Q,e);let t=new URL(window.location.href);t.searchParams.delete("privy_token"),window.history.pushState({},"",t)})();let a=n();v.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}),v.connectors?.on("connectorInitialized",(()=>{e&&clearTimeout(e);let t=v.connectors.walletConnectors.length,r=v.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)})),v.connectors?.initialize().then((()=>{Gr()}));let i=await v.getAuthenticatedUser(),o=!!i;rr.legal.requireUsersAcceptTerms&&i&&!i.hasAcceptedTerms?(await v.logout(),da.setReadyToTrue(!0),vt(_r,"logout","onSuccess")):(rr.customAuth?.enabled||(G(!!i),i&&vt(_r,"login","onComplete",i,!1,!0,null,null),ie(i)),t?Cr.current=o?"link":"login":r&&!o?(Cr.current="login",sr({telegramAuthModalData:{seamlessAuth:!0}}),Nr(ft.TELEGRAM_AUTH_SCREEN)):da.setReadyToTrue(!!i))}()}),[v,lr,j,ar]),s((()=>{if(j){if(!ae||!ae.linkedAccounts.find((e=>"wallet"===e.type&&"privy"===e.walletClientType)))return void pr(!0);pr(!!oe.find((e=>"privy"===e.walletClientType)))}}),[j,ae,oe]);let Ur=()=>{let e=Ot();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&&Ge(e.provider)&&!e.popupFlow&&(new BroadcastChannel(ze).postMessage({type:"PRIVY_OAUTH_RESPONSE",stateCode:e.stateCode,authorizationCode:e.authorizationCode}),window.close()),!!e.inProgress&&!!e.withPrivyUi&&(v.startAuthFlow(new Dt(e)),Nr(ft.AWAITING_OAUTH_SCREEN),!0))},Or=()=>{let e=A();if(!e||!rr.loginMethods.telegram||!rr.loginConfig.telegramAuthConfiguration?.seamlessAuthEnabled)return;let t=new _;return v.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(v.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 xe("Unable to connect to wallet."),connector:null,connectRetry:_t}),a?.(null,r);Ht({status:"disconnected",connectedWallet:null,connectError:null,connector:e,connectRetry:_t}),e instanceof Ce&&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||ge(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:_t})));try{await(t?.switchChain(rr.defaultChain.id)),t&&(t.chainId=ne(re(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:_t}))),t&&vt(_r,"connectWallet","onSuccess",(e.chainType,t)),a?.(t,r)}catch(e){return e instanceof je?(console.warn(e.cause?e.cause:e.message),vt(_r,"connectWallet","onError",e.privyErrorCode||Me.GENERIC_CONNECT_WALLET_ERROR)):(console.warn(e),vt(_r,"connectWallet","onError",Me.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||!ge(e))return;let a=new y(e,v,t,r);v.startAuthFlow(a)},Kr=async(e,t)=>{if(null===e||!ve(e))return;let r=new f(e,v,t);v.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||fe()||Nr(ft.LOGIN_FAILED_SCREEN),!v.connectors)throw new Pe("Connector not initialized");kr(ft.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((()=>{j&&K&&null===ae&&v.getAuthenticatedUser().then(ie)}),[j,K,ae,v]);let zr=e=>{if(!K)throw vt(_r,"linkAccount","onError",Me.MUST_BE_AUTHENTICATED,{linkMethod:e}),new Pe("User must be authenticated before linking an account.")},qr=()=>{zr("siwe"),vr.current="siwe",Cr.current="link",kr(ft.LINK_WALLET_SCREEN)},$r=e=>{if(!K||!ae)return!1;if("privy"===e.walletClientType)return!0;for(let t of ae.linkedAccounts)if("wallet"===t.type&&t.address===e.address&&"privy"!==t.walletClientType)return!0;return!1},Yr=async e=>{let t;if(!v.connectors)throw new Pe("Connector not initialized");t="ethereum"===e.type?v.connectors.findWalletConnector(e.connectorType,e.walletClientType)||null:v.connectors.findSolanaWalletConnector(e.connectorType,e.walletClientType)||null,Ht((r=>({...r,connector:t,status:"connected",connectedWallet:e,connectError:null,connectRetry:_t}))),rr.captchaEnabled&&!K?(sr({captchaModalData:{callback:t=>ge(e)?Hr(e,t):Kr(e,t),userIntentRequired:!1,onSuccessNavigateTo:ft.AWAITING_CONNECTION,onErrorNavigateTo:ft.ERROR_SCREEN}}),Nr(ft.CAPTCHA_SCREEN)):(ge(e)?await Hr(e):await Kr(e),Nr(ft.AWAITING_CONNECTION))},Xr=()=>{se((e=>{let t=v.connectors?.wallets.filter(ge).map((e=>({...e,linked:$r(e),loginOrLink:async()=>{if(!await e.isConnected())throw new Pe("Wallet is not connected");if("embedded"===e.connectorType&&"privy"===e.walletClientType)throw new Pe("Cannot link or login with embedded wallet");Yr(e)},fund:async t=>{await da.fundWallet(e.address,t)},unlink:async()=>{if(!K)throw new Pe("User is not authenticated.");if("embedded"===e.connectorType&&"privy"===e.walletClientType)throw new Pe("Cannot unlink an embedded wallet");ie(await v.unlinkEthereumWallet(e.address))}})))||[];return we(e,t)?e:t})),Te((e=>{let t=(v.connectors?.wallets??[]).concat(De).filter(ve).map((e=>({...e,linked:$r(e),loginOrLink:async()=>{if(!await e.isConnected())throw new Pe("Wallet is not connected");if("embedded"===e.connectorType&&"privy"===e.walletClientType)throw new Pe("Cannot link or login with embedded wallet");Yr(e)},fund:async()=>{throw new Pe("'fund' is deprecated for Solana wallets - use 'fundWallet' instead")},unlink:async()=>{if(!K)throw new Pe("User is not authenticated.");if("embedded"===e.connectorType&&"privy"===e.walletClientType)throw new Pe("Cannot unlink an embedded wallet");ie(await v.unlinkSolanaWallet(e.address))}})));return we(e,t)?e:t}))};s((()=>{Xr()}),[ae?.linkedAccounts,K,j,De]),s((()=>{if(j){if(!v.connectors)throw new Pe("Connector not initialized");Xr(),v.connectors.on("walletsUpdated",Xr)}}),[j]),s((()=>{[...rr.loginMethodsAndOrder?.primary??[],...rr.loginMethodsAndOrder?.overflow??[]].filter((e=>e.startsWith("privy:"))).forEach((e=>v.getCrossAppProviderDetails(e.replace("privy:",""))))}),[!!v]),s((()=>{let e;if(!oe[0])return;let t=oe[0],r=pt.current.find((e=>e.address===t.address));if(e="privy"===t.walletClientType?ae?.linkedAccounts.find((e=>"wallet"===e.type&&e.address===t.address&&"privy"===e.walletClientType)):ae?.linkedAccounts.find((e=>"wallet"===e.type&&e.address===t.address&&"privy"!==e.walletClientType)),!r&&e){let t=Object.assign({},ae);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},ie(t)}pt.current=oe}),[oe]);let Qr=async(e,t,r)=>{let a=b(e),n=R(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 vt(_r,"createWallet","onError",Me.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 vt(_r,"createWallet","onError",Me.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=(P(e)?.walletIndex??0)+1,{entropyId:r,entropyIdVerifier:a}=C(k(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=>{vt(_r,"createWallet","onSuccess",t),e(t)},onFailure:e=>{vt(_r,"createWallet","onError",Me.UNKNOWN_EMBEDDED_WALLET_ERROR),t(e)},callAuthOnSuccessOnClose:!1}}),kr(ft.EMBEDDED_WALLET_ON_ACCOUNT_CREATE_SCREEN)})),Zr=async(e,t,r,a,n)=>{if(r<0)throw vt(_r,"createWallet","onError",Me.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 vt(_r,"createWallet","onError",Me.UNKNOWN_EMBEDDED_WALLET_ERROR),Error("Failed to connect to wallet proxy");if(!i||!o||rr.embeddedWallets?.requireUserOwnedRecoveryOnCreate){if(0==r)return Jr();throw vt(_r,"createWallet","onError",Me.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 vt(_r,"createWallet","onError",Me.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=U(e).find((e=>e.walletIndex===r));if(t)return t;let{entropyId:n,entropyIdVerifier:s}=C(k(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=W(e).find((e=>e.walletIndex===a));if(i)return i;if(0===a)await t.createSolana({accessToken:r,ethereumAddress:n?.address});else{let n=k(e);if(!n)throw vt(_r,"createWallet","onError",Me.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}=C(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?U(r):W(r)).find((t=>t.walletIndex===e));if(!a)throw vt(_r,"createWallet","onError",Me.UNKNOWN_EMBEDDED_WALLET_ERROR),Error("Failed to create wallet");return vt(_r,"createWallet","onSuccess",a),a},ra=(e,t,a,n)=>new Promise((async(i,o)=>{let{requesterAppId:s}=t||{};if(!K||!ae)return vt(_r,"sendTransaction","onError",Me.MUST_BE_AUTHENTICATED),void o(Error("User must be authenticated before signing with a Privy wallet"));let l=n??b(ae)?.address;if(!l)throw new Pe("User must have an embedded wallet to send a transaction.");let{signingWallet:c,rootWallet:d}=D(ae,l);if(!d||!c)return vt(_r,"sendTransaction","onError",Me.EMBEDDED_WALLET_NOT_FOUND),void o(Error("Must have a Privy wallet before signing"));ir(!0);let u=ua.wallets.find((e=>"privy"===e.walletClientType&&r(e.address)===r(c.address))),h=await(u?.getEthereumProvider());if(!u||!h)throw new Pe(`Cannot sendTransaction before embedded wallet ${c.address} is connected`);let p=e.chainId?Number(e.chainId):He(u.chainId);(e=>{if(!rr.chains.map((e=>e.id)).includes(e))throw new xe(`Chain ID ${e} is not supported. It must be added to the config.supportedChains property of the PrivyProvider.`,Me.UNSUPPORTED_CHAIN_ID)})(p);let w=Object.assign({},e,{chainId:p});if(Wr({showWalletUIs:t?.showWalletUIs}))(async()=>{let e=await Br();if(!e||!er)return vt(_r,"sendTransaction","onError",Me.EMBEDDED_WALLET_NOT_FOUND),void o(Error("Must have valid access token and Privy wallet to send transaction"));try{if(!await da.recoverPrimaryWallet())return vt(_r,"sendTransaction","onError",Me.UNKNOWN_CONNECT_WALLET_ERROR),void o(Error("Unable to connect to wallet"));let r=ee(w.chainId,rr.chains,rr.rpcConfig,{appId:T.appId}),a=await St(c.address,w,r);if(Wr({showWalletUIs:t?.showWalletUIs})){let{totalGasEstimate:e}=await Rt(a,r),{hasSufficientFunds:t}=await Se(c.address,a,e,r);if(!t)throw new me(new ye("Wallet has insufficient funds for this transaction.",Pt.E32603_DEFAULT_INTERNAL_ERROR.eipCode))}let{entropyId:n,entropyIdVerifier:l}=C(d),u=await Re({accessToken:e,entropyId:n,entropyIdVerifier:l,transactingWallet:c,walletProxy:er,transactionRequest:a,provider:r,requesterAppId:s});vt(_r,"sendTransaction","onSuccess",u),i(u)}catch(e){vt(_r,"sendTransaction","onError",Me.TRANSACTION_FAILURE),o(e)}})();else{let{entropyId:e,entropyIdVerifier:r}=C(d),n={entropyId:e,entropyIdVerifier:r,onCompleteNavigateTo:ft.EMBEDDED_WALLET_SEND_TRANSACTION_SCREEN,onFailure:e=>{vt(_r,"sendTransaction","onError",Me.UNKNOWN_CONNECT_WALLET_ERROR),o(e)}},l=nt(rr)?Ut({address:c.address,appConfig:rr,fundWalletConfig:a,methodScreen:ft.FUNDING_METHOD_SELECTION_SCREEN,chainIdOverride:w.chainId,comingFromSendTransactionScreen:!0}):void 0;sr({connectWallet:n,sendTransaction:{transactionRequest:w,transactingWallet:c,entropyId:e,entropyIdVerifier:r,onSuccess:e=>{vt(_r,"sendTransaction","onSuccess",e),i(e)},onFailure:e=>{vt(_r,"sendTransaction","onError",Me.TRANSACTION_FAILURE),o(e)},uiOptions:t||{},fundWalletConfig:a,requesterAppId:s},funding:l}),kr(ft.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(!K||!ae)return vt(_r,"sendSolanaTransaction","onError",Me.MUST_BE_AUTHENTICATED),void s(new Pe("User must be authenticated before signing with a Privy wallet",Me.MUST_BE_AUTHENTICATED));let c=i?ae.linkedAccounts.find((e=>"wallet"===e.type&&e.address===i.address)):R(ae);if(!c)return vt(_r,"sendSolanaTransaction","onError",Me.EMBEDDED_WALLET_NOT_FOUND),void s(new Pe("Must have a Privy wallet before signing",Me.EMBEDDED_WALLET_NOT_FOUND));ir(!0);let d=R(ae);if(!await da.recoverPrimaryWallet().catch((()=>!1))||!d)throw vt(_r,"sendSolanaTransaction","onError",Me.EMBEDDED_WALLET_NOT_FOUND),new Pe(`Cannot sendSolanaTransaction before embedded wallet ${c.address} is connected`,Me.EMBEDDED_WALLET_NOT_FOUND);if(Wr({showWalletUIs:n?.showWalletUIs}))(async()=>{let a=await Br();if(!a||!er)return vt(_r,"sendSolanaTransaction","onError",Me.EMBEDDED_WALLET_NOT_FOUND),void s(new Pe("Must have valid access token and Privy wallet to send transaction",Me.EMBEDDED_WALLET_NOT_FOUND));try{if(!await da.recoverPrimaryWallet())return vt(_r,"sendSolanaTransaction","onError",Me.UNKNOWN_CONNECT_WALLET_ERROR),void s(new Pe("Unable to connect to wallet",Me.UNKNOWN_CONNECT_WALLET_ERROR));if(Wr({showWalletUIs:n?.showWalletUIs})){let{instructions:r}=await ct(e,t);r.every((e=>e.hasFunds))||(vt(_r,"sendSolanaTransaction","onError",Me.INSUFFICIENT_BALANCE),s(new Pe("Solana wallet has insufficient funds for this transaction.",Me.INSUFFICIENT_BALANCE)))}let{entropyId:i,entropyIdVerifier:l}=N(ae),{signature:d,receipt:u}=await Ve({accessToken:a,tx:e,connection:t,walletProxy:er,transactionOptions:r,entropyId:i,entropyIdVerifier:l,transactingWalletAddress:c.address,transactingWalletIndex:c.walletIndex??0}),h=dt(d,u);vt(_r,"sendSolanaTransaction","onSuccess",h),o(h)}catch(e){vt(_r,"sendSolanaTransaction","onError",Me.TRANSACTION_FAILURE),s(e)}})();else{let{entropyId:i,entropyIdVerifier:u}=C(d),h={entropyId:i,entropyIdVerifier:u,onCompleteNavigateTo:ft.EMBEDDED_WALLET_SEND_SOLANA_TRANSACTION_SCREEN,onFailure:e=>{vt(_r,"sendSolanaTransaction","onError",Me.UNKNOWN_CONNECT_WALLET_ERROR),s(e)}},p=nt(rr)?bt({address:c.address,appConfig:rr,methodScreen:ft.FUNDING_METHOD_SELECTION_SCREEN,fundWalletConfig:a,comingFromSendTransactionScreen:!0}):void 0;sr({connectWallet:h,sendSolanaTransaction:{transactionRequest:e,connection:t,transactionOptions:r,transactingWallet:c,onSuccess:e=>{vt(_r,"sendSolanaTransaction","onSuccess",e),o(e)},onFailure:e=>{vt(_r,"sendSolanaTransaction","onError",Me.TRANSACTION_FAILURE),s(e)},uiOptions:n||{},requesterAppId:l},funding:p}),kr(ft.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=ae?.linkedAccounts.filter((t=>t.type===e)).length??0,{displayName:r,loginMethod:a}=ut(e);if("passkey"===e&&t>=5||"passkey"!==e&&t>=1)throw vt(_r,"linkAccount","onError",Me.CANNOT_LINK_MORE_OF_TYPE,{linkMethod:a}),new Pe(`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(!K||!ae)throw vt(_r,r,"onError",Me.MUST_BE_AUTHENTICATED),Error("User must be authenticated before adding recovery method to Privy wallet");let a=k(ae);if(!a||!er)throw vt(_r,r,"onError",Me.EMBEDDED_WALLET_NOT_FOUND),Error("Must have a Privy wallet to add a recovery method");try{await na()}catch(e){throw vt(_r,r,"onError",Me.MISSING_MFA_CREDENTIALS),e}return new Promise(((n,i)=>{ir(!0);let o={onSuccess:e=>{vt(_r,r,"onSuccess","user-passcode",e),n(e)},onFailure:e=>{vt(_r,r,"onError",Me.USER_EXITED_SET_PASSWORD_FLOW),i(e)},callAuthOnSuccessOnClose:!1},s="user-passcode"===a.recoveryMethod,l=tt({walletAction:"update",availableRecoveryMethods:rr.embeddedWallets.userOwnedRecoveryOptions,legacySetWalletPasswordFlow:t,isResettingPassword:s,showAutomaticRecovery:e}),{entropyId:c,entropyIdVerifier:d}=C(a);sr({setWalletPassword:o,recoverWallet:{entropyId:c,entropyIdVerifier:d,onFailure:i},createWallet:o,connectWallet:{onCompleteNavigateTo:l,shouldForceMFA:!1,entropyId:c,entropyIdVerifier:d,onFailure:e=>{vt(_r,r,"onError",Me.UNKNOWN_CONNECT_WALLET_ERROR),i(e)}},recoverySelection:{isInAccountCreateFlow:!1,isResettingPassword:s}}),kr(ft.EMBEDDED_WALLET_CONNECTING_SCREEN)}))}async function la({appId:e,action:t}){let r=await Br();if("link"===t&&!r)throw vt(_r,"linkAccount","onError",Me.MUST_BE_AUTHENTICATED,{linkMethod:`privy:${e}`}),new Pe("User must be authenticated before linking an account.");if("login"===t&&r)throw vt(_r,"login","onError",Me.UNKNOWN_AUTH_ERROR),new Pe("Attempted to log in, but user is already logged in. Use a `link` helper instead.");vr.current=`privy:${e}`,Cr.current=t;let a=ot();return v.createAnalyticsEvent({eventName:"cross_app_auth_started",payload:{providerAppId:e}}),new Promise((async(r,n)=>{let{name:i,logoUrl:o}=await Ye({api:v.api,providerAppId:e,requesterAppId:rr.id});sr({crossAppAuth:{appId:e,name:i,logoUrl:o,action:t,popup:a,onSuccess:r,onError:n}}),Nr(ft.CROSS_APP_AUTH_SCREEN)}))}let ca={ready:j,authenticated:K,user:ae,walletConnectors:v.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(K?ft.CONNECT_ONLY_AUTHENTICATED_SCREEN:ft.CONNECT_ONLY_LANDING_SCREEN)},linkWallet:qr,startCrossAppAuthFlow:la,linkEmail:()=>{zr("email"),oa("email"),vr.current="email",Cr.current="link",kr(ft.LINK_EMAIL_SCREEN)},linkPhone:()=>{zr("sms"),oa("phone"),vr.current="sms",Cr.current="link",kr(ft.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(ft.LINK_PASSKEY_SCREEN)},linkTelegram:async()=>{zr("telegram"),oa("telegram"),Cr.current="link",vr.current="telegram",await da.initLoginWithTelegram(),kr(ft.TELEGRAM_AUTH_SCREEN)},linkFarcaster:async()=>{zr("farcaster"),oa("farcaster"),await da.initLoginWithFarcaster(),Cr.current="link",vr.current="farcaster",kr(ft.AWAITING_FARCASTER_CONNECTION)},updateEmail:()=>{if(zr("email"),!ae?.email)throw new Pe("User does not have an email linked to their account.");Cr.current="update",vr.current="email",kr(ft.UPDATE_EMAIL_SCREEN)},updatePhone:()=>{if(zr("sms"),!ae?.phone)throw new Pe("User does not have a phone number linked to their account.");Cr.current="update",vr.current="sms",kr(ft.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(!j){let e=await new Promise((e=>{cr((t=>e.bind(t)))}));if(cr(null),e)return void console.warn(t)}!ae||ae.isGuest?(Cr.current="login",sr({login:e}),Nr(ft.LANDING)):console.warn(t)},connectOrCreateWallet:async()=>{j||(await new Promise((e=>{cr((()=>e))})),cr(null)),K?console.warn("User must be unauthenticated to `connectOrCreateWallet`"):(Cr.current="login",Nr(ft.CONNECT_OR_CREATE))},logout:async()=>{if(Cr.current=null,vr.current=null,ae&&v.clearProviderAcccessTokens(ae),xt(null),await v.logout(),ae&&er)try{await er.clearMfa({userId:ae.id})}catch(e){}ie(null),G(!1),vt(_r,"logout","onSuccess"),x(!1),J.del(H),J.del(z(rr.id))},getAccessToken:()=>v.getCustomerAccessToken(),getEthereumProvider:()=>{if(!ae||!ae.wallet)return new Ee;let e=oe.find((e=>ae.wallet&&e.address===ae.wallet.address)),t=v.connectors?.walletConnectors.find((t=>t.wallets.find((t=>t.address===e?.address))));return e&&t?t.proxyProvider:new Ee},getEthersProvider:()=>{if(!ae||!ae.wallet)return new a(new _e(new Ee));let e=oe.find((e=>ae.wallet&&e.address===ae.wallet.address)),t=v.connectors?.walletConnectors.find((t=>t.wallets.find((t=>t.address===e?.address))));return new a(new _e(e&&t?t.proxyProvider:new Ee))},getWeb3jsProvider:()=>{if(!ae||!ae.wallet)return new Ae(new Ee);let e=oe.find((e=>ae.wallet&&e.address===ae.wallet.address)),t=v.connectors?.walletConnectors.find((t=>t.wallets.find((t=>t.address===e?.address))));return new Ae(e&&t?t.proxyProvider:new Ee)},unlinkWallet:async e=>{let t;return ie(t=e.startsWith("0x")?await v.unlinkEthereumWallet(e):await v.unlinkSolanaWallet(e)),t},unlinkEmail:async e=>{let t=await v.unlinkEmail(e);return ie(t),t},unlinkPhone:async e=>{let t=await v.unlinkPhone(e);return ie(t),t},unlinkGoogle:async e=>{let t=await v.unlinkOAuth("google",e);return ie(t),t},unlinkTwitter:async e=>{let t=await v.unlinkOAuth("twitter",e);return ie(t),t},unlinkDiscord:async e=>{let t=await v.unlinkOAuth("discord",e);return ie(t),t},unlinkGithub:async e=>{let t=await v.unlinkOAuth("github",e);return ie(t),t},unlinkSpotify:async e=>{let t=await v.unlinkOAuth("spotify",e);return ie(t),t},unlinkInstagram:async e=>{let t=await v.unlinkOAuth("instagram",e);return ie(t),t},unlinkTiktok:async e=>{let t=await v.unlinkOAuth("tiktok",e);return ie(t),t},unlinkLinkedIn:async e=>{let t=await v.unlinkOAuth("linkedin",e);return ie(t),t},unlinkApple:async e=>{let t=await v.unlinkOAuth("apple",e);return ie(t),t},unlinkFarcaster:async e=>{let t=await v.unlinkFarcaster(e);return ie(t),t},unlinkTelegram:async e=>{let t=await v.unlinkTelegram(e);return ie(t),t},unlinkPasskey:async e=>{let t=await v.unlinkPasskey(e);return ie(t),t},unlinkCrossAppAccount:async({subject:e})=>{let t=ae?.linkedAccounts.find((t=>"cross_app"===t.type&&t.subject===e))?.providerApp;if(!t)throw new Pe("Invalid subject");v.storeProviderAccessToken(t.id,null);let r=await v.unlinkOAuth(`privy:${t.id}`,e);return ie(r),r},setActiveWallet:async e=>{let t=oe.find((t=>r(t.address)===r(e))),a=ae?.linkedAccounts.find((t=>"wallet"===t.type&&r(t.address)===r(e)));if(t&&await t.isConnected())if(t.linked){let e=Object.assign({},ae);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},ie(e)}else t.loginOrLink();else sr({externalConnectWallet:{suggestedAddress:e}}),qr()},forkSession:()=>v.forkSession(),createWallet:async e=>{if(e&&"target"in e&&e&&(e=void 0),!K||!ae)throw vt(_r,"createWallet","onError",Me.MUST_BE_AUTHENTICATED),Error("User must be authenticated before creating a Privy wallet");return Qr(ae,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(!K||!ae)return vt(_r,"signMessage","onError",Me.MUST_BE_AUTHENTICATED),void n(Error("User must be authenticated before signing with a Privy wallet"));let o=r??b(ae)?.address;if(!o)throw new Pe("User must have an embedded wallet to sign a message.");let{signingWallet:s,rootWallet:l}=D(ae,o);if(!s||!l)return vt(_r,"signMessage","onError",Me.EMBEDDED_WALLET_NOT_FOUND),void n(Error("Must have a Privy wallet before signing"));if("string"!=typeof e||e.length<1)return vt(_r,"signMessage","onError",Me.INVALID_MESSAGE),void n(Error("Message must be a non-empty string"));ir(!0);let c=async()=>{if(!K)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");v.createAnalyticsEvent({eventName:"embedded_wallet_sign_message_started",payload:{walletAddress:s.address,requesterAppId:i}});let{entropyId:r,entropyIdVerifier:a}=C(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 v.createAnalyticsEvent({eventName:"embedded_wallet_sign_message_completed",payload:{walletAddress:s.address,requesterAppId:i}}),o};if(Wr({showWalletUIs:t?.showWalletUIs}))try{let e=await c();vt(_r,"signMessage","onSuccess",e),a(e)}catch(e){vt(_r,"signMessage","onError",Me.UNABLE_TO_SIGN),n(e??new me("Unable to sign message"))}else{let{entropyId:r,entropyIdVerifier:i}=C(l);sr({signMessage:{method:"personal_sign",data:e,confirmAndSign:c,onSuccess:e=>{vt(_r,"signMessage","onSuccess",e),a(e)},onFailure:e=>{vt(_r,"signMessage","onError",Me.UNABLE_TO_SIGN),n(e)},uiOptions:t||{}},connectWallet:{entropyId:r,entropyIdVerifier:i,onCompleteNavigateTo:ft.EMBEDDED_WALLET_SIGN_REQUEST_SCREEN,onFailure:e=>{vt(_r,"signMessage","onError",Me.UNKNOWN_CONNECT_WALLET_ERROR),n(e)}}}),kr(ft.EMBEDDED_WALLET_CONNECTING_SCREEN)}})),signTypedData:(e,t,r)=>new Promise((async(a,n)=>{let{requesterAppId:i}=t||{};if(!K||!ae)return vt(_r,"signTypedData","onError",Me.MUST_BE_AUTHENTICATED),void n(Error("User must be authenticated before signing with a Privy wallet"));let o=r??b(ae)?.address;if(!o)throw new Pe("User must have an embedded wallet to sign a message.");let{signingWallet:s,rootWallet:l}=D(ae,o);if(!l||!s)return vt(_r,"signTypedData","onError",Me.EMBEDDED_WALLET_NOT_FOUND),void n(Error("Must have a Privy wallet before signing"));ir(!0);let c=te(e),d=async()=>{if(!K)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");v.createAnalyticsEvent({eventName:"embedded_wallet_sign_typed_data_started",payload:{walletAddress:s.address,requesterAppId:i}});let{entropyId:t,entropyIdVerifier:r}=C(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 v.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();vt(_r,"signTypedData","onSuccess",e),a(e)}catch(e){vt(_r,"signTypedData","onError",Me.UNABLE_TO_SIGN),n(e??new me("Unable to sign message"))}else{let{entropyId:e,entropyIdVerifier:r}=C(l);sr({signMessage:{method:"eth_signTypedData_v4",data:c,confirmAndSign:d,onSuccess:e=>{vt(_r,"signTypedData","onSuccess",e),a(e)},onFailure:e=>{vt(_r,"signTypedData","onError",Me.UNABLE_TO_SIGN),n(e)},uiOptions:t||{}},connectWallet:{entropyId:e,entropyIdVerifier:r,onCompleteNavigateTo:ft.EMBEDDED_WALLET_SIGN_REQUEST_SCREEN,onFailure:e=>{vt(_r,"signMessage","onError",Me.UNKNOWN_CONNECT_WALLET_ERROR),n(e)}}}),kr(ft.EMBEDDED_WALLET_CONNECTING_SCREEN)}})),sendTransaction:async(e,t,r,a)=>{let n=await ra(e,t,r,a);return Oe(await n.wait())},sendSolanaTransaction:async(e,t,r,a,n,i)=>{let o=i?ue.find((({address:e})=>e===i)):ue.slice().sort(((e,t)=>(e.walletIndex??0)-(t.walletIndex??0)))[0];if(!o)throw vt(_r,"sendSolanaTransaction","onError",Me.EMBEDDED_WALLET_NOT_FOUND),new Pe("Embedded wallet not found",Me.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(!K||!ae)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??b(ae)?.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}=D(ae,a);if(!n||!i)return void r(Error("Must have a Privy wallet before exporting"));ir(!0);let{entropyId:o,entropyIdVerifier:s}=C(i),l={entropyId:o,entropyIdVerifier:s,onCompleteNavigateTo:ft.EMBEDDED_WALLET_KEY_EXPORT_SCREEN,onFailure:r,shouldForceMFA:!0};sr(or),await Br()&&er?er?(sr({keyExport:{appId:T.appId,appClientId:T.clientId,origin:v.apiUrl,walletToExport:n,primaryWallet:i,onSuccess:t,onFailure:r},connectWallet:l}),kr(ft.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 v.initMfaSmsVerification();case"passkey":return await v.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 Pe("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 Pe("Invalid authenticator response");let r=await import("@simplewebauthn/browser"),a=ht(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 Pe("Unsupported MFA method")),new Pe(`Unsupported MFA method: ${e}`)}},cancel(){gr.current?.reject(new Pe("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(ft.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}),ie(await v.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}),ie(await v.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}),ie(await v.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}),ie(await v.getAuthenticatedUser())},requestFarcasterSignerFromWarpcast:async()=>{let e=await Br(),t=ae?.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(!ae?.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&&ie(await v.getAuthenticatedUser()||ae||null),sr({farcasterSigner:r}),kr(ft.AWAITING_FARCASTER_SIGNER)},getFarcasterSignerPublicKey:async()=>{let e,t=await Br(),r=ae?.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(!ae?.farcaster?.fid)throw Error("Must have Farcaster account to use Farcaster signers");if(!await da.recoverPrimaryWallet())throw Error("Unable to connect to wallet");if(!ae.farcaster?.signerPublicKey)throw Error("Must have a Farcaster signer public key to sign");return e=ae.farcaster.signerPublicKey.slice(2),Uint8Array.from(e.match(/.{1,2}/g).map((e=>parseInt(e,16))))},signFarcasterMessage:async e=>{let t=await Br(),r=ae?.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(!ae?.farcaster?.fid)throw Error("Must have Farcaster account to use Farcaster signers");if(!await da.recoverPrimaryWallet())throw Error("Unable to connect to wallet");if(!ae.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(ae.farcaster.fid),relyingParty:window.origin});return new Uint8Array(a.base64URLStringToBuffer(n.signature))},createGuestAccount:async()=>{if(ae&&!ae.isGuest)throw Error("User cannot already be authenticated to create a guest account");return ae?.isGuest?ae:da.loginWithGuestAccountFlow()},signMessageWithCrossAppWallet(e,{address:t}){let r=ae?.linkedAccounts.some((e=>"cross_app"===e.type&&e.smartWallets.some((e=>e.address===t))));return Qe({user:ae,client:v,address:t,requesterAppId:rr.id,request:{method:r?"privy_signSmartWalletMessage":"personal_sign",params:[e,t]},reconnect:la})},signTypedDataWithCrossAppWallet(e,{address:t}){let r=ae?.linkedAccounts.some((e=>"cross_app"===e.type&&e.smartWallets.some((e=>e.address===t)))),a=te(e);return Qe({user:ae,client:v,address:t,requesterAppId:rr.id,request:{method:r?"privy_signSmartWalletTypedData":"eth_signTypedData_v4",params:[t,a]},reconnect:la})},sendTransactionWithCrossAppWallet(e,{address:t}){let r=ae?.linkedAccounts.some((e=>"cross_app"===e.type&&e.smartWallets.some((e=>e.address===t))));return Qe({user:ae,client:v,address:t,requesterAppId:rr.id,request:{method:r?"privy_sendSmartWalletTx":"eth_sendTransaction",params:[e]},reconnect:la})},isModalOpen:F,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:G,setUser:ie,isNewUserThisSession:Lt,pendingTransaction:null,walletConnectionStatus:Vt,connectors:v.connectors?.walletConnectors??[],solanaWallets:ue,rpcConfig:rr.rpcConfig,chains:rr.chains,appId:T.appId,showFiatPrices:"native-token"!==rr.embeddedWallets.priceDisplay.primary,clientAnalyticsId:v.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:()=>v.authFlow,getAuthMeta:()=>v.authFlow?.meta,client:v,closePrivyModal:async(e={shouldCallAuthOnSuccess:!0,isSuccess:!1})=>{let t,r=j&&K&&ae;r&&vr.current&&(t=ia(ae)),"login"===Cr.current?e.shouldCallAuthOnSuccess&&r&&vr.current?(vt(_r,"login","onComplete",ae,Lt,!1,vr.current,t??null),T.onSuccess?.(ae,Lt)):vt(_r,"login","onError",Me.USER_EXITED_AUTH_FLOW):"link"===Cr.current&&t?e.isSuccess&&r&&vr.current?vt(_r,"linkAccount","onSuccess",ae,vr.current,t):vr.current&&vt(_r,"linkAccount","onError",Me.USER_EXITED_LINK_FLOW,{linkMethod:vr.current}):"update"===Cr.current&&t&&(e.isSuccess&&r&&vr.current?vt(_r,"update","onSuccess",ae,vr.current,t):vr.current&&vt(_r,"update","onError",Me.USER_EXITED_UPDATE_FLOW,{linkMethod:vr.current}));let a=Ft&&rt.includes(Ft),n=Ft===ft.ERROR_SCREEN&&or.errorModalData&&rt.includes(or.errorModalData.previousScreen);if((a||n)&&or.funding){let e,t=at[Ft]??null;if("solana"===or.funding.chainType){let r=I(mt);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")}vt(_r,"fundSolanaWallet","onUserExited",{address:or.funding.address,cluster:or.funding.cluster,fundingMethod:t,balance:e})}else{let r=ee(or.funding.chain.id,rr.chains,rr.rpcConfig,{appId:T.appId});try{e=(await r.getBalance(or.funding.address)).toBigInt()}catch{console.error("Unable to pull wallet balance")}vt(_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),x(!1),setTimeout((()=>{v.authFlow=void 0}),200),v.createAnalyticsEvent({eventName:"modal_closed"})},solanaSignMessage:({message:e,address:t})=>new Promise((async(r,a)=>{if(!K||!ae)return vt(_r,"signMessage","onError",Me.MUST_BE_AUTHENTICATED),void a(Error("User must be authenticated before signing with a Privy wallet"));let n=t??R(ae)?.address;if(!n)throw new Pe("User must have an embedded wallet to sign a message.");let{signingWallet:i}=L(ae,n);if(!i)return vt(_r,"signMessage","onError",Me.EMBEDDED_WALLET_NOT_FOUND),void a(Error("Must have a Privy wallet before signing"));if("string"!=typeof e||e.length<1)return vt(_r,"signMessage","onError",Me.INVALID_MESSAGE),void a(Error("Message must be a non-empty string"));ir(!0);let o=async()=>{if(!K)throw Error("User must be authenticated before signing with a Privy wallet");let t=await v.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}=N(ae),{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}=N(ae);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:ft.EMBEDDED_WALLET_SIGN_REQUEST_SCREEN,onFailure:e=>{vt(_r,"signMessage","onError",Me.UNKNOWN_CONNECT_WALLET_ERROR),a(e)}}}),Nr(ft.EMBEDDED_WALLET_CONNECTING_SCREEN)}})),openPrivyModal:kr,connectWallet:Vr,initLoginWithWallet:async(e,t,r)=>{ge(e)?(vr.current="siwe",Hr(e,t,r)):(vr.current="siws",Kr(e,t))},loginWithWallet:async()=>{let e,t,r;if(!j)throw new Fe;if(v.authFlow instanceof y?e="siwe":v.authFlow instanceof f&&(e="siws"),!e)throw new Pe("Must initialize SIWE/SIWS flow first.");if(null!==await v.getAccessToken())try{({user:t}=await v.link()),vr.current=e}catch(t){throw vt(_r,"linkAccount","onError",t.privyErrorCode||Me.FAILED_TO_LINK_ACCOUNT,{linkMethod:e}),t}else try{({user:t,isNewUser:r}=await v.authenticate()),vr.current=e}catch(e){throw vt(_r,"login","onError",e.privyErrorCode||Me.GENERIC_CONNECT_WALLET_ERROR),e}ie(t||ae||null),Mt(r||!1),G(!0)},delegateWallet:async({address:e,chainType:t})=>new Promise((async(r,a)=>{let n=await Br();if(!K||!ae||!n)throw new Pe("User must be authenticated and have an embedded wallet to delegate actions.");if("solana"!==t&&"ethereum"!==t)throw new Pe("Only Solana and Ethereum embedded wallets are supported for delegation and revocation.");let i=da.walletProxy??await da.initializeWalletProxy(15e3);if(!i)throw new Pe("Wallet proxy not initialized.");if(We({address:e,chainType:t,user:ae}))return r();let o=ke({address:e,user:ae}),s=Ne({address:e,user:ae});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(ft.EMBEDDED_WALLET_DELEGATED_ACTIONS_CONSENT_SCREEN)})),revokeDelegatedWallets:async()=>new Promise((async(e,t)=>{if(!K||!ae)throw new Pe("User must be authenticated and have an embedded wallet to revoke a delegated wallet.");if(0===be(ae).length)throw new Pe("User has no delegated wallets to revoke.");sr({delegatedActions:{revoke:{onRevoke:async()=>{await v.revokeDelegatedWallet(),await da.refreshUser()},onSuccess:async()=>{e()},onError:async e=>{t(e)}}}}),kr(ft.EMBEDDED_WALLET_DELEGATED_ACTIONS_REVOKE_SCREEN)})),initLoginWithFarcaster:async(e,t)=>{let r=new p(e,t);v.startAuthFlow(r);try{vr.current="farcaster",await r.initializeFarcasterConnect()}catch(e){throw"login"===Cr.current?vt(_r,"login","onError",e.privyErrorCode||Me.UNKNOWN_AUTH_ERROR):"link"===Cr.current&&vt(_r,"linkAccount","onError",e.privyErrorCode||Me.UNKNOWN_AUTH_ERROR,{linkMethod:"farcaster"}),e}},loginWithFarcaster:async()=>{let e,t;if(!j)throw new Fe;if(!(v.authFlow instanceof p))throw new Pe("Must initialize Farcaster flow first.");if(null!==await v.getAccessToken())try{({user:e}=await v.link()),vr.current="farcaster"}catch(e){throw vt(_r,"linkAccount","onError",e.privyErrorCode||Me.FAILED_TO_LINK_ACCOUNT,{linkMethod:"farcaster"}),e}else try{({user:e,isNewUser:t}=await v.authenticate()),vr.current="farcaster"}catch(e){throw vt(_r,"login","onError",e.privyErrorCode||Me.UNKNOWN_AUTH_ERROR),e}ie(e||null),Mt(t||!1),G(!0)},async loginWithGuestAccountFlow(){let e=new w(this.appId);v.startAuthFlow(e);try{Cr.current="login",vr.current="guest";let{user:e,isNewUser:t}=await v.authenticate();if(t=t||!1,!e)throw new Pe("Unable to authenticate guest account");if(S(e,rr.embeddedWallets.createOnLogin))try{await Qr(e,15e3),e=await da.refreshUser()}catch(t){ie(e),console.warn("Unable to create embedded wallet for guest account")}else ie(e);return Mt(t),G(!0),vt(_r,"login","onComplete",e,t,!1,"guest",null),e}catch(e){throw vt(_r,"login","onError",e.privyErrorCode||Me.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 qe({api:v.api,appId:e});if(!n)throw v.createAnalyticsEvent({eventName:"cross_app_auth_error",payload:{error:"Unable to open cross-app auth popup",appId:e}}),new Pe("No authorization URL returned for cross-app auth.");try{let s=await Xe({url:n,popup:t,provider:a}),l=s.stateCode,c=s.authorizationCode;if(l!==i)throw v.createAnalyticsEvent({eventName:"possible_phishing_attempt",payload:{provider:a,storedStateCode:i??"",returnedStateCode:l??""}}),new Pe("Unexpected auth flow. This may be a phishing attempt.",void 0,Me.OAUTH_UNEXPECTED);let d=await $e({appId:e,codeVerifier:o,stateCode:l,authorizationCode:c,action:r,client:v});d&&v.storeProviderAccessToken(e,d);let u=await da.refreshUser();if(!u)throw new Pe("Unable to update user");return v.createAnalyticsEvent({eventName:"cross_app_auth_completed",payload:{providerAppId:e}}),u}catch(e){throw v.createAnalyticsEvent({eventName:"cross_app_auth_error",payload:{error:e.toString(),provider:a}}),e}},async initLoginWithOAuth(e,t,r){if(vr.current=e,!Z())return void Nr(ft.IN_APP_BROWSER_LOGIN_NOT_POSSIBLE);if("google"===e&&it(window.navigator.userAgent))return void Nr(ft.IN_APP_BROWSER_LOGIN_NOT_POSSIBLE);"twitter"===e&&window.opener&&window.opener.postMessage({type:Ke},"*"),J.del(q),J.del($);let a=new Dt({provider:e,disableSignup:!!r,withPrivyUi:!0});t&&a.addCaptchaToken(t),v.startAuthFlow(a);let n=await v.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(!j)throw new Fe;vr.current="telegram";let r=new _(e,t);v.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 Pe("Telegram auth failed or was canceled by the client")))):t(new Pe("Telegram was not initialized")):t(new Pe("Telegram Auth configuration is not loaded"))))},async loginWithTelegram(e){let t,r;if(!(v.authFlow instanceof _))throw new Pe("Must initialize Telegram flow before calling loginWithTelegram");if(v.authFlow.meta.captchaToken||=e,"login"===Cr.current)try{let e=await v.authenticate();t=e.user,r=e.isNewUser,vr.current="telegram"}catch(e){throw vt(_r,"login","onError",e.privyErrorCode||Me.UNKNOWN_AUTH_ERROR),e}else{if("link"!==Cr.current)throw new Pe("Unknown auth intent");try{t=(await v.link()).user,vr.current="telegram"}catch(e){throw vt(_r,"linkAccount","onError",e.privyErrorCode||Me.FAILED_TO_LINK_ACCOUNT,{linkMethod:"telegram"}),e}}ie(t),Mt(r||!1),G(!0)},async recoveryOAuthFlow(e,t,r){let a,n;function i(t){if(!t)throw v.createAnalyticsEvent({eventName:"recovery_oauth_error",payload:{error:"Unable to open recovery OAuth popup",provider:e}}),new Pe("Recovery OAuth failed")}switch(e){case"google-drive":{let t,o,{url:s,codeVerifier:l,stateCode:c}=await Je({api:Rr.api,provider:e});i(s);try{let a=await st({url:s,popup:r,provider:e});if(t=a.stateCode,o=a.authorizationCode,t!==c)throw v.createAnalyticsEvent({eventName:"possible_phishing_attempt",payload:{provider:e,storedStateCode:c??"",returnedStateCode:t??""}}),new Pe("Unexpected auth flow. This may be a phishing attempt.",void 0,Me.OAUTH_UNEXPECTED)}catch(t){throw v.createAnalyticsEvent({eventName:"recovery_oauth_error",payload:{error:t.toString(),provider:e}}),new Pe("Recovery OAuth failed")}[a,n]=await Promise.all([Br(),Ze({api:Rr.api,provider:e,codeVerifier:l,stateCode:t,authorizationCode:o})]);break}case"icloud":{let{url:t}=await Je({api:Rr.api,provider:e});i(t);let{ckWebAuthToken:o}=await st({url:t,popup:r,provider:e});n=o,a=await Br()}}if(!er)throw new Pe("Cannot connect to wallet proxy");if(!a)throw new Pe("Unable to authorize user");switch(t){case"recover":{let t=or.recoverWallet?.entropyId,r=or.recoverWallet?.entropyIdVerifier;if(!t||!r)throw new Pe("Recovery OAuth failed");v.createAnalyticsEvent({eventName:"embedded_wallet_recovery_started",payload:{walletAddress:t,recoveryMethod:e}}),await er.recover({accessToken:a,entropyId:t,entropyIdVerifier:r,recoveryAccessToken:n}),v.createAnalyticsEvent({eventName:"embedded_wallet_recovery_completed",payload:{walletAddress:t,recoveryMethod:e}});break}case"create-wallet":{v.createAnalyticsEvent({eventName:"embedded_wallet_creation_started"}),await er.create({accessToken:a,recoveryAccessToken:n,recoveryMethod:e});let t=b(await da.refreshUser());if(!t)throw vt(_r,"createWallet","onError",Me.UNKNOWN_EMBEDDED_WALLET_ERROR),Error("Failed to create wallet");v.createAnalyticsEvent({eventName:"embedded_wallet_creation_completed",payload:{walletAddress:t.address}}),vt(_r,"createWallet","onSuccess",t);break}case"set-recovery":{let t=k(ae);if(!t)throw vt(_r,"setWalletRecovery","onError",Me.EMBEDDED_WALLET_NOT_FOUND),Error("Embedded wallet not found");v.createAnalyticsEvent({eventName:"embedded_wallet_set_recovery_started",payload:{walletAddress:t.address,existingRecoveryMethod:t.recoveryMethod,targetRecoveryMethod:e}});let{entropyId:r,entropyIdVerifier:i}=C(t);await er.setRecovery({accessToken:a,entropyId:r,entropyIdVerifier:i,recoveryMethod:e,recoveryAccessToken:n});let o=k(await da.refreshUser());if(!o)throw vt(_r,"createWallet","onError",Me.UNKNOWN_EMBEDDED_WALLET_ERROR),Error("Failed to set recovery on wallet");v.createAnalyticsEvent({eventName:"embedded_wallet_set_recovery_completed",payload:{walletAddress:t.address,existingRecoveryMethod:t.recoveryMethod,targetRecoveryMethod:e}}),vt(_r,"setWalletRecovery","onSuccess",e,o);break}default:throw new Pe("Unsupported recovery action")}},async loginWithOAuth(e){let t,r,a;if(!(v.authFlow instanceof Dt))throw new Pe("Must initialize OAuth flow before calling loginWithOAuth");let n=J.get(Y),i=v.authFlow.meta.stateCode;if(n!==i)throw v.createAnalyticsEvent({eventName:"possible_phishing_attempt",payload:{provider:e,storedStateCode:n??"",returnedStateCode:i??""}}),new Pe("Unexpected auth flow. This may be a phishing attempt.",void 0,Me.OAUTH_UNEXPECTED);if(null!==await v.getAccessToken())try{let r=await v.link();t=r.user,a=r.oAuthTokens,vr.current=e}catch(t){throw vt(_r,"linkAccount","onError",t.privyErrorCode||Me.FAILED_TO_LINK_ACCOUNT,{linkMethod:e}),t}else try{let n=await v.authenticate();t=n.user,r=n.isNewUser,a=n.oAuthTokens,vr.current=e}catch(t){throw"login"===Cr.current?vt(_r,"login","onError",t.privyErrorCode||Me.UNKNOWN_AUTH_ERROR):"link"===Cr.current&&vt(_r,"linkAccount","onError",t.privyErrorCode||Me.FAILED_TO_LINK_ACCOUNT,{linkMethod:e}),t}return ie(t),Mt(r||!1),G(!0),a&&t&&vt(_r,"oAuthAuthorization","onOAuthTokenGrant",a,{user:t}),a},passkeyAuthState:Kt,setPasskeyAuthState:Gt,async initLoginWithPasskey({captchaToken:e,withPrivyUi:t}){let r=new m({captchaToken:e,setPasskeyAuthState:Gt});v.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}),vt(_r,"login","onError",e.privyErrorCode||Me.UNKNOWN_AUTH_ERROR),e}},async loginWithPasskey(){let e,t;if(!j)throw new Fe;if(!(v.authFlow instanceof m))throw new Pe("Must initialize Passkey flow first.");if("passkey"!==vr.current){let e=new Pe("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 v.authenticate())}catch(e){throw Gt({status:"error",error:e}),vt(_r,"login","onError",e.privyErrorCode||Me.UNKNOWN_AUTH_ERROR),e}ie(e),Mt(t||!1),G(!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 m({captchaToken:e});v.startAuthFlow(t),Cr.current="link",vr.current="passkey",Gt({status:"generating-challenge"});try{await t.initLinkFlow(),Gt({status:"awaiting-passkey"})}catch(e){throw vt(_r,"linkAccount","onError",e.privyErrorCode||Me.UNKNOWN_AUTH_ERROR,{linkMethod:"passkey"}),Gt({status:"error",error:e}),e}},async linkWithPasskey(){let e;if(!j)throw new Fe;if(!(v.authFlow instanceof m))throw new Pe("Must initialize Passkey flow first.");if("passkey"!==vr.current)throw new Pe("Must init login with Passkey flow first.");try{vr.current="passkey",({user:e}=await v.link())}catch(e){throw vt(_r,"linkAccount","onError",e.privyErrorCode||Me.FAILED_TO_LINK_ACCOUNT,{linkMethod:"passkey"}),e}return ie(e||ae||null),Gt({status:"done"}),e},async initLoginWithHeadlessOAuth(e,t,r){if(!Z())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&&it(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 v.startAuthFlow(a).getAuthorizationUrl();n?.url&&window.location.assign(n.url)},async loginWithHeadlessOAuth(e){let t,r,a;Bt(!0),Zt({status:"loading"}),v.startAuthFlow(new Dt(e));let n=J.get(Y),i=e.stateCode;if(n!==i)throw v.createAnalyticsEvent({eventName:"possible_phishing_attempt",payload:{provider:e.provider,storedStateCode:n??"",returnedStateCode:i??""}}),Bt(!1),new Pe("Unexpected auth flow. This may be a phishing attempt.",void 0,Me.OAUTH_UNEXPECTED);if(null!==await v.getAccessToken())try{({user:t,oAuthTokens:a}=await v.link()),vr.current=e.provider;let r=ia(t);t&&r&&vt(_r,"linkAccount","onSuccess",t,vr.current,r)}catch(t){throw Bt(!1),vt(_r,"linkAccount","onError",t.privyErrorCode||Me.FAILED_TO_LINK_ACCOUNT,{linkMethod:e.provider}),t}else try{({user:t,isNewUser:r,oAuthTokens:a}=await v.authenticate()),vr.current=e.provider;let n=ia(t);t&&n&&void 0!==r&&vt(_r,"login","onComplete",t,r,!1,vr.current,n)}catch(e){throw Bt(!1),Zt({status:"error",error:e}),vt(_r,"login","onError",e.privyErrorCode||Me.UNKNOWN_AUTH_ERROR),e}return ie(t),Mt(r||!1),G(!0),Bt(!1),Zt({status:"done"}),a&&t&&vt(_r,"oAuthAuthorization","onOAuthTokenGrant",a,{user:t}),t??void 0},initLoginWithEmail:async({email:e,captchaToken:t,disableSignup:r,withPrivyUi:a})=>{let n=new h({email:e,captchaToken:t,disableSignup:r});v.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?vt(_r,"login","onError",e.privyErrorCode||Me.UNKNOWN_AUTH_ERROR):"link"===Cr.current&&vt(_r,"linkAccount","onError",e.privyErrorCode||Me.FAILED_TO_LINK_ACCOUNT,{linkMethod:"email"}),e}},initUpdateEmail:async(e,t,r)=>{let a=new u(e,t,r);v.startAuthFlow(a);try{await a.sendCodeEmail({withPrivyUi:!0})}catch(e){vt(_r,"update","onError",e.privyErrorCode||Me.UNKNOWN_AUTH_ERROR,{linkMethod:vr.current})}},initUpdatePhone:async(e,t,r)=>{let a=new g(e,t,r);v.startAuthFlow(a);try{await a.sendSmsCode({withPrivyUi:!0})}catch(e){vt(_r,"update","onError",e.privyErrorCode||Me.UNKNOWN_AUTH_ERROR,{linkMethod:vr.current})}},initLoginWithSms:async({phoneNumber:e,captchaToken:t,disableSignup:r,withPrivyUi:a})=>{Yt({status:"sending-code"});let n=new E({phoneNumber:e,captchaToken:t,disableSignup:r});v.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?vt(_r,"login","onError",e.privyErrorCode||Me.UNKNOWN_AUTH_ERROR):"link"===Cr.current&&vt(_r,"linkAccount","onError",e.privyErrorCode||Me.FAILED_TO_LINK_ACCOUNT,{linkMethod:"sms"}),e}},resendEmailCode:async()=>{await(v.authFlow?.sendCodeEmail({withPrivyUi:!0}))},resendSmsCode:async()=>{await(v.authFlow?.sendSmsCode({withPrivyUi:!0}))},loginWithCode:async e=>{let t,r;function a(e){v.authFlow instanceof h?qt(e):v.authFlow instanceof E&&Yt(e)}if(a({status:"submitting-code"}),!j){let e=new Fe;throw a({status:"error",error:e}),e}if(v.authFlow instanceof h)v.authFlow.meta.emailCode=e.trim();else{if(!(v.authFlow instanceof E)){let e=new Pe("Must initialize a passwordless code flow first");throw a({status:"error",error:e}),e}v.authFlow.meta.smsCode=e.trim()}let n=await Br();if("link"===Cr.current)try{({user:t}=await v.link())}catch(e){throw a({status:"error",error:e}),vt(_r,"linkAccount","onError",e.privyErrorCode||Me.FAILED_TO_LINK_ACCOUNT,{linkMethod:vr.current}),e}else if("update"===Cr.current)try{({user:t}=await v.link())}catch(e){throw a({status:"error",error:e}),vt(_r,"update","onError",e.privyErrorCode||Me.FAILED_TO_UPDATE_ACCOUNT,{linkMethod:vr.current}),e}else try{({user:t,isNewUser:r}=await v.authenticate())}catch(e){throw a({status:"error",error:e}),vt(_r,"login","onError",e.privyErrorCode||Me.UNKNOWN_AUTH_ERROR),e}let i=t||ae;ie(i||null),Mt(r||!1),G(!0),a({status:"done"});let o=null;return v.authFlow instanceof h?o=i?.linkedAccounts.find((({type:e})=>"email"===e))||null:v.authFlow instanceof E&&(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 v.generateSiweNonce({address:e,captchaToken:r});return Qt({status:"awaiting-signature"}),lt({address:e,chainId:t.replace("eip155:",""),nonce:a})},generateSiweMessageForSmartWallet:async({address:e,chainId:t})=>{let r=await v.generateSiweNonce({address:e});return lt({address:e,chainId:t.replace("eip155:",""),nonce:r})},linkSmartWallet:async({message:e,signature:t,smartWalletType:r})=>{let a;a=await v.linkSmartWallet({message:e,signature:t,smartWalletType:r}),ie((a=await da.refreshUser()??a)||ae||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 v.linkWithSiwe({message:e,signature:t,chainId:r,walletClientType:a,connectorType:n}),i=await da.refreshUser()??i,Qt({status:"done"}),(o=ia(i)||null)&&vt(_r,"linkAccount","onSuccess",i,"siwe",o)}catch(e){throw vt(_r,"linkAccount","onError",e.privyErrorCode||Me.FAILED_TO_LINK_ACCOUNT,{linkMethod:"siwe"}),Cr.current=null,vr.current=null,Qt({status:"error",error:e}),e}let s=i||ae;return ie(s||null),Cr.current=null,vr.current=null,{user:s,linkedAccount:o}},refreshUser:async()=>{let e=await v.getAuthenticatedUser();return G(!!e),ie(e),e},walletProxy:er,createAnalyticsEvent:({eventName:e,payload:t,timestamp:r})=>v.createAnalyticsEvent({eventName:e,payload:t,timestamp:r}),acceptTerms:async()=>{let e=await v.acceptTerms();return ie(e),e},getUsdTokenPrice:e=>v.getUsdTokenPrice(e),getUsdPriceForSol:()=>v.getUsdPriceForSol(),recoverPrimaryWallet:async e=>new Promise((async(t,r)=>{let a=k(e?.user??ae)||O(e?.user??ae),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}=C(a);try{await er.connect({accessToken:n,entropyId:i,entropyIdVerifier:o}),t(!0)}catch(e){Ue(e)&&"privy"===a.recoveryMethod?(v.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")),v.createAnalyticsEvent({eventName:"embedded_wallet_recovery_completed",payload:{walletAddress:a.address}}),t(!0)):Ue(e)&&"privy"!==a.recoveryMethod?(sr({recoverWallet:{entropyId:i,entropyIdVerifier:o,onFailure:r,onSuccess:()=>t(!0)},recoveryOAuthStatus:{provider:a.recoveryMethod,action:"recover"}}),kr(et(a.recoveryMethod))):r(e)}})),createEmbeddedSolanaWallet:async e=>{if(e&&"target"in e&&(e=void 0),!K||!ae)throw vt(_r,"createWallet","onError",Me.MUST_BE_AUTHENTICATED),Error("User must be authenticated before creating a Privy wallet");return(async(e,t,r)=>{let a=b(e),n=R(e),i=r&&"createAdditional"in r&&r.createAdditional,o=r&&"walletIndex"in r?r.walletIndex:void 0,s=(M(e)?.walletIndex??-1)+1;if(n&&!i&&"number"!=typeof o)throw vt(_r,"createWallet","onError",Me.EMBEDDED_WALLET_ALREADY_EXISTS),Error("User already has an embedded wallet.");if("number"==typeof o&&o<0)throw vt(_r,"createWallet","onError",Me.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 vt(_r,"createWallet","onError",Me.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})})(ae,15e3,e)},exportSolanaWallet:e=>new Promise((async(t,r)=>{if(!K||!ae)return void r(Error("User must be authenticated before exporting their Privy wallet"));let a=e?.address??R(ae)?.address;if(!a)return void r(Error("User does not have an HD Solana wallet."));let{signingWallet:n,rootWallet:i}=L(ae,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}=C(i);sr({connectWallet:{entropyId:o,entropyIdVerifier:s,onCompleteNavigateTo:ft.EMBEDDED_WALLET_KEY_EXPORT_SCREEN,onFailure:r,shouldForceMFA:!0},keyExport:{appId:T.appId,appClientId:T.clientId,origin:v.apiUrl,walletToExport:n,primaryWallet:i,onSuccess:t,onFailure:r}}),kr(ft.EMBEDDED_WALLET_CONNECTING_SCREEN)})),setReadyToTrue:e=>{V(!0),lr?.(e)},updateWallets:()=>Xr(),fundWallet:async(e,t)=>{let r=ft.FUNDING_METHOD_SELECTION_SCREEN;sr({funding:Ut({address:e,appConfig:rr,fundWalletConfig:t,methodScreen:r})}),kr(r)},openModal:kr,requestFarcasterSignerStatus:async e=>{let t=await Br(),r=ae?.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(!ae?.farcaster?.fid)throw Error("Must have Farcaster account to use Farcaster signers");let a=await v.requestFarcasterSignerStatus(e);return"approved"===a.status&&ie(await v.getAuthenticatedUser()||ae||null),a},connectCoinbaseSmartWallet:async()=>{rr.externalWallets.coinbaseWallet.connectionOptions="smartWalletOnly";let e=v.connectors?.findWalletConnector("coinbase_wallet","coinbase_smart_wallet")||v.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 v.sendAccountTransferRequest({nonce:e,account:t,accountType:r,externalWalletMetadata:a,telegramAuthResult:n,farcasterEmbeddedAddress:i,oAuthUserInfo:o});return ie(s),s}};Mr=da.recoverPrimaryWallet,Fr=da.recoverPrimaryWallet,xr=da.solanaSignMessage;let ua=l((()=>({wallets:oe,ready:hr&&Ar})),[oe,hr,Ar]),ha=v.authFlow instanceof _,pa=!rr.headless&&rr.captchaEnabled&&!K&&(j||ha);/*#__PURE__*/return e(kt.Provider,{value:ca,children:/*#__PURE__*/e(Ct.Provider,{value:_r,children:/*#__PURE__*/e(Nt.Provider,{value:ua,children:/*#__PURE__*/e(At,{...rr,children:/*#__PURE__*/t(It.Provider,{value:da,children:[/*#__PURE__*/e(yt,{children:/*#__PURE__*/t(Wt,{data:or,setModalData:sr,setInitialScreen:xt,initialScreen:Ft,authenticated:K,open:F,children:[T.children,pa&&/*#__PURE__*/e(le,{delayedExecution:!1}),/*#__PURE__*/e(Et,{theme:{...rr.appearance.palette||{}}}),!rr.render.standalone&&/*#__PURE__*/e(ce,{open:F})]})}),nr&&ar?/*#__PURE__*/e(Ie,{appId:T.appId,appClientId:T.clientId,clientAnalyticsId:v.clientAnalyticsId,origin:v.apiUrl,mfaMethods:ae?.mfaMethods,mfaPromise:gr,mfaSubmitPromise:Er,onLoad:tr,onLoadFailed:()=>null}):null,rr.loginConfig.telegramAuthConfiguration&&
|
|
2
|
-
/*#__PURE__*/e(gt,{$if:!0,children:/*#__PURE__*/e(de,{scriptHost:T.apiUrl||B,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};
|