@fangorn-network/westmarch 0.0.20-dev → 2026.10.2-2.0-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.
- package/README.md +33 -3
- package/docs/app-to-agent.md +117 -60
- package/package.json +10 -5
- package/plugin/scripts/fx.mjs +7 -9
- package/site/dist/assets/{AccountNotFoundScreen-C4njXc69-BOfmiSH1.js → AccountNotFoundScreen-C4njXc69-DyVH4CEz.js} +1 -1
- package/site/dist/assets/{AddFundsSelectionScreen-RAoCn7ej-D_EsIeJu.js → AddFundsSelectionScreen-RAoCn7ej-Dz1--SS9.js} +1 -1
- package/site/dist/assets/{Address-H8kD1d9O-C85sJ79B.js → Address-H8kD1d9O-BdFZmRwI.js} +1 -1
- package/site/dist/assets/{AffirmativeConsentScreen-BG0MJxku-DdEPFOww.js → AffirmativeConsentScreen-BG0MJxku-CxaCAisL.js} +1 -1
- package/site/dist/assets/{AllowlistRejectionScreen-Cae6e1Od-DhVy9iGN.js → AllowlistRejectionScreen-Cae6e1Od-JGk7vndN.js} +1 -1
- package/site/dist/assets/{ApiController-CYdiyu9B.js → ApiController-CTLbMCcH.js} +4 -4
- package/site/dist/assets/{ArrowsRightLeftIcon-cp60yobq.js → ArrowsRightLeftIcon-B8g9adpz.js} +1 -1
- package/site/dist/assets/{AuthenticateWithWalletScreen-CU6hIcFT-8rbYiYYE.js → AuthenticateWithWalletScreen-CU6hIcFT-CXD9_OP8.js} +1 -1
- package/site/dist/assets/{AwaitingEvmToSolBridgingScreen-D0e_sZMS-2pkNfCno.js → AwaitingEvmToSolBridgingScreen-D0e_sZMS-BtJCglvU.js} +1 -1
- package/site/dist/assets/{AwaitingExternalEthereumTransferScreen-ur5HL4R7-7AQt25_k.js → AwaitingExternalEthereumTransferScreen-ur5HL4R7-BgC2TsqH.js} +1 -1
- package/site/dist/assets/{AwaitingPasswordlessCodeScreen-DRHz76mM-BZY30TGs.js → AwaitingPasswordlessCodeScreen-DRHz76mM-B9OzLeEO.js} +1 -1
- package/site/dist/assets/{AwaitingSolToEvmBridgingScreen-CdLRrGD2-BILOOLi_.js → AwaitingSolToEvmBridgingScreen-CdLRrGD2-C7r5snUL.js} +1 -1
- package/site/dist/assets/BridgeNetworkSelectionView-CFGjB2nO-BTV0NRio.js +68 -0
- package/site/dist/assets/{CaptchaScreen-DbpvkIGx-D8eDcAkc.js → CaptchaScreen-DbpvkIGx-7rSZIuM-.js} +1 -1
- package/site/dist/assets/{CheckCircleIcon-NCOQc0Gs.js → CheckCircleIcon-B1l17ioc.js} +1 -1
- package/site/dist/assets/{CheckCircleIcon-BM409mGI.js → CheckCircleIcon-BGSI8nKf.js} +1 -1
- package/site/dist/assets/{Checkbox-D1EDeo41-rHlvsZzP.js → Checkbox-D1EDeo41-BUfq0w99.js} +1 -1
- package/site/dist/assets/{ChevronDownIcon-CW-4MSpE.js → ChevronDownIcon-B6uJvPHu.js} +1 -1
- package/site/dist/assets/{Chip-CZKIKt9K-CutJG010.js → Chip-CZKIKt9K-r9Nk__0-.js} +1 -1
- package/site/dist/assets/{CoinbaseOnrampStatusScreen-BbyCJDXL-DLs9zX-Q.js → CoinbaseOnrampStatusScreen-BbyCJDXL-DWWNHxmR.js} +1 -1
- package/site/dist/assets/{ConnectEmailForm-B-VRE0MN-N9J6T_YL.js → ConnectEmailForm-B-VRE0MN-CRQwS0Xu.js} +1 -1
- package/site/dist/assets/{ConnectLedgerScreen-DWHABGot-h0uYIUi6.js → ConnectLedgerScreen-DWHABGot-CZcCt31O.js} +1 -1
- package/site/dist/assets/{ConnectOnlyLandingScreen-CZYx9Bmp-LeuDMN1E.js → ConnectOnlyLandingScreen-CZYx9Bmp-C5IOf-SQ.js} +1 -1
- package/site/dist/assets/{ConnectOnlyStatusScreen-DCRzjxHx-DaRa59tZ.js → ConnectOnlyStatusScreen-DCRzjxHx-cwg74F3A.js} +1 -1
- package/site/dist/assets/ConnectOrCreateScreen-CUUYUO07-D28oeK6b.js +1 -0
- package/site/dist/assets/{ConnectPhoneForm-Dek5xn4C-BEA4FmhI.js → ConnectPhoneForm-Dek5xn4C-EEdkKeTp.js} +1 -1
- package/site/dist/assets/ConnectWalletView-DqI-PTvX-C2mEzukj.js +74 -0
- package/site/dist/assets/{ConnectionStatusScreen-fUfROm9m-BeWLchcf.js → ConnectionStatusScreen-fUfROm9m-CH_7r8iV.js} +1 -1
- package/site/dist/assets/ConnectionStatusScreen-fUfROm9m-Z33kis0B.js +1 -0
- package/site/dist/assets/{ConnectorUtil-Cq4lWnfe.js → ConnectorUtil-DH4NePk5.js} +1 -1
- package/site/dist/assets/{CopyToClipboard-i_OQSBJr-DujUHNzW.js → CopyToClipboard-i_OQSBJr-_G88JCVR.js} +1 -1
- package/site/dist/assets/{CopyableText-CQapvaMr-DMIdpDaU.js → CopyableText-CQapvaMr-CGGfc_zM.js} +1 -1
- package/site/dist/assets/{CrossAppAuthScreen-CLw7ymZq-Csju14vF.js → CrossAppAuthScreen-CLw7ymZq-C9Okoc0V.js} +1 -1
- package/site/dist/assets/{CustomLandingScreenView-Cm_MBSyX-CBOrbNLo.js → CustomLandingScreenView-Cm_MBSyX-D2l6hdSl.js} +1 -1
- package/site/dist/assets/{DelegatedActionsConsentScreen-DYF2U4y5-BL5hzNUI.js → DelegatedActionsConsentScreen-DYF2U4y5-Dda3KKqS.js} +1 -1
- package/site/dist/assets/{DelegatedActionsRevokeScreen-bPp6Uwyh-fcO51q5H.js → DelegatedActionsRevokeScreen-bPp6Uwyh-DG8kJPt1.js} +1 -1
- package/site/dist/assets/{DepositAddressAddressStepView-4vdkb55L-B3vY888G.js → DepositAddressAddressStepView-4vdkb55L-CcOUfn6f.js} +1 -1
- package/site/dist/assets/{DepositAddressScreen-DBLRs7aI-DmdQaFI2.js → DepositAddressScreen-DBLRs7aI-DeituDNh.js} +1 -1
- package/site/dist/assets/{DepositAddressV3Screen-CDqIEMQw-BoupRyfV.js → DepositAddressV3Screen-CDqIEMQw-FDg6K14-.js} +1 -1
- package/site/dist/assets/{EmailInputForm-Cqo1mda8-B2NG3K5V.js → EmailInputForm-Cqo1mda8-BmbxvPHC.js} +1 -1
- package/site/dist/assets/{EmbeddedWalletConnectingScreen-D4T7DUzs-D_AVgO4s.js → EmbeddedWalletConnectingScreen-D4T7DUzs-B05CQ9rx.js} +1 -1
- package/site/dist/assets/{EmbeddedWalletCreatedScreen-D7WhW5ve-CLsJbPYQ.js → EmbeddedWalletCreatedScreen-D7WhW5ve-Cxd1b9XH.js} +1 -1
- package/site/dist/assets/{EmbeddedWalletKeyExportScreen-CqV4NYQ3-C9sAExzE.js → EmbeddedWalletKeyExportScreen-CqV4NYQ3-CrJy0ViX.js} +1 -1
- package/site/dist/assets/{EmbeddedWalletOnAccountCreateScreen-BoKb3Q2S-DxaWAAKa.js → EmbeddedWalletOnAccountCreateScreen-BoKb3Q2S-Bakaa3zu.js} +1 -1
- package/site/dist/assets/{EmbeddedWalletPasswordUpdateScreen-D3rMlqS7-CxrfLr5q.js → EmbeddedWalletPasswordUpdateScreen-D3rMlqS7-j78vKrcj.js} +1 -1
- package/site/dist/assets/{EmbeddedWalletPasswordUpdateSplashScreen-BPFkWJeE-DHZRGoTN.js → EmbeddedWalletPasswordUpdateSplashScreen-BPFkWJeE-D3dr7W9_.js} +1 -1
- package/site/dist/assets/{EnrollTotp-Dibew4dp-SA2pvNEc.js → EnrollTotp-Dibew4dp-BXbYV8nI.js} +1 -1
- package/site/dist/assets/{EnvelopeIcon-Dh2vSVj4.js → EnvelopeIcon-DjPofnRI.js} +1 -1
- package/site/dist/assets/{ErrorBanner-BcpGRt0h-BKOYTyCi.js → ErrorBanner-BcpGRt0h-BhH6_V-9.js} +1 -1
- package/site/dist/assets/{ErrorMessage-D8VaAP5m-CrZOnUyg.js → ErrorMessage-D8VaAP5m-Bs7uX2a9.js} +1 -1
- package/site/dist/assets/{ErrorScreen-DipdTWzE-c8g8En21.js → ErrorScreen-DipdTWzE-BgPRgnOb.js} +1 -1
- package/site/dist/assets/ErrorScreen-DipdTWzE-CvxXC6pz.js +1 -0
- package/site/dist/assets/{ExclamationCircleIcon-DUA2wMfO.js → ExclamationCircleIcon-BE-WGrut.js} +1 -1
- package/site/dist/assets/{ExclamationTriangleIcon-eZfaqcFq.js → ExclamationTriangleIcon-Ca1Xlc_f.js} +1 -1
- package/site/dist/assets/{FarcasterConnectStatusScreen-51tjUxqq-s_s5M2CZ.js → FarcasterConnectStatusScreen-51tjUxqq-De2JvZdV.js} +1 -1
- package/site/dist/assets/{FarcasterSignerStatusScreen-6x-Uh95G-BHBR4k8H.js → FarcasterSignerStatusScreen-6x-Uh95G-bLp3hXoO.js} +1 -1
- package/site/dist/assets/FiatOnrampScreen-BAhYeiTI-Jr6D6JiZ.js +491 -0
- package/site/dist/assets/{FingerPrintIcon-Dm6kxmg7.js → FingerPrintIcon-DOCbS93y.js} +1 -1
- package/site/dist/assets/{FundSolWalletWithExternalSolanaWallet-WtLwYaOl-B8TRV36j.js → FundSolWalletWithExternalSolanaWallet-WtLwYaOl-A_G5kfa1.js} +1 -1
- package/site/dist/assets/{FundWalletMethodHeader-BWNkokCT-BQdbJ5Bb.js → FundWalletMethodHeader-BWNkokCT-LPv35wkD.js} +1 -1
- package/site/dist/assets/{FundWithBankDepositScreen-DajkHxBD-9rPtyA3d.js → FundWithBankDepositScreen-DajkHxBD-0hfGrfvf.js} +1 -1
- package/site/dist/assets/{FundingEditAmountScreen-CpvpiO4M-GaXigGI9.js → FundingEditAmountScreen-CpvpiO4M-Dz0s_NWR.js} +1 -1
- package/site/dist/assets/{FundingMethodSelectionScreen-Db7vhRlE-UsmtTqv4.js → FundingMethodSelectionScreen-Db7vhRlE-ZGm-3-Io.js} +1 -1
- package/site/dist/assets/{GlobeAltIcon-vqrVV5ho.js → GlobeAltIcon-BBRl2MMn.js} +1 -1
- package/site/dist/assets/{GooglePay-B53WnudL-BX5_WtCx.js → GooglePay-B53WnudL-BGiVpB8y.js} +1 -1
- package/site/dist/assets/{HCaptchaWrapper-CUi9LJsp-D-I8j7NO.js → HCaptchaWrapper-CUi9LJsp-CHdfIeD_.js} +3 -3
- package/site/dist/assets/{InAppBrowserLoginNotPossible-BMR9br1T-BY3j50El.js → InAppBrowserLoginNotPossible-BMR9br1T-Cgoiow3m.js} +1 -1
- package/site/dist/assets/{InfoBanner-Cb3p1z12-DLBl_Ywy.js → InfoBanner-Cb3p1z12-_YqQmRiu.js} +1 -1
- package/site/dist/assets/{InjectedWalletIcon-DLcYOGDj-DLSV_NjP.js → InjectedWalletIcon-DLcYOGDj-tuIrKQHH.js} +1 -1
- package/site/dist/assets/{InstallWalletScreen-DTA8dwLv-CxreyXoD.js → InstallWalletScreen-DTA8dwLv-BMU_wa61.js} +1 -1
- package/site/dist/assets/{JsonTree-BHzNC-ic-DcNcbSoM.js → JsonTree-BHzNC-ic-DcVr0YF0.js} +1 -1
- package/site/dist/assets/{LabelXs-oqZNqbm_-iafrj25N.js → LabelXs-oqZNqbm_-CNprGVQM.js} +1 -1
- package/site/dist/assets/LandingScreen-CGWUoSUG-fH6rsQen.js +1 -0
- package/site/dist/assets/{Layouts-BMRfo5hw-CeCOyCLK.js → Layouts-BMRfo5hw-e-sepi6F.js} +1 -1
- package/site/dist/assets/{Link-BdDilT2T-BEDEdHuS.js → Link-BdDilT2T-BdwlRJch.js} +1 -1
- package/site/dist/assets/{LinkConflictScreen-C3ZEPsgl-ClWoqvEL.js → LinkConflictScreen-C3ZEPsgl-BXKN2Qm5.js} +1 -1
- package/site/dist/assets/LinkEmailScreen-dKo9frwc-Cyn7Q8p1.js +1 -0
- package/site/dist/assets/{LinkPasskeyScreen-zbrl_AI_-D72Gb0LW.js → LinkPasskeyScreen-zbrl_AI_-CWiqnwLM.js} +1 -1
- package/site/dist/assets/LinkPasskeyScreen-zbrl_AI_-YmDevJzf.js +1 -0
- package/site/dist/assets/{LinkPhoneScreen-oIUpfj0w-C0DuD14j.js → LinkPhoneScreen-oIUpfj0w-h7shW-Ay.js} +1 -1
- package/site/dist/assets/{Loader-UAZqxsnw-Cy7hEE2f.js → Loader-UAZqxsnw-DJEVblm1.js} +1 -1
- package/site/dist/assets/{LoadingSkeleton-BMsgO5PV-CiEyS5PZ.js → LoadingSkeleton-BMsgO5PV-D2atjsP5.js} +1 -1
- package/site/dist/assets/{LockClosedIcon-BgY_5v_Z.js → LockClosedIcon-9EFzWK1C.js} +1 -1
- package/site/dist/assets/{LoginFailedScreen-CN0dJV6U-DhUMiJZJ.js → LoginFailedScreen-CN0dJV6U-By3Si77a.js} +1 -1
- package/site/dist/assets/{ManualTransferScreen-CHqcuqbs-tXiZDHmN.js → ManualTransferScreen-CHqcuqbs-BAHPY8rs.js} +1 -1
- package/site/dist/assets/{MfaAuthEnrollmentFlowScreen-Dj7gPTRC-CaW7xeCC.js → MfaAuthEnrollmentFlowScreen-Dj7gPTRC-CLjffFG1.js} +1 -1
- package/site/dist/assets/{MfaAuthVerifyFlowScreen-DbFpyWMy-CeRqvx8k.js → MfaAuthVerifyFlowScreen-DbFpyWMy-BmQg1Y61.js} +1 -1
- package/site/dist/assets/{MfaEnrollmentFlowScreen-DhLnGgnr-BkN1k4lh.js → MfaEnrollmentFlowScreen-DhLnGgnr-DmBtTtlw.js} +1 -1
- package/site/dist/assets/{MfaVerifyFlowScreen-C_XPjMRP-CXSqLVbE.js → MfaVerifyFlowScreen-C_XPjMRP-4a683Bmf.js} +1 -1
- package/site/dist/assets/{ModalFooter-BCuEK_nz-c-khvG4Y.js → ModalFooter-BCuEK_nz-C_71qsaz.js} +1 -1
- package/site/dist/assets/{MoonpayStatusScreen-CzTUtokc-BRFN2eXr.js → MoonpayStatusScreen-CzTUtokc-DEHHcEf8.js} +1 -1
- package/site/dist/assets/{OAuthStatusScreen-ufbOa-da-CeiGcSia.js → OAuthStatusScreen-ufbOa-da-BjAb_WsY.js} +1 -1
- package/site/dist/assets/{OpenLink-CUpJ1mOr-DfAvJRyK.js → OpenLink-CUpJ1mOr-BLWFsPOW.js} +1 -1
- package/site/dist/assets/{PasskeySelectSignupOrLogin-xh2ScC_l-CIf5I7wU.js → PasskeySelectSignupOrLogin-xh2ScC_l-2PJTJxX-.js} +1 -1
- package/site/dist/assets/{PasskeyStatusScreen-Bla8MaOk-CLoL7QC-.js → PasskeyStatusScreen-Bla8MaOk-DCEg761l.js} +1 -1
- package/site/dist/assets/{PasswordRecoveryScreen-awGXZkQk-B9F67IYV.js → PasswordRecoveryScreen-awGXZkQk-8nVjNc8k.js} +1 -1
- package/site/dist/assets/{PhoneIcon-CvIiPwYQ.js → PhoneIcon-CZ47md80.js} +1 -1
- package/site/dist/assets/{PinInput-DbZ0b1i1-CDXZBdQx.js → PinInput-DbZ0b1i1-BrTXu3Km.js} +1 -1
- package/site/dist/assets/{PrivyPluginContext-DA-yS5vO-CtQWBiV2.js → PrivyPluginContext-DA-yS5vO-CY60yubk.js} +1 -1
- package/site/dist/assets/{QrCode-DbnZwlkH-h6Bhoe5U.js → QrCode-DbnZwlkH-CcMrWV5D.js} +2 -2
- package/site/dist/assets/{RecoveryOAuthStatusScreen-CsgtTI2x-D-A5P3PX.js → RecoveryOAuthStatusScreen-CsgtTI2x-DgeDnHOK.js} +1 -1
- package/site/dist/assets/{RecoveryPasswordCreateScreen-Be-qJ-LU-C8lTSeSr.js → RecoveryPasswordCreateScreen-Be-qJ-LU-CvJJwLhK.js} +1 -1
- package/site/dist/assets/{RecoverySelectionScreen-D1iGtpmi-P5P3plkH.js → RecoverySelectionScreen-D1iGtpmi-CADtGtSV.js} +1 -1
- package/site/dist/assets/{SIWXUtil-TUCxa7aA.js → SIWXUtil-Cpiv91-M.js} +1 -1
- package/site/dist/assets/{Screen-D30meWsY-CCeVNuWs.js → Screen-D30meWsY-vEusJ7KX.js} +1 -1
- package/site/dist/assets/{ScreenHeader-CHmc4-Lu-DjyrH7IK.js → ScreenHeader-CHmc4-Lu-BvGTLg53.js} +1 -1
- package/site/dist/assets/{ScreenLayout-OwaQQcxH-CrQM6kvA.js → ScreenLayout-OwaQQcxH-cfOTmyl0.js} +1 -1
- package/site/dist/assets/{SelectSourceAsset-CWFog6gm-D7yTw87h.js → SelectSourceAsset-CWFog6gm-DxYklZYs.js} +1 -1
- package/site/dist/assets/{SetAutomaticRecoveryScreen-BO_OEqAZ-f0iDIGmw.js → SetAutomaticRecoveryScreen-BO_OEqAZ-oeqeo05x.js} +1 -1
- package/site/dist/assets/{SetWalletPasswordForm-DwCTVtAh-kq1zvA7d.js → SetWalletPasswordForm-DwCTVtAh-BxFee9UA.js} +1 -1
- package/site/dist/assets/{ShieldCheckIcon-o6RHYev1.js → ShieldCheckIcon-eFjsosCA.js} +1 -1
- package/site/dist/assets/{SignRequestScreen-BHKv32KR-DDpMYyJ1.js → SignRequestScreen-BHKv32KR-z8ixfIma.js} +1 -1
- package/site/dist/assets/{SolanaWalletConnector-C7Lqk-Wz-DPwhuzcI.js → SolanaWalletConnector-C7Lqk-Wz-Bc_lvdiF.js} +1 -1
- package/site/dist/assets/{StackedContainer-B2vaEl56-eQCM2cmv.js → StackedContainer-B2vaEl56-Do5dXB8-.js} +1 -1
- package/site/dist/assets/{StandardSignAndSendTransactionScreen-CfhIXVtd-BJ-onCjv.js → StandardSignAndSendTransactionScreen-CfhIXVtd-DudetZAc.js} +1 -1
- package/site/dist/assets/{Subtitle-CV-2yKE4-zxWw2m1Q.js → Subtitle-CV-2yKE4-DV0o1av3.js} +1 -1
- package/site/dist/assets/{TelegramAuthScreen-UL9zLfO8-NWlMgNRX.js → TelegramAuthScreen-UL9zLfO8-Bo3sONvf.js} +1 -1
- package/site/dist/assets/{Title-BnzYV3Is-B_JpTatT.js → Title-BnzYV3Is-C3qOPnO_.js} +1 -1
- package/site/dist/assets/{TodoList-DnyULl18-C8Eyy28X.js → TodoList-DnyULl18-BvxvubbF.js} +1 -1
- package/site/dist/assets/{TransactionDetails-e9nesl30-C4MpIHR-.js → TransactionDetails-e9nesl30-WWflkOIi.js} +1 -1
- package/site/dist/assets/{TransactionErrorView-BDBNqA_f-p1T9WVMx.js → TransactionErrorView-BDBNqA_f-CotYKcgf.js} +1 -1
- package/site/dist/assets/{TransferFromWalletScreen-Qvn1Yuno-88IQcRnY.js → TransferFromWalletScreen-Qvn1Yuno-sVFlWqa8.js} +1 -1
- package/site/dist/assets/{TransferOrBridgeLoadingScreen-Dl1I_iIz-1fDAIxAf.js → TransferOrBridgeLoadingScreen-Dl1I_iIz-CV2-mY19.js} +1 -1
- package/site/dist/assets/{TurnstileWrapper-B7sNddys-Jwy1tJtm.js → TurnstileWrapper-B7sNddys-oPbuMTQt.js} +1 -1
- package/site/dist/assets/{UpdateEmailScreen-DVOhPV0H-Jj2DQW8D.js → UpdateEmailScreen-DVOhPV0H-D_mjSpAy.js} +1 -1
- package/site/dist/assets/{UpdatePhoneScreen-CXRswTNZ-DwYIUBqi.js → UpdatePhoneScreen-CXRswTNZ-6RLG0ahv.js} +1 -1
- package/site/dist/assets/{UserLimitReachedScreen-5we2DHn8-D7m70C4b.js → UserLimitReachedScreen-5we2DHn8-CaVN0bti.js} +1 -1
- package/site/dist/assets/{Value-DTgR824E-BRuIGiec.js → Value-DTgR824E-Bp6WGZZm.js} +1 -1
- package/site/dist/assets/{WalletCards-DH1rqayz-Bgp9Fsgs.js → WalletCards-DH1rqayz-D3cOTb9x.js} +1 -1
- package/site/dist/assets/{WalletIcon-gKf0gTw6.js → WalletIcon-DOIZhb2l.js} +1 -1
- package/site/dist/assets/{WalletInfoCard-sq_2wgFg-DpNSAGte.js → WalletInfoCard-sq_2wgFg-bOqfl5MA.js} +1 -1
- package/site/dist/assets/{WalletInterstitialScreen-Sh7LfsAh-DG-RuO-F.js → WalletInterstitialScreen-Sh7LfsAh-DWaVkMCA.js} +1 -1
- package/site/dist/assets/{WalletLink-DK5LB5Ha-DHaL350n.js → WalletLink-DK5LB5Ha-DjUZvqs-.js} +1 -1
- package/site/dist/assets/WalletOverflowButton-bfCnp-9T-B6P7DQXA.js +1 -0
- package/site/dist/assets/{WarningBanner-ZZqCEtZK-2eU4Qo74.js → WarningBanner-ZZqCEtZK-Bc2YKZb7.js} +1 -1
- package/site/dist/assets/__vite-browser-external-NciY4Vu1.js +1 -0
- package/site/dist/assets/{_esm-BdeM6pxJ.js → _esm-BZP3cXTv.js} +1 -1
- package/site/dist/assets/_esm-ZmzBJpEs.js +6 -0
- package/site/dist/assets/{accounts-D96UKWkC.js → accounts-D4AXF17G.js} +1 -1
- package/site/dist/assets/accounts-IkdFx9nq.js +1 -0
- package/site/dist/assets/{baseSepolia-DX-qGsik.js → baseSepolia-Bn1j1Ysw.js} +1 -1
- package/site/dist/assets/{basic-oIwwSyu4.js → basic-Cz1YiCSk.js} +4 -4
- package/site/dist/assets/{ccip-BZvRTL6g.js → ccip-B1J3oTZx.js} +2 -2
- package/site/dist/assets/ccip-Bd7261zy.js +1 -0
- package/site/dist/assets/{ccip-65sIfSPR.js → ccip-D6EHKpjI.js} +1 -1
- package/site/dist/assets/{chain-DM3oH6Px.js → chain-scefkYIH.js} +3 -6
- package/site/dist/assets/check-DHnllI8N.js +1 -0
- package/site/dist/assets/{chevron-down-BSsbXkK-.js → chevron-down-1y-r4bGO.js} +1 -1
- package/site/dist/assets/{circle-alert-DWaeLZNj.js → circle-alert-OwxamXUX.js} +1 -1
- package/site/dist/assets/{circle-check-big-Chb1ivw9.js → circle-check-big-3sZGVC10.js} +1 -1
- package/site/dist/assets/{circle-x-AV9Cet0R.js → circle-x-DQjNUV9J.js} +1 -1
- package/site/dist/assets/client-B-BpRtwY.js +1 -0
- package/site/dist/assets/client-BfIR1FvH.js +9 -0
- package/site/dist/assets/coinbase-DCPC2L_R-YEuIn3jh.js +3 -0
- package/site/dist/assets/{copy-Ckr0AkL6.js → copy-DMOX_yn7.js} +1 -1
- package/site/dist/assets/core-GIEmxmAa.js +12 -0
- package/site/dist/assets/{createLucideIcon-IPW50ckY.js → createLucideIcon-BsERoFTA.js} +1 -1
- package/site/dist/assets/{defineChain-CiuCXUZW.js → defineChain-B-SQDLTG.js} +1 -1
- package/site/dist/assets/{dijkstra-Drfl93V4.js → dijkstra-CY95afk4.js} +1 -1
- package/site/dist/assets/dist-Cp6IXeJd.js +1 -0
- package/site/dist/assets/{dist-Cm7pNAtL.js → dist-CrNxmdZj.js} +1 -1
- package/site/dist/assets/{dist-DnGANz51.js → dist-DYGtf4F0.js} +4 -4
- package/site/dist/assets/embed.worker-Cnl4VGr3.js +1 -0
- package/site/dist/assets/{errors-BQ3N-RVt-BLqjTPNR.js → errors-BQ3N-RVt-CZPAWCgC.js} +1 -1
- package/site/dist/assets/{esm-B5cbIQaz.js → esm-Co94ENUV.js} +17 -17
- package/site/dist/assets/{esm-ByALO6mA.js → esm-bb8SANZh.js} +1 -1
- package/site/dist/assets/{ethers-zTjbodk5-wHhL_BQ1.js → ethers-zTjbodk5-Cs648CnD.js} +1 -1
- package/site/dist/assets/{eventemitter3-CL76jPsW.js → eventemitter3-Dzc_0Uq2.js} +1 -1
- package/site/dist/assets/{external-link-D-uehwM2.js → external-link-BBPG3rG7.js} +1 -1
- package/site/dist/assets/{farcaster-DPlSjvF5-BqTvDXBR.js → farcaster-DPlSjvF5-CzBCmgyL.js} +1 -1
- package/site/dist/assets/{features-DQ0UYy6K.js → features-CuiHbgEJ.js} +1 -1
- package/site/dist/assets/{fingerprint-pattern-D8ytA16Q.js → fingerprint-pattern-CjLtyIxB.js} +1 -1
- package/site/dist/assets/floating-ui.react-DmaCfayr.js +1 -0
- package/site/dist/assets/{floating-ui.react-dom-DKWOL9UG.js → floating-ui.react-dom-CaoMF8mP.js} +1 -1
- package/site/dist/assets/{get-entropy-details-for-user-dHRH5Gpi-Dukf7_kJ.js → get-entropy-details-for-user-dHRH5Gpi-BNiOFXbK.js} +1 -1
- package/site/dist/assets/{getErc20Balance-jXNpFf0N-Bb9WM31M.js → getErc20Balance-jXNpFf0N-q4bV8kQq.js} +1 -1
- package/site/dist/assets/{getErc20TokenInfo-BNTrzLMP-KPrdn04K.js → getErc20TokenInfo-BNTrzLMP-DcnTFrXN.js} +1 -1
- package/site/dist/assets/{guards-BIW-GiMJ-CHfXo8XI.js → guards-BIW-GiMJ-D3tWTQAR.js} +1 -1
- package/site/dist/assets/{hourglass-CPG1HZmf.js → hourglass-D_GfQdJr.js} +1 -1
- package/site/dist/assets/{id-UqEwL2BI-BkKm533U.js → id-UqEwL2BI-CTlvRMA5.js} +1 -1
- package/site/dist/assets/{index-BdEw5wyl-ChSJvPZk.js → index-BdEw5wyl-kLbhqLbv.js} +1 -1
- package/site/dist/assets/index-C2h3EneX.js +8 -0
- package/site/dist/assets/{index-CWARkn2w-Cezl_uBr.js → index-CWARkn2w-DxuckIFn.js} +1 -1
- package/site/dist/assets/{index-DvMddJcd-BatvgC-S.js → index-DvMddJcd-CNBb4VUn.js} +1 -1
- package/site/dist/assets/{index-YiCw0Y_x-CX5i3Z87.js → index-YiCw0Y_x-Czl0tWfF.js} +5 -6
- package/site/dist/assets/{index.es-BmqyoBEM.js → index.es-Crd0TyUS.js} +1 -1
- package/site/dist/assets/index.es-DQbup1WG.js +3 -0
- package/site/dist/assets/{isPaymentRequestAvailable-Bq1cemEn-By6r0dVB.js → isPaymentRequestAvailable-Bq1cemEn-Cjf3l05I.js} +1 -1
- package/site/dist/assets/{jsx-runtime-BbDfbRii.js → jsx-runtime-CndCZlyt.js} +1 -1
- package/site/dist/assets/{landmark-CH6LV6F0.js → landmark-BZPqMFEf.js} +1 -1
- package/site/dist/assets/lib-DGtzi2DK.js +1 -0
- package/site/dist/assets/{localBatchGatewayRequest-3kLrX_c7.js → localBatchGatewayRequest-B71J8sQ9.js} +7 -10
- package/site/dist/assets/{lock-DcskI4Bb.js → lock-DyN_c-ud.js} +1 -1
- package/site/dist/assets/{mail-Bs0r5yOi.js → mail-V_mcPb64.js} +1 -1
- package/site/dist/assets/{modal-context-CwmSeFcv-DruX9J1E.js → modal-context-CwmSeFcv-DPWNJrfK.js} +1 -1
- package/site/dist/assets/{ofetch.CWycOUEr-CHp-crOQ.js → ofetch.CWycOUEr-Duby3iHT.js} +1 -1
- package/site/dist/assets/parseEther-CHS0GNkM.js +1 -0
- package/site/dist/assets/{pkce-DXF0yKjP-ChQhE0st.js → pkce-DXF0yKjP-7_VY-d83.js} +1 -1
- package/site/dist/assets/preload-helper-CRzLMJPS.js +1 -0
- package/site/dist/assets/{privy-context-81KmsBw2-CjWGzyg7.js → privy-context-81KmsBw2-DiR6-Yq8.js} +1 -1
- package/site/dist/assets/{react-DrJ0MmMO.js → react-BfYA1q0G.js} +1 -1
- package/site/dist/assets/react-CK2HRI1t.js +1 -0
- package/site/dist/assets/{react-DQnMl2Xv.js → react-DxGeY8B8.js} +1 -1
- package/site/dist/assets/{react-dom-5dW7aKoP.js → react-dom-BI2Koe4o.js} +1 -1
- package/site/dist/assets/{reservoir-x-nGuZkT-BMX127i6.js → reservoir-x-nGuZkT-BguVFH3D.js} +1 -1
- package/site/dist/assets/roles-BDPDWrwo.js +1 -0
- package/site/dist/assets/rolldown-runtime-Bjp52BOI.js +1 -0
- package/site/dist/assets/secp256k1-BeYL8aZl.js +1 -0
- package/site/dist/assets/{secp256k1-_MleGpqL.js → secp256k1-Bh4MSkhz.js} +1 -1
- package/site/dist/assets/secp256k1-Ci4cqHl0.js +1 -0
- package/site/dist/assets/secp256k1-DsxXqbXv.js +1 -0
- package/site/dist/assets/secp256k1-N9RUmafO.js +1 -0
- package/site/dist/assets/{serializeAuthorizationList-CX8hGL56.js → serializeAuthorizationList-DGMik9Wx.js} +1 -1
- package/site/dist/assets/{serializeSignature-DfxkPnu-.js → serializeSignature-CWKpxoab.js} +1 -1
- package/site/dist/assets/sha2-C6s7zZmb.js +1 -0
- package/site/dist/assets/{shared-DRZUmnL5-xqAUARWo.js → shared-DRZUmnL5-BewE5wK8.js} +1 -1
- package/site/dist/assets/{shared-FM0rljBt--Avg6q2R.js → shared-FM0rljBt-CxLACri_.js} +1 -1
- package/site/dist/assets/shouldProceedtoEmbeddedWalletCreationFlow-B3vyavrh-BkAKsRNi.js +1 -0
- package/site/dist/assets/{simulateTransaction-CfuOrae4-64lWYJAL.js → simulateTransaction-CfuOrae4-PjA_tGjX.js} +1 -1
- package/site/dist/assets/{smartphone-CcEZ-XAy.js → smartphone-3p8nFSTE.js} +1 -1
- package/site/dist/assets/{storage-Ufl800Ne-D0bZBw-H.js → storage-Ufl800Ne-1qCR2JMO.js} +7 -8
- package/site/dist/assets/{stringify-BlDm7tuc.js → stringify-DqUj9VzO.js} +2 -3
- package/site/dist/assets/stripe.esm-DEi2D291.js +2 -0
- package/site/dist/assets/{styles-BsotlekN-CXEB4Ud9.js → styles-BsotlekN-Aq27nZGc.js} +1 -1
- package/site/dist/assets/{styles-Cm9H63WO-Br4QtzUL.js → styles-Cm9H63WO-p_ic_dxE.js} +1 -1
- package/site/dist/assets/{styles-DVyDvTdj-BTABn2K8.js → styles-DVyDvTdj-CjsWqAld.js} +1 -1
- package/site/dist/assets/{styles-hslXy6xG-D-49b1rk.js → styles-hslXy6xG-D5QHIrJU.js} +1 -1
- package/site/dist/assets/{telegram-B-JqnkqZ-RBoY3PLx.js → telegram-B-JqnkqZ-Dqkm4rDn.js} +1 -1
- package/site/dist/assets/{to-ui-error-DWe-qwS3-Cx2bk1kZ.js → to-ui-error-DWe-qwS3-Bi1HUQI9.js} +1 -1
- package/site/dist/assets/toViemAccount-B5iDGq1b-CdFZwv07.js +2 -0
- package/site/dist/assets/transformers.web-BTyOEJ0C.js +40 -0
- package/site/dist/assets/transformers.web-CUZUFjAK.js +49 -0
- package/site/dist/assets/{triangle-alert-CWjYH75H.js → triangle-alert-BG3Qw-Hq.js} +1 -1
- package/site/dist/assets/{twitch-5IOe4sIQ-lDtgk0os.js → twitch-5IOe4sIQ-CaXHFlAu.js} +1 -1
- package/site/dist/assets/{use-headless-crypto-deposit-Yn-QRLB3-LUIVFBSd.js → use-headless-crypto-deposit-Yn-QRLB3-CQqeyhGY.js} +1 -1
- package/site/dist/assets/{use-unlink-wallet-BKK4_5Ur-CC2pq27z.js → use-unlink-wallet-BKK4_5Ur-C0xQN_Lp.js} +1 -1
- package/site/dist/assets/{useActiveWallet-B-yZYGc6-D7Ik-LxJ.js → useActiveWallet-B-yZYGc6-BkK6rFBm.js} +1 -1
- package/site/dist/assets/{useGetSolPrice-x7gfUIHJ-D1hmQfpA.js → useGetSolPrice-x7gfUIHJ-CLVXqv6I.js} +1 -1
- package/site/dist/assets/{useGetTokenPrice-CaoUkb79-ZnbuJ-vP.js → useGetTokenPrice-CaoUkb79-DAXXs3rs.js} +1 -1
- package/site/dist/assets/{useI18n-C-5n_noF-BcqC76yj.js → useI18n-C-5n_noF-CGpkgIVy.js} +1 -1
- package/site/dist/assets/{useWalletBalance-CZnP5f_f-Dw2GIJ4g.js → useWalletBalance-CZnP5f_f-Cfd64m4n.js} +1 -1
- package/site/dist/assets/{useWallets-X1ndvJ_U-DRjz7uYD.js → useWallets-X1ndvJ_U-CAYqg7Za.js} +1 -1
- package/site/dist/assets/{w3m-modal-BeVrBOIf.js → w3m-modal-B4H_uiPH.js} +2 -2
- package/site/dist/assets/{wallet-Bn85Sg2W.js → wallet-BNI12IYk.js} +1 -1
- package/site/dist/assets/wallet-CITSaPlB.js +2 -0
- package/site/dist/assets/{wallet-connect-BvJtUsDt-Y03hhqFN.js → wallet-connect-BvJtUsDt-CVlSNIXP.js} +1 -1
- package/site/dist/assets/{walletconnect-registry-xxG8XLCb-D1SSFvMp.js → walletconnect-registry-xxG8XLCb-BpzpBq5s.js} +1 -1
- package/site/dist/assets/walletconnect-v2-3frQFwbg-CzZ6oybX.js +12 -0
- package/site/dist/assets/{wui-ux-by-reown-D34ILNLS.js → wui-ux-by-reown-XyHdtV1O.js} +1 -1
- package/site/dist/assets/x-gjDrY2rk.js +1 -0
- package/site/dist/index.html +5 -5
- package/site/feed.js +16 -1
- package/site/no-model.js +4 -0
- package/site/worker.js +586 -59
- package/src/agent/agent-card.js +20 -11
- package/src/agent/mcp.js +190 -324
- package/src/agent/view-tools.js +46 -13
- package/src/agent/x402.js +340 -44
- package/src/core/embed.js +51 -52
- package/src/core/embed.worker.js +1 -1
- package/src/core/shard.js +7 -3
- package/src/discover/apps.js +41 -5
- package/src/discover/explore.js +50 -30
- package/src/market/reactions.js +2 -2
- package/src/publish/devnet.js +95 -0
- package/src/publish/init.js +74 -0
- package/src/publish/lint.js +2 -1
- package/src/publish/ship.js +559 -267
- package/src/publish/view-cli.js +14 -10
- package/src/publish/view.js +355 -218
- package/src/taste/taste-doc.js +3 -2
- package/src/taste/taste.js +2 -2
- package/src/taste/vault.js +3 -1
- package/template/README.md +49 -0
- package/template/app.json +27 -0
- package/template/eval/goals.md +7 -0
- package/template/eval/golden.jsonl +0 -0
- package/template/gitignore +3 -0
- package/template/package.json +13 -0
- package/template/wrangler.json +12 -0
- package/site/dist/assets/BridgeNetworkSelectionView-CFGjB2nO-CvsbQcFv.js +0 -68
- package/site/dist/assets/ConnectOrCreateScreen-CUUYUO07-crHzh-TL.js +0 -1
- package/site/dist/assets/ConnectWalletView-DqI-PTvX-CMQIad63.js +0 -74
- package/site/dist/assets/ConnectionStatusScreen-fUfROm9m-wu3a3kw4.js +0 -1
- package/site/dist/assets/ErrorScreen-DipdTWzE-DcxVjMO4.js +0 -1
- package/site/dist/assets/FiatOnrampScreen-BAhYeiTI-BH_sU6EV.js +0 -491
- package/site/dist/assets/LandingScreen-CGWUoSUG-DK1EY-6v.js +0 -1
- package/site/dist/assets/LinkEmailScreen-dKo9frwc-C3v7glH0.js +0 -1
- package/site/dist/assets/LinkPasskeyScreen-zbrl_AI_-DYIl5Kr2.js +0 -1
- package/site/dist/assets/WalletOverflowButton-bfCnp-9T-CUyIJFzt.js +0 -1
- package/site/dist/assets/__vite-browser-external-CitKSmYk.js +0 -1
- package/site/dist/assets/_esm-B26FZg5Y.js +0 -7
- package/site/dist/assets/accounts-DiZ-0VmN.js +0 -1
- package/site/dist/assets/ccip-DA_zG341.js +0 -1
- package/site/dist/assets/check-BPgcwEPP.js +0 -1
- package/site/dist/assets/client-CZG0ndth.js +0 -2
- package/site/dist/assets/client-Dsa7_3V3.js +0 -9
- package/site/dist/assets/coinbase-DCPC2L_R-D3aIgpyd.js +0 -3
- package/site/dist/assets/core-snws5xwv.js +0 -12
- package/site/dist/assets/dist-Dl07uGq1.js +0 -1
- package/site/dist/assets/embed.worker-ugGhEqCV.js +0 -1
- package/site/dist/assets/floating-ui.react-xRkl9O3u.js +0 -1
- package/site/dist/assets/index-1HYFYA-W.js +0 -8
- package/site/dist/assets/index.es-C1v1or--.js +0 -3
- package/site/dist/assets/lib-BsS8z8Lj.js +0 -1
- package/site/dist/assets/parseEther-VjhVo3dd.js +0 -1
- package/site/dist/assets/preload-helper-uBIymjUX.js +0 -1
- package/site/dist/assets/react-DCXkXSrv.js +0 -1
- package/site/dist/assets/roles-32M1l9jI.js +0 -1
- package/site/dist/assets/rolldown-runtime-BcKkbAw3.js +0 -1
- package/site/dist/assets/secp256k1-C4nzcPo-.js +0 -1
- package/site/dist/assets/secp256k1-D92aGNnU.js +0 -1
- package/site/dist/assets/secp256k1-DmbwyFau.js +0 -1
- package/site/dist/assets/secp256k1-xl2og-wO.js +0 -1
- package/site/dist/assets/sha2-BU_QyRTx.js +0 -1
- package/site/dist/assets/shouldProceedtoEmbeddedWalletCreationFlow-B3vyavrh-BK_FBkaE.js +0 -1
- package/site/dist/assets/stripe.esm-CZRDpc-N.js +0 -2
- package/site/dist/assets/toViemAccount-B5iDGq1b-Ba8L7zed.js +0 -2
- package/site/dist/assets/transformers.web-CVP3pJOS.js +0 -40
- package/site/dist/assets/transformers.web-D8W1u_I2.js +0 -49
- package/site/dist/assets/wallet-Bnzeiqed.js +0 -2
- package/site/dist/assets/walletconnect-v2-3frQFwbg-CrtLXofr.js +0 -12
- package/site/dist/assets/x-rlSp9U7W.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{s as e}from"./rolldown-runtime-
|
|
1
|
+
import{s as e}from"./rolldown-runtime-Bjp52BOI.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-DiR6-Yq8.js";import{t as x}from"./react-BfYA1q0G.js";import{n as S}from"./modal-context-CwmSeFcv-DPWNJrfK.js";import{i as C,s as w}from"./errors-BQ3N-RVt-CZPAWCgC.js";import{d as T}from"./get-entropy-details-for-user-dHRH5Gpi-BNiOFXbK.js";import{Tn as E}from"./localBatchGatewayRequest-B71J8sQ9.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-
|
|
1
|
+
import{s as e}from"./rolldown-runtime-Bjp52BOI.js";import{$ as t,D as n,c as r}from"./privy-context-81KmsBw2-DiR6-Yq8.js";import{t as i}from"./jsx-runtime-CndCZlyt.js";import{t as a}from"./react-BfYA1q0G.js";import{c as o,s}from"./Loader-UAZqxsnw-DJEVblm1.js";import{t as c}from"./react-DxGeY8B8.js";import{l}from"./get-entropy-details-for-user-dHRH5Gpi-BNiOFXbK.js";import{Fn as u}from"./localBatchGatewayRequest-B71J8sQ9.js";import{b as d,t as f}from"./storage-Ufl800Ne-1qCR2JMO.js";import{d as p,h as m,n as h}from"./use-unlink-wallet-BKK4_5Ur-C0xQN_Lp.js";import{f as g}from"./guards-BIW-GiMJ-D3tWTQAR.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`
|
package/site/dist/assets/{useGetSolPrice-x7gfUIHJ-D1hmQfpA.js → useGetSolPrice-x7gfUIHJ-CLVXqv6I.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{s as e}from"./rolldown-runtime-
|
|
1
|
+
import{s as e}from"./rolldown-runtime-Bjp52BOI.js";import{$ as t}from"./privy-context-81KmsBw2-DiR6-Yq8.js";import{t as n}from"./react-BfYA1q0G.js";var r=e(n(),1),i=({enabled:e=!0}={})=>{let{showFiatPrices:n,getUsdPriceForSol:i}=t(),[a,o]=(0,r.useState)(!0),[s,c]=(0,r.useState)(void 0),[l,u]=(0,r.useState)(void 0);return(0,r.useEffect)((()=>{(async()=>{if(n&&e)try{o(!0);let e=await i();e?u(e):c(Error(`Unable to fetch SOL price`))}catch(e){c(e)}finally{o(!1)}else o(!1)})()}),[]),{solPrice:l,isSolPriceLoading:a,solPriceError:s}};export{i as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{s as e}from"./rolldown-runtime-
|
|
1
|
+
import{s as e}from"./rolldown-runtime-Bjp52BOI.js";import{$ as t,ct as n}from"./privy-context-81KmsBw2-DiR6-Yq8.js";import{t as r}from"./react-BfYA1q0G.js";import{t as i}from"./useGetSolPrice-x7gfUIHJ-CLVXqv6I.js";var a=e(r(),1);function o(e){let{tokenPrice:r,isTokenPriceLoading:o,tokenPriceError:s}=(e=>{let{showFiatPrices:r,getUsdTokenPrice:i,chains:o}=t(),[s,c]=(0,a.useState)(!0),[l,u]=(0,a.useState)(void 0),[d,f]=(0,a.useState)(void 0);return(0,a.useEffect)((()=>{e||=1;let t=n(o).find((t=>t.id===Number(e)));(async()=>{if(r){if(!t)return c(!1),void u(Error(`Unable to fetch token price on chain id ${e}`));try{c(!0);let e=await i(t);e?f(e):u(Error(`Unable to fetch token price on chain id ${t.id}`))}catch(e){u(e)}finally{c(!1)}}else c(!1)})()}),[e]),{tokenPrice:d,isTokenPriceLoading:s,tokenPriceError:l}})(e===`solana`?-1:e),{solPrice:c,isSolPriceLoading:l,solPriceError:u}=i({enabled:e===`solana`});return e===`solana`?{tokenPrice:c,isTokenPriceLoading:l,tokenPriceError:u}:{tokenPrice:r,isTokenPriceLoading:o,tokenPriceError:s}}export{o as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{D as e}from"./privy-context-81KmsBw2-CjWGzyg7.js";var t={"connectionStatus.successfullyConnected":`Successfully connected with {walletName}`,"connectionStatus.errorTitle":`{errorMessage}`,"connectionStatus.connecting":`Connecting`,"connectionStatus.connectOneWallet":`For the best experience, connect only one wallet at a time.`,"connectionStatus.checkOtherWindows":`Don't see your wallet? Check your other browser windows.`,"connectionStatus.stillHere":`Still here?`,"connectionStatus.tryConnectingAgain":`Try connecting again`,"connectionStatus.or":`or`,"connectionStatus.useDifferentLink":`use this different link`,"coinbaseWallet.connectingSubtitle":`This connects Coinbase Wallet, not your Coinbase.com account.`,"coinbaseWallet.connectingSubtitleReset":`This connects Coinbase Wallet, not your Coinbase.com account. Not the right wallet? Reset your connection below.`,"coinbaseWallet.successSubtitle":`This Coinbase Wallet address is not your Coinbase.com deposit address.`,"connectWallet.connectYourWallet":`Connect a wallet`,"connectWallet.waitingForWallet":`Waiting for {walletName}`,"connectWallet.connectToAccount":`Connect a wallet to your {appName} account`,"connectWallet.installAndConnect":`To connect to {walletName}, install and open the app. Then confirm the connection when prompted.`,"connectWallet.tryConnectingAgain":`Please try connecting again.`,"connectWallet.openInApp":`Open in app`,"connectWallet.copyLink":`Copy link`,"connectWallet.retry":`Retry`,"connectWallet.searchPlaceholder":`Search through {count} wallets`,"connectWallet.noWalletsFound":`No wallets found. Try another search.`,"connectWallet.lastUsed":`Last used`,"connectWallet.selectYourWallet":`Select your wallet`,"connectWallet.selectNetwork":`Select network`,"connectWallet.goToWallet":`Go to {walletName} to continue`,"connectWallet.scanToConnect":`Scan code to connect to {walletName}`,"connectWallet.openOrInstall":`Open or install {walletName}`,"cardTransactionList.scrollRegionLabel":`Card transactions`,"cardTransactionList.noTransactionsFound":`No transactions found`,"cardTransactionList.tryAgain":`Try again`,"cardTransactionList.badgeCredit":`Credit`,"cardTransactionList.badgePending":`Pending`,"cardTransactionList.badgeDeclined":`Declined`,"cardTransactionList.badgeExpired":`Expired`,"cardTransactionList.badgeReversed":`Reversed`,"cardDetailsView.cardholderLabel":`Cardholder`,"cardDetailsView.validThruLabel":`Valid thru`,"cardDetailsView.showDetails":`Details`,"cardDetailsView.hideDetails":`Hide details`,"cardDetailsView.pin":`PIN`,"cardDetailsView.replace":`Replace`,"cardDetailsView.cancel":`Cancel`,"cardDetailsView.freezeTitle":`Freeze Card`,"cardDetailsView.freezeSubtitle":`Temporarily disable your card`,"cardDetailsView.addToWalletTitle":`Add to wallet`,"cardDetailsView.addToWalletSubtitle":`Add your card to {walletName}`,"cardDetailsView.freezeConfirmTitle":`Freeze this card?`,"cardDetailsView.freezeConfirmDescription":`This will instantly freeze the current card.`,"cardDetailsView.freezeConfirmCta":`Freeze card`,"cardDetailsView.unfreezeConfirmTitle":`Unfreeze this card?`,"cardDetailsView.unfreezeConfirmDescription":`This will instantly unfreeze the current card.`,"cardDetailsView.unfreezeConfirmCta":`Unfreeze card`,"cardDetailsView.cancelConfirmTitle":`Cancel this card?`,"cardDetailsView.cancelConfirmDescription":`This will instantly cancel the current card.`,"cardDetailsView.cancelConfirmCta":`Cancel card`,"cardDetailsView.replaceReasonTitle":`Why are you replacing your card?`,"cardDetailsView.replaceReasonCta":`Continue`,"cardDetailsView.replaceReasonLost":`Lost`,"cardDetailsView.replaceReasonStolen":`Stolen`,"cardDetailsView.replaceReasonExpired":`Expired`,"cardDetailsView.replaceWarnTitle":`Replace this card?`,"cardDetailsView.replaceWarnDescription":`This will instantly close the current card and issue a new one.`,"cardDetailsView.replaceWarnCta":`Replace`,"cardDetailsView.dialogDismiss":`Never mind`,"cardDetailsView.dialogBack":`Back`,"cardPinDialog.title":`PIN number`,"cardPinDialog.description":`Your PIN is used for in-person transactions and ATM withdrawals.`,"cardPinDialog.changePin":`Change PIN`,"cardPinDialog.close":`Close`,"cardPinDialog.cancel":`Cancel`,"cardPinDialog.save":`Save and close`,"cardPinDialog.placeholder":`••••`,"cardPinDialog.emptyError":`Add a new PIN or cancel to continue.`,"cardPinDialog.saveError":`Could not update this PIN. Please try again.`,"cardPinDialog.loadError":`Could not load this PIN. Please try again.`,"cardPinDialog.pinLabel":`PIN`,"cardDetailsReveal.cardNumberLabel":`Card number`,"cardDetailsReveal.expirationLabel":`Expiration`,"cardDetailsReveal.cvcLabel":`CVC`,"cardDetailsReveal.copyValue":`Copy {label}`,"cardDetailsReveal.error":`Card details could not be loaded. Please try again.`,"transactionDetailsView.summarySubheader":`Card payment to {merchantName}`,"transactionDetailsView.summarySubheaderFallback":`Card payment`,"transactionDetailsView.detailsHeader":`Details`,"transactionDetailsView.disputeCta":`Dispute transaction`,"transactionDetailsView.cardEndingIn":`Card ending in {last4}`,"transactionDetailsView.amountLabel":`Amount`,"transactionDetailsView.atmFeeLabel":`ATM Fee`,"transactionDetailsView.cashbackLabel":`Cashback`,"transactionDetailsView.statusLabel":`Status`,"transactionDetailsView.disputeLabel":`Dispute`,"transactionDetailsView.merchantLabel":`Merchant`,"transactionDetailsView.currencyLabel":`Currency`,"transactionDetailsView.fromLabel":`From`,"transactionDetailsView.dateLabel":`Date created`,"transactionDetailsView.statusPending":`Pending`,"transactionDetailsView.statusPosted":`Posted`,"transactionDetailsView.statusDeclined":`Declined`,"transactionDetailsView.statusExpired":`Expired`,"transactionDetailsView.statusReversed":`Reversed`,"transactionDetailsView.disputeNone":`None`,"transactionDetailsView.disputeExpired":`Dispute expired`,"transactionDetailsView.disputeLost":`Dispute lost`,"transactionDetailsView.disputeSubmitted":`Dispute submitted`,"transactionDetailsView.disputeUnsubmitted":`Dispute unsubmitted`,"transactionDetailsView.disputeWon":`Dispute won`,"transactionDetailsView.disputeDialogTitle":`Dispute this transaction`,"transactionDetailsView.disputeDialogBody":`To dispute this transaction, call the number below and our support team will help you.`,"transactionDetailsView.disputeDoneCta":`Done`,"cardSummaryView.walletHeading":`Wallet`,"cardSummaryView.cardHeading":`Your Card`,"cardSummaryView.transactionsHeading":`Transactions`,"cardSummaryView.unknownMerchant":`Unknown merchant`,"cardSummaryView.balanceUnavailable":`—`,"cardSummaryView.currentBalance":`Spending balance`,"cardSummaryView.cardTitle":`{brand} debit card`,"cardSummaryView.cardTitleFallback":`Debit card`,"cardSummaryView.cardLoadError":`Could not load this card.`,"cardSummaryView.transactionsLoadError":`Could not load transactions.`,"cardSummaryView.freezeError":`Could not update this card. Please try again.`,"cardSummaryView.cancelError":`Could not cancel this card. Please try again.`,"cardSummaryView.replaceError":`Could not replace this card. Please try again.`,"cardSummaryView.walletProvisioningError":`Could not load wallet options.`,"cardSummaryView.walletProvisioningSuccess":`Card added to wallet`,"cardSummaryView.cardCanceledBanner":`This card has been cancelled`,"cardSummaryView.cardFrozenBanner":`This card is frozen`,"cardSummaryView.sandboxBanner":`In sandbox mode using test funds`,"cardSummaryView.back":`Back`,"cardSummaryView.close":`Close`,"cardStatementDownload.buttonLabel":`Download statement`,"cardStatementDownload.tooltip":`Download a monthly PDF statement`,"cardStatementDownload.confirmTitle":`Download statement`,"cardStatementDownload.confirmDescription":`Are you sure you want to download your statement from {period}?`,"cardStatementDownload.confirmCta":`Download`,"cardStatementDownload.cancelCta":`Cancel`,"cardStatementDownload.error":`Could not download your statement. Please try again.`,"cardStatementDownload.notAvailable":`No statement is available for that period.`,"cardStatementDownload.empty":`Statements are available once the month ends.`,"signUpForCardView.sandboxBanner":`In sandbox mode using test funds`,"signUpForCardView.title":`Create {appName} card`,"signUpForCardView.titleFallback":`Create card`,"signUpForCardView.subtitle":`Complete a few quick steps to set up your {appName} card.`,"signUpForCardView.subtitleFallback":`Complete a few quick steps to set up your card.`,"signUpForCardView.checklistAgreements":`Review required agreements`,"signUpForCardView.checklistInformation":`Provide your information`,"signUpForCardView.checklistIdentity":`Verify your identity`,"signUpForCardView.getStartedCta":`Get started`,"signUpForCardView.workingCta":`Please wait…`,"signUpForCardView.termsPromptTitle":`Review card agreements`,"signUpForCardView.disclosurePromptTitle":`Accept electronic disclosures`,"signUpForCardView.disclosurePromptSubtitle":`Review and accept the {disclosureStatement} to receive and sign card documents electronically.`,"signUpForCardView.disclosureStatementLabel":`Electronic Disclosure Statement`,"signUpForCardView.acceptingDisclosureTitle":`Accepting disclosures`,"signUpForCardView.acceptingDisclosureSubtitle":`This will only take a moment.`,"signUpForCardView.bankTermsPromptProviders":`{appName} uses a wallet provided by Privy. {bank} issues the card, and Bridge manages the card program.`,"signUpForCardView.bankTermsPromptProvidersFallback":`This app uses a wallet provided by Privy. {bank} issues the card, and Bridge manages the card program.`,"signUpForCardView.bankTermsPromptAgreements":`By clicking Accept and continue, you agree to the {agreements}.`,"signUpForCardView.bankTermsAnd":`and`,"signUpForCardView.acceptingBankTermsTitle":`Accepting agreements`,"signUpForCardView.acceptingBankTermsSubtitle":`This will only take a moment.`,"signUpForCardView.providerTermsPromptTitle":`Review card program terms`,"signUpForCardView.providerTermsPromptSubtitle":`Open the card program terms to review and accept them.`,"signUpForCardView.acceptingProviderTermsTitle":`Review card program terms`,"signUpForCardView.acceptingProviderTermsSubtitle":`Finish reviewing the card program terms in the pop-up window to continue.`,"signUpForCardView.acceptAndContinueCta":`Accept and continue`,"signUpForCardView.kycPromptTitle":`Verify your identity`,"signUpForCardView.kycPromptSubtitle":`Open the verification flow to confirm your identity.`,"signUpForCardView.verifyIdentityCta":`Verify identity`,"signUpForCardView.verifyingIdentityTitle":`Verify your identity`,"signUpForCardView.verifyingIdentitySubtitle":`Finish verifying your identity in the pop-up window to continue.`,"signUpForCardView.pendingTitle":`Finishing up`,"signUpForCardView.pendingSubtitle":`We're getting your account ready. This can take a moment.`,"signUpForCardView.underReviewTitle":`Identity under review`,"signUpForCardView.underReviewSubtitle":`Your identity information is being reviewed. You can close this sign up and check back later to finish.`,"signUpForCardView.creatingCardTitle":`Creating your card`,"signUpForCardView.creatingCardSubtitle":`Hang tight while we finish creating your card.`,"signUpForCardView.approvePromptTitle":`Approve card spending`,"signUpForCardView.approvePromptSubtitle":`Sign a one-time approval to let your card spend from your selected {symbol} balance.`,"signUpForCardView.approvePromptWhat":`What this does:`,"signUpForCardView.approvePromptItemConnect":`Connects your card to your {symbol} balance`,"signUpForCardView.approvePromptItemPurchases":`Lets your card make purchases`,"signUpForCardView.approvePromptItemLimits":`Spending limits are managed separately`,"signUpForCardView.approveAndContinueCta":`Approve and continue`,"signUpForCardView.approveErrorTitle":`Spend approval failed`,"signUpForCardView.approveErrorSubtitle":`We couldn't approve card spending. Click below to try again.`,"signUpForCardView.readyTitle":`Your card is ready`,"signUpForCardView.readySubtitle":`Your card has been created and is ready to use.`,"signUpForCardView.continueCta":`Continue`,"signUpForCardView.doneCta":`Done`,"signUpForCardView.rejectedTitle":`We couldn't verify your identity`,"signUpForCardView.rejectedSubtitle":`Your card application could not be approved.`,"signUpForCardView.errorTitle":`Something went wrong`,"signUpForCardView.errorSubtitle":`We couldn't set up your card. Please try again.`,"signUpForCardView.tryAgainCta":`Try again`};function n(){let n=e();return{t:(e,r)=>function(e,n,r){let i=n?.[e]??t[e];return r&&Object.keys(r).length!==0?i.replace(/\{(\w+)\}/g,((e,t)=>r[t]??e)):i}(e,n.intl.textLocalization,r)}}export{n as t};
|
|
1
|
+
import{D as e}from"./privy-context-81KmsBw2-DiR6-Yq8.js";var t={"connectionStatus.successfullyConnected":`Successfully connected with {walletName}`,"connectionStatus.errorTitle":`{errorMessage}`,"connectionStatus.connecting":`Connecting`,"connectionStatus.connectOneWallet":`For the best experience, connect only one wallet at a time.`,"connectionStatus.checkOtherWindows":`Don't see your wallet? Check your other browser windows.`,"connectionStatus.stillHere":`Still here?`,"connectionStatus.tryConnectingAgain":`Try connecting again`,"connectionStatus.or":`or`,"connectionStatus.useDifferentLink":`use this different link`,"coinbaseWallet.connectingSubtitle":`This connects Coinbase Wallet, not your Coinbase.com account.`,"coinbaseWallet.connectingSubtitleReset":`This connects Coinbase Wallet, not your Coinbase.com account. Not the right wallet? Reset your connection below.`,"coinbaseWallet.successSubtitle":`This Coinbase Wallet address is not your Coinbase.com deposit address.`,"connectWallet.connectYourWallet":`Connect a wallet`,"connectWallet.waitingForWallet":`Waiting for {walletName}`,"connectWallet.connectToAccount":`Connect a wallet to your {appName} account`,"connectWallet.installAndConnect":`To connect to {walletName}, install and open the app. Then confirm the connection when prompted.`,"connectWallet.tryConnectingAgain":`Please try connecting again.`,"connectWallet.openInApp":`Open in app`,"connectWallet.copyLink":`Copy link`,"connectWallet.retry":`Retry`,"connectWallet.searchPlaceholder":`Search through {count} wallets`,"connectWallet.noWalletsFound":`No wallets found. Try another search.`,"connectWallet.lastUsed":`Last used`,"connectWallet.selectYourWallet":`Select your wallet`,"connectWallet.selectNetwork":`Select network`,"connectWallet.goToWallet":`Go to {walletName} to continue`,"connectWallet.scanToConnect":`Scan code to connect to {walletName}`,"connectWallet.openOrInstall":`Open or install {walletName}`,"cardTransactionList.scrollRegionLabel":`Card transactions`,"cardTransactionList.noTransactionsFound":`No transactions found`,"cardTransactionList.tryAgain":`Try again`,"cardTransactionList.badgeCredit":`Credit`,"cardTransactionList.badgePending":`Pending`,"cardTransactionList.badgeDeclined":`Declined`,"cardTransactionList.badgeExpired":`Expired`,"cardTransactionList.badgeReversed":`Reversed`,"cardDetailsView.cardholderLabel":`Cardholder`,"cardDetailsView.validThruLabel":`Valid thru`,"cardDetailsView.showDetails":`Details`,"cardDetailsView.hideDetails":`Hide details`,"cardDetailsView.pin":`PIN`,"cardDetailsView.replace":`Replace`,"cardDetailsView.cancel":`Cancel`,"cardDetailsView.freezeTitle":`Freeze Card`,"cardDetailsView.freezeSubtitle":`Temporarily disable your card`,"cardDetailsView.addToWalletTitle":`Add to wallet`,"cardDetailsView.addToWalletSubtitle":`Add your card to {walletName}`,"cardDetailsView.freezeConfirmTitle":`Freeze this card?`,"cardDetailsView.freezeConfirmDescription":`This will instantly freeze the current card.`,"cardDetailsView.freezeConfirmCta":`Freeze card`,"cardDetailsView.unfreezeConfirmTitle":`Unfreeze this card?`,"cardDetailsView.unfreezeConfirmDescription":`This will instantly unfreeze the current card.`,"cardDetailsView.unfreezeConfirmCta":`Unfreeze card`,"cardDetailsView.cancelConfirmTitle":`Cancel this card?`,"cardDetailsView.cancelConfirmDescription":`This will instantly cancel the current card.`,"cardDetailsView.cancelConfirmCta":`Cancel card`,"cardDetailsView.replaceReasonTitle":`Why are you replacing your card?`,"cardDetailsView.replaceReasonCta":`Continue`,"cardDetailsView.replaceReasonLost":`Lost`,"cardDetailsView.replaceReasonStolen":`Stolen`,"cardDetailsView.replaceReasonExpired":`Expired`,"cardDetailsView.replaceWarnTitle":`Replace this card?`,"cardDetailsView.replaceWarnDescription":`This will instantly close the current card and issue a new one.`,"cardDetailsView.replaceWarnCta":`Replace`,"cardDetailsView.dialogDismiss":`Never mind`,"cardDetailsView.dialogBack":`Back`,"cardPinDialog.title":`PIN number`,"cardPinDialog.description":`Your PIN is used for in-person transactions and ATM withdrawals.`,"cardPinDialog.changePin":`Change PIN`,"cardPinDialog.close":`Close`,"cardPinDialog.cancel":`Cancel`,"cardPinDialog.save":`Save and close`,"cardPinDialog.placeholder":`••••`,"cardPinDialog.emptyError":`Add a new PIN or cancel to continue.`,"cardPinDialog.saveError":`Could not update this PIN. Please try again.`,"cardPinDialog.loadError":`Could not load this PIN. Please try again.`,"cardPinDialog.pinLabel":`PIN`,"cardDetailsReveal.cardNumberLabel":`Card number`,"cardDetailsReveal.expirationLabel":`Expiration`,"cardDetailsReveal.cvcLabel":`CVC`,"cardDetailsReveal.copyValue":`Copy {label}`,"cardDetailsReveal.error":`Card details could not be loaded. Please try again.`,"transactionDetailsView.summarySubheader":`Card payment to {merchantName}`,"transactionDetailsView.summarySubheaderFallback":`Card payment`,"transactionDetailsView.detailsHeader":`Details`,"transactionDetailsView.disputeCta":`Dispute transaction`,"transactionDetailsView.cardEndingIn":`Card ending in {last4}`,"transactionDetailsView.amountLabel":`Amount`,"transactionDetailsView.atmFeeLabel":`ATM Fee`,"transactionDetailsView.cashbackLabel":`Cashback`,"transactionDetailsView.statusLabel":`Status`,"transactionDetailsView.disputeLabel":`Dispute`,"transactionDetailsView.merchantLabel":`Merchant`,"transactionDetailsView.currencyLabel":`Currency`,"transactionDetailsView.fromLabel":`From`,"transactionDetailsView.dateLabel":`Date created`,"transactionDetailsView.statusPending":`Pending`,"transactionDetailsView.statusPosted":`Posted`,"transactionDetailsView.statusDeclined":`Declined`,"transactionDetailsView.statusExpired":`Expired`,"transactionDetailsView.statusReversed":`Reversed`,"transactionDetailsView.disputeNone":`None`,"transactionDetailsView.disputeExpired":`Dispute expired`,"transactionDetailsView.disputeLost":`Dispute lost`,"transactionDetailsView.disputeSubmitted":`Dispute submitted`,"transactionDetailsView.disputeUnsubmitted":`Dispute unsubmitted`,"transactionDetailsView.disputeWon":`Dispute won`,"transactionDetailsView.disputeDialogTitle":`Dispute this transaction`,"transactionDetailsView.disputeDialogBody":`To dispute this transaction, call the number below and our support team will help you.`,"transactionDetailsView.disputeDoneCta":`Done`,"cardSummaryView.walletHeading":`Wallet`,"cardSummaryView.cardHeading":`Your Card`,"cardSummaryView.transactionsHeading":`Transactions`,"cardSummaryView.unknownMerchant":`Unknown merchant`,"cardSummaryView.balanceUnavailable":`—`,"cardSummaryView.currentBalance":`Spending balance`,"cardSummaryView.cardTitle":`{brand} debit card`,"cardSummaryView.cardTitleFallback":`Debit card`,"cardSummaryView.cardLoadError":`Could not load this card.`,"cardSummaryView.transactionsLoadError":`Could not load transactions.`,"cardSummaryView.freezeError":`Could not update this card. Please try again.`,"cardSummaryView.cancelError":`Could not cancel this card. Please try again.`,"cardSummaryView.replaceError":`Could not replace this card. Please try again.`,"cardSummaryView.walletProvisioningError":`Could not load wallet options.`,"cardSummaryView.walletProvisioningSuccess":`Card added to wallet`,"cardSummaryView.cardCanceledBanner":`This card has been cancelled`,"cardSummaryView.cardFrozenBanner":`This card is frozen`,"cardSummaryView.sandboxBanner":`In sandbox mode using test funds`,"cardSummaryView.back":`Back`,"cardSummaryView.close":`Close`,"cardStatementDownload.buttonLabel":`Download statement`,"cardStatementDownload.tooltip":`Download a monthly PDF statement`,"cardStatementDownload.confirmTitle":`Download statement`,"cardStatementDownload.confirmDescription":`Are you sure you want to download your statement from {period}?`,"cardStatementDownload.confirmCta":`Download`,"cardStatementDownload.cancelCta":`Cancel`,"cardStatementDownload.error":`Could not download your statement. Please try again.`,"cardStatementDownload.notAvailable":`No statement is available for that period.`,"cardStatementDownload.empty":`Statements are available once the month ends.`,"signUpForCardView.sandboxBanner":`In sandbox mode using test funds`,"signUpForCardView.title":`Create {appName} card`,"signUpForCardView.titleFallback":`Create card`,"signUpForCardView.subtitle":`Complete a few quick steps to set up your {appName} card.`,"signUpForCardView.subtitleFallback":`Complete a few quick steps to set up your card.`,"signUpForCardView.checklistAgreements":`Review required agreements`,"signUpForCardView.checklistInformation":`Provide your information`,"signUpForCardView.checklistIdentity":`Verify your identity`,"signUpForCardView.getStartedCta":`Get started`,"signUpForCardView.workingCta":`Please wait…`,"signUpForCardView.termsPromptTitle":`Review card agreements`,"signUpForCardView.disclosurePromptTitle":`Accept electronic disclosures`,"signUpForCardView.disclosurePromptSubtitle":`Review and accept the {disclosureStatement} to receive and sign card documents electronically.`,"signUpForCardView.disclosureStatementLabel":`Electronic Disclosure Statement`,"signUpForCardView.acceptingDisclosureTitle":`Accepting disclosures`,"signUpForCardView.acceptingDisclosureSubtitle":`This will only take a moment.`,"signUpForCardView.bankTermsPromptProviders":`{appName} uses a wallet provided by Privy. {bank} issues the card, and Bridge manages the card program.`,"signUpForCardView.bankTermsPromptProvidersFallback":`This app uses a wallet provided by Privy. {bank} issues the card, and Bridge manages the card program.`,"signUpForCardView.bankTermsPromptAgreements":`By clicking Accept and continue, you agree to the {agreements}.`,"signUpForCardView.bankTermsAnd":`and`,"signUpForCardView.acceptingBankTermsTitle":`Accepting agreements`,"signUpForCardView.acceptingBankTermsSubtitle":`This will only take a moment.`,"signUpForCardView.providerTermsPromptTitle":`Review card program terms`,"signUpForCardView.providerTermsPromptSubtitle":`Open the card program terms to review and accept them.`,"signUpForCardView.acceptingProviderTermsTitle":`Review card program terms`,"signUpForCardView.acceptingProviderTermsSubtitle":`Finish reviewing the card program terms in the pop-up window to continue.`,"signUpForCardView.acceptAndContinueCta":`Accept and continue`,"signUpForCardView.kycPromptTitle":`Verify your identity`,"signUpForCardView.kycPromptSubtitle":`Open the verification flow to confirm your identity.`,"signUpForCardView.verifyIdentityCta":`Verify identity`,"signUpForCardView.verifyingIdentityTitle":`Verify your identity`,"signUpForCardView.verifyingIdentitySubtitle":`Finish verifying your identity in the pop-up window to continue.`,"signUpForCardView.pendingTitle":`Finishing up`,"signUpForCardView.pendingSubtitle":`We're getting your account ready. This can take a moment.`,"signUpForCardView.underReviewTitle":`Identity under review`,"signUpForCardView.underReviewSubtitle":`Your identity information is being reviewed. You can close this sign up and check back later to finish.`,"signUpForCardView.creatingCardTitle":`Creating your card`,"signUpForCardView.creatingCardSubtitle":`Hang tight while we finish creating your card.`,"signUpForCardView.approvePromptTitle":`Approve card spending`,"signUpForCardView.approvePromptSubtitle":`Sign a one-time approval to let your card spend from your selected {symbol} balance.`,"signUpForCardView.approvePromptWhat":`What this does:`,"signUpForCardView.approvePromptItemConnect":`Connects your card to your {symbol} balance`,"signUpForCardView.approvePromptItemPurchases":`Lets your card make purchases`,"signUpForCardView.approvePromptItemLimits":`Spending limits are managed separately`,"signUpForCardView.approveAndContinueCta":`Approve and continue`,"signUpForCardView.approveErrorTitle":`Spend approval failed`,"signUpForCardView.approveErrorSubtitle":`We couldn't approve card spending. Click below to try again.`,"signUpForCardView.readyTitle":`Your card is ready`,"signUpForCardView.readySubtitle":`Your card has been created and is ready to use.`,"signUpForCardView.continueCta":`Continue`,"signUpForCardView.doneCta":`Done`,"signUpForCardView.rejectedTitle":`We couldn't verify your identity`,"signUpForCardView.rejectedSubtitle":`Your card application could not be approved.`,"signUpForCardView.errorTitle":`Something went wrong`,"signUpForCardView.errorSubtitle":`We couldn't set up your card. Please try again.`,"signUpForCardView.tryAgainCta":`Try again`};function n(){let n=e();return{t:(e,r)=>function(e,n,r){let i=n?.[e]??t[e];return r&&Object.keys(r).length!==0?i.replace(/\{(\w+)\}/g,((e,t)=>r[t]??e)):i}(e,n.intl.textLocalization,r)}}export{n as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{s as e}from"./rolldown-runtime-
|
|
1
|
+
import{s as e}from"./rolldown-runtime-Bjp52BOI.js";import{$ as t}from"./privy-context-81KmsBw2-DiR6-Yq8.js";import{t as n}from"./react-BfYA1q0G.js";import{C as r,S as i,T as a}from"./storage-Ufl800Ne-1qCR2JMO.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};
|
package/site/dist/assets/{useWallets-X1ndvJ_U-DRjz7uYD.js → useWallets-X1ndvJ_U-CAYqg7Za.js}
RENAMED
|
@@ -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-Bjp52BOI.js";import{n as t}from"./esm-n2lWo7kz.js";import{K as n,M as r,d as i,g as a}from"./esm-Co94ENUV.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-DiR6-Yq8.js";import{t as b}from"./react-BfYA1q0G.js";import{n as x}from"./modal-context-CwmSeFcv-DPWNJrfK.js";import{i as S,n as C,s as w}from"./errors-BQ3N-RVt-CZPAWCgC.js";import{a as T,d as E,l as ee}from"./get-entropy-details-for-user-dHRH5Gpi-BNiOFXbK.js";import{Fn as te}from"./localBatchGatewayRequest-B71J8sQ9.js";import{i as ne,y as re}from"./storage-Ufl800Ne-1qCR2JMO.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-C0xQN_Lp.js";import{h as de,i as fe,m as pe,n as me,p as he,t as ge}from"./pkce-DXF0yKjP-7_VY-d83.js";import{t as _e}from"./eventemitter3-Dzc_0Uq2.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-CY60yubk.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-CTLbMCcH.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-XyHdtV1O.js";import{n as fe,t as pe}from"./SIWXUtil-Cpiv91-M.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){e?(j.sourceToken=e,await M.setTokenPrice(e.address,`sourceToken`)):(j.sourceToken=e,j.sourceTokenAmount=``,j.sourceTokenPriceInUSD=0)},setSourceTokenAmount(e){j.sourceTokenAmount=e},async setToToken(e){e?(j.toToken=e,await M.setTokenPrice(e.address,`toToken`)):(j.toToken=e,j.toTokenAmount=``,j.toTokenPriceInUSD=0)},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(){this.isUnsupportedChainView()||await pe.isSIWXCloseDisabled()?h.shake():((_.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);
|
|
@@ -1023,7 +1023,7 @@ 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 a
|
|
|
1023
1023
|
w3m-modal {
|
|
1024
1024
|
pointer-events: auto;
|
|
1025
1025
|
}
|
|
1026
|
-
`,document.head.appendChild(e)}onScrollUnlock(){let e=document.head.querySelector(`style[data-w3m="${Qe}"]`);e&&e.remove()}onAddKeyboardListener(){this.abortController=new AbortController;let e=this.shadowRoot?.querySelector(`wui-card`);e?.focus(),window.addEventListener(`keydown`,t=>{if(t.key===`Escape`)this.handleClose();else if(t.key===`Tab`){let{tagName:n}=t.target;n&&!n.includes(`W3M-`)&&!n.includes(`WUI-`)&&e?.focus()}},this.abortController)}onRemoveKeyboardListener(){this.abortController?.abort(),this.abortController=void 0}async onNewAddress(e){let t=g.state.isSwitchingNamespace,n=_.state.view===`ProfileWallets`;e?await this.onConnected({caipAddress:e,isSwitchingNamespace:t,isInProfileView:n})
|
|
1026
|
+
`,document.head.appendChild(e)}onScrollUnlock(){let e=document.head.querySelector(`style[data-w3m="${Qe}"]`);e&&e.remove()}onAddKeyboardListener(){this.abortController=new AbortController;let e=this.shadowRoot?.querySelector(`wui-card`);e?.focus(),window.addEventListener(`keydown`,t=>{if(t.key===`Escape`)this.handleClose();else if(t.key===`Tab`){let{tagName:n}=t.target;n&&!n.includes(`W3M-`)&&!n.includes(`WUI-`)&&e?.focus()}},this.abortController)}onRemoveKeyboardListener(){this.abortController?.abort(),this.abortController=void 0}async onNewAddress(e){let t=g.state.isSwitchingNamespace,n=_.state.view===`ProfileWallets`;e?await this.onConnected({caipAddress:e,isSwitchingNamespace:t,isInProfileView:n}):t||this.enableEmbedded||n||h.close(),await pe.initializeIfEnabled(e),this.caipAddress=e,g.setIsSwitchingNamespace(!1)}async onConnected(t){if(t.isInProfileView)return;let{chainNamespace:r,chainId:i,address:a}=e.parseCaipAddress(t.caipAddress),o=`${r}:${i}`,s=!n.getPlainAddress(this.caipAddress),c=await pe.getSessions({address:a,caipNetworkId:o}),l=!pe.getSIWX()||c.some(e=>e.data.accountAddress===a),u=t.isSwitchingNamespace&&l&&!this.enableEmbedded,d=this.enableEmbedded&&s;u?_.goBack():d&&h.close()}onNewNetwork(e){let t=this.caipNetwork,n=t?.caipNetworkId?.toString(),r=t?.chainNamespace,i=e?.caipNetworkId?.toString(),a=e?.chainNamespace,s=n!==i,c=s&&r===a,l=t?.name===o.UNSUPPORTED_NETWORK_NAME,u=_.state.view===`ConnectingExternal`,d=_.state.view===`ProfileWallets`,ee=!g.getAccountData(e?.chainNamespace)?.caipAddress,f=_.state.view===`UnsupportedChain`,p=h.state.open,m=!1;this.enableEmbedded&&_.state.view===`SwitchNetwork`&&(m=!0),s&&M.resetState(),p&&!u&&!d&&(ee?s&&(m=!0):(f||c&&!l)&&(m=!0)),m&&_.state.view!==`SIWXSignMessage`&&_.goBack(),this.caipNetwork=e}prefetch(){this.hasPrefetched||=(re.prefetch(),re.fetchWalletsByPage({page:1}),!0)}};Y.styles=Ze,J([E({type:Boolean})],Y.prototype,`enableEmbedded`,void 0),J([O()],Y.prototype,`open`,void 0),J([O()],Y.prototype,`caipAddress`,void 0),J([O()],Y.prototype,`caipNetwork`,void 0),J([O()],Y.prototype,`shake`,void 0),J([O()],Y.prototype,`filterByNamespace`,void 0),J([O()],Y.prototype,`padding`,void 0),J([O()],Y.prototype,`mobileFullScreen`,void 0);var et=class extends Y{};et=J([T(`w3m-modal`)],et);var tt=class extends Y{};tt=J([T(`appkit-modal`)],tt);var nt=C`
|
|
1027
1027
|
:host {
|
|
1028
1028
|
width: 100%;
|
|
1029
1029
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./createLucideIcon-
|
|
1
|
+
import{t as e}from"./createLucideIcon-BsERoFTA.js";var t=e(`wallet`,[[`path`,{d:`M19 7V4a1 1 0 0 0-1-1H5a2 2 0 0 0 0 4h15a1 1 0 0 1 1 1v4h-3a2 2 0 0 0 0 4h3a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1`,key:`18etb6`}],[`path`,{d:`M3 5v14a2 2 0 0 0 2 2h15a1 1 0 0 0 1-1v-4`,key:`xoc0q4`}]]);export{t};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./accounts-IkdFx9nq.js","./_esm-ZmzBJpEs.js","./preload-helper-CRzLMJPS.js","./parseAbi-Csg-8t59.js","./parseAbiParameters-BWbIMYe4.js","./stringify-DqUj9VzO.js","./chain-scefkYIH.js","./utils-BkR7EQjg.js","./ccip-B1J3oTZx.js","./formatter-CVbp4SlJ.js","./serializeSignature-CWKpxoab.js","./serializeAuthorizationList-DGMik9Wx.js","./sha2-C6s7zZmb.js","./secp256k1-Bh4MSkhz.js","./defineChain-B-SQDLTG.js","./accounts-D4AXF17G.js","./__vite-browser-external-NciY4Vu1.js","./rolldown-runtime-Bjp52BOI.js","./_esm-BZP3cXTv.js","./react-CK2HRI1t.js","./react-BfYA1q0G.js","./client-BfIR1FvH.js","./react-dom-BI2Koe4o.js","./esm-bb8SANZh.js","./esm-Co94ENUV.js","./esm-n2lWo7kz.js","./privy-context-81KmsBw2-DiR6-Yq8.js","./jsx-runtime-CndCZlyt.js","./types-4CuOD23i.js","./get-entropy-details-for-user-dHRH5Gpi-BNiOFXbK.js","./react-DxGeY8B8.js","./errors-BQ3N-RVt-CZPAWCgC.js","./ofetch.CWycOUEr-Duby3iHT.js","./dist-Cp6IXeJd.js","./use-unlink-wallet-BKK4_5Ur-C0xQN_Lp.js","./modal-context-CwmSeFcv-DPWNJrfK.js","./localBatchGatewayRequest-B71J8sQ9.js","./utils-DJhBNOZA.js","./useWallets-X1ndvJ_U-CAYqg7Za.js","./storage-Ufl800Ne-1qCR2JMO.js","./secp256k1-BeYL8aZl.js","./pkce-DXF0yKjP-7_VY-d83.js","./eventemitter3-Dzc_0Uq2.js","./index.browser-B-i-Lj3J.js","./PrivyPluginContext-DA-yS5vO-CY60yubk.js","./index-YiCw0Y_x-Czl0tWfF.js","./Loader-UAZqxsnw-DJEVblm1.js","./toViemAccount-B5iDGq1b-CdFZwv07.js","./dist-CrNxmdZj.js","./lib-DGtzi2DK.js","./guards-BIW-GiMJ-D3tWTQAR.js","./logger-CsXm3oIv-B0UYpNFI.js","./SolanaWalletConnector-C7Lqk-Wz-Bc_lvdiF.js","./use-headless-crypto-deposit-Yn-QRLB3-CQqeyhGY.js","./walletconnect-registry-xxG8XLCb-BpzpBq5s.js","./id-UqEwL2BI-CTlvRMA5.js","./useActiveWallet-B-yZYGc6-BkK6rFBm.js","./esm-C3DslVJx.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{s as e}from"./rolldown-runtime-Bjp52BOI.js";import{t}from"./preload-helper-CRzLMJPS.js";import{t as n}from"./defineChain-B-SQDLTG.js";import{n as r,t as i}from"./baseSepolia-Bn1j1Ysw.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=e=>typeof btoa==`function`?btoa(e):Buffer.from(e,`utf8`).toString(`base64`),c=e=>typeof atob==`function`?atob(e):Buffer.from(e,`base64`).toString(`utf8`),l=/^eip155:(\d+)$/;function u(e=[],{maxPrice:t}={}){let n=e.filter(e=>e.scheme===`exact`&&l.test(e.network));if(!n.length)throw Error(`no payable option: ${JSON.stringify(e.map(e=>`${e.scheme}/${e.network}`))}`);let r=n.sort((e,t)=>BigInt(e.amount)<BigInt(t.amount)?-1:1)[0];if(t!=null&&BigInt(r.amount)>BigInt(t))throw Error(`price ${r.amount} exceeds the cap ${t} (token base units)`);return r}function d(e){let t=e.headers.get(`PAYMENT-REQUIRED`);if(!t)throw Error(`HTTP ${e.status} has no PAYMENT-REQUIRED header (not x402 v2)`);return JSON.parse(c(t))}async function f(e,t,n){return s(JSON.stringify(await p(e,t,n)))}async function p(e,t,{resource:n,now:r=Math.floor(Date.now()/1e3)}={}){let i=Number((l.exec(e.network)??[])[1]);if(!i)throw Error(`not an EVM network: ${e.network}`);let a=`0x${[...crypto.getRandomValues(new Uint8Array(32))].map(e=>e.toString(16).padStart(2,`0`)).join(``)}`,o={from:t.address,to:e.payTo,value:String(e.amount),validAfter:String(r-600),validBefore:String(r+(e.maxTimeoutSeconds??120)),nonce:a};if(!e.extra?.name||!e.extra?.version)throw Error(`${e.network}: the seller names no EIP-712 domain for ${e.asset} (extra.name, extra.version)`);let s=await t.signTypedData({domain:{name:e.extra.name,version:e.extra.version,chainId:i,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:{...o,value:BigInt(o.value),validAfter:BigInt(o.validAfter),validBefore:BigInt(o.validBefore)}});return{x402Version:2,...n?{resource:n}:{},accepted:e,payload:{signature:s,authorization:o}}}async function m(e,{privateKey:n,account:r,maxPrice:i,fetchImpl:a=fetch,method:o=`GET`}={}){let s=await a(e,{method:o});if(s.status!==402)return{status:s.status,body:await s.text(),price:null,receipt:null};let l=d(s),p=u(l.accepts,{maxPrice:i});if(!r){if(!n)throw Error(`${e} costs ${p.amount} (base units of ${p.asset} on ${p.network}); no wallet configured to pay`);r=(await t(async()=>{let{privateKeyToAccount:e}=await import(`./accounts-IkdFx9nq.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 m=await a(e,{method:o,headers:{"PAYMENT-SIGNATURE":await f(p,r,{resource:l.resource})}}),h=m.headers.get(`PAYMENT-RESPONSE`),g=await m.text();if(m.status===402)throw Error(`payment refused: ${d(m).error??g}`);return{status:m.status,body:g,price:p.amount,receipt:h?JSON.parse(c(h)):null}}var h=e=>[...e].map(e=>e.toString(16).padStart(2,`0`)).join(``),g=e=>Uint8Array.from(e.match(/../g).map(e=>parseInt(e,16))),_=e=>Uint8Array.from(v(e));function v(e){return typeof atob==`function`?[...atob(e)].map(e=>e.charCodeAt(0)):[...Buffer.from(e,`base64`)]}var y=e=>typeof btoa==`function`?btoa(String.fromCharCode(...e)):Buffer.from(e).toString(`base64`),b=async e=>h(new Uint8Array(await crypto.subtle.digest(`SHA-256`,e)));async function x(e,t){let n=await crypto.subtle.importKey(`raw`,new TextEncoder().encode(e),{name:`HMAC`,hash:`SHA-256`},!1,[`sign`]);return h(new Uint8Array(await crypto.subtle.sign(`HMAC`,n,new TextEncoder().encode(t))))}async function S(e,t,n=crypto.getRandomValues(new Uint8Array(12))){let r=await crypto.subtle.importKey(`raw`,g(e),`AES-GCM`,!1,[`encrypt`]),i=new Uint8Array(await crypto.subtle.encrypt({name:`AES-GCM`,iv:n},r,new TextEncoder().encode(t))),a=new Uint8Array(12+i.length);return a.set(n),a.set(i,12),y(a)}async function C(e,t,n){let r=_(e),i=await crypto.subtle.importKey(`raw`,g(t),`AES-GCM`,!1,[`decrypt`]),a=new Uint8Array(await crypto.subtle.decrypt({name:`AES-GCM`,iv:r.slice(0,12)},i,r.slice(12))),o=await b(a);return{sha256:o,verified:n?n===o:null,record:JSON.parse(new TextDecoder().decode(a))}}async function w(e,{account:t,privateKey:n,maxPrice:r=e.pass,fetchImpl:i}={}){let a=await m(e.pass_url,{method:`POST`,account:t,privateKey:n,maxPrice:r,fetchImpl:i});if(a.status!==200)throw Error(`no pass: HTTP ${a.status} ${a.body.slice(0,200)}`);return{...JSON.parse(a.body),price:a.price,receipt:a.receipt}}async function T(e,t,n){let r=[];for(let[i,a]of Object.entries(e??{}))if(!t[i])r.push({id:i,key:a,error:`no sealed record for this id in the rows read`});else try{r.push({id:i,...await C(t[i],a,n[i])})}catch(e){r.push({id:i,key:a,error:`could not open: ${e.message}`})}return r}async function E(e,t,{ct:n,want:r,account:i,privateKey:a,maxPrice:o=e.price,fetchImpl:s}={}){if(!n)return{id:t,error:`this row carries no sealed record (paid_ct): nothing to buy`};let c=await m(e.url.replace(`{id}`,encodeURIComponent(t)),{account:i,privateKey:a,maxPrice:o,fetchImpl:s});if(c.status!==200)return{id:t,error:`HTTP ${c.status}: ${c.body.slice(0,200)}`};let l=await C(n,JSON.parse(c.body).key,r);return{id:t,price:c.price,receipt:c.receipt,digest:l.sha256,verified:l.verified,record:l.record}}async function D(e,t,{total:n,denominations:r,days:i=30}={}){let a=[],o=r.map(BigInt),s=BigInt(n);for(let n=0;n<o.length;n++){let r=s/o[n];if(n<o.length-1){let e=o[n+1]/o[n]-1n;r=(s-(s-(e<r?e:r)*o[n])/o[n+1]*o[n+1])/o[n]}for(let s=0n;s<r;s++)a.push(await p({...e,amount:String(o[n]),maxTimeoutSeconds:i*86400},t));s-=r*o[n]}return a}function O(e,t){let n=BigInt(t),r=[];for(let t of[...e].sort((e,t)=>{let n=BigInt(e.payload.authorization.value),r=BigInt(t.payload.authorization.value);return n>r?-1:+(n<r)})){let e=BigInt(t.payload.authorization.value);e<=n&&(r.push(t),n-=e)}return n===0n?r:null}async function k(n,r,{staleMs:i=12e4,waitMs:a=3e4}={}){let o=await t(()=>import(`./__vite-browser-external-NciY4Vu1.js`).then(t=>e(t.default,1)),__vite__mapDeps([16,17]),import.meta.url),s=`${n}.lock`,c=Date.now();for(;;)try{o.closeSync(o.openSync(s,`wx`));break}catch(e){if(e.code!==`EEXIST`)throw e;let t=0;try{t=Date.now()-o.statSync(s).mtimeMs}catch{continue}if(t>i){o.rmSync(s,{force:!0});continue}if(Date.now()-c>a)throw Error(`the allowance is in use by another purchase (${s})`);await new Promise(e=>setTimeout(e,100))}try{return await r()}finally{o.rmSync(s,{force:!0})}}async function A(e,n,{ct:r={},want:i={},vouchers:a,account:o,privateKey:c,maxPrice:l,fetchImpl:f=fetch}={}){let m=e.url.replace(/\/\{id\}$/,``),h=n.filter(e=>r[e]),g=n.filter(e=>!r[e]);if(!h.length)throw Error(`none of these rows carries a sealed record (paid_ct): ${g.join(`, `)}`);let _=(e={})=>f(m,{method:`POST`,headers:{"content-type":`application/json`,...e},body:JSON.stringify({ids:h})}),v=await _(),y=await v.json();if(v.status!==402)throw Error(`expected a price, got HTTP ${v.status}: ${JSON.stringify(y).slice(0,200)}`);let b={...y,...d(v)},x=u(b.accepts,{maxPrice:l}),S;if(a){if(S=O(a,x.amount),!S)throw Error(`the allowance cannot pay exactly ${x.amount} (base units); add funds or buy fewer records`)}else{if(o??=c?(await t(async()=>{let{privateKeyToAccount:e}=await import(`./accounts-IkdFx9nq.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(c):null,!o)throw Error(`${b.found.length} record(s) cost ${x.amount} (base units); no wallet or allowance to pay`);S=[await p(x,o,{resource:b.resource})]}let C=await _({"PAYMENT-SIGNATURE":s(JSON.stringify(S))}),w=await C.json(),E=e=>e.payload.authorization.nonce,D=new Set(w.paid??(C.status===200?S.map(E):[]));if(a)for(let e of[...D,...w.rejected??[]]){let t=a.findIndex(t=>E(t)===e);t>=0&&a.splice(t,1)}if(C.status!==200)throw Error(`payment refused: ${w.error??JSON.stringify(w).slice(0,200)}`);let k=S.filter(e=>D.has(E(e))).reduce((e,t)=>e+BigInt(t.payload.authorization.value),0n),A=await T(w.keys,r,i);return{records:A,missing:[...g,...w.missing??[]],undelivered:w.undelivered??[],error:w.error??null,manifest:{app:m,bought:new Date().toISOString(),price:String(k),asset:x.asset,network:x.network,transactions:w.receipts.map(e=>e.transaction),records:A.map(({id:e,sha256:t})=>({id:e,sha256:t}))}}}if(typeof process<`u`&&import.meta.url===`file://${process.argv[1]}`&&process.argv[1].endsWith(`/x402.js`)){let{privateKeyToAccount:n,generatePrivateKey:r}=await t(async()=>{let{privateKeyToAccount:e,generatePrivateKey:t}=await import(`./accounts-IkdFx9nq.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:i}=await t(async()=>{let{verifyTypedData:e}=await import(`./_esm-BZP3cXTv.js`);return{verifyTypedData:e}},__vite__mapDeps([18,3,4,1,2,5,6,7,8,9,10,11,12,13,14]),import.meta.url),a=n(r()),o=`0x036CbD53842c5426634e7929541eC2318f3dCF7e`,l=`0x${`5e`.repeat(20)}`,u=84532,f={name:`USDC`,version:`2`},p={scheme:`exact`,network:`eip155:${u}`,amount:`10000`,payTo:l,asset:o,maxTimeoutSeconds:120,extra:f},h=null,g=async(e,t={})=>{let n=t.headers?.[`PAYMENT-SIGNATURE`];if(!n)return new Response(`{}`,{status:402,headers:{"PAYMENT-REQUIRED":s(JSON.stringify({x402Version:2,resource:{url:e},accepts:[p]}))}});let r=JSON.parse(c(n)),a=r.payload,d=a.authorization;return r.x402Version!==2||r.resource?.url!==e||r.accepted?.amount!==`10000`?new Response(`{}`,{status:400}):!await i({address:d.from,signature:a.signature,domain:{...f,chainId:u,verifyingContract:o},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!==l||d.value!==`10000`?new Response(`{}`,{status:402,headers:{"PAYMENT-REQUIRED":s(JSON.stringify({x402Version:2,error:`bad payment`,accepts:[p]}))}}):(h=d,new Response(`{"secret":42}`,{status:200,headers:{"PAYMENT-RESPONSE":s(JSON.stringify({success:!0,transaction:`0xabc`}))}}))},_=await m(`https://x/paid/1`,{account:a,maxPrice:10000n,fetchImpl:g});if(_.body!==`{"secret":42}`||_.receipt.transaction!==`0xabc`||h.from!==a.address)throw Error(`paid fetch: ${JSON.stringify(_)}`);let v=!1;try{await m(`https://x/paid/1`,{account:a,maxPrice:9999n,fetchImpl:g})}catch(e){v=/exceeds the cap/.test(e.message)}if(!v)throw Error(`a price over the cap must be refused before signing`);let{mkdtempSync:y,writeFileSync:C}=await t(async()=>{let{mkdtempSync:t,writeFileSync:n}=await import(`./__vite-browser-external-NciY4Vu1.js`).then(t=>e(t.default,1));return{mkdtempSync:t,writeFileSync:n}},__vite__mapDeps([16,17]),import.meta.url),{tmpdir:w}=await t(async()=>{let{tmpdir:t}=await import(`./__vite-browser-external-NciY4Vu1.js`).then(t=>e(t.default,1));return{tmpdir:t}},__vite__mapDeps([16,17]),import.meta.url),T={price:`100000`,network:`eip155:${u}`,asset:o,payTo:l,facilitator:`https://fac`,...f,description:``},j=(await import(`../../site/worker.js`)).default,M=`s3cret`,N={},P={};for(let e of[`a`,`b`,`c`]){let t=JSON.stringify({id:e,amount:1});N[e]=await S(await x(M,e),t),P[e]=await b(new TextEncoder().encode(t))}let F={PAID_SECRET:M,CONFIG:{name:`Test`,paid:T}},I=new Set,L=[],R=globalThis.fetch;globalThis.fetch=async(e,t)=>{let{x402Version:n,paymentPayload:r,paymentRequirements:a}=JSON.parse(t.body),s=r.payload.authorization;if(n!==2||r.x402Version!==2)throw Error(`the facilitator is spoken to in v2`);if(L.push(r),e.endsWith(`/verify`)){let e=await i({address:s.from,signature:r.payload.signature,domain:{...f,chainId:u,verifyingContract:o},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:{...s,value:BigInt(s.value),validAfter:BigInt(s.validAfter),validBefore:BigInt(s.validBefore)}});return new Response(JSON.stringify({isValid:e&&s.value===a.amount,invalidReason:`bad`}))}return I.has(s.nonce)?new Response(JSON.stringify({success:!1,errorReason:`nonce used`})):(I.add(s.nonce),new Response(JSON.stringify({success:!0,transaction:`0x${I.size}`})))};let z=(e,t)=>j.fetch(new Request(e,t),F),B={url:`https://x/paid/{id}`,price:T.price};try{let n=await E(B,`a`,{ct:N.a,want:P.a,account:a,maxPrice:100000n,fetchImpl:z});if(n.verified!==!0||n.record.id!==`a`)throw Error(`single key: ${JSON.stringify(n)}`);if(L.some(e=>e.extensions))throw Error(`GET /paid/<id> must not ask to be listed: its URL differs per record`);let r=await z(`https://x/paid`,{method:`POST`}),i=d(r);if(r.status!==402||i.accepts[0].amount!==T.price||i.extensions?.bazaar?.info?.input?.method!==`POST`)throw Error(`probe: ${r.status} ${JSON.stringify(i)}`);let c=await A(B,[`a`,`b`,`zz`],{account:a,maxPrice:200000n,ct:N,want:P,fetchImpl:z});if(c.records.length!==2||c.missing[0]!==`zz`||c.manifest.price!==`200000`||!c.records.every(e=>e.verified===!0))throw Error(`batch with a wallet: ${JSON.stringify(c)}`);let u=L.slice(-2);if(!u.every(e=>e.extensions?.bazaar&&e.resource.url===`https://x/paid`&&e.accepted.amount===`200000`))throw Error(`batch payloads: ${JSON.stringify(u.map(e=>[e.resource?.url,e.accepted?.amount,!!e.extensions]))}`);let p=await D({...B,scheme:`exact`,network:T.network,payTo:l,asset:o,extra:f},a,{total:2000000n,denominations:[100000n,1000000n]});if(p.length!==11||O(p,1700000n).length!==8||O(p,2100000n)!==null)throw Error(`vouchers: ${p.length}`);let m=[...p],h=await A(B,[`a`,`b`,`c`],{vouchers:p,ct:N,want:P,fetchImpl:z});if(h.records.length!==3||p.length!==8||h.manifest.transactions.length!==3)throw Error(`batch with vouchers: ${JSON.stringify(h.manifest)}`);let g=m.find(e=>!p.includes(e)&&e.payload.authorization.value===`100000`),_=p.find(e=>e.payload.authorization.value===`100000`),v=await z(`https://x/paid`,{method:`POST`,body:JSON.stringify({ids:[`a`,`b`]}),headers:{"PAYMENT-SIGNATURE":s(JSON.stringify([g,_]))}});if(v.status!==402||(await v.json()).keys)throw Error(`a spent voucher must not buy anything`);if((await z(`https://x/paid`,{method:`POST`,body:JSON.stringify({ids:[`a`,`b`]}),headers:{"PAYMENT-SIGNATURE":s(JSON.stringify([_]))}})).status!==402)throw Error(`payments short of the price must be refused`);let b=[p.find(e=>e!==_&&e.payload.authorization.value===`100000`),g],x=await A(B,[`a`,`b`],{vouchers:b,ct:N,want:P,fetchImpl:z});if(x.records.length!==1||x.undelivered[0]!==`b`||!x.error||x.manifest.price!==`100000`||b.length!==0)throw Error(`partial settle: ${JSON.stringify({...x,stack:b.length})}`);let S=[g,_],j=!1;try{await A(B,[`a`,`b`],{vouchers:S,ct:N,want:P,fetchImpl:z})}catch{j=!0}if(!j||S.length!==1||S[0]!==_)throw Error(`refused batch must drop only the spent voucher: ${S.length}`);let M=`${y(`${w()}/wm-`)}/vouchers.json`,F=[],I=e=>k(M,async()=>{F.push(`${e}+`),await new Promise(e=>setTimeout(e,50)),F.push(`${e}-`)});if(await Promise.all([I(`a`),I(`b`)]),F.join()!==`a+,a-,b+,b-`&&F.join()!==`b+,b-,a+,a-`)throw Error(`lock interleaved: ${F}`);C(`${M}.lock`,``);let{utimesSync:R,existsSync:V}=await t(async()=>{let{utimesSync:t,existsSync:n}=await import(`./__vite-browser-external-NciY4Vu1.js`).then(t=>e(t.default,1));return{utimesSync:t,existsSync:n}},__vite__mapDeps([16,17]),import.meta.url);if(R(`${M}.lock`,new Date(Date.now()-3e5),new Date(Date.now()-3e5)),await k(M,async()=>7)!==7||V(`${M}.lock`))throw Error(`a stale lock must be taken over and released`)}finally{globalThis.fetch=R}console.log(`x402.js batch self-check ok — keys, not records: each opens the row's sealed record and matches its hash; one price for the ids sealed in the rows, paid by one signature or by vouchers signed ahead, spent vouchers removed and refused if replayed, short payment refused, a half-settled batch delivers what was paid and drops spent vouchers, the allowance file is locked per purchase`),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 j=`cmnxrwbjl00aa0dlart5xkemq`,M=Object.fromEntries([i,r,o,a].map(e=>[`eip155:${e.id}`,e])),N=Object.fromEntries([i,o].map(e=>[`eip155:${e.id}`,`https://faucet.circle.com/`])),P=null;function F(e){return P??=I(e)}async function I(n){let[r,{createRoot:i},a,o]=await Promise.all([t(()=>import(`./react-CK2HRI1t.js`).then(t=>e(t.default,1)),__vite__mapDeps([19,20,17]),import.meta.url),t(()=>import(`./client-BfIR1FvH.js`).then(t=>e(t.default,1)),__vite__mapDeps([21,17,20,22]),import.meta.url),t(()=>import(`./esm-bb8SANZh.js`),__vite__mapDeps([23,24,17,1,2,3,4,5,6,7,8,9,10,11,12,13,14,25,26,27,20,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,56,22,57]),import.meta.url),t(()=>import(`./_esm-BZP3cXTv.js`),__vite__mapDeps([18,3,4,1,2,5,6,7,8,9,10,11,12,13,14]),import.meta.url)]),s=M[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:N[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)},account(){let e=e=>JSON.parse(JSON.stringify(e,(e,t)=>typeof t==`bigint`?t.toString():t)),t={address:u.address,uiOptions:{showWalletUIs:!1}};return{address:u.address,signTypedData:async n=>(await u.sign(e(n),t)).signature,signMessage:async({message:e})=>(await u.signMsg({message:e},t)).signature}},async buy(e,t,r){return await u.signIn(),E(n,e,{want:t,ct:r,account:u.account()})},async buyPass(){return await u.signIn(),w(n,{account:u.account()})},async 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(),{signMessage:o}=a.useSignMessage(),{depositFunds:s}=a.useDepositFunds(),c=n.find(e=>e.walletClientType===`privy`);return Object.assign(u,{login:t.login,logout:t.logout,authenticated:t.authenticated,address:c?.address??t.user?.wallet?.address??null,email:t.user?.email?.address??t.user?.google?.email??null,walletId:c?.id??null,sign:i,signMsg:o,deposit:s}),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:j,config:{loginMethods:[`email`,`google`],defaultChain:s,supportedChains:[s],embeddedWallets:{ethereum:{createOnLogin:`users-without-wallets`}}}},r.createElement(t)))})}export{F as wallet};
|
package/site/dist/assets/{wallet-connect-BvJtUsDt-Y03hhqFN.js → wallet-connect-BvJtUsDt-CVlSNIXP.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{D as e}from"./privy-context-81KmsBw2-
|
|
1
|
+
import{D as e}from"./privy-context-81KmsBw2-DiR6-Yq8.js";import{t}from"./jsx-runtime-CndCZlyt.js";var n=t(),r=({style:t,...r})=>{let i=e();return(0,n.jsxs)(`svg`,{width:`28`,height:`28`,viewBox:`0 0 28 28`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`,style:{height:`28px`,width:`28px`,...t},...r,children:[(0,n.jsx)(`rect`,{width:`28`,height:`28`,rx:`3`,fill:i?.appearance.palette.colorScheme===`dark`?`#3396ff`:`#141414`}),(0,n.jsx)(`g`,{clipPath:`url(#clip0_1765_9946)`,children:(0,n.jsx)(`path`,{d:`M8.09448 10.3941C11.3558 7.20196 16.6442 7.20196 19.9055 10.3941L20.2982 10.7782C20.3369 10.8157 20.3677 10.8606 20.3887 10.9102C20.4097 10.9599 20.4206 11.0132 20.4206 11.0671C20.4206 11.121 20.4097 11.1744 20.3887 11.224C20.3677 11.2737 20.3369 11.3186 20.2982 11.3561L18.9554 12.6702C18.9158 12.7086 18.8628 12.7301 18.8077 12.7301C18.7526 12.7301 18.6996 12.7086 18.66 12.6702L18.1198 12.1415C15.8448 9.91503 12.1557 9.91503 9.88015 12.1415L9.30167 12.7075C9.26207 12.7459 9.20909 12.7673 9.15395 12.7673C9.0988 12.7673 9.04582 12.7459 9.00622 12.7075L7.66346 11.3934C7.62475 11.3559 7.59397 11.3109 7.57295 11.2613C7.55193 11.2117 7.5411 11.1583 7.5411 11.1044C7.5411 11.0505 7.55193 10.9971 7.57295 10.9475C7.59397 10.8979 7.62475 10.8529 7.66346 10.8154L8.09448 10.3941ZM22.6829 13.1115L23.8776 14.2814C23.9163 14.319 23.9471 14.3639 23.9681 14.4135C23.9892 14.4632 24 14.5165 24 14.5704C24 14.6243 23.9892 14.6777 23.9681 14.7273C23.9471 14.777 23.9163 14.8219 23.8776 14.8594L18.4893 20.1332C18.4102 20.2101 18.3042 20.2531 18.1938 20.2531C18.0835 20.2531 17.9775 20.2101 17.8984 20.1332L14.0743 16.3901C14.0545 16.3708 14.0279 16.36 14.0003 16.36C13.9726 16.36 13.9461 16.3708 13.9263 16.3901L10.1021 20.1332C10.023 20.2101 9.91703 20.2531 9.8067 20.2531C9.69636 20.2531 9.59038 20.2101 9.51124 20.1332L4.12236 14.8594C4.08365 14.8219 4.05287 14.777 4.03185 14.7273C4.01083 14.6777 4 14.6243 4 14.5704C4 14.5165 4.01083 14.4632 4.03185 14.4135C4.05287 14.3639 4.08365 14.319 4.12236 14.2814L5.31767 13.1115C5.39678 13.0348 5.50265 12.9919 5.61285 12.9919C5.72305 12.9919 5.82892 13.0348 5.90803 13.1115L9.73216 16.8546C9.75194 16.874 9.7785 16.8848 9.80616 16.8848C9.83381 16.8848 9.86037 16.874 9.88015 16.8546L13.7043 13.1115C13.7834 13.0346 13.8894 12.9916 13.9997 12.9916C14.1101 12.9916 14.216 13.0346 14.2952 13.1115L18.1198 16.8546C18.1396 16.874 18.1662 16.8848 18.1938 16.8848C18.2215 16.8848 18.2481 16.874 18.2678 16.8546L22.092 13.1115C22.1711 13.0346 22.2771 12.9916 22.3874 12.9916C22.4977 12.9916 22.6037 13.0346 22.6829 13.1115Z`,fill:`white`})}),(0,n.jsx)(`defs`,{children:(0,n.jsx)(`clipPath`,{id:`clip0_1765_9946`,children:(0,n.jsx)(`rect`,{width:`20`,height:`12.2531`,fill:`white`,transform:`translate(4 8)`})})})]})},i=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAIGNIUk0AAHomAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAAGYktHRAD/AP8A/6C9p5MAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAHdElNRQfoDAIVODUC+w+GAAAGsUlEQVRYw6WXbYwWVxXHf+fOLAtCXYS2QJdIaClipGCTknXXNqBQMVHbfmhItH4Aral+IAEaG03UxJgYKQJGTUxtDWjaxDSNtcZqIGDwpRuW1oYiVqpdpZSlpC3qysu+PHPP3w/3mXnmeXZbPzjJZO7cefn/z/mfe865xlscq3dGDIguGiHLaMQVLja4s87FShcLo5jtApdddnHexUmHIy475JmdUkPRAQMu7gzT4ljnxJpdk0QPmMFkyAKN2OfOFpc2uuh1J3MZDrjAvXmVEQUuoosRxw642FcEG7IoDxiFxNiu8NYE+vcUYIFYRKKs113bXWx2Z34CoQZsVHOiCZ7mopdzdsFhv8NexEgRDHMxUSNREbh1bwNZwBsFblmfu/a4a6AEENYO5i3AOoEWeEUCF4MOOxBDMQAOk99OJALA2u80sBCwWGBZWG/yRwMaCAbBIAsQTJT3gea1OWfNeaPzvjoHEI85rA8ObtB1v7cIdJkIHgkh9AXpocy0LJjIKvB2wPpZB0v3wkrw5jdNEjeYeMhFX3BAyfn2ke9NUrgB9LrrcZcGJFCld4fWNddXbvbWfWzGR6xJFZsBGh0cBh3bBIxIEGTQ3W0h4NuDaSAzyAxCmGq11Vzf5uaa1aG8p+WFtrEYQGwvjICJkAEqvC+YNmcmMlMNvEaCdrcbyUvQAWDTjVuESHObM6cPGWHmzDwLaEtmzG9Z3qF1zUpXmuuZBb1z4bqeNC6f0WE1NtUTwHzEloiy3BvFisy0sYoLlQtT6XW15md2Qf9SY+2Ngfdca/TMSm/9ewz+/Boc/It45h/i4kSTsKw90SQJsPTvjSZbkWemDW7qTRZ0JEYJWSKxZJ7xmf6M224MzMzbX1s8F1YugjtvMg6eErt/4/z1jUrz1rXUKxnZC2zIg2mdBTK1mFUOKC1fOt/48kdzVixIz86Nij+eEacvpJWyZJ5xy7th8VzjjpuMJfMCW58QL73ekXPVlhsyE+vyzFiplJyauEIyrGIquruMq7qTxk+dcB495rzyTzFepCUWLIFv/kBg081Gd55WUk1IDGFTS89K++TDYxddzKnWcbluHd450xgdh7EGrOo1rr868PMTzqWJRGZ2d8oB/xpL33Xnxl2rjeNn4blXRXduzJ4B5y+28kWscAwXl+yeR654FFZPHoUb710YuPeDOUdPO48di1xptKpeEeHqOcYXNwQKGd88EDk3mqxtxPSfGRlsXRtYt8z4ytPOH/7eqpg1Aso7fYKgK4NPrMpYvsC4/poMA34yVJIQC3sCD9yecdsNyaV5yPj6ryJnR1PAvSNP4J+/1cgDfLbfePaMGGtM7Qdyl12WmKOmXgKKAp54vmBRTxfLrjE+tSYjBPjRM5FrrzIeuD2jf2lLzw8vN4JlfPVp581LsO1DgXv7jSzAiXPw/d+JiYLpjsu26Yfjf5O0rF5WoxsNT9G/bX0XKxakmPjlSee6HlizJJXSX7/oRDc+vjKR+f2wODcKd78/gR8/C9uedF44myJxmhh4OY/ipMQyqaWxmjn95TfEroMFOzbkvG+RceeqViPx1Aln1yEnOow1AnffHCpJAJ5/Vex4UvzptZRdY/O/1dJIS/NkcNmR6MTYah6qzseA4TfFtw4UvHBW1bc/O+7sPhwZHYf/jMODh5yfPudVbXj2TAJ/8XxrOZagNamj4Ei2/GNfuyRxh8t6BG2l15up+MIVODEiFr8rcPS0+O6RBF6mrrEGHHtFzOo2Lo7Dl37hvPQ6mNV6R9JYKgnYWcE37K5HlE2OT/5A0udaPUBHH+BQOMzuNsYLuDyZflTW+fTcmJFDHhJhaZqewMuewXDxcDR9IYyPN6Jj+6K4MF2vV8qBtZJScqVRNi6lpGONVJis5mpKi1WbgwsY+zIsBpcR8mzIZfuTRVZrtdu9odrptR/Xx5XONXJqBmCN0P6YMUQq9WJiwt0Je102WHdbpxSqydMObBWYdwDWLVcqcIMYe3NPjg0Ht84od0Ajju1w2XCr9e6QoqM9V23ZtnmI6cfAMMb9AY0YEHdb6oobEh4y3H3Ize6LsmGvN5IdUnhttdQ9UVrfLk/ljWEZ9wXsqAdQk1EA+O22GcgdZTke/bAs3OPY4HSdcB20HhvVtTMu0jmI8ekAhz2IICj2hKpNqI60NcuIRUHEej1quzubXa2tmZhenrfZmv3YYQ9ipDAIgvHptmblccuDjdRcmjFpWbDi/9ycZjZkRbk5jYztai/AUwiUx+qdEQB/m+25i9lxyvbcjrg45Lmd0uT/3p7/Fw6ODf+WO019AAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDI0LTEyLTAyVDIxOjU2OjQ4KzAwOjAwMVpslgAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyNC0xMi0wMlQyMTo1Njo0OCswMDowMEAH1CoAAAAodEVYdGRhdGU6dGltZXN0YW1wADIwMjQtMTItMDJUMjE6NTY6NTMrMDA6MDDZv6GRAAAAAElFTkSuQmCC`;export{i as n,r as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{s as e}from"./rolldown-runtime-
|
|
1
|
+
import{s as e}from"./rolldown-runtime-Bjp52BOI.js";import{i as t}from"./errors-BQ3N-RVt-CZPAWCgC.js";import{t as n}from"./lib-DGtzi2DK.js";var r=e(n(),1);function i(e){return{name:e.metadata?.shortName||e.name||``,universalLink:e.mobile.universal,deepLink:e.mobile.native}}function a(e,n){let a=i(n);if(r.isMobile&&r.isAndroid&&a.universalLink)return p(a.universalLink,e);if(a.deepLink)return f(a.deepLink,e);if(a.universalLink)return p(a.universalLink,e);throw new t(`Unsupported wallet ${n.id}`)}function o(e,t){let n=i(t);if(n.universalLink)return p(n.universalLink,e)}var s=`WALLETCONNECT_DEEPLINK_CHOICE`;function c(){try{localStorage.removeItem(s)}catch{}}function l({href:e,name:t}){try{localStorage.setItem(s,JSON.stringify({href:e,name:t}))}catch{}}function u(){try{localStorage.removeItem(s)}catch{}}function d(e){return e.startsWith(`http://`)||e.startsWith(`https://`)}function f(e,t){if(d(e))return p(e,t);let n=e;return n.includes(`://`)||(n=e.replaceAll(`/`,``).replaceAll(`:`,``),n=`${n}://`),n.endsWith(`/`)||(n=`${n}/`),{redirect:`${n}wc?uri=${encodeURIComponent(t)}`,href:n}}function p(e,t){if(!d(e))return f(e,t);let n=e;return n.endsWith(`/`)||(n=`${n}/`),{redirect:`${n}wc?uri=${encodeURIComponent(t)}`,href:n}}function m(e,t){window.open(e,t,`noreferrer noopener`)}export{o as a,u as i,m as n,c as o,a as r,l as t};
|