@fangorn-network/westmarch 0.0.14-dev → 0.0.16-dev

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. package/package.json +1 -1
  2. package/site/agent.js +7 -1
  3. package/site/dist/assets/{AddFundsSelectionScreen-RAoCn7ej-D_EsIeJu.js → AddFundsSelectionScreen-RAoCn7ej-B6uvYyqa.js} +1 -1
  4. package/site/dist/assets/{Address-H8kD1d9O-C85sJ79B.js → Address-H8kD1d9O-DcHv7A8C.js} +1 -1
  5. package/site/dist/assets/{AffirmativeConsentScreen-BG0MJxku-DdEPFOww.js → AffirmativeConsentScreen-BG0MJxku-v2wz-N-s.js} +1 -1
  6. package/site/dist/assets/{ApiController-CYdiyu9B.js → ApiController-BbhXeqTV.js} +3 -3
  7. package/site/dist/assets/{AuthenticateWithWalletScreen-CU6hIcFT-8rbYiYYE.js → AuthenticateWithWalletScreen-CU6hIcFT-B0eT1zE6.js} +1 -1
  8. package/site/dist/assets/{AwaitingEvmToSolBridgingScreen-D0e_sZMS-2pkNfCno.js → AwaitingEvmToSolBridgingScreen-D0e_sZMS-DL5PH-v_.js} +1 -1
  9. package/site/dist/assets/{AwaitingExternalEthereumTransferScreen-ur5HL4R7-7AQt25_k.js → AwaitingExternalEthereumTransferScreen-ur5HL4R7-n1BsRPqc.js} +1 -1
  10. package/site/dist/assets/{AwaitingPasswordlessCodeScreen-DRHz76mM-BZY30TGs.js → AwaitingPasswordlessCodeScreen-DRHz76mM-BVl2BJDY.js} +1 -1
  11. package/site/dist/assets/{AwaitingSolToEvmBridgingScreen-CdLRrGD2-BILOOLi_.js → AwaitingSolToEvmBridgingScreen-CdLRrGD2-BD-OZUQb.js} +1 -1
  12. package/site/dist/assets/{BridgeNetworkSelectionView-CFGjB2nO-CvsbQcFv.js → BridgeNetworkSelectionView-CFGjB2nO-CaYrzRje.js} +1 -1
  13. package/site/dist/assets/{CaptchaScreen-DbpvkIGx-D8eDcAkc.js → CaptchaScreen-DbpvkIGx-BQJ7inx1.js} +1 -1
  14. package/site/dist/assets/{CoinbaseOnrampStatusScreen-BbyCJDXL-DLs9zX-Q.js → CoinbaseOnrampStatusScreen-BbyCJDXL-DDaMC7cl.js} +1 -1
  15. package/site/dist/assets/{ConnectEmailForm-B-VRE0MN-N9J6T_YL.js → ConnectEmailForm-B-VRE0MN-DVSf4tFJ.js} +1 -1
  16. package/site/dist/assets/{ConnectOnlyLandingScreen-CZYx9Bmp-LeuDMN1E.js → ConnectOnlyLandingScreen-CZYx9Bmp-DP19hJq5.js} +1 -1
  17. package/site/dist/assets/{ConnectOnlyStatusScreen-DCRzjxHx-DaRa59tZ.js → ConnectOnlyStatusScreen-DCRzjxHx-DHvijlTx.js} +1 -1
  18. package/site/dist/assets/{ConnectOrCreateScreen-CUUYUO07-crHzh-TL.js → ConnectOrCreateScreen-CUUYUO07-ewmXYPTQ.js} +1 -1
  19. package/site/dist/assets/{ConnectPhoneForm-Dek5xn4C-BEA4FmhI.js → ConnectPhoneForm-Dek5xn4C-DUYdmVtr.js} +1 -1
  20. package/site/dist/assets/{ConnectWalletView-DqI-PTvX-CMQIad63.js → ConnectWalletView-DqI-PTvX-RobGErVW.js} +1 -1
  21. package/site/dist/assets/ConnectionStatusScreen-fUfROm9m-Bbiq3hY6.js +1 -0
  22. package/site/dist/assets/{ConnectionStatusScreen-fUfROm9m-BeWLchcf.js → ConnectionStatusScreen-fUfROm9m-DPkOGNWl.js} +1 -1
  23. package/site/dist/assets/{ConnectorUtil-Cq4lWnfe.js → ConnectorUtil-BO1L6VvV.js} +1 -1
  24. package/site/dist/assets/{CrossAppAuthScreen-CLw7ymZq-Csju14vF.js → CrossAppAuthScreen-CLw7ymZq-DbGy4QyA.js} +1 -1
  25. package/site/dist/assets/{CustomLandingScreenView-Cm_MBSyX-CBOrbNLo.js → CustomLandingScreenView-Cm_MBSyX-B3WqJZBh.js} +1 -1
  26. package/site/dist/assets/{DelegatedActionsConsentScreen-DYF2U4y5-BL5hzNUI.js → DelegatedActionsConsentScreen-DYF2U4y5-CmUDoS0C.js} +1 -1
  27. package/site/dist/assets/{DepositAddressAddressStepView-4vdkb55L-B3vY888G.js → DepositAddressAddressStepView-4vdkb55L-ClAb_j1B.js} +1 -1
  28. package/site/dist/assets/{DepositAddressScreen-DBLRs7aI-DmdQaFI2.js → DepositAddressScreen-DBLRs7aI-CN1P_KY9.js} +1 -1
  29. package/site/dist/assets/{DepositAddressV3Screen-CDqIEMQw-BoupRyfV.js → DepositAddressV3Screen-CDqIEMQw-BtDZmuEN.js} +1 -1
  30. package/site/dist/assets/{EmbeddedWalletConnectingScreen-D4T7DUzs-D_AVgO4s.js → EmbeddedWalletConnectingScreen-D4T7DUzs-D3pExuaW.js} +1 -1
  31. package/site/dist/assets/{EmbeddedWalletKeyExportScreen-CqV4NYQ3-C9sAExzE.js → EmbeddedWalletKeyExportScreen-CqV4NYQ3-DI6bu-oi.js} +1 -1
  32. package/site/dist/assets/{EmbeddedWalletOnAccountCreateScreen-BoKb3Q2S-DxaWAAKa.js → EmbeddedWalletOnAccountCreateScreen-BoKb3Q2S-BQ9Ygr0P.js} +1 -1
  33. package/site/dist/assets/{EnrollTotp-Dibew4dp-SA2pvNEc.js → EnrollTotp-Dibew4dp-7gVtJ1Jt.js} +1 -1
  34. package/site/dist/assets/{ErrorScreen-DipdTWzE-c8g8En21.js → ErrorScreen-DipdTWzE-BT8TtRTx.js} +1 -1
  35. package/site/dist/assets/ErrorScreen-DipdTWzE-DAam41Xl.js +1 -0
  36. package/site/dist/assets/{FarcasterConnectStatusScreen-51tjUxqq-s_s5M2CZ.js → FarcasterConnectStatusScreen-51tjUxqq-BPCBi37Q.js} +1 -1
  37. package/site/dist/assets/{FarcasterSignerStatusScreen-6x-Uh95G-BHBR4k8H.js → FarcasterSignerStatusScreen-6x-Uh95G-XCmWpnUd.js} +1 -1
  38. package/site/dist/assets/{FiatOnrampScreen-BAhYeiTI-BH_sU6EV.js → FiatOnrampScreen-BAhYeiTI-DJRcUh2N.js} +1 -1
  39. package/site/dist/assets/{FundSolWalletWithExternalSolanaWallet-WtLwYaOl-B8TRV36j.js → FundSolWalletWithExternalSolanaWallet-WtLwYaOl-BfNVSTb1.js} +1 -1
  40. package/site/dist/assets/{FundWithBankDepositScreen-DajkHxBD-9rPtyA3d.js → FundWithBankDepositScreen-DajkHxBD-BfvMcHb6.js} +1 -1
  41. package/site/dist/assets/{FundingEditAmountScreen-CpvpiO4M-GaXigGI9.js → FundingEditAmountScreen-CpvpiO4M-VBfbahnA.js} +1 -1
  42. package/site/dist/assets/{FundingMethodSelectionScreen-Db7vhRlE-UsmtTqv4.js → FundingMethodSelectionScreen-Db7vhRlE-CMuBYf64.js} +1 -1
  43. package/site/dist/assets/{LandingScreen-CGWUoSUG-DK1EY-6v.js → LandingScreen-CGWUoSUG-Q7hgXKvM.js} +1 -1
  44. package/site/dist/assets/{LinkConflictScreen-C3ZEPsgl-ClWoqvEL.js → LinkConflictScreen-C3ZEPsgl-DK1z_v7y.js} +1 -1
  45. package/site/dist/assets/{LinkEmailScreen-dKo9frwc-C3v7glH0.js → LinkEmailScreen-dKo9frwc-BYYpJ5-6.js} +1 -1
  46. package/site/dist/assets/LinkPasskeyScreen-zbrl_AI_-uhub9C26.js +1 -0
  47. package/site/dist/assets/{LinkPasskeyScreen-zbrl_AI_-D72Gb0LW.js → LinkPasskeyScreen-zbrl_AI_-uid22VTN.js} +1 -1
  48. package/site/dist/assets/{LinkPhoneScreen-oIUpfj0w-C0DuD14j.js → LinkPhoneScreen-oIUpfj0w-CVQibNi9.js} +1 -1
  49. package/site/dist/assets/{ManualTransferScreen-CHqcuqbs-tXiZDHmN.js → ManualTransferScreen-CHqcuqbs-DMygAXMU.js} +1 -1
  50. package/site/dist/assets/{MfaAuthEnrollmentFlowScreen-Dj7gPTRC-CaW7xeCC.js → MfaAuthEnrollmentFlowScreen-Dj7gPTRC-_1GFUSIg.js} +1 -1
  51. package/site/dist/assets/{MfaAuthVerifyFlowScreen-DbFpyWMy-CeRqvx8k.js → MfaAuthVerifyFlowScreen-DbFpyWMy-DLnBJ5b8.js} +1 -1
  52. package/site/dist/assets/{MfaEnrollmentFlowScreen-DhLnGgnr-BkN1k4lh.js → MfaEnrollmentFlowScreen-DhLnGgnr-BUJY1lzs.js} +1 -1
  53. package/site/dist/assets/{MfaVerifyFlowScreen-C_XPjMRP-CXSqLVbE.js → MfaVerifyFlowScreen-C_XPjMRP-25l5fVun.js} +1 -1
  54. package/site/dist/assets/{OAuthStatusScreen-ufbOa-da-CeiGcSia.js → OAuthStatusScreen-ufbOa-da-DL30vu07.js} +1 -1
  55. package/site/dist/assets/{PasskeySelectSignupOrLogin-xh2ScC_l-CIf5I7wU.js → PasskeySelectSignupOrLogin-xh2ScC_l-DtxhRQyw.js} +1 -1
  56. package/site/dist/assets/{PasskeyStatusScreen-Bla8MaOk-CLoL7QC-.js → PasskeyStatusScreen-Bla8MaOk-CNfu8ujT.js} +1 -1
  57. package/site/dist/assets/{PasswordRecoveryScreen-awGXZkQk-B9F67IYV.js → PasswordRecoveryScreen-awGXZkQk-BR6z6xE8.js} +1 -1
  58. package/site/dist/assets/{QrCode-DbnZwlkH-h6Bhoe5U.js → QrCode-DbnZwlkH-BymHrKY7.js} +1 -1
  59. package/site/dist/assets/{RecoveryOAuthStatusScreen-CsgtTI2x-D-A5P3PX.js → RecoveryOAuthStatusScreen-CsgtTI2x-Dro1btv5.js} +1 -1
  60. package/site/dist/assets/{RecoveryPasswordCreateScreen-Be-qJ-LU-C8lTSeSr.js → RecoveryPasswordCreateScreen-Be-qJ-LU-C1q1hiaN.js} +1 -1
  61. package/site/dist/assets/{RecoverySelectionScreen-D1iGtpmi-P5P3plkH.js → RecoverySelectionScreen-D1iGtpmi-C21D20gD.js} +1 -1
  62. package/site/dist/assets/{SIWXUtil-TUCxa7aA.js → SIWXUtil-CHZVugix.js} +1 -1
  63. package/site/dist/assets/{SelectSourceAsset-CWFog6gm-D7yTw87h.js → SelectSourceAsset-CWFog6gm-RKjBsB6m.js} +1 -1
  64. package/site/dist/assets/{SetAutomaticRecoveryScreen-BO_OEqAZ-f0iDIGmw.js → SetAutomaticRecoveryScreen-BO_OEqAZ-BcWHJoEG.js} +1 -1
  65. package/site/dist/assets/{SignRequestScreen-BHKv32KR-DDpMYyJ1.js → SignRequestScreen-BHKv32KR-iQCaBkcz.js} +1 -1
  66. package/site/dist/assets/{SolanaWalletConnector-C7Lqk-Wz-DPwhuzcI.js → SolanaWalletConnector-C7Lqk-Wz-BUdJJ0ep.js} +1 -1
  67. package/site/dist/assets/{StandardSignAndSendTransactionScreen-CfhIXVtd-BJ-onCjv.js → StandardSignAndSendTransactionScreen-CfhIXVtd-nART-xUU.js} +1 -1
  68. package/site/dist/assets/{TelegramAuthScreen-UL9zLfO8-NWlMgNRX.js → TelegramAuthScreen-UL9zLfO8-Dw9geyK3.js} +1 -1
  69. package/site/dist/assets/{TransactionDetails-e9nesl30-C4MpIHR-.js → TransactionDetails-e9nesl30-DeEL1JQS.js} +1 -1
  70. package/site/dist/assets/{TransactionErrorView-BDBNqA_f-p1T9WVMx.js → TransactionErrorView-BDBNqA_f-Dffuo7I4.js} +1 -1
  71. package/site/dist/assets/{TransferFromWalletScreen-Qvn1Yuno-88IQcRnY.js → TransferFromWalletScreen-Qvn1Yuno-CWLWUiHy.js} +1 -1
  72. package/site/dist/assets/{TransferOrBridgeLoadingScreen-Dl1I_iIz-1fDAIxAf.js → TransferOrBridgeLoadingScreen-Dl1I_iIz-Bo-tm6wr.js} +1 -1
  73. package/site/dist/assets/{UpdateEmailScreen-DVOhPV0H-Jj2DQW8D.js → UpdateEmailScreen-DVOhPV0H-gFbSIUhh.js} +1 -1
  74. package/site/dist/assets/{UpdatePhoneScreen-CXRswTNZ-DwYIUBqi.js → UpdatePhoneScreen-CXRswTNZ-Coy4E1NQ.js} +1 -1
  75. package/site/dist/assets/{WalletInfoCard-sq_2wgFg-DpNSAGte.js → WalletInfoCard-sq_2wgFg-ISBsQt8p.js} +1 -1
  76. package/site/dist/assets/{WalletLink-DK5LB5Ha-DHaL350n.js → WalletLink-DK5LB5Ha-CXBqCHf3.js} +1 -1
  77. package/site/dist/assets/{WalletOverflowButton-bfCnp-9T-CUyIJFzt.js → WalletOverflowButton-bfCnp-9T-DP0-PoZL.js} +1 -1
  78. package/site/dist/assets/{_esm-B26FZg5Y.js → _esm-CJe2F7LL.js} +1 -1
  79. package/site/dist/assets/{_esm-BdeM6pxJ.js → _esm-zhBBffjV.js} +1 -1
  80. package/site/dist/assets/{accounts-DiZ-0VmN.js → accounts-Bq8t1wAD.js} +1 -1
  81. package/site/dist/assets/{basic-oIwwSyu4.js → basic-MlZ7f4s9.js} +1 -1
  82. package/site/dist/assets/ccip-BI9LWBBg.js +1 -0
  83. package/site/dist/assets/{ccip-BZvRTL6g.js → ccip-C-59SNEF.js} +2 -2
  84. package/site/dist/assets/{ccip-65sIfSPR.js → ccip-y08wK9du.js} +1 -1
  85. package/site/dist/assets/{client-CZG0ndth.js → client-D0IV9lV9.js} +1 -1
  86. package/site/dist/assets/{coinbase-DCPC2L_R-D3aIgpyd.js → coinbase-DCPC2L_R-Rs9nVCfm.js} +1 -1
  87. package/site/dist/assets/{core-snws5xwv.js → core-zQ1tZtVZ.js} +3 -3
  88. package/site/dist/assets/{dist-DnGANz51.js → dist-BxQqwnue.js} +1 -1
  89. package/site/dist/assets/{esm-ByALO6mA.js → esm-DXsETz3H.js} +1 -1
  90. package/site/dist/assets/{esm-B5cbIQaz.js → esm-vs5jNx_Y.js} +2 -2
  91. package/site/dist/assets/{ethers-zTjbodk5-wHhL_BQ1.js → ethers-zTjbodk5-B7BBFFKf.js} +1 -1
  92. package/site/dist/assets/{features-DQ0UYy6K.js → features-CYXRa3_m.js} +1 -1
  93. package/site/dist/assets/{getErc20Balance-jXNpFf0N-Bb9WM31M.js → getErc20Balance-jXNpFf0N-V2btxzrJ.js} +1 -1
  94. package/site/dist/assets/{getErc20TokenInfo-BNTrzLMP-KPrdn04K.js → getErc20TokenInfo-BNTrzLMP-CtCwQuGA.js} +1 -1
  95. package/site/dist/assets/{id-UqEwL2BI-BkKm533U.js → id-UqEwL2BI-CdKXapd-.js} +1 -1
  96. package/site/dist/assets/index-DPuRQJG2.js +8 -0
  97. package/site/dist/assets/{index-DvMddJcd-BatvgC-S.js → index-DvMddJcd-D-4mRLKK.js} +1 -1
  98. package/site/dist/assets/{index-YiCw0Y_x-CX5i3Z87.js → index-YiCw0Y_x-BX1zsiqG.js} +4 -4
  99. package/site/dist/assets/{localBatchGatewayRequest-3kLrX_c7.js → localBatchGatewayRequest-5YxrERBj.js} +2 -2
  100. package/site/dist/assets/parseEther-CGP3gnf2.js +1 -0
  101. package/site/dist/assets/{pkce-DXF0yKjP-ChQhE0st.js → pkce-DXF0yKjP-Bqz4wAsq.js} +1 -1
  102. package/site/dist/assets/preload-helper-BaNbYf_w.js +1 -0
  103. package/site/dist/assets/roles-32M1l9jI.js +1 -0
  104. package/site/dist/assets/roles-DKPW79Ca.js +1 -0
  105. package/site/dist/assets/shouldProceedtoEmbeddedWalletCreationFlow-B3vyavrh-ByFOTrQK.js +1 -0
  106. package/site/dist/assets/{simulateTransaction-CfuOrae4-64lWYJAL.js → simulateTransaction-CfuOrae4-CMFGDgT_.js} +1 -1
  107. package/site/dist/assets/{storage-Ufl800Ne-D0bZBw-H.js → storage-Ufl800Ne-EalZTH9q.js} +1 -1
  108. package/site/dist/assets/{styles-Cm9H63WO-Br4QtzUL.js → styles-Cm9H63WO-D90SsXOs.js} +1 -1
  109. package/site/dist/assets/{to-ui-error-DWe-qwS3-Cx2bk1kZ.js → to-ui-error-DWe-qwS3-DgCO-Y70.js} +1 -1
  110. package/site/dist/assets/{toViemAccount-B5iDGq1b-Ba8L7zed.js → toViemAccount-B5iDGq1b-DZ1MBqUW.js} +2 -2
  111. package/site/dist/assets/{transformers.web-CVP3pJOS.js → transformers.web-D4RvOP4-.js} +1 -1
  112. package/site/dist/assets/{use-headless-crypto-deposit-Yn-QRLB3-LUIVFBSd.js → use-headless-crypto-deposit-Yn-QRLB3-Dn6_8w-Y.js} +1 -1
  113. package/site/dist/assets/{use-unlink-wallet-BKK4_5Ur-CC2pq27z.js → use-unlink-wallet-BKK4_5Ur-DgsQ75lh.js} +1 -1
  114. package/site/dist/assets/{useActiveWallet-B-yZYGc6-D7Ik-LxJ.js → useActiveWallet-B-yZYGc6-B6JWREbk.js} +1 -1
  115. package/site/dist/assets/{useWalletBalance-CZnP5f_f-Dw2GIJ4g.js → useWalletBalance-CZnP5f_f-L3V0jDjL.js} +1 -1
  116. package/site/dist/assets/{useWallets-X1ndvJ_U-DRjz7uYD.js → useWallets-X1ndvJ_U-CLwUcevw.js} +1 -1
  117. package/site/dist/assets/{w3m-modal-BeVrBOIf.js → w3m-modal-BMubXAoG.js} +1 -1
  118. package/site/dist/assets/{wallet-DMLc-ukR.js → wallet-Bmjp2WfA.js} +2 -2
  119. package/site/dist/assets/{walletconnect-v2-3frQFwbg-CrtLXofr.js → walletconnect-v2-3frQFwbg-Dv6JY_ko.js} +3 -3
  120. package/site/dist/assets/{wui-ux-by-reown-D34ILNLS.js → wui-ux-by-reown-fVu0QkI4.js} +1 -1
  121. package/site/dist/index.html +4 -4
  122. package/src/agent/tools.js +69 -2
  123. package/src/agent/view-tools.js +7 -1
  124. package/src/core/roles.js +7 -2
  125. package/src/publish/ship.js +11 -4
  126. package/src/publish/view.js +101 -22
  127. package/site/dist/assets/ConnectionStatusScreen-fUfROm9m-wu3a3kw4.js +0 -1
  128. package/site/dist/assets/ErrorScreen-DipdTWzE-DcxVjMO4.js +0 -1
  129. package/site/dist/assets/LinkPasskeyScreen-zbrl_AI_-DYIl5Kr2.js +0 -1
  130. package/site/dist/assets/ccip-DA_zG341.js +0 -1
  131. package/site/dist/assets/index-B5YmgwLH.js +0 -8
  132. package/site/dist/assets/ort-wasm-simd-threaded.asyncify-CxOG5pUO.wasm +0 -0
  133. package/site/dist/assets/parseEther-VjhVo3dd.js +0 -1
  134. package/site/dist/assets/preload-helper-uBIymjUX.js +0 -1
  135. package/site/dist/assets/roles-C9V_uDr_.js +0 -1
  136. package/site/dist/assets/roles-YDRjv_PY.js +0 -1
  137. package/site/dist/assets/shouldProceedtoEmbeddedWalletCreationFlow-B3vyavrh-BK_FBkaE.js +0 -1
@@ -1 +1 @@
1
- import{s as e}from"./rolldown-runtime-BcKkbAw3.js";import{$ as t,Ct as n,D as r,M as i,St as a,a as o,bt as s,dt as c,ft as l,g as u,ht as d,i as f,lt as p,mt as m,nt as h,rt as g,vt as _,wt as v,xt as y,yt as b}from"./privy-context-81KmsBw2-CjWGzyg7.js";import{t as x}from"./react-DrJ0MmMO.js";import{n as S}from"./modal-context-CwmSeFcv-DruX9J1E.js";import{i as C,s as w}from"./errors-BQ3N-RVt-BLqjTPNR.js";import{d as T}from"./get-entropy-details-for-user-dHRH5Gpi-Dukf7_kJ.js";import{Tn as E}from"./localBatchGatewayRequest-3kLrX_c7.js";var D=e(x(),1),O={login:{onComplete:[],onError:[]},logout:{onSuccess:[]},connectWallet:{onSuccess:[],onError:[]},connectOrCreateWallet:{onSuccess:[],onError:[]},createWallet:{onSuccess:[],onError:[]},linkAccount:{onSuccess:[],onError:[]},update:{onSuccess:[],onError:[]},configureMfa:{onMfaRequired:[]},setWalletPassword:{onSuccess:[],onError:[]},setWalletRecovery:{onSuccess:[],onError:[]},signMessage:{onSuccess:[],onError:[]},signTypedData:{onSuccess:[],onError:[]},sendTransaction:{onSuccess:[],onError:[]},signTransaction:{onSuccess:[],onError:[]},accessToken:{onAccessTokenGranted:[],onAccessTokenRemoved:[]},oAuthAuthorization:{onOAuthTokenGrant:[]},fundWallet:{onUserExited:[]},fundSolanaWallet:{onUserExited:[]},customAuth:{onAuthenticated:[],onUnauthenticated:[]}},k=(0,D.createContext)(void 0),A=()=>(0,D.useContext)(k);function j(e,t){if(!t)return;let n=A().current[e];return(0,D.useEffect)((()=>{for(let[r,i]of Object.entries(t))Object.prototype.hasOwnProperty.call(n,r)||console.warn(`Invalid event type "${r}" for action "${e}"`),n[r]?.push(i);return()=>{for(let[r,i]of Object.entries(t))Object.prototype.hasOwnProperty.call(n,r)||console.warn(`Invalid event type "${r}" for action "${e}"`),n[r]=n[r]?.filter((e=>e!==i))}}),[t])}function M(e,t,n,...r){for(let i of e.current[t][n])i(...r)}function N(){let e=A();return(t,n,...r)=>M(e,t,n,...r)}function P(e){return[`ethereum`,`solana`].includes(e.chainType)}function F(e){let t=e.replace(`eip155:`,``);if(t)return parseInt(t);throw Error(`Chain ID not compatible with CAIP-2 format.`)}var I={method:`wallets`,provider:``},L=e=>{let t=e.filter((e=>e.method===`wallets`||(e.method===`exchange`?e.provider===`coinbase`:e.method===`card`||e.method===`payment-request`?e.provider===`coinbase`||e.provider===`moonpay`:(e.method,!1))));return t.some((e=>e.method===`wallets`))||t.push(I),t},R={[v.id]:`0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48`,[g.id]:`0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238`,[n.id]:`0x0b2c639c533813f4aa9d7837caf62653d097ff85`,[p.id]:`0x5fd84259d66Cd46123540766Be93DFE6D43130D7`,[h.id]:`0x3c499c542cef5e3811e1192ce70d8cc03d5c3359`,[a.id]:`0x41e94eb019c0762f9bfcf9fb1e58725bfb0e7582`,[c.id]:`0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913`,[b.id]:`0x036CbD53842c5426634e7929541eC2318f3dCF7e`,[s.id]:`0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E`,[m.id]:`0x5425890298aed601595a70ab815c96711a31bc65`,[y.id]:`0xaf88d065e77c8cC2239327C5EDb3A432268e5831`,[_.id]:`0x75faf114eafb1BDbe2F0316DF893fd58CE46AA4d`,[d.id]:`0xb88339CB7199b77E23DB6E890353E22632Ba630f`,[l.id]:`0x754704Bc059F8C67012fEd69BC8A327a5aafb603`},z=({address:e,appConfig:t,fundWalletConfig:n,methodScreen:r,chainIdOverride:i,comingFromSendTransactionScreen:a=!1,onComplete:o,onError:s})=>{let c,l;if(!t.fundingConfig)throw Error(`Wallet funding is not enabled`);let u=L(t.fundingConfig.options);if(u.length<1)throw Error(`Wallet funding is not enabled`);c=i||(n?.chain?n.chain.id:F(t.fundingConfig.defaultRecommendedCurrency.chain));let d=t.chains.find((e=>e.id===c));if(!d)throw new C(`Funding chain ${c} is not in PrivyProvider chains list`);let f=n?.amount??t.fundingConfig.defaultRecommendedAmount,p=!1;function m(){if(!c)return;let e=R[c];u.find((e=>e.method===`wallets`))&&!e&&console.warn(`Attempting to fund with USDC on chain where USDC address is not known. Funding via external wallet will be disabled.`),l=e,p=!0}var h;n&&`asset`in n?n.asset===`USDC`?m():typeof n.asset!=`string`&&`erc20`in n.asset&&(h=l=n.asset.erc20,p=h===R[d.id]):t.fundingConfig.defaultRecommendedCurrency.asset===`USDC`&&m();let g=n?.defaultFundingMethod;return{chainType:`ethereum`,address:e,amount:f,chain:d,erc20Address:l,erc20ContractInfo:p?{symbol:`USDC`,decimals:6}:void 0,isUSDC:p,methodScreen:r,supportedOptions:u,comingFromSendTransactionScreen:a,defaultFundingMethod:g,usingDefaultFundingMethod:!!g,preferredCardProvider:n?.card?.preferredProvider,crossChainBridgingEnabled:t.fundingConfig.crossChainBridgingEnabled??!1,solanaChain:`solana:mainnet`,uiConfig:n&&`uiConfig`in n?n.uiConfig:void 0,externalSolanaFundingScreen:null,onComplete:o??(()=>{}),onError:s??(()=>{})}};function B({address:e,fundWalletConfig:t,appConfig:n,comingFromSendTransactionScreen:r,externalSolanaFundingScreen:i,methodScreen:a}){if(!n.fundingConfig)throw Error(`Wallet funding is not enabled`);let o=L(n.fundingConfig.options);if(o.length<1)throw Error(`Wallet funding is not enabled`);if(t?.asset===`USDC`&&t?.chain===`solana:testnet`)throw Error(`USDC funding is not supported on the Solana testnet`);let s=t?.amount??n.fundingConfig.defaultRecommendedAmount,c=t?.defaultFundingMethod;return{chainType:`solana`,address:e,supportedOptions:o,amount:s,isUSDC:t?.asset===`USDC`,methodScreen:a,comingFromSendTransactionScreen:r,chain:t?.chain||`solana:mainnet`,crossChainBridgingEnabled:n.fundingConfig.crossChainBridgingEnabled??!1,defaultFundingMethod:c,preferredCardProvider:t?.card?.preferredProvider,usingDefaultFundingMethod:!!c,uiConfig:t?.uiConfig,externalSolanaFundingScreen:i,onComplete:()=>{},onError:()=>{}}}function V(){let{user:e,getAccessToken:n}=f(),{walletProxy:a,openModal:s,client:c}=t(),{setModalData:l}=S(),d=r();return(0,D.useMemo)((()=>({exportWallet:t=>new Promise((async(r,f)=>{if(!e)return void f(Error(`User must be authenticated before exporting their Privy wallet`));t&&`target`in t&&t&&(t=void 0);let p=t?.address?o(e,t.address):u(e);if(!p)return void f(new C(`User must have an embedded wallet.`));let m=p.address,{entropyId:h,entropyIdVerifier:g}=T(e,p),_=i(p);if(!m)return void f(Error("User does not have an HD Ethereum wallet. To export an imported wallet, pass the `address` of the wallet to `exportWallet`."));if(!E(m))return void f(Error(`Must provide a valid Ethereum address.`));let v={recoveryMethod:p.recoveryMethod,connectingWalletAddress:p.address,isUnifiedWallet:_,entropyId:h,entropyIdVerifier:g,onCompleteNavigateTo:`EmbeddedWalletKeyExportScreen`,onFailure:f,shouldForceMFA:!0};await n()&&a?P(p)?(l({keyExport:{appId:d.id,appClientId:d.appClientId,origin:c.apiUrl,address:p.address,entropyId:h,entropyIdVerifier:g,hdWalletIndex:p.walletIndex,chainType:p.chainType,walletId:p.id,isUnifiedWallet:_,imported:p.imported,onSuccess:r,onFailure:f,showBackButton:t?.showBackButton},connectWallet:v}),s(`EmbeddedWalletConnectingScreen`)):f(Error(`Export is not supported for ${p.chainType} wallets`)):f(Error(`Must have valid access token.`))}))})),[e,n,a,s,c,l,d])}var H=()=>{let{authenticated:e,user:n}=f(),{openModal:r,inProgressAuthFlowRef:i,inProgressLoginOrLinkMethodRef:a}=t(),o=N();return{update:(0,D.useCallback)((()=>{if(!e)throw o(`linkAccount`,`onError`,w.MUST_BE_AUTHENTICATED,{linkMethod:`email`}),new C(`User must be authenticated before linking an account.`);if(!n?.email)throw new C(`User does not have an email linked to their account.`);i.current=`update`,a.current=`email`,r(`UpdateEmailScreen`)}),[e,o,i,a,r,n])}},U=()=>{let{authenticated:e,user:n}=f(),{openModal:r,inProgressAuthFlowRef:i,inProgressLoginOrLinkMethodRef:a}=t(),o=N();return{update:(0,D.useCallback)((()=>{if(!e)throw o(`linkAccount`,`onError`,w.MUST_BE_AUTHENTICATED,{linkMethod:`sms`}),new C(`User must be authenticated before linking an account.`);if(!n?.phone)throw new C(`User does not have a phone number linked to their account.`);i.current=`update`,a.current=`sms`,r(`UpdatePhoneScreen`)}),[e,o,i,a,r,n])}},W=()=>{let{client:e,setUser:n}=t();return{unlink:(0,D.useCallback)((async({address:t})=>{let r;return n(r=t.startsWith(`0x`)?await e.unlinkEthereumWallet(t):await e.unlinkSolanaWallet(t)),r}),[e,n])}};export{M as a,P as c,H as d,k as f,U as h,B as i,N as l,F as m,j as n,R as o,z as p,W as r,V as s,L as t,O as u};
1
+ import{s as e}from"./rolldown-runtime-BcKkbAw3.js";import{$ as t,Ct as n,D as r,M as i,St as a,a as o,bt as s,dt as c,ft as l,g as u,ht as d,i as f,lt as p,mt as m,nt as h,rt as g,vt as _,wt as v,xt as y,yt as b}from"./privy-context-81KmsBw2-CjWGzyg7.js";import{t as x}from"./react-DrJ0MmMO.js";import{n as S}from"./modal-context-CwmSeFcv-DruX9J1E.js";import{i as C,s as w}from"./errors-BQ3N-RVt-BLqjTPNR.js";import{d as T}from"./get-entropy-details-for-user-dHRH5Gpi-Dukf7_kJ.js";import{Tn as E}from"./localBatchGatewayRequest-5YxrERBj.js";var D=e(x(),1),O={login:{onComplete:[],onError:[]},logout:{onSuccess:[]},connectWallet:{onSuccess:[],onError:[]},connectOrCreateWallet:{onSuccess:[],onError:[]},createWallet:{onSuccess:[],onError:[]},linkAccount:{onSuccess:[],onError:[]},update:{onSuccess:[],onError:[]},configureMfa:{onMfaRequired:[]},setWalletPassword:{onSuccess:[],onError:[]},setWalletRecovery:{onSuccess:[],onError:[]},signMessage:{onSuccess:[],onError:[]},signTypedData:{onSuccess:[],onError:[]},sendTransaction:{onSuccess:[],onError:[]},signTransaction:{onSuccess:[],onError:[]},accessToken:{onAccessTokenGranted:[],onAccessTokenRemoved:[]},oAuthAuthorization:{onOAuthTokenGrant:[]},fundWallet:{onUserExited:[]},fundSolanaWallet:{onUserExited:[]},customAuth:{onAuthenticated:[],onUnauthenticated:[]}},k=(0,D.createContext)(void 0),A=()=>(0,D.useContext)(k);function j(e,t){if(!t)return;let n=A().current[e];return(0,D.useEffect)((()=>{for(let[r,i]of Object.entries(t))Object.prototype.hasOwnProperty.call(n,r)||console.warn(`Invalid event type "${r}" for action "${e}"`),n[r]?.push(i);return()=>{for(let[r,i]of Object.entries(t))Object.prototype.hasOwnProperty.call(n,r)||console.warn(`Invalid event type "${r}" for action "${e}"`),n[r]=n[r]?.filter((e=>e!==i))}}),[t])}function M(e,t,n,...r){for(let i of e.current[t][n])i(...r)}function N(){let e=A();return(t,n,...r)=>M(e,t,n,...r)}function P(e){return[`ethereum`,`solana`].includes(e.chainType)}function F(e){let t=e.replace(`eip155:`,``);if(t)return parseInt(t);throw Error(`Chain ID not compatible with CAIP-2 format.`)}var I={method:`wallets`,provider:``},L=e=>{let t=e.filter((e=>e.method===`wallets`||(e.method===`exchange`?e.provider===`coinbase`:e.method===`card`||e.method===`payment-request`?e.provider===`coinbase`||e.provider===`moonpay`:(e.method,!1))));return t.some((e=>e.method===`wallets`))||t.push(I),t},R={[v.id]:`0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48`,[g.id]:`0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238`,[n.id]:`0x0b2c639c533813f4aa9d7837caf62653d097ff85`,[p.id]:`0x5fd84259d66Cd46123540766Be93DFE6D43130D7`,[h.id]:`0x3c499c542cef5e3811e1192ce70d8cc03d5c3359`,[a.id]:`0x41e94eb019c0762f9bfcf9fb1e58725bfb0e7582`,[c.id]:`0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913`,[b.id]:`0x036CbD53842c5426634e7929541eC2318f3dCF7e`,[s.id]:`0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E`,[m.id]:`0x5425890298aed601595a70ab815c96711a31bc65`,[y.id]:`0xaf88d065e77c8cC2239327C5EDb3A432268e5831`,[_.id]:`0x75faf114eafb1BDbe2F0316DF893fd58CE46AA4d`,[d.id]:`0xb88339CB7199b77E23DB6E890353E22632Ba630f`,[l.id]:`0x754704Bc059F8C67012fEd69BC8A327a5aafb603`},z=({address:e,appConfig:t,fundWalletConfig:n,methodScreen:r,chainIdOverride:i,comingFromSendTransactionScreen:a=!1,onComplete:o,onError:s})=>{let c,l;if(!t.fundingConfig)throw Error(`Wallet funding is not enabled`);let u=L(t.fundingConfig.options);if(u.length<1)throw Error(`Wallet funding is not enabled`);c=i||(n?.chain?n.chain.id:F(t.fundingConfig.defaultRecommendedCurrency.chain));let d=t.chains.find((e=>e.id===c));if(!d)throw new C(`Funding chain ${c} is not in PrivyProvider chains list`);let f=n?.amount??t.fundingConfig.defaultRecommendedAmount,p=!1;function m(){if(!c)return;let e=R[c];u.find((e=>e.method===`wallets`))&&!e&&console.warn(`Attempting to fund with USDC on chain where USDC address is not known. Funding via external wallet will be disabled.`),l=e,p=!0}var h;n&&`asset`in n?n.asset===`USDC`?m():typeof n.asset!=`string`&&`erc20`in n.asset&&(h=l=n.asset.erc20,p=h===R[d.id]):t.fundingConfig.defaultRecommendedCurrency.asset===`USDC`&&m();let g=n?.defaultFundingMethod;return{chainType:`ethereum`,address:e,amount:f,chain:d,erc20Address:l,erc20ContractInfo:p?{symbol:`USDC`,decimals:6}:void 0,isUSDC:p,methodScreen:r,supportedOptions:u,comingFromSendTransactionScreen:a,defaultFundingMethod:g,usingDefaultFundingMethod:!!g,preferredCardProvider:n?.card?.preferredProvider,crossChainBridgingEnabled:t.fundingConfig.crossChainBridgingEnabled??!1,solanaChain:`solana:mainnet`,uiConfig:n&&`uiConfig`in n?n.uiConfig:void 0,externalSolanaFundingScreen:null,onComplete:o??(()=>{}),onError:s??(()=>{})}};function B({address:e,fundWalletConfig:t,appConfig:n,comingFromSendTransactionScreen:r,externalSolanaFundingScreen:i,methodScreen:a}){if(!n.fundingConfig)throw Error(`Wallet funding is not enabled`);let o=L(n.fundingConfig.options);if(o.length<1)throw Error(`Wallet funding is not enabled`);if(t?.asset===`USDC`&&t?.chain===`solana:testnet`)throw Error(`USDC funding is not supported on the Solana testnet`);let s=t?.amount??n.fundingConfig.defaultRecommendedAmount,c=t?.defaultFundingMethod;return{chainType:`solana`,address:e,supportedOptions:o,amount:s,isUSDC:t?.asset===`USDC`,methodScreen:a,comingFromSendTransactionScreen:r,chain:t?.chain||`solana:mainnet`,crossChainBridgingEnabled:n.fundingConfig.crossChainBridgingEnabled??!1,defaultFundingMethod:c,preferredCardProvider:t?.card?.preferredProvider,usingDefaultFundingMethod:!!c,uiConfig:t?.uiConfig,externalSolanaFundingScreen:i,onComplete:()=>{},onError:()=>{}}}function V(){let{user:e,getAccessToken:n}=f(),{walletProxy:a,openModal:s,client:c}=t(),{setModalData:l}=S(),d=r();return(0,D.useMemo)((()=>({exportWallet:t=>new Promise((async(r,f)=>{if(!e)return void f(Error(`User must be authenticated before exporting their Privy wallet`));t&&`target`in t&&t&&(t=void 0);let p=t?.address?o(e,t.address):u(e);if(!p)return void f(new C(`User must have an embedded wallet.`));let m=p.address,{entropyId:h,entropyIdVerifier:g}=T(e,p),_=i(p);if(!m)return void f(Error("User does not have an HD Ethereum wallet. To export an imported wallet, pass the `address` of the wallet to `exportWallet`."));if(!E(m))return void f(Error(`Must provide a valid Ethereum address.`));let v={recoveryMethod:p.recoveryMethod,connectingWalletAddress:p.address,isUnifiedWallet:_,entropyId:h,entropyIdVerifier:g,onCompleteNavigateTo:`EmbeddedWalletKeyExportScreen`,onFailure:f,shouldForceMFA:!0};await n()&&a?P(p)?(l({keyExport:{appId:d.id,appClientId:d.appClientId,origin:c.apiUrl,address:p.address,entropyId:h,entropyIdVerifier:g,hdWalletIndex:p.walletIndex,chainType:p.chainType,walletId:p.id,isUnifiedWallet:_,imported:p.imported,onSuccess:r,onFailure:f,showBackButton:t?.showBackButton},connectWallet:v}),s(`EmbeddedWalletConnectingScreen`)):f(Error(`Export is not supported for ${p.chainType} wallets`)):f(Error(`Must have valid access token.`))}))})),[e,n,a,s,c,l,d])}var H=()=>{let{authenticated:e,user:n}=f(),{openModal:r,inProgressAuthFlowRef:i,inProgressLoginOrLinkMethodRef:a}=t(),o=N();return{update:(0,D.useCallback)((()=>{if(!e)throw o(`linkAccount`,`onError`,w.MUST_BE_AUTHENTICATED,{linkMethod:`email`}),new C(`User must be authenticated before linking an account.`);if(!n?.email)throw new C(`User does not have an email linked to their account.`);i.current=`update`,a.current=`email`,r(`UpdateEmailScreen`)}),[e,o,i,a,r,n])}},U=()=>{let{authenticated:e,user:n}=f(),{openModal:r,inProgressAuthFlowRef:i,inProgressLoginOrLinkMethodRef:a}=t(),o=N();return{update:(0,D.useCallback)((()=>{if(!e)throw o(`linkAccount`,`onError`,w.MUST_BE_AUTHENTICATED,{linkMethod:`sms`}),new C(`User must be authenticated before linking an account.`);if(!n?.phone)throw new C(`User does not have a phone number linked to their account.`);i.current=`update`,a.current=`sms`,r(`UpdatePhoneScreen`)}),[e,o,i,a,r,n])}},W=()=>{let{client:e,setUser:n}=t();return{unlink:(0,D.useCallback)((async({address:t})=>{let r;return n(r=t.startsWith(`0x`)?await e.unlinkEthereumWallet(t):await e.unlinkSolanaWallet(t)),r}),[e,n])}};export{M as a,P as c,H as d,k as f,U as h,B as i,N as l,F as m,j as n,R as o,z as p,W as r,V as s,L as t,O as u};
@@ -1,4 +1,4 @@
1
- import{s as e}from"./rolldown-runtime-BcKkbAw3.js";import{$ as t,D as n,c as r}from"./privy-context-81KmsBw2-CjWGzyg7.js";import{t as i}from"./jsx-runtime-BbDfbRii.js";import{t as a}from"./react-DrJ0MmMO.js";import{c as o,s}from"./Loader-UAZqxsnw-Cy7hEE2f.js";import{t as c}from"./react-DQnMl2Xv.js";import{l}from"./get-entropy-details-for-user-dHRH5Gpi-Dukf7_kJ.js";import{Fn as u}from"./localBatchGatewayRequest-3kLrX_c7.js";import{b as d,t as f}from"./storage-Ufl800Ne-D0bZBw-H.js";import{d as p,h as m,n as h}from"./use-unlink-wallet-BKK4_5Ur-CC2pq27z.js";import{f as g}from"./guards-BIW-GiMJ-CHfXo8XI.js";import{t as _}from"./logger-CsXm3oIv-B0UYpNFI.js";var v=e(a(),1),y=i(),b=e=>{let[t,n]=(0,v.useState)(`auto`);return(0,v.useEffect)((()=>{let t=new ResizeObserver((e=>{n(e[0]?.contentRect.height??`auto`)}));return e.current&&t.observe(e.current),()=>{e.current&&t.unobserve(e.current)}}),[e.current]),t},x=o.div`
1
+ import{s as e}from"./rolldown-runtime-BcKkbAw3.js";import{$ as t,D as n,c as r}from"./privy-context-81KmsBw2-CjWGzyg7.js";import{t as i}from"./jsx-runtime-BbDfbRii.js";import{t as a}from"./react-DrJ0MmMO.js";import{c as o,s}from"./Loader-UAZqxsnw-Cy7hEE2f.js";import{t as c}from"./react-DQnMl2Xv.js";import{l}from"./get-entropy-details-for-user-dHRH5Gpi-Dukf7_kJ.js";import{Fn as u}from"./localBatchGatewayRequest-5YxrERBj.js";import{b as d,t as f}from"./storage-Ufl800Ne-EalZTH9q.js";import{d as p,h as m,n as h}from"./use-unlink-wallet-BKK4_5Ur-DgsQ75lh.js";import{f as g}from"./guards-BIW-GiMJ-CHfXo8XI.js";import{t as _}from"./logger-CsXm3oIv-B0UYpNFI.js";var v=e(a(),1),y=i(),b=e=>{let[t,n]=(0,v.useState)(`auto`);return(0,v.useEffect)((()=>{let t=new ResizeObserver((e=>{n(e[0]?.contentRect.height??`auto`)}));return e.current&&t.observe(e.current),()=>{e.current&&t.unobserve(e.current)}}),[e.current]),t},x=o.div`
2
2
  text-align: left;
3
3
  flex-grow: 1;
4
4
  `,S=o.div`
@@ -1 +1 @@
1
- import{s as e}from"./rolldown-runtime-BcKkbAw3.js";import{$ as t}from"./privy-context-81KmsBw2-CjWGzyg7.js";import{t as n}from"./react-DrJ0MmMO.js";import{C as r,S as i,T as a}from"./storage-Ufl800Ne-D0bZBw-H.js";var o=e(n(),1);function s({rpcConfig:e,appId:n,address:s,chain:c}){let{chains:l}=t(),[u,d]=(0,o.useState)(0n),[f,p]=(0,o.useState)(!1),m=(0,o.useMemo)((()=>{let t=c||l[0];if(t)return a({chain:c,transport:r(i(t,e,n))})}),[c,e,n]),h=(0,o.useCallback)((async()=>{if(!s||!m)return;p(!0);let e=await m.getBalance({address:s}).catch(console.error);return e?(d(e),p(!1),e):void 0}),[m,s,d]);return(0,o.useEffect)((()=>{h().catch(console.error)}),[]),{balance:u,isLoading:f,reloadBalance:h}}export{s as t};
1
+ import{s as e}from"./rolldown-runtime-BcKkbAw3.js";import{$ as t}from"./privy-context-81KmsBw2-CjWGzyg7.js";import{t as n}from"./react-DrJ0MmMO.js";import{C as r,S as i,T as a}from"./storage-Ufl800Ne-EalZTH9q.js";var o=e(n(),1);function s({rpcConfig:e,appId:n,address:s,chain:c}){let{chains:l}=t(),[u,d]=(0,o.useState)(0n),[f,p]=(0,o.useState)(!1),m=(0,o.useMemo)((()=>{let t=c||l[0];if(t)return a({chain:c,transport:r(i(t,e,n))})}),[c,e,n]),h=(0,o.useCallback)((async()=>{if(!s||!m)return;p(!0);let e=await m.getBalance({address:s}).catch(console.error);return e?(d(e),p(!1),e):void 0}),[m,s,d]);return(0,o.useEffect)((()=>{h().catch(console.error)}),[]),{balance:u,isLoading:f,reloadBalance:h}}export{s as t};
@@ -1 +1 @@
1
- import{s as e}from"./rolldown-runtime-BcKkbAw3.js";import{n as t}from"./esm-n2lWo7kz.js";import{K as n,M as r,d as i,g as a}from"./esm-B5cbIQaz.js";import{$ as o,D as s,G as c,K as l,M as u,P as d,R as f,Y as p,Z as m,a as h,c as g,i as _,j as v,l as y}from"./privy-context-81KmsBw2-CjWGzyg7.js";import{t as b}from"./react-DrJ0MmMO.js";import{n as x}from"./modal-context-CwmSeFcv-DruX9J1E.js";import{i as S,n as C,s as w}from"./errors-BQ3N-RVt-BLqjTPNR.js";import{a as T,d as E,l as ee}from"./get-entropy-details-for-user-dHRH5Gpi-Dukf7_kJ.js";import{Fn as te}from"./localBatchGatewayRequest-3kLrX_c7.js";import{i as ne,y as re}from"./storage-Ufl800Ne-D0bZBw-H.js";import{d as ie,h as ae,i as oe,l as se,n as ce,r as le,s as ue}from"./use-unlink-wallet-BKK4_5Ur-CC2pq27z.js";import{h as de,i as fe,m as pe,n as me,p as he,t as ge}from"./pkce-DXF0yKjP-ChQhE0st.js";import{t as _e}from"./eventemitter3-CL76jPsW.js";import{G as ve,Z as ye,i as be,r as xe}from"./index.browser-B-i-Lj3J.js";import{t as Se}from"./PrivyPluginContext-DA-yS5vO-CtQWBiV2.js";var D=e(b(),1),Ce=({w:e,h:t})=>{let n=window.screenLeft===void 0?window.screenX:window.screenLeft,r=window.screenTop===void 0?window.screenY:window.screenTop,i=window.innerWidth?window.innerWidth:document.documentElement.clientWidth?document.documentElement.clientWidth:screen.width,a=window.innerHeight?window.innerHeight:document.documentElement.clientHeight?document.documentElement.clientHeight:screen.height,o=i/window.screen.availWidth,s=a/window.screen.availHeight;return`toolbar=0,location=0,menubar=0,height=${t},width=${e},popup=1,left=${(i-e)/2/o+n},top=${(a-t)/2/s+r}`},we=e=>window.open(e?.location,void 0,Ce({w:440,h:680})),Te=()=>{let{walletProxy:e,initializeWalletProxy:t,client:n}=o();return(0,D.useMemo)((()=>({signWithUserSigner:async({message:r,targetAppId:i})=>{let a=e??await t(3e4);if(!a)throw Error(`Wallet proxy not initialized`);let o=await n.getAccessToken();if(!o)throw Error(`User must be authenticated`);let{signature:s}=await a.signWithUserSigner({accessToken:o,message:r,targetAppId:i});return{signature:s}}})),[e,n])},Ee=[`solana:mainnet`,`solana:devnet`,`solana:testnet`],De=class{async authenticate(){if(!this.api)throw new S(`Auth flow has no API instance`);try{return await this.api.post(pe,{authorization_code:this.meta.authorizationCode,state_code:this.meta.stateCode,code_verifier:this.meta.codeVerifier,provider:this.meta.provider,mode:this.meta.disableSignup?`no-signup`:`login-or-sign-up`})}catch(e){throw C(e)}}async link(){if(!this.api)throw new S(`Auth flow has no API instance`);try{return await this.api.post(de,{authorization_code:this.meta.authorizationCode,state_code:this.meta.stateCode,code_verifier:this.meta.codeVerifier,provider:this.meta.provider})}catch(e){throw C(e)}}constructor(e){this.meta=e}};async function Oe({api:e,requesterAppId:t,providerAppId:n}){let r=(await e.get(`/api/v1/apps/${t}/cross-app/connections`)).connections.find((e=>e.provider_app_id===n));if(!r)throw new S(`Invalid connected app`);return{name:r.provider_app_name,logoUrl:r.provider_app_icon_url||void 0,apiUrl:r.provider_app_custom_api_url,readOnly:r.read_only,customAuthAuthorizeUrl:r.provider_app_custom_auth_authorize_url,customAuthTransactUrl:r.provider_app_custom_auth_transact_url}}async function ke({api:e,appId:t}){let n=ge(),r=me(),i=await fe(n);try{let{url:a}=await e.post(he,{provider:`privy:${t}`,redirect_to:window.location.href,code_challenge:i,state_code:r});return{url:a,stateCode:r,codeVerifier:n}}catch(e){throw C(e)}}async function Ae({appId:e,stateCode:t,codeVerifier:n,authorizationCode:r,action:i,client:a,disableSignup:o}){if(!r||!t)throw new S(`[Cross-App AuthFlow] Authorization and state codes code must be set prior to calling authenicate.`);if(r===`undefined`)throw new S(`User denied confirmation during cross-app auth flow`);try{let s=new De({authorizationCode:r,stateCode:t,codeVerifier:n,provider:`privy:${e}`,disableSignup:!!o});a.startAuthFlow(s);let c=(i===`link`?await a.link():await a.authenticate()).oAuthTokens?.accessToken;return console.debug(),c}catch(e){let t=C(e);throw t.privyErrorCode===w.ACCOUNT_TRANSFER_REQUIRED?t:t.privyErrorCode?new S(t.message||`Invalid code during cross-app auth flow.`,void 0,t.privyErrorCode):t.message===`User denied confirmation during cross-app auth flow`?new S(`Invalid code during cross-app auth flow.`,void 0,w.OAUTH_USER_DENIED):new S(`Invalid code during cross-app auth flow.`,void 0,w.UNKNOWN_AUTH_ERROR)}}var je=async({user:e,accessToken:t,proxy:n,refreshSessionAndUser:i,privy:a,appConfig:o,recoverEmbeddedWallet:s,setUser:c,walletIndex:l,chainType:u,recoveryMethod:f,recoveryPassword:m,recoveryAccessToken:h,idempotencyKey:g,additionalSigners:_})=>{let v;if(o.embeddedWallets.mode===`user-controlled-server-wallets-only`)v=(await r(a,{request:{chain_type:u,additional_signers:_?ne(_):void 0},headers:l===0&&g?{"privy-idempotency-key":g}:void 0})).id;else if(l===0){if(u===`ethereum`){let r=p(e);r&&await s({address:r.address}),await n.create({accessToken:t,solanaAddress:r?.address,recoveryMethod:f,recoveryPassword:m,recoveryAccessToken:h})}else{if(u!==`solana`)throw Error(`Invalid input to create wallet`);{let r=d(e);r&&await s({address:r.address}),await n.createSolana({accessToken:t,ethereumAddress:r?.address,recoveryMethod:f,recoveryPassword:m,recoveryAccessToken:h})}}}else{let{entropyId:r,entropyIdVerifier:i}=E(e);await s(),await n.addWallet({accessToken:t,entropyId:r,entropyIdVerifier:i,chainType:u,hdWalletIndex:l})}let y=await i(),b=T(y,{chainType:u}).find((e=>v===void 0?e.walletIndex===l:e.id===v));if(!y||!b)throw new S(`Created wallet was not found in the updated user.`,void 0,w.UNKNOWN_EMBEDDED_WALLET_ERROR);return c(y),{user:y,account:b}},Me=async({user:e,address:t,client:n,request:r,requesterAppId:i,reconnect:a})=>{n.createAnalyticsEvent({eventName:`cross_app_request_started`,payload:{address:t,method:r.method}});let o=e?.linkedAccounts.find((e=>e.type===`cross_app`&&(e.embeddedWallets.some((e=>e.address===t))||e.smartWallets.some((e=>e.address===t)))));if(!e||!o)throw n.createAnalyticsEvent({eventName:`cross_app_request_error`,payload:{error:`Cannot request a signature with this wallet address`,address:t}}),new S(`Cannot request a signature with this wallet address`);let s=n.getProviderAccessToken(o.providerApp.id),c=await Oe({api:n.api,requesterAppId:i,providerAppId:o.providerApp.id});if(!s){if(c.readOnly)throw console.error(`cannot transact against a read-only provider app`),new S(`Cannot transact against a read-only provider app`);await a({appId:o.providerApp.id,action:`link`})&&(s=n.getProviderAccessToken(o.providerApp.id))}if(!s)throw n.createAnalyticsEvent({eventName:`cross_app_request_error`,payload:{error:`Transactions require a valid token`,address:t}}),new S(`Transactions require a valid token`);let l=new URL(c.customAuthTransactUrl||`${c.apiUrl}/oauth/transact`);l.searchParams.set(`token`,s||``),l.searchParams.set(`request`,Ne(r));let u=we({location:l.href});if(!u)throw n.createAnalyticsEvent({eventName:`cross_app_request_error`,payload:{error:`Missing token`,address:t}}),new S(`Failed to initialize signature request`);return new Promise(((e,i)=>{let a=setTimeout((()=>{l(),i(new S(`Request timeout`)),n.createAnalyticsEvent({eventName:`cross_app_request_error`,payload:{error:`Request timeout`,address:t}})}),12e4),s=setInterval((()=>{u.closed&&(l(),i(new S(`User rejected request`)),n.createAnalyticsEvent({eventName:`cross_app_request_error`,payload:{error:`User rejected request`,address:t}}))}),300),c=a=>{a.data&&(a.data.token?.action===`set`&&a.data.token?.value!==void 0?n.storeProviderAccessToken(o.providerApp.id,a.data.token.value):a.data.token?.action===`clear`&&n.storeProviderAccessToken(o.providerApp.id,null),a.data.type===`PRIVY_CROSS_APP_ACTION_RESPONSE`&&a.data.result&&(l(),e(a.data.result),n.createAnalyticsEvent({eventName:`cross_app_request_success`,payload:{address:t,method:r.method}})),a.data.type===`PRIVY_CROSS_APP_ACTION_ERROR`&&a.data.error&&(l(),i(a.data.error),n.createAnalyticsEvent({eventName:`cross_app_request_error`,payload:{error:a.data.error,address:t}})))};window.addEventListener(`message`,c);let l=()=>{u.close(),clearInterval(s),clearTimeout(a),window.removeEventListener(`message`,c)}}))},Ne=e=>JSON.stringify({content:{request:{request:Pe(e,te)}},timestamp:Date.now(),callbackUrl:window.origin}),Pe=(e,t)=>typeof e==`bigint`?t(e):Array.isArray(e)?e.map((e=>Pe(e,t))):e&&typeof e==`object`?Object.fromEntries(Object.entries(e).map((([e,n])=>[e,Pe(n,t)]))):e,Fe=()=>{let{user:e,getAccessToken:t}=_(),{client:n,setUser:r,openModal:i,inProgressAuthFlowRef:a,inProgressLoginOrLinkMethodRef:c}=o(),l=s(),u=se(),{setModalData:d}=x(),f=(0,D.useCallback)((t=>e?.linkedAccounts.some((e=>e.type===`cross_app`&&e.smartWallets.some((e=>e.address===t))))??!1),[e]),p=(0,D.useCallback)((async({appId:e,action:r,disableSignup:o})=>{let s=await t();if(r===`link`&&!s)throw u(`linkAccount`,`onError`,w.MUST_BE_AUTHENTICATED,{linkMethod:`privy:${e}`}),new S(`User must be authenticated before linking an account.`);if(r===`login`&&s)throw u(`login`,`onError`,w.UNKNOWN_AUTH_ERROR),new S("Attempted to log in, but user is already logged in. Use a `link` helper instead.");c.current=`privy:${e}`,a.current=r;let f=we();return n.createAnalyticsEvent({eventName:`cross_app_auth_started`,payload:{providerAppId:e}}),new Promise((async(t,a)=>{let{name:s,logoUrl:c}=await Oe({api:n.api,providerAppId:e,requesterAppId:l.id});d({crossAppAuth:{appId:e,name:s,logoUrl:c,action:r,popup:f,disableSignup:o,onSuccess:t,onError:a}}),i(`CrossAppAuthScreen`)}))}),[t,u,c,a,n,l.id,d,i]),m=(0,D.useCallback)((async({subject:t})=>{let i=e?.linkedAccounts.find((e=>e.type===`cross_app`&&e.subject===t))?.providerApp;if(!i)throw new S(`Invalid subject`);n.storeProviderAccessToken(i.id,null);let a=await n.unlinkOAuth(`privy:${i.id}`,t);return r(a),a}),[e,n,r]),h=(0,D.useCallback)(((t,{address:r,chainId:i})=>Me({user:e,client:n,address:r,requesterAppId:l.id,request:{method:f(r)?`privy_signSmartWalletMessage`:`personal_sign`,params:[t,r],chainId:i},reconnect:p})),[e,n,l.id,f,p]),g=(0,D.useCallback)(((t,{address:r,chainId:i})=>{let a=re(t);return Me({user:e,client:n,address:r,requesterAppId:l.id,request:{method:f(r)?`privy_signSmartWalletTypedData`:`eth_signTypedData_v4`,params:[r,a],chainId:i},reconnect:p})}),[e,n,l.id,f,p]),v=(0,D.useCallback)(((t,{address:r})=>Me({user:e,client:n,address:r,requesterAppId:l.id,request:{method:f(r)?`privy_sendSmartWalletTx`:`eth_sendTransaction`,params:[t],chainId:t.chainId},reconnect:p})),[e,n,l.id,f,p]),y=(0,D.useCallback)(((t,{address:r})=>Me({user:e,client:n,address:r,requesterAppId:l.id,request:{method:f(r)?`privy_signSmartWalletTx`:`eth_signTransaction`,params:[t],chainId:t.chainId},reconnect:p})),[e,n,l.id,f,p]);return(0,D.useMemo)((()=>({startCrossAppAuthFlow:p,unlinkCrossAppAccount:m,signMessageWithCrossAppWallet:h,signTypedDataWithCrossAppWallet:g,sendTransactionWithCrossAppWallet:v,signTransactionWithCrossAppWallet:y})),[p,m,h,g,v,y])},Ie=()=>{let{client:e,setUser:t}=o();return{unlink:(0,D.useCallback)((async({address:n})=>{let r=await e.unlinkEmail(n);return t(r),r}),[e,t])}},Le=()=>{let{client:e,setUser:t}=o();return{unlink:(0,D.useCallback)((async({fid:n})=>{let r=await e.unlinkFarcaster(n);return t(r),r}),[e,t])}},Re=()=>{let{client:e,setUser:t}=o();return{unlink:(0,D.useCallback)((async({provider:n,subject:r})=>{let i=await e.unlinkOAuth(n,r);return t(i),i}),[e,t])}},ze=()=>{let{client:e,setUser:t,walletProxy:n}=o(),{getAccessToken:r}=_(),i=s()?.passkeys?.shouldUnenrollMfaOnUnlink??!1;return{unlink:(0,D.useCallback)((async({credentialId:a})=>{let o=await r();if(!o)throw Error(`Must have valid access token to enroll in MFA`);if(!n)throw Error(`Wallet proxy not initialized.`);await n.unlinkPasskeyAccount({credentialId:a,accessToken:o,removeAsMfa:i});let s=await e.getAuthenticatedUser();return t(s),s}),[i,e,r,t,n])}},Be=()=>{let{client:e,setUser:t}=o();return{unlink:(0,D.useCallback)((async({phoneNumber:n})=>{let r=await e.unlinkPhone(n);return t(r),r}),[e,t])}},Ve=()=>{let{client:e,setUser:t}=o();return{unlink:(0,D.useCallback)((async({telegramUserId:n})=>{let r=await e.unlinkTelegram(n);return t(r),r}),[e,t])}},He=e=>e.reduce(((e,t)=>!e||e.walletIndex<t.walletIndex?t:e),null),Ue=async({accessToken:e,appConfig:t,privy:n,emitPrivyEvent:r,proxy:i,refreshSessionAndUser:a,recoverEmbeddedWallet:o,user:s,walletIndex:c,setModalData:l,openModal:u,chainType:d,setUser:f,idempotencyKey:p,additionalSigners:m})=>{if(c<0)throw r(`createWallet`,`onError`,w.EMBEDDED_WALLET_CREATE_ERROR),Error(`A negative walletIndex (${c}) is invalid.`);let h=y(s),g=T(s).some((e=>!e.imported));if(c>0&&!h&&!g)throw r(`createWallet`,`onError`,w.EMBEDDED_WALLET_NOT_FOUND),Error(`Must have an existing embedded wallet to create an additional wallet.`);if(t.embeddedWallets.requireUserOwnedRecoveryOnCreate&&t.embeddedWallets.mode===`user-controlled-server-wallets-only`)throw r(`createWallet`,`onError`,w.EMBEDDED_WALLET_CREATE_ERROR),Error(`User owned recovery not yet supported for this app.`);if(!h&&t.embeddedWallets.requireUserOwnedRecoveryOnCreate)return await We({emitPrivyEvent:r,setModalData:l,openModal:u,chainType:d});let _=T(s,{chainType:d,walletIndex:c})[0];if(_)return{user:s,account:_};if(c===0&&!i)return We({emitPrivyEvent:r,setModalData:l,openModal:u,chainType:d});if(!i)throw r(`createWallet`,`onError`,w.UNKNOWN_EMBEDDED_WALLET_ERROR),Error(`Failed to connect to wallet proxy`);return je({appConfig:t,walletIndex:c,chainType:d,user:s,accessToken:e,proxy:i,refreshSessionAndUser:a,privy:n,recoverEmbeddedWallet:o,setUser:f,idempotencyKey:p,additionalSigners:m})},We=async({emitPrivyEvent:e,setModalData:t,openModal:n,chainType:r})=>new Promise(((i,a)=>{t({createWallet:{onSuccess:({user:t,account:n})=>{e(`createWallet`,`onSuccess`,{wallet:n}),i({user:t,account:n})},onFailure:t=>{e(`createWallet`,`onError`,w.UNKNOWN_EMBEDDED_WALLET_ERROR),a(t)},callAuthOnSuccessOnClose:!1,shouldCreateEth:r===`ethereum`,shouldCreateSol:r===`solana`}}),n(`EmbeddedWalletOnAccountCreateScreen`)})),Ge=()=>{let e=s(),t=se(),{setModalData:n}=x(),{initializeWalletProxy:r,recoverEmbeddedWallet:i,setUser:a,openModal:c,refreshSessionAndUser:l,privy:u,client:d}=o();return{create:async({chainType:o,options:s,latestUser:f,idempotencyKey:p})=>{let m=f;if(m||=await l(),!m)throw t(`createWallet`,`onError`,w.MUST_BE_AUTHENTICATED),Error(`User must be authenticated before creating a Privy wallet`);return await(async({appConfig:e,getAccessToken:t,initializeWalletProxy:n,user:r,privy:i,emitPrivyEvent:a,recoverEmbeddedWallet:o,setModalData:s,openModal:c,setUser:l,options:u,timeoutDuration:d,refreshSessionAndUser:f,chainType:p,idempotencyKey:m,additionalSigners:h})=>{let[g,_]=await Promise.all([n(d),t()]);if(!_||!r)throw a(`createWallet`,`onError`,w.MUST_BE_AUTHENTICATED),Error(`User must be authenticated before creating a Privy wallet`);if(!g&&e.customAuth?.enabled)throw a(`createWallet`,`onError`,w.UNKNOWN_EMBEDDED_WALLET_ERROR),Error(`Failed to connect to wallet proxy`);if(h&&e.embeddedWallets.mode!==`user-controlled-server-wallets-only`)throw new S(`Specifying additionalSigners is only supported for TEE execution and this app uses on-device execution. Learn more https://docs.privy.io/recipes/tee-wallet-migration-guide`);if(u&&`walletIndex`in u&&typeof u.walletIndex==`number`){if(e.embeddedWallets.mode===`user-controlled-server-wallets-only`)throw a(`createWallet`,`onError`,w.INVALID_DATA),Error("Invalid input, use `createAdditional` instead of `walletIndex` to create additional wallets.");return Ue({accessToken:_,appConfig:e,privy:i,emitPrivyEvent:a,openModal:c,proxy:g,refreshSessionAndUser:f,recoverEmbeddedWallet:o,setModalData:s,user:r,walletIndex:u.walletIndex,chainType:p,setUser:l,additionalSigners:h})}let v=u&&`createAdditional`in u&&u.createAdditional,y=T(r,{chainType:p});if(y[0]&&!v)throw a(`createWallet`,`onError`,w.EMBEDDED_WALLET_ALREADY_EXISTS),Error(`User already has an embedded wallet.`);return Ue({accessToken:_,appConfig:e,privy:i,emitPrivyEvent:a,openModal:c,proxy:g,recoverEmbeddedWallet:o,setModalData:s,user:r,walletIndex:(He(y)?.walletIndex??-1)+1,chainType:p,refreshSessionAndUser:f,setUser:l,idempotencyKey:m,additionalSigners:h})})({appConfig:e,privy:u,getAccessToken:()=>d.getAccessToken(),refreshSessionAndUser:l,initializeWalletProxy:r,user:m,emitPrivyEvent:t,recoverEmbeddedWallet:i,setModalData:n,openModal:c,setUser:a,options:s,timeoutDuration:v,chainType:o,idempotencyKey:p,additionalSigners:s?.signers})}}};function Ke(e){let{create:t}=Ge();return ce(`createWallet`,e),{createWallet:async e=>{e&&`target`in e&&e&&(e=void 0);let{account:n}=await t({chainType:`ethereum`,options:e});return n}}}var qe=e=>e.embeddedWallets.mode===`user-controlled-server-wallets-only`?`tee`:`on-device`,Je=async({emitPrivyEvent:e,getAccessToken:t,initializeWalletProxy:n,refreshSessionAndUser:r,user:i,appConfig:a},{chainType:o,additionalSigners:s},c)=>{if(!i)throw e(`linkAccount`,`onError`,w.MUST_BE_AUTHENTICATED,{linkMethod:`siwe`}),new S(`User must be authenticated before linking an account.`);let u=qe(a);if(s&&u===`on-device`)throw new S(`Specifying additionalSigners is only supported for TEE execution and this app uses on-device execution. Learn more https://docs.privy.io/recipes/tee-wallet-migration-guide`);let[d,p]=await Promise.all([t(),n(15e3)]);if(!p||!d)throw e(`linkAccount`,`onError`,w.MUST_BE_AUTHENTICATED,{linkMethod:`siwe`}),new S(`User must be authenticated before linking an account.`);let{address:m}=await c({proxy:p,accessToken:d,mode:u}),h=await r(),g=(o===`solana`?f(h):l(h))?.find((e=>e.address===m));if(!h||!g)throw e(`createWallet`,`onError`,w.UNKNOWN_EMBEDDED_WALLET_ERROR),Error(`Failed to import wallet`);return e(`createWallet`,`onSuccess`,{wallet:g}),{user:h,wallet:g}},Ye=(e,{privateKey:t,chainType:n,additionalSigners:r})=>(async(...e)=>(await Je(...e)).wallet)(e,{chainType:n,additionalSigners:r},(({proxy:e,accessToken:i,mode:a})=>e.importWallet({privateKey:t,accessToken:i,chainType:n,mode:a,additionalSigners:r}))),Xe=()=>{let{user:e}=_(),{client:t,refreshSessionAndUser:n,initializeWalletProxy:r}=o(),i=se(),a=s();return{importWallet:(0,D.useCallback)((o=>Ye({getAccessToken:()=>t.getAccessToken(),user:e,initializeWalletProxy:r,refreshSessionAndUser:n,emitPrivyEvent:i,appConfig:a},{...o,chainType:`ethereum`})),[e,t,n,r,i,a])}},O=()=>{let e=(0,D.useContext)(g),{importWallet:t}=Xe(),{exportWallet:n}=ue(),{createWallet:r}=Ke(),{unlinkCrossAppAccount:i}=Fe(),{unlink:a}=le(),{unlink:o}=Ie(),{unlink:s}=Be(),{unlink:c}=Le(),{unlink:l}=Ve(),{unlink:u}=ze(),{unlink:d}=Re(),f=(0,D.useCallback)((e=>a({address:e})),[a]),p=(0,D.useCallback)((e=>o({address:e})),[o]),m=(0,D.useCallback)((e=>s({phoneNumber:e})),[s]),h=(0,D.useCallback)((e=>c({fid:e})),[c]),_=(0,D.useCallback)((e=>l({telegramUserId:e})),[l]),v=(0,D.useCallback)((e=>u({credentialId:e})),[u]),y=(0,D.useCallback)((e=>d(e)),[d]),b=(0,D.useCallback)((e=>d({provider:`google`,subject:e})),[d]),x=(0,D.useCallback)((e=>d({provider:`twitter`,subject:e})),[d]),S=(0,D.useCallback)((e=>d({provider:`twitch`,subject:e})),[d]),C=(0,D.useCallback)((e=>d({provider:`discord`,subject:e})),[d]),w=(0,D.useCallback)((e=>d({provider:`github`,subject:e})),[d]),T=(0,D.useCallback)((e=>d({provider:`spotify`,subject:e})),[d]),E=(0,D.useCallback)((e=>d({provider:`instagram`,subject:e})),[d]),ee=(0,D.useCallback)((e=>d({provider:`tiktok`,subject:e})),[d]),te=(0,D.useCallback)((e=>d({provider:`line`,subject:e})),[d]),ne=(0,D.useCallback)((e=>d({provider:`linkedin`,subject:e})),[d]),re=(0,D.useCallback)((e=>d({provider:`apple`,subject:e})),[d]),{update:oe}=ie(),{update:se}=ae();return{...e,importWallet:t,createWallet:r,exportWallet:n,unlinkCrossAppAccount:i,unlinkWallet:f,unlinkEmail:p,unlinkPhone:m,unlinkGoogle:b,unlinkTwitter:x,unlinkTwitch:S,unlinkDiscord:C,unlinkGithub:w,unlinkSpotify:T,unlinkInstagram:E,unlinkTiktok:ee,unlinkLine:te,unlinkLinkedIn:ne,unlinkApple:re,unlinkFarcaster:h,unlinkTelegram:_,unlinkPasskey:v,unlinkOAuth:y,updateEmail:oe,updatePhone:se}};function k(e,t){if(!Object.prototype.hasOwnProperty.call(e,t))throw TypeError(`attempted to use private field on non-instance`);return e}var Ze=0,A=`__private_`+Ze+++`__implementation`;function j(e,t){if(!Object.prototype.hasOwnProperty.call(e,t))throw TypeError(`attempted to use private field on non-instance`);return e}var Qe=0;function M(e){return`__private_`+Qe+++`_`+e}var N=M(`_address`),P=M(`_publicKey`),F=M(`_chains`),I=M(`_features`),L=M(`_label`),R=M(`_icon`),$e=class e{get address(){return j(this,N)[N]}get publicKey(){return j(this,P)[P].slice()}get chains(){return j(this,F)[F].slice()}get features(){return j(this,I)[I].slice()}get label(){return j(this,L)[L]}get icon(){return j(this,R)[R]}constructor({address:t,publicKey:n,label:r,icon:i}){Object.defineProperty(this,N,{writable:!0,value:void 0}),Object.defineProperty(this,P,{writable:!0,value:void 0}),Object.defineProperty(this,F,{writable:!0,value:void 0}),Object.defineProperty(this,I,{writable:!0,value:void 0}),Object.defineProperty(this,L,{writable:!0,value:void 0}),Object.defineProperty(this,R,{writable:!0,value:void 0}),j(this,N)[N]=t,j(this,P)[P]=n,j(this,F)[F]=Ee,j(this,L)[L]=r,j(this,R)[R]=i,j(this,I)[I]=[`solana:signAndSendTransaction`,`solana:signTransaction`,`solana:signMessage`],new.target===e&&Object.freeze(this)}};function z(e,t){if(!Object.prototype.hasOwnProperty.call(e,t))throw TypeError(`attempted to use private field on non-instance`);return e}var et=0;function B(e){return`__private_`+et+++`_`+e}var V=B(`_listeners`),H=B(`_version`),U=B(`_name`),W=B(`_icon`),G=B(`_injection`),K=B(`_isPrivyWallet`),q=B(`_accounts`),J=B(`_on`),Y=B(`_emit`),tt=B(`_off`),X=B(`_connected`),Z=B(`_connect`),Q=B(`_disconnect`),nt=B(`_signMessage`),rt=B(`_signAndSendTransaction`),it=B(`_signTransaction`);function at(e,...t){z(this,V)[V][e]?.forEach((e=>e.apply(null,t)))}function ot(e,t){z(this,V)[V][e]=z(this,V)[V][e]?.filter((e=>t!==e))}var $=(...e)=>{if(typeof Buffer>`u`)throw new S(`Buffer is not defined.`,void 0,w.BUFFER_NOT_DEFINED);return Buffer.from(...e)};function st(e){try{return xe().decode(e)}catch(t){throw e[0]===129?Error(`Unable to decode V1 transaction. V1 transactions require @solana/kit v8 or later; check the version your app installs.`,{cause:t}):t}}function ct(e,t,n){let r=structuredClone(st(e)),i=ve(t);return i in r.signatures&&(r.signatures[i]=n),new Uint8Array(be().encode(r))}function lt(e){return new Uint8Array(st(e).messageBytes)}function ut(){let{isHeadlessSigning:e,walletProxy:t,initializeWalletProxy:n,recoverEmbeddedWallet:r,openModal:a,privy:s,client:c}=o(),{user:l}=O(),{setModalData:d}=x(),{signWithUserSigner:f}=Te();return{signMessage:({message:o,address:p,options:m})=>new Promise((async(g,_)=>{let v=h(l,p);if(v?.walletClientType!==`privy`)return void _(new S(`Wallet is not a Privy wallet`,void 0,w.EMBEDDED_WALLET_NOT_FOUND));let{entropyId:y,entropyIdVerifier:b}=E(l,v),x=u(v),C=$(o).toString(`base64`);if(C.length<1)return void _(new S(`Message must be a non-empty string`,void 0,w.INVALID_MESSAGE));let T=async()=>{let e;if(!l)throw Error(`User must be authenticated before signing with a Privy wallet`);let a=await c.getAccessToken();if(!a)throw Error(`User must be authenticated to use their embedded wallet.`);let o=t??await n(15e3);if(!o)throw Error(`Failed to initialize embedded wallet proxy.`);if(!await r({address:v.address}))throw Error(`Unable to connect to wallet`);if(x){let t=await i(s,f,{chain_type:`solana`,method:`signMessage`,params:{message:C,encoding:`base64`},wallet_id:v.id});if(!t.data||!(`signature`in t.data))throw Error(`Failed to sign message`);e=t.data.signature}else{let{response:t}=await o.rpc({accessToken:a,entropyId:y,entropyIdVerifier:b,chainType:`solana`,hdWalletIndex:v.walletIndex??0,requesterAppId:m?.uiOptions?.requesterAppId,request:{method:`signMessage`,params:{message:C}}});e=t.data.signature}return e};if(e({showWalletUIs:m?.uiOptions?.showWalletUIs}))try{let e=await T();g({signature:new Uint8Array($(e,`base64`))})}catch(e){_(e)}else d({signMessage:{method:`solana_signMessage`,data:C,confirmAndSign:T,onSuccess:e=>{g({signature:new Uint8Array($(e,`base64`))})},onFailure:e=>{_(e)},uiOptions:m?.uiOptions??{}},connectWallet:{recoveryMethod:v.recoveryMethod,connectingWalletAddress:v.address,entropyId:y,entropyIdVerifier:b,isUnifiedWallet:x,onCompleteNavigateTo:`SignRequestScreen`,onFailure:e=>{_(new S(`Failed to connect to wallet`,e,w.UNKNOWN_CONNECT_WALLET_ERROR))}}}),a(`EmbeddedWalletConnectingScreen`)}))}}function dt(){let{isHeadlessSigning:e,openModal:t,privy:r}=o(),{setModalData:a}=x(),{signMessage:s}=ut(),{signWithUserSigner:c}=Te(),{user:l}=O();return{signTransaction:async({transaction:o,options:d,chain:f=`solana:mainnet`,address:p})=>{let m=h(l,p);if(m?.walletClientType!==`privy`)throw new S(`Wallet is not a Privy wallet`,void 0,w.EMBEDDED_WALLET_NOT_FOUND);let g=u(m);async function _(e){if(g){let t=await i(r,c,{chain_type:`solana`,method:`signTransaction`,params:{transaction:n.base64.fromBytes(e),encoding:`base64`},wallet_id:m.id});if(t.data&&`signed_transaction`in t.data&&t.data.signed_transaction!=null)return{signedTransaction:new Uint8Array(n.base64.toBytes(t.data.signed_transaction))};throw Error(`Failed to sign transaction`)}let{signature:t}=await s({message:lt(e),address:p,options:{...d,uiOptions:{...d?.uiOptions,showWalletUIs:!1}}});return{signedTransaction:ct(e,p,t)}}return e({showWalletUIs:d?.uiOptions?.showWalletUIs})?_(o):new Promise((async(e,n)=>{let{entropyId:r,entropyIdVerifier:i}=E(l,m);function s(e){return t=>{n(t instanceof S?t:new S(`Failed to connect to wallet`,t,e))}}let c={account:m,transaction:new Uint8Array(o),chain:f,signOnly:!0,uiOptions:d?.uiOptions||{},onConfirm:_,onSuccess:e,onFailure:s(w.TRANSACTION_FAILURE)};a({connectWallet:{recoveryMethod:m.recoveryMethod,connectingWalletAddress:m.address,entropyId:r,entropyIdVerifier:i,isUnifiedWallet:g,onCompleteNavigateTo:`StandardSignAndSendTransactionScreen`,onFailure:s(w.UNKNOWN_CONNECT_WALLET_ERROR)},standardSignAndSendTransaction:c}),t(`EmbeddedWalletConnectingScreen`)}))}}}var ft=Symbol(`default-solana-rpcs-plugin`);async function pt({rpcSubscriptions:e,signature:t,timeout:n}){let r=new AbortController,i=await e.signatureNotifications(t,{commitment:`confirmed`}).subscribe({abortSignal:r.signal}),a=await Promise.race([new Promise((e=>{setTimeout((()=>{r.abort(),e(Error(`Transaction confirmation timed out`))}),n)})),new Promise((async e=>{for await(let t of i){if(r.abort(),t.value.err)return e(Error(`Transaction confirmation failed`));e(void 0)}}))]);if(a instanceof Error)throw a}function mt({rpc:e,rpcSubscriptions:t,chain:n,blockExplorerUrl:r}){return{rpc:e,rpcSubscriptions:t,chain:n,blockExplorerUrl:r,sendAndConfirmTransaction:function({rpc:e,rpcSubscriptions:t}){return async(n,r)=>new Promise((async(i,a)=>{try{let a=await e.sendTransaction($(n).toString(`base64`),{preflightCommitment:`confirmed`,encoding:`base64`,skipPreflight:r?.skipPreflight??!1}).send();r?.skipConfirmation||await pt({rpcSubscriptions:t,signature:a,timeout:1e4}),i({signature:new Uint8Array(ye().encode(a))})}catch(e){a(e)}}))}({rpc:e,rpcSubscriptions:t})}}function ht(){let e=s(),t=Se(),n=(0,D.useMemo)((()=>{let n=t(ft)?.getDefaultRpcs({appId:e.id});return Object.fromEntries([`solana:mainnet`,`solana:devnet`,`solana:testnet`].map((t=>{let r=e.solanaRpcs[t]??n?.[t]??null;return[t,r?mt({chain:t,rpc:r.rpc,rpcSubscriptions:r.rpcSubscriptions,blockExplorerUrl:r.blockExplorerUrl??`https://explorer.solana.com?cluster=${t.replace(`solana:`,``)}`}):null]})))}),[e.solanaRpcs,e.id,t]);return(0,D.useCallback)((e=>{if(!n[e])throw Error(`No RPC configuration found for chain ${e}`);return n[e]}),[n])}function gt(){let e=s(),{isHeadlessSigning:n,openModal:r,privy:a}=o(),{setModalData:c}=x(),{signTransaction:l}=dt(),d=ht(),{user:f}=O(),{signWithUserSigner:p}=Te();return{signAndSendTransaction:async({transaction:o,address:s,chain:m=`solana:mainnet`,options:g})=>{let _=h(f,s);if(_?.walletClientType!==`privy`)throw new S(`Wallet is not a Privy wallet`,void 0,w.EMBEDDED_WALLET_NOT_FOUND);let v=u(_);async function y(e){let n=g?.skipSimulation?{"x-privy-skip-simulation":`true`}:void 0;if(g?.sponsor)return await(async e=>{if(!v)throw new S(`Sponsoring transactions is only supported for wallets on the TEE stack`,w.INVALID_DATA);let r=await i(a,p,{chain_type:`solana`,method:`signAndSendTransaction`,sponsor:!0,params:{transaction:$(e).toString(`base64`),encoding:`base64`},caip2:`solana:${(await d(m).rpc.getGenesisHash().send()).substring(0,32)}`,wallet_id:_.id,optimistic_broadcast:g?.optimisticBroadcast??!1,headers:n});if(r.data&&`hash`in r.data)return{signature:t.decode(r.data.hash)};throw Error(`Failed to sign and send transaction`)})(e);let{signedTransaction:r}=await l({transaction:e,address:s,chain:m,options:{...g,uiOptions:{...g?.uiOptions,showWalletUIs:!1}}}),{signature:o}=await d(m).sendAndConfirmTransaction(r,{skipPreflight:g?.skipSimulation,skipConfirmation:g?.optimisticBroadcast});return{signature:o}}return n({showWalletUIs:g?.uiOptions?.showWalletUIs})?y(o):new Promise((async(t,n)=>{let i,a,{entropyId:l,entropyIdVerifier:u}=E(f,_);function d(e){return t=>{n(t instanceof S?t:new S(`Failed to connect to wallet`,t,e))}}let p={account:_,transaction:new Uint8Array(o),chain:m,signOnly:!1,uiOptions:g?.uiOptions||{},onConfirm:y,onSuccess:t,onFailure:d(w.TRANSACTION_FAILURE),isSponsored:!!g?.sponsor},h={recoveryMethod:_.recoveryMethod,connectingWalletAddress:_.address,entropyId:l,entropyIdVerifier:u,isUnifiedWallet:v,onCompleteNavigateTo:`StandardSignAndSendTransactionScreen`,onFailure:d(w.UNKNOWN_CONNECT_WALLET_ERROR)};e.fundingConfig&&(i=oe({address:s,appConfig:e,methodScreen:`FundingMethodSelectionScreen`,fundWalletConfig:{...g,asset:`native-currency`,chain:m},externalSolanaFundingScreen:`FundSolWalletWithExternalSolanaWallet`}),a={amount:e.fundingConfig.defaultRecommendedAmount,asset:`SOL`,chain:m,destinationAddress:s,afterSuccessScreen:`StandardSignAndSendTransactionScreen`,sourceWalletData:void 0}),c({connectWallet:h,standardSignAndSendTransaction:p,funding:i,solanaFundingData:a}),r(`EmbeddedWalletConnectingScreen`)}))}}}var _t=new class extends _e{setImplementation(e){k(this,A)[A]=e}async signMessage(e){return k(this,A)[A].signMessage(e)}async signAndSendTransaction(e){return k(this,A)[A].signAndSendTransaction(e)}async signTransaction(e){return k(this,A)[A].signTransaction(e)}constructor(e){super(),Object.defineProperty(this,A,{writable:!0,value:void 0}),k(this,A)[A]=e}}({signTransaction:m(`signTransaction was not injected`),signAndSendTransaction:m(`signAndSendTransaction was not injected`),signMessage:m(`signMessage was not injected`)}),vt=new class{get version(){return z(this,H)[H]}get name(){return z(this,U)[U]}get icon(){return z(this,W)[W]}get chains(){return Ee.slice()}get features(){return{"standard:connect":{version:`1.0.0`,connect:z(this,Z)[Z]},"standard:disconnect":{version:`1.0.0`,disconnect:z(this,Q)[Q]},"standard:events":{version:`1.0.0`,on:z(this,J)[J]},"solana:signAndSendTransaction":{version:`1.0.0`,supportedTransactionVersions:[`legacy`,0,1],signAndSendTransaction:z(this,rt)[rt]},"solana:signTransaction":{version:`1.0.0`,supportedTransactionVersions:[`legacy`,0,1],signTransaction:z(this,it)[it]},"solana:signMessage":{version:`1.0.0`,signMessage:z(this,nt)[nt]},"privy:":{privy:{signMessage:z(this,G)[G].signMessage,signTransaction:z(this,G)[G].signTransaction,signAndSendTransaction:z(this,G)[G].signAndSendTransaction}}}}get accounts(){return z(this,q)[q].slice()}get isPrivyWallet(){return z(this,K)[K]}constructor({name:e,icon:n,version:r,injection:i,wallets:a}){Object.defineProperty(this,Y,{value:at}),Object.defineProperty(this,tt,{value:ot}),Object.defineProperty(this,V,{writable:!0,value:void 0}),Object.defineProperty(this,H,{writable:!0,value:void 0}),Object.defineProperty(this,U,{writable:!0,value:void 0}),Object.defineProperty(this,W,{writable:!0,value:void 0}),Object.defineProperty(this,G,{writable:!0,value:void 0}),Object.defineProperty(this,K,{writable:!0,value:void 0}),Object.defineProperty(this,q,{writable:!0,value:void 0}),Object.defineProperty(this,J,{writable:!0,value:void 0}),Object.defineProperty(this,X,{writable:!0,value:void 0}),Object.defineProperty(this,Z,{writable:!0,value:void 0}),Object.defineProperty(this,Q,{writable:!0,value:void 0}),Object.defineProperty(this,nt,{writable:!0,value:void 0}),Object.defineProperty(this,rt,{writable:!0,value:void 0}),Object.defineProperty(this,it,{writable:!0,value:void 0}),z(this,V)[V]={},z(this,J)[J]=(e,t)=>(z(this,V)[V][e]?.push(t)||(z(this,V)[V][e]=[t]),()=>z(this,tt)[tt](e,t)),z(this,X)[X]=e=>{e!=null&&(z(this,q)[q]=e.map((({address:e})=>new $e({address:e,publicKey:t.decode(e)})))),z(this,Y)[Y](`change`,{accounts:this.accounts})},z(this,Z)[Z]=async()=>(z(this,Y)[Y](`change`,{accounts:this.accounts}),{accounts:this.accounts}),z(this,Q)[Q]=async()=>{z(this,Y)[Y](`change`,{accounts:this.accounts})},z(this,nt)[nt]=async(...e)=>{let t=[];for(let{account:n,...r}of e){let{signature:e}=await z(this,G)[G].signMessage({...r,address:n.address});t.push({signedMessage:r.message,signature:e})}return t},z(this,rt)[rt]=async(...e)=>{let t=[];for(let n of e){let{signature:e}=await z(this,G)[G].signAndSendTransaction({...n,transaction:n.transaction,address:n.account.address,chain:n.chain||`solana:mainnet`,options:n.options});t.push({signature:e})}return t},z(this,it)[it]=async(...e)=>{let t=[];for(let{transaction:n,account:r,options:i,chain:a}of e){let{signedTransaction:e}=await z(this,G)[G].signTransaction({transaction:n,address:r.address,chain:a||`solana:mainnet`,options:i});t.push({signedTransaction:e})}return t},z(this,U)[U]=e,z(this,W)[W]=n,z(this,H)[H]=r,z(this,G)[G]=i,z(this,q)[q]=[],z(this,K)[K]=!0,i.on(`accountChanged`,z(this,X)[X],this),z(this,X)[X](a)}}({name:`Privy`,version:`1.0.0`,icon:`data:image/png;base64,AAABAAEAFBQAAAAAIABlAQAAFgAAAIlQTkcNChoKAAAADUlIRFIAAAAUAAAAFAgGAAAAjYkdDQAAAAlwSFlzAAAOwwAADsMBx2+oZAAAAQVJREFUeJxiYMANZIC4E4ivAPFPIP4FxDeAuB+IlfDowwBMQFwJxF+B+D8O/AOI66Bq8QJGIF6ExyB0vAqImfEZmEeCYTDcgMswPiB+T4aB34FYApuBsWQYBsP52AycToGBK7EZuJECAw9jM3AVBQbuwWZgIwUGTsZmoDkFBnpiMxAEjpJh2FV8iVsbiD+TYBgoDVrgMgwGnID4HRGGgTKBGyHDYEAaiBdCSxh0g/5AU4Q8sYYhAzEgjoGmABBOgFo2eACowFABYn0oVgViAVINkQTiZUD8DIj/ATF6GILEXgLxCiCWIsZAbiAuBeKtQHwHiEHJ6C8UfwHie0C8E4jLoWpRAAAAAP//rcbhsQAAAAZJREFUAwBYFs3VKJ0cuQAAAABJRU5ErkJggg==`,wallets:[],injection:_t});function yt(){let{client:e}=o(),{ready:t,wallet:n}=function(){let{ready:e}=ee(),{user:t}=O(),{signMessage:n}=ut(),{signTransaction:r}=dt(),{signAndSendTransaction:i}=gt(),a=(0,D.useMemo)((()=>{let e=[...c(t).sort(((e,t)=>(e.walletIndex??0)-(t.walletIndex??0)))],n=f(t);return n.length?[...e,...n]:e}),[t]),o=(0,D.useMemo)((()=>({signMessage:async({message:e,address:t,options:r})=>await n({message:e,address:t,options:r}),signTransaction:async({transaction:e,address:t,chain:n,options:i})=>await r({transaction:e,address:t,chain:n,options:i}),async signAndSendTransaction({transaction:e,address:t,chain:n,options:r}){let{signature:a}=await i({transaction:e,address:t,chain:n,options:r});return{signature:a}}})),[n,r,i]);return(0,D.useEffect)((()=>{_t?.setImplementation(o)}),[o]),(0,D.useEffect)((()=>{var t;!e||(t=vt.accounts).length===a.length&&t.every(((e,t)=>e.address===a[t]?.address))||_t?.emit(`accountChanged`,a)}),[e,a]),{ready:e,wallet:vt}}(),[r,i]=(0,D.useState)([]),[a,s]=(0,D.useState)([]);return(0,D.useEffect)((()=>{let e=[n,...r.filter((e=>e.chainType===`solana`&&!!e.wallet.features)).map((e=>e.wallet))];s(e);let t=r.flatMap((t=>{let n=()=>s([...e]);return t.on(`walletsUpdated`,n),{connector:t,off:n}})),i=e.map((t=>t.features[`standard:events`]?.on(`change`,(()=>{s([...e])}))));return()=>{i.forEach((e=>e?.())),t.forEach((({connector:e,off:t})=>e.off(`walletsUpdated`,t)))}}),[r]),(0,D.useEffect)((()=>{i(e.connectors?.walletConnectors.filter((e=>e.chainType===`solana`))??[]);let t=()=>{i(e.connectors?.walletConnectors.filter((e=>e.chainType===`solana`))??[])};return e.connectors?.on(`connectorInitialized`,t),()=>{e.connectors?.off(`connectorInitialized`,t)}}),[t,e.connectors]),{ready:t,wallets:a}}function bt(){let{ready:e,wallets:t}=yt();return{ready:e,wallets:(0,D.useMemo)((()=>t.flatMap((e=>e.accounts.map((t=>new a({wallet:e,account:t})))))),[t])}}export{we as C,Te as S,je as _,qe as a,ht as b,lt as c,Re as d,Ae as f,ke as g,Ie as h,O as i,ze as l,$ as m,Ke as n,Je as o,Xe as p,bt as r,Fe as s,Ge as t,pt as u,Le as v,Be as x,Ve as y};
1
+ import{s as e}from"./rolldown-runtime-BcKkbAw3.js";import{n as t}from"./esm-n2lWo7kz.js";import{K as n,M as r,d as i,g as a}from"./esm-vs5jNx_Y.js";import{$ as o,D as s,G as c,K as l,M as u,P as d,R as f,Y as p,Z as m,a as h,c as g,i as _,j as v,l as y}from"./privy-context-81KmsBw2-CjWGzyg7.js";import{t as b}from"./react-DrJ0MmMO.js";import{n as x}from"./modal-context-CwmSeFcv-DruX9J1E.js";import{i as S,n as C,s as w}from"./errors-BQ3N-RVt-BLqjTPNR.js";import{a as T,d as E,l as ee}from"./get-entropy-details-for-user-dHRH5Gpi-Dukf7_kJ.js";import{Fn as te}from"./localBatchGatewayRequest-5YxrERBj.js";import{i as ne,y as re}from"./storage-Ufl800Ne-EalZTH9q.js";import{d as ie,h as ae,i as oe,l as se,n as ce,r as le,s as ue}from"./use-unlink-wallet-BKK4_5Ur-DgsQ75lh.js";import{h as de,i as fe,m as pe,n as me,p as he,t as ge}from"./pkce-DXF0yKjP-Bqz4wAsq.js";import{t as _e}from"./eventemitter3-CL76jPsW.js";import{G as ve,Z as ye,i as be,r as xe}from"./index.browser-B-i-Lj3J.js";import{t as Se}from"./PrivyPluginContext-DA-yS5vO-CtQWBiV2.js";var D=e(b(),1),Ce=({w:e,h:t})=>{let n=window.screenLeft===void 0?window.screenX:window.screenLeft,r=window.screenTop===void 0?window.screenY:window.screenTop,i=window.innerWidth?window.innerWidth:document.documentElement.clientWidth?document.documentElement.clientWidth:screen.width,a=window.innerHeight?window.innerHeight:document.documentElement.clientHeight?document.documentElement.clientHeight:screen.height,o=i/window.screen.availWidth,s=a/window.screen.availHeight;return`toolbar=0,location=0,menubar=0,height=${t},width=${e},popup=1,left=${(i-e)/2/o+n},top=${(a-t)/2/s+r}`},we=e=>window.open(e?.location,void 0,Ce({w:440,h:680})),Te=()=>{let{walletProxy:e,initializeWalletProxy:t,client:n}=o();return(0,D.useMemo)((()=>({signWithUserSigner:async({message:r,targetAppId:i})=>{let a=e??await t(3e4);if(!a)throw Error(`Wallet proxy not initialized`);let o=await n.getAccessToken();if(!o)throw Error(`User must be authenticated`);let{signature:s}=await a.signWithUserSigner({accessToken:o,message:r,targetAppId:i});return{signature:s}}})),[e,n])},Ee=[`solana:mainnet`,`solana:devnet`,`solana:testnet`],De=class{async authenticate(){if(!this.api)throw new S(`Auth flow has no API instance`);try{return await this.api.post(pe,{authorization_code:this.meta.authorizationCode,state_code:this.meta.stateCode,code_verifier:this.meta.codeVerifier,provider:this.meta.provider,mode:this.meta.disableSignup?`no-signup`:`login-or-sign-up`})}catch(e){throw C(e)}}async link(){if(!this.api)throw new S(`Auth flow has no API instance`);try{return await this.api.post(de,{authorization_code:this.meta.authorizationCode,state_code:this.meta.stateCode,code_verifier:this.meta.codeVerifier,provider:this.meta.provider})}catch(e){throw C(e)}}constructor(e){this.meta=e}};async function Oe({api:e,requesterAppId:t,providerAppId:n}){let r=(await e.get(`/api/v1/apps/${t}/cross-app/connections`)).connections.find((e=>e.provider_app_id===n));if(!r)throw new S(`Invalid connected app`);return{name:r.provider_app_name,logoUrl:r.provider_app_icon_url||void 0,apiUrl:r.provider_app_custom_api_url,readOnly:r.read_only,customAuthAuthorizeUrl:r.provider_app_custom_auth_authorize_url,customAuthTransactUrl:r.provider_app_custom_auth_transact_url}}async function ke({api:e,appId:t}){let n=ge(),r=me(),i=await fe(n);try{let{url:a}=await e.post(he,{provider:`privy:${t}`,redirect_to:window.location.href,code_challenge:i,state_code:r});return{url:a,stateCode:r,codeVerifier:n}}catch(e){throw C(e)}}async function Ae({appId:e,stateCode:t,codeVerifier:n,authorizationCode:r,action:i,client:a,disableSignup:o}){if(!r||!t)throw new S(`[Cross-App AuthFlow] Authorization and state codes code must be set prior to calling authenicate.`);if(r===`undefined`)throw new S(`User denied confirmation during cross-app auth flow`);try{let s=new De({authorizationCode:r,stateCode:t,codeVerifier:n,provider:`privy:${e}`,disableSignup:!!o});a.startAuthFlow(s);let c=(i===`link`?await a.link():await a.authenticate()).oAuthTokens?.accessToken;return console.debug(),c}catch(e){let t=C(e);throw t.privyErrorCode===w.ACCOUNT_TRANSFER_REQUIRED?t:t.privyErrorCode?new S(t.message||`Invalid code during cross-app auth flow.`,void 0,t.privyErrorCode):t.message===`User denied confirmation during cross-app auth flow`?new S(`Invalid code during cross-app auth flow.`,void 0,w.OAUTH_USER_DENIED):new S(`Invalid code during cross-app auth flow.`,void 0,w.UNKNOWN_AUTH_ERROR)}}var je=async({user:e,accessToken:t,proxy:n,refreshSessionAndUser:i,privy:a,appConfig:o,recoverEmbeddedWallet:s,setUser:c,walletIndex:l,chainType:u,recoveryMethod:f,recoveryPassword:m,recoveryAccessToken:h,idempotencyKey:g,additionalSigners:_})=>{let v;if(o.embeddedWallets.mode===`user-controlled-server-wallets-only`)v=(await r(a,{request:{chain_type:u,additional_signers:_?ne(_):void 0},headers:l===0&&g?{"privy-idempotency-key":g}:void 0})).id;else if(l===0){if(u===`ethereum`){let r=p(e);r&&await s({address:r.address}),await n.create({accessToken:t,solanaAddress:r?.address,recoveryMethod:f,recoveryPassword:m,recoveryAccessToken:h})}else{if(u!==`solana`)throw Error(`Invalid input to create wallet`);{let r=d(e);r&&await s({address:r.address}),await n.createSolana({accessToken:t,ethereumAddress:r?.address,recoveryMethod:f,recoveryPassword:m,recoveryAccessToken:h})}}}else{let{entropyId:r,entropyIdVerifier:i}=E(e);await s(),await n.addWallet({accessToken:t,entropyId:r,entropyIdVerifier:i,chainType:u,hdWalletIndex:l})}let y=await i(),b=T(y,{chainType:u}).find((e=>v===void 0?e.walletIndex===l:e.id===v));if(!y||!b)throw new S(`Created wallet was not found in the updated user.`,void 0,w.UNKNOWN_EMBEDDED_WALLET_ERROR);return c(y),{user:y,account:b}},Me=async({user:e,address:t,client:n,request:r,requesterAppId:i,reconnect:a})=>{n.createAnalyticsEvent({eventName:`cross_app_request_started`,payload:{address:t,method:r.method}});let o=e?.linkedAccounts.find((e=>e.type===`cross_app`&&(e.embeddedWallets.some((e=>e.address===t))||e.smartWallets.some((e=>e.address===t)))));if(!e||!o)throw n.createAnalyticsEvent({eventName:`cross_app_request_error`,payload:{error:`Cannot request a signature with this wallet address`,address:t}}),new S(`Cannot request a signature with this wallet address`);let s=n.getProviderAccessToken(o.providerApp.id),c=await Oe({api:n.api,requesterAppId:i,providerAppId:o.providerApp.id});if(!s){if(c.readOnly)throw console.error(`cannot transact against a read-only provider app`),new S(`Cannot transact against a read-only provider app`);await a({appId:o.providerApp.id,action:`link`})&&(s=n.getProviderAccessToken(o.providerApp.id))}if(!s)throw n.createAnalyticsEvent({eventName:`cross_app_request_error`,payload:{error:`Transactions require a valid token`,address:t}}),new S(`Transactions require a valid token`);let l=new URL(c.customAuthTransactUrl||`${c.apiUrl}/oauth/transact`);l.searchParams.set(`token`,s||``),l.searchParams.set(`request`,Ne(r));let u=we({location:l.href});if(!u)throw n.createAnalyticsEvent({eventName:`cross_app_request_error`,payload:{error:`Missing token`,address:t}}),new S(`Failed to initialize signature request`);return new Promise(((e,i)=>{let a=setTimeout((()=>{l(),i(new S(`Request timeout`)),n.createAnalyticsEvent({eventName:`cross_app_request_error`,payload:{error:`Request timeout`,address:t}})}),12e4),s=setInterval((()=>{u.closed&&(l(),i(new S(`User rejected request`)),n.createAnalyticsEvent({eventName:`cross_app_request_error`,payload:{error:`User rejected request`,address:t}}))}),300),c=a=>{a.data&&(a.data.token?.action===`set`&&a.data.token?.value!==void 0?n.storeProviderAccessToken(o.providerApp.id,a.data.token.value):a.data.token?.action===`clear`&&n.storeProviderAccessToken(o.providerApp.id,null),a.data.type===`PRIVY_CROSS_APP_ACTION_RESPONSE`&&a.data.result&&(l(),e(a.data.result),n.createAnalyticsEvent({eventName:`cross_app_request_success`,payload:{address:t,method:r.method}})),a.data.type===`PRIVY_CROSS_APP_ACTION_ERROR`&&a.data.error&&(l(),i(a.data.error),n.createAnalyticsEvent({eventName:`cross_app_request_error`,payload:{error:a.data.error,address:t}})))};window.addEventListener(`message`,c);let l=()=>{u.close(),clearInterval(s),clearTimeout(a),window.removeEventListener(`message`,c)}}))},Ne=e=>JSON.stringify({content:{request:{request:Pe(e,te)}},timestamp:Date.now(),callbackUrl:window.origin}),Pe=(e,t)=>typeof e==`bigint`?t(e):Array.isArray(e)?e.map((e=>Pe(e,t))):e&&typeof e==`object`?Object.fromEntries(Object.entries(e).map((([e,n])=>[e,Pe(n,t)]))):e,Fe=()=>{let{user:e,getAccessToken:t}=_(),{client:n,setUser:r,openModal:i,inProgressAuthFlowRef:a,inProgressLoginOrLinkMethodRef:c}=o(),l=s(),u=se(),{setModalData:d}=x(),f=(0,D.useCallback)((t=>e?.linkedAccounts.some((e=>e.type===`cross_app`&&e.smartWallets.some((e=>e.address===t))))??!1),[e]),p=(0,D.useCallback)((async({appId:e,action:r,disableSignup:o})=>{let s=await t();if(r===`link`&&!s)throw u(`linkAccount`,`onError`,w.MUST_BE_AUTHENTICATED,{linkMethod:`privy:${e}`}),new S(`User must be authenticated before linking an account.`);if(r===`login`&&s)throw u(`login`,`onError`,w.UNKNOWN_AUTH_ERROR),new S("Attempted to log in, but user is already logged in. Use a `link` helper instead.");c.current=`privy:${e}`,a.current=r;let f=we();return n.createAnalyticsEvent({eventName:`cross_app_auth_started`,payload:{providerAppId:e}}),new Promise((async(t,a)=>{let{name:s,logoUrl:c}=await Oe({api:n.api,providerAppId:e,requesterAppId:l.id});d({crossAppAuth:{appId:e,name:s,logoUrl:c,action:r,popup:f,disableSignup:o,onSuccess:t,onError:a}}),i(`CrossAppAuthScreen`)}))}),[t,u,c,a,n,l.id,d,i]),m=(0,D.useCallback)((async({subject:t})=>{let i=e?.linkedAccounts.find((e=>e.type===`cross_app`&&e.subject===t))?.providerApp;if(!i)throw new S(`Invalid subject`);n.storeProviderAccessToken(i.id,null);let a=await n.unlinkOAuth(`privy:${i.id}`,t);return r(a),a}),[e,n,r]),h=(0,D.useCallback)(((t,{address:r,chainId:i})=>Me({user:e,client:n,address:r,requesterAppId:l.id,request:{method:f(r)?`privy_signSmartWalletMessage`:`personal_sign`,params:[t,r],chainId:i},reconnect:p})),[e,n,l.id,f,p]),g=(0,D.useCallback)(((t,{address:r,chainId:i})=>{let a=re(t);return Me({user:e,client:n,address:r,requesterAppId:l.id,request:{method:f(r)?`privy_signSmartWalletTypedData`:`eth_signTypedData_v4`,params:[r,a],chainId:i},reconnect:p})}),[e,n,l.id,f,p]),v=(0,D.useCallback)(((t,{address:r})=>Me({user:e,client:n,address:r,requesterAppId:l.id,request:{method:f(r)?`privy_sendSmartWalletTx`:`eth_sendTransaction`,params:[t],chainId:t.chainId},reconnect:p})),[e,n,l.id,f,p]),y=(0,D.useCallback)(((t,{address:r})=>Me({user:e,client:n,address:r,requesterAppId:l.id,request:{method:f(r)?`privy_signSmartWalletTx`:`eth_signTransaction`,params:[t],chainId:t.chainId},reconnect:p})),[e,n,l.id,f,p]);return(0,D.useMemo)((()=>({startCrossAppAuthFlow:p,unlinkCrossAppAccount:m,signMessageWithCrossAppWallet:h,signTypedDataWithCrossAppWallet:g,sendTransactionWithCrossAppWallet:v,signTransactionWithCrossAppWallet:y})),[p,m,h,g,v,y])},Ie=()=>{let{client:e,setUser:t}=o();return{unlink:(0,D.useCallback)((async({address:n})=>{let r=await e.unlinkEmail(n);return t(r),r}),[e,t])}},Le=()=>{let{client:e,setUser:t}=o();return{unlink:(0,D.useCallback)((async({fid:n})=>{let r=await e.unlinkFarcaster(n);return t(r),r}),[e,t])}},Re=()=>{let{client:e,setUser:t}=o();return{unlink:(0,D.useCallback)((async({provider:n,subject:r})=>{let i=await e.unlinkOAuth(n,r);return t(i),i}),[e,t])}},ze=()=>{let{client:e,setUser:t,walletProxy:n}=o(),{getAccessToken:r}=_(),i=s()?.passkeys?.shouldUnenrollMfaOnUnlink??!1;return{unlink:(0,D.useCallback)((async({credentialId:a})=>{let o=await r();if(!o)throw Error(`Must have valid access token to enroll in MFA`);if(!n)throw Error(`Wallet proxy not initialized.`);await n.unlinkPasskeyAccount({credentialId:a,accessToken:o,removeAsMfa:i});let s=await e.getAuthenticatedUser();return t(s),s}),[i,e,r,t,n])}},Be=()=>{let{client:e,setUser:t}=o();return{unlink:(0,D.useCallback)((async({phoneNumber:n})=>{let r=await e.unlinkPhone(n);return t(r),r}),[e,t])}},Ve=()=>{let{client:e,setUser:t}=o();return{unlink:(0,D.useCallback)((async({telegramUserId:n})=>{let r=await e.unlinkTelegram(n);return t(r),r}),[e,t])}},He=e=>e.reduce(((e,t)=>!e||e.walletIndex<t.walletIndex?t:e),null),Ue=async({accessToken:e,appConfig:t,privy:n,emitPrivyEvent:r,proxy:i,refreshSessionAndUser:a,recoverEmbeddedWallet:o,user:s,walletIndex:c,setModalData:l,openModal:u,chainType:d,setUser:f,idempotencyKey:p,additionalSigners:m})=>{if(c<0)throw r(`createWallet`,`onError`,w.EMBEDDED_WALLET_CREATE_ERROR),Error(`A negative walletIndex (${c}) is invalid.`);let h=y(s),g=T(s).some((e=>!e.imported));if(c>0&&!h&&!g)throw r(`createWallet`,`onError`,w.EMBEDDED_WALLET_NOT_FOUND),Error(`Must have an existing embedded wallet to create an additional wallet.`);if(t.embeddedWallets.requireUserOwnedRecoveryOnCreate&&t.embeddedWallets.mode===`user-controlled-server-wallets-only`)throw r(`createWallet`,`onError`,w.EMBEDDED_WALLET_CREATE_ERROR),Error(`User owned recovery not yet supported for this app.`);if(!h&&t.embeddedWallets.requireUserOwnedRecoveryOnCreate)return await We({emitPrivyEvent:r,setModalData:l,openModal:u,chainType:d});let _=T(s,{chainType:d,walletIndex:c})[0];if(_)return{user:s,account:_};if(c===0&&!i)return We({emitPrivyEvent:r,setModalData:l,openModal:u,chainType:d});if(!i)throw r(`createWallet`,`onError`,w.UNKNOWN_EMBEDDED_WALLET_ERROR),Error(`Failed to connect to wallet proxy`);return je({appConfig:t,walletIndex:c,chainType:d,user:s,accessToken:e,proxy:i,refreshSessionAndUser:a,privy:n,recoverEmbeddedWallet:o,setUser:f,idempotencyKey:p,additionalSigners:m})},We=async({emitPrivyEvent:e,setModalData:t,openModal:n,chainType:r})=>new Promise(((i,a)=>{t({createWallet:{onSuccess:({user:t,account:n})=>{e(`createWallet`,`onSuccess`,{wallet:n}),i({user:t,account:n})},onFailure:t=>{e(`createWallet`,`onError`,w.UNKNOWN_EMBEDDED_WALLET_ERROR),a(t)},callAuthOnSuccessOnClose:!1,shouldCreateEth:r===`ethereum`,shouldCreateSol:r===`solana`}}),n(`EmbeddedWalletOnAccountCreateScreen`)})),Ge=()=>{let e=s(),t=se(),{setModalData:n}=x(),{initializeWalletProxy:r,recoverEmbeddedWallet:i,setUser:a,openModal:c,refreshSessionAndUser:l,privy:u,client:d}=o();return{create:async({chainType:o,options:s,latestUser:f,idempotencyKey:p})=>{let m=f;if(m||=await l(),!m)throw t(`createWallet`,`onError`,w.MUST_BE_AUTHENTICATED),Error(`User must be authenticated before creating a Privy wallet`);return await(async({appConfig:e,getAccessToken:t,initializeWalletProxy:n,user:r,privy:i,emitPrivyEvent:a,recoverEmbeddedWallet:o,setModalData:s,openModal:c,setUser:l,options:u,timeoutDuration:d,refreshSessionAndUser:f,chainType:p,idempotencyKey:m,additionalSigners:h})=>{let[g,_]=await Promise.all([n(d),t()]);if(!_||!r)throw a(`createWallet`,`onError`,w.MUST_BE_AUTHENTICATED),Error(`User must be authenticated before creating a Privy wallet`);if(!g&&e.customAuth?.enabled)throw a(`createWallet`,`onError`,w.UNKNOWN_EMBEDDED_WALLET_ERROR),Error(`Failed to connect to wallet proxy`);if(h&&e.embeddedWallets.mode!==`user-controlled-server-wallets-only`)throw new S(`Specifying additionalSigners is only supported for TEE execution and this app uses on-device execution. Learn more https://docs.privy.io/recipes/tee-wallet-migration-guide`);if(u&&`walletIndex`in u&&typeof u.walletIndex==`number`){if(e.embeddedWallets.mode===`user-controlled-server-wallets-only`)throw a(`createWallet`,`onError`,w.INVALID_DATA),Error("Invalid input, use `createAdditional` instead of `walletIndex` to create additional wallets.");return Ue({accessToken:_,appConfig:e,privy:i,emitPrivyEvent:a,openModal:c,proxy:g,refreshSessionAndUser:f,recoverEmbeddedWallet:o,setModalData:s,user:r,walletIndex:u.walletIndex,chainType:p,setUser:l,additionalSigners:h})}let v=u&&`createAdditional`in u&&u.createAdditional,y=T(r,{chainType:p});if(y[0]&&!v)throw a(`createWallet`,`onError`,w.EMBEDDED_WALLET_ALREADY_EXISTS),Error(`User already has an embedded wallet.`);return Ue({accessToken:_,appConfig:e,privy:i,emitPrivyEvent:a,openModal:c,proxy:g,recoverEmbeddedWallet:o,setModalData:s,user:r,walletIndex:(He(y)?.walletIndex??-1)+1,chainType:p,refreshSessionAndUser:f,setUser:l,idempotencyKey:m,additionalSigners:h})})({appConfig:e,privy:u,getAccessToken:()=>d.getAccessToken(),refreshSessionAndUser:l,initializeWalletProxy:r,user:m,emitPrivyEvent:t,recoverEmbeddedWallet:i,setModalData:n,openModal:c,setUser:a,options:s,timeoutDuration:v,chainType:o,idempotencyKey:p,additionalSigners:s?.signers})}}};function Ke(e){let{create:t}=Ge();return ce(`createWallet`,e),{createWallet:async e=>{e&&`target`in e&&e&&(e=void 0);let{account:n}=await t({chainType:`ethereum`,options:e});return n}}}var qe=e=>e.embeddedWallets.mode===`user-controlled-server-wallets-only`?`tee`:`on-device`,Je=async({emitPrivyEvent:e,getAccessToken:t,initializeWalletProxy:n,refreshSessionAndUser:r,user:i,appConfig:a},{chainType:o,additionalSigners:s},c)=>{if(!i)throw e(`linkAccount`,`onError`,w.MUST_BE_AUTHENTICATED,{linkMethod:`siwe`}),new S(`User must be authenticated before linking an account.`);let u=qe(a);if(s&&u===`on-device`)throw new S(`Specifying additionalSigners is only supported for TEE execution and this app uses on-device execution. Learn more https://docs.privy.io/recipes/tee-wallet-migration-guide`);let[d,p]=await Promise.all([t(),n(15e3)]);if(!p||!d)throw e(`linkAccount`,`onError`,w.MUST_BE_AUTHENTICATED,{linkMethod:`siwe`}),new S(`User must be authenticated before linking an account.`);let{address:m}=await c({proxy:p,accessToken:d,mode:u}),h=await r(),g=(o===`solana`?f(h):l(h))?.find((e=>e.address===m));if(!h||!g)throw e(`createWallet`,`onError`,w.UNKNOWN_EMBEDDED_WALLET_ERROR),Error(`Failed to import wallet`);return e(`createWallet`,`onSuccess`,{wallet:g}),{user:h,wallet:g}},Ye=(e,{privateKey:t,chainType:n,additionalSigners:r})=>(async(...e)=>(await Je(...e)).wallet)(e,{chainType:n,additionalSigners:r},(({proxy:e,accessToken:i,mode:a})=>e.importWallet({privateKey:t,accessToken:i,chainType:n,mode:a,additionalSigners:r}))),Xe=()=>{let{user:e}=_(),{client:t,refreshSessionAndUser:n,initializeWalletProxy:r}=o(),i=se(),a=s();return{importWallet:(0,D.useCallback)((o=>Ye({getAccessToken:()=>t.getAccessToken(),user:e,initializeWalletProxy:r,refreshSessionAndUser:n,emitPrivyEvent:i,appConfig:a},{...o,chainType:`ethereum`})),[e,t,n,r,i,a])}},O=()=>{let e=(0,D.useContext)(g),{importWallet:t}=Xe(),{exportWallet:n}=ue(),{createWallet:r}=Ke(),{unlinkCrossAppAccount:i}=Fe(),{unlink:a}=le(),{unlink:o}=Ie(),{unlink:s}=Be(),{unlink:c}=Le(),{unlink:l}=Ve(),{unlink:u}=ze(),{unlink:d}=Re(),f=(0,D.useCallback)((e=>a({address:e})),[a]),p=(0,D.useCallback)((e=>o({address:e})),[o]),m=(0,D.useCallback)((e=>s({phoneNumber:e})),[s]),h=(0,D.useCallback)((e=>c({fid:e})),[c]),_=(0,D.useCallback)((e=>l({telegramUserId:e})),[l]),v=(0,D.useCallback)((e=>u({credentialId:e})),[u]),y=(0,D.useCallback)((e=>d(e)),[d]),b=(0,D.useCallback)((e=>d({provider:`google`,subject:e})),[d]),x=(0,D.useCallback)((e=>d({provider:`twitter`,subject:e})),[d]),S=(0,D.useCallback)((e=>d({provider:`twitch`,subject:e})),[d]),C=(0,D.useCallback)((e=>d({provider:`discord`,subject:e})),[d]),w=(0,D.useCallback)((e=>d({provider:`github`,subject:e})),[d]),T=(0,D.useCallback)((e=>d({provider:`spotify`,subject:e})),[d]),E=(0,D.useCallback)((e=>d({provider:`instagram`,subject:e})),[d]),ee=(0,D.useCallback)((e=>d({provider:`tiktok`,subject:e})),[d]),te=(0,D.useCallback)((e=>d({provider:`line`,subject:e})),[d]),ne=(0,D.useCallback)((e=>d({provider:`linkedin`,subject:e})),[d]),re=(0,D.useCallback)((e=>d({provider:`apple`,subject:e})),[d]),{update:oe}=ie(),{update:se}=ae();return{...e,importWallet:t,createWallet:r,exportWallet:n,unlinkCrossAppAccount:i,unlinkWallet:f,unlinkEmail:p,unlinkPhone:m,unlinkGoogle:b,unlinkTwitter:x,unlinkTwitch:S,unlinkDiscord:C,unlinkGithub:w,unlinkSpotify:T,unlinkInstagram:E,unlinkTiktok:ee,unlinkLine:te,unlinkLinkedIn:ne,unlinkApple:re,unlinkFarcaster:h,unlinkTelegram:_,unlinkPasskey:v,unlinkOAuth:y,updateEmail:oe,updatePhone:se}};function k(e,t){if(!Object.prototype.hasOwnProperty.call(e,t))throw TypeError(`attempted to use private field on non-instance`);return e}var Ze=0,A=`__private_`+Ze+++`__implementation`;function j(e,t){if(!Object.prototype.hasOwnProperty.call(e,t))throw TypeError(`attempted to use private field on non-instance`);return e}var Qe=0;function M(e){return`__private_`+Qe+++`_`+e}var N=M(`_address`),P=M(`_publicKey`),F=M(`_chains`),I=M(`_features`),L=M(`_label`),R=M(`_icon`),$e=class e{get address(){return j(this,N)[N]}get publicKey(){return j(this,P)[P].slice()}get chains(){return j(this,F)[F].slice()}get features(){return j(this,I)[I].slice()}get label(){return j(this,L)[L]}get icon(){return j(this,R)[R]}constructor({address:t,publicKey:n,label:r,icon:i}){Object.defineProperty(this,N,{writable:!0,value:void 0}),Object.defineProperty(this,P,{writable:!0,value:void 0}),Object.defineProperty(this,F,{writable:!0,value:void 0}),Object.defineProperty(this,I,{writable:!0,value:void 0}),Object.defineProperty(this,L,{writable:!0,value:void 0}),Object.defineProperty(this,R,{writable:!0,value:void 0}),j(this,N)[N]=t,j(this,P)[P]=n,j(this,F)[F]=Ee,j(this,L)[L]=r,j(this,R)[R]=i,j(this,I)[I]=[`solana:signAndSendTransaction`,`solana:signTransaction`,`solana:signMessage`],new.target===e&&Object.freeze(this)}};function z(e,t){if(!Object.prototype.hasOwnProperty.call(e,t))throw TypeError(`attempted to use private field on non-instance`);return e}var et=0;function B(e){return`__private_`+et+++`_`+e}var V=B(`_listeners`),H=B(`_version`),U=B(`_name`),W=B(`_icon`),G=B(`_injection`),K=B(`_isPrivyWallet`),q=B(`_accounts`),J=B(`_on`),Y=B(`_emit`),tt=B(`_off`),X=B(`_connected`),Z=B(`_connect`),Q=B(`_disconnect`),nt=B(`_signMessage`),rt=B(`_signAndSendTransaction`),it=B(`_signTransaction`);function at(e,...t){z(this,V)[V][e]?.forEach((e=>e.apply(null,t)))}function ot(e,t){z(this,V)[V][e]=z(this,V)[V][e]?.filter((e=>t!==e))}var $=(...e)=>{if(typeof Buffer>`u`)throw new S(`Buffer is not defined.`,void 0,w.BUFFER_NOT_DEFINED);return Buffer.from(...e)};function st(e){try{return xe().decode(e)}catch(t){throw e[0]===129?Error(`Unable to decode V1 transaction. V1 transactions require @solana/kit v8 or later; check the version your app installs.`,{cause:t}):t}}function ct(e,t,n){let r=structuredClone(st(e)),i=ve(t);return i in r.signatures&&(r.signatures[i]=n),new Uint8Array(be().encode(r))}function lt(e){return new Uint8Array(st(e).messageBytes)}function ut(){let{isHeadlessSigning:e,walletProxy:t,initializeWalletProxy:n,recoverEmbeddedWallet:r,openModal:a,privy:s,client:c}=o(),{user:l}=O(),{setModalData:d}=x(),{signWithUserSigner:f}=Te();return{signMessage:({message:o,address:p,options:m})=>new Promise((async(g,_)=>{let v=h(l,p);if(v?.walletClientType!==`privy`)return void _(new S(`Wallet is not a Privy wallet`,void 0,w.EMBEDDED_WALLET_NOT_FOUND));let{entropyId:y,entropyIdVerifier:b}=E(l,v),x=u(v),C=$(o).toString(`base64`);if(C.length<1)return void _(new S(`Message must be a non-empty string`,void 0,w.INVALID_MESSAGE));let T=async()=>{let e;if(!l)throw Error(`User must be authenticated before signing with a Privy wallet`);let a=await c.getAccessToken();if(!a)throw Error(`User must be authenticated to use their embedded wallet.`);let o=t??await n(15e3);if(!o)throw Error(`Failed to initialize embedded wallet proxy.`);if(!await r({address:v.address}))throw Error(`Unable to connect to wallet`);if(x){let t=await i(s,f,{chain_type:`solana`,method:`signMessage`,params:{message:C,encoding:`base64`},wallet_id:v.id});if(!t.data||!(`signature`in t.data))throw Error(`Failed to sign message`);e=t.data.signature}else{let{response:t}=await o.rpc({accessToken:a,entropyId:y,entropyIdVerifier:b,chainType:`solana`,hdWalletIndex:v.walletIndex??0,requesterAppId:m?.uiOptions?.requesterAppId,request:{method:`signMessage`,params:{message:C}}});e=t.data.signature}return e};if(e({showWalletUIs:m?.uiOptions?.showWalletUIs}))try{let e=await T();g({signature:new Uint8Array($(e,`base64`))})}catch(e){_(e)}else d({signMessage:{method:`solana_signMessage`,data:C,confirmAndSign:T,onSuccess:e=>{g({signature:new Uint8Array($(e,`base64`))})},onFailure:e=>{_(e)},uiOptions:m?.uiOptions??{}},connectWallet:{recoveryMethod:v.recoveryMethod,connectingWalletAddress:v.address,entropyId:y,entropyIdVerifier:b,isUnifiedWallet:x,onCompleteNavigateTo:`SignRequestScreen`,onFailure:e=>{_(new S(`Failed to connect to wallet`,e,w.UNKNOWN_CONNECT_WALLET_ERROR))}}}),a(`EmbeddedWalletConnectingScreen`)}))}}function dt(){let{isHeadlessSigning:e,openModal:t,privy:r}=o(),{setModalData:a}=x(),{signMessage:s}=ut(),{signWithUserSigner:c}=Te(),{user:l}=O();return{signTransaction:async({transaction:o,options:d,chain:f=`solana:mainnet`,address:p})=>{let m=h(l,p);if(m?.walletClientType!==`privy`)throw new S(`Wallet is not a Privy wallet`,void 0,w.EMBEDDED_WALLET_NOT_FOUND);let g=u(m);async function _(e){if(g){let t=await i(r,c,{chain_type:`solana`,method:`signTransaction`,params:{transaction:n.base64.fromBytes(e),encoding:`base64`},wallet_id:m.id});if(t.data&&`signed_transaction`in t.data&&t.data.signed_transaction!=null)return{signedTransaction:new Uint8Array(n.base64.toBytes(t.data.signed_transaction))};throw Error(`Failed to sign transaction`)}let{signature:t}=await s({message:lt(e),address:p,options:{...d,uiOptions:{...d?.uiOptions,showWalletUIs:!1}}});return{signedTransaction:ct(e,p,t)}}return e({showWalletUIs:d?.uiOptions?.showWalletUIs})?_(o):new Promise((async(e,n)=>{let{entropyId:r,entropyIdVerifier:i}=E(l,m);function s(e){return t=>{n(t instanceof S?t:new S(`Failed to connect to wallet`,t,e))}}let c={account:m,transaction:new Uint8Array(o),chain:f,signOnly:!0,uiOptions:d?.uiOptions||{},onConfirm:_,onSuccess:e,onFailure:s(w.TRANSACTION_FAILURE)};a({connectWallet:{recoveryMethod:m.recoveryMethod,connectingWalletAddress:m.address,entropyId:r,entropyIdVerifier:i,isUnifiedWallet:g,onCompleteNavigateTo:`StandardSignAndSendTransactionScreen`,onFailure:s(w.UNKNOWN_CONNECT_WALLET_ERROR)},standardSignAndSendTransaction:c}),t(`EmbeddedWalletConnectingScreen`)}))}}}var ft=Symbol(`default-solana-rpcs-plugin`);async function pt({rpcSubscriptions:e,signature:t,timeout:n}){let r=new AbortController,i=await e.signatureNotifications(t,{commitment:`confirmed`}).subscribe({abortSignal:r.signal}),a=await Promise.race([new Promise((e=>{setTimeout((()=>{r.abort(),e(Error(`Transaction confirmation timed out`))}),n)})),new Promise((async e=>{for await(let t of i){if(r.abort(),t.value.err)return e(Error(`Transaction confirmation failed`));e(void 0)}}))]);if(a instanceof Error)throw a}function mt({rpc:e,rpcSubscriptions:t,chain:n,blockExplorerUrl:r}){return{rpc:e,rpcSubscriptions:t,chain:n,blockExplorerUrl:r,sendAndConfirmTransaction:function({rpc:e,rpcSubscriptions:t}){return async(n,r)=>new Promise((async(i,a)=>{try{let a=await e.sendTransaction($(n).toString(`base64`),{preflightCommitment:`confirmed`,encoding:`base64`,skipPreflight:r?.skipPreflight??!1}).send();r?.skipConfirmation||await pt({rpcSubscriptions:t,signature:a,timeout:1e4}),i({signature:new Uint8Array(ye().encode(a))})}catch(e){a(e)}}))}({rpc:e,rpcSubscriptions:t})}}function ht(){let e=s(),t=Se(),n=(0,D.useMemo)((()=>{let n=t(ft)?.getDefaultRpcs({appId:e.id});return Object.fromEntries([`solana:mainnet`,`solana:devnet`,`solana:testnet`].map((t=>{let r=e.solanaRpcs[t]??n?.[t]??null;return[t,r?mt({chain:t,rpc:r.rpc,rpcSubscriptions:r.rpcSubscriptions,blockExplorerUrl:r.blockExplorerUrl??`https://explorer.solana.com?cluster=${t.replace(`solana:`,``)}`}):null]})))}),[e.solanaRpcs,e.id,t]);return(0,D.useCallback)((e=>{if(!n[e])throw Error(`No RPC configuration found for chain ${e}`);return n[e]}),[n])}function gt(){let e=s(),{isHeadlessSigning:n,openModal:r,privy:a}=o(),{setModalData:c}=x(),{signTransaction:l}=dt(),d=ht(),{user:f}=O(),{signWithUserSigner:p}=Te();return{signAndSendTransaction:async({transaction:o,address:s,chain:m=`solana:mainnet`,options:g})=>{let _=h(f,s);if(_?.walletClientType!==`privy`)throw new S(`Wallet is not a Privy wallet`,void 0,w.EMBEDDED_WALLET_NOT_FOUND);let v=u(_);async function y(e){let n=g?.skipSimulation?{"x-privy-skip-simulation":`true`}:void 0;if(g?.sponsor)return await(async e=>{if(!v)throw new S(`Sponsoring transactions is only supported for wallets on the TEE stack`,w.INVALID_DATA);let r=await i(a,p,{chain_type:`solana`,method:`signAndSendTransaction`,sponsor:!0,params:{transaction:$(e).toString(`base64`),encoding:`base64`},caip2:`solana:${(await d(m).rpc.getGenesisHash().send()).substring(0,32)}`,wallet_id:_.id,optimistic_broadcast:g?.optimisticBroadcast??!1,headers:n});if(r.data&&`hash`in r.data)return{signature:t.decode(r.data.hash)};throw Error(`Failed to sign and send transaction`)})(e);let{signedTransaction:r}=await l({transaction:e,address:s,chain:m,options:{...g,uiOptions:{...g?.uiOptions,showWalletUIs:!1}}}),{signature:o}=await d(m).sendAndConfirmTransaction(r,{skipPreflight:g?.skipSimulation,skipConfirmation:g?.optimisticBroadcast});return{signature:o}}return n({showWalletUIs:g?.uiOptions?.showWalletUIs})?y(o):new Promise((async(t,n)=>{let i,a,{entropyId:l,entropyIdVerifier:u}=E(f,_);function d(e){return t=>{n(t instanceof S?t:new S(`Failed to connect to wallet`,t,e))}}let p={account:_,transaction:new Uint8Array(o),chain:m,signOnly:!1,uiOptions:g?.uiOptions||{},onConfirm:y,onSuccess:t,onFailure:d(w.TRANSACTION_FAILURE),isSponsored:!!g?.sponsor},h={recoveryMethod:_.recoveryMethod,connectingWalletAddress:_.address,entropyId:l,entropyIdVerifier:u,isUnifiedWallet:v,onCompleteNavigateTo:`StandardSignAndSendTransactionScreen`,onFailure:d(w.UNKNOWN_CONNECT_WALLET_ERROR)};e.fundingConfig&&(i=oe({address:s,appConfig:e,methodScreen:`FundingMethodSelectionScreen`,fundWalletConfig:{...g,asset:`native-currency`,chain:m},externalSolanaFundingScreen:`FundSolWalletWithExternalSolanaWallet`}),a={amount:e.fundingConfig.defaultRecommendedAmount,asset:`SOL`,chain:m,destinationAddress:s,afterSuccessScreen:`StandardSignAndSendTransactionScreen`,sourceWalletData:void 0}),c({connectWallet:h,standardSignAndSendTransaction:p,funding:i,solanaFundingData:a}),r(`EmbeddedWalletConnectingScreen`)}))}}}var _t=new class extends _e{setImplementation(e){k(this,A)[A]=e}async signMessage(e){return k(this,A)[A].signMessage(e)}async signAndSendTransaction(e){return k(this,A)[A].signAndSendTransaction(e)}async signTransaction(e){return k(this,A)[A].signTransaction(e)}constructor(e){super(),Object.defineProperty(this,A,{writable:!0,value:void 0}),k(this,A)[A]=e}}({signTransaction:m(`signTransaction was not injected`),signAndSendTransaction:m(`signAndSendTransaction was not injected`),signMessage:m(`signMessage was not injected`)}),vt=new class{get version(){return z(this,H)[H]}get name(){return z(this,U)[U]}get icon(){return z(this,W)[W]}get chains(){return Ee.slice()}get features(){return{"standard:connect":{version:`1.0.0`,connect:z(this,Z)[Z]},"standard:disconnect":{version:`1.0.0`,disconnect:z(this,Q)[Q]},"standard:events":{version:`1.0.0`,on:z(this,J)[J]},"solana:signAndSendTransaction":{version:`1.0.0`,supportedTransactionVersions:[`legacy`,0,1],signAndSendTransaction:z(this,rt)[rt]},"solana:signTransaction":{version:`1.0.0`,supportedTransactionVersions:[`legacy`,0,1],signTransaction:z(this,it)[it]},"solana:signMessage":{version:`1.0.0`,signMessage:z(this,nt)[nt]},"privy:":{privy:{signMessage:z(this,G)[G].signMessage,signTransaction:z(this,G)[G].signTransaction,signAndSendTransaction:z(this,G)[G].signAndSendTransaction}}}}get accounts(){return z(this,q)[q].slice()}get isPrivyWallet(){return z(this,K)[K]}constructor({name:e,icon:n,version:r,injection:i,wallets:a}){Object.defineProperty(this,Y,{value:at}),Object.defineProperty(this,tt,{value:ot}),Object.defineProperty(this,V,{writable:!0,value:void 0}),Object.defineProperty(this,H,{writable:!0,value:void 0}),Object.defineProperty(this,U,{writable:!0,value:void 0}),Object.defineProperty(this,W,{writable:!0,value:void 0}),Object.defineProperty(this,G,{writable:!0,value:void 0}),Object.defineProperty(this,K,{writable:!0,value:void 0}),Object.defineProperty(this,q,{writable:!0,value:void 0}),Object.defineProperty(this,J,{writable:!0,value:void 0}),Object.defineProperty(this,X,{writable:!0,value:void 0}),Object.defineProperty(this,Z,{writable:!0,value:void 0}),Object.defineProperty(this,Q,{writable:!0,value:void 0}),Object.defineProperty(this,nt,{writable:!0,value:void 0}),Object.defineProperty(this,rt,{writable:!0,value:void 0}),Object.defineProperty(this,it,{writable:!0,value:void 0}),z(this,V)[V]={},z(this,J)[J]=(e,t)=>(z(this,V)[V][e]?.push(t)||(z(this,V)[V][e]=[t]),()=>z(this,tt)[tt](e,t)),z(this,X)[X]=e=>{e!=null&&(z(this,q)[q]=e.map((({address:e})=>new $e({address:e,publicKey:t.decode(e)})))),z(this,Y)[Y](`change`,{accounts:this.accounts})},z(this,Z)[Z]=async()=>(z(this,Y)[Y](`change`,{accounts:this.accounts}),{accounts:this.accounts}),z(this,Q)[Q]=async()=>{z(this,Y)[Y](`change`,{accounts:this.accounts})},z(this,nt)[nt]=async(...e)=>{let t=[];for(let{account:n,...r}of e){let{signature:e}=await z(this,G)[G].signMessage({...r,address:n.address});t.push({signedMessage:r.message,signature:e})}return t},z(this,rt)[rt]=async(...e)=>{let t=[];for(let n of e){let{signature:e}=await z(this,G)[G].signAndSendTransaction({...n,transaction:n.transaction,address:n.account.address,chain:n.chain||`solana:mainnet`,options:n.options});t.push({signature:e})}return t},z(this,it)[it]=async(...e)=>{let t=[];for(let{transaction:n,account:r,options:i,chain:a}of e){let{signedTransaction:e}=await z(this,G)[G].signTransaction({transaction:n,address:r.address,chain:a||`solana:mainnet`,options:i});t.push({signedTransaction:e})}return t},z(this,U)[U]=e,z(this,W)[W]=n,z(this,H)[H]=r,z(this,G)[G]=i,z(this,q)[q]=[],z(this,K)[K]=!0,i.on(`accountChanged`,z(this,X)[X],this),z(this,X)[X](a)}}({name:`Privy`,version:`1.0.0`,icon:`data:image/png;base64,AAABAAEAFBQAAAAAIABlAQAAFgAAAIlQTkcNChoKAAAADUlIRFIAAAAUAAAAFAgGAAAAjYkdDQAAAAlwSFlzAAAOwwAADsMBx2+oZAAAAQVJREFUeJxiYMANZIC4E4ivAPFPIP4FxDeAuB+IlfDowwBMQFwJxF+B+D8O/AOI66Bq8QJGIF6ExyB0vAqImfEZmEeCYTDcgMswPiB+T4aB34FYApuBsWQYBsP52AycToGBK7EZuJECAw9jM3AVBQbuwWZgIwUGTsZmoDkFBnpiMxAEjpJh2FV8iVsbiD+TYBgoDVrgMgwGnID4HRGGgTKBGyHDYEAaiBdCSxh0g/5AU4Q8sYYhAzEgjoGmABBOgFo2eACowFABYn0oVgViAVINkQTiZUD8DIj/ATF6GILEXgLxCiCWIsZAbiAuBeKtQHwHiEHJ6C8UfwHie0C8E4jLoWpRAAAAAP//rcbhsQAAAAZJREFUAwBYFs3VKJ0cuQAAAABJRU5ErkJggg==`,wallets:[],injection:_t});function yt(){let{client:e}=o(),{ready:t,wallet:n}=function(){let{ready:e}=ee(),{user:t}=O(),{signMessage:n}=ut(),{signTransaction:r}=dt(),{signAndSendTransaction:i}=gt(),a=(0,D.useMemo)((()=>{let e=[...c(t).sort(((e,t)=>(e.walletIndex??0)-(t.walletIndex??0)))],n=f(t);return n.length?[...e,...n]:e}),[t]),o=(0,D.useMemo)((()=>({signMessage:async({message:e,address:t,options:r})=>await n({message:e,address:t,options:r}),signTransaction:async({transaction:e,address:t,chain:n,options:i})=>await r({transaction:e,address:t,chain:n,options:i}),async signAndSendTransaction({transaction:e,address:t,chain:n,options:r}){let{signature:a}=await i({transaction:e,address:t,chain:n,options:r});return{signature:a}}})),[n,r,i]);return(0,D.useEffect)((()=>{_t?.setImplementation(o)}),[o]),(0,D.useEffect)((()=>{var t;!e||(t=vt.accounts).length===a.length&&t.every(((e,t)=>e.address===a[t]?.address))||_t?.emit(`accountChanged`,a)}),[e,a]),{ready:e,wallet:vt}}(),[r,i]=(0,D.useState)([]),[a,s]=(0,D.useState)([]);return(0,D.useEffect)((()=>{let e=[n,...r.filter((e=>e.chainType===`solana`&&!!e.wallet.features)).map((e=>e.wallet))];s(e);let t=r.flatMap((t=>{let n=()=>s([...e]);return t.on(`walletsUpdated`,n),{connector:t,off:n}})),i=e.map((t=>t.features[`standard:events`]?.on(`change`,(()=>{s([...e])}))));return()=>{i.forEach((e=>e?.())),t.forEach((({connector:e,off:t})=>e.off(`walletsUpdated`,t)))}}),[r]),(0,D.useEffect)((()=>{i(e.connectors?.walletConnectors.filter((e=>e.chainType===`solana`))??[]);let t=()=>{i(e.connectors?.walletConnectors.filter((e=>e.chainType===`solana`))??[])};return e.connectors?.on(`connectorInitialized`,t),()=>{e.connectors?.off(`connectorInitialized`,t)}}),[t,e.connectors]),{ready:t,wallets:a}}function bt(){let{ready:e,wallets:t}=yt();return{ready:e,wallets:(0,D.useMemo)((()=>t.flatMap((e=>e.accounts.map((t=>new a({wallet:e,account:t})))))),[t])}}export{we as C,Te as S,je as _,qe as a,ht as b,lt as c,Re as d,Ae as f,ke as g,Ie as h,O as i,ze as l,$ as m,Ke as n,Je as o,Xe as p,bt as r,Fe as s,Ge as t,pt as u,Le as v,Be as x,Ve as y};
@@ -1,4 +1,4 @@
1
- import{B as e,C as t,E as n,M as r,O as i,P as a,U as o,V as s,_ as c,a as l,b as u,d,f as ee,g as f,i as p,j as m,l as te,m as h,n as g,o as ne,p as _,t as re,u as ie,v as ae,w as v,x as oe,y}from"./ApiController-CYdiyu9B.js";import{c as se,i as b,l as x,n as ce,p as S,r as le,s as C,t as w,v as ue}from"./ConstantsUtil-DmLsRHAl.js";import{a as T,c as E,i as D,o as de,s as O}from"./wui-ux-by-reown-D34ILNLS.js";import{n as fe,t as pe}from"./SIWXUtil-TUCxa7aA.js";var k={getGasPriceInEther(e,t){let n=t*e;return Number(n)/0xde0b6b3a7640000},getGasPriceInUSD(e,t,n){let r=k.getGasPriceInEther(t,n);return s.bigNumber(e).times(r).toNumber()},getPriceImpact({sourceTokenAmount:e,sourceTokenPriceInUSD:t,toTokenPriceInUSD:n,toTokenAmount:r}){let i=s.bigNumber(e).times(t),a=s.bigNumber(r).times(n);return i.minus(a).div(i).times(100).toNumber()},getMaxSlippage(e,t){let n=s.bigNumber(e).div(100);return s.multiply(t,n).toNumber()},getProviderFee(e,t=.0085){return s.bigNumber(e).times(t).toString()},isInsufficientNetworkTokenForGas(e,t){let n=t||`0`;return s.bigNumber(e).eq(0)?!0:s.bigNumber(s.bigNumber(n)).gt(e)},isInsufficientSourceTokenForSwap(e,t,n){let r=n?.find(e=>e.address===t)?.quantity?.numeric;return s.bigNumber(r||`0`).lt(e)}},me=15e4,A={initializing:!1,initialized:!1,loadingPrices:!1,loadingQuote:!1,loadingApprovalTransaction:!1,loadingBuildTransaction:!1,loadingTransaction:!1,switchingTokens:!1,fetchError:!1,approvalTransaction:void 0,swapTransaction:void 0,transactionError:void 0,sourceToken:void 0,sourceTokenAmount:``,sourceTokenPriceInUSD:0,toToken:void 0,toTokenAmount:``,toTokenPriceInUSD:0,networkPrice:`0`,networkBalanceInUSD:`0`,networkTokenSymbol:``,inputError:void 0,slippage:i.CONVERT_SLIPPAGE_TOLERANCE,tokens:void 0,popularTokens:void 0,suggestedTokens:void 0,foundTokens:void 0,myTokensWithBalance:void 0,tokensPriceMap:{},gasFee:`0`,gasPriceInUSD:0,priceImpact:void 0,maxSlippage:void 0,providerFee:void 0},j=r({...A}),he={state:j,subscribe(e){return a(j,()=>e(j))},subscribeKey(e,t){return m(j,e,t)},getParams(){let e=g.state.activeChain,t=g.getAccountData(e)?.caipAddress??g.state.activeCaipAddress,r=n.getPlainAddress(t),i=te(),a=d.getConnectorId(g.state.activeChain);if(!r)throw Error(`No address found to swap the tokens from.`);let c=!j.toToken?.address||!j.toToken?.decimals,l=!j.sourceToken?.address||!j.sourceToken?.decimals||!s.bigNumber(j.sourceTokenAmount).gt(0),u=!j.sourceTokenAmount;return{networkAddress:i,fromAddress:r,fromCaipAddress:t,sourceTokenAddress:j.sourceToken?.address,toTokenAddress:j.toToken?.address,toTokenAmount:j.toTokenAmount,toTokenDecimals:j.toToken?.decimals,sourceTokenAmount:j.sourceTokenAmount,sourceTokenDecimals:j.sourceToken?.decimals,invalidToToken:c,invalidSourceToken:l,invalidSourceTokenAmount:u,availableToSwap:t&&!c&&!l&&!u,isAuthConnector:a===o.CONNECTOR_ID.AUTH}},async setSourceToken(e){if(!e){j.sourceToken=e,j.sourceTokenAmount=``,j.sourceTokenPriceInUSD=0;return}j.sourceToken=e,await M.setTokenPrice(e.address,`sourceToken`)},setSourceTokenAmount(e){j.sourceTokenAmount=e},async setToToken(e){if(!e){j.toToken=e,j.toTokenAmount=``,j.toTokenPriceInUSD=0;return}j.toToken=e,await M.setTokenPrice(e.address,`toToken`)},setToTokenAmount(e){j.toTokenAmount=e?s.toFixed(e,6):``},async setTokenPrice(e,t){let n=j.tokensPriceMap[e]||0;n||=(j.loadingPrices=!0,await M.getAddressPrice(e)),t===`sourceToken`?j.sourceTokenPriceInUSD=n:t===`toToken`&&(j.toTokenPriceInUSD=n),j.loadingPrices&&=!1,M.getParams().availableToSwap&&!j.switchingTokens&&M.swapTokens()},async switchTokens(){if(!(j.initializing||!j.initialized||j.switchingTokens)){j.switchingTokens=!0;try{let e=j.toToken?{...j.toToken}:void 0,t=j.sourceToken?{...j.sourceToken}:void 0,n=e&&j.toTokenAmount===``?`1`:j.toTokenAmount;M.setSourceTokenAmount(n),M.setToTokenAmount(``),await M.setSourceToken(e),await M.setToToken(t),j.switchingTokens=!1,M.swapTokens()}catch(e){throw j.switchingTokens=!1,e}}},resetState(){j.myTokensWithBalance=A.myTokensWithBalance,j.tokensPriceMap=A.tokensPriceMap,j.initialized=A.initialized,j.initializing=A.initializing,j.switchingTokens=A.switchingTokens,j.sourceToken=A.sourceToken,j.sourceTokenAmount=A.sourceTokenAmount,j.sourceTokenPriceInUSD=A.sourceTokenPriceInUSD,j.toToken=A.toToken,j.toTokenAmount=A.toTokenAmount,j.toTokenPriceInUSD=A.toTokenPriceInUSD,j.networkPrice=A.networkPrice,j.networkTokenSymbol=A.networkTokenSymbol,j.networkBalanceInUSD=A.networkBalanceInUSD,j.inputError=A.inputError},resetValues(){let{networkAddress:e}=M.getParams(),t=j.tokens?.find(t=>t.address===e);M.setSourceToken(t),M.setToToken(void 0)},getApprovalLoadingState(){return j.loadingApprovalTransaction},clearError(){j.transactionError=void 0},async initializeState(){if(!j.initializing){if(j.initializing=!0,!j.initialized)try{await M.fetchTokens(),j.initialized=!0}catch{j.initialized=!1,y.showError(`Failed to initialize swap`),_.goBack()}j.initializing=!1}},async fetchTokens(){let{networkAddress:e}=M.getParams();await M.getNetworkTokenPrice(),await M.getMyTokensWithBalance();let t=j.myTokensWithBalance?.find(t=>t.address===e);t&&(j.networkTokenSymbol=t.symbol,M.setSourceToken(t),M.setSourceTokenAmount(`0`))},async getTokenList(){let e=g.state.activeCaipNetwork?.caipNetworkId;if(!(j.caipNetworkId===e&&j.tokens))try{j.tokensLoading=!0;let t=await p.getTokenList(e);j.tokens=t,j.caipNetworkId=e,j.popularTokens=t.sort((e,t)=>e.symbol<t.symbol?-1:+(e.symbol>t.symbol)),j.suggestedTokens=t.filter(e=>!!i.SWAP_SUGGESTED_TOKENS.includes(e.symbol))}catch{j.tokens=[],j.popularTokens=[],j.suggestedTokens=[]}finally{j.tokensLoading=!1}},async getAddressPrice(e){let t=j.tokensPriceMap[e];if(t)return t;let n=(await ae.fetchTokenPrice({addresses:[e]}))?.fungibles||[],r=[...j.tokens||[],...j.myTokensWithBalance||[]].find(t=>t.address===e)?.symbol,i=n.find(e=>e.symbol.toLowerCase()===r?.toLowerCase())?.price||0,a=parseFloat(i.toString());return j.tokensPriceMap[e]=a,a},async getNetworkTokenPrice(){let{networkAddress:e}=M.getParams(),t=(await ae.fetchTokenPrice({addresses:[e]}).catch(()=>(y.showError(`Failed to fetch network token price`),{fungibles:[]}))).fungibles?.[0],n=t?.price.toString()||`0`;j.tokensPriceMap[e]=parseFloat(n),j.networkTokenSymbol=t?.symbol||``,j.networkPrice=n},async getMyTokensWithBalance(e){let t=await l.getMyTokensWithBalance(e),n=p.mapBalancesToSwapTokens(t);n&&(await M.getInitialGasPrice(),M.setBalances(n))},setBalances(e){let{networkAddress:t}=M.getParams(),n=g.state.activeCaipNetwork;if(!n)return;let r=e.find(e=>e.address===t);e.forEach(e=>{j.tokensPriceMap[e.address]=e.price||0}),j.myTokensWithBalance=e.filter(e=>e.address.startsWith(n.caipNetworkId)),j.networkBalanceInUSD=r?s.multiply(r.quantity.numeric,r.price).toString():`0`},async getInitialGasPrice(){let e=await p.fetchGasPrice();if(!e)return{gasPrice:null,gasPriceInUSD:null};switch(g.state?.activeCaipNetwork?.chainNamespace){case o.CHAIN.SOLANA:return j.gasFee=e.standard??`0`,j.gasPriceInUSD=s.multiply(e.standard,j.networkPrice).div(1e9).toNumber(),{gasPrice:BigInt(j.gasFee),gasPriceInUSD:Number(j.gasPriceInUSD)};case o.CHAIN.EVM:default:let t=e.standard??`0`,n=BigInt(t),r=BigInt(me),i=k.getGasPriceInUSD(j.networkPrice,r,n);return j.gasFee=t,j.gasPriceInUSD=i,{gasPrice:n,gasPriceInUSD:i}}},async swapTokens(){let e=g.getAccountData()?.address,t=j.sourceToken,n=j.toToken,r=s.bigNumber(j.sourceTokenAmount).gt(0);if(r||M.setToTokenAmount(``),!n||!t||j.loadingPrices||!r||!e)return;j.loadingQuote=!0;let i=s.bigNumber(j.sourceTokenAmount).times(10**t.decimals).round(0);try{let r=await ae.fetchSwapQuote({userAddress:e,from:t.address,to:n.address,gasPrice:j.gasFee,amount:i.toString()});j.loadingQuote=!1;let a=r?.quotes?.[0]?.toAmount;if(!a){fe.open({displayMessage:`Incorrect amount`,debugMessage:`Please enter a valid amount`},`error`);return}let o=s.bigNumber(a).div(10**n.decimals).toString();M.setToTokenAmount(o),M.hasInsufficientToken(j.sourceTokenAmount,t.address)?j.inputError=`Insufficient balance`:(j.inputError=void 0,M.setTransactionDetails())}catch(e){let t=await p.handleSwapError(e);j.loadingQuote=!1,j.inputError=t||`Insufficient balance`}},async getTransaction(){let{fromCaipAddress:e,availableToSwap:t}=M.getParams(),n=j.sourceToken,r=j.toToken;if(e&&t&&n&&r&&!j.loadingQuote)try{j.loadingBuildTransaction=!0;let t=await p.fetchSwapAllowance({userAddress:e,tokenAddress:n.address,sourceTokenAmount:j.sourceTokenAmount,sourceTokenDecimals:n.decimals}),r;return r=t?await M.createSwapTransaction():await M.createAllowanceTransaction(),j.loadingBuildTransaction=!1,j.fetchError=!1,r}catch{_.goBack(),y.showError(`Failed to check allowance`),j.loadingBuildTransaction=!1,j.approvalTransaction=void 0,j.swapTransaction=void 0,j.fetchError=!0;return}},async createAllowanceTransaction(){let{fromCaipAddress:e,sourceTokenAddress:t,toTokenAddress:r}=M.getParams();if(e&&r){if(!t)throw Error(`createAllowanceTransaction - No source token address found.`);try{let i=await ae.generateApproveCalldata({from:t,to:r,userAddress:e}),a=n.getPlainAddress(i.tx.from);if(!a)throw Error(`SwapController:createAllowanceTransaction - address is required`);let o={data:i.tx.data,to:a,gasPrice:BigInt(i.tx.eip155.gasPrice),value:BigInt(i.tx.value),toAmount:j.toTokenAmount};return j.swapTransaction=void 0,j.approvalTransaction={data:o.data,to:o.to,gasPrice:o.gasPrice,value:o.value,toAmount:o.toAmount},{data:o.data,to:o.to,gasPrice:o.gasPrice,value:o.value,toAmount:o.toAmount}}catch{_.goBack(),y.showError(`Failed to create approval transaction`),j.approvalTransaction=void 0,j.swapTransaction=void 0,j.fetchError=!0;return}}},async createSwapTransaction(){let{networkAddress:e,fromCaipAddress:t,sourceTokenAmount:r}=M.getParams(),i=j.sourceToken,a=j.toToken;if(!t||!r||!i||!a)return;let o=ne.parseUnits(r,i.decimals)?.toString();try{let r=await ae.generateSwapCalldata({userAddress:t,from:i.address,to:a.address,amount:o,disableEstimate:!0}),s=i.address===e,c=BigInt(r.tx.eip155.gas),l=BigInt(r.tx.eip155.gasPrice),u=n.getPlainAddress(r.tx.to);if(!u)throw Error(`SwapController:createSwapTransaction - address is required`);let d={data:r.tx.data,to:u,gas:c,gasPrice:l,value:BigInt(s?o??`0`:`0`),toAmount:j.toTokenAmount};return j.gasPriceInUSD=k.getGasPriceInUSD(j.networkPrice,c,l),j.approvalTransaction=void 0,j.swapTransaction=d,d}catch{_.goBack(),y.showError(`Failed to create transaction`),j.approvalTransaction=void 0,j.swapTransaction=void 0,j.fetchError=!0;return}},onEmbeddedWalletApprovalSuccess(){y.showLoading(`Approve limit increase in your wallet`),_.replace(`SwapPreview`)},async sendTransactionForApproval(e){let{fromAddress:t,isAuthConnector:n}=M.getParams();j.loadingApprovalTransaction=!0,n?_.pushTransactionStack({onSuccess:M.onEmbeddedWalletApprovalSuccess}):y.showLoading(`Approve limit increase in your wallet`);try{await ne.sendTransaction({address:t,to:e.to,data:e.data,value:e.value,chainNamespace:o.CHAIN.EVM}),await M.swapTokens(),await M.getTransaction(),j.approvalTransaction=void 0,j.loadingApprovalTransaction=!1}catch(e){let t=e;j.transactionError=t?.displayMessage,j.loadingApprovalTransaction=!1,y.showError(t?.displayMessage||`Transaction error`),f.sendEvent({type:`track`,event:`SWAP_APPROVAL_ERROR`,properties:{message:t?.displayMessage||t?.message||`Unknown`,network:g.state.activeCaipNetwork?.caipNetworkId||``,swapFromToken:M.state.sourceToken?.symbol||``,swapToToken:M.state.toToken?.symbol||``,swapFromAmount:M.state.sourceTokenAmount||``,swapToAmount:M.state.toTokenAmount||``,isSmartAccount:ie(o.CHAIN.EVM)===c.ACCOUNT_TYPES.SMART_ACCOUNT}})}},async sendTransactionForSwap(e){if(!e)return;let{fromAddress:t,toTokenAmount:n,isAuthConnector:r}=M.getParams();j.loadingTransaction=!0;let i=`Swapping ${j.sourceToken?.symbol} to ${s.formatNumberToLocalString(n,3)} ${j.toToken?.symbol}`,a=`Swapped ${j.sourceToken?.symbol} to ${s.formatNumberToLocalString(n,3)} ${j.toToken?.symbol}`;r?_.pushTransactionStack({onSuccess(){_.replace(`Account`),y.showLoading(i),he.resetState()}}):y.showLoading(`Confirm transaction in your wallet`);try{let n=[j.sourceToken?.address,j.toToken?.address].join(`,`),i=await ne.sendTransaction({address:t,to:e.to,data:e.data,value:e.value,chainNamespace:o.CHAIN.EVM});return j.loadingTransaction=!1,y.showSuccess(a),f.sendEvent({type:`track`,event:`SWAP_SUCCESS`,properties:{network:g.state.activeCaipNetwork?.caipNetworkId||``,swapFromToken:M.state.sourceToken?.symbol||``,swapToToken:M.state.toToken?.symbol||``,swapFromAmount:M.state.sourceTokenAmount||``,swapToAmount:M.state.toTokenAmount||``,isSmartAccount:ie(o.CHAIN.EVM)===c.ACCOUNT_TYPES.SMART_ACCOUNT}}),he.resetState(),r||_.replace(`Account`),he.getMyTokensWithBalance(n),i}catch(e){let t=e;j.transactionError=t?.displayMessage,j.loadingTransaction=!1,y.showError(t?.displayMessage||`Transaction error`),f.sendEvent({type:`track`,event:`SWAP_ERROR`,properties:{message:t?.displayMessage||t?.message||`Unknown`,network:g.state.activeCaipNetwork?.caipNetworkId||``,swapFromToken:M.state.sourceToken?.symbol||``,swapToToken:M.state.toToken?.symbol||``,swapFromAmount:M.state.sourceTokenAmount||``,swapToAmount:M.state.toTokenAmount||``,isSmartAccount:ie(o.CHAIN.EVM)===c.ACCOUNT_TYPES.SMART_ACCOUNT}});return}},hasInsufficientToken(e,t){return k.isInsufficientSourceTokenForSwap(e,t,j.myTokensWithBalance)},setTransactionDetails(){let{toTokenAddress:e,toTokenDecimals:t}=M.getParams();e&&t&&(j.gasPriceInUSD=k.getGasPriceInUSD(j.networkPrice,BigInt(j.gasFee),BigInt(me)),j.priceImpact=k.getPriceImpact({sourceTokenAmount:j.sourceTokenAmount,sourceTokenPriceInUSD:j.sourceTokenPriceInUSD,toTokenPriceInUSD:j.toTokenPriceInUSD,toTokenAmount:j.toTokenAmount}),j.maxSlippage=k.getMaxSlippage(j.slippage,j.toTokenAmount),j.providerFee=k.getProviderFee(j.sourceTokenAmount))}},M=t(he),N=r({message:``,open:!1,triggerRect:{width:0,height:0,top:0,left:0},variant:`shade`}),P=t({state:N,subscribe(e){return a(N,()=>e(N))},subscribeKey(e,t){return m(N,e,t)},showTooltip({message:e,triggerRect:t,variant:n}){N.open=!0,N.message=e,N.triggerRect=t,N.variant=n},hide(){N.open=!1,N.message=``,N.triggerRect={width:0,height:0,top:0,left:0}}}),ge={isUnsupportedChainView(){return _.state.view===`UnsupportedChain`||_.state.view===`SwitchNetwork`&&_.state.history.includes(`UnsupportedChain`)},async safeClose(){if(this.isUnsupportedChainView()){h.shake();return}if(await pe.isSIWXCloseDisabled()){h.shake();return}(_.state.view===`DataCapture`||_.state.view===`DataCaptureOtpConfirm`)&&ne.disconnect(),h.close()}},_e=C`
1
+ import{B as e,C as t,E as n,M as r,O as i,P as a,U as o,V as s,_ as c,a as l,b as u,d,f as ee,g as f,i as p,j as m,l as te,m as h,n as g,o as ne,p as _,t as re,u as ie,v as ae,w as v,x as oe,y}from"./ApiController-BbhXeqTV.js";import{c as se,i as b,l as x,n as ce,p as S,r as le,s as C,t as w,v as ue}from"./ConstantsUtil-DmLsRHAl.js";import{a as T,c as E,i as D,o as de,s as O}from"./wui-ux-by-reown-fVu0QkI4.js";import{n as fe,t as pe}from"./SIWXUtil-CHZVugix.js";var k={getGasPriceInEther(e,t){let n=t*e;return Number(n)/0xde0b6b3a7640000},getGasPriceInUSD(e,t,n){let r=k.getGasPriceInEther(t,n);return s.bigNumber(e).times(r).toNumber()},getPriceImpact({sourceTokenAmount:e,sourceTokenPriceInUSD:t,toTokenPriceInUSD:n,toTokenAmount:r}){let i=s.bigNumber(e).times(t),a=s.bigNumber(r).times(n);return i.minus(a).div(i).times(100).toNumber()},getMaxSlippage(e,t){let n=s.bigNumber(e).div(100);return s.multiply(t,n).toNumber()},getProviderFee(e,t=.0085){return s.bigNumber(e).times(t).toString()},isInsufficientNetworkTokenForGas(e,t){let n=t||`0`;return s.bigNumber(e).eq(0)?!0:s.bigNumber(s.bigNumber(n)).gt(e)},isInsufficientSourceTokenForSwap(e,t,n){let r=n?.find(e=>e.address===t)?.quantity?.numeric;return s.bigNumber(r||`0`).lt(e)}},me=15e4,A={initializing:!1,initialized:!1,loadingPrices:!1,loadingQuote:!1,loadingApprovalTransaction:!1,loadingBuildTransaction:!1,loadingTransaction:!1,switchingTokens:!1,fetchError:!1,approvalTransaction:void 0,swapTransaction:void 0,transactionError:void 0,sourceToken:void 0,sourceTokenAmount:``,sourceTokenPriceInUSD:0,toToken:void 0,toTokenAmount:``,toTokenPriceInUSD:0,networkPrice:`0`,networkBalanceInUSD:`0`,networkTokenSymbol:``,inputError:void 0,slippage:i.CONVERT_SLIPPAGE_TOLERANCE,tokens:void 0,popularTokens:void 0,suggestedTokens:void 0,foundTokens:void 0,myTokensWithBalance:void 0,tokensPriceMap:{},gasFee:`0`,gasPriceInUSD:0,priceImpact:void 0,maxSlippage:void 0,providerFee:void 0},j=r({...A}),he={state:j,subscribe(e){return a(j,()=>e(j))},subscribeKey(e,t){return m(j,e,t)},getParams(){let e=g.state.activeChain,t=g.getAccountData(e)?.caipAddress??g.state.activeCaipAddress,r=n.getPlainAddress(t),i=te(),a=d.getConnectorId(g.state.activeChain);if(!r)throw Error(`No address found to swap the tokens from.`);let c=!j.toToken?.address||!j.toToken?.decimals,l=!j.sourceToken?.address||!j.sourceToken?.decimals||!s.bigNumber(j.sourceTokenAmount).gt(0),u=!j.sourceTokenAmount;return{networkAddress:i,fromAddress:r,fromCaipAddress:t,sourceTokenAddress:j.sourceToken?.address,toTokenAddress:j.toToken?.address,toTokenAmount:j.toTokenAmount,toTokenDecimals:j.toToken?.decimals,sourceTokenAmount:j.sourceTokenAmount,sourceTokenDecimals:j.sourceToken?.decimals,invalidToToken:c,invalidSourceToken:l,invalidSourceTokenAmount:u,availableToSwap:t&&!c&&!l&&!u,isAuthConnector:a===o.CONNECTOR_ID.AUTH}},async setSourceToken(e){if(!e){j.sourceToken=e,j.sourceTokenAmount=``,j.sourceTokenPriceInUSD=0;return}j.sourceToken=e,await M.setTokenPrice(e.address,`sourceToken`)},setSourceTokenAmount(e){j.sourceTokenAmount=e},async setToToken(e){if(!e){j.toToken=e,j.toTokenAmount=``,j.toTokenPriceInUSD=0;return}j.toToken=e,await M.setTokenPrice(e.address,`toToken`)},setToTokenAmount(e){j.toTokenAmount=e?s.toFixed(e,6):``},async setTokenPrice(e,t){let n=j.tokensPriceMap[e]||0;n||=(j.loadingPrices=!0,await M.getAddressPrice(e)),t===`sourceToken`?j.sourceTokenPriceInUSD=n:t===`toToken`&&(j.toTokenPriceInUSD=n),j.loadingPrices&&=!1,M.getParams().availableToSwap&&!j.switchingTokens&&M.swapTokens()},async switchTokens(){if(!(j.initializing||!j.initialized||j.switchingTokens)){j.switchingTokens=!0;try{let e=j.toToken?{...j.toToken}:void 0,t=j.sourceToken?{...j.sourceToken}:void 0,n=e&&j.toTokenAmount===``?`1`:j.toTokenAmount;M.setSourceTokenAmount(n),M.setToTokenAmount(``),await M.setSourceToken(e),await M.setToToken(t),j.switchingTokens=!1,M.swapTokens()}catch(e){throw j.switchingTokens=!1,e}}},resetState(){j.myTokensWithBalance=A.myTokensWithBalance,j.tokensPriceMap=A.tokensPriceMap,j.initialized=A.initialized,j.initializing=A.initializing,j.switchingTokens=A.switchingTokens,j.sourceToken=A.sourceToken,j.sourceTokenAmount=A.sourceTokenAmount,j.sourceTokenPriceInUSD=A.sourceTokenPriceInUSD,j.toToken=A.toToken,j.toTokenAmount=A.toTokenAmount,j.toTokenPriceInUSD=A.toTokenPriceInUSD,j.networkPrice=A.networkPrice,j.networkTokenSymbol=A.networkTokenSymbol,j.networkBalanceInUSD=A.networkBalanceInUSD,j.inputError=A.inputError},resetValues(){let{networkAddress:e}=M.getParams(),t=j.tokens?.find(t=>t.address===e);M.setSourceToken(t),M.setToToken(void 0)},getApprovalLoadingState(){return j.loadingApprovalTransaction},clearError(){j.transactionError=void 0},async initializeState(){if(!j.initializing){if(j.initializing=!0,!j.initialized)try{await M.fetchTokens(),j.initialized=!0}catch{j.initialized=!1,y.showError(`Failed to initialize swap`),_.goBack()}j.initializing=!1}},async fetchTokens(){let{networkAddress:e}=M.getParams();await M.getNetworkTokenPrice(),await M.getMyTokensWithBalance();let t=j.myTokensWithBalance?.find(t=>t.address===e);t&&(j.networkTokenSymbol=t.symbol,M.setSourceToken(t),M.setSourceTokenAmount(`0`))},async getTokenList(){let e=g.state.activeCaipNetwork?.caipNetworkId;if(!(j.caipNetworkId===e&&j.tokens))try{j.tokensLoading=!0;let t=await p.getTokenList(e);j.tokens=t,j.caipNetworkId=e,j.popularTokens=t.sort((e,t)=>e.symbol<t.symbol?-1:+(e.symbol>t.symbol)),j.suggestedTokens=t.filter(e=>!!i.SWAP_SUGGESTED_TOKENS.includes(e.symbol))}catch{j.tokens=[],j.popularTokens=[],j.suggestedTokens=[]}finally{j.tokensLoading=!1}},async getAddressPrice(e){let t=j.tokensPriceMap[e];if(t)return t;let n=(await ae.fetchTokenPrice({addresses:[e]}))?.fungibles||[],r=[...j.tokens||[],...j.myTokensWithBalance||[]].find(t=>t.address===e)?.symbol,i=n.find(e=>e.symbol.toLowerCase()===r?.toLowerCase())?.price||0,a=parseFloat(i.toString());return j.tokensPriceMap[e]=a,a},async getNetworkTokenPrice(){let{networkAddress:e}=M.getParams(),t=(await ae.fetchTokenPrice({addresses:[e]}).catch(()=>(y.showError(`Failed to fetch network token price`),{fungibles:[]}))).fungibles?.[0],n=t?.price.toString()||`0`;j.tokensPriceMap[e]=parseFloat(n),j.networkTokenSymbol=t?.symbol||``,j.networkPrice=n},async getMyTokensWithBalance(e){let t=await l.getMyTokensWithBalance(e),n=p.mapBalancesToSwapTokens(t);n&&(await M.getInitialGasPrice(),M.setBalances(n))},setBalances(e){let{networkAddress:t}=M.getParams(),n=g.state.activeCaipNetwork;if(!n)return;let r=e.find(e=>e.address===t);e.forEach(e=>{j.tokensPriceMap[e.address]=e.price||0}),j.myTokensWithBalance=e.filter(e=>e.address.startsWith(n.caipNetworkId)),j.networkBalanceInUSD=r?s.multiply(r.quantity.numeric,r.price).toString():`0`},async getInitialGasPrice(){let e=await p.fetchGasPrice();if(!e)return{gasPrice:null,gasPriceInUSD:null};switch(g.state?.activeCaipNetwork?.chainNamespace){case o.CHAIN.SOLANA:return j.gasFee=e.standard??`0`,j.gasPriceInUSD=s.multiply(e.standard,j.networkPrice).div(1e9).toNumber(),{gasPrice:BigInt(j.gasFee),gasPriceInUSD:Number(j.gasPriceInUSD)};case o.CHAIN.EVM:default:let t=e.standard??`0`,n=BigInt(t),r=BigInt(me),i=k.getGasPriceInUSD(j.networkPrice,r,n);return j.gasFee=t,j.gasPriceInUSD=i,{gasPrice:n,gasPriceInUSD:i}}},async swapTokens(){let e=g.getAccountData()?.address,t=j.sourceToken,n=j.toToken,r=s.bigNumber(j.sourceTokenAmount).gt(0);if(r||M.setToTokenAmount(``),!n||!t||j.loadingPrices||!r||!e)return;j.loadingQuote=!0;let i=s.bigNumber(j.sourceTokenAmount).times(10**t.decimals).round(0);try{let r=await ae.fetchSwapQuote({userAddress:e,from:t.address,to:n.address,gasPrice:j.gasFee,amount:i.toString()});j.loadingQuote=!1;let a=r?.quotes?.[0]?.toAmount;if(!a){fe.open({displayMessage:`Incorrect amount`,debugMessage:`Please enter a valid amount`},`error`);return}let o=s.bigNumber(a).div(10**n.decimals).toString();M.setToTokenAmount(o),M.hasInsufficientToken(j.sourceTokenAmount,t.address)?j.inputError=`Insufficient balance`:(j.inputError=void 0,M.setTransactionDetails())}catch(e){let t=await p.handleSwapError(e);j.loadingQuote=!1,j.inputError=t||`Insufficient balance`}},async getTransaction(){let{fromCaipAddress:e,availableToSwap:t}=M.getParams(),n=j.sourceToken,r=j.toToken;if(e&&t&&n&&r&&!j.loadingQuote)try{j.loadingBuildTransaction=!0;let t=await p.fetchSwapAllowance({userAddress:e,tokenAddress:n.address,sourceTokenAmount:j.sourceTokenAmount,sourceTokenDecimals:n.decimals}),r;return r=t?await M.createSwapTransaction():await M.createAllowanceTransaction(),j.loadingBuildTransaction=!1,j.fetchError=!1,r}catch{_.goBack(),y.showError(`Failed to check allowance`),j.loadingBuildTransaction=!1,j.approvalTransaction=void 0,j.swapTransaction=void 0,j.fetchError=!0;return}},async createAllowanceTransaction(){let{fromCaipAddress:e,sourceTokenAddress:t,toTokenAddress:r}=M.getParams();if(e&&r){if(!t)throw Error(`createAllowanceTransaction - No source token address found.`);try{let i=await ae.generateApproveCalldata({from:t,to:r,userAddress:e}),a=n.getPlainAddress(i.tx.from);if(!a)throw Error(`SwapController:createAllowanceTransaction - address is required`);let o={data:i.tx.data,to:a,gasPrice:BigInt(i.tx.eip155.gasPrice),value:BigInt(i.tx.value),toAmount:j.toTokenAmount};return j.swapTransaction=void 0,j.approvalTransaction={data:o.data,to:o.to,gasPrice:o.gasPrice,value:o.value,toAmount:o.toAmount},{data:o.data,to:o.to,gasPrice:o.gasPrice,value:o.value,toAmount:o.toAmount}}catch{_.goBack(),y.showError(`Failed to create approval transaction`),j.approvalTransaction=void 0,j.swapTransaction=void 0,j.fetchError=!0;return}}},async createSwapTransaction(){let{networkAddress:e,fromCaipAddress:t,sourceTokenAmount:r}=M.getParams(),i=j.sourceToken,a=j.toToken;if(!t||!r||!i||!a)return;let o=ne.parseUnits(r,i.decimals)?.toString();try{let r=await ae.generateSwapCalldata({userAddress:t,from:i.address,to:a.address,amount:o,disableEstimate:!0}),s=i.address===e,c=BigInt(r.tx.eip155.gas),l=BigInt(r.tx.eip155.gasPrice),u=n.getPlainAddress(r.tx.to);if(!u)throw Error(`SwapController:createSwapTransaction - address is required`);let d={data:r.tx.data,to:u,gas:c,gasPrice:l,value:BigInt(s?o??`0`:`0`),toAmount:j.toTokenAmount};return j.gasPriceInUSD=k.getGasPriceInUSD(j.networkPrice,c,l),j.approvalTransaction=void 0,j.swapTransaction=d,d}catch{_.goBack(),y.showError(`Failed to create transaction`),j.approvalTransaction=void 0,j.swapTransaction=void 0,j.fetchError=!0;return}},onEmbeddedWalletApprovalSuccess(){y.showLoading(`Approve limit increase in your wallet`),_.replace(`SwapPreview`)},async sendTransactionForApproval(e){let{fromAddress:t,isAuthConnector:n}=M.getParams();j.loadingApprovalTransaction=!0,n?_.pushTransactionStack({onSuccess:M.onEmbeddedWalletApprovalSuccess}):y.showLoading(`Approve limit increase in your wallet`);try{await ne.sendTransaction({address:t,to:e.to,data:e.data,value:e.value,chainNamespace:o.CHAIN.EVM}),await M.swapTokens(),await M.getTransaction(),j.approvalTransaction=void 0,j.loadingApprovalTransaction=!1}catch(e){let t=e;j.transactionError=t?.displayMessage,j.loadingApprovalTransaction=!1,y.showError(t?.displayMessage||`Transaction error`),f.sendEvent({type:`track`,event:`SWAP_APPROVAL_ERROR`,properties:{message:t?.displayMessage||t?.message||`Unknown`,network:g.state.activeCaipNetwork?.caipNetworkId||``,swapFromToken:M.state.sourceToken?.symbol||``,swapToToken:M.state.toToken?.symbol||``,swapFromAmount:M.state.sourceTokenAmount||``,swapToAmount:M.state.toTokenAmount||``,isSmartAccount:ie(o.CHAIN.EVM)===c.ACCOUNT_TYPES.SMART_ACCOUNT}})}},async sendTransactionForSwap(e){if(!e)return;let{fromAddress:t,toTokenAmount:n,isAuthConnector:r}=M.getParams();j.loadingTransaction=!0;let i=`Swapping ${j.sourceToken?.symbol} to ${s.formatNumberToLocalString(n,3)} ${j.toToken?.symbol}`,a=`Swapped ${j.sourceToken?.symbol} to ${s.formatNumberToLocalString(n,3)} ${j.toToken?.symbol}`;r?_.pushTransactionStack({onSuccess(){_.replace(`Account`),y.showLoading(i),he.resetState()}}):y.showLoading(`Confirm transaction in your wallet`);try{let n=[j.sourceToken?.address,j.toToken?.address].join(`,`),i=await ne.sendTransaction({address:t,to:e.to,data:e.data,value:e.value,chainNamespace:o.CHAIN.EVM});return j.loadingTransaction=!1,y.showSuccess(a),f.sendEvent({type:`track`,event:`SWAP_SUCCESS`,properties:{network:g.state.activeCaipNetwork?.caipNetworkId||``,swapFromToken:M.state.sourceToken?.symbol||``,swapToToken:M.state.toToken?.symbol||``,swapFromAmount:M.state.sourceTokenAmount||``,swapToAmount:M.state.toTokenAmount||``,isSmartAccount:ie(o.CHAIN.EVM)===c.ACCOUNT_TYPES.SMART_ACCOUNT}}),he.resetState(),r||_.replace(`Account`),he.getMyTokensWithBalance(n),i}catch(e){let t=e;j.transactionError=t?.displayMessage,j.loadingTransaction=!1,y.showError(t?.displayMessage||`Transaction error`),f.sendEvent({type:`track`,event:`SWAP_ERROR`,properties:{message:t?.displayMessage||t?.message||`Unknown`,network:g.state.activeCaipNetwork?.caipNetworkId||``,swapFromToken:M.state.sourceToken?.symbol||``,swapToToken:M.state.toToken?.symbol||``,swapFromAmount:M.state.sourceTokenAmount||``,swapToAmount:M.state.toTokenAmount||``,isSmartAccount:ie(o.CHAIN.EVM)===c.ACCOUNT_TYPES.SMART_ACCOUNT}});return}},hasInsufficientToken(e,t){return k.isInsufficientSourceTokenForSwap(e,t,j.myTokensWithBalance)},setTransactionDetails(){let{toTokenAddress:e,toTokenDecimals:t}=M.getParams();e&&t&&(j.gasPriceInUSD=k.getGasPriceInUSD(j.networkPrice,BigInt(j.gasFee),BigInt(me)),j.priceImpact=k.getPriceImpact({sourceTokenAmount:j.sourceTokenAmount,sourceTokenPriceInUSD:j.sourceTokenPriceInUSD,toTokenPriceInUSD:j.toTokenPriceInUSD,toTokenAmount:j.toTokenAmount}),j.maxSlippage=k.getMaxSlippage(j.slippage,j.toTokenAmount),j.providerFee=k.getProviderFee(j.sourceTokenAmount))}},M=t(he),N=r({message:``,open:!1,triggerRect:{width:0,height:0,top:0,left:0},variant:`shade`}),P=t({state:N,subscribe(e){return a(N,()=>e(N))},subscribeKey(e,t){return m(N,e,t)},showTooltip({message:e,triggerRect:t,variant:n}){N.open=!0,N.message=e,N.triggerRect=t,N.variant=n},hide(){N.open=!1,N.message=``,N.triggerRect={width:0,height:0,top:0,left:0}}}),ge={isUnsupportedChainView(){return _.state.view===`UnsupportedChain`||_.state.view===`SwitchNetwork`&&_.state.history.includes(`UnsupportedChain`)},async safeClose(){if(this.isUnsupportedChainView()){h.shake();return}if(await pe.isSIWXCloseDisabled()){h.shake();return}(_.state.view===`DataCapture`||_.state.view===`DataCaptureOtpConfirm`)&&ne.disconnect(),h.close()}},_e=C`
2
2
  :host {
3
3
  display: block;
4
4
  border-radius: clamp(0px, ${({borderRadius:e})=>e[8]}, 44px);
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./accounts-DiZ-0VmN.js","./_esm-B26FZg5Y.js","./preload-helper-uBIymjUX.js","./parseAbi-Csg-8t59.js","./parseAbiParameters-BWbIMYe4.js","./stringify-BlDm7tuc.js","./chain-DM3oH6Px.js","./utils-BkR7EQjg.js","./ccip-BZvRTL6g.js","./formatter-CVbp4SlJ.js","./serializeSignature-DfxkPnu-.js","./serializeAuthorizationList-CX8hGL56.js","./sha2-BU_QyRTx.js","./secp256k1-_MleGpqL.js","./defineChain-CiuCXUZW.js","./accounts-D96UKWkC.js","./_esm-BdeM6pxJ.js","./react-DCXkXSrv.js","./react-DrJ0MmMO.js","./rolldown-runtime-BcKkbAw3.js","./client-Dsa7_3V3.js","./react-dom-5dW7aKoP.js","./esm-ByALO6mA.js","./esm-B5cbIQaz.js","./esm-n2lWo7kz.js","./privy-context-81KmsBw2-CjWGzyg7.js","./jsx-runtime-BbDfbRii.js","./types-4CuOD23i.js","./get-entropy-details-for-user-dHRH5Gpi-Dukf7_kJ.js","./react-DQnMl2Xv.js","./errors-BQ3N-RVt-BLqjTPNR.js","./ofetch.CWycOUEr-CHp-crOQ.js","./dist-Dl07uGq1.js","./use-unlink-wallet-BKK4_5Ur-CC2pq27z.js","./modal-context-CwmSeFcv-DruX9J1E.js","./localBatchGatewayRequest-3kLrX_c7.js","./utils-DJhBNOZA.js","./useWallets-X1ndvJ_U-DRjz7uYD.js","./storage-Ufl800Ne-D0bZBw-H.js","./secp256k1-D92aGNnU.js","./pkce-DXF0yKjP-ChQhE0st.js","./eventemitter3-CL76jPsW.js","./index.browser-B-i-Lj3J.js","./PrivyPluginContext-DA-yS5vO-CtQWBiV2.js","./index-YiCw0Y_x-CX5i3Z87.js","./Loader-UAZqxsnw-Cy7hEE2f.js","./toViemAccount-B5iDGq1b-Ba8L7zed.js","./dist-Cm7pNAtL.js","./lib-BsS8z8Lj.js","./guards-BIW-GiMJ-CHfXo8XI.js","./logger-CsXm3oIv-B0UYpNFI.js","./SolanaWalletConnector-C7Lqk-Wz-DPwhuzcI.js","./use-headless-crypto-deposit-Yn-QRLB3-LUIVFBSd.js","./walletconnect-registry-xxG8XLCb-D1SSFvMp.js","./id-UqEwL2BI-BkKm533U.js","./useActiveWallet-B-yZYGc6-D7Ik-LxJ.js","./esm-C3DslVJx.js"])))=>i.map(i=>d[i]);
2
- import{s as e}from"./rolldown-runtime-BcKkbAw3.js";import{t}from"./preload-helper-uBIymjUX.js";import{t as n}from"./defineChain-CiuCXUZW.js";import{n as r,t as i}from"./baseSepolia-DX-qGsik.js";var a=n({id:42161,name:`Arbitrum One`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},blockTime:250,rpcUrls:{default:{http:[`https://arb1.arbitrum.io/rpc`]}},blockExplorers:{default:{name:`Arbiscan`,url:`https://arbiscan.io`,apiUrl:`https://api.arbiscan.io/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:7654707}}}),o=n({id:421614,name:`Arbitrum Sepolia`,blockTime:250,nativeCurrency:{name:`Arbitrum Sepolia Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://sepolia-rollup.arbitrum.io/rpc`]}},blockExplorers:{default:{name:`Arbiscan`,url:`https://sepolia.arbiscan.io`,apiUrl:`https://api-sepolia.arbiscan.io/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:81930}},testnet:!0}),s={"arbitrum-sepolia":421614,arbitrum:42161,"base-sepolia":84532,base:8453},c=e=>typeof btoa==`function`?btoa(e):Buffer.from(e,`utf8`).toString(`base64`),l=e=>typeof atob==`function`?atob(e):Buffer.from(e,`base64`).toString(`utf8`);function u(e=[],{maxPrice:t,networks:n=Object.keys(s)}={}){let r=e.filter(e=>e.scheme===`exact`&&n.includes(e.network));if(!r.length)throw Error(`no payable option: ${JSON.stringify(e.map(e=>`${e.scheme}/${e.network}`))}`);let i=r.sort((e,t)=>BigInt(e.maxAmountRequired)<BigInt(t.maxAmountRequired)?-1:1)[0];if(t!=null&&BigInt(i.maxAmountRequired)>BigInt(t))throw Error(`price ${i.maxAmountRequired} exceeds the cap ${t} (token base units)`);return i}async function d(e,t,{now:n=Math.floor(Date.now()/1e3)}={}){let r=s[e.network];if(!r)throw Error(`unknown network ${e.network}`);let i=`0x${[...crypto.getRandomValues(new Uint8Array(32))].map(e=>e.toString(16).padStart(2,`0`)).join(``)}`,a={from:t.address,to:e.payTo,value:String(e.maxAmountRequired),validAfter:String(n-600),validBefore:String(n+(e.maxTimeoutSeconds??120)),nonce:i},o=await t.signTypedData({domain:{name:e.extra?.name??`USD Coin`,version:e.extra?.version??`2`,chainId:r,verifyingContract:e.asset},types:{TransferWithAuthorization:[{name:`from`,type:`address`},{name:`to`,type:`address`},{name:`value`,type:`uint256`},{name:`validAfter`,type:`uint256`},{name:`validBefore`,type:`uint256`},{name:`nonce`,type:`bytes32`}]},primaryType:`TransferWithAuthorization`,message:{...a,value:BigInt(a.value),validAfter:BigInt(a.validAfter),validBefore:BigInt(a.validBefore)}});return c(JSON.stringify({x402Version:1,scheme:`exact`,network:e.network,payload:{signature:o,authorization:a}}))}async function f(e,{privateKey:n,account:r,maxPrice:i,fetchImpl:a=fetch}={}){let o=await a(e);if(o.status!==402)return{status:o.status,body:await o.text(),price:null,receipt:null};let s=u((await o.json()).accepts,{maxPrice:i});if(!r){if(!n)throw Error(`${e} costs ${s.maxAmountRequired} (base units of ${s.asset} on ${s.network}); no wallet configured to pay`);r=(await t(async()=>{let{privateKeyToAccount:e}=await import(`./accounts-DiZ-0VmN.js`);return{privateKeyToAccount:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]),import.meta.url)).privateKeyToAccount(n)}let c=await a(e,{headers:{"X-PAYMENT":await d(s,r)}}),f=c.headers.get(`X-PAYMENT-RESPONSE`),p=await c.text();if(c.status===402)throw Error(`payment refused: ${JSON.parse(p).error??p}`);return{status:c.status,body:p,price:s.maxAmountRequired,receipt:f?JSON.parse(l(f)):null}}async function p(e,t,{want:n,account:r,privateKey:i,maxPrice:a=e.price,fetchImpl:o}={}){let s=await f(e.url.replace(`{id}`,encodeURIComponent(t)),{account:r,privateKey:i,maxPrice:a,fetchImpl:o});if(s.status!==200)return{id:t,error:`HTTP ${s.status}: ${s.body.slice(0,200)}`};let c=[...new Uint8Array(await crypto.subtle.digest(`SHA-256`,new TextEncoder().encode(s.body)))].map(e=>e.toString(16).padStart(2,`0`)).join(``);return{id:t,price:s.price,receipt:s.receipt,digest:c,verified:n?n===c:null,record:JSON.parse(s.body)}}if(typeof process<`u`&&import.meta.url===`file://${process.argv[1]}`&&process.argv[1].endsWith(`/x402.js`)){let{privateKeyToAccount:e,generatePrivateKey:n}=await t(async()=>{let{privateKeyToAccount:e,generatePrivateKey:t}=await import(`./accounts-DiZ-0VmN.js`);return{privateKeyToAccount:e,generatePrivateKey:t}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]),import.meta.url),{verifyTypedData:r}=await t(async()=>{let{verifyTypedData:e}=await import(`./_esm-BdeM6pxJ.js`);return{verifyTypedData:e}},__vite__mapDeps([16,3,4,1,2,5,6,7,8,9,10,11,12,13,14]),import.meta.url),i=e(n()),a=`0x75faf114eafb1BDbe2F0316DF893fd58CE46AA4d`,o=`0x${`5e`.repeat(20)}`,s={scheme:`exact`,network:`arbitrum-sepolia`,maxAmountRequired:`10000`,resource:`https://x/paid/1`,payTo:o,asset:a,maxTimeoutSeconds:120,extra:{name:`USD Coin`,version:`2`}},u=null,d=async(e,t={})=>{let n=t.headers?.[`X-PAYMENT`];if(!n)return new Response(JSON.stringify({x402Version:1,accepts:[s]}),{status:402});let i=JSON.parse(l(n)).payload,d=i.authorization;return!await r({address:d.from,signature:i.signature,domain:{name:`USD Coin`,version:`2`,chainId:421614,verifyingContract:a},types:{TransferWithAuthorization:[{name:`from`,type:`address`},{name:`to`,type:`address`},{name:`value`,type:`uint256`},{name:`validAfter`,type:`uint256`},{name:`validBefore`,type:`uint256`},{name:`nonce`,type:`bytes32`}]},primaryType:`TransferWithAuthorization`,message:{...d,value:BigInt(d.value),validAfter:BigInt(d.validAfter),validBefore:BigInt(d.validBefore)}})||d.to!==o||d.value!==`10000`?new Response(JSON.stringify({error:`bad payment`}),{status:402}):(u=d,new Response(`{"secret":42}`,{status:200,headers:{"X-PAYMENT-RESPONSE":c(JSON.stringify({success:!0,transaction:`0xabc`}))}}))},p=await f(`https://x/paid/1`,{account:i,maxPrice:10000n,fetchImpl:d});if(p.body!==`{"secret":42}`||p.receipt.transaction!==`0xabc`||u.from!==i.address)throw Error(`paid fetch: ${JSON.stringify(p)}`);let m=!1;try{await f(`https://x/paid/1`,{account:i,maxPrice:9999n,fetchImpl:d})}catch(e){m=/exceeds the cap/.test(e.message)}if(!m)throw Error(`a price over the cap must be refused before signing`);console.log(`x402.js self-check ok — a signed EIP-3009 authorization the seller can verify, exactly the asked amount to the asked payee, the receipt read back, and a price over the cap refused before signing`)}var m=`cmnxrwbjl00aa0dlart5xkemq`,h={"arbitrum-sepolia":o,arbitrum:a,"base-sepolia":i,base:r},g={"arbitrum-sepolia":`https://faucet.circle.com/`,"base-sepolia":`https://faucet.circle.com/`},_=null;function v(e){return _??=y(e)}async function y(n){let[r,{createRoot:i},a,o]=await Promise.all([t(()=>import(`./react-DCXkXSrv.js`).then(t=>e(t.default,1)),__vite__mapDeps([17,18,19]),import.meta.url),t(()=>import(`./client-Dsa7_3V3.js`).then(t=>e(t.default,1)),__vite__mapDeps([20,19,18,21]),import.meta.url),t(()=>import(`./esm-ByALO6mA.js`),__vite__mapDeps([22,23,19,1,2,3,4,5,6,7,8,9,10,11,12,13,14,24,25,26,18,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,21,56]),import.meta.url),t(()=>import(`./_esm-BdeM6pxJ.js`),__vite__mapDeps([16,3,4,1,2,5,6,7,8,9,10,11,12,13,14]),import.meta.url)]),s=h[n.network];if(!s)throw Error(`no chain for ${n.network}`);let c=o.createPublicClient({chain:s,transport:o.http()}),l=new Set,u={chain:s,faucet:g[n.network]??null,address:null,authenticated:!1,onChange(e){return l.add(e),e(u),()=>l.delete(e)},async signIn(){return u.authenticated||u.login(),new Promise(e=>{let t=u.onChange(n=>{n.address&&(t(),e(n))})})},async balance(){if(!u.address)return null;let e=await c.readContract({address:n.asset,abi:o.erc20Abi,functionName:`balanceOf`,args:[u.address]});return Number(e)/10**(n.decimals??6)},async buy(e,t){await u.signIn();let r=e=>JSON.parse(JSON.stringify(e,(e,t)=>typeof t==`bigint`?t.toString():t));return p(n,e,{want:t,account:{address:u.address,signTypedData:async e=>(await u.sign(r(e),{address:u.address,uiOptions:{showWalletUIs:!1}})).signature}})},addFunds(){return u.faucet?window.open(u.faucet,`_blank`,`noopener`):u.deposit({destination:{wallet:u.walletId,asset:`usdc`,chain:`eip155:${s.id}`},fiat:{source:{assets:[`usd`]},environment:`production`,defaultAmount:`10`}})}},d=document.body.appendChild(document.createElement(`div`));return new Promise(e=>{function t(){let t=a.usePrivy(),{wallets:n}=a.useWallets(),{signTypedData:i}=a.useSignTypedData(),{depositFunds:o}=a.useDepositFunds(),s=n.find(e=>e.walletClientType===`privy`);return Object.assign(u,{login:t.login,logout:t.logout,authenticated:t.authenticated,address:s?.address??null,walletId:s?.id??null,sign:i,deposit:o}),r.useEffect(()=>{for(let e of l)e(u)}),r.useEffect(()=>{t.ready&&e(u)},[t.ready]),null}i(d).render(r.createElement(a.PrivyProvider,{appId:m,config:{loginMethods:[`email`,`google`],defaultChain:s,supportedChains:[s],embeddedWallets:{ethereum:{createOnLogin:`users-without-wallets`}}}},r.createElement(t)))})}export{v as wallet};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./accounts-Bq8t1wAD.js","./_esm-CJe2F7LL.js","./preload-helper-BaNbYf_w.js","./parseAbi-Csg-8t59.js","./parseAbiParameters-BWbIMYe4.js","./stringify-BlDm7tuc.js","./chain-DM3oH6Px.js","./utils-BkR7EQjg.js","./ccip-C-59SNEF.js","./formatter-CVbp4SlJ.js","./serializeSignature-DfxkPnu-.js","./serializeAuthorizationList-CX8hGL56.js","./sha2-BU_QyRTx.js","./secp256k1-_MleGpqL.js","./defineChain-CiuCXUZW.js","./accounts-D96UKWkC.js","./_esm-zhBBffjV.js","./react-DCXkXSrv.js","./react-DrJ0MmMO.js","./rolldown-runtime-BcKkbAw3.js","./client-Dsa7_3V3.js","./react-dom-5dW7aKoP.js","./esm-DXsETz3H.js","./esm-vs5jNx_Y.js","./esm-n2lWo7kz.js","./privy-context-81KmsBw2-CjWGzyg7.js","./jsx-runtime-BbDfbRii.js","./types-4CuOD23i.js","./get-entropy-details-for-user-dHRH5Gpi-Dukf7_kJ.js","./react-DQnMl2Xv.js","./errors-BQ3N-RVt-BLqjTPNR.js","./ofetch.CWycOUEr-CHp-crOQ.js","./dist-Dl07uGq1.js","./use-unlink-wallet-BKK4_5Ur-DgsQ75lh.js","./modal-context-CwmSeFcv-DruX9J1E.js","./localBatchGatewayRequest-5YxrERBj.js","./utils-DJhBNOZA.js","./useWallets-X1ndvJ_U-CLwUcevw.js","./storage-Ufl800Ne-EalZTH9q.js","./secp256k1-D92aGNnU.js","./pkce-DXF0yKjP-Bqz4wAsq.js","./eventemitter3-CL76jPsW.js","./index.browser-B-i-Lj3J.js","./PrivyPluginContext-DA-yS5vO-CtQWBiV2.js","./index-YiCw0Y_x-BX1zsiqG.js","./Loader-UAZqxsnw-Cy7hEE2f.js","./toViemAccount-B5iDGq1b-DZ1MBqUW.js","./dist-Cm7pNAtL.js","./lib-BsS8z8Lj.js","./guards-BIW-GiMJ-CHfXo8XI.js","./logger-CsXm3oIv-B0UYpNFI.js","./SolanaWalletConnector-C7Lqk-Wz-BUdJJ0ep.js","./use-headless-crypto-deposit-Yn-QRLB3-Dn6_8w-Y.js","./walletconnect-registry-xxG8XLCb-D1SSFvMp.js","./id-UqEwL2BI-CdKXapd-.js","./useActiveWallet-B-yZYGc6-B6JWREbk.js","./esm-C3DslVJx.js"])))=>i.map(i=>d[i]);
2
+ import{s as e}from"./rolldown-runtime-BcKkbAw3.js";import{t}from"./preload-helper-BaNbYf_w.js";import{t as n}from"./defineChain-CiuCXUZW.js";import{n as r,t as i}from"./baseSepolia-DX-qGsik.js";var a=n({id:42161,name:`Arbitrum One`,nativeCurrency:{name:`Ether`,symbol:`ETH`,decimals:18},blockTime:250,rpcUrls:{default:{http:[`https://arb1.arbitrum.io/rpc`]}},blockExplorers:{default:{name:`Arbiscan`,url:`https://arbiscan.io`,apiUrl:`https://api.arbiscan.io/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:7654707}}}),o=n({id:421614,name:`Arbitrum Sepolia`,blockTime:250,nativeCurrency:{name:`Arbitrum Sepolia Ether`,symbol:`ETH`,decimals:18},rpcUrls:{default:{http:[`https://sepolia-rollup.arbitrum.io/rpc`]}},blockExplorers:{default:{name:`Arbiscan`,url:`https://sepolia.arbiscan.io`,apiUrl:`https://api-sepolia.arbiscan.io/api`}},contracts:{multicall3:{address:`0xca11bde05977b3631167028862be2a173976ca11`,blockCreated:81930}},testnet:!0}),s={"arbitrum-sepolia":421614,arbitrum:42161,"base-sepolia":84532,base:8453},c=e=>typeof btoa==`function`?btoa(e):Buffer.from(e,`utf8`).toString(`base64`),l=e=>typeof atob==`function`?atob(e):Buffer.from(e,`base64`).toString(`utf8`);function u(e=[],{maxPrice:t,networks:n=Object.keys(s)}={}){let r=e.filter(e=>e.scheme===`exact`&&n.includes(e.network));if(!r.length)throw Error(`no payable option: ${JSON.stringify(e.map(e=>`${e.scheme}/${e.network}`))}`);let i=r.sort((e,t)=>BigInt(e.maxAmountRequired)<BigInt(t.maxAmountRequired)?-1:1)[0];if(t!=null&&BigInt(i.maxAmountRequired)>BigInt(t))throw Error(`price ${i.maxAmountRequired} exceeds the cap ${t} (token base units)`);return i}async function d(e,t,{now:n=Math.floor(Date.now()/1e3)}={}){let r=s[e.network];if(!r)throw Error(`unknown network ${e.network}`);let i=`0x${[...crypto.getRandomValues(new Uint8Array(32))].map(e=>e.toString(16).padStart(2,`0`)).join(``)}`,a={from:t.address,to:e.payTo,value:String(e.maxAmountRequired),validAfter:String(n-600),validBefore:String(n+(e.maxTimeoutSeconds??120)),nonce:i},o=await t.signTypedData({domain:{name:e.extra?.name??`USD Coin`,version:e.extra?.version??`2`,chainId:r,verifyingContract:e.asset},types:{TransferWithAuthorization:[{name:`from`,type:`address`},{name:`to`,type:`address`},{name:`value`,type:`uint256`},{name:`validAfter`,type:`uint256`},{name:`validBefore`,type:`uint256`},{name:`nonce`,type:`bytes32`}]},primaryType:`TransferWithAuthorization`,message:{...a,value:BigInt(a.value),validAfter:BigInt(a.validAfter),validBefore:BigInt(a.validBefore)}});return c(JSON.stringify({x402Version:1,scheme:`exact`,network:e.network,payload:{signature:o,authorization:a}}))}async function f(e,{privateKey:n,account:r,maxPrice:i,fetchImpl:a=fetch}={}){let o=await a(e);if(o.status!==402)return{status:o.status,body:await o.text(),price:null,receipt:null};let s=u((await o.json()).accepts,{maxPrice:i});if(!r){if(!n)throw Error(`${e} costs ${s.maxAmountRequired} (base units of ${s.asset} on ${s.network}); no wallet configured to pay`);r=(await t(async()=>{let{privateKeyToAccount:e}=await import(`./accounts-Bq8t1wAD.js`);return{privateKeyToAccount:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]),import.meta.url)).privateKeyToAccount(n)}let c=await a(e,{headers:{"X-PAYMENT":await d(s,r)}}),f=c.headers.get(`X-PAYMENT-RESPONSE`),p=await c.text();if(c.status===402)throw Error(`payment refused: ${JSON.parse(p).error??p}`);return{status:c.status,body:p,price:s.maxAmountRequired,receipt:f?JSON.parse(l(f)):null}}async function p(e,t,{want:n,account:r,privateKey:i,maxPrice:a=e.price,fetchImpl:o}={}){let s=await f(e.url.replace(`{id}`,encodeURIComponent(t)),{account:r,privateKey:i,maxPrice:a,fetchImpl:o});if(s.status!==200)return{id:t,error:`HTTP ${s.status}: ${s.body.slice(0,200)}`};let c=[...new Uint8Array(await crypto.subtle.digest(`SHA-256`,new TextEncoder().encode(s.body)))].map(e=>e.toString(16).padStart(2,`0`)).join(``);return{id:t,price:s.price,receipt:s.receipt,digest:c,verified:n?n===c:null,record:JSON.parse(s.body)}}if(typeof process<`u`&&import.meta.url===`file://${process.argv[1]}`&&process.argv[1].endsWith(`/x402.js`)){let{privateKeyToAccount:e,generatePrivateKey:n}=await t(async()=>{let{privateKeyToAccount:e,generatePrivateKey:t}=await import(`./accounts-Bq8t1wAD.js`);return{privateKeyToAccount:e,generatePrivateKey:t}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]),import.meta.url),{verifyTypedData:r}=await t(async()=>{let{verifyTypedData:e}=await import(`./_esm-zhBBffjV.js`);return{verifyTypedData:e}},__vite__mapDeps([16,3,4,1,2,5,6,7,8,9,10,11,12,13,14]),import.meta.url),i=e(n()),a=`0x75faf114eafb1BDbe2F0316DF893fd58CE46AA4d`,o=`0x${`5e`.repeat(20)}`,s={scheme:`exact`,network:`arbitrum-sepolia`,maxAmountRequired:`10000`,resource:`https://x/paid/1`,payTo:o,asset:a,maxTimeoutSeconds:120,extra:{name:`USD Coin`,version:`2`}},u=null,d=async(e,t={})=>{let n=t.headers?.[`X-PAYMENT`];if(!n)return new Response(JSON.stringify({x402Version:1,accepts:[s]}),{status:402});let i=JSON.parse(l(n)).payload,d=i.authorization;return!await r({address:d.from,signature:i.signature,domain:{name:`USD Coin`,version:`2`,chainId:421614,verifyingContract:a},types:{TransferWithAuthorization:[{name:`from`,type:`address`},{name:`to`,type:`address`},{name:`value`,type:`uint256`},{name:`validAfter`,type:`uint256`},{name:`validBefore`,type:`uint256`},{name:`nonce`,type:`bytes32`}]},primaryType:`TransferWithAuthorization`,message:{...d,value:BigInt(d.value),validAfter:BigInt(d.validAfter),validBefore:BigInt(d.validBefore)}})||d.to!==o||d.value!==`10000`?new Response(JSON.stringify({error:`bad payment`}),{status:402}):(u=d,new Response(`{"secret":42}`,{status:200,headers:{"X-PAYMENT-RESPONSE":c(JSON.stringify({success:!0,transaction:`0xabc`}))}}))},p=await f(`https://x/paid/1`,{account:i,maxPrice:10000n,fetchImpl:d});if(p.body!==`{"secret":42}`||p.receipt.transaction!==`0xabc`||u.from!==i.address)throw Error(`paid fetch: ${JSON.stringify(p)}`);let m=!1;try{await f(`https://x/paid/1`,{account:i,maxPrice:9999n,fetchImpl:d})}catch(e){m=/exceeds the cap/.test(e.message)}if(!m)throw Error(`a price over the cap must be refused before signing`);console.log(`x402.js self-check ok — a signed EIP-3009 authorization the seller can verify, exactly the asked amount to the asked payee, the receipt read back, and a price over the cap refused before signing`)}var m=`cmnxrwbjl00aa0dlart5xkemq`,h={"arbitrum-sepolia":o,arbitrum:a,"base-sepolia":i,base:r},g={"arbitrum-sepolia":`https://faucet.circle.com/`,"base-sepolia":`https://faucet.circle.com/`},_=null;function v(e){return _??=y(e)}async function y(n){let[r,{createRoot:i},a,o]=await Promise.all([t(()=>import(`./react-DCXkXSrv.js`).then(t=>e(t.default,1)),__vite__mapDeps([17,18,19]),import.meta.url),t(()=>import(`./client-Dsa7_3V3.js`).then(t=>e(t.default,1)),__vite__mapDeps([20,19,18,21]),import.meta.url),t(()=>import(`./esm-DXsETz3H.js`),__vite__mapDeps([22,23,19,1,2,3,4,5,6,7,8,9,10,11,12,13,14,24,25,26,18,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,21,56]),import.meta.url),t(()=>import(`./_esm-zhBBffjV.js`),__vite__mapDeps([16,3,4,1,2,5,6,7,8,9,10,11,12,13,14]),import.meta.url)]),s=h[n.network];if(!s)throw Error(`no chain for ${n.network}`);let c=o.createPublicClient({chain:s,transport:o.http()}),l=new Set,u={chain:s,faucet:g[n.network]??null,address:null,authenticated:!1,onChange(e){return l.add(e),e(u),()=>l.delete(e)},async signIn(){return u.address?u:(u.authenticated||u.login(),new Promise(e=>{let t=u.onChange(n=>{n.address&&(t(),e(n))})}))},async balance(){if(!u.address)return null;let e=await c.readContract({address:n.asset,abi:o.erc20Abi,functionName:`balanceOf`,args:[u.address]});return Number(e)/10**(n.decimals??6)},async buy(e,t){await u.signIn();let r=e=>JSON.parse(JSON.stringify(e,(e,t)=>typeof t==`bigint`?t.toString():t));return p(n,e,{want:t,account:{address:u.address,signTypedData:async e=>(await u.sign(r(e),{address:u.address,uiOptions:{showWalletUIs:!1}})).signature}})},addFunds(){return u.faucet?window.open(u.faucet,`_blank`,`noopener`):u.deposit({destination:{wallet:u.walletId,asset:`usdc`,chain:`eip155:${s.id}`},fiat:{source:{assets:[`usd`]},environment:`production`,defaultAmount:`10`}})}},d=document.body.appendChild(document.createElement(`div`));return new Promise(e=>{function t(){let t=a.usePrivy(),{wallets:n}=a.useWallets(),{signTypedData:i}=a.useSignTypedData(),{depositFunds:o}=a.useDepositFunds(),s=n.find(e=>e.walletClientType===`privy`);return Object.assign(u,{login:t.login,logout:t.logout,authenticated:t.authenticated,address:s?.address??null,walletId:s?.id??null,sign:i,deposit:o}),r.useEffect(()=>{for(let e of l)e(u)}),r.useEffect(()=>{t.ready&&e(u)},[t.ready]),null}i(d).render(r.createElement(a.PrivyProvider,{appId:m,config:{loginMethods:[`email`,`google`],defaultChain:s,supportedChains:[s],embeddedWallets:{ethereum:{createOnLogin:`users-without-wallets`}}}},r.createElement(t)))})}export{v as wallet};