@acedatacloud/nexior 3.367.1 → 3.367.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{ApiCodeButton-0y91ZmDI.js → ApiCodeButton-COttFgh2.js} +1 -1
- package/dist/assets/{ApiCodeDialog-DZUzlxQU.js → ApiCodeDialog-DsffRMtL.js} +1 -1
- package/dist/assets/{Artifacts-B5S2Mv4W.js → Artifacts-BIVhU40h.js} +1 -1
- package/dist/assets/{AskUserQuestionCard-Bz5Pu48y.js → AskUserQuestionCard-Cl2w3_uO.js} +1 -1
- package/dist/assets/{AudioPreview-iExrnAWH.js → AudioPreview-LP7NUFmx.js} +1 -1
- package/dist/assets/{Auth-DmcR5J0z.js → Auth-C-Ghtu93.js} +1 -1
- package/dist/assets/{Bare-C4hB2DNE.js → Bare-vC4xRRYk.js} +1 -1
- package/dist/assets/{BotPlaceholder-Ckt-l7zX.js → BotPlaceholder-CC_Edbls.js} +1 -1
- package/dist/assets/{BottomFooter-8i60Fxds.js → BottomFooter-Ds-auF8K.js} +1 -1
- package/dist/assets/{BrowseConnectors-D0Jav2wP.js → BrowseConnectors-B4V6DJNw.js} +1 -1
- package/dist/assets/{BrowserPairingDialog-Bjk4gkWX.js → BrowserPairingDialog-B9ajoMIv.js} +1 -1
- package/dist/assets/{Callback-DkNUOw74.js → Callback-9EH5VkSV.js} +1 -1
- package/dist/assets/{CodeSnippet-ClbyOjlk.js → CodeSnippet-B86fx8RC.js} +1 -1
- package/dist/assets/{Console-sg_2yG7l.js → Console-DlH3NLHt.js} +1 -1
- package/dist/assets/{Conversation-d_uJbvZc.js → Conversation-CkZNguCC.js} +1 -1
- package/dist/assets/{Conversation-Cv60RUNC.js → Conversation-TrJI-M_E.js} +1 -1
- package/dist/assets/{CopyToClipboard-b_INL3h6.js → CopyToClipboard-DpUrgAAx.js} +1 -1
- package/dist/assets/{Detail-DAmh0ySj.js → Detail-DqN6zlBi.js} +1 -1
- package/dist/assets/{Extra-CTiC_hpI.js → Extra-CXYqdiZx.js} +1 -1
- package/dist/assets/{FilePreview-xhsKBu8J.js → FilePreview-C3vFeL9V.js} +1 -1
- package/dist/assets/{Hailuo-DBLz21B9.js → Hailuo-C_IbuM3u.js} +1 -1
- package/dist/assets/{History-Cats5C7Z.js → History-D1G-IQNx.js} +1 -1
- package/dist/assets/{ImagePreview-DkitBzQz.js → ImagePreview-CW8yYgYB.js} +1 -1
- package/dist/assets/{ImageWrapper-BAIRHszj.js → ImageWrapper-B_W9Z0VL.js} +1 -1
- package/dist/assets/{Index-D5mGAUJP.js → Index-7KswQeDZ.js} +1 -1
- package/dist/assets/{Index-DYG_3tKb.js → Index-9c024aJ6.js} +1 -1
- package/dist/assets/{Index-DQ_055LO.js → Index-B7-Vqd5t.js} +1 -1
- package/dist/assets/{Index-DEMKkT3T.js → Index-B7IAZTzU.js} +1 -1
- package/dist/assets/{Index-B_6YBDjN.js → Index-BF_YGR-S.js} +1 -1
- package/dist/assets/{Index-BWP3oP1e.js → Index-BHPR-9Rd.js} +1 -1
- package/dist/assets/{Index-CxKjwDMI.js → Index-BNZPKIma.js} +1 -1
- package/dist/assets/{Index-C4B_N_pr2.js → Index-BNaKZ3gJ2.js} +1 -1
- package/dist/assets/{Index-CO1UOJdB.js → Index-BQ5VpmU3.js} +1 -1
- package/dist/assets/{Index-CtWNn7I7.js → Index-Bo8gFaRi.js} +1 -1
- package/dist/assets/{Index-6WUB-lzo.js → Index-BpdCo-21.js} +1 -1
- package/dist/assets/{Index-Bb_emfzh.js → Index-C1Fe99ZM.js} +1 -1
- package/dist/assets/{Index-DknDARJo.js → Index-C4GYU4kM.js} +1 -1
- package/dist/assets/{Index-osl2Te9l.js → Index-CayE1Gs8.js} +1 -1
- package/dist/assets/{Index-oziEeOWe.js → Index-CblBdfGW.js} +1 -1
- package/dist/assets/{Index-DV1Avm59.js → Index-CeDXaQ-p.js} +1 -1
- package/dist/assets/{Index-CjYVfEiS.js → Index-CmxhQGlH.js} +1 -1
- package/dist/assets/{Index-M9dwijWV.js → Index-CouxTSNZ.js} +1 -1
- package/dist/assets/{Index-DVUgzUr4.js → Index-Cxw58CPT.js} +1 -1
- package/dist/assets/{Index-BhhAhqBi.js → Index-D0-03Hvg.js} +1 -1
- package/dist/assets/{Index-Oi4wKpNW.js → Index-D0nUdb3K.js} +1 -1
- package/dist/assets/{Index-BzfOFA4a.js → Index-D9GBv581.js} +1 -1
- package/dist/assets/{Index-DF-NI3il.js → Index-DDKZEA1C.js} +1 -1
- package/dist/assets/{Index-zxCuqaZ5.js → Index-DDsIlS41.js} +1 -1
- package/dist/assets/{Index-DgirOE6_.js → Index-DL2eg6C0.js} +1 -1
- package/dist/assets/{Index-B3US1zHr.js → Index-D_d0kMvj.js} +1 -1
- package/dist/assets/{Index-Bth_AjSz.js → Index-Dir9DAUH.js} +1 -1
- package/dist/assets/{Index-DdqDLjZ3.js → Index-DjQ6dYB4.js} +1 -1
- package/dist/assets/{Index-Dm6PI_0q.js → Index-DruaK_AN.js} +1 -1
- package/dist/assets/{Index-jyo-5Xba.js → Index-Drv5Zz3u.js} +1 -1
- package/dist/assets/{Index-Bhpy-LoS.js → Index-DtNLL8Ne.js} +1 -1
- package/dist/assets/{Index-B55i2Khp.js → Index-Dx8Acve2.js} +1 -1
- package/dist/assets/{Index-u7EerdR2.js → Index-bri81HWb.js} +1 -1
- package/dist/assets/{Index-CtLSBUXX.js → Index-gheVcqfq.js} +1 -1
- package/dist/assets/{Index-B5PAIcjb.js → Index-rY1otLxz.js} +1 -1
- package/dist/assets/{Index-BjjKscfm.js → Index-xgEkrNLy.js} +1 -1
- package/dist/assets/{Index-DsXDZuK_.js → Index-zc9bNoXb.js} +1 -1
- package/dist/assets/{Invitees-CaWbYa_p.js → Invitees-CObBvUgi.js} +1 -1
- package/dist/assets/{List-ZHEaUoLL.js → List-BWk4piSH.js} +1 -1
- package/dist/assets/{List-CjUkkvM_.js → List-BczNNPBK.js} +1 -1
- package/dist/assets/{List-DTonlO_A.js → List-Cy9SxO5J.js} +1 -1
- package/dist/assets/{LocalTools-D-QAeYBr.js → LocalTools-CAdwPq4V.js} +1 -1
- package/dist/assets/{LocalTools-zbECYIha.js → LocalTools-DOnwxer9.js} +1 -1
- package/dist/assets/{Logo-DQ4THiss.js → Logo-DTQjOdyW.js} +1 -1
- package/dist/assets/{Main-B3LDNr3Z.js → Main-DGWWzzrS.js} +1 -1
- package/dist/assets/{Message-DTxF3H7A.js → Message-CVI5GFGW.js} +1 -1
- package/dist/assets/{Model-Bu_BS8Vx.js → Model-C_Pwh2RB.js} +1 -1
- package/dist/assets/{Navigator-Ci2-AZ1d.js → Navigator-u8kZ0d1f.js} +3 -3
- package/dist/assets/{NotFound-DkTX3yEJ.js → NotFound-tEKkZWnT.js} +1 -1
- package/dist/assets/{PageHeader-Bdkuv6Us.js → PageHeader-BzGclVTM.js} +1 -1
- package/dist/assets/{Pay-CU6LMha4.js → Pay-Do1FuC3J.js} +1 -1
- package/dist/assets/{Player-fZlu6fSt.js → Player-B0qKdyoe.js} +1 -1
- package/dist/assets/{Poivelle-CXZyBAyj.js → Poivelle-DqHGKr5R.js} +1 -1
- package/dist/assets/{RealtimeCall-D09Rfe3g.js → RealtimeCall-BKSNKBYm.js} +1 -1
- package/dist/assets/{ReportButton-C8TNdgFb.js → ReportButton-DRaakXvZ.js} +1 -1
- package/dist/assets/{ReportDialog-XfEbkb5H.js → ReportDialog-DytCawN6.js} +1 -1
- package/dist/assets/{ScenarioPaymentMode-I2LiUoDQ.js → ScenarioPaymentMode-OqLUCR7u.js} +1 -1
- package/dist/assets/{ScheduledTasks-4BCoXQN8.js → ScheduledTasks-dQLVMfv-.js} +1 -1
- package/dist/assets/{ServicePricingSummary-sOw4h4Xv.js → ServicePricingSummary-BM6vSOWv.js} +1 -1
- package/dist/assets/ShowcaseDetailDialog-DlwW14g1.css +1 -0
- package/dist/assets/ShowcaseDetailDialog-VCyw1l1t.js +1 -0
- package/dist/assets/{ShowcaseGrid-C5SZsF1c.js → ShowcaseGrid-mtD3qgtE.js} +1 -1
- package/dist/assets/{ShowcaseResultTabs-DWP3P1OW.js → ShowcaseResultTabs-CUyYGgjU.js} +1 -1
- package/dist/assets/{SolanaWalletPickerDialog-NqB3Oq-6.js → SolanaWalletPickerDialog-Bg_XivGe.js} +1 -1
- package/dist/assets/{Status-XjwNo7Js.js → Status-DYPsi5Jw.js} +1 -1
- package/dist/assets/{Subscribe-ibZaVFfM.js → Subscribe-DBwQBnZm.js} +1 -1
- package/dist/assets/{TabSwitcher-CcuM4DZl.js → TabSwitcher-QWPyUh55.js} +1 -1
- package/dist/assets/{Tts-BoLv4Cov.js → Tts-RVmeRwrD.js} +1 -1
- package/dist/assets/{VideoPlayer-DKc2OEmb.js → VideoPlayer-CaBeu7to.js} +1 -1
- package/dist/assets/{VideoPreview-B93Npx0e.js → VideoPreview-CYkNPuRj.js} +1 -1
- package/dist/assets/arrow-down-DX92ny1X.js +1 -0
- package/dist/assets/{arrow-down-wide-narrow-CjVIhfca.js → arrow-down-wide-narrow-BH3BfiRs.js} +1 -1
- package/dist/assets/arrow-left-CkyHsHow.js +1 -0
- package/dist/assets/arrow-right-BJbSSvJ0.js +1 -0
- package/dist/assets/arrow-up-DCxXdRAC.js +1 -0
- package/dist/assets/{authorizeFlow-CKLZjZwe.js → authorizeFlow-pMSHZiKG.js} +1 -1
- package/dist/assets/{avatar-DJjvsMOM.js → avatar-DkcVdpv2.js} +1 -1
- package/dist/assets/{basic-D6RUJpWK.js → basic-BrmA66cj.js} +1 -1
- package/dist/assets/{book-open-Bb4veJ9H.js → book-open-C_ueiu-7.js} +1 -1
- package/dist/assets/{box-CmUpezHl.js → box-CK8Q8K3k.js} +1 -1
- package/dist/assets/{boxes-DH6uKZ67.js → boxes-DaXPM6R4.js} +1 -1
- package/dist/assets/{brain-WCR_BF1T.js → brain-BqAe7ckb.js} +1 -1
- package/dist/assets/{chart-no-axes-combined-BbYuF4BD.js → chart-no-axes-combined-wVsaaoUb.js} +1 -1
- package/dist/assets/{chat-C7uyvLoU.js → chat-D4EXIUuT.js} +1 -1
- package/dist/assets/check-C5QT0aqX.js +1 -0
- package/dist/assets/chevron-down-DtfhJUg5.js +1 -0
- package/dist/assets/chevron-right-BpEpvbRz.js +1 -0
- package/dist/assets/{circle-alert-Bt0PCPbE.js → circle-alert-BBdkRZMI.js} +1 -1
- package/dist/assets/circle-check-Dl-uxCgL.js +1 -0
- package/dist/assets/{circle-question-mark-DBUZlkWm.js → circle-question-mark-XsPVljRO.js} +1 -1
- package/dist/assets/{clipboard-list-FT0B7KW7.js → clipboard-list-GBfGExfY.js} +1 -1
- package/dist/assets/clock-BIk0gliD.js +1 -0
- package/dist/assets/code-CszxkgkT.js +1 -0
- package/dist/assets/{codingBridge-BFLiVLeE.js → codingBridge-Ds6ajOwX.js} +1 -1
- package/dist/assets/{coins-CFYLyBP6.js → coins-D-lLvSAk.js} +1 -1
- package/dist/assets/{copy-Cix8xw3o.js → copy-C3ih32SC.js} +1 -1
- package/dist/assets/{createTaskActions-BYt2vlwG.js → createTaskActions-BePlr06O.js} +1 -1
- package/dist/assets/{date-picker-qu7nMTj7.js → date-picker-D8mMqoO_.js} +1 -1
- package/dist/assets/{digitalhuman-C6vNaTVM.js → digitalhuman-BzuK0LbP.js} +1 -1
- package/dist/assets/{dollar-sign-SvRnwJNN.js → dollar-sign-DfAJ7PnP.js} +1 -1
- package/dist/assets/{download-PHnlxa9E.js → download-BDqW4GdI.js} +1 -1
- package/dist/assets/{drawer-Cj-FR2bV.js → drawer-Bs-px8rV.js} +1 -1
- package/dist/assets/{dropdown-Szm2aqS3.js → dropdown-By0tJCCL.js} +1 -1
- package/dist/assets/{dropdown-DAqIRPj_.js → dropdown-C4JYy1mf.js} +1 -1
- package/dist/assets/{ellipsis-BwmSdENx.js → ellipsis-BSF63Pr6.js} +1 -1
- package/dist/assets/{esm-D5ibRrr9.js → esm-B6sxkWWp.js} +2 -2
- package/dist/assets/{external-link-Bd8w-Z3E.js → external-link-2oBDlN-W.js} +1 -1
- package/dist/assets/{eye-BqDWtT8R.js → eye-Cke5Dz5k.js} +1 -1
- package/dist/assets/{file-BFpYT5J4.js → file-CHmDlQOR.js} +1 -1
- package/dist/assets/{file-output-3730qHHX.js → file-output-BmU7uLbG.js} +1 -1
- package/dist/assets/{file-text-Mfb6sGFK.js → file-text-Dqz0sa4Y.js} +1 -1
- package/dist/assets/{fish-CIUxVySQ.js → fish-DZXjPQD2.js} +1 -1
- package/dist/assets/{flux-CrhuLZpX.js → flux-CErhuzPg.js} +1 -1
- package/dist/assets/{folder-JUFFSCH3.js → folder-wEyyZNA3.js} +1 -1
- package/dist/assets/gauge-Bbsj7bwT.js +1 -0
- package/dist/assets/{generationInput-DT_KfPsx.js → generationInput-qrYUjgVF.js} +1 -1
- package/dist/assets/{globe-BgkIewH0.js → globe-C2PQZy46.js} +1 -1
- package/dist/assets/{grokvideo-DukS8CRt.js → grokvideo-sQ0sRyZm.js} +1 -1
- package/dist/assets/{hailuo-BL1_zZZ2.js → hailuo-Cocm4Vbc.js} +1 -1
- package/dist/assets/{headphones-S-U2nqdW.js → headphones-GIlR2Oiw.js} +1 -1
- package/dist/assets/{history-BW4IRqnK.js → history-CvBx2-32.js} +1 -1
- package/dist/assets/{house-P_iMDnsY.js → house-CSabWjeh.js} +1 -1
- package/dist/assets/{image-DP9OoNQA.js → image-BEMUVXib.js} +1 -1
- package/dist/assets/{index-ZgL-Sngk.js → index-Cxnu8Cai.js} +3 -3
- package/dist/assets/{index.es-xxt9TEy9.js → index.es-UN1oLyXR.js} +1 -1
- package/dist/assets/{info-6KLCmMcD.js → info-GaHinJWE.js} +1 -1
- package/dist/assets/{input-number-C12vdbYv.js → input-number-ekvKm-AN.js} +1 -1
- package/dist/assets/{key-round-DQMDzeSF.js → key-round-CfWUX322.js} +1 -1
- package/dist/assets/{kling-Chm_w30a.js → kling-ws-2lh8p.js} +1 -1
- package/dist/assets/{languages-CTneJs7a.js → languages-EmOgIEqS.js} +1 -1
- package/dist/assets/{laptop-CQIaQBhE.js → laptop-Djw_GUFC.js} +1 -1
- package/dist/assets/{lightbulb-DEfx2FHk.js → lightbulb-gGhM83XW.js} +1 -1
- package/dist/assets/{link-NZ5S08SD.js → link-DtMSQQDN.js} +1 -1
- package/dist/assets/loader-circle-K7IG_yY4.js +1 -0
- package/dist/assets/{lock-D_dkt0jZ.js → lock-BPWoQQI4.js} +1 -1
- package/dist/assets/{luma-WwjcD5LA.js → luma-BpG1v5db.js} +1 -1
- package/dist/assets/{maestro-C4jkuejG.js → maestro-BTtwep_z.js} +1 -1
- package/dist/assets/{mail-au9OcK_k.js → mail-BSAm0Bud.js} +1 -1
- package/dist/assets/{message-circle-DvMfOrJn.js → message-circle-Dxzj3bj8.js} +1 -1
- package/dist/assets/{mic-BoWsiakh.js → mic-CcbScHEk.js} +1 -1
- package/dist/assets/{midjourney-DrVLYqOd.js → midjourney-BUIPMUnr.js} +1 -1
- package/dist/assets/{minimax-BlaTNP64.js → minimax-Bsg17MMM.js} +1 -1
- package/dist/assets/{monitor-ByPEDkMx.js → monitor-BidDvVm_.js} +1 -1
- package/dist/assets/{mouse-pointer-2-T1wJeqmZ.js → mouse-pointer-2-B8SQlucd.js} +1 -1
- package/dist/assets/music-2-adjkHTtE.js +1 -0
- package/dist/assets/{nanobanana-BT3B5Gvc.js → nanobanana-CIfx4Who.js} +1 -1
- package/dist/assets/{omni-DswjSsmZ.js → omni-D592xEHJ.js} +1 -1
- package/dist/assets/{openaiimage-n2nz_OWF.js → openaiimage-Biw2R3MI.js} +1 -1
- package/dist/assets/{pagination-BtnijNAg.js → pagination-B-S7rzCK.js} +1 -1
- package/dist/assets/{pagination-Sdi1lOOd.js → pagination-CC9WpoPG.js} +1 -1
- package/dist/assets/{pagination-BSs64OGk.js → pagination-PI-pnQFZ.js} +1 -1
- package/dist/assets/{palette-BahmLZzd.js → palette-DsO2SPV_.js} +1 -1
- package/dist/assets/{paperclip-BvDkJrIL.js → paperclip-D8EV7sDJ.js} +1 -1
- package/dist/assets/{pause-B3pPF2Ht.js → pause-14z-8JrA.js} +1 -1
- package/dist/assets/{pencil-BSHKCRAv.js → pencil-BDTYIowf.js} +1 -1
- package/dist/assets/{pika-gwUfm_Fd.js → pika-D7vahg9G.js} +1 -1
- package/dist/assets/{pixverse-CF2L6GIg.js → pixverse-7-E1_x_o.js} +1 -1
- package/dist/assets/play-Dzeoyxfz.js +1 -0
- package/dist/assets/{plug-BwND3hAa.js → plug-Dq-l25ZW.js} +1 -1
- package/dist/assets/plus-rcng4d2o.js +1 -0
- package/dist/assets/{poivelle-HVXaxx_2.js → poivelle-D0hY-6hn.js} +1 -1
- package/dist/assets/{popover-CFDzwa24.js → popover-xMx8OoA7.js} +1 -1
- package/dist/assets/{producer-DT0Myx30.js → producer-CD9Eddgu.js} +1 -1
- package/dist/assets/{qrart-B6lxomGa.js → qrart-BJvu2ZYe.js} +1 -1
- package/dist/assets/{qwenimage-CMbgYleN.js → qwenimage-Dq-YyEgN.js} +1 -1
- package/dist/assets/{realtime-CZrlMbLE.js → realtime-Cyft2lCl.js} +1 -1
- package/dist/assets/{refresh-cw-CSuowut3.js → refresh-cw-hadrdulp.js} +1 -1
- package/dist/assets/rotate-ccw-DEtAfxZj.js +1 -0
- package/dist/assets/rotate-cw-DN0VV-vr.js +1 -0
- package/dist/assets/search-CGU6CV7g.js +1 -0
- package/dist/assets/{seedance-DBGuTj5X.js → seedance-Iaqop4mE.js} +1 -1
- package/dist/assets/{seedream-BqLQ4MPY.js → seedream-BejhWWRl.js} +1 -1
- package/dist/assets/{select-BH6TGdbU.js → select-8-kd2VyH.js} +1 -1
- package/dist/assets/{serp-mhIZVc-s.js → serp-zoJfFk2R.js} +1 -1
- package/dist/assets/{shield-BPmcux3l.js → shield-BNrlcH6z.js} +1 -1
- package/dist/assets/{showcase-CMYuiOVw.js → showcase-DaHpVQwT.js} +1 -1
- package/dist/assets/{showcaseRecreateMixin-D07tsJzV.js → showcaseRecreateMixin-O3d8pn1W.js} +1 -1
- package/dist/assets/{shuffle-CD6bV3X2.js → shuffle-BCPA93IP.js} +1 -1
- package/dist/assets/{siteBanner-D8LBiWVW.js → siteBanner-D7smBuBE.js} +1 -1
- package/dist/assets/{slider-DpkkSMm_.js → slider-eSIQ0FcJ.js} +1 -1
- package/dist/assets/{solana-wallets-C9pLPLtH.js → solana-wallets-Cnh6hE-y.js} +2 -2
- package/dist/assets/{sora-Dj_pYNR6.js → sora-CoModB3z.js} +1 -1
- package/dist/assets/{sparkles-Cxcp0ldh.js → sparkles-C2Padqdc.js} +1 -1
- package/dist/assets/square-C9OJLT1g.js +1 -0
- package/dist/assets/{store-B3yAOyZj.js → store-CUjMtA69.js} +1 -1
- package/dist/assets/{suno-BbkSUxR3.js → suno-D9NQTl5t.js} +1 -1
- package/dist/assets/{switch-TOscE6yZ.js → switch-DiUDO8o3.js} +1 -1
- package/dist/assets/{table--9HPvo6R.js → table-BUXPszeH.js} +1 -1
- package/dist/assets/{tag-DETuEPRp.js → tag-erzhWN4o.js} +1 -1
- package/dist/assets/terminal-C8Xohw9i.js +1 -0
- package/dist/assets/{time-picker-D48q0mvr.js → time-picker-BcVh8yzD.js} +1 -1
- package/dist/assets/{tooltip-Br2j6riA.js → tooltip-CHqcylXx.js} +1 -1
- package/dist/assets/{trash-2-BwD47HPA.js → trash-2-TOSJlrQC.js} +1 -1
- package/dist/assets/{triangle-alert-DXtYQCtP.js → triangle-alert-uTVBcsrd.js} +1 -1
- package/dist/assets/{upload-CjAmWnJO.js → upload-BMfV8Ire.js} +1 -1
- package/dist/assets/user-BTZ6pSuR.js +1 -0
- package/dist/assets/{veo-CG7Gvh8G.js → veo-DWvZVn2O.js} +1 -1
- package/dist/assets/{video-3E4DGfFY.js → video-DCnZdfA4.js} +1 -1
- package/dist/assets/{volume-2-qLy8pVJH.js → volume-2-F_P81zVh.js} +1 -1
- package/dist/assets/{wallet-DMn-aTWa.js → wallet-CBb5pOeH.js} +1 -1
- package/dist/assets/{wan-CH8vibyu.js → wan-Cogh00LH.js} +1 -1
- package/dist/assets/{wand-sparkles-CsIjUWGj.js → wand-sparkles-CjbeD1Xg.js} +1 -1
- package/dist/assets/{web-DdcCjInq.js → web-C3mx6wY9.js} +1 -1
- package/dist/assets/{webextrator-CBof90Y0.js → webextrator-BL6wV0m1.js} +1 -1
- package/dist/assets/{zap-B1tgGWX3.js → zap-DtfcYx1O.js} +1 -1
- package/dist/index.html +1 -1
- package/package.json +1 -1
- package/dist/assets/ShowcaseDetailDialog-0r03PHZQ.js +0 -1
- package/dist/assets/ShowcaseDetailDialog-BQ_XnOOz.css +0 -1
- package/dist/assets/arrow-down-DnRxCHng.js +0 -1
- package/dist/assets/arrow-left-CCTyf2E5.js +0 -1
- package/dist/assets/arrow-right-C3ehhsUY.js +0 -1
- package/dist/assets/arrow-up-C4gv61Ek.js +0 -1
- package/dist/assets/check-Czwo7-vj.js +0 -1
- package/dist/assets/chevron-down-ygQGkXbe.js +0 -1
- package/dist/assets/chevron-right-CiVFwPib.js +0 -1
- package/dist/assets/circle-check-DGztZnzp.js +0 -1
- package/dist/assets/clock-auxp3wRO.js +0 -1
- package/dist/assets/code-BC5AxncC.js +0 -1
- package/dist/assets/gauge-Cb1EEu8V.js +0 -1
- package/dist/assets/loader-circle-C0AfogFq.js +0 -1
- package/dist/assets/music-2-aNhzvV62.js +0 -1
- package/dist/assets/play-CtoT2CaT.js +0 -1
- package/dist/assets/plus-BJSvOiJY.js +0 -1
- package/dist/assets/rotate-ccw-6jY7AY3c.js +0 -1
- package/dist/assets/rotate-cw-lDsDH4VC.js +0 -1
- package/dist/assets/search-CGiFzP3Q.js +0 -1
- package/dist/assets/square-R2P9QtBK.js +0 -1
- package/dist/assets/terminal-CHzkQftY.js +0 -1
- package/dist/assets/user-CkcEovV9.js +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/secp256k1-ClVDFbCG.js","assets/rolldown-runtime--c01j_DQ.js","assets/utils-Br0svb7K.js","assets/basic-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/secp256k1-ClVDFbCG.js","assets/rolldown-runtime--c01j_DQ.js","assets/utils-Br0svb7K.js","assets/basic-BrmA66cj.js","assets/index-Cxnu8Cai.js","assets/preload-helper-zJ_50EbN.js","assets/i18n-9CWVvd05.js","assets/vendor-chart-Dw-P17PN.js","assets/vendor-axios-Ck2ffRoh.js","assets/constants-B0wcHJpW.js","assets/dist-COcOCb7M.js","assets/icon-CDmWyIgD.js","assets/install-Cn-SLM3u.js","assets/en-CpRrS3Ur.js","assets/index.browser.esm-CNb4vwx1.js","assets/buffer-CnhyIITQ.js","assets/eventemitter3-CwKRT-4Q.js","assets/__vite-browser-external-Wme9VPc1.js","assets/vendor-dayjs-C9ICuEWn.js","assets/models-CPAfAKlf.js","assets/vendor-vue-CCKiwo0U.js","assets/use-deprecated-BAB4ggjd.js","assets/event-BGnHezxC.js","assets/use-aria-DApzlmKf.js","assets/aria-8oQuUBWy.js","assets/scroll-kDH1KTep.js","assets/vnode-B_FEx-YD.js","assets/debounce-5xtusvLq.js","assets/vendor-vue-router-CQCi0Exn.js","assets/index-BQ6W3K7j.css","assets/lit-Czpkz5lw.js","assets/wui-text-Cn4Xd1Sh.js","assets/ConstantsUtil-CM7Z7qJI.js","assets/index.es-LzqQdC6F.js","assets/ConnectorUtil-CEBYBGCR.js","assets/w3m-modal-BXg-8Jr5.js"])))=>i.map(i=>d[i]);
|
|
2
2
|
import{o as e}from"./rolldown-runtime--c01j_DQ.js";import{t}from"./preload-helper-zJ_50EbN.js";import{a as n,r,t as i}from"./index.browser.esm-CNb4vwx1.js";import{A as a,C as o,E as s,F as c,I as l,M as u,N as d,O as f,P as p,T as m,_ as h,b as g,c as _,d as v,f as y,g as b,h as ee,j as x,k as S,l as C,m as w,p as T,u as E,v as D,w as O,x as k,y as A}from"./ConstantsUtil-CM7Z7qJI.js";import{A as j,B as M,C as N,D as P,E as F,F as I,G as L,H as te,I as ne,J as re,K as ie,L as ae,M as oe,N as se,O as ce,P as le,R as ue,S as de,T as fe,U as pe,V as me,W as he,X as ge,Y as _e,Z as ve,_ as ye,b as be,g as xe,h as Se,j as Ce,k as we,n as Te,q as Ee,r as De,v as Oe,w as ke,x as Ae,y as je,z as Me}from"./index.es-LzqQdC6F.js";import{i as Ne,n as Pe,r as Fe}from"./ConnectorUtil-CEBYBGCR.js";import{a as Ie,c as Le,d as Re,f as ze,h as Be,l as Ve,m as He,n as Ue,t as We,u as Ge}from"./utils-Br0svb7K.js";import{E as Ke,T as qe,b as Je,g as Ye,l as Xe,m as Ze,n as Qe,o as $e,s as et,w as tt,y as nt}from"./esm-XM2jj6jY.js";var rt={validateCaipAddress(e){if(e.split(`:`)?.length!==3)throw Error(`Invalid CAIP Address`);return e},parseCaipAddress(e){let t=e.split(`:`);if(t.length!==3)throw Error(`Invalid CAIP-10 address: ${e}`);let[n,r,i]=t;if(!n||!r||!i)throw Error(`Invalid CAIP-10 address: ${e}`);return{chainNamespace:n,chainId:r,address:i}},parseCaipNetworkId(e){let t=e.split(`:`);if(t.length!==2)throw Error(`Invalid CAIP-2 network id: ${e}`);let[n,r]=t;if(!n||!r)throw Error(`Invalid CAIP-2 network id: ${e}`);return{chainNamespace:n,chainId:r}}},it=e(ve()),at=Object.defineProperty,ot=(e,t,n)=>t in e?at(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,st=(e,t,n)=>ot(e,typeof t==`symbol`?t:t+``,n),ct=class extends _e{constructor(e){super(),this.opts=e,st(this,`protocol`,`wc`),st(this,`version`,2)}},lt=Object.defineProperty,ut=(e,t,n)=>t in e?lt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,dt=(e,t,n)=>ut(e,typeof t==`symbol`?t:t+``,n),ft=class extends _e{constructor(e,t){super(),this.core=e,this.logger=t,dt(this,`records`,new Map)}},pt=class{constructor(e,t){this.logger=e,this.core=t}},mt=class extends _e{constructor(e,t){super(),this.relayer=e,this.logger=t}},ht=class extends _e{constructor(e){super()}},gt=class{constructor(e,t,n,r){this.core=e,this.logger=t,this.name=n}},_t=class extends _e{constructor(e,t){super(),this.relayer=e,this.logger=t}},vt=class extends _e{constructor(e,t){super(),this.core=e,this.logger=t}},yt=class{constructor(e,t,n){this.core=e,this.logger=t,this.store=n}},bt=class{constructor(e,t){this.projectId=e,this.logger=t}},xt=class{constructor(e,t,n){this.core=e,this.logger=t,this.telemetryEnabled=n}},St=Object.defineProperty,Ct=(e,t,n)=>t in e?St(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,wt=(e,t,n)=>Ct(e,typeof t==`symbol`?t:t+``,n),Tt=class{constructor(e){this.opts=e,wt(this,`protocol`,`wc`),wt(this,`version`,2)}},Et=class{constructor(e){this.client=e}},R=ge(),Dt=se(),Ot=oe();function kt(e){if(e.length>=255)throw TypeError(`Alphabet too long`);let t=new Uint8Array(256);for(let e=0;e<t.length;e++)t[e]=255;for(let n=0;n<e.length;n++){let r=e.charAt(n),i=r.charCodeAt(0);if(t[i]!==255)throw TypeError(r+` is ambiguous`);t[i]=n}let n=e.length,r=e.charAt(0),i=Math.log(n)/Math.log(256),a=Math.log(256)/Math.log(n);function o(t){if(t instanceof Uint8Array||(ArrayBuffer.isView(t)?t=new Uint8Array(t.buffer,t.byteOffset,t.byteLength):Array.isArray(t)&&(t=Uint8Array.from(t))),!(t instanceof Uint8Array))throw TypeError(`Expected Uint8Array`);if(t.length===0)return``;let i=0,o=0,s=0,c=t.length;for(;s!==c&&t[s]===0;)s++,i++;let l=(c-s)*a+1>>>0,u=new Uint8Array(l);for(;s!==c;){let e=t[s],r=0;for(let t=l-1;(e!==0||r<o)&&t!==-1;t--,r++)e+=256*u[t]>>>0,u[t]=e%n>>>0,e=e/n>>>0;if(e!==0)throw Error(`Non-zero carry`);o=r,s++}let d=l-o;for(;d!==l&&u[d]===0;)d++;let f=r.repeat(i);for(;d<l;++d)f+=e.charAt(u[d]);return f}function s(e){if(typeof e!=`string`)throw TypeError(`Expected String`);if(e.length===0)return new Uint8Array;let a=0,o=0,s=0;for(;e[a]===r;)o++,a++;let c=(e.length-a)*i+1>>>0,l=new Uint8Array(c);for(;a<e.length;){let r=e.charCodeAt(a);if(r>255)return;let i=t[r];if(i===255)return;let o=0;for(let e=c-1;(i!==0||o<s)&&e!==-1;e--,o++)i+=n*l[e]>>>0,l[e]=i%256>>>0,i=i/256>>>0;if(i!==0)throw Error(`Non-zero carry`);s=o,a++}let u=c-s;for(;u!==c&&l[u]===0;)u++;let d=new Uint8Array(o+(c-u)),f=o;for(;u!==c;)d[f++]=l[u++];return d}function c(e){let t=s(e);if(t)return t;throw Error(`Non-base`+n+` character`)}return{encode:o,decodeUnsafe:s,decode:c}}var At=kt(`123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz`);function jt(e,{strict:t=!0}={}){return!e||typeof e!=`string`?!1:t?/^0x[0-9a-fA-F]*$/.test(e):e.startsWith(`0x`)}function Mt(e){return jt(e,{strict:!1})?Math.ceil((e.length-2)/2):e.length}var Nt=`2.48.8`,Pt={getDocsUrl:({docsBaseUrl:e,docsPath:t=``,docsSlug:n})=>t?`${e??`https://viem.sh`}${t}${n?`#${n}`:``}`:void 0,version:`viem@${Nt}`},Ft=class e extends Error{constructor(t,n={}){let r=n.cause instanceof e?n.cause.details:n.cause?.message?n.cause.message:n.details,i=n.cause instanceof e&&n.cause.docsPath||n.docsPath,a=Pt.getDocsUrl?.({...n,docsPath:i}),o=[t||`An error occurred.`,``,...n.metaMessages?[...n.metaMessages,``]:[],...a?[`Docs: ${a}`]:[],...r?[`Details: ${r}`]:[],...Pt.version?[`Version: ${Pt.version}`]:[]].join(`
|
|
3
3
|
`);super(o,n.cause?{cause:n.cause}:void 0),Object.defineProperty(this,"details",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"docsPath",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"metaMessages",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"shortMessage",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"version",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:`BaseError`}),this.details=r,this.docsPath=i,this.metaMessages=n.metaMessages,this.name=n.name??this.name,this.shortMessage=t,this.version=Nt}walk(e){return It(this,e)}};function It(e,t){return t?.(e)?e:e&&typeof e==`object`&&`cause`in e&&e.cause!==void 0?It(e.cause,t):t?null:e}var Lt=class extends Ft{constructor({size:e,targetSize:t,type:n}){super(`${n.charAt(0).toUpperCase()}${n.slice(1).toLowerCase()} size (${e}) exceeds padding size (${t}).`,{name:`SizeExceedsPaddingSizeError`})}};function Rt(e,{dir:t,size:n=32}={}){return typeof e==`string`?zt(e,{dir:t,size:n}):Bt(e,{dir:t,size:n})}function zt(e,{dir:t,size:n=32}={}){if(n===null)return e;let r=e.replace(`0x`,``);if(r.length>n*2)throw new Lt({size:Math.ceil(r.length/2),targetSize:n,type:`hex`});return`0x${r[t===`right`?`padEnd`:`padStart`](n*2,`0`)}`}function Bt(e,{dir:t,size:n=32}={}){if(n===null)return e;if(e.length>n)throw new Lt({size:e.length,targetSize:n,type:`bytes`});let r=new Uint8Array(n);for(let i=0;i<n;i++){let a=t===`right`;r[a?i:n-i-1]=e[a?i:e.length-i-1]}return r}var Vt=class extends Ft{constructor({max:e,min:t,signed:n,size:r,value:i}){super(`Number "${i}" is not in safe ${r?`${r*8}-bit ${n?`signed`:`unsigned`} `:``}integer range ${e?`(${t} to ${e})`:`(above ${t})`}`,{name:`IntegerOutOfRangeError`})}},Ht=class extends Ft{constructor({givenSize:e,maxSize:t}){super(`Size cannot exceed ${t} bytes. Given size: ${e} bytes.`,{name:`SizeOverflowError`})}};function Ut(e,{size:t}){if(Mt(e)>t)throw new Ht({givenSize:Mt(e),maxSize:t})}var Wt=Array.from({length:256},(e,t)=>t.toString(16).padStart(2,`0`));function Gt(e,t={}){return typeof e==`number`||typeof e==`bigint`?Jt(e,t):typeof e==`string`?Xt(e,t):typeof e==`boolean`?Kt(e,t):qt(e,t)}function Kt(e,t={}){let n=`0x${Number(e)}`;return typeof t.size==`number`?(Ut(n,{size:t.size}),Rt(n,{size:t.size})):n}function qt(e,t={}){let n=``;for(let t=0;t<e.length;t++)n+=Wt[e[t]];let r=`0x${n}`;return typeof t.size==`number`?(Ut(r,{size:t.size}),Rt(r,{dir:`right`,size:t.size})):r}function Jt(e,t={}){let{signed:n,size:r}=t,i=BigInt(e),a;r?a=n?(1n<<BigInt(r)*8n-1n)-1n:2n**(BigInt(r)*8n)-1n:typeof e==`number`&&(a=BigInt(2**53-1));let o=typeof a==`bigint`&&n?-a-1n:0;if(a&&i>a||i<o){let t=typeof e==`bigint`?`n`:``;throw new Vt({max:a?`${a}${t}`:void 0,min:`${o}${t}`,signed:n,size:r,value:`${e}${t}`})}let s=`0x${(n&&i<0?(1n<<BigInt(r*8))+BigInt(i):i).toString(16)}`;return r?Rt(s,{size:r}):s}var Yt=new TextEncoder;function Xt(e,t={}){return qt(Yt.encode(e),t)}var Zt=class extends Map{constructor(e){super(),Object.defineProperty(this,"maxSize",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.maxSize=e}get(e){let t=super.get(e);return super.has(e)&&(super.delete(e),super.set(e,t)),t}set(e,t){if(super.has(e)&&super.delete(e),super.set(e,t),this.maxSize&&this.size>this.maxSize){let e=super.keys().next().value;e!==void 0&&super.delete(e)}return this}},Qt=(e,t,n)=>JSON.stringify(e,(e,n)=>{let r=typeof n==`bigint`?n.toString():n;return typeof t==`function`?t(e,r):r},n),$t={ether:-9,wei:9};function en(e,t=`wei`){return w(e,$t[t])}var tn=e=>{try{let t=new URL(e);return!t.username&&!t.password?e:(t.username=``,t.password=``,t.toString())}catch{return e}},nn=class extends Ft{constructor({body:e,cause:t,details:n,headers:r,status:i,url:a}){super(`HTTP request failed.`,{cause:t,details:n,metaMessages:[i&&`Status: ${i}`,`URL: ${tn(a)}`,e&&`Request body: ${Qt(e)}`].filter(Boolean),name:`HttpRequestError`}),Object.defineProperty(this,"body",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"headers",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"status",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"url",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.body=e,this.headers=r,this.status=i,this.url=a}},rn=class extends Ft{constructor({body:e,error:t,url:n}){super(`RPC Request failed.`,{cause:t,details:t.message,metaMessages:[`URL: ${tn(n)}`,`Request body: ${Qt(e)}`],name:`RpcRequestError`}),Object.defineProperty(this,"code",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"data",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"url",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.code=t.code,this.data=t.data,this.url=n}},an=class extends Ft{constructor({body:e,url:t}){super(`The request took too long to respond.`,{details:`The request timed out.`,metaMessages:[`URL: ${tn(t)}`,`Request body: ${Qt(e)}`],name:`TimeoutError`}),Object.defineProperty(this,"url",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.url=t}},on=-1,sn=class extends Ft{constructor(e,{code:t,docsPath:n,metaMessages:r,name:i,shortMessage:a}){super(a,{cause:e,docsPath:n,metaMessages:r||e?.metaMessages,name:i||`RpcError`}),Object.defineProperty(this,"code",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.name=i||e.name,this.code=e instanceof rn?e.code:t??on}},cn=class extends sn{constructor(e,t){super(e,t),Object.defineProperty(this,"data",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.data=t.data}},ln=class e extends sn{constructor(t){super(t,{code:e.code,name:`ParseRpcError`,shortMessage:`Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.`})}};Object.defineProperty(ln,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32700});var un=class e extends sn{constructor(t){super(t,{code:e.code,name:`InvalidRequestRpcError`,shortMessage:`JSON is not a valid request object.`})}};Object.defineProperty(un,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32600});var dn=class e extends sn{constructor(t,{method:n}={}){super(t,{code:e.code,name:`MethodNotFoundRpcError`,shortMessage:`The method${n?` "${n}"`:``} does not exist / is not available.`})}};Object.defineProperty(dn,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32601});var fn=class e extends sn{constructor(t){super(t,{code:e.code,name:`InvalidParamsRpcError`,shortMessage:[`Invalid parameters were provided to the RPC method.`,`Double check you have provided the correct parameters.`].join(`
|
|
4
4
|
`)})}};Object.defineProperty(fn,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32602});var pn=class e extends sn{constructor(t){super(t,{code:e.code,name:`InternalRpcError`,shortMessage:`An internal error was received.`})}};Object.defineProperty(pn,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32603});var mn=class e extends sn{constructor(t){super(t,{code:e.code,name:`InvalidInputRpcError`,shortMessage:[`Missing or invalid parameters.`,`Double check you have provided the correct parameters.`].join(`
|
|
@@ -15,4 +15,4 @@ ${e.length}`,n=new TextEncoder().encode(t+e);return`0x`+Buffer.from(oo(n)).toStr
|
|
|
15
15
|
Required: ${o.toString()}
|
|
16
16
|
Approved: ${s.toString()}`)),Object.keys(t).forEach(e=>{if(!e.includes(`:`)||r)return;let i=ml(t[e].accounts);i.includes(e)||(r=U(`NON_CONFORMING_NAMESPACES`,`${n} namespaces accounts don't satisfy namespace accounts for ${e}
|
|
17
17
|
Required: ${e}
|
|
18
|
-
Approved: ${i.toString()}`))}),o.forEach(e=>{r||(Yi(i[e].methods,a[e].methods)?Yi(i[e].events,a[e].events)||(r=U(`NON_CONFORMING_NAMESPACES`,`${n} namespaces events don't satisfy namespace events for ${e}`)):r=U(`NON_CONFORMING_NAMESPACES`,`${n} namespaces methods don't satisfy namespace methods for ${e}`))}),r}function ru(e){let t={};return Object.keys(e).forEach(n=>{var r;n.includes(`:`)?t[n]=e[n]:(r=e[n].chains)==null||r.forEach(r=>{t[r]={methods:e[n].methods,events:e[n].events}})}),t}function iu(e){return[...new Set(e.map(e=>e.includes(`:`)?e.split(`:`)[0]:e))]}function au(e){let t={};return Object.keys(e).forEach(n=>{n.includes(`:`)?t[n]=e[n]:ml(e[n].accounts)?.forEach(r=>{t[r]={accounts:e[n].accounts.filter(e=>e.includes(`${r}:`)),methods:e[n].methods,events:e[n].events}})}),t}function ou(e,t){return Ol(e,!1)&&e<=t.max&&e>=t.min}function su(){let e=Vi();return new Promise(t=>{switch(e){case Fi.browser:t(cu());break;case Fi.reactNative:t(lu());break;case Fi.node:t(uu());break;default:t(!0)}})}function cu(){return Bi()&&navigator?.onLine}async function lu(){return Li()&&typeof global<`u`&&global!=null&&global.NetInfo?(await(global==null?void 0:global.NetInfo.fetch()))?.isConnected:!0}function uu(){return!0}function du(e){switch(Vi()){case Fi.browser:fu(e);break;case Fi.reactNative:pu(e);break;case Fi.node:break}}function fu(e){!Li()&&Bi()&&(window.addEventListener(`online`,()=>e(!0)),window.addEventListener(`offline`,()=>e(!1)))}function pu(e){Li()&&typeof global<`u`&&global!=null&&global.NetInfo&&global?.NetInfo.addEventListener(t=>e(t?.isConnected))}var mu={},hu=class{static get(e){return mu[e]}static set(e,t){mu[e]=t}static delete(e){delete mu[e]}},gu=`core`,_u=`wc@2:${gu}:`,vu={name:gu,logger:`error`},yu={database:`:memory:`},bu=`crypto`,xu=`client_ed25519_seed`,Su=R.ONE_DAY,Cu=`keychain`,wu=`messages`,Tu=R.SIX_HOURS,Eu=`publisher`,Du=`relayer`,Ou={message:`relayer_message`,message_ack:`relayer_message_ack`,connect:`relayer_connect`,disconnect:`relayer_disconnect`,error:`relayer_error`,connection_stalled:`relayer_connection_stalled`,transport_closed:`relayer_transport_closed`,publish:`relayer_publish`},ku={payload:`payload`,connect:`connect`,disconnect:`disconnect`,error:`error`},Au=`2.19.1`,G={link_mode:`link_mode`,relay:`relay`},ju={inbound:`inbound`,outbound:`outbound`},Mu=`WALLETCONNECT_CLIENT_ID`,Nu={created:`subscription_created`,deleted:`subscription_deleted`,expired:`subscription_expired`,disabled:`subscription_disabled`,sync:`subscription_sync`,resubscribed:`subscription_resubscribed`};R.THIRTY_DAYS;var Pu=`subscription`;R.FIVE_SECONDS*1e3;var Fu=`pairing`;R.THIRTY_DAYS;var Iu={wc_pairingDelete:{req:{ttl:R.ONE_DAY,prompt:!1,tag:1e3},res:{ttl:R.ONE_DAY,prompt:!1,tag:1001}},wc_pairingPing:{req:{ttl:R.THIRTY_SECONDS,prompt:!1,tag:1002},res:{ttl:R.THIRTY_SECONDS,prompt:!1,tag:1003}},unregistered_method:{req:{ttl:R.ONE_DAY,prompt:!1,tag:0},res:{ttl:R.ONE_DAY,prompt:!1,tag:0}}},Lu={create:`pairing_create`,expire:`pairing_expire`,delete:`pairing_delete`,ping:`pairing_ping`},Ru={created:`history_created`,updated:`history_updated`,deleted:`history_deleted`,sync:`history_sync`},zu=`history`,Bu=`expirer`,Vu={created:`expirer_created`,deleted:`expirer_deleted`,expired:`expirer_expired`,sync:`expirer_sync`};R.ONE_DAY;var Hu=`verify-api`,Uu=`https://verify.walletconnect.com`,Wu=`https://verify.walletconnect.org`,Gu=`${Wu}/v3`,Ku=[Uu,Wu],qu=`echo`,Ju=`https://echo.walletconnect.com`,Yu={pairing_started:`pairing_started`,pairing_uri_validation_success:`pairing_uri_validation_success`,pairing_uri_not_expired:`pairing_uri_not_expired`,store_new_pairing:`store_new_pairing`,subscribing_pairing_topic:`subscribing_pairing_topic`,subscribe_pairing_topic_success:`subscribe_pairing_topic_success`,existing_pairing:`existing_pairing`,pairing_not_expired:`pairing_not_expired`,emit_inactive_pairing:`emit_inactive_pairing`,emit_session_proposal:`emit_session_proposal`,subscribing_to_pairing_topic:`subscribing_to_pairing_topic`},Xu={no_wss_connection:`no_wss_connection`,no_internet_connection:`no_internet_connection`,malformed_pairing_uri:`malformed_pairing_uri`,active_pairing_already_exists:`active_pairing_already_exists`,subscribe_pairing_topic_failure:`subscribe_pairing_topic_failure`,pairing_expired:`pairing_expired`,proposal_expired:`proposal_expired`,proposal_listener_not_found:`proposal_listener_not_found`},Zu={session_approve_started:`session_approve_started`,proposal_not_expired:`proposal_not_expired`,session_namespaces_validation_success:`session_namespaces_validation_success`,create_session_topic:`create_session_topic`,subscribing_session_topic:`subscribing_session_topic`,subscribe_session_topic_success:`subscribe_session_topic_success`,publishing_session_approve:`publishing_session_approve`,session_approve_publish_success:`session_approve_publish_success`,store_session:`store_session`,publishing_session_settle:`publishing_session_settle`,session_settle_publish_success:`session_settle_publish_success`},Qu={no_internet_connection:`no_internet_connection`,no_wss_connection:`no_wss_connection`,proposal_expired:`proposal_expired`,subscribe_session_topic_failure:`subscribe_session_topic_failure`,session_approve_publish_failure:`session_approve_publish_failure`,session_settle_publish_failure:`session_settle_publish_failure`,session_approve_namespace_validation_failure:`session_approve_namespace_validation_failure`,proposal_not_found:`proposal_not_found`},$u={authenticated_session_approve_started:`authenticated_session_approve_started`,authenticated_session_not_expired:`authenticated_session_not_expired`,chains_caip2_compliant:`chains_caip2_compliant`,chains_evm_compliant:`chains_evm_compliant`,create_authenticated_session_topic:`create_authenticated_session_topic`,cacaos_verified:`cacaos_verified`,store_authenticated_session:`store_authenticated_session`,subscribing_authenticated_session_topic:`subscribing_authenticated_session_topic`,subscribe_authenticated_session_topic_success:`subscribe_authenticated_session_topic_success`,publishing_authenticated_session_approve:`publishing_authenticated_session_approve`,authenticated_session_approve_publish_success:`authenticated_session_approve_publish_success`},ed={no_internet_connection:`no_internet_connection`,no_wss_connection:`no_wss_connection`,missing_session_authenticate_request:`missing_session_authenticate_request`,session_authenticate_request_expired:`session_authenticate_request_expired`,chains_caip2_compliant_failure:`chains_caip2_compliant_failure`,chains_evm_compliant_failure:`chains_evm_compliant_failure`,invalid_cacao:`invalid_cacao`,subscribe_authenticated_session_topic_failure:`subscribe_authenticated_session_topic_failure`,authenticated_session_approve_publish_failure:`authenticated_session_approve_publish_failure`,authenticated_session_pending_request_not_found:`authenticated_session_pending_request_not_found`},td=.1,nd=`event-client`,rd=`https://pulse.walletconnect.org/batch`;function id(e,t){if(e.length>=255)throw TypeError(`Alphabet too long`);for(var n=new Uint8Array(256),r=0;r<n.length;r++)n[r]=255;for(var i=0;i<e.length;i++){var a=e.charAt(i),o=a.charCodeAt(0);if(n[o]!==255)throw TypeError(a+` is ambiguous`);n[o]=i}var s=e.length,c=e.charAt(0),l=Math.log(s)/Math.log(256),u=Math.log(256)/Math.log(s);function d(t){if(t instanceof Uint8Array||(ArrayBuffer.isView(t)?t=new Uint8Array(t.buffer,t.byteOffset,t.byteLength):Array.isArray(t)&&(t=Uint8Array.from(t))),!(t instanceof Uint8Array))throw TypeError(`Expected Uint8Array`);if(t.length===0)return``;for(var n=0,r=0,i=0,a=t.length;i!==a&&t[i]===0;)i++,n++;for(var o=(a-i)*u+1>>>0,l=new Uint8Array(o);i!==a;){for(var d=t[i],f=0,p=o-1;(d!==0||f<r)&&p!==-1;p--,f++)d+=256*l[p]>>>0,l[p]=d%s>>>0,d=d/s>>>0;if(d!==0)throw Error(`Non-zero carry`);r=f,i++}for(var m=o-r;m!==o&&l[m]===0;)m++;for(var h=c.repeat(n);m<o;++m)h+=e.charAt(l[m]);return h}function f(e){if(typeof e!=`string`)throw TypeError(`Expected String`);if(e.length===0)return new Uint8Array;var t=0;if(e[t]!==` `){for(var r=0,i=0;e[t]===c;)r++,t++;for(var a=(e.length-t)*l+1>>>0,o=new Uint8Array(a);e[t];){var u=n[e.charCodeAt(t)];if(u===255)return;for(var d=0,f=a-1;(u!==0||d<i)&&f!==-1;f--,d++)u+=s*o[f]>>>0,o[f]=u%256>>>0,u=u/256>>>0;if(u!==0)throw Error(`Non-zero carry`);i=d,t++}if(e[t]!==` `){for(var p=a-i;p!==a&&o[p]===0;)p++;for(var m=new Uint8Array(r+(a-p)),h=r;p!==a;)m[h++]=o[p++];return m}}}function p(e){var n=f(e);if(n)return n;throw Error(`Non-${t} character`)}return{encode:d,decodeUnsafe:f,decode:p}}var ad=id,od=e=>{if(e instanceof Uint8Array&&e.constructor.name===`Uint8Array`)return e;if(e instanceof ArrayBuffer)return new Uint8Array(e);if(ArrayBuffer.isView(e))return new Uint8Array(e.buffer,e.byteOffset,e.byteLength);throw Error(`Unknown type, must be binary type`)},sd=e=>new TextEncoder().encode(e),cd=e=>new TextDecoder().decode(e),ld=class{constructor(e,t,n){this.name=e,this.prefix=t,this.baseEncode=n}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error(`Unknown type, must be binary type`)}},ud=class{constructor(e,t,n){if(this.name=e,this.prefix=t,t.codePointAt(0)===void 0)throw Error(`Invalid prefix character`);this.prefixCodePoint=t.codePointAt(0),this.baseDecode=n}decode(e){if(typeof e==`string`){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error(`Can only multibase decode strings`)}or(e){return fd(this,e)}},dd=class{constructor(e){this.decoders=e}or(e){return fd(this,e)}decode(e){let t=e[0],n=this.decoders[t];if(n)return n.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}},fd=(e,t)=>new dd({...e.decoders||{[e.prefix]:e},...t.decoders||{[t.prefix]:t}}),pd=class{constructor(e,t,n,r){this.name=e,this.prefix=t,this.baseEncode=n,this.baseDecode=r,this.encoder=new ld(e,t,n),this.decoder=new ud(e,t,r)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}},md=({name:e,prefix:t,encode:n,decode:r})=>new pd(e,t,n,r),hd=({prefix:e,name:t,alphabet:n})=>{let{encode:r,decode:i}=ad(n,t);return md({prefix:e,name:t,encode:r,decode:e=>od(i(e))})},gd=(e,t,n,r)=>{let i={};for(let e=0;e<t.length;++e)i[t[e]]=e;let a=e.length;for(;e[a-1]===`=`;)--a;let o=new Uint8Array(a*n/8|0),s=0,c=0,l=0;for(let t=0;t<a;++t){let a=i[e[t]];if(a===void 0)throw SyntaxError(`Non-${r} character`);c=c<<n|a,s+=n,s>=8&&(s-=8,o[l++]=255&c>>s)}if(s>=n||255&c<<8-s)throw SyntaxError(`Unexpected end of data`);return o},_d=(e,t,n)=>{let r=t[t.length-1]===`=`,i=(1<<n)-1,a=``,o=0,s=0;for(let r=0;r<e.length;++r)for(s=s<<8|e[r],o+=8;o>n;)o-=n,a+=t[i&s>>o];if(o&&(a+=t[i&s<<n-o]),r)for(;a.length*n&7;)a+=`=`;return a},vd=({name:e,prefix:t,bitsPerChar:n,alphabet:r})=>md({prefix:t,name:e,encode(e){return _d(e,r,n)},decode(t){return gd(t,r,n,e)}}),yd=md({prefix:`\0`,name:`identity`,encode:e=>cd(e),decode:e=>sd(e)}),bd=Object.freeze({__proto__:null,identity:yd}),xd=vd({prefix:`0`,name:`base2`,alphabet:`01`,bitsPerChar:1}),Sd=Object.freeze({__proto__:null,base2:xd}),Cd=vd({prefix:`7`,name:`base8`,alphabet:`01234567`,bitsPerChar:3}),wd=Object.freeze({__proto__:null,base8:Cd}),Td=hd({prefix:`9`,name:`base10`,alphabet:`0123456789`}),Ed=Object.freeze({__proto__:null,base10:Td}),Dd=vd({prefix:`f`,name:`base16`,alphabet:`0123456789abcdef`,bitsPerChar:4}),Od=vd({prefix:`F`,name:`base16upper`,alphabet:`0123456789ABCDEF`,bitsPerChar:4}),kd=Object.freeze({__proto__:null,base16:Dd,base16upper:Od}),Ad=vd({prefix:`b`,name:`base32`,alphabet:`abcdefghijklmnopqrstuvwxyz234567`,bitsPerChar:5}),jd=vd({prefix:`B`,name:`base32upper`,alphabet:`ABCDEFGHIJKLMNOPQRSTUVWXYZ234567`,bitsPerChar:5}),Md=vd({prefix:`c`,name:`base32pad`,alphabet:`abcdefghijklmnopqrstuvwxyz234567=`,bitsPerChar:5}),Nd=vd({prefix:`C`,name:`base32padupper`,alphabet:`ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=`,bitsPerChar:5}),Pd=vd({prefix:`v`,name:`base32hex`,alphabet:`0123456789abcdefghijklmnopqrstuv`,bitsPerChar:5}),Fd=vd({prefix:`V`,name:`base32hexupper`,alphabet:`0123456789ABCDEFGHIJKLMNOPQRSTUV`,bitsPerChar:5}),Id=vd({prefix:`t`,name:`base32hexpad`,alphabet:`0123456789abcdefghijklmnopqrstuv=`,bitsPerChar:5}),Ld=vd({prefix:`T`,name:`base32hexpadupper`,alphabet:`0123456789ABCDEFGHIJKLMNOPQRSTUV=`,bitsPerChar:5}),Rd=vd({prefix:`h`,name:`base32z`,alphabet:`ybndrfg8ejkmcpqxot1uwisza345h769`,bitsPerChar:5}),zd=Object.freeze({__proto__:null,base32:Ad,base32upper:jd,base32pad:Md,base32padupper:Nd,base32hex:Pd,base32hexupper:Fd,base32hexpad:Id,base32hexpadupper:Ld,base32z:Rd}),Bd=hd({prefix:`k`,name:`base36`,alphabet:`0123456789abcdefghijklmnopqrstuvwxyz`}),Vd=hd({prefix:`K`,name:`base36upper`,alphabet:`0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ`}),Hd=Object.freeze({__proto__:null,base36:Bd,base36upper:Vd}),Ud=hd({name:`base58btc`,prefix:`z`,alphabet:`123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz`}),Wd=hd({name:`base58flickr`,prefix:`Z`,alphabet:`123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ`}),Gd=Object.freeze({__proto__:null,base58btc:Ud,base58flickr:Wd}),Kd=vd({prefix:`m`,name:`base64`,alphabet:`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/`,bitsPerChar:6}),qd=vd({prefix:`M`,name:`base64pad`,alphabet:`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=`,bitsPerChar:6}),Jd=vd({prefix:`u`,name:`base64url`,alphabet:`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_`,bitsPerChar:6}),Yd=vd({prefix:`U`,name:`base64urlpad`,alphabet:`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=`,bitsPerChar:6}),Xd=Object.freeze({__proto__:null,base64:Kd,base64pad:qd,base64url:Jd,base64urlpad:Yd}),Zd=Array.from(`🚀🪐☄🛰🌌🌑🌒🌓🌔🌕🌖🌗🌘🌍🌏🌎🐉☀💻🖥💾💿😂❤😍🤣😊🙏💕😭😘👍😅👏😁🔥🥰💔💖💙😢🤔😆🙄💪😉☺👌🤗💜😔😎😇🌹🤦🎉💞✌✨🤷😱😌🌸🙌😋💗💚😏💛🙂💓🤩😄😀🖤😃💯🙈👇🎶😒🤭❣😜💋👀😪😑💥🙋😞😩😡🤪👊🥳😥🤤👉💃😳✋😚😝😴🌟😬🙃🍀🌷😻😓⭐✅🥺🌈😈🤘💦✔😣🏃💐☹🎊💘😠☝😕🌺🎂🌻😐🖕💝🙊😹🗣💫💀👑🎵🤞😛🔴😤🌼😫⚽🤙☕🏆🤫👈😮🙆🍻🍃🐶💁😲🌿🧡🎁⚡🌞🎈❌✊👋😰🤨😶🤝🚶💰🍓💢🤟🙁🚨💨🤬✈🎀🍺🤓😙💟🌱😖👶🥴▶➡❓💎💸⬇😨🌚🦋😷🕺⚠🙅😟😵👎🤲🤠🤧📌🔵💅🧐🐾🍒😗🤑🌊🤯🐷☎💧😯💆👆🎤🙇🍑❄🌴💣🐸💌📍🥀🤢👅💡💩👐📸👻🤐🤮🎼🥵🚩🍎🍊👼💍📣🥂`),Qd=Zd.reduce((e,t,n)=>(e[n]=t,e),[]),$d=Zd.reduce((e,t,n)=>(e[t.codePointAt(0)]=n,e),[]);function ef(e){return e.reduce((e,t)=>(e+=Qd[t],e),``)}function tf(e){let t=[];for(let n of e){let e=$d[n.codePointAt(0)];if(e===void 0)throw Error(`Non-base256emoji character: ${n}`);t.push(e)}return new Uint8Array(t)}var nf=md({prefix:`🚀`,name:`base256emoji`,encode:ef,decode:tf}),rf=Object.freeze({__proto__:null,base256emoji:nf}),af=lf,of=128,sf=-128,cf=2**31;function lf(e,t,n){t||=[],n||=0;for(var r=n;e>=cf;)t[n++]=e&255|of,e/=128;for(;e&sf;)t[n++]=e&255|of,e>>>=7;return t[n]=e|0,lf.bytes=n-r+1,t}var uf=pf,df=128,ff=127;function pf(e,t){var n=0,t=t||0,r=0,i=t,a,o=e.length;do{if(i>=o)throw pf.bytes=0,RangeError(`Could not decode varint`);a=e[i++],n+=r<28?(a&ff)<<r:(a&ff)*2**r,r+=7}while(a>=df);return pf.bytes=i-t,n}var mf=2**7,hf=2**14,gf=2**21,_f=2**28,vf=2**35,yf=2**42,bf=2**49,xf=2**56,Sf=2**63,Cf={encode:af,decode:uf,encodingLength:function(e){return e<mf?1:e<hf?2:e<gf?3:e<_f?4:e<vf?5:e<yf?6:e<bf?7:e<xf?8:e<Sf?9:10}},wf=(e,t,n=0)=>(Cf.encode(e,t,n),t),Tf=e=>Cf.encodingLength(e),Ef=(e,t)=>{let n=t.byteLength,r=Tf(e),i=r+Tf(n),a=new Uint8Array(i+n);return wf(e,a,0),wf(n,a,r),a.set(t,i),new Df(e,n,t,a)},Df=class{constructor(e,t,n,r){this.code=e,this.size=t,this.digest=n,this.bytes=r}},Of=({name:e,code:t,encode:n})=>new kf(e,t,n),kf=class{constructor(e,t,n){this.name=e,this.code=t,this.encode=n}digest(e){if(e instanceof Uint8Array){let t=this.encode(e);return t instanceof Uint8Array?Ef(this.code,t):t.then(e=>Ef(this.code,e))}else throw Error(`Unknown type, must be binary type`)}},Af=e=>async t=>new Uint8Array(await crypto.subtle.digest(e,t)),jf=Of({name:`sha2-256`,code:18,encode:Af(`SHA-256`)}),Mf=Of({name:`sha2-512`,code:19,encode:Af(`SHA-512`)}),Nf=Object.freeze({__proto__:null,sha256:jf,sha512:Mf}),Pf=0,Ff=`identity`,If=od,Lf=Object.freeze({__proto__:null,identity:{code:Pf,name:Ff,encode:If,digest:e=>Ef(Pf,If(e))}});new TextEncoder,new TextDecoder;var Rf={...bd,...Sd,...wd,...Ed,...kd,...zd,...Hd,...Gd,...Xd,...rf};({...Nf,...Lf});function zf(e=0){return globalThis.Buffer!=null&&globalThis.Buffer.allocUnsafe!=null?globalThis.Buffer.allocUnsafe(e):new Uint8Array(e)}function Bf(e,t,n,r){return{name:e,prefix:t,encoder:{name:e,prefix:t,encode:n},decoder:{decode:r}}}var Vf=Bf(`utf8`,`u`,e=>`u`+new TextDecoder(`utf8`).decode(e),e=>new TextEncoder().encode(e.substring(1))),Hf=Bf(`ascii`,`a`,e=>{let t=`a`;for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return t},e=>{e=e.substring(1);let t=zf(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n);return t}),Uf={utf8:Vf,"utf-8":Vf,hex:Rf.base16,latin1:Hf,ascii:Hf,binary:Hf,...Rf};function Wf(e,t=`utf8`){let n=Uf[t];if(!n)throw Error(`Unsupported encoding "${t}"`);return(t===`utf8`||t===`utf-8`)&&globalThis.Buffer!=null&&globalThis.Buffer.from!=null?globalThis.Buffer.from(e,`utf8`):n.decoder.decode(`${n.prefix}${e}`)}var Gf=Object.defineProperty,Kf=(e,t,n)=>t in e?Gf(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,qf=(e,t,n)=>Kf(e,typeof t==`symbol`?t:t+``,n),Jf=class{constructor(e,t){this.core=e,this.logger=t,qf(this,`keychain`,new Map),qf(this,`name`,Cu),qf(this,`version`,`0.3`),qf(this,`initialized`,!1),qf(this,`storagePrefix`,_u),qf(this,`init`,async()=>{if(!this.initialized){let e=await this.getKeyChain();typeof e<`u`&&(this.keychain=e),this.initialized=!0}}),qf(this,`has`,e=>(this.isInitialized(),this.keychain.has(e))),qf(this,`set`,async(e,t)=>{this.isInitialized(),this.keychain.set(e,t),await this.persist()}),qf(this,`get`,e=>{this.isInitialized();let t=this.keychain.get(e);if(typeof t>`u`){let{message:t}=U(`NO_MATCHING_KEY`,`${this.name}: ${e}`);throw Error(t)}return t}),qf(this,`del`,async e=>{this.isInitialized(),this.keychain.delete(e),await this.persist()}),this.core=e,this.logger=M(t,this.name)}get context(){return pe(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+`//`+this.name}async setKeyChain(e){await this.core.storage.setItem(this.storageKey,Xi(e))}async getKeyChain(){let e=await this.core.storage.getItem(this.storageKey);return typeof e<`u`?Zi(e):void 0}async persist(){await this.setKeyChain(this.keychain)}isInitialized(){if(!this.initialized){let{message:e}=U(`NOT_INITIALIZED`,this.name);throw Error(e)}}},Yf=Object.defineProperty,Xf=(e,t,n)=>t in e?Yf(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Zf=(e,t,n)=>Xf(e,typeof t==`symbol`?t:t+``,n),Qf=class{constructor(e,t,n){this.core=e,this.logger=t,Zf(this,`name`,bu),Zf(this,`keychain`),Zf(this,`randomSessionIdentifier`,Bc()),Zf(this,`initialized`,!1),Zf(this,`init`,async()=>{this.initialized||=(await this.keychain.init(),!0)}),Zf(this,`hasKeys`,e=>(this.isInitialized(),this.keychain.has(e))),Zf(this,`getClientId`,async()=>(this.isInitialized(),ne(I(await this.getClientSeed()).publicKey))),Zf(this,`generateKeyPair`,()=>{this.isInitialized();let e=zc();return this.setPrivateKey(e.publicKey,e.privateKey)}),Zf(this,`signJWT`,async e=>{this.isInitialized();let t=I(await this.getClientSeed()),n=this.randomSessionIdentifier;return await ae(n,e,Su,t)}),Zf(this,`generateSharedKey`,(e,t,n)=>{this.isInitialized();let r=Vc(this.getPrivateKey(e),t);return this.setSymKey(r,n)}),Zf(this,`setSymKey`,async(e,t)=>{this.isInitialized();let n=t||Hc(e);return await this.keychain.set(n,e),n}),Zf(this,`deleteKeyPair`,async e=>{this.isInitialized(),await this.keychain.del(e)}),Zf(this,`deleteSymKey`,async e=>{this.isInitialized(),await this.keychain.del(e)}),Zf(this,`encode`,async(e,t,n)=>{this.isInitialized();let r=$c(n),i=ie(t);if(tl(r))return Jc(i,n?.encoding);if(el(r)){let t=r.senderPublicKey,n=r.receiverPublicKey;e=await this.generateSharedKey(t,n)}let a=this.getSymKey(e),{type:o,senderPublicKey:s}=r;return Kc({type:o,symKey:a,message:i,senderPublicKey:s,encoding:n?.encoding})}),Zf(this,`decode`,async(e,t,n)=>{this.isInitialized();let r=Qc(t,n);if(tl(r))return L(Yc(t,n?.encoding));if(el(r)){let t=r.receiverPublicKey,n=r.senderPublicKey;e=await this.generateSharedKey(t,n)}try{return L(qc({symKey:this.getSymKey(e),encoded:t,encoding:n?.encoding}))}catch(t){this.logger.error(`Failed to decode message from topic: '${e}', clientId: '${await this.getClientId()}'`),this.logger.error(t)}}),Zf(this,`getPayloadType`,(e,t=Mc)=>Gc(Zc({encoded:e,encoding:t}).type)),Zf(this,`getPayloadSenderPublicKey`,(e,t=Mc)=>{let n=Zc({encoded:e,encoding:t});return n.senderPublicKey?we(n.senderPublicKey,jc):void 0}),this.core=e,this.logger=M(t,this.name),this.keychain=n||new Jf(this.core,this.logger)}get context(){return pe(this.logger)}async setPrivateKey(e,t){return await this.keychain.set(e,t),e}getPrivateKey(e){return this.keychain.get(e)}async getClientSeed(){let e=``;try{e=this.keychain.get(xu)}catch{e=Bc(),await this.keychain.set(xu,e)}return Wf(e,`base16`)}getSymKey(e){return this.keychain.get(e)}isInitialized(){if(!this.initialized){let{message:e}=U(`NOT_INITIALIZED`,this.name);throw Error(e)}}},$f=Object.defineProperty,ep=Object.defineProperties,tp=Object.getOwnPropertyDescriptors,np=Object.getOwnPropertySymbols,rp=Object.prototype.hasOwnProperty,ip=Object.prototype.propertyIsEnumerable,ap=(e,t,n)=>t in e?$f(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,op=(e,t)=>{for(var n in t||={})rp.call(t,n)&&ap(e,n,t[n]);if(np)for(var n of np(t))ip.call(t,n)&&ap(e,n,t[n]);return e},sp=(e,t)=>ep(e,tp(t)),cp=(e,t,n)=>ap(e,typeof t==`symbol`?t:t+``,n),lp=class extends pt{constructor(e,t){super(e,t),this.logger=e,this.core=t,cp(this,`messages`,new Map),cp(this,`messagesWithoutClientAck`,new Map),cp(this,`name`,wu),cp(this,`version`,`0.3`),cp(this,`initialized`,!1),cp(this,`storagePrefix`,_u),cp(this,`init`,async()=>{if(!this.initialized){this.logger.trace(`Initialized`);try{let e=await this.getRelayerMessages();typeof e<`u`&&(this.messages=e);let t=await this.getRelayerMessagesWithoutClientAck();typeof t<`u`&&(this.messagesWithoutClientAck=t),this.logger.debug(`Successfully Restored records for ${this.name}`),this.logger.trace({type:`method`,method:`restore`,size:this.messages.size})}catch(e){this.logger.debug(`Failed to Restore records for ${this.name}`),this.logger.error(e)}finally{this.initialized=!0}}}),cp(this,`set`,async(e,t,n)=>{this.isInitialized();let r=Uc(t),i=this.messages.get(e);if(typeof i>`u`&&(i={}),typeof i[r]<`u`)return r;if(i[r]=t,this.messages.set(e,i),n===ju.inbound){let n=this.messagesWithoutClientAck.get(e)||{};this.messagesWithoutClientAck.set(e,sp(op({},n),{[r]:t}))}return await this.persist(),r}),cp(this,`get`,e=>{this.isInitialized();let t=this.messages.get(e);return typeof t>`u`&&(t={}),t}),cp(this,`getWithoutAck`,e=>{this.isInitialized();let t={};for(let n of e){let e=this.messagesWithoutClientAck.get(n)||{};t[n]=Object.values(e)}return t}),cp(this,`has`,(e,t)=>(this.isInitialized(),typeof this.get(e)[Uc(t)]<`u`)),cp(this,`ack`,async(e,t)=>{this.isInitialized();let n=this.messagesWithoutClientAck.get(e);if(typeof n>`u`)return;let r=Uc(t);delete n[r],Object.keys(n).length===0?this.messagesWithoutClientAck.delete(e):this.messagesWithoutClientAck.set(e,n),await this.persist()}),cp(this,`del`,async e=>{this.isInitialized(),this.messages.delete(e),this.messagesWithoutClientAck.delete(e),await this.persist()}),this.logger=M(e,this.name),this.core=t}get context(){return pe(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+`//`+this.name}get storageKeyWithoutClientAck(){return this.storagePrefix+this.version+this.core.customStoragePrefix+`//`+this.name+`_withoutClientAck`}async setRelayerMessages(e){await this.core.storage.setItem(this.storageKey,Xi(e))}async setRelayerMessagesWithoutClientAck(e){await this.core.storage.setItem(this.storageKeyWithoutClientAck,Xi(e))}async getRelayerMessages(){let e=await this.core.storage.getItem(this.storageKey);return typeof e<`u`?Zi(e):void 0}async getRelayerMessagesWithoutClientAck(){let e=await this.core.storage.getItem(this.storageKeyWithoutClientAck);return typeof e<`u`?Zi(e):void 0}async persist(){await this.setRelayerMessages(this.messages),await this.setRelayerMessagesWithoutClientAck(this.messagesWithoutClientAck)}isInitialized(){if(!this.initialized){let{message:e}=U(`NOT_INITIALIZED`,this.name);throw Error(e)}}},up=Object.defineProperty,dp=Object.defineProperties,fp=Object.getOwnPropertyDescriptors,pp=Object.getOwnPropertySymbols,mp=Object.prototype.hasOwnProperty,hp=Object.prototype.propertyIsEnumerable,gp=(e,t,n)=>t in e?up(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,_p=(e,t)=>{for(var n in t||={})mp.call(t,n)&&gp(e,n,t[n]);if(pp)for(var n of pp(t))hp.call(t,n)&&gp(e,n,t[n]);return e},vp=(e,t)=>dp(e,fp(t)),yp=(e,t,n)=>gp(e,typeof t==`symbol`?t:t+``,n),bp=class extends mt{constructor(e,t){super(e,t),this.relayer=e,this.logger=t,yp(this,`events`,new it.EventEmitter),yp(this,`name`,Eu),yp(this,`queue`,new Map),yp(this,`publishTimeout`,(0,R.toMiliseconds)(R.ONE_MINUTE)),yp(this,`initialPublishTimeout`,(0,R.toMiliseconds)(R.ONE_SECOND*15)),yp(this,`needsTransportRestart`,!1),yp(this,`publish`,async(e,t,n)=>{var r;this.logger.debug(`Publishing Payload`),this.logger.trace({type:`method`,method:`publish`,params:{topic:e,message:t,opts:n}});let i=n?.ttl||Tu,a=ol(n),o=n?.prompt||!1,s=n?.tag||0,c=n?.id||fe().toString(),l={topic:e,message:t,opts:{ttl:i,relay:a,prompt:o,tag:s,id:c,attestation:n?.attestation,tvf:n?.tvf}},u=`Failed to publish payload, please try again. id:${c} tag:${s}`;try{let r=new Promise(async r=>{let a=({id:e})=>{l.opts.id===e&&(this.removeRequestFromQueue(e),this.relayer.events.removeListener(Ou.publish,a),r(l))};this.relayer.events.on(Ou.publish,a);let u=$i(new Promise((r,a)=>{this.rpcPublish({topic:e,message:t,ttl:i,prompt:o,tag:s,id:c,attestation:n?.attestation,tvf:n?.tvf}).then(r).catch(e=>{this.logger.warn(e,e?.message),a(e)})}),this.initialPublishTimeout,`Failed initial publish, retrying.... id:${c} tag:${s}`);try{await u,this.events.removeListener(Ou.publish,a)}catch(e){this.queue.set(c,vp(_p({},l),{attempt:1})),this.logger.warn(e,e?.message)}});this.logger.trace({type:`method`,method:`publish`,params:{id:c,topic:e,message:t,opts:n}}),await $i(r,this.publishTimeout,u)}catch(e){if(this.logger.debug(`Failed to Publish Payload`),this.logger.error(e),(r=n?.internal)!=null&&r.throwOnFailedPublish)throw e}finally{this.queue.delete(c)}}),yp(this,`on`,(e,t)=>{this.events.on(e,t)}),yp(this,`once`,(e,t)=>{this.events.once(e,t)}),yp(this,`off`,(e,t)=>{this.events.off(e,t)}),yp(this,`removeListener`,(e,t)=>{this.events.removeListener(e,t)}),this.relayer=e,this.logger=M(t,this.name),this.registerEventListeners()}get context(){return pe(this.logger)}async rpcPublish(e){var t,n;let{topic:r,message:i,ttl:a=Tu,prompt:o,tag:s,id:c,attestation:l,tvf:u}=e,d={method:sl(ol().protocol).publish,params:_p({topic:r,message:i,ttl:a,prompt:o,tag:s,attestation:l},u),id:c};El(d.params?.prompt)&&((t=d.params)==null||delete t.prompt),El(d.params?.tag)&&((n=d.params)==null||delete n.tag),this.logger.debug(`Outgoing Relay Payload`),this.logger.trace({type:`message`,direction:`outgoing`,request:d});let f=await this.relayer.request(d);return this.relayer.events.emit(Ou.publish,e),this.logger.debug(`Successfully Published Payload`),f}removeRequestFromQueue(e){this.queue.delete(e)}checkQueue(){this.queue.forEach(async(e,t)=>{let n=e.attempt+1;this.queue.set(t,vp(_p({},e),{attempt:n}));let{topic:r,message:i,opts:a,attestation:o}=e;this.logger.warn({},`Publisher: queue->publishing: ${e.opts.id}, tag: ${e.opts.tag}, attempt: ${n}`),await this.rpcPublish(vp(_p({},e),{topic:r,message:i,ttl:a.ttl,prompt:a.prompt,tag:a.tag,id:a.id,attestation:o,tvf:a.tvf})),this.logger.warn({},`Publisher: queue->published: ${e.opts.id}`)})}registerEventListeners(){this.relayer.core.heartbeat.on(re.pulse,()=>{if(this.needsTransportRestart){this.needsTransportRestart=!1,this.relayer.events.emit(Ou.connection_stalled);return}this.checkQueue()}),this.relayer.on(Ou.message_ack,e=>{this.removeRequestFromQueue(e.id.toString())})}},xp=Object.defineProperty,Sp=(e,t,n)=>t in e?xp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Cp=(e,t,n)=>Sp(e,typeof t==`symbol`?t:t+``,n),wp=class{constructor(){Cp(this,`map`,new Map),Cp(this,`set`,(e,t)=>{let n=this.get(e);this.exists(e,t)||this.map.set(e,[...n,t])}),Cp(this,`get`,e=>this.map.get(e)||[]),Cp(this,`exists`,(e,t)=>this.get(e).includes(t)),Cp(this,`delete`,(e,t)=>{if(typeof t>`u`){this.map.delete(e);return}if(!this.map.has(e))return;let n=this.get(e);if(!this.exists(e,t))return;let r=n.filter(e=>e!==t);if(!r.length){this.map.delete(e);return}this.map.set(e,r)}),Cp(this,`clear`,()=>{this.map.clear()})}get topics(){return Array.from(this.map.keys())}},Tp=Object.defineProperty,Ep=Object.defineProperties,Dp=Object.getOwnPropertyDescriptors,Op=Object.getOwnPropertySymbols,kp=Object.prototype.hasOwnProperty,Ap=Object.prototype.propertyIsEnumerable,jp=(e,t,n)=>t in e?Tp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Mp=(e,t)=>{for(var n in t||={})kp.call(t,n)&&jp(e,n,t[n]);if(Op)for(var n of Op(t))Ap.call(t,n)&&jp(e,n,t[n]);return e},Np=(e,t)=>Ep(e,Dp(t)),K=(e,t,n)=>jp(e,typeof t==`symbol`?t:t+``,n),Pp=class extends _t{constructor(e,t){super(e,t),this.relayer=e,this.logger=t,K(this,`subscriptions`,new Map),K(this,`topicMap`,new wp),K(this,`events`,new it.EventEmitter),K(this,`name`,Pu),K(this,`version`,`0.3`),K(this,`pending`,new Map),K(this,`cached`,[]),K(this,`initialized`,!1),K(this,`storagePrefix`,_u),K(this,`subscribeTimeout`,(0,R.toMiliseconds)(R.ONE_MINUTE)),K(this,`initialSubscribeTimeout`,(0,R.toMiliseconds)(R.ONE_SECOND*15)),K(this,`clientId`),K(this,`batchSubscribeTopicsLimit`,500),K(this,`init`,async()=>{this.initialized||(this.logger.trace(`Initialized`),this.registerEventListeners(),await this.restore()),this.initialized=!0}),K(this,`subscribe`,async(e,t)=>{this.isInitialized(),this.logger.debug(`Subscribing Topic`),this.logger.trace({type:`method`,method:`subscribe`,params:{topic:e,opts:t}});try{let n=ol(t),r={topic:e,relay:n,transportType:t?.transportType};this.pending.set(e,r);let i=await this.rpcSubscribe(e,n,t);return typeof i==`string`&&(this.onSubscribe(i,r),this.logger.debug(`Successfully Subscribed Topic`),this.logger.trace({type:`method`,method:`subscribe`,params:{topic:e,opts:t}})),i}catch(e){throw this.logger.debug(`Failed to Subscribe Topic`),this.logger.error(e),e}}),K(this,`unsubscribe`,async(e,t)=>{this.isInitialized(),typeof t?.id<`u`?await this.unsubscribeById(e,t.id,t):await this.unsubscribeByTopic(e,t)}),K(this,`isSubscribed`,e=>new Promise(t=>{t(this.topicMap.topics.includes(e))})),K(this,`isKnownTopic`,e=>new Promise(t=>{t(this.topicMap.topics.includes(e)||this.pending.has(e)||this.cached.some(t=>t.topic===e))})),K(this,`on`,(e,t)=>{this.events.on(e,t)}),K(this,`once`,(e,t)=>{this.events.once(e,t)}),K(this,`off`,(e,t)=>{this.events.off(e,t)}),K(this,`removeListener`,(e,t)=>{this.events.removeListener(e,t)}),K(this,`start`,async()=>{await this.onConnect()}),K(this,`stop`,async()=>{await this.onDisconnect()}),K(this,`restart`,async()=>{await this.restore(),await this.onRestart()}),K(this,`checkPending`,async()=>{if(this.pending.size===0&&(!this.initialized||!this.relayer.connected))return;let e=[];this.pending.forEach(t=>{e.push(t)}),await this.batchSubscribe(e)}),K(this,`registerEventListeners`,()=>{this.relayer.core.heartbeat.on(re.pulse,async()=>{await this.checkPending()}),this.events.on(Nu.created,async e=>{let t=Nu.created;this.logger.info(`Emitting ${t}`),this.logger.debug({type:`event`,event:t,data:e}),await this.persist()}),this.events.on(Nu.deleted,async e=>{let t=Nu.deleted;this.logger.info(`Emitting ${t}`),this.logger.debug({type:`event`,event:t,data:e}),await this.persist()})}),this.relayer=e,this.logger=M(t,this.name),this.clientId=``}get context(){return pe(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.relayer.core.customStoragePrefix+`//`+this.name}get length(){return this.subscriptions.size}get ids(){return Array.from(this.subscriptions.keys())}get values(){return Array.from(this.subscriptions.values())}get topics(){return this.topicMap.topics}get hasAnyTopics(){return this.topicMap.topics.length>0||this.pending.size>0||this.cached.length>0||this.subscriptions.size>0}hasSubscription(e,t){let n=!1;try{n=this.getSubscription(e).topic===t}catch{}return n}reset(){this.cached=[],this.initialized=!0}onDisable(){this.cached=this.values,this.subscriptions.clear(),this.topicMap.clear()}async unsubscribeByTopic(e,t){let n=this.topicMap.get(e);await Promise.all(n.map(async n=>await this.unsubscribeById(e,n,t)))}async unsubscribeById(e,t,n){this.logger.debug(`Unsubscribing Topic`),this.logger.trace({type:`method`,method:`unsubscribe`,params:{topic:e,id:t,opts:n}});try{let r=ol(n);await this.restartToComplete({topic:e,id:t,relay:r}),await this.rpcUnsubscribe(e,t,r);let i=W(`USER_DISCONNECTED`,`${this.name}, ${e}`);await this.onUnsubscribe(e,t,i),this.logger.debug(`Successfully Unsubscribed Topic`),this.logger.trace({type:`method`,method:`unsubscribe`,params:{topic:e,id:t,opts:n}})}catch(e){throw this.logger.debug(`Failed to Unsubscribe Topic`),this.logger.error(e),e}}async rpcSubscribe(e,t,n){(!n||n?.transportType===G.relay)&&await this.restartToComplete({topic:e,id:e,relay:t});let r={method:sl(t.protocol).subscribe,params:{topic:e}};this.logger.debug(`Outgoing Relay Payload`),this.logger.trace({type:`payload`,direction:`outgoing`,request:r});let i=n?.internal?.throwOnFailedPublish;try{let t=await this.getSubscriptionId(e);if(n?.transportType===G.link_mode)return setTimeout(()=>{(this.relayer.connected||this.relayer.connecting)&&this.relayer.request(r).catch(e=>this.logger.warn(e))},(0,R.toMiliseconds)(R.ONE_SECOND)),t;let a=await $i(new Promise(async t=>{let n=r=>{r.topic===e&&(this.events.removeListener(Nu.created,n),t(r.id))};this.events.on(Nu.created,n);try{let i=await $i(new Promise((e,t)=>{this.relayer.request(r).catch(e=>{this.logger.warn(e,e?.message),t(e)}).then(e)}),this.initialSubscribeTimeout,`Subscribing to ${e} failed, please try again`);this.events.removeListener(Nu.created,n),t(i)}catch{}}),this.subscribeTimeout,`Subscribing to ${e} failed, please try again`);if(!a&&i)throw Error(`Subscribing to ${e} failed, please try again`);return a?t:null}catch(e){if(this.logger.debug(`Outgoing Relay Subscribe Payload stalled`),this.relayer.events.emit(Ou.connection_stalled),i)throw e}return null}async rpcBatchSubscribe(e){if(!e.length)return;let t=e[0].relay,n={method:sl(t.protocol).batchSubscribe,params:{topics:e.map(e=>e.topic)}};this.logger.debug(`Outgoing Relay Payload`),this.logger.trace({type:`payload`,direction:`outgoing`,request:n});try{await await $i(new Promise(e=>{this.relayer.request(n).catch(e=>this.logger.warn(e)).then(e)}),this.subscribeTimeout,`rpcBatchSubscribe failed, please try again`)}catch{this.relayer.events.emit(Ou.connection_stalled)}}async rpcBatchFetchMessages(e){if(!e.length)return;let t=e[0].relay,n={method:sl(t.protocol).batchFetchMessages,params:{topics:e.map(e=>e.topic)}};this.logger.debug(`Outgoing Relay Payload`),this.logger.trace({type:`payload`,direction:`outgoing`,request:n});let r;try{r=await await $i(new Promise((e,t)=>{this.relayer.request(n).catch(e=>{this.logger.warn(e),t(e)}).then(e)}),this.subscribeTimeout,`rpcBatchFetchMessages failed, please try again`)}catch{this.relayer.events.emit(Ou.connection_stalled)}return r}rpcUnsubscribe(e,t,n){let r={method:sl(n.protocol).unsubscribe,params:{topic:e,id:t}};return this.logger.debug(`Outgoing Relay Payload`),this.logger.trace({type:`payload`,direction:`outgoing`,request:r}),this.relayer.request(r)}onSubscribe(e,t){this.setSubscription(e,Np(Mp({},t),{id:e})),this.pending.delete(t.topic)}onBatchSubscribe(e){e.length&&e.forEach(e=>{this.setSubscription(e.id,Mp({},e)),this.pending.delete(e.topic)})}async onUnsubscribe(e,t,n){this.events.removeAllListeners(t),this.hasSubscription(t,e)&&this.deleteSubscription(t,n),await this.relayer.messages.del(e)}async setRelayerSubscriptions(e){await this.relayer.core.storage.setItem(this.storageKey,e)}async getRelayerSubscriptions(){return await this.relayer.core.storage.getItem(this.storageKey)}setSubscription(e,t){this.logger.debug(`Setting subscription`),this.logger.trace({type:`method`,method:`setSubscription`,id:e,subscription:t}),this.addSubscription(e,t)}addSubscription(e,t){this.subscriptions.set(e,Mp({},t)),this.topicMap.set(t.topic,e),this.events.emit(Nu.created,t)}getSubscription(e){this.logger.debug(`Getting subscription`),this.logger.trace({type:`method`,method:`getSubscription`,id:e});let t=this.subscriptions.get(e);if(!t){let{message:t}=U(`NO_MATCHING_KEY`,`${this.name}: ${e}`);throw Error(t)}return t}deleteSubscription(e,t){this.logger.debug(`Deleting subscription`),this.logger.trace({type:`method`,method:`deleteSubscription`,id:e,reason:t});let n=this.getSubscription(e);this.subscriptions.delete(e),this.topicMap.delete(n.topic,e),this.events.emit(Nu.deleted,Np(Mp({},n),{reason:t}))}async persist(){await this.setRelayerSubscriptions(this.values),this.events.emit(Nu.sync)}async onRestart(){if(this.cached.length){let e=[...this.cached],t=Math.ceil(this.cached.length/this.batchSubscribeTopicsLimit);for(let n=0;n<t;n++){let t=e.splice(0,this.batchSubscribeTopicsLimit);await this.batchSubscribe(t)}}this.events.emit(Nu.resubscribed)}async restore(){try{let e=await this.getRelayerSubscriptions();if(typeof e>`u`||!e.length)return;if(this.subscriptions.size){let{message:e}=U(`RESTORE_WILL_OVERRIDE`,this.name);throw this.logger.error(e),this.logger.error(`${this.name}: ${JSON.stringify(this.values)}`),Error(e)}this.cached=e,this.logger.debug(`Successfully Restored subscriptions for ${this.name}`),this.logger.trace({type:`method`,method:`restore`,subscriptions:this.values})}catch(e){this.logger.debug(`Failed to Restore subscriptions for ${this.name}`),this.logger.error(e)}}async batchSubscribe(e){e.length&&(await this.rpcBatchSubscribe(e),this.onBatchSubscribe(await Promise.all(e.map(async e=>Np(Mp({},e),{id:await this.getSubscriptionId(e.topic)})))))}async batchFetchMessages(e){if(!e.length)return;this.logger.trace(`Fetching batch messages for ${e.length} subscriptions`);let t=await this.rpcBatchFetchMessages(e);t&&t.messages&&(await va((0,R.toMiliseconds)(R.ONE_SECOND)),await this.relayer.handleBatchMessageEvents(t.messages))}async onConnect(){await this.restart(),this.reset()}onDisconnect(){this.onDisable()}isInitialized(){if(!this.initialized){let{message:e}=U(`NOT_INITIALIZED`,this.name);throw Error(e)}}async restartToComplete(e){!this.relayer.connected&&!this.relayer.connecting&&(this.cached.push(e),await this.relayer.transportOpen())}async getClientId(){return this.clientId||=await this.relayer.core.crypto.getClientId(),this.clientId}async getSubscriptionId(e){return Uc(e+await this.getClientId())}},Fp=Object.defineProperty,Ip=Object.getOwnPropertySymbols,Lp=Object.prototype.hasOwnProperty,Rp=Object.prototype.propertyIsEnumerable,zp=(e,t,n)=>t in e?Fp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Bp=(e,t)=>{for(var n in t||={})Lp.call(t,n)&&zp(e,n,t[n]);if(Ip)for(var n of Ip(t))Rp.call(t,n)&&zp(e,n,t[n]);return e},q=(e,t,n)=>zp(e,typeof t==`symbol`?t:t+``,n),Vp=class extends ht{constructor(e){super(e),q(this,`protocol`,`wc`),q(this,`version`,2),q(this,`core`),q(this,`logger`),q(this,`events`,new it.EventEmitter),q(this,`provider`),q(this,`messages`),q(this,`subscriber`),q(this,`publisher`),q(this,`name`,Du),q(this,`transportExplicitlyClosed`,!1),q(this,`initialized`,!1),q(this,`connectionAttemptInProgress`,!1),q(this,`relayUrl`),q(this,`projectId`),q(this,`packageName`),q(this,`bundleId`),q(this,`hasExperiencedNetworkDisruption`,!1),q(this,`pingTimeout`),q(this,`heartBeatTimeout`,(0,R.toMiliseconds)(R.THIRTY_SECONDS+R.FIVE_SECONDS)),q(this,`reconnectTimeout`),q(this,`connectPromise`),q(this,`reconnectInProgress`,!1),q(this,`requestsInFlight`,[]),q(this,`connectTimeout`,(0,R.toMiliseconds)(R.ONE_SECOND*15)),q(this,`request`,async e=>{this.logger.debug(`Publishing Request Payload`);let t=e.id||fe().toString();await this.toEstablishConnection();try{this.logger.trace({id:t,method:e.method,topic:e.params?.topic},`relayer.request - publishing...`);let n=`${t}:${e.params?.tag||``}`;this.requestsInFlight.push(n);let r=await this.provider.request(e);return this.requestsInFlight=this.requestsInFlight.filter(e=>e!==n),r}catch(e){throw this.logger.debug(`Failed to Publish Request: ${t}`),e}}),q(this,`resetPingTimeout`,()=>{Ii()&&(clearTimeout(this.pingTimeout),this.pingTimeout=setTimeout(()=>{var e,t;try{this.logger.debug({},`pingTimeout: Connection stalled, terminating...`),(t=(e=this.provider?.connection?.socket)?.terminate)==null||t.call(e)}catch(e){this.logger.warn(e,e?.message)}},this.heartBeatTimeout))}),q(this,`onPayloadHandler`,e=>{this.onProviderPayload(e),this.resetPingTimeout()}),q(this,`onConnectHandler`,()=>{this.logger.warn({},`Relayer connected 🛜`),this.startPingTimeout(),this.events.emit(Ou.connect)}),q(this,`onDisconnectHandler`,()=>{this.logger.warn({},`Relayer disconnected 🛑`),this.requestsInFlight=[],this.onProviderDisconnect()}),q(this,`onProviderErrorHandler`,e=>{this.logger.fatal(`Fatal socket error: ${e.message}`),this.events.emit(Ou.error,e),this.logger.fatal(`Fatal socket error received, closing transport`),this.transportClose()}),q(this,`registerProviderListeners`,()=>{this.provider.on(ku.payload,this.onPayloadHandler),this.provider.on(ku.connect,this.onConnectHandler),this.provider.on(ku.disconnect,this.onDisconnectHandler),this.provider.on(ku.error,this.onProviderErrorHandler)}),this.core=e.core,this.logger=typeof e.logger<`u`&&typeof e.logger!=`string`?M(e.logger,this.name):(0,me.default)(te({level:e.logger||`error`})),this.messages=new lp(this.logger,e.core),this.subscriber=new Pp(this,this.logger),this.publisher=new bp(this,this.logger),this.relayUrl=e?.relayUrl||`wss://relay.walletconnect.org`,this.projectId=e.projectId,Ri()?this.packageName=Hi():zi()&&(this.bundleId=Hi()),this.provider={}}async init(){if(this.logger.trace(`Initialized`),this.registerEventListeners(),await Promise.all([this.messages.init(),this.subscriber.init()]),this.initialized=!0,this.subscriber.hasAnyTopics)try{await this.transportOpen()}catch(e){this.logger.warn(e,e?.message)}}get context(){return pe(this.logger)}get connected(){return this.provider?.connection?.socket?.readyState===1||!1}get connecting(){return this.provider?.connection?.socket?.readyState===0||this.connectPromise!==void 0||!1}async publish(e,t,n){this.isInitialized(),await this.publisher.publish(e,t,n),await this.recordMessageEvent({topic:e,message:t,publishedAt:Date.now(),transportType:G.relay},ju.outbound)}async subscribe(e,t){this.isInitialized(),(!(t!=null&&t.transportType)||t?.transportType===`relay`)&&await this.toEstablishConnection();let n=typeof t?.internal?.throwOnFailedPublish>`u`?!0:t?.internal?.throwOnFailedPublish,r=this.subscriber.topicMap.get(e)?.[0]||``,i,a=t=>{t.topic===e&&(this.subscriber.off(Nu.created,a),i())};return await Promise.all([new Promise(e=>{i=e,this.subscriber.on(Nu.created,a)}),new Promise(async(i,a)=>{r=await this.subscriber.subscribe(e,Bp({internal:{throwOnFailedPublish:n}},t)).catch(e=>{n&&a(e)})||r,i()})]),r}async unsubscribe(e,t){this.isInitialized(),await this.subscriber.unsubscribe(e,t)}on(e,t){this.events.on(e,t)}once(e,t){this.events.once(e,t)}off(e,t){this.events.off(e,t)}removeListener(e,t){this.events.removeListener(e,t)}async transportDisconnect(){this.provider.disconnect&&(this.hasExperiencedNetworkDisruption||this.connected)?await $i(this.provider.disconnect(),2e3,`provider.disconnect()`).catch(()=>this.onProviderDisconnect()):this.onProviderDisconnect()}async transportClose(){this.transportExplicitlyClosed=!0,await this.transportDisconnect()}async transportOpen(e){if(!this.subscriber.hasAnyTopics){this.logger.warn(`Starting WS connection skipped because the client has no topics to work with.`);return}if(this.connectPromise?(this.logger.debug({},`Waiting for existing connection attempt to resolve...`),await this.connectPromise,this.logger.debug({},`Existing connection attempt resolved`)):(this.connectPromise=new Promise(async(t,n)=>{await this.connect(e).then(t).catch(n).finally(()=>{this.connectPromise=void 0})}),await this.connectPromise),!this.connected)throw Error(`Couldn't establish socket connection to the relay server: ${this.relayUrl}`)}async restartTransport(e){this.logger.debug({},`Restarting transport...`),!this.connectionAttemptInProgress&&(this.relayUrl=e||this.relayUrl,await this.confirmOnlineStateOrThrow(),await this.transportClose(),await this.transportOpen())}async confirmOnlineStateOrThrow(){if(!await su())throw Error(`No internet connection detected. Please restart your network and try again.`)}async handleBatchMessageEvents(e){if(e?.length===0){this.logger.trace(`Batch message events is empty. Ignoring...`);return}let t=e.sort((e,t)=>e.publishedAt-t.publishedAt);this.logger.debug(`Batch of ${t.length} message events sorted`);for(let e of t)try{await this.onMessageEvent(e)}catch(e){this.logger.warn(e,`Error while processing batch message event: `+e?.message)}this.logger.trace(`Batch of ${t.length} message events processed`)}async onLinkMessageEvent(e,t){let{topic:n}=e;if(!t.sessionExists){let e={topic:n,expiry:ia(R.FIVE_MINUTES),relay:{protocol:`irn`},active:!1};await this.core.pairing.pairings.set(n,e)}this.events.emit(Ou.message,e),await this.recordMessageEvent(e,ju.inbound)}async connect(e){await this.confirmOnlineStateOrThrow(),e&&e!==this.relayUrl&&(this.relayUrl=e,await this.transportDisconnect()),this.connectionAttemptInProgress=!0,this.transportExplicitlyClosed=!1;let t=1;for(;t<6;){try{if(this.transportExplicitlyClosed)break;this.logger.debug({},`Connecting to ${this.relayUrl}, attempt: ${t}...`),await this.createProvider(),await new Promise(async(e,t)=>{let n=()=>{t(Error(`Connection interrupted while trying to subscribe`))};this.provider.once(ku.disconnect,n),await $i(new Promise((e,t)=>{this.provider.connect().then(e).catch(t)}),this.connectTimeout,`Socket stalled when trying to connect to ${this.relayUrl}`).catch(e=>{t(e)}).finally(()=>{this.provider.off(ku.disconnect,n),clearTimeout(this.reconnectTimeout)}),await new Promise(async(e,t)=>{let n=()=>{t(Error(`Connection interrupted while trying to subscribe`))};this.provider.once(ku.disconnect,n),await this.subscriber.start().then(e).catch(t).finally(()=>{this.provider.off(ku.disconnect,n)})}),this.hasExperiencedNetworkDisruption=!1,e()})}catch(e){await this.subscriber.stop();let t=e;this.logger.warn({},t.message),this.hasExperiencedNetworkDisruption=!0}finally{this.connectionAttemptInProgress=!1}if(this.connected){this.logger.debug({},`Connected to ${this.relayUrl} successfully on attempt: ${t}`);break}await new Promise(e=>setTimeout(e,(0,R.toMiliseconds)(t*1))),t++}}startPingTimeout(){var e,t;if(Ii())try{(e=this.provider?.connection)!=null&&e.socket&&((t=this.provider?.connection?.socket)==null||t.on(`ping`,()=>{this.resetPingTimeout()})),this.resetPingTimeout()}catch(e){this.logger.warn(e,e?.message)}}async createProvider(){this.provider.connection&&this.unregisterProviderListeners();let e=await this.core.crypto.signJWT(this.relayUrl);this.provider=new ye(new xe(Ji({sdkVersion:Au,protocol:this.protocol,version:this.version,relayUrl:this.relayUrl,projectId:this.projectId,auth:e,useOnCloseEvent:!0,bundleId:this.bundleId,packageName:this.packageName}))),this.registerProviderListeners()}async recordMessageEvent(e,t){let{topic:n,message:r}=e;await this.messages.set(n,r,t)}async shouldIgnoreMessageEvent(e){let{topic:t,message:n}=e;if(!n||n.length===0)return this.logger.warn(`Ignoring invalid/empty message: ${n}`),!0;if(!await this.subscriber.isKnownTopic(t))return this.logger.warn(`Ignoring message for unknown topic ${t}`),!0;let r=this.messages.has(t,n);return r&&this.logger.warn(`Ignoring duplicate message: ${n}`),r}async onProviderPayload(e){if(this.logger.debug(`Incoming Relay Payload`),this.logger.trace({type:`payload`,direction:`incoming`,payload:e}),je(e)){if(!e.method.endsWith(`_subscription`))return;let t=e.params,{topic:n,message:r,publishedAt:i,attestation:a}=t.data,o={topic:n,message:r,publishedAt:i,transportType:G.relay,attestation:a};this.logger.debug(`Emitting Relayer Payload`),this.logger.trace(Bp({type:`event`,event:t.id},o)),this.events.emit(t.id,o),await this.acknowledgePayload(e),await this.onMessageEvent(o)}else be(e)&&this.events.emit(Ou.message_ack,e)}async onMessageEvent(e){await this.shouldIgnoreMessageEvent(e)||(await this.recordMessageEvent(e,ju.inbound),this.events.emit(Ou.message,e))}async acknowledgePayload(e){let t=ke(e.id,!0);await this.provider.connection.send(t)}unregisterProviderListeners(){this.provider.off(ku.payload,this.onPayloadHandler),this.provider.off(ku.connect,this.onConnectHandler),this.provider.off(ku.disconnect,this.onDisconnectHandler),this.provider.off(ku.error,this.onProviderErrorHandler),clearTimeout(this.pingTimeout)}async registerEventListeners(){let e=await su();du(async t=>{e!==t&&(e=t,t?await this.transportOpen().catch(e=>this.logger.error(e,e?.message)):(this.hasExperiencedNetworkDisruption=!0,await this.transportDisconnect(),this.transportExplicitlyClosed=!1))})}async onProviderDisconnect(){clearTimeout(this.pingTimeout),this.events.emit(Ou.disconnect),this.connectionAttemptInProgress=!1,!this.reconnectInProgress&&(this.reconnectInProgress=!0,await this.subscriber.stop(),this.subscriber.hasAnyTopics&&(this.transportExplicitlyClosed||(this.reconnectTimeout=setTimeout(async()=>{await this.transportOpen().catch(e=>this.logger.error(e,e?.message)),this.reconnectTimeout=void 0,this.reconnectInProgress=!1},(0,R.toMiliseconds)(.1)))))}isInitialized(){if(!this.initialized){let{message:e}=U(`NOT_INITIALIZED`,this.name);throw Error(e)}}async toEstablishConnection(){await this.confirmOnlineStateOrThrow(),!this.connected&&await this.connect()}};function Hp(){}function Up(e){if(!e||typeof e!=`object`)return!1;let t=Object.getPrototypeOf(e);return t===null||t===Object.prototype||Object.getPrototypeOf(t)===null?Object.prototype.toString.call(e)===`[object Object]`:!1}function Wp(e){return Object.getOwnPropertySymbols(e).filter(t=>Object.prototype.propertyIsEnumerable.call(e,t))}function Gp(e){return e==null?e===void 0?`[object Undefined]`:`[object Null]`:Object.prototype.toString.call(e)}var Kp=`[object RegExp]`,qp=`[object String]`,Jp=`[object Number]`,Yp=`[object Boolean]`,Xp=`[object Arguments]`,Zp=`[object Symbol]`,Qp=`[object Date]`,$p=`[object Map]`,em=`[object Set]`,tm=`[object Array]`,nm=`[object Function]`,rm=`[object ArrayBuffer]`,im=`[object Object]`,am=`[object Error]`,om=`[object DataView]`,sm=`[object Uint8Array]`,cm=`[object Uint8ClampedArray]`,lm=`[object Uint16Array]`,um=`[object Uint32Array]`,dm=`[object BigUint64Array]`,fm=`[object Int8Array]`,pm=`[object Int16Array]`,mm=`[object Int32Array]`,hm=`[object BigInt64Array]`,gm=`[object Float32Array]`,_m=`[object Float64Array]`;function vm(e,t){return e===t||Number.isNaN(e)&&Number.isNaN(t)}function ym(e,t,n){return bm(e,t,void 0,void 0,void 0,void 0,n)}function bm(e,t,n,r,i,a,o){let s=o(e,t,n,r,i,a);if(s!==void 0)return s;if(typeof e==typeof t)switch(typeof e){case`bigint`:case`string`:case`boolean`:case`symbol`:case`undefined`:return e===t;case`number`:return e===t||Object.is(e,t);case`function`:return e===t;case`object`:return xm(e,t,a,o)}return xm(e,t,a,o)}function xm(e,t,n,r){if(Object.is(e,t))return!0;let i=Gp(e),a=Gp(t);if(i===Xp&&(i=im),a===Xp&&(a=im),i!==a)return!1;switch(i){case qp:return e.toString()===t.toString();case Jp:return vm(e.valueOf(),t.valueOf());case Yp:case Qp:case Zp:return Object.is(e.valueOf(),t.valueOf());case Kp:return e.source===t.source&&e.flags===t.flags;case nm:return e===t}n??=new Map;let o=n.get(e),s=n.get(t);if(o!=null&&s!=null)return o===t;n.set(e,t),n.set(t,e);try{switch(i){case $p:if(e.size!==t.size)return!1;for(let[i,a]of e.entries())if(!t.has(i)||!bm(a,t.get(i),i,e,t,n,r))return!1;return!0;case em:{if(e.size!==t.size)return!1;let i=Array.from(e.values()),a=Array.from(t.values());for(let o=0;o<i.length;o++){let s=i[o],c=a.findIndex(i=>bm(s,i,void 0,e,t,n,r));if(c===-1)return!1;a.splice(c,1)}return!0}case tm:case sm:case cm:case lm:case um:case dm:case fm:case pm:case mm:case hm:case gm:case _m:if(typeof Buffer<`u`&&Buffer.isBuffer(e)!==Buffer.isBuffer(t)||e.length!==t.length)return!1;for(let i=0;i<e.length;i++)if(!bm(e[i],t[i],i,e,t,n,r))return!1;return!0;case rm:return e.byteLength===t.byteLength?xm(new Uint8Array(e),new Uint8Array(t),n,r):!1;case om:return e.byteLength!==t.byteLength||e.byteOffset!==t.byteOffset?!1:xm(new Uint8Array(e),new Uint8Array(t),n,r);case am:return e.name===t.name&&e.message===t.message;case im:{if(!(xm(e.constructor,t.constructor,n,r)||Up(e)&&Up(t)))return!1;let i=[...Object.keys(e),...Wp(e)],a=[...Object.keys(t),...Wp(t)];if(i.length!==a.length)return!1;for(let a=0;a<i.length;a++){let o=i[a],s=e[o];if(!Object.hasOwn(t,o))return!1;let c=t[o];if(!bm(s,c,o,e,t,n,r))return!1}return!0}default:return!1}}finally{n.delete(e),n.delete(t)}}function Sm(e,t){return ym(e,t,Hp)}var Cm=Object.defineProperty,wm=Object.getOwnPropertySymbols,Tm=Object.prototype.hasOwnProperty,Em=Object.prototype.propertyIsEnumerable,Dm=(e,t,n)=>t in e?Cm(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Om=(e,t)=>{for(var n in t||={})Tm.call(t,n)&&Dm(e,n,t[n]);if(wm)for(var n of wm(t))Em.call(t,n)&&Dm(e,n,t[n]);return e},km=(e,t,n)=>Dm(e,typeof t==`symbol`?t:t+``,n),Am=class extends gt{constructor(e,t,n,r=_u,i=void 0){super(e,t,n,r),this.core=e,this.logger=t,this.name=n,km(this,`map`,new Map),km(this,`version`,`0.3`),km(this,`cached`,[]),km(this,`initialized`,!1),km(this,`getKey`),km(this,`storagePrefix`,_u),km(this,`recentlyDeleted`,[]),km(this,`recentlyDeletedLimit`,200),km(this,`init`,async()=>{this.initialized||=(this.logger.trace(`Initialized`),await this.restore(),this.cached.forEach(e=>{this.getKey&&e!==null&&!El(e)?this.map.set(this.getKey(e),e):Nl(e)?this.map.set(e.id,e):Pl(e)&&this.map.set(e.topic,e)}),this.cached=[],!0)}),km(this,`set`,async(e,t)=>{this.isInitialized(),this.map.has(e)?await this.update(e,t):(this.logger.debug(`Setting value`),this.logger.trace({type:`method`,method:`set`,key:e,value:t}),this.map.set(e,t),await this.persist())}),km(this,`get`,e=>(this.isInitialized(),this.logger.debug(`Getting value`),this.logger.trace({type:`method`,method:`get`,key:e}),this.getData(e))),km(this,`getAll`,e=>(this.isInitialized(),e?this.values.filter(t=>Object.keys(e).every(n=>Sm(t[n],e[n]))):this.values)),km(this,`update`,async(e,t)=>{this.isInitialized(),this.logger.debug(`Updating value`),this.logger.trace({type:`method`,method:`update`,key:e,update:t});let n=Om(Om({},this.getData(e)),t);this.map.set(e,n),await this.persist()}),km(this,`delete`,async(e,t)=>{this.isInitialized(),this.map.has(e)&&(this.logger.debug(`Deleting value`),this.logger.trace({type:`method`,method:`delete`,key:e,reason:t}),this.map.delete(e),this.addToRecentlyDeleted(e),await this.persist())}),this.logger=M(t,this.name),this.storagePrefix=r,this.getKey=i}get context(){return pe(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+`//`+this.name}get length(){return this.map.size}get keys(){return Array.from(this.map.keys())}get values(){return Array.from(this.map.values())}addToRecentlyDeleted(e){this.recentlyDeleted.push(e),this.recentlyDeleted.length>=this.recentlyDeletedLimit&&this.recentlyDeleted.splice(0,this.recentlyDeletedLimit/2)}async setDataStore(e){await this.core.storage.setItem(this.storageKey,e)}async getDataStore(){return await this.core.storage.getItem(this.storageKey)}getData(e){let t=this.map.get(e);if(!t){if(this.recentlyDeleted.includes(e)){let{message:t}=U(`MISSING_OR_INVALID`,`Record was recently deleted - ${this.name}: ${e}`);throw this.logger.error(t),Error(t)}let{message:t}=U(`NO_MATCHING_KEY`,`${this.name}: ${e}`);throw this.logger.error(t),Error(t)}return t}async persist(){await this.setDataStore(this.values)}async restore(){try{let e=await this.getDataStore();if(typeof e>`u`||!e.length)return;if(this.map.size){let{message:e}=U(`RESTORE_WILL_OVERRIDE`,this.name);throw this.logger.error(e),Error(e)}this.cached=e,this.logger.debug(`Successfully Restored value for ${this.name}`),this.logger.trace({type:`method`,method:`restore`,value:this.values})}catch(e){this.logger.debug(`Failed to Restore value for ${this.name}`),this.logger.error(e)}}isInitialized(){if(!this.initialized){let{message:e}=U(`NOT_INITIALIZED`,this.name);throw Error(e)}}},jm=Object.defineProperty,Mm=(e,t,n)=>t in e?jm(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,J=(e,t,n)=>Mm(e,typeof t==`symbol`?t:t+``,n),Nm=class{constructor(e,t){this.core=e,this.logger=t,J(this,`name`,Fu),J(this,`version`,`0.3`),J(this,`events`,new it.default),J(this,`pairings`),J(this,`initialized`,!1),J(this,`storagePrefix`,_u),J(this,`ignoredPayloadTypes`,[1]),J(this,`registeredMethods`,[]),J(this,`init`,async()=>{this.initialized||(await this.pairings.init(),await this.cleanup(),this.registerRelayerEvents(),this.registerExpirerEvents(),this.initialized=!0,this.logger.trace(`Initialized`))}),J(this,`register`,({methods:e})=>{this.isInitialized(),this.registeredMethods=[...new Set([...this.registeredMethods,...e])]}),J(this,`create`,async e=>{this.isInitialized();let t=Bc(),n=await this.core.crypto.setSymKey(t),r=ia(R.FIVE_MINUTES),i={protocol:`irn`},a={topic:n,expiry:r,relay:i,active:!1,methods:e?.methods},o=fl({protocol:this.core.protocol,version:this.core.version,topic:n,symKey:t,relay:i,expiryTimestamp:r,methods:e?.methods});return this.events.emit(Lu.create,a),this.core.expirer.set(n,r),await this.pairings.set(n,a),await this.core.relayer.subscribe(n,{transportType:e?.transportType}),{topic:n,uri:o}}),J(this,`pair`,async e=>{this.isInitialized();let t=this.core.eventClient.createEvent({properties:{topic:e?.uri,trace:[Yu.pairing_started]}});this.isValidPair(e,t);let{topic:n,symKey:r,relay:i,expiryTimestamp:a,methods:o}=ll(e.uri);t.props.properties.topic=n,t.addTrace(Yu.pairing_uri_validation_success),t.addTrace(Yu.pairing_uri_not_expired);let s;if(this.pairings.keys.includes(n)){if(s=this.pairings.get(n),t.addTrace(Yu.existing_pairing),s.active)throw t.setError(Xu.active_pairing_already_exists),Error(`Pairing already exists: ${n}. Please try again with a new connection URI.`);t.addTrace(Yu.pairing_not_expired)}let c=a||ia(R.FIVE_MINUTES),l={topic:n,relay:i,expiry:c,active:!1,methods:o};this.core.expirer.set(n,c),await this.pairings.set(n,l),t.addTrace(Yu.store_new_pairing),e.activatePairing&&await this.activate({topic:n}),this.events.emit(Lu.create,l),t.addTrace(Yu.emit_inactive_pairing),this.core.crypto.keychain.has(n)||await this.core.crypto.setSymKey(r,n),t.addTrace(Yu.subscribing_pairing_topic);try{await this.core.relayer.confirmOnlineStateOrThrow()}catch{t.setError(Xu.no_internet_connection)}try{await this.core.relayer.subscribe(n,{relay:i})}catch(e){throw t.setError(Xu.subscribe_pairing_topic_failure),e}return t.addTrace(Yu.subscribe_pairing_topic_success),l}),J(this,`activate`,async({topic:e})=>{this.isInitialized();let t=ia(R.FIVE_MINUTES);this.core.expirer.set(e,t),await this.pairings.update(e,{active:!0,expiry:t})}),J(this,`ping`,async e=>{this.isInitialized(),await this.isValidPing(e),this.logger.warn(`ping() is deprecated and will be removed in the next major release.`);let{topic:t}=e;if(this.pairings.keys.includes(t)){let e=await this.sendRequest(t,`wc_pairingPing`,{}),{done:n,resolve:r,reject:i}=Qi();this.events.once(V(`pairing_ping`,e),({error:e})=>{e?i(e):r()}),await n()}}),J(this,`updateExpiry`,async({topic:e,expiry:t})=>{this.isInitialized(),await this.pairings.update(e,{expiry:t})}),J(this,`updateMetadata`,async({topic:e,metadata:t})=>{this.isInitialized(),await this.pairings.update(e,{peerMetadata:t})}),J(this,`getPairings`,()=>(this.isInitialized(),this.pairings.values)),J(this,`disconnect`,async e=>{this.isInitialized(),await this.isValidDisconnect(e);let{topic:t}=e;this.pairings.keys.includes(t)&&(await this.sendRequest(t,`wc_pairingDelete`,W(`USER_DISCONNECTED`)),await this.deletePairing(t))}),J(this,`formatUriFromPairing`,e=>{this.isInitialized();let{topic:t,relay:n,expiry:r,methods:i}=e,a=this.core.crypto.keychain.get(t);return fl({protocol:this.core.protocol,version:this.core.version,topic:t,symKey:a,relay:n,expiryTimestamp:r,methods:i})}),J(this,`sendRequest`,async(e,t,n)=>{let r=N(t,n),i=await this.core.crypto.encode(e,r),a=Iu[t].req;return this.core.history.set(e,r),this.core.relayer.publish(e,i,a),r.id}),J(this,`sendResult`,async(e,t,n)=>{let r=ke(e,n),i=await this.core.crypto.encode(t,r),a=Iu[(await this.core.history.get(t,e)).request.method].res;await this.core.relayer.publish(t,i,a),await this.core.history.resolve(r)}),J(this,`sendError`,async(e,t,n)=>{let r=de(e,n),i=await this.core.crypto.encode(t,r),a=(await this.core.history.get(t,e)).request.method,o=Iu[a]?Iu[a].res:Iu.unregistered_method.res;await this.core.relayer.publish(t,i,o),await this.core.history.resolve(r)}),J(this,`deletePairing`,async(e,t)=>{await this.core.relayer.unsubscribe(e),await Promise.all([this.pairings.delete(e,W(`USER_DISCONNECTED`)),this.core.crypto.deleteSymKey(e),t?Promise.resolve():this.core.expirer.del(e)])}),J(this,`cleanup`,async()=>{let e=this.pairings.getAll().filter(e=>aa(e.expiry));await Promise.all(e.map(e=>this.deletePairing(e.topic)))}),J(this,`onRelayEventRequest`,async e=>{let{topic:t,payload:n}=e;switch(n.method){case`wc_pairingPing`:return await this.onPairingPingRequest(t,n);case`wc_pairingDelete`:return await this.onPairingDeleteRequest(t,n);default:return await this.onUnknownRpcMethodRequest(t,n)}}),J(this,`onRelayEventResponse`,async e=>{let{topic:t,payload:n}=e,r=(await this.core.history.get(t,n.id)).request.method;switch(r){case`wc_pairingPing`:return this.onPairingPingResponse(t,n);default:return this.onUnknownRpcMethodResponse(r)}}),J(this,`onPairingPingRequest`,async(e,t)=>{let{id:n}=t;try{this.isValidPing({topic:e}),await this.sendResult(n,e,!0),this.events.emit(Lu.ping,{id:n,topic:e})}catch(t){await this.sendError(n,e,t),this.logger.error(t)}}),J(this,`onPairingPingResponse`,(e,t)=>{let{id:n}=t;setTimeout(()=>{Ae(t)?this.events.emit(V(`pairing_ping`,n),{}):Oe(t)&&this.events.emit(V(`pairing_ping`,n),{error:t.error})},500)}),J(this,`onPairingDeleteRequest`,async(e,t)=>{let{id:n}=t;try{this.isValidDisconnect({topic:e}),await this.deletePairing(e),this.events.emit(Lu.delete,{id:n,topic:e})}catch(t){await this.sendError(n,e,t),this.logger.error(t)}}),J(this,`onUnknownRpcMethodRequest`,async(e,t)=>{let{id:n,method:r}=t;try{if(this.registeredMethods.includes(r))return;let t=W(`WC_METHOD_UNSUPPORTED`,r);await this.sendError(n,e,t),this.logger.error(t)}catch(t){await this.sendError(n,e,t),this.logger.error(t)}}),J(this,`onUnknownRpcMethodResponse`,e=>{this.registeredMethods.includes(e)||this.logger.error(W(`WC_METHOD_UNSUPPORTED`,e))}),J(this,`isValidPair`,(e,t)=>{var n;if(!Jl(e)){let{message:n}=U(`MISSING_OR_INVALID`,`pair() params: ${e}`);throw t.setError(Xu.malformed_pairing_uri),Error(n)}if(!Ml(e.uri)){let{message:n}=U(`MISSING_OR_INVALID`,`pair() uri: ${e.uri}`);throw t.setError(Xu.malformed_pairing_uri),Error(n)}let r=ll(e?.uri);if(!((n=r?.relay)!=null&&n.protocol)){let{message:e}=U(`MISSING_OR_INVALID`,`pair() uri#relay-protocol`);throw t.setError(Xu.malformed_pairing_uri),Error(e)}if(!(r!=null&&r.symKey)){let{message:e}=U(`MISSING_OR_INVALID`,`pair() uri#symKey`);throw t.setError(Xu.malformed_pairing_uri),Error(e)}if(r!=null&&r.expiryTimestamp&&(0,R.toMiliseconds)(r?.expiryTimestamp)<Date.now()){t.setError(Xu.pairing_expired);let{message:e}=U(`EXPIRED`,`pair() URI has expired. Please try again with a new connection URI.`);throw Error(e)}}),J(this,`isValidPing`,async e=>{if(!Jl(e)){let{message:t}=U(`MISSING_OR_INVALID`,`ping() params: ${e}`);throw Error(t)}let{topic:t}=e;await this.isValidPairingTopic(t)}),J(this,`isValidDisconnect`,async e=>{if(!Jl(e)){let{message:t}=U(`MISSING_OR_INVALID`,`disconnect() params: ${e}`);throw Error(t)}let{topic:t}=e;await this.isValidPairingTopic(t)}),J(this,`isValidPairingTopic`,async e=>{if(!Dl(e,!1)){let{message:t}=U(`MISSING_OR_INVALID`,`pairing topic should be a string: ${e}`);throw Error(t)}if(!this.pairings.keys.includes(e)){let{message:t}=U(`NO_MATCHING_KEY`,`pairing topic doesn't exist: ${e}`);throw Error(t)}if(aa(this.pairings.get(e).expiry)){await this.deletePairing(e);let{message:t}=U(`EXPIRED`,`pairing topic: ${e}`);throw Error(t)}}),this.core=e,this.logger=M(t,this.name),this.pairings=new Am(this.core,this.logger,this.name,this.storagePrefix)}get context(){return pe(this.logger)}isInitialized(){if(!this.initialized){let{message:e}=U(`NOT_INITIALIZED`,this.name);throw Error(e)}}registerRelayerEvents(){this.core.relayer.on(Ou.message,async e=>{let{topic:t,message:n,transportType:r}=e;if(this.pairings.keys.includes(t)&&r!==G.link_mode&&!this.ignoredPayloadTypes.includes(this.core.crypto.getPayloadType(n)))try{let e=await this.core.crypto.decode(t,n);je(e)?(this.core.history.set(t,e),await this.onRelayEventRequest({topic:t,payload:e})):be(e)&&(await this.core.history.resolve(e),await this.onRelayEventResponse({topic:t,payload:e}),this.core.history.delete(t,e.id)),await this.core.relayer.messages.ack(t,n)}catch(e){this.logger.error(e)}})}registerExpirerEvents(){this.core.expirer.on(Vu.expired,async e=>{let{topic:t}=ra(e.target);t&&this.pairings.keys.includes(t)&&(await this.deletePairing(t,!0),this.events.emit(Lu.expire,{topic:t}))})}},Pm=Object.defineProperty,Fm=(e,t,n)=>t in e?Pm(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Im=(e,t,n)=>Fm(e,typeof t==`symbol`?t:t+``,n),Lm=class extends ft{constructor(e,t){super(e,t),this.core=e,this.logger=t,Im(this,`records`,new Map),Im(this,`events`,new it.EventEmitter),Im(this,`name`,zu),Im(this,`version`,`0.3`),Im(this,`cached`,[]),Im(this,`initialized`,!1),Im(this,`storagePrefix`,_u),Im(this,`init`,async()=>{this.initialized||=(this.logger.trace(`Initialized`),await this.restore(),this.cached.forEach(e=>this.records.set(e.id,e)),this.cached=[],this.registerEventListeners(),!0)}),Im(this,`set`,(e,t,n)=>{if(this.isInitialized(),this.logger.debug(`Setting JSON-RPC request history record`),this.logger.trace({type:`method`,method:`set`,topic:e,request:t,chainId:n}),this.records.has(t.id))return;let r={id:t.id,topic:e,request:{method:t.method,params:t.params||null},chainId:n,expiry:ia(R.THIRTY_DAYS)};this.records.set(r.id,r),this.persist(),this.events.emit(Ru.created,r)}),Im(this,`resolve`,async e=>{if(this.isInitialized(),this.logger.debug(`Updating JSON-RPC response history record`),this.logger.trace({type:`method`,method:`update`,response:e}),!this.records.has(e.id))return;let t=await this.getRecord(e.id);typeof t.response>`u`&&(t.response=Oe(e)?{error:e.error}:{result:e.result},this.records.set(t.id,t),this.persist(),this.events.emit(Ru.updated,t))}),Im(this,`get`,async(e,t)=>(this.isInitialized(),this.logger.debug(`Getting record`),this.logger.trace({type:`method`,method:`get`,topic:e,id:t}),await this.getRecord(t))),Im(this,`delete`,(e,t)=>{this.isInitialized(),this.logger.debug(`Deleting record`),this.logger.trace({type:`method`,method:`delete`,id:t}),this.values.forEach(n=>{if(n.topic===e){if(typeof t<`u`&&n.id!==t)return;this.records.delete(n.id),this.events.emit(Ru.deleted,n)}}),this.persist()}),Im(this,`exists`,async(e,t)=>(this.isInitialized(),this.records.has(t)?(await this.getRecord(t)).topic===e:!1)),Im(this,`on`,(e,t)=>{this.events.on(e,t)}),Im(this,`once`,(e,t)=>{this.events.once(e,t)}),Im(this,`off`,(e,t)=>{this.events.off(e,t)}),Im(this,`removeListener`,(e,t)=>{this.events.removeListener(e,t)}),this.logger=M(t,this.name)}get context(){return pe(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+`//`+this.name}get size(){return this.records.size}get keys(){return Array.from(this.records.keys())}get values(){return Array.from(this.records.values())}get pending(){let e=[];return this.values.forEach(t=>{if(typeof t.response<`u`)return;let n={topic:t.topic,request:N(t.request.method,t.request.params,t.id),chainId:t.chainId};return e.push(n)}),e}async setJsonRpcRecords(e){await this.core.storage.setItem(this.storageKey,e)}async getJsonRpcRecords(){return await this.core.storage.getItem(this.storageKey)}getRecord(e){this.isInitialized();let t=this.records.get(e);if(!t){let{message:t}=U(`NO_MATCHING_KEY`,`${this.name}: ${e}`);throw Error(t)}return t}async persist(){await this.setJsonRpcRecords(this.values),this.events.emit(Ru.sync)}async restore(){try{let e=await this.getJsonRpcRecords();if(typeof e>`u`||!e.length)return;if(this.records.size){let{message:e}=U(`RESTORE_WILL_OVERRIDE`,this.name);throw this.logger.error(e),Error(e)}this.cached=e,this.logger.debug(`Successfully Restored records for ${this.name}`),this.logger.trace({type:`method`,method:`restore`,records:this.values})}catch(e){this.logger.debug(`Failed to Restore records for ${this.name}`),this.logger.error(e)}}registerEventListeners(){this.events.on(Ru.created,e=>{let t=Ru.created;this.logger.info(`Emitting ${t}`),this.logger.debug({type:`event`,event:t,record:e})}),this.events.on(Ru.updated,e=>{let t=Ru.updated;this.logger.info(`Emitting ${t}`),this.logger.debug({type:`event`,event:t,record:e})}),this.events.on(Ru.deleted,e=>{let t=Ru.deleted;this.logger.info(`Emitting ${t}`),this.logger.debug({type:`event`,event:t,record:e})}),this.core.heartbeat.on(re.pulse,()=>{this.cleanup()})}cleanup(){try{this.isInitialized();let e=!1;this.records.forEach(t=>{(0,R.toMiliseconds)(t.expiry||0)-Date.now()<=0&&(this.logger.info(`Deleting expired history log: ${t.id}`),this.records.delete(t.id),this.events.emit(Ru.deleted,t,!1),e=!0)}),e&&this.persist()}catch(e){this.logger.warn(e)}}isInitialized(){if(!this.initialized){let{message:e}=U(`NOT_INITIALIZED`,this.name);throw Error(e)}}},Rm=Object.defineProperty,zm=(e,t,n)=>t in e?Rm(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Bm=(e,t,n)=>zm(e,typeof t==`symbol`?t:t+``,n),Vm=class extends vt{constructor(e,t){super(e,t),this.core=e,this.logger=t,Bm(this,`expirations`,new Map),Bm(this,`events`,new it.EventEmitter),Bm(this,`name`,Bu),Bm(this,`version`,`0.3`),Bm(this,`cached`,[]),Bm(this,`initialized`,!1),Bm(this,`storagePrefix`,_u),Bm(this,`init`,async()=>{this.initialized||=(this.logger.trace(`Initialized`),await this.restore(),this.cached.forEach(e=>this.expirations.set(e.target,e)),this.cached=[],this.registerEventListeners(),!0)}),Bm(this,`has`,e=>{try{let t=this.formatTarget(e);return typeof this.getExpiration(t)<`u`}catch{return!1}}),Bm(this,`set`,(e,t)=>{this.isInitialized();let n=this.formatTarget(e),r={target:n,expiry:t};this.expirations.set(n,r),this.checkExpiry(n,r),this.events.emit(Vu.created,{target:n,expiration:r})}),Bm(this,`get`,e=>{this.isInitialized();let t=this.formatTarget(e);return this.getExpiration(t)}),Bm(this,`del`,e=>{if(this.isInitialized(),this.has(e)){let t=this.formatTarget(e),n=this.getExpiration(t);this.expirations.delete(t),this.events.emit(Vu.deleted,{target:t,expiration:n})}}),Bm(this,`on`,(e,t)=>{this.events.on(e,t)}),Bm(this,`once`,(e,t)=>{this.events.once(e,t)}),Bm(this,`off`,(e,t)=>{this.events.off(e,t)}),Bm(this,`removeListener`,(e,t)=>{this.events.removeListener(e,t)}),this.logger=M(t,this.name)}get context(){return pe(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+`//`+this.name}get length(){return this.expirations.size}get keys(){return Array.from(this.expirations.keys())}get values(){return Array.from(this.expirations.values())}formatTarget(e){if(typeof e==`string`)return ta(e);if(typeof e==`number`)return na(e);let{message:t}=U(`UNKNOWN_TYPE`,`Target type: ${typeof e}`);throw Error(t)}async setExpirations(e){await this.core.storage.setItem(this.storageKey,e)}async getExpirations(){return await this.core.storage.getItem(this.storageKey)}async persist(){await this.setExpirations(this.values),this.events.emit(Vu.sync)}async restore(){try{let e=await this.getExpirations();if(typeof e>`u`||!e.length)return;if(this.expirations.size){let{message:e}=U(`RESTORE_WILL_OVERRIDE`,this.name);throw this.logger.error(e),Error(e)}this.cached=e,this.logger.debug(`Successfully Restored expirations for ${this.name}`),this.logger.trace({type:`method`,method:`restore`,expirations:this.values})}catch(e){this.logger.debug(`Failed to Restore expirations for ${this.name}`),this.logger.error(e)}}getExpiration(e){let t=this.expirations.get(e);if(!t){let{message:t}=U(`NO_MATCHING_KEY`,`${this.name}: ${e}`);throw this.logger.warn(t),Error(t)}return t}checkExpiry(e,t){let{expiry:n}=t;(0,R.toMiliseconds)(n)-Date.now()<=0&&this.expire(e,t)}expire(e,t){this.expirations.delete(e),this.events.emit(Vu.expired,{target:e,expiration:t})}checkExpirations(){this.core.relayer.connected&&this.expirations.forEach((e,t)=>this.checkExpiry(t,e))}registerEventListeners(){this.core.heartbeat.on(re.pulse,()=>this.checkExpirations()),this.events.on(Vu.created,e=>{let t=Vu.created;this.logger.info(`Emitting ${t}`),this.logger.debug({type:`event`,event:t,data:e}),this.persist()}),this.events.on(Vu.expired,e=>{let t=Vu.expired;this.logger.info(`Emitting ${t}`),this.logger.debug({type:`event`,event:t,data:e}),this.persist()}),this.events.on(Vu.deleted,e=>{let t=Vu.deleted;this.logger.info(`Emitting ${t}`),this.logger.debug({type:`event`,event:t,data:e}),this.persist()})}isInitialized(){if(!this.initialized){let{message:e}=U(`NOT_INITIALIZED`,this.name);throw Error(e)}}},Hm=Object.defineProperty,Um=(e,t,n)=>t in e?Hm(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Wm=(e,t,n)=>Um(e,typeof t==`symbol`?t:t+``,n),Gm=class extends yt{constructor(e,t,n){super(e,t,n),this.core=e,this.logger=t,this.store=n,Wm(this,`name`,Hu),Wm(this,`abortController`),Wm(this,`isDevEnv`),Wm(this,`verifyUrlV3`,Gu),Wm(this,`storagePrefix`,_u),Wm(this,`version`,2),Wm(this,`publicKey`),Wm(this,`fetchPromise`),Wm(this,`init`,async()=>{this.isDevEnv||(this.publicKey=await this.store.getItem(this.storeKey),this.publicKey&&(0,R.toMiliseconds)(this.publicKey?.expiresAt)<Date.now()&&(this.logger.debug(`verify v2 public key expired`),await this.removePublicKey()))}),Wm(this,`register`,async e=>{if(!Bi()||this.isDevEnv)return;let t=window.location.origin,{id:n,decryptedId:r}=e,i=`${this.verifyUrlV3}/attestation?projectId=${this.core.projectId}&origin=${t}&id=${n}&decryptedId=${r}`;try{let e=(0,Dt.getDocument)(),t=this.startAbortTimer(R.ONE_SECOND*5),r=await new Promise((r,a)=>{let o=()=>{window.removeEventListener(`message`,c),e.body.removeChild(s),a(`attestation aborted`)};this.abortController.signal.addEventListener(`abort`,o);let s=e.createElement(`iframe`);s.src=i,s.style.display=`none`,s.addEventListener(`error`,o,{signal:this.abortController.signal});let c=i=>{if(i.data&&typeof i.data==`string`)try{let a=JSON.parse(i.data);if(a.type===`verify_attestation`){if(ue(a.attestation).payload.id!==n)return;clearInterval(t),e.body.removeChild(s),this.abortController.signal.removeEventListener(`abort`,o),window.removeEventListener(`message`,c),r(a.attestation===null?``:a.attestation)}}catch(e){this.logger.warn(e)}};e.body.appendChild(s),window.addEventListener(`message`,c,{signal:this.abortController.signal})});return this.logger.debug(`jwt attestation`,r),r}catch(e){this.logger.warn(e)}return``}),Wm(this,`resolve`,async e=>{if(this.isDevEnv)return``;let{attestationId:t,hash:n,encryptedId:r}=e;if(t===``){this.logger.debug(`resolve: attestationId is empty, skipping`);return}if(t){if(ue(t).payload.id!==r)return;let e=await this.isValidJwtAttestation(t);if(e){if(!e.isVerified){this.logger.warn(`resolve: jwt attestation: origin url not verified`);return}return e}}if(!n)return;let i=this.getVerifyUrl(e?.verifyUrl);return this.fetchAttestation(n,i)}),Wm(this,`fetchAttestation`,async(e,t)=>{this.logger.debug(`resolving attestation: ${e} from url: ${t}`);let n=this.startAbortTimer(R.ONE_SECOND*5),r=await fetch(`${t}/attestation/${e}?v2Supported=true`,{signal:this.abortController.signal});return clearTimeout(n),r.status===200?await r.json():void 0}),Wm(this,`getVerifyUrl`,e=>{let t=e||`https://verify.walletconnect.org`;return Ku.includes(t)||(this.logger.info(`verify url: ${t}, not included in trusted list, assigning default: https://verify.walletconnect.org`),t=`https://verify.walletconnect.org`),t}),Wm(this,`fetchPublicKey`,async()=>{try{this.logger.debug(`fetching public key from: ${this.verifyUrlV3}`);let e=this.startAbortTimer(R.FIVE_SECONDS),t=await fetch(`${this.verifyUrlV3}/public-key`,{signal:this.abortController.signal});return clearTimeout(e),await t.json()}catch(e){this.logger.warn(e)}}),Wm(this,`persistPublicKey`,async e=>{this.logger.debug(`persisting public key to local storage`,e),await this.store.setItem(this.storeKey,e),this.publicKey=e}),Wm(this,`removePublicKey`,async()=>{this.logger.debug(`removing verify v2 public key from storage`),await this.store.removeItem(this.storeKey),this.publicKey=void 0}),Wm(this,`isValidJwtAttestation`,async e=>{let t=await this.getPublicKey();try{if(t)return this.validateAttestation(e,t)}catch(e){this.logger.error(e),this.logger.warn(`error validating attestation`)}let n=await this.fetchAndPersistPublicKey();try{if(n)return this.validateAttestation(e,n)}catch(e){this.logger.error(e),this.logger.warn(`error validating attestation`)}}),Wm(this,`getPublicKey`,async()=>this.publicKey?this.publicKey:await this.fetchAndPersistPublicKey()),Wm(this,`fetchAndPersistPublicKey`,async()=>{if(this.fetchPromise)return await this.fetchPromise,this.publicKey;this.fetchPromise=new Promise(async e=>{let t=await this.fetchPublicKey();t&&(await this.persistPublicKey(t),e(t))});let e=await this.fetchPromise;return this.fetchPromise=void 0,e}),Wm(this,`validateAttestation`,(e,t)=>{let n=al(e,t.publicKey),r={hasExpired:(0,R.toMiliseconds)(n.exp)<Date.now(),payload:n};if(r.hasExpired)throw this.logger.warn(`resolve: jwt attestation expired`),Error(`JWT attestation expired`);return{origin:r.payload.origin,isScam:r.payload.isScam,isVerified:r.payload.isVerified}}),this.logger=M(t,this.name),this.abortController=new AbortController,this.isDevEnv=pa(),this.init()}get storeKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+`//verify:public:key`}get context(){return pe(this.logger)}startAbortTimer(e){return this.abortController=new AbortController,setTimeout(()=>this.abortController.abort(),(0,R.toMiliseconds)(e))}},Km=Object.defineProperty,qm=(e,t,n)=>t in e?Km(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Jm=(e,t,n)=>qm(e,typeof t==`symbol`?t:t+``,n),Ym=class extends bt{constructor(e,t){super(e,t),this.projectId=e,this.logger=t,Jm(this,`context`,qu),Jm(this,`registerDeviceToken`,async e=>{let{clientId:t,token:n,notificationType:r,enableEncrypted:i=!1}=e,a=`${Ju}/${this.projectId}/clients`;await fetch(a,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({client_id:t,type:r,token:n,always_raw:i})})}),this.logger=M(t,this.context)}},Xm=Object.defineProperty,Zm=Object.getOwnPropertySymbols,Qm=Object.prototype.hasOwnProperty,$m=Object.prototype.propertyIsEnumerable,eh=(e,t,n)=>t in e?Xm(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,th=(e,t)=>{for(var n in t||={})Qm.call(t,n)&&eh(e,n,t[n]);if(Zm)for(var n of Zm(t))$m.call(t,n)&&eh(e,n,t[n]);return e},nh=(e,t,n)=>eh(e,typeof t==`symbol`?t:t+``,n),rh=class extends xt{constructor(e,t,n=!0){super(e,t,n),this.core=e,this.logger=t,nh(this,`context`,nd),nh(this,`storagePrefix`,_u),nh(this,`storageVersion`,td),nh(this,`events`,new Map),nh(this,`shouldPersist`,!1),nh(this,`init`,async()=>{if(!pa())try{let e={eventId:fa(),timestamp:Date.now(),domain:this.getAppDomain(),props:{event:`INIT`,type:``,properties:{client_id:await this.core.crypto.getClientId(),user_agent:qi(this.core.relayer.protocol,this.core.relayer.version,Au)}}};await this.sendEvent([e])}catch(e){this.logger.warn(e)}}),nh(this,`createEvent`,e=>{let{event:t=`ERROR`,type:n=``,properties:{topic:r,trace:i}}=e,a=fa(),o=this.core.projectId||``,s=th({eventId:a,timestamp:Date.now(),props:{event:t,type:n,properties:{topic:r,trace:i}},bundleId:o,domain:this.getAppDomain()},this.setMethods(a));return this.telemetryEnabled&&(this.events.set(a,s),this.shouldPersist=!0),s}),nh(this,`getEvent`,e=>{let{eventId:t,topic:n}=e;if(t)return this.events.get(t);let r=Array.from(this.events.values()).find(e=>e.props.properties.topic===n);if(r)return th(th({},r),this.setMethods(r.eventId))}),nh(this,`deleteEvent`,e=>{let{eventId:t}=e;this.events.delete(t),this.shouldPersist=!0}),nh(this,`setEventListeners`,()=>{this.core.heartbeat.on(re.pulse,async()=>{this.shouldPersist&&await this.persist(),this.events.forEach(e=>{(0,R.fromMiliseconds)(Date.now())-(0,R.fromMiliseconds)(e.timestamp)>86400&&(this.events.delete(e.eventId),this.shouldPersist=!0)})})}),nh(this,`setMethods`,e=>({addTrace:t=>this.addTrace(e,t),setError:t=>this.setError(e,t)})),nh(this,`addTrace`,(e,t)=>{let n=this.events.get(e);n&&(n.props.properties.trace.push(t),this.events.set(e,n),this.shouldPersist=!0)}),nh(this,`setError`,(e,t)=>{let n=this.events.get(e);n&&(n.props.type=t,n.timestamp=Date.now(),this.events.set(e,n),this.shouldPersist=!0)}),nh(this,`persist`,async()=>{await this.core.storage.setItem(this.storageKey,Array.from(this.events.values())),this.shouldPersist=!1}),nh(this,`restore`,async()=>{try{let e=await this.core.storage.getItem(this.storageKey)||[];if(!e.length)return;e.forEach(e=>{this.events.set(e.eventId,th(th({},e),this.setMethods(e.eventId)))})}catch(e){this.logger.warn(e)}}),nh(this,`submit`,async()=>{if(!this.telemetryEnabled||this.events.size===0)return;let e=[];for(let[t,n]of this.events)n.props.type&&e.push(n);if(e.length!==0)try{if((await this.sendEvent(e)).ok)for(let t of e)this.events.delete(t.eventId),this.shouldPersist=!0}catch(e){this.logger.warn(e)}}),nh(this,`sendEvent`,async e=>{let t=this.getAppDomain()?``:`&sp=desktop`;return await fetch(`${rd}?projectId=${this.core.projectId}&st=events_sdk&sv=js-${Au}${t}`,{method:`POST`,body:JSON.stringify(e)})}),nh(this,`getAppDomain`,()=>Wi().url),this.logger=M(t,this.context),this.telemetryEnabled=n,n?this.restore().then(async()=>{await this.submit(),this.setEventListeners()}):this.persist()}get storageKey(){return this.storagePrefix+this.storageVersion+this.core.customStoragePrefix+`//`+this.context}},ih=Object.defineProperty,ah=Object.getOwnPropertySymbols,oh=Object.prototype.hasOwnProperty,sh=Object.prototype.propertyIsEnumerable,ch=(e,t,n)=>t in e?ih(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,lh=(e,t)=>{for(var n in t||={})oh.call(t,n)&&ch(e,n,t[n]);if(ah)for(var n of ah(t))sh.call(t,n)&&ch(e,n,t[n]);return e},Y=(e,t,n)=>ch(e,typeof t==`symbol`?t:t+``,n),uh=class e extends ct{constructor(e){var t;super(e),Y(this,`protocol`,`wc`),Y(this,`version`,2),Y(this,`name`,gu),Y(this,`relayUrl`),Y(this,`projectId`),Y(this,`customStoragePrefix`),Y(this,`events`,new it.EventEmitter),Y(this,`logger`),Y(this,`heartbeat`),Y(this,`relayer`),Y(this,`crypto`),Y(this,`storage`),Y(this,`history`),Y(this,`expirer`),Y(this,`pairing`),Y(this,`verify`),Y(this,`echoClient`),Y(this,`linkModeSupportedApps`),Y(this,`eventClient`),Y(this,`initialized`,!1),Y(this,`logChunkController`),Y(this,`on`,(e,t)=>this.events.on(e,t)),Y(this,`once`,(e,t)=>this.events.once(e,t)),Y(this,`off`,(e,t)=>this.events.off(e,t)),Y(this,`removeListener`,(e,t)=>this.events.removeListener(e,t)),Y(this,`dispatchEnvelope`,({topic:e,message:t,sessionExists:n})=>{if(!e||!t)return;let r={topic:e,message:t,publishedAt:Date.now(),transportType:G.link_mode};this.relayer.onLinkMessageEvent(r,{sessionExists:n})}),this.projectId=e?.projectId,this.relayUrl=e?.relayUrl||`wss://relay.walletconnect.org`,this.customStoragePrefix=e!=null&&e.customStoragePrefix?`:${e.customStoragePrefix}`:``;let{logger:n,chunkLoggerController:r}=Me({opts:te({level:typeof e?.logger==`string`&&e.logger?e.logger:vu.logger,name:gu}),maxSizeInBytes:e?.maxLogBlobSizeInBytes,loggerOverride:e?.logger});this.logChunkController=r,(t=this.logChunkController)!=null&&t.downloadLogsBlobInBrowser&&(window.downloadLogsBlobInBrowser=async()=>{var e,t;(e=this.logChunkController)!=null&&e.downloadLogsBlobInBrowser&&((t=this.logChunkController)==null||t.downloadLogsBlobInBrowser({clientId:await this.crypto.getClientId()}))}),this.logger=M(n,this.name),this.heartbeat=new Ee,this.crypto=new Qf(this,this.logger,e?.keychain),this.history=new Lm(this,this.logger),this.expirer=new Vm(this,this.logger),this.storage=e!=null&&e.storage?e.storage:new he(lh(lh({},yu),e?.storageOptions)),this.relayer=new Vp({core:this,logger:this.logger,relayUrl:this.relayUrl,projectId:this.projectId}),this.pairing=new Nm(this,this.logger),this.verify=new Gm(this,this.logger,this.storage),this.echoClient=new Ym(this.projectId||``,this.logger),this.linkModeSupportedApps=[],this.eventClient=new rh(this,this.logger,e?.telemetryEnabled)}static async init(t){let n=new e(t);await n.initialize();let r=await n.crypto.getClientId();return await n.storage.setItem(Mu,r),n}get context(){return pe(this.logger)}async start(){this.initialized||await this.initialize()}async getLogsBlob(){return this.logChunkController?.logsToBlob({clientId:await this.crypto.getClientId()})}async addLinkModeSupportedApp(e){this.linkModeSupportedApps.includes(e)||(this.linkModeSupportedApps.push(e),await this.storage.setItem(`WALLETCONNECT_LINK_MODE_APPS`,this.linkModeSupportedApps))}async initialize(){this.logger.trace(`Initialized`);try{await this.crypto.init(),await this.history.init(),await this.expirer.init(),await this.relayer.init(),await this.heartbeat.init(),await this.pairing.init(),this.linkModeSupportedApps=await this.storage.getItem(`WALLETCONNECT_LINK_MODE_APPS`)||[],this.initialized=!0,this.logger.info(`Core Initialization Success`)}catch(e){throw this.logger.warn(`Core Initialization Failure at epoch ${Date.now()}`,e),this.logger.error(e.message),e}}},dh=`client`,fh=`wc@2:${dh}:`,ph={name:dh,logger:`error`,controller:!1,relayUrl:`wss://relay.walletconnect.org`},mh=`WALLETCONNECT_DEEPLINK_CHOICE`,hh=`proposal`;R.THIRTY_DAYS;var gh=`Proposal expired`,_h=`session`,vh=R.SEVEN_DAYS,yh=`engine`,bh={wc_sessionPropose:{req:{ttl:R.FIVE_MINUTES,prompt:!0,tag:1100},res:{ttl:R.FIVE_MINUTES,prompt:!1,tag:1101},reject:{ttl:R.FIVE_MINUTES,prompt:!1,tag:1120},autoReject:{ttl:R.FIVE_MINUTES,prompt:!1,tag:1121}},wc_sessionSettle:{req:{ttl:R.FIVE_MINUTES,prompt:!1,tag:1102},res:{ttl:R.FIVE_MINUTES,prompt:!1,tag:1103}},wc_sessionUpdate:{req:{ttl:R.ONE_DAY,prompt:!1,tag:1104},res:{ttl:R.ONE_DAY,prompt:!1,tag:1105}},wc_sessionExtend:{req:{ttl:R.ONE_DAY,prompt:!1,tag:1106},res:{ttl:R.ONE_DAY,prompt:!1,tag:1107}},wc_sessionRequest:{req:{ttl:R.FIVE_MINUTES,prompt:!0,tag:1108},res:{ttl:R.FIVE_MINUTES,prompt:!1,tag:1109}},wc_sessionEvent:{req:{ttl:R.FIVE_MINUTES,prompt:!0,tag:1110},res:{ttl:R.FIVE_MINUTES,prompt:!1,tag:1111}},wc_sessionDelete:{req:{ttl:R.ONE_DAY,prompt:!1,tag:1112},res:{ttl:R.ONE_DAY,prompt:!1,tag:1113}},wc_sessionPing:{req:{ttl:R.ONE_DAY,prompt:!1,tag:1114},res:{ttl:R.ONE_DAY,prompt:!1,tag:1115}},wc_sessionAuthenticate:{req:{ttl:R.ONE_HOUR,prompt:!0,tag:1116},res:{ttl:R.ONE_HOUR,prompt:!1,tag:1117},reject:{ttl:R.FIVE_MINUTES,prompt:!1,tag:1118},autoReject:{ttl:R.FIVE_MINUTES,prompt:!1,tag:1119}}},xh={min:R.FIVE_MINUTES,max:R.SEVEN_DAYS},Sh={idle:`IDLE`,active:`ACTIVE`},Ch={eth_sendTransaction:{key:``},eth_sendRawTransaction:{key:``},wallet_sendCalls:{key:``},solana_signTransaction:{key:`signature`},solana_signAllTransactions:{key:`transactions`},solana_signAndSendTransaction:{key:`signature`}},wh=`request`,Th=[`wc_sessionPropose`,`wc_sessionRequest`,`wc_authRequest`,`wc_sessionAuthenticate`],Eh=`auth`,Dh=`authKeys`,Oh=`pairingTopics`,kh=`requests`,Ah=`wc@1.5:${Eh}:`,jh=`${Ah}:PUB_KEY`,Mh=Object.defineProperty,Nh=Object.defineProperties,Ph=Object.getOwnPropertyDescriptors,Fh=Object.getOwnPropertySymbols,Ih=Object.prototype.hasOwnProperty,Lh=Object.prototype.propertyIsEnumerable,Rh=(e,t,n)=>t in e?Mh(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,X=(e,t)=>{for(var n in t||={})Ih.call(t,n)&&Rh(e,n,t[n]);if(Fh)for(var n of Fh(t))Lh.call(t,n)&&Rh(e,n,t[n]);return e},zh=(e,t)=>Nh(e,Ph(t)),Z=(e,t,n)=>Rh(e,typeof t==`symbol`?t:t+``,n),Bh=class extends Et{constructor(e){super(e),Z(this,`name`,yh),Z(this,`events`,new it.default),Z(this,`initialized`,!1),Z(this,`requestQueue`,{state:Sh.idle,queue:[]}),Z(this,`sessionRequestQueue`,{state:Sh.idle,queue:[]}),Z(this,`requestQueueDelay`,R.ONE_SECOND),Z(this,`expectedPairingMethodMap`,new Map),Z(this,`recentlyDeletedMap`,new Map),Z(this,`recentlyDeletedLimit`,200),Z(this,`relayMessageCache`,[]),Z(this,`pendingSessions`,new Map),Z(this,`init`,async()=>{this.initialized||(await this.cleanup(),this.registerRelayerEvents(),this.registerExpirerEvents(),this.registerPairingEvents(),await this.registerLinkModeListeners(),this.client.core.pairing.register({methods:Object.keys(bh)}),this.initialized=!0,setTimeout(async()=>{await this.processPendingMessageEvents(),this.sessionRequestQueue.queue=this.getPendingSessionRequests(),this.processSessionRequestQueue()},(0,R.toMiliseconds)(this.requestQueueDelay)))}),Z(this,`connect`,async e=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();let t=zh(X({},e),{requiredNamespaces:e.requiredNamespaces||{},optionalNamespaces:e.optionalNamespaces||{}});await this.isValidConnect(t);let{pairingTopic:n,requiredNamespaces:r,optionalNamespaces:i,sessionProperties:a,scopedProperties:o,relays:s}=t,c=n,l,u=!1;try{if(c){let e=this.client.core.pairing.pairings.get(c);this.client.logger.warn(`connect() with existing pairing topic is deprecated and will be removed in the next major release.`),u=e.active}}catch(e){throw this.client.logger.error(`connect() -> pairing.get(${c}) failed`),e}if(!c||!u){let{topic:e,uri:t}=await this.client.core.pairing.create();c=e,l=t}if(!c){let{message:e}=U(`NO_MATCHING_KEY`,`connect() pairing topic: ${c}`);throw Error(e)}let d=await this.client.core.crypto.generateKeyPair(),f=bh.wc_sessionPropose.req.ttl||R.FIVE_MINUTES,p=ia(f),m=zh(X(X({requiredNamespaces:r,optionalNamespaces:i,relays:s??[{protocol:`irn`}],proposer:{publicKey:d,metadata:this.client.metadata},expiryTimestamp:p,pairingTopic:c},a&&{sessionProperties:a}),o&&{scopedProperties:o}),{id:F()}),h=V(`session_connect`,m.id),{reject:g,resolve:_,done:v}=Qi(f,gh),y=({id:e})=>{e===m.id&&(this.client.events.off(`proposal_expire`,y),this.pendingSessions.delete(m.id),this.events.emit(h,{error:{message:`Proposal expired`,code:0}}))};return this.client.events.on(`proposal_expire`,y),this.events.once(h,({error:e,session:t})=>{this.client.events.off(`proposal_expire`,y),e?g(e):t&&_(t)}),await this.sendRequest({topic:c,method:`wc_sessionPropose`,params:m,throwOnFailedPublish:!0,clientRpcId:m.id}),await this.setProposal(m.id,m),{uri:l,approval:v}}),Z(this,`pair`,async e=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{return await this.client.core.pairing.pair(e)}catch(e){throw this.client.logger.error(`pair() failed`),e}}),Z(this,`approve`,async e=>{let t=this.client.core.eventClient.createEvent({properties:{topic:(e?.id)?.toString(),trace:[Zu.session_approve_started]}});try{this.isInitialized(),await this.confirmOnlineStateOrThrow()}catch(e){throw t.setError(Qu.no_internet_connection),e}try{await this.isValidProposalId(e?.id)}catch(n){throw this.client.logger.error(`approve() -> proposal.get(${e?.id}) failed`),t.setError(Qu.proposal_not_found),n}try{await this.isValidApprove(e)}catch(e){throw this.client.logger.error(`approve() -> isValidApprove() failed`),t.setError(Qu.session_approve_namespace_validation_failure),e}let{id:n,relayProtocol:r,namespaces:i,sessionProperties:a,scopedProperties:o,sessionConfig:s}=e,c=this.client.proposal.get(n);this.client.core.eventClient.deleteEvent({eventId:t.eventId});let{pairingTopic:l,proposer:u,requiredNamespaces:d,optionalNamespaces:f}=c,p=this.client.core.eventClient?.getEvent({topic:l});p||=this.client.core.eventClient?.createEvent({type:Zu.session_approve_started,properties:{topic:l,trace:[Zu.session_approve_started,Zu.session_namespaces_validation_success]}});let m=await this.client.core.crypto.generateKeyPair(),h=u.publicKey,g=await this.client.core.crypto.generateSharedKey(m,h),_=X(X(X({relay:{protocol:r??`irn`},namespaces:i,controller:{publicKey:m,metadata:this.client.metadata},expiry:ia(vh)},a&&{sessionProperties:a}),o&&{scopedProperties:o}),s&&{sessionConfig:s}),v=G.relay;p.addTrace(Zu.subscribing_session_topic);try{await this.client.core.relayer.subscribe(g,{transportType:v})}catch(e){throw p.setError(Qu.subscribe_session_topic_failure),e}p.addTrace(Zu.subscribe_session_topic_success);let y=zh(X({},_),{topic:g,requiredNamespaces:d,optionalNamespaces:f,pairingTopic:l,acknowledged:!1,self:_.controller,peer:{publicKey:u.publicKey,metadata:u.metadata},controller:m,transportType:G.relay});await this.client.session.set(g,y),p.addTrace(Zu.store_session);try{p.addTrace(Zu.publishing_session_settle),await this.sendRequest({topic:g,method:`wc_sessionSettle`,params:_,throwOnFailedPublish:!0}).catch(e=>{throw p?.setError(Qu.session_settle_publish_failure),e}),p.addTrace(Zu.session_settle_publish_success),p.addTrace(Zu.publishing_session_approve),await this.sendResult({id:n,topic:l,result:{relay:{protocol:r??`irn`},responderPublicKey:m},throwOnFailedPublish:!0}).catch(e=>{throw p?.setError(Qu.session_approve_publish_failure),e}),p.addTrace(Zu.session_approve_publish_success)}catch(e){throw this.client.logger.error(e),this.client.session.delete(g,W(`USER_DISCONNECTED`)),await this.client.core.relayer.unsubscribe(g),e}return this.client.core.eventClient.deleteEvent({eventId:p.eventId}),await this.client.core.pairing.updateMetadata({topic:l,metadata:u.metadata}),await this.client.proposal.delete(n,W(`USER_DISCONNECTED`)),await this.client.core.pairing.activate({topic:l}),await this.setExpiry(g,ia(vh)),{topic:g,acknowledged:()=>Promise.resolve(this.client.session.get(g))}}),Z(this,`reject`,async e=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{await this.isValidReject(e)}catch(e){throw this.client.logger.error(`reject() -> isValidReject() failed`),e}let{id:t,reason:n}=e,r;try{r=this.client.proposal.get(t).pairingTopic}catch(e){throw this.client.logger.error(`reject() -> proposal.get(${t}) failed`),e}r&&(await this.sendError({id:t,topic:r,error:n,rpcOpts:bh.wc_sessionPropose.reject}),await this.client.proposal.delete(t,W(`USER_DISCONNECTED`)))}),Z(this,`update`,async e=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{await this.isValidUpdate(e)}catch(e){throw this.client.logger.error(`update() -> isValidUpdate() failed`),e}let{topic:t,namespaces:n}=e,{done:r,resolve:i,reject:a}=Qi(),o=F(),s=fe().toString(),c=this.client.session.get(t).namespaces;return this.events.once(V(`session_update`,o),({error:e})=>{e?a(e):i()}),await this.client.session.update(t,{namespaces:n}),await this.sendRequest({topic:t,method:`wc_sessionUpdate`,params:{namespaces:n},throwOnFailedPublish:!0,clientRpcId:o,relayRpcId:s}).catch(e=>{this.client.logger.error(e),this.client.session.update(t,{namespaces:c}),a(e)}),{acknowledged:r}}),Z(this,`extend`,async e=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{await this.isValidExtend(e)}catch(e){throw this.client.logger.error(`extend() -> isValidExtend() failed`),e}let{topic:t}=e,n=F(),{done:r,resolve:i,reject:a}=Qi();return this.events.once(V(`session_extend`,n),({error:e})=>{e?a(e):i()}),await this.setExpiry(t,ia(vh)),this.sendRequest({topic:t,method:`wc_sessionExtend`,params:{},clientRpcId:n,throwOnFailedPublish:!0}).catch(e=>{a(e)}),{acknowledged:r}}),Z(this,`request`,async e=>{this.isInitialized();try{await this.isValidRequest(e)}catch(e){throw this.client.logger.error(`request() -> isValidRequest() failed`),e}let{chainId:t,request:n,topic:r,expiry:i=bh.wc_sessionRequest.req.ttl}=e,a=this.client.session.get(r);a?.transportType===G.relay&&await this.confirmOnlineStateOrThrow();let o=F(),s=fe().toString(),{done:c,resolve:l,reject:u}=Qi(i,`Request expired. Please try again.`);this.events.once(V(`session_request`,o),({error:e,result:t})=>{e?u(e):l(t)});let d=`wc_sessionRequest`,f=this.getAppLinkIfEnabled(a.peer.metadata,a.transportType);if(f)return await this.sendRequest({clientRpcId:o,relayRpcId:s,topic:r,method:d,params:{request:zh(X({},n),{expiryTimestamp:ia(i)}),chainId:t},expiry:i,throwOnFailedPublish:!0,appLink:f}).catch(e=>u(e)),this.client.events.emit(`session_request_sent`,{topic:r,request:n,chainId:t,id:o}),await c();let p={request:zh(X({},n),{expiryTimestamp:ia(i)}),chainId:t},m=this.shouldSetTVF(d,p);return await Promise.all([new Promise(async e=>{await this.sendRequest(X({clientRpcId:o,relayRpcId:s,topic:r,method:d,params:p,expiry:i,throwOnFailedPublish:!0},m&&{tvf:this.getTVFParams(o,p)})).catch(e=>u(e)),this.client.events.emit(`session_request_sent`,{topic:r,request:n,chainId:t,id:o}),e()}),new Promise(async e=>{var t;(t=a.sessionConfig)!=null&&t.disableDeepLink||await sa({id:o,topic:r,wcDeepLink:await ua(this.client.core.storage,mh)}),e()}),c()]).then(e=>e[2])}),Z(this,`respond`,async e=>{this.isInitialized(),await this.isValidRespond(e);let{topic:t,response:n}=e,{id:r}=n,i=this.client.session.get(t);i.transportType===G.relay&&await this.confirmOnlineStateOrThrow();let a=this.getAppLinkIfEnabled(i.peer.metadata,i.transportType);Ae(n)?await this.sendResult({id:r,topic:t,result:n.result,throwOnFailedPublish:!0,appLink:a}):Oe(n)&&await this.sendError({id:r,topic:t,error:n.error,appLink:a}),this.cleanupAfterResponse(e)}),Z(this,`ping`,async e=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{await this.isValidPing(e)}catch(e){throw this.client.logger.error(`ping() -> isValidPing() failed`),e}let{topic:t}=e;if(this.client.session.keys.includes(t)){let e=F(),n=fe().toString(),{done:r,resolve:i,reject:a}=Qi();this.events.once(V(`session_ping`,e),({error:e})=>{e?a(e):i()}),await Promise.all([this.sendRequest({topic:t,method:`wc_sessionPing`,params:{},throwOnFailedPublish:!0,clientRpcId:e,relayRpcId:n}),r()])}else this.client.core.pairing.pairings.keys.includes(t)&&(this.client.logger.warn(`ping() on pairing topic is deprecated and will be removed in the next major release.`),await this.client.core.pairing.ping({topic:t}))}),Z(this,`emit`,async e=>{this.isInitialized(),await this.confirmOnlineStateOrThrow(),await this.isValidEmit(e);let{topic:t,event:n,chainId:r}=e,i=fe().toString(),a=F();await this.sendRequest({topic:t,method:`wc_sessionEvent`,params:{event:n,chainId:r},throwOnFailedPublish:!0,relayRpcId:i,clientRpcId:a})}),Z(this,`disconnect`,async e=>{this.isInitialized(),await this.confirmOnlineStateOrThrow(),await this.isValidDisconnect(e);let{topic:t}=e;if(this.client.session.keys.includes(t))await this.sendRequest({topic:t,method:`wc_sessionDelete`,params:W(`USER_DISCONNECTED`),throwOnFailedPublish:!0}),await this.deleteSession({topic:t,emitEvent:!1});else if(this.client.core.pairing.pairings.keys.includes(t))await this.client.core.pairing.disconnect({topic:t});else{let{message:e}=U(`MISMATCHED_TOPIC`,`Session or pairing topic not found: ${t}`);throw Error(e)}}),Z(this,`find`,e=>(this.isInitialized(),this.client.session.getAll().filter(t=>kl(t,e)))),Z(this,`getPendingSessionRequests`,()=>this.client.pendingRequest.getAll()),Z(this,`authenticate`,async(e,t)=>{this.isInitialized(),this.isValidAuthenticate(e);let n=t&&this.client.core.linkModeSupportedApps.includes(t)&&this.client.metadata.redirect?.linkMode,r=n?G.link_mode:G.relay;r===G.relay&&await this.confirmOnlineStateOrThrow();let{chains:i,statement:a=``,uri:o,domain:s,nonce:c,type:l,exp:u,nbf:d,methods:f=[],expiry:p}=e,m=[...e.resources||[]],{topic:h,uri:g}=await this.client.core.pairing.create({methods:[`wc_sessionAuthenticate`],transportType:r});this.client.logger.info({message:`Generated new pairing`,pairing:{topic:h,uri:g}});let _=await this.client.core.crypto.generateKeyPair(),v=Hc(_);if(await Promise.all([this.client.auth.authKeys.set(jh,{responseTopic:v,publicKey:_}),this.client.auth.pairingTopics.set(v,{topic:v,pairingTopic:h})]),await this.client.core.relayer.subscribe(v,{transportType:r}),this.client.logger.info(`sending request to new pairing topic: ${h}`),f.length>0){let{namespace:e}=Ni(i[0]),t=Ro(e,`request`,f);Go(m)&&(t=Bo(t,m.pop())),m.push(t)}let y=p&&p>bh.wc_sessionAuthenticate.req.ttl?p:bh.wc_sessionAuthenticate.req.ttl,b={authPayload:{type:l??`caip122`,chains:i,statement:a,aud:o,domain:s,version:`1`,nonce:c,iat:new Date().toISOString(),exp:u,nbf:d,resources:m},requester:{publicKey:_,metadata:this.client.metadata},expiryTimestamp:ia(y)},ee={requiredNamespaces:{},optionalNamespaces:{eip155:{chains:i,methods:[...new Set([`personal_sign`,...f])],events:[`chainChanged`,`accountsChanged`]}},relays:[{protocol:`irn`}],pairingTopic:h,proposer:{publicKey:_,metadata:this.client.metadata},expiryTimestamp:ia(bh.wc_sessionPropose.req.ttl),id:F()},{done:x,resolve:S,reject:C}=Qi(y,`Request expired`),w=F(),T=V(`session_connect`,ee.id),E=V(`session_request`,w),D=async({error:e,session:t})=>{this.events.off(E,O),e?C(e):t&&S({session:t})},O=async e=>{var n,i,a;if(await this.deletePendingAuthRequest(w,{message:`fulfilled`,code:0}),e.error){let t=W(`WC_METHOD_UNSUPPORTED`,`wc_sessionAuthenticate`);return e.error.code===t.code?void 0:(this.events.off(T,D),C(e.error.message))}await this.deleteProposal(ee.id),this.events.off(T,D);let{cacaos:o,responder:s}=e.result,c=[],l=[];for(let e of o){await ko({cacao:e,projectId:this.client.core.projectId})||(this.client.logger.error(e,`Signature verification failed`),C(W(`SESSION_SETTLEMENT_FAILED`,`Signature verification failed`)));let{p:t}=e,n=Go(t.resources),r=[Do(t.iss)],i=Oo(t.iss);if(n){let e=Uo(n),t=Wo(n);c.push(...e),r.push(...t)}for(let e of r)l.push(`${e}:${i}`)}let u=await this.client.core.crypto.generateSharedKey(_,s.publicKey),d;c.length>0&&(d={topic:u,acknowledged:!0,self:{publicKey:_,metadata:this.client.metadata},peer:s,controller:s.publicKey,expiry:ia(vh),requiredNamespaces:{},optionalNamespaces:{},relay:{protocol:`irn`},pairingTopic:h,namespaces:xl([...new Set(c)],[...new Set(l)]),transportType:r},await this.client.core.relayer.subscribe(u,{transportType:r}),await this.client.session.set(u,d),h&&await this.client.core.pairing.updateMetadata({topic:h,metadata:s.metadata}),d=this.client.session.get(u)),(n=this.client.metadata.redirect)!=null&&n.linkMode&&(i=s.metadata.redirect)!=null&&i.linkMode&&(a=s.metadata.redirect)!=null&&a.universal&&t&&(this.client.core.addLinkModeSupportedApp(s.metadata.redirect.universal),this.client.session.update(u,{transportType:G.link_mode})),S({auths:o,session:d})};this.events.once(T,D),this.events.once(E,O);let k;try{if(n){let e=N(`wc_sessionAuthenticate`,b,w);this.client.core.history.set(h,e),k=pl(t,h,await this.client.core.crypto.encode(``,e,{type:2,encoding:Nc}))}else await Promise.all([this.sendRequest({topic:h,method:`wc_sessionAuthenticate`,params:b,expiry:e.expiry,throwOnFailedPublish:!0,clientRpcId:w}),this.sendRequest({topic:h,method:`wc_sessionPropose`,params:ee,expiry:bh.wc_sessionPropose.req.ttl,throwOnFailedPublish:!0,clientRpcId:ee.id})])}catch(e){throw this.events.off(T,D),this.events.off(E,O),e}return await this.setProposal(ee.id,ee),await this.setAuthRequest(w,{request:zh(X({},b),{verifyContext:{}}),pairingTopic:h,transportType:r}),{uri:k??g,response:x}}),Z(this,`approveSessionAuthenticate`,async e=>{let{id:t,auths:n}=e,r=this.client.core.eventClient.createEvent({properties:{topic:t.toString(),trace:[$u.authenticated_session_approve_started]}});try{this.isInitialized()}catch(e){throw r.setError(ed.no_internet_connection),e}let i=this.getPendingAuthRequest(t);if(!i)throw r.setError(ed.authenticated_session_pending_request_not_found),Error(`Could not find pending auth request with id ${t}`);let a=i.transportType||G.relay;a===G.relay&&await this.confirmOnlineStateOrThrow();let o=i.requester.publicKey,s=await this.client.core.crypto.generateKeyPair(),c=Hc(o),l={type:1,receiverPublicKey:o,senderPublicKey:s},u=[],d=[];for(let e of n){if(!await ko({cacao:e,projectId:this.client.core.projectId})){r.setError(ed.invalid_cacao);let e=W(`SESSION_SETTLEMENT_FAILED`,`Signature verification failed`);throw await this.sendError({id:t,topic:c,error:e,encodeOpts:l}),Error(e.message)}r.addTrace($u.cacaos_verified);let{p:n}=e,i=Go(n.resources),a=[Do(n.iss)],o=Oo(n.iss);if(i){let e=Uo(i),t=Wo(i);u.push(...e),a.push(...t)}for(let e of a)d.push(`${e}:${o}`)}let f=await this.client.core.crypto.generateSharedKey(s,o);r.addTrace($u.create_authenticated_session_topic);let p;if(u?.length>0){p={topic:f,acknowledged:!0,self:{publicKey:s,metadata:this.client.metadata},peer:{publicKey:o,metadata:i.requester.metadata},controller:o,expiry:ia(vh),authentication:n,requiredNamespaces:{},optionalNamespaces:{},relay:{protocol:`irn`},pairingTopic:i.pairingTopic,namespaces:xl([...new Set(u)],[...new Set(d)]),transportType:a},r.addTrace($u.subscribing_authenticated_session_topic);try{await this.client.core.relayer.subscribe(f,{transportType:a})}catch(e){throw r.setError(ed.subscribe_authenticated_session_topic_failure),e}r.addTrace($u.subscribe_authenticated_session_topic_success),await this.client.session.set(f,p),r.addTrace($u.store_authenticated_session),await this.client.core.pairing.updateMetadata({topic:i.pairingTopic,metadata:i.requester.metadata})}r.addTrace($u.publishing_authenticated_session_approve);try{await this.sendResult({topic:c,id:t,result:{cacaos:n,responder:{publicKey:s,metadata:this.client.metadata}},encodeOpts:l,throwOnFailedPublish:!0,appLink:this.getAppLinkIfEnabled(i.requester.metadata,a)})}catch(e){throw r.setError(ed.authenticated_session_approve_publish_failure),e}return await this.client.auth.requests.delete(t,{message:`fulfilled`,code:0}),await this.client.core.pairing.activate({topic:i.pairingTopic}),this.client.core.eventClient.deleteEvent({eventId:r.eventId}),{session:p}}),Z(this,`rejectSessionAuthenticate`,async e=>{this.isInitialized();let{id:t,reason:n}=e,r=this.getPendingAuthRequest(t);if(!r)throw Error(`Could not find pending auth request with id ${t}`);r.transportType===G.relay&&await this.confirmOnlineStateOrThrow();let i=r.requester.publicKey,a=await this.client.core.crypto.generateKeyPair(),o=Hc(i),s={type:1,receiverPublicKey:i,senderPublicKey:a};await this.sendError({id:t,topic:o,error:n,encodeOpts:s,rpcOpts:bh.wc_sessionAuthenticate.reject,appLink:this.getAppLinkIfEnabled(r.requester.metadata,r.transportType)}),await this.client.auth.requests.delete(t,{message:`rejected`,code:0}),await this.client.proposal.delete(t,W(`USER_DISCONNECTED`))}),Z(this,`formatAuthMessage`,e=>{this.isInitialized();let{request:t,iss:n}=e;return Ao(t,n)}),Z(this,`processRelayMessageCache`,()=>{setTimeout(async()=>{if(this.relayMessageCache.length!==0)for(;this.relayMessageCache.length>0;)try{let e=this.relayMessageCache.shift();e&&await this.onRelayMessage(e)}catch(e){this.client.logger.error(e)}},50)}),Z(this,`cleanupDuplicatePairings`,async e=>{if(e.pairingTopic)try{let t=this.client.core.pairing.pairings.get(e.pairingTopic),n=this.client.core.pairing.pairings.getAll().filter(n=>n.peerMetadata?.url&&n.peerMetadata?.url===e.peer.metadata.url&&n.topic&&n.topic!==t.topic);if(n.length===0)return;this.client.logger.info(`Cleaning up ${n.length} duplicate pairing(s)`),await Promise.all(n.map(e=>this.client.core.pairing.disconnect({topic:e.topic}))),this.client.logger.info(`Duplicate pairings clean up finished`)}catch(e){this.client.logger.error(e)}}),Z(this,`deleteSession`,async e=>{let{topic:t,expirerHasDeleted:n=!1,emitEvent:r=!0,id:i=0}=e,{self:a}=this.client.session.get(t);await this.client.core.relayer.unsubscribe(t),await this.client.session.delete(t,W(`USER_DISCONNECTED`)),this.addToRecentlyDeleted(t,`session`),this.client.core.crypto.keychain.has(a.publicKey)&&await this.client.core.crypto.deleteKeyPair(a.publicKey),this.client.core.crypto.keychain.has(t)&&await this.client.core.crypto.deleteSymKey(t),n||this.client.core.expirer.del(t),this.client.core.storage.removeItem(mh).catch(e=>this.client.logger.warn(e)),this.getPendingSessionRequests().forEach(e=>{e.topic===t&&this.deletePendingSessionRequest(e.id,W(`USER_DISCONNECTED`))}),t===this.sessionRequestQueue.queue[0]?.topic&&(this.sessionRequestQueue.state=Sh.idle),r&&this.client.events.emit(`session_delete`,{id:i,topic:t})}),Z(this,`deleteProposal`,async(e,t)=>{if(t)try{let t=this.client.proposal.get(e);this.client.core.eventClient.getEvent({topic:t.pairingTopic})?.setError(Qu.proposal_expired)}catch{}await Promise.all([this.client.proposal.delete(e,W(`USER_DISCONNECTED`)),t?Promise.resolve():this.client.core.expirer.del(e)]),this.addToRecentlyDeleted(e,`proposal`)}),Z(this,`deletePendingSessionRequest`,async(e,t,n=!1)=>{await Promise.all([this.client.pendingRequest.delete(e,t),n?Promise.resolve():this.client.core.expirer.del(e)]),this.addToRecentlyDeleted(e,`request`),this.sessionRequestQueue.queue=this.sessionRequestQueue.queue.filter(t=>t.id!==e),n&&(this.sessionRequestQueue.state=Sh.idle,this.client.events.emit(`session_request_expire`,{id:e}))}),Z(this,`deletePendingAuthRequest`,async(e,t,n=!1)=>{await Promise.all([this.client.auth.requests.delete(e,t),n?Promise.resolve():this.client.core.expirer.del(e)])}),Z(this,`setExpiry`,async(e,t)=>{this.client.session.keys.includes(e)&&(this.client.core.expirer.set(e,t),await this.client.session.update(e,{expiry:t}))}),Z(this,`setProposal`,async(e,t)=>{this.client.core.expirer.set(e,ia(bh.wc_sessionPropose.req.ttl)),await this.client.proposal.set(e,t)}),Z(this,`setAuthRequest`,async(e,t)=>{let{request:n,pairingTopic:r,transportType:i=G.relay}=t;this.client.core.expirer.set(e,n.expiryTimestamp),await this.client.auth.requests.set(e,{authPayload:n.authPayload,requester:n.requester,expiryTimestamp:n.expiryTimestamp,id:e,pairingTopic:r,verifyContext:n.verifyContext,transportType:i})}),Z(this,`setPendingSessionRequest`,async e=>{let{id:t,topic:n,params:r,verifyContext:i}=e,a=r.request.expiryTimestamp||ia(bh.wc_sessionRequest.req.ttl);this.client.core.expirer.set(t,a),await this.client.pendingRequest.set(t,{id:t,topic:n,params:r,verifyContext:i})}),Z(this,`sendRequest`,async e=>{let{topic:t,method:n,params:r,expiry:i,relayRpcId:a,clientRpcId:o,throwOnFailedPublish:s,appLink:c,tvf:l}=e,u=N(n,r,o),d,f=!!c;try{let e=f?Nc:Mc;d=await this.client.core.crypto.encode(t,u,{encoding:e})}catch(e){throw await this.cleanup(),this.client.logger.error(`sendRequest() -> core.crypto.encode() for topic ${t} failed`),e}let p;if(Th.includes(n)){let e=Uc(JSON.stringify(u)),t=Uc(d);p=await this.client.core.verify.register({id:t,decryptedId:e})}let m=bh[n].req;if(m.attestation=p,i&&(m.ttl=i),a&&(m.id=a),this.client.core.history.set(t,u),f){let e=pl(c,t,d);await global.Linking.openURL(e,this.client.name)}else{let e=bh[n].req;i&&(e.ttl=i),a&&(e.id=a),e.tvf=zh(X({},l),{correlationId:u.id}),s?(e.internal=zh(X({},e.internal),{throwOnFailedPublish:!0}),await this.client.core.relayer.publish(t,d,e)):this.client.core.relayer.publish(t,d,e).catch(e=>this.client.logger.error(e))}return u.id}),Z(this,`sendResult`,async e=>{let{id:t,topic:n,result:r,throwOnFailedPublish:i,encodeOpts:a,appLink:o}=e,s=ke(t,r),c,l=o&&typeof(global==null?void 0:global.Linking)<`u`;try{let e=l?Nc:Mc;c=await this.client.core.crypto.encode(n,s,zh(X({},a||{}),{encoding:e}))}catch(e){throw await this.cleanup(),this.client.logger.error(`sendResult() -> core.crypto.encode() for topic ${n} failed`),e}let u,d;try{u=await this.client.core.history.get(n,t);let e=u.request;try{this.shouldSetTVF(e.method,e.params)&&(d=this.getTVFParams(t,e.params,r))}catch(e){this.client.logger.warn(`sendResult() -> getTVFParams() failed`,e)}}catch(e){throw this.client.logger.error(`sendResult() -> history.get(${n}, ${t}) failed`),e}if(l){let e=pl(o,n,c);await global.Linking.openURL(e,this.client.name)}else{let e=bh[u.request.method].res;e.tvf=zh(X({},d),{correlationId:t}),i?(e.internal=zh(X({},e.internal),{throwOnFailedPublish:!0}),await this.client.core.relayer.publish(n,c,e)):this.client.core.relayer.publish(n,c,e).catch(e=>this.client.logger.error(e))}await this.client.core.history.resolve(s)}),Z(this,`sendError`,async e=>{let{id:t,topic:n,error:r,encodeOpts:i,rpcOpts:a,appLink:o}=e,s=de(t,r),c,l=o&&typeof(global==null?void 0:global.Linking)<`u`;try{let e=l?Nc:Mc;c=await this.client.core.crypto.encode(n,s,zh(X({},i||{}),{encoding:e}))}catch(e){throw await this.cleanup(),this.client.logger.error(`sendError() -> core.crypto.encode() for topic ${n} failed`),e}let u;try{u=await this.client.core.history.get(n,t)}catch(e){throw this.client.logger.error(`sendError() -> history.get(${n}, ${t}) failed`),e}if(l){let e=pl(o,n,c);await global.Linking.openURL(e,this.client.name)}else{let e=u.request.method,t=a||bh[e].res;this.client.core.relayer.publish(n,c,t)}await this.client.core.history.resolve(s)}),Z(this,`cleanup`,async()=>{let e=[],t=[];this.client.session.getAll().forEach(t=>{let n=!1;aa(t.expiry)&&(n=!0),this.client.core.crypto.keychain.has(t.topic)||(n=!0),n&&e.push(t.topic)}),this.client.proposal.getAll().forEach(e=>{aa(e.expiryTimestamp)&&t.push(e.id)}),await Promise.all([...e.map(e=>this.deleteSession({topic:e})),...t.map(e=>this.deleteProposal(e))])}),Z(this,`onProviderMessageEvent`,async e=>{!this.initialized||this.relayMessageCache.length>0?this.relayMessageCache.push(e):await this.onRelayMessage(e)}),Z(this,`onRelayEventRequest`,async e=>{this.requestQueue.queue.push(e),await this.processRequestsQueue()}),Z(this,`processRequestsQueue`,async()=>{if(this.requestQueue.state===Sh.active){this.client.logger.info(`Request queue already active, skipping...`);return}for(this.client.logger.info(`Request queue starting with ${this.requestQueue.queue.length} requests`);this.requestQueue.queue.length>0;){this.requestQueue.state=Sh.active;let e=this.requestQueue.queue.shift();if(e)try{await this.processRequest(e)}catch(e){this.client.logger.warn(e)}}this.requestQueue.state=Sh.idle}),Z(this,`processRequest`,async e=>{let{topic:t,payload:n,attestation:r,transportType:i,encryptedId:a}=e,o=n.method;if(!this.shouldIgnorePairingRequest({topic:t,requestMethod:o}))switch(o){case`wc_sessionPropose`:return await this.onSessionProposeRequest({topic:t,payload:n,attestation:r,encryptedId:a});case`wc_sessionSettle`:return await this.onSessionSettleRequest(t,n);case`wc_sessionUpdate`:return await this.onSessionUpdateRequest(t,n);case`wc_sessionExtend`:return await this.onSessionExtendRequest(t,n);case`wc_sessionPing`:return await this.onSessionPingRequest(t,n);case`wc_sessionDelete`:return await this.onSessionDeleteRequest(t,n);case`wc_sessionRequest`:return await this.onSessionRequest({topic:t,payload:n,attestation:r,encryptedId:a,transportType:i});case`wc_sessionEvent`:return await this.onSessionEventRequest(t,n);case`wc_sessionAuthenticate`:return await this.onSessionAuthenticateRequest({topic:t,payload:n,attestation:r,encryptedId:a,transportType:i});default:return this.client.logger.info(`Unsupported request method ${o}`)}}),Z(this,`onRelayEventResponse`,async e=>{let{topic:t,payload:n,transportType:r}=e,i=(await this.client.core.history.get(t,n.id)).request.method;switch(i){case`wc_sessionPropose`:return this.onSessionProposeResponse(t,n,r);case`wc_sessionSettle`:return this.onSessionSettleResponse(t,n);case`wc_sessionUpdate`:return this.onSessionUpdateResponse(t,n);case`wc_sessionExtend`:return this.onSessionExtendResponse(t,n);case`wc_sessionPing`:return this.onSessionPingResponse(t,n);case`wc_sessionRequest`:return this.onSessionRequestResponse(t,n);case`wc_sessionAuthenticate`:return this.onSessionAuthenticateResponse(t,n);default:return this.client.logger.info(`Unsupported response method ${i}`)}}),Z(this,`onRelayEventUnknownPayload`,e=>{let{topic:t}=e,{message:n}=U(`MISSING_OR_INVALID`,`Decoded payload on topic ${t} is not identifiable as a JSON-RPC request or a response.`);throw Error(n)}),Z(this,`shouldIgnorePairingRequest`,e=>{let{topic:t,requestMethod:n}=e,r=this.expectedPairingMethodMap.get(t);return!r||r.includes(n)?!1:!!(r.includes(`wc_sessionAuthenticate`)&&this.client.events.listenerCount(`session_authenticate`)>0)}),Z(this,`onSessionProposeRequest`,async e=>{let{topic:t,payload:n,attestation:r,encryptedId:i}=e,{params:a,id:o}=n;try{let e=this.client.core.eventClient.getEvent({topic:t});this.client.events.listenerCount(`session_proposal`)===0&&(console.warn(`No listener for session_proposal event`),e?.setError(Xu.proposal_listener_not_found)),this.isValidConnect(X({},n.params));let s=X({id:o,pairingTopic:t,expiryTimestamp:a.expiryTimestamp||ia(bh.wc_sessionPropose.req.ttl)},a);await this.setProposal(o,s);let c=await this.getVerifyContext({attestationId:r,hash:Uc(JSON.stringify(n)),encryptedId:i,metadata:s.proposer.metadata});e?.addTrace(Yu.emit_session_proposal),this.client.events.emit(`session_proposal`,{id:o,params:s,verifyContext:c})}catch(e){await this.sendError({id:o,topic:t,error:e,rpcOpts:bh.wc_sessionPropose.autoReject}),this.client.logger.error(e)}}),Z(this,`onSessionProposeResponse`,async(e,t,n)=>{let{id:r}=t;if(Ae(t)){let{result:i}=t;this.client.logger.trace({type:`method`,method:`onSessionProposeResponse`,result:i});let a=this.client.proposal.get(r);this.client.logger.trace({type:`method`,method:`onSessionProposeResponse`,proposal:a});let o=a.proposer.publicKey;this.client.logger.trace({type:`method`,method:`onSessionProposeResponse`,selfPublicKey:o});let s=i.responderPublicKey;this.client.logger.trace({type:`method`,method:`onSessionProposeResponse`,peerPublicKey:s});let c=await this.client.core.crypto.generateSharedKey(o,s);this.pendingSessions.set(r,{sessionTopic:c,pairingTopic:e,proposalId:r,publicKey:o});let l=await this.client.core.relayer.subscribe(c,{transportType:n});this.client.logger.trace({type:`method`,method:`onSessionProposeResponse`,subscriptionId:l}),await this.client.core.pairing.activate({topic:e})}else if(Oe(t)){await this.client.proposal.delete(r,W(`USER_DISCONNECTED`));let e=V(`session_connect`,r);if(this.events.listenerCount(e)===0)throw Error(`emitting ${e} without any listeners, 954`);this.events.emit(e,{error:t.error})}}),Z(this,`onSessionSettleRequest`,async(e,t)=>{let{id:n,params:r}=t;try{this.isValidSessionSettleRequest(r);let{relay:n,controller:i,expiry:a,namespaces:o,sessionProperties:s,scopedProperties:c,sessionConfig:l}=t.params,u=[...this.pendingSessions.values()].find(t=>t.sessionTopic===e);if(!u)return this.client.logger.error(`Pending session not found for topic ${e}`);let d=this.client.proposal.get(u.proposalId),f=zh(X(X(X({topic:e,relay:n,expiry:a,namespaces:o,acknowledged:!0,pairingTopic:u.pairingTopic,requiredNamespaces:d.requiredNamespaces,optionalNamespaces:d.optionalNamespaces,controller:i.publicKey,self:{publicKey:u.publicKey,metadata:this.client.metadata},peer:{publicKey:i.publicKey,metadata:i.metadata}},s&&{sessionProperties:s}),c&&{scopedProperties:c}),l&&{sessionConfig:l}),{transportType:G.relay});await this.client.session.set(f.topic,f),await this.setExpiry(f.topic,f.expiry),await this.client.core.pairing.updateMetadata({topic:u.pairingTopic,metadata:f.peer.metadata}),this.client.events.emit(`session_connect`,{session:f}),this.events.emit(V(`session_connect`,u.proposalId),{session:f}),this.pendingSessions.delete(u.proposalId),this.deleteProposal(u.proposalId,!1),this.cleanupDuplicatePairings(f),await this.sendResult({id:t.id,topic:e,result:!0,throwOnFailedPublish:!0})}catch(t){await this.sendError({id:n,topic:e,error:t}),this.client.logger.error(t)}}),Z(this,`onSessionSettleResponse`,async(e,t)=>{let{id:n}=t;Ae(t)?(await this.client.session.update(e,{acknowledged:!0}),this.events.emit(V(`session_approve`,n),{})):Oe(t)&&(await this.client.session.delete(e,W(`USER_DISCONNECTED`)),this.events.emit(V(`session_approve`,n),{error:t.error}))}),Z(this,`onSessionUpdateRequest`,async(e,t)=>{let{params:n,id:r}=t;try{let t=`${e}_session_update`,i=hu.get(t);if(i&&this.isRequestOutOfSync(i,r)){this.client.logger.warn(`Discarding out of sync request - ${r}`),this.sendError({id:r,topic:e,error:W(`INVALID_UPDATE_REQUEST`)});return}this.isValidUpdate(X({topic:e},n));try{hu.set(t,r),await this.client.session.update(e,{namespaces:n.namespaces}),await this.sendResult({id:r,topic:e,result:!0,throwOnFailedPublish:!0})}catch(e){throw hu.delete(t),e}this.client.events.emit(`session_update`,{id:r,topic:e,params:n})}catch(t){await this.sendError({id:r,topic:e,error:t}),this.client.logger.error(t)}}),Z(this,`isRequestOutOfSync`,(e,t)=>t.toString().slice(0,-3)<e.toString().slice(0,-3)),Z(this,`onSessionUpdateResponse`,(e,t)=>{let{id:n}=t,r=V(`session_update`,n);if(this.events.listenerCount(r)===0)throw Error(`emitting ${r} without any listeners`);Ae(t)?this.events.emit(V(`session_update`,n),{}):Oe(t)&&this.events.emit(V(`session_update`,n),{error:t.error})}),Z(this,`onSessionExtendRequest`,async(e,t)=>{let{id:n}=t;try{this.isValidExtend({topic:e}),await this.setExpiry(e,ia(vh)),await this.sendResult({id:n,topic:e,result:!0,throwOnFailedPublish:!0}),this.client.events.emit(`session_extend`,{id:n,topic:e})}catch(t){await this.sendError({id:n,topic:e,error:t}),this.client.logger.error(t)}}),Z(this,`onSessionExtendResponse`,(e,t)=>{let{id:n}=t,r=V(`session_extend`,n);if(this.events.listenerCount(r)===0)throw Error(`emitting ${r} without any listeners`);Ae(t)?this.events.emit(V(`session_extend`,n),{}):Oe(t)&&this.events.emit(V(`session_extend`,n),{error:t.error})}),Z(this,`onSessionPingRequest`,async(e,t)=>{let{id:n}=t;try{this.isValidPing({topic:e}),await this.sendResult({id:n,topic:e,result:!0,throwOnFailedPublish:!0}),this.client.events.emit(`session_ping`,{id:n,topic:e})}catch(t){await this.sendError({id:n,topic:e,error:t}),this.client.logger.error(t)}}),Z(this,`onSessionPingResponse`,(e,t)=>{let{id:n}=t,r=V(`session_ping`,n);setTimeout(()=>{if(this.events.listenerCount(r)===0)throw Error(`emitting ${r} without any listeners 2176`);Ae(t)?this.events.emit(V(`session_ping`,n),{}):Oe(t)&&this.events.emit(V(`session_ping`,n),{error:t.error})},500)}),Z(this,`onSessionDeleteRequest`,async(e,t)=>{let{id:n}=t;try{this.isValidDisconnect({topic:e,reason:t.params}),Promise.all([new Promise(t=>{this.client.core.relayer.once(Ou.publish,async()=>{t(await this.deleteSession({topic:e,id:n}))})}),this.sendResult({id:n,topic:e,result:!0,throwOnFailedPublish:!0}),this.cleanupPendingSentRequestsForTopic({topic:e,error:W(`USER_DISCONNECTED`)})]).catch(e=>this.client.logger.error(e))}catch(e){this.client.logger.error(e)}}),Z(this,`onSessionRequest`,async e=>{var t,n;let{topic:r,payload:i,attestation:a,encryptedId:o,transportType:s}=e,{id:c,params:l}=i;try{await this.isValidRequest(X({topic:r},l));let e=this.client.session.get(r),i={id:c,topic:r,params:l,verifyContext:await this.getVerifyContext({attestationId:a,hash:Uc(JSON.stringify(N(`wc_sessionRequest`,l,c))),encryptedId:o,metadata:e.peer.metadata,transportType:s})};await this.setPendingSessionRequest(i),s===G.link_mode&&(t=e.peer.metadata.redirect)!=null&&t.universal&&this.client.core.addLinkModeSupportedApp(e.peer.metadata.redirect?.universal),(n=this.client.signConfig)!=null&&n.disableRequestQueue?this.emitSessionRequest(i):(this.addSessionRequestToSessionRequestQueue(i),this.processSessionRequestQueue())}catch(e){await this.sendError({id:c,topic:r,error:e}),this.client.logger.error(e)}}),Z(this,`onSessionRequestResponse`,(e,t)=>{let{id:n}=t,r=V(`session_request`,n);if(this.events.listenerCount(r)===0)throw Error(`emitting ${r} without any listeners`);Ae(t)?this.events.emit(V(`session_request`,n),{result:t.result}):Oe(t)&&this.events.emit(V(`session_request`,n),{error:t.error})}),Z(this,`onSessionEventRequest`,async(e,t)=>{let{id:n,params:r}=t;try{let t=`${e}_session_event_${r.event.name}`,i=hu.get(t);if(i&&this.isRequestOutOfSync(i,n)){this.client.logger.info(`Discarding out of sync request - ${n}`);return}this.isValidEmit(X({topic:e},r)),this.client.events.emit(`session_event`,{id:n,topic:e,params:r}),hu.set(t,n)}catch(t){await this.sendError({id:n,topic:e,error:t}),this.client.logger.error(t)}}),Z(this,`onSessionAuthenticateResponse`,(e,t)=>{let{id:n}=t;this.client.logger.trace({type:`method`,method:`onSessionAuthenticateResponse`,topic:e,payload:t}),Ae(t)?this.events.emit(V(`session_request`,n),{result:t.result}):Oe(t)&&this.events.emit(V(`session_request`,n),{error:t.error})}),Z(this,`onSessionAuthenticateRequest`,async e=>{var t;let{topic:n,payload:r,attestation:i,encryptedId:a,transportType:o}=e;try{let{requester:e,authPayload:s,expiryTimestamp:c}=r.params,l=await this.getVerifyContext({attestationId:i,hash:Uc(JSON.stringify(r)),encryptedId:a,metadata:e.metadata,transportType:o}),u={requester:e,pairingTopic:n,id:r.id,authPayload:s,verifyContext:l,expiryTimestamp:c};await this.setAuthRequest(r.id,{request:u,pairingTopic:n,transportType:o}),o===G.link_mode&&(t=e.metadata.redirect)!=null&&t.universal&&this.client.core.addLinkModeSupportedApp(e.metadata.redirect.universal),this.client.events.emit(`session_authenticate`,{topic:n,params:r.params,id:r.id,verifyContext:l})}catch(e){this.client.logger.error(e);let t=r.params.requester.publicKey,i=await this.client.core.crypto.generateKeyPair(),a=this.getAppLinkIfEnabled(r.params.requester.metadata,o),s={type:1,receiverPublicKey:t,senderPublicKey:i};await this.sendError({id:r.id,topic:n,error:e,encodeOpts:s,rpcOpts:bh.wc_sessionAuthenticate.autoReject,appLink:a})}}),Z(this,`addSessionRequestToSessionRequestQueue`,e=>{this.sessionRequestQueue.queue.push(e)}),Z(this,`cleanupAfterResponse`,e=>{this.deletePendingSessionRequest(e.response.id,{message:`fulfilled`,code:0}),setTimeout(()=>{this.sessionRequestQueue.state=Sh.idle,this.processSessionRequestQueue()},(0,R.toMiliseconds)(this.requestQueueDelay))}),Z(this,`cleanupPendingSentRequestsForTopic`,({topic:e,error:t})=>{let n=this.client.core.history.pending;n.length>0&&n.filter(t=>t.topic===e&&t.request.method===`wc_sessionRequest`).forEach(e=>{let n=e.request.id,r=V(`session_request`,n);if(this.events.listenerCount(r)===0)throw Error(`emitting ${r} without any listeners`);this.events.emit(V(`session_request`,e.request.id),{error:t})})}),Z(this,`processSessionRequestQueue`,()=>{if(this.sessionRequestQueue.state===Sh.active){this.client.logger.info(`session request queue is already active.`);return}let e=this.sessionRequestQueue.queue[0];if(!e){this.client.logger.info(`session request queue is empty.`);return}try{this.sessionRequestQueue.state=Sh.active,this.emitSessionRequest(e)}catch(e){this.client.logger.error(e)}}),Z(this,`emitSessionRequest`,e=>{this.client.events.emit(`session_request`,e)}),Z(this,`onPairingCreated`,e=>{if(e.methods&&this.expectedPairingMethodMap.set(e.topic,e.methods),e.active)return;let t=this.client.proposal.getAll().find(t=>t.pairingTopic===e.topic);t&&this.onSessionProposeRequest({topic:e.topic,payload:N(`wc_sessionPropose`,zh(X({},t),{requiredNamespaces:t.requiredNamespaces,optionalNamespaces:t.optionalNamespaces,relays:t.relays,proposer:t.proposer,sessionProperties:t.sessionProperties,scopedProperties:t.scopedProperties}),t.id)})}),Z(this,`isValidConnect`,async e=>{if(!Jl(e)){let{message:t}=U(`MISSING_OR_INVALID`,`connect() params: ${JSON.stringify(e)}`);throw Error(t)}let{pairingTopic:t,requiredNamespaces:n,optionalNamespaces:r,sessionProperties:i,scopedProperties:a,relays:o}=e;if(El(t)||await this.isValidPairingTopic(t),!Kl(o,!0)){let{message:e}=U(`MISSING_OR_INVALID`,`connect() relays: ${o}`);throw Error(e)}if(!El(n)&&Tl(n)!==0&&this.validateNamespaces(n,`requiredNamespaces`),!El(r)&&Tl(r)!==0&&this.validateNamespaces(r,`optionalNamespaces`),El(i)||this.validateSessionProps(i,`sessionProperties`),!El(a)){this.validateSessionProps(a,`scopedProperties`);let e=Object.keys(n||{}).concat(Object.keys(r||{}));if(!Object.keys(a).every(t=>e.includes(t)))throw Error(`Scoped properties must be a subset of required/optional namespaces, received: ${JSON.stringify(a)}, required/optional namespaces: ${JSON.stringify(e)}`)}}),Z(this,`validateNamespaces`,(e,t)=>{let n=Ul(e,`connect()`,t);if(n)throw Error(n.message)}),Z(this,`isValidApprove`,async e=>{if(!Jl(e))throw Error(U(`MISSING_OR_INVALID`,`approve() params: ${e}`).message);let{id:t,namespaces:n,relayProtocol:r,sessionProperties:i,scopedProperties:a}=e;this.checkRecentlyDeleted(t),await this.isValidProposalId(t);let o=this.client.proposal.get(t),s=Wl(n,`approve()`);if(s)throw Error(s.message);let c=nu(o.requiredNamespaces,n,`approve()`);if(c)throw Error(c.message);if(!Dl(r,!0)){let{message:e}=U(`MISSING_OR_INVALID`,`approve() relayProtocol: ${r}`);throw Error(e)}if(El(i)||this.validateSessionProps(i,`sessionProperties`),!El(a)){this.validateSessionProps(a,`scopedProperties`);let e=new Set(Object.keys(n));if(!Object.keys(a).every(t=>e.has(t)))throw Error(`Scoped properties must be a subset of approved namespaces, received: ${JSON.stringify(a)}, approved namespaces: ${Array.from(e).join(`, `)}`)}}),Z(this,`isValidReject`,async e=>{if(!Jl(e)){let{message:t}=U(`MISSING_OR_INVALID`,`reject() params: ${e}`);throw Error(t)}let{id:t,reason:n}=e;if(this.checkRecentlyDeleted(t),await this.isValidProposalId(t),!Yl(n)){let{message:e}=U(`MISSING_OR_INVALID`,`reject() reason: ${JSON.stringify(n)}`);throw Error(e)}}),Z(this,`isValidSessionSettleRequest`,e=>{if(!Jl(e)){let{message:t}=U(`MISSING_OR_INVALID`,`onSessionSettleRequest() params: ${e}`);throw Error(t)}let{relay:t,controller:n,namespaces:r,expiry:i}=e;if(!Gl(t)){let{message:e}=U(`MISSING_OR_INVALID`,`onSessionSettleRequest() relay protocol should be a string`);throw Error(e)}let a=Fl(n,`onSessionSettleRequest()`);if(a)throw Error(a.message);let o=Wl(r,`onSessionSettleRequest()`);if(o)throw Error(o.message);if(aa(i)){let{message:e}=U(`EXPIRED`,`onSessionSettleRequest()`);throw Error(e)}}),Z(this,`isValidUpdate`,async e=>{if(!Jl(e)){let{message:t}=U(`MISSING_OR_INVALID`,`update() params: ${e}`);throw Error(t)}let{topic:t,namespaces:n}=e;this.checkRecentlyDeleted(t),await this.isValidSessionTopic(t);let r=this.client.session.get(t),i=Wl(n,`update()`);if(i)throw Error(i.message);let a=nu(r.requiredNamespaces,n,`update()`);if(a)throw Error(a.message)}),Z(this,`isValidExtend`,async e=>{if(!Jl(e)){let{message:t}=U(`MISSING_OR_INVALID`,`extend() params: ${e}`);throw Error(t)}let{topic:t}=e;this.checkRecentlyDeleted(t),await this.isValidSessionTopic(t)}),Z(this,`isValidRequest`,async e=>{if(!Jl(e)){let{message:t}=U(`MISSING_OR_INVALID`,`request() params: ${e}`);throw Error(t)}let{topic:t,request:n,chainId:r,expiry:i}=e;this.checkRecentlyDeleted(t),await this.isValidSessionTopic(t);let{namespaces:a}=this.client.session.get(t);if(!$l(a,r)){let{message:e}=U(`MISSING_OR_INVALID`,`request() chainId: ${r}`);throw Error(e)}if(!Xl(n)){let{message:e}=U(`MISSING_OR_INVALID`,`request() ${JSON.stringify(n)}`);throw Error(e)}if(!eu(a,r,n.method)){let{message:e}=U(`MISSING_OR_INVALID`,`request() method: ${n.method}`);throw Error(e)}if(i&&!ou(i,xh)){let{message:e}=U(`MISSING_OR_INVALID`,`request() expiry: ${i}. Expiry must be a number (in seconds) between ${xh.min} and ${xh.max}`);throw Error(e)}}),Z(this,`isValidRespond`,async e=>{var t;if(!Jl(e)){let{message:t}=U(`MISSING_OR_INVALID`,`respond() params: ${e}`);throw Error(t)}let{topic:n,response:r}=e;try{await this.isValidSessionTopic(n)}catch(n){throw(t=e?.response)!=null&&t.id&&this.cleanupAfterResponse(e),n}if(!Zl(r)){let{message:e}=U(`MISSING_OR_INVALID`,`respond() response: ${JSON.stringify(r)}`);throw Error(e)}}),Z(this,`isValidPing`,async e=>{if(!Jl(e)){let{message:t}=U(`MISSING_OR_INVALID`,`ping() params: ${e}`);throw Error(t)}let{topic:t}=e;await this.isValidSessionOrPairingTopic(t)}),Z(this,`isValidEmit`,async e=>{if(!Jl(e)){let{message:t}=U(`MISSING_OR_INVALID`,`emit() params: ${e}`);throw Error(t)}let{topic:t,event:n,chainId:r}=e;await this.isValidSessionTopic(t);let{namespaces:i}=this.client.session.get(t);if(!$l(i,r)){let{message:e}=U(`MISSING_OR_INVALID`,`emit() chainId: ${r}`);throw Error(e)}if(!Ql(n)){let{message:e}=U(`MISSING_OR_INVALID`,`emit() event: ${JSON.stringify(n)}`);throw Error(e)}if(!tu(i,r,n.name)){let{message:e}=U(`MISSING_OR_INVALID`,`emit() event: ${JSON.stringify(n)}`);throw Error(e)}}),Z(this,`isValidDisconnect`,async e=>{if(!Jl(e)){let{message:t}=U(`MISSING_OR_INVALID`,`disconnect() params: ${e}`);throw Error(t)}let{topic:t}=e;await this.isValidSessionOrPairingTopic(t)}),Z(this,`isValidAuthenticate`,e=>{let{chains:t,uri:n,domain:r,nonce:i}=e;if(!Array.isArray(t)||t.length===0)throw Error(`chains is required and must be a non-empty array`);if(!Dl(n,!1))throw Error(`uri is required parameter`);if(!Dl(r,!1))throw Error(`domain is required parameter`);if(!Dl(i,!1))throw Error(`nonce is required parameter`);if([...new Set(t.map(e=>Ni(e).namespace))].length>1)throw Error(`Multi-namespace requests are not supported. Please request single namespace only.`);let{namespace:a}=Ni(t[0]);if(a!==`eip155`)throw Error(`Only eip155 namespace is supported for authenticated sessions. Please use .connect() for non-eip155 chains.`)}),Z(this,`getVerifyContext`,async e=>{let{attestationId:t,hash:n,encryptedId:r,metadata:i,transportType:a}=e,o={verified:{verifyUrl:i.verifyUrl||`https://verify.walletconnect.org`,validation:`UNKNOWN`,origin:i.url||``}};try{if(a===G.link_mode){let e=this.getAppLinkIfEnabled(i,a);return o.verified.validation=e&&new URL(e).origin===new URL(i.url).origin?`VALID`:`INVALID`,o}let e=await this.client.core.verify.resolve({attestationId:t,hash:n,encryptedId:r,verifyUrl:i.verifyUrl});e&&(o.verified.origin=e.origin,o.verified.isScam=e.isScam,o.verified.validation=e.origin===new URL(i.url).origin?`VALID`:`INVALID`)}catch(e){this.client.logger.warn(e)}return this.client.logger.debug(`Verify context: ${JSON.stringify(o)}`),o}),Z(this,`validateSessionProps`,(e,t)=>{Object.values(e).forEach((n,r)=>{if(n==null){let{message:i}=U(`MISSING_OR_INVALID`,`${t} must contain an existing value for each key. Received: ${n} for key ${Object.keys(e)[r]}`);throw Error(i)}})}),Z(this,`getPendingAuthRequest`,e=>{let t=this.client.auth.requests.get(e);return typeof t==`object`?t:void 0}),Z(this,`addToRecentlyDeleted`,(e,t)=>{if(this.recentlyDeletedMap.set(e,t),this.recentlyDeletedMap.size>=this.recentlyDeletedLimit){let e=0,t=this.recentlyDeletedLimit/2;for(let n of this.recentlyDeletedMap.keys()){if(e++>=t)break;this.recentlyDeletedMap.delete(n)}}}),Z(this,`checkRecentlyDeleted`,e=>{let t=this.recentlyDeletedMap.get(e);if(t){let{message:n}=U(`MISSING_OR_INVALID`,`Record was recently deleted - ${t}: ${e}`);throw Error(n)}}),Z(this,`isLinkModeEnabled`,(e,t)=>!e||t!==G.link_mode?!1:this.client.metadata?.redirect?.linkMode===!0&&this.client.metadata?.redirect?.universal!==void 0&&this.client.metadata?.redirect?.universal!==``&&e?.redirect?.universal!==void 0&&e?.redirect?.universal!==``&&e?.redirect?.linkMode===!0&&this.client.core.linkModeSupportedApps.includes(e.redirect.universal)&&typeof(global==null?void 0:global.Linking)<`u`),Z(this,`getAppLinkIfEnabled`,(e,t)=>this.isLinkModeEnabled(e,t)?e?.redirect?.universal:void 0),Z(this,`handleLinkModeMessage`,({url:e})=>{if(!e||!e.includes(`wc_ev`)||!e.includes(`topic`))return;let t=da(e,`topic`)||``,n=decodeURIComponent(da(e,`wc_ev`)||``),r=this.client.session.keys.includes(t);r&&this.client.session.update(t,{transportType:G.link_mode}),this.client.core.dispatchEnvelope({topic:t,message:n,sessionExists:r})}),Z(this,`registerLinkModeListeners`,async()=>{var e;if(pa()||Li()&&(e=this.client.metadata.redirect)!=null&&e.linkMode){let e=global==null?void 0:global.Linking;if(typeof e<`u`){e.addEventListener(`url`,this.handleLinkModeMessage,this.client.name);let t=await e.getInitialURL();t&&setTimeout(()=>{this.handleLinkModeMessage({url:t})},50)}}}),Z(this,`shouldSetTVF`,(e,t)=>{if(!t||e!==`wc_sessionRequest`)return!1;let{request:n}=t;return Object.keys(Ch).includes(n.method)}),Z(this,`getTVFParams`,(e,t,n)=>{try{let r=t.request.method,i=this.extractTxHashesFromResult(r,n);return zh(X({correlationId:e,rpcMethods:[r],chainId:t.chainId},this.isValidContractData(t.request.params)&&{contractAddresses:[t.request.params?.[0]?.to]}),{txHashes:i})}catch(e){this.client.logger.warn(`Error getting TVF params`,e)}return{}}),Z(this,`isValidContractData`,e=>{if(!e)return!1;try{let t=e?.data||e?.[0]?.data;if(!t.startsWith(`0x`))return!1;let n=t.slice(2);return/^[0-9a-fA-F]*$/.test(n)?n.length%2==0:!1}catch{}return!1}),Z(this,`extractTxHashesFromResult`,(e,t)=>{try{let n=Ch[e];if(typeof t==`string`)return[t];let r=t[n.key];if(wl(r))return e===`solana_signAllTransactions`?r.map(e=>mo(e)):r;if(typeof r==`string`)return[r]}catch(e){this.client.logger.warn(`Error extracting tx hashes from result`,e)}return[]})}async processPendingMessageEvents(){try{let e=this.client.session.keys,t=this.client.core.relayer.messages.getWithoutAck(e);for(let[e,n]of Object.entries(t))for(let t of n)try{await this.onProviderMessageEvent({topic:e,message:t,publishedAt:Date.now()})}catch{this.client.logger.warn(`Error processing pending message event for topic: ${e}, message: ${t}`)}}catch(e){this.client.logger.warn(`processPendingMessageEvents failed`,e)}}isInitialized(){if(!this.initialized){let{message:e}=U(`NOT_INITIALIZED`,this.name);throw Error(e)}}async confirmOnlineStateOrThrow(){await this.client.core.relayer.confirmOnlineStateOrThrow()}registerRelayerEvents(){this.client.core.relayer.on(Ou.message,e=>{this.onProviderMessageEvent(e)})}async onRelayMessage(e){let{topic:t,message:n,attestation:r,transportType:i}=e,{publicKey:a}=this.client.auth.authKeys.keys.includes(jh)?this.client.auth.authKeys.get(jh):{responseTopic:void 0,publicKey:void 0};try{let e=await this.client.core.crypto.decode(t,n,{receiverPublicKey:a,encoding:i===G.link_mode?Nc:Mc});je(e)?(this.client.core.history.set(t,e),await this.onRelayEventRequest({topic:t,payload:e,attestation:r,transportType:i,encryptedId:Uc(n)})):be(e)?(await this.client.core.history.resolve(e),await this.onRelayEventResponse({topic:t,payload:e,transportType:i}),this.client.core.history.delete(t,e.id)):await this.onRelayEventUnknownPayload({topic:t,payload:e,transportType:i}),await this.client.core.relayer.messages.ack(t,n)}catch(e){this.client.logger.error(e)}}registerExpirerEvents(){this.client.core.expirer.on(Vu.expired,async e=>{let{topic:t,id:n}=ra(e.target);if(n&&this.client.pendingRequest.keys.includes(n))return await this.deletePendingSessionRequest(n,U(`EXPIRED`),!0);if(n&&this.client.auth.requests.keys.includes(n))return await this.deletePendingAuthRequest(n,U(`EXPIRED`),!0);t?this.client.session.keys.includes(t)&&(await this.deleteSession({topic:t,expirerHasDeleted:!0}),this.client.events.emit(`session_expire`,{topic:t})):n&&(await this.deleteProposal(n,!0),this.client.events.emit(`proposal_expire`,{id:n}))})}registerPairingEvents(){this.client.core.pairing.events.on(Lu.create,e=>this.onPairingCreated(e)),this.client.core.pairing.events.on(Lu.delete,e=>{this.addToRecentlyDeleted(e.topic,`pairing`)})}isValidPairingTopic(e){if(!Dl(e,!1)){let{message:t}=U(`MISSING_OR_INVALID`,`pairing topic should be a string: ${e}`);throw Error(t)}if(!this.client.core.pairing.pairings.keys.includes(e)){let{message:t}=U(`NO_MATCHING_KEY`,`pairing topic doesn't exist: ${e}`);throw Error(t)}if(aa(this.client.core.pairing.pairings.get(e).expiry)){let{message:t}=U(`EXPIRED`,`pairing topic: ${e}`);throw Error(t)}}async isValidSessionTopic(e){if(!Dl(e,!1)){let{message:t}=U(`MISSING_OR_INVALID`,`session topic should be a string: ${e}`);throw Error(t)}if(this.checkRecentlyDeleted(e),!this.client.session.keys.includes(e)){let{message:t}=U(`NO_MATCHING_KEY`,`session topic doesn't exist: ${e}`);throw Error(t)}if(aa(this.client.session.get(e).expiry)){await this.deleteSession({topic:e});let{message:t}=U(`EXPIRED`,`session topic: ${e}`);throw Error(t)}if(!this.client.core.crypto.keychain.has(e)){let{message:t}=U(`MISSING_OR_INVALID`,`session topic does not exist in keychain: ${e}`);throw await this.deleteSession({topic:e}),Error(t)}}async isValidSessionOrPairingTopic(e){if(this.checkRecentlyDeleted(e),this.client.session.keys.includes(e))await this.isValidSessionTopic(e);else if(this.client.core.pairing.pairings.keys.includes(e))this.isValidPairingTopic(e);else if(Dl(e,!1)){let{message:t}=U(`NO_MATCHING_KEY`,`session or pairing topic doesn't exist: ${e}`);throw Error(t)}else{let{message:t}=U(`MISSING_OR_INVALID`,`session or pairing topic should be a string: ${e}`);throw Error(t)}}async isValidProposalId(e){if(!ql(e)){let{message:t}=U(`MISSING_OR_INVALID`,`proposal id should be a number: ${e}`);throw Error(t)}if(!this.client.proposal.keys.includes(e)){let{message:t}=U(`NO_MATCHING_KEY`,`proposal id doesn't exist: ${e}`);throw Error(t)}if(aa(this.client.proposal.get(e).expiryTimestamp)){await this.deleteProposal(e);let{message:t}=U(`EXPIRED`,`proposal id: ${e}`);throw Error(t)}}},Vh=class extends Am{constructor(e,t){super(e,t,hh,fh),this.core=e,this.logger=t}},Hh=class extends Am{constructor(e,t){super(e,t,_h,fh),this.core=e,this.logger=t}},Uh=class extends Am{constructor(e,t){super(e,t,wh,fh,e=>e.id),this.core=e,this.logger=t}},Wh=class extends Am{constructor(e,t){super(e,t,Dh,Ah,()=>jh),this.core=e,this.logger=t}},Gh=class extends Am{constructor(e,t){super(e,t,Oh,Ah),this.core=e,this.logger=t}},Kh=class extends Am{constructor(e,t){super(e,t,kh,Ah,e=>e.id),this.core=e,this.logger=t}},qh=Object.defineProperty,Jh=(e,t,n)=>t in e?qh(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Yh=(e,t,n)=>Jh(e,typeof t==`symbol`?t:t+``,n),Xh=class{constructor(e,t){this.core=e,this.logger=t,Yh(this,`authKeys`),Yh(this,`pairingTopics`),Yh(this,`requests`),this.authKeys=new Wh(this.core,this.logger),this.pairingTopics=new Gh(this.core,this.logger),this.requests=new Kh(this.core,this.logger)}async init(){await this.authKeys.init(),await this.pairingTopics.init(),await this.requests.init()}},Zh=Object.defineProperty,Qh=(e,t,n)=>t in e?Zh(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Q=(e,t,n)=>Qh(e,typeof t==`symbol`?t:t+``,n),$h=class e extends Tt{constructor(e){super(e),Q(this,`protocol`,`wc`),Q(this,`version`,2),Q(this,`name`,ph.name),Q(this,`metadata`),Q(this,`core`),Q(this,`logger`),Q(this,`events`,new it.EventEmitter),Q(this,`engine`),Q(this,`session`),Q(this,`proposal`),Q(this,`pendingRequest`),Q(this,`auth`),Q(this,`signConfig`),Q(this,`on`,(e,t)=>this.events.on(e,t)),Q(this,`once`,(e,t)=>this.events.once(e,t)),Q(this,`off`,(e,t)=>this.events.off(e,t)),Q(this,`removeListener`,(e,t)=>this.events.removeListener(e,t)),Q(this,`removeAllListeners`,e=>this.events.removeAllListeners(e)),Q(this,`connect`,async e=>{try{return await this.engine.connect(e)}catch(e){throw this.logger.error(e.message),e}}),Q(this,`pair`,async e=>{try{return await this.engine.pair(e)}catch(e){throw this.logger.error(e.message),e}}),Q(this,`approve`,async e=>{try{return await this.engine.approve(e)}catch(e){throw this.logger.error(e.message),e}}),Q(this,`reject`,async e=>{try{return await this.engine.reject(e)}catch(e){throw this.logger.error(e.message),e}}),Q(this,`update`,async e=>{try{return await this.engine.update(e)}catch(e){throw this.logger.error(e.message),e}}),Q(this,`extend`,async e=>{try{return await this.engine.extend(e)}catch(e){throw this.logger.error(e.message),e}}),Q(this,`request`,async e=>{try{return await this.engine.request(e)}catch(e){throw this.logger.error(e.message),e}}),Q(this,`respond`,async e=>{try{return await this.engine.respond(e)}catch(e){throw this.logger.error(e.message),e}}),Q(this,`ping`,async e=>{try{return await this.engine.ping(e)}catch(e){throw this.logger.error(e.message),e}}),Q(this,`emit`,async e=>{try{return await this.engine.emit(e)}catch(e){throw this.logger.error(e.message),e}}),Q(this,`disconnect`,async e=>{try{return await this.engine.disconnect(e)}catch(e){throw this.logger.error(e.message),e}}),Q(this,`find`,e=>{try{return this.engine.find(e)}catch(e){throw this.logger.error(e.message),e}}),Q(this,`getPendingSessionRequests`,()=>{try{return this.engine.getPendingSessionRequests()}catch(e){throw this.logger.error(e.message),e}}),Q(this,`authenticate`,async(e,t)=>{try{return await this.engine.authenticate(e,t)}catch(e){throw this.logger.error(e.message),e}}),Q(this,`formatAuthMessage`,e=>{try{return this.engine.formatAuthMessage(e)}catch(e){throw this.logger.error(e.message),e}}),Q(this,`approveSessionAuthenticate`,async e=>{try{return await this.engine.approveSessionAuthenticate(e)}catch(e){throw this.logger.error(e.message),e}}),Q(this,`rejectSessionAuthenticate`,async e=>{try{return await this.engine.rejectSessionAuthenticate(e)}catch(e){throw this.logger.error(e.message),e}}),this.name=e?.name||ph.name,this.metadata=e?.metadata||Wi(),this.signConfig=e?.signConfig;let t=typeof e?.logger<`u`&&typeof e?.logger!=`string`?e.logger:(0,me.default)(te({level:e?.logger||ph.logger}));this.core=e?.core||new uh(e),this.logger=M(t,this.name),this.session=new Hh(this.core,this.logger),this.proposal=new Vh(this.core,this.logger),this.pendingRequest=new Uh(this.core,this.logger),this.engine=new Bh(this),this.auth=new Xh(this.core,this.logger)}static async init(t){let n=new e(t);return await n.initialize(),n}get context(){return pe(this.logger)}get pairing(){return this.core.pairing.pairings}async initialize(){this.logger.trace(`Initialized`);try{await this.core.start(),await this.session.init(),await this.proposal.init(),await this.pendingRequest.init(),await this.auth.init(),await this.engine.init(),this.logger.info(`SignClient Initialization Success`),setTimeout(()=>{this.engine.processRelayMessageCache()},(0,R.toMiliseconds)(R.ONE_SECOND))}catch(e){throw this.logger.info(`SignClient Initialization Failure`),this.logger.error(e.message),e}}},eg=`error`,tg=`wss://relay.walletconnect.org`,ng=`wc@2:universal_provider:`,rg=`https://rpc.walletconnect.org/v1/`,ig=`generic`,ag=`${rg}bundler`,og={DEFAULT_CHAIN_CHANGED:`default_chain_changed`};function sg(){}function cg(e){return e==null||typeof e!=`object`&&typeof e!=`function`}function lg(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function ug(e){if(cg(e))return e;if(Array.isArray(e)||lg(e)||e instanceof ArrayBuffer||typeof SharedArrayBuffer<`u`&&e instanceof SharedArrayBuffer)return e.slice(0);let t=Object.getPrototypeOf(e),n=t.constructor;if(e instanceof Date||e instanceof Map||e instanceof Set)return new n(e);if(e instanceof RegExp){let t=new n(e);return t.lastIndex=e.lastIndex,t}if(e instanceof DataView)return new n(e.buffer.slice(0));if(e instanceof Error){let t=new n(e.message);return t.stack=e.stack,t.name=e.name,t.cause=e.cause,t}return typeof File<`u`&&e instanceof File?new n([e],e.name,{type:e.type,lastModified:e.lastModified}):typeof e==`object`?Object.assign(Object.create(t),e):e}function dg(e){return typeof e==`object`&&!!e}function fg(e){return Object.getOwnPropertySymbols(e).filter(t=>Object.prototype.propertyIsEnumerable.call(e,t))}function pg(e){return e==null?e===void 0?`[object Undefined]`:`[object Null]`:Object.prototype.toString.call(e)}var mg=`[object RegExp]`,hg=`[object String]`,gg=`[object Number]`,_g=`[object Boolean]`,vg=`[object Arguments]`,yg=`[object Symbol]`,bg=`[object Date]`,xg=`[object Map]`,Sg=`[object Set]`,Cg=`[object Array]`,wg=`[object ArrayBuffer]`,Tg=`[object Object]`,Eg=`[object DataView]`,Dg=`[object Uint8Array]`,Og=`[object Uint8ClampedArray]`,kg=`[object Uint16Array]`,Ag=`[object Uint32Array]`,jg=`[object Int8Array]`,Mg=`[object Int16Array]`,Ng=`[object Int32Array]`,Pg=`[object Float32Array]`,Fg=`[object Float64Array]`;function Ig(e,t){return Lg(e,void 0,e,new Map,t)}function Lg(e,t,n,r=new Map,i=void 0){let a=i?.(e,t,n,r);if(a!=null)return a;if(cg(e))return e;if(r.has(e))return r.get(e);if(Array.isArray(e)){let t=Array(e.length);r.set(e,t);for(let a=0;a<e.length;a++)t[a]=Lg(e[a],a,n,r,i);return Object.hasOwn(e,`index`)&&(t.index=e.index),Object.hasOwn(e,`input`)&&(t.input=e.input),t}if(e instanceof Date)return new Date(e.getTime());if(e instanceof RegExp){let t=new RegExp(e.source,e.flags);return t.lastIndex=e.lastIndex,t}if(e instanceof Map){let t=new Map;r.set(e,t);for(let[a,o]of e)t.set(a,Lg(o,a,n,r,i));return t}if(e instanceof Set){let t=new Set;r.set(e,t);for(let a of e)t.add(Lg(a,void 0,n,r,i));return t}if(typeof Buffer<`u`&&Buffer.isBuffer(e))return e.subarray();if(lg(e)){let t=new(Object.getPrototypeOf(e)).constructor(e.length);r.set(e,t);for(let a=0;a<e.length;a++)t[a]=Lg(e[a],a,n,r,i);return t}if(e instanceof ArrayBuffer||typeof SharedArrayBuffer<`u`&&e instanceof SharedArrayBuffer)return e.slice(0);if(e instanceof DataView){let t=new DataView(e.buffer.slice(0),e.byteOffset,e.byteLength);return r.set(e,t),Rg(t,e,n,r,i),t}if(typeof File<`u`&&e instanceof File){let t=new File([e],e.name,{type:e.type});return r.set(e,t),Rg(t,e,n,r,i),t}if(e instanceof Blob){let t=new Blob([e],{type:e.type});return r.set(e,t),Rg(t,e,n,r,i),t}if(e instanceof Error){let t=new e.constructor;return r.set(e,t),t.message=e.message,t.name=e.name,t.stack=e.stack,t.cause=e.cause,Rg(t,e,n,r,i),t}if(typeof e==`object`&&zg(e)){let t=Object.create(Object.getPrototypeOf(e));return r.set(e,t),Rg(t,e,n,r,i),t}return e}function Rg(e,t,n=e,r,i){let a=[...Object.keys(t),...fg(t)];for(let o=0;o<a.length;o++){let s=a[o],c=Object.getOwnPropertyDescriptor(e,s);(c==null||c.writable)&&(e[s]=Lg(t[s],s,n,r,i))}}function zg(e){switch(pg(e)){case vg:case Cg:case wg:case Eg:case _g:case bg:case Pg:case Fg:case jg:case Mg:case Ng:case xg:case gg:case Tg:case mg:case Sg:case hg:case yg:case Dg:case Og:case kg:case Ag:return!0;default:return!1}}function Bg(e,t){return Ig(e,(n,r,i,a)=>{let o=t?.(n,r,i,a);if(o!=null)return o;if(typeof e==`object`)switch(Object.prototype.toString.call(e)){case gg:case hg:case _g:{let t=new e.constructor(e?.valueOf());return Rg(t,e),t}case vg:{let t={};return Rg(t,e),t.length=e.length,t[Symbol.iterator]=e[Symbol.iterator],t}default:return}})}function Vg(e){return Bg(e)}function Hg(e){return typeof e==`object`&&!!e&&pg(e)===`[object Arguments]`}function Ug(e){return lg(e)}function Wg(e){if(typeof e!=`object`||!e)return!1;if(Object.getPrototypeOf(e)===null)return!0;if(Object.prototype.toString.call(e)!==`[object Object]`){let t=e[Symbol.toStringTag];return t==null||!Object.getOwnPropertyDescriptor(e,Symbol.toStringTag)?.writable?!1:e.toString()===`[object ${t}]`}let t=e;for(;Object.getPrototypeOf(t)!==null;)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}function Gg(e,...t){let n=t.slice(0,-1),r=t[t.length-1],i=e;for(let e=0;e<n.length;e++){let t=n[e];i=Kg(i,t,r,new Map)}return i}function Kg(e,t,n,r){if(cg(e)&&(e=Object(e)),typeof t!=`object`||!t)return e;if(r.has(t))return ug(r.get(t));if(r.set(t,e),Array.isArray(t)){t=t.slice();for(let e=0;e<t.length;e++)t[e]=t[e]??void 0}let i=[...Object.keys(t),...fg(t)];for(let a=0;a<i.length;a++){let o=i[a],s=t[o],c=e[o];if(Hg(s)&&(s={...s}),Hg(c)&&(c={...c}),typeof Buffer<`u`&&Buffer.isBuffer(s)&&(s=Vg(s)),Array.isArray(s))if(typeof c==`object`&&c){let e=[],t=Reflect.ownKeys(c);for(let n=0;n<t.length;n++){let r=t[n];e[r]=c[r]}c=e}else c=[];let l=n(c,s,o,e,t,r);l==null?Array.isArray(s)||dg(c)&&dg(s)?e[o]=Kg(c,s,n,r):c==null&&Wg(s)?e[o]=Kg({},s,n,r):c==null&&Ug(s)?e[o]=Vg(s):(c===void 0||s!==void 0)&&(e[o]=s):e[o]=l}return e}function qg(e,...t){return Gg(e,...t,sg)}var Jg=Object.defineProperty,Yg=Object.defineProperties,Xg=Object.getOwnPropertyDescriptors,Zg=Object.getOwnPropertySymbols,Qg=Object.prototype.hasOwnProperty,$g=Object.prototype.propertyIsEnumerable,e_=(e,t,n)=>t in e?Jg(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,t_=(e,t)=>{for(var n in t||={})Qg.call(t,n)&&e_(e,n,t[n]);if(Zg)for(var n of Zg(t))$g.call(t,n)&&e_(e,n,t[n]);return e},n_=(e,t)=>Yg(e,Xg(t));function r_(e,t,n){let r=Ni(e);return t.rpcMap?.[r.reference]||`${rg}?chainId=${r.namespace}:${r.reference}&projectId=${n}`}function i_(e){return e.includes(`:`)?e.split(`:`)[1]:e}function a_(e){return e.map(e=>`${e.split(`:`)[0]}:${e.split(`:`)[1]}`)}function o_(e,t){let n=Object.keys(t.namespaces).filter(t=>t.includes(e));if(!n.length)return[];let r=[];return n.forEach(e=>{let n=t.namespaces[e].accounts;r.push(...n)}),r}function s_(e={},t={}){return qg(c_(e),c_(t))}function c_(e){let t={};if(!Tl(e))return t;for(let[n,r]of Object.entries(e)){let e=vl(n)?[n]:r.chains,i=r.methods||[],a=r.events||[],o=r.rpcMap||{},s=yl(n);t[s]=n_(t_(t_({},t[s]),r),{chains:oa(e,t[s]?.chains),methods:oa(i,t[s]?.methods),events:oa(a,t[s]?.events),rpcMap:t_(t_({},o),t[s]?.rpcMap)})}return t}function l_(e){return e.includes(`:`)?e.split(`:`)[2]:e}function u_(e){let t={};for(let[n,r]of Object.entries(e)){let e=r.methods||[],i=r.events||[],a=r.accounts||[];t[n]={chains:vl(n)?[n]:r.chains?r.chains:a_(r.accounts),methods:e,events:i,accounts:a}}return t}function d_(e){return typeof e==`number`?e:e.includes(`0x`)?parseInt(e,16):(e=e.includes(`:`)?e.split(`:`)[1]:e,isNaN(Number(e))?e:Number(e))}var f_={},$=e=>f_[e],p_=(e,t)=>{f_[e]=t},m_=Object.defineProperty,h_=(e,t,n)=>t in e?m_(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,g_=(e,t,n)=>h_(e,typeof t==`symbol`?t:t+``,n),__=class{constructor(e){g_(this,`name`,`polkadot`),g_(this,`client`),g_(this,`httpProviders`),g_(this,`events`),g_(this,`namespace`),g_(this,`chainId`),this.namespace=e.namespace,this.events=$(`events`),this.client=$(`client`),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(e){this.namespace=Object.assign(this.namespace,e)}requestAccounts(){return this.getAccounts()}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;let e=this.namespace.chains[0];if(!e)throw Error(`ChainId not found`);return e.split(`:`)[1]}request(e){return this.namespace.methods.includes(e.request.method)?this.client.request(e):this.getHttpProvider().request(e.request)}setDefaultChain(e,t){this.httpProviders[e]||this.setHttpProvider(e,t),this.chainId=e,this.events.emit(og.DEFAULT_CHAIN_CHANGED,`${this.name}:${e}`)}getAccounts(){let e=this.namespace.accounts;return e&&e.filter(e=>e.split(`:`)[1]===this.chainId.toString()).map(e=>e.split(`:`)[2])||[]}createHttpProviders(){let e={};return this.namespace.chains.forEach(t=>{let n=i_(t);e[n]=this.createHttpProvider(n,this.namespace.rpcMap?.[t])}),e}getHttpProvider(){let e=`${this.name}:${this.chainId}`,t=this.httpProviders[e];if(typeof t>`u`)throw Error(`JSON-RPC provider for ${e} not found`);return t}setHttpProvider(e,t){let n=this.createHttpProvider(e,t);n&&(this.httpProviders[e]=n)}createHttpProvider(e,t){let n=t||r_(e,this.namespace,this.client.core.projectId);if(!n)throw Error(`No RPC url provided for chainId: ${e}`);return new ye(new Se(n,$(`disableProviderPing`)))}},v_=Object.defineProperty,y_=Object.defineProperties,b_=Object.getOwnPropertyDescriptors,x_=Object.getOwnPropertySymbols,S_=Object.prototype.hasOwnProperty,C_=Object.prototype.propertyIsEnumerable,w_=(e,t,n)=>t in e?v_(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,T_=(e,t)=>{for(var n in t||={})S_.call(t,n)&&w_(e,n,t[n]);if(x_)for(var n of x_(t))C_.call(t,n)&&w_(e,n,t[n]);return e},E_=(e,t)=>y_(e,b_(t)),D_=(e,t,n)=>w_(e,typeof t==`symbol`?t:t+``,n),O_=class{constructor(e){D_(this,`name`,`eip155`),D_(this,`client`),D_(this,`chainId`),D_(this,`namespace`),D_(this,`httpProviders`),D_(this,`events`),this.namespace=e.namespace,this.events=$(`events`),this.client=$(`client`),this.httpProviders=this.createHttpProviders(),this.chainId=parseInt(this.getDefaultChain())}async request(e){switch(e.request.method){case`eth_requestAccounts`:return this.getAccounts();case`eth_accounts`:return this.getAccounts();case`wallet_switchEthereumChain`:return await this.handleSwitchChain(e);case`eth_chainId`:return parseInt(this.getDefaultChain());case`wallet_getCapabilities`:return await this.getCapabilities(e);case`wallet_getCallsStatus`:return await this.getCallStatus(e)}return this.namespace.methods.includes(e.request.method)?await this.client.request(e):this.getHttpProvider().request(e.request)}updateNamespace(e){this.namespace=Object.assign(this.namespace,e)}setDefaultChain(e,t){this.httpProviders[e]||this.setHttpProvider(parseInt(e),t),this.chainId=parseInt(e),this.events.emit(og.DEFAULT_CHAIN_CHANGED,`${this.name}:${e}`)}requestAccounts(){return this.getAccounts()}getDefaultChain(){if(this.chainId)return this.chainId.toString();if(this.namespace.defaultChain)return this.namespace.defaultChain;let e=this.namespace.chains[0];if(!e)throw Error(`ChainId not found`);return e.split(`:`)[1]}createHttpProvider(e,t){let n=t||r_(`${this.name}:${e}`,this.namespace,this.client.core.projectId);if(!n)throw Error(`No RPC url provided for chainId: ${e}`);return new ye(new Se(n,$(`disableProviderPing`)))}setHttpProvider(e,t){let n=this.createHttpProvider(e,t);n&&(this.httpProviders[e]=n)}createHttpProviders(){let e={};return this.namespace.chains.forEach(t=>{let n=parseInt(i_(t));e[n]=this.createHttpProvider(n,this.namespace.rpcMap?.[t])}),e}getAccounts(){let e=this.namespace.accounts;return e?[...new Set(e.filter(e=>e.split(`:`)[1]===this.chainId.toString()).map(e=>e.split(`:`)[2]))]:[]}getHttpProvider(){let e=this.chainId,t=this.httpProviders[e];if(typeof t>`u`)throw Error(`JSON-RPC provider for ${e} not found`);return t}async handleSwitchChain(e){let t=e.request.params?e.request.params[0]?.chainId:`0x0`;t=t.startsWith(`0x`)?t:`0x${t}`;let n=parseInt(t,16);if(this.isChainApproved(n))this.setDefaultChain(`${n}`);else if(this.namespace.methods.includes(`wallet_switchEthereumChain`))await this.client.request({topic:e.topic,request:{method:e.request.method,params:[{chainId:t}]},chainId:this.namespace.chains?.[0]}),this.setDefaultChain(`${n}`);else throw Error(`Failed to switch to chain 'eip155:${n}'. The chain is not approved or the wallet does not support 'wallet_switchEthereumChain' method.`);return null}isChainApproved(e){return this.namespace.chains.includes(`${this.name}:${e}`)}async getCapabilities(e){let t=e.request?.params?.[0];if(!t)throw Error("Missing address parameter in `wallet_getCapabilities` request");let n=this.client.session.get(e.topic),r=n?.sessionProperties?.capabilities||{};if(r!=null&&r[t])return r?.[t];let i=await this.client.request(e);try{await this.client.session.update(e.topic,{sessionProperties:E_(T_({},n.sessionProperties||{}),{capabilities:E_(T_({},r||{}),{[t]:i})})})}catch(e){console.warn(`Failed to update session with capabilities`,e)}return i}async getCallStatus(e){let t=this.client.session.get(e.topic),n=t.sessionProperties?.bundler_name;if(n){let t=this.getBundlerUrl(e.chainId,n);try{return await this.getUserOperationReceipt(t,e)}catch(e){console.warn(`Failed to fetch call status from bundler`,e,t)}}let r=t.sessionProperties?.bundler_url;if(r)try{return await this.getUserOperationReceipt(r,e)}catch(e){console.warn(`Failed to fetch call status from custom bundler`,e,r)}if(this.namespace.methods.includes(e.request.method))return await this.client.request(e);throw Error(`Fetching call status not approved by the wallet.`)}async getUserOperationReceipt(e,t){let n=new URL(e),r=await fetch(n,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(N(`eth_getUserOperationReceipt`,[t.request.params?.[0]]))});if(!r.ok)throw Error(`Failed to fetch user operation receipt - ${r.status}`);return await r.json()}getBundlerUrl(e,t){return`${ag}?projectId=${this.client.core.projectId}&chainId=${e}&bundler=${t}`}},k_=Object.defineProperty,A_=(e,t,n)=>t in e?k_(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,j_=(e,t,n)=>A_(e,typeof t==`symbol`?t:t+``,n),M_=class{constructor(e){j_(this,`name`,`solana`),j_(this,`client`),j_(this,`httpProviders`),j_(this,`events`),j_(this,`namespace`),j_(this,`chainId`),this.namespace=e.namespace,this.events=$(`events`),this.client=$(`client`),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(e){this.namespace=Object.assign(this.namespace,e)}requestAccounts(){return this.getAccounts()}request(e){return this.namespace.methods.includes(e.request.method)?this.client.request(e):this.getHttpProvider().request(e.request)}setDefaultChain(e,t){this.httpProviders[e]||this.setHttpProvider(e,t),this.chainId=e,this.events.emit(og.DEFAULT_CHAIN_CHANGED,`${this.name}:${e}`)}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;let e=this.namespace.chains[0];if(!e)throw Error(`ChainId not found`);return e.split(`:`)[1]}getAccounts(){let e=this.namespace.accounts;return e?[...new Set(e.filter(e=>e.split(`:`)[1]===this.chainId.toString()).map(e=>e.split(`:`)[2]))]:[]}createHttpProviders(){let e={};return this.namespace.chains.forEach(t=>{let n=i_(t);e[n]=this.createHttpProvider(n,this.namespace.rpcMap?.[t])}),e}getHttpProvider(){let e=`${this.name}:${this.chainId}`,t=this.httpProviders[e];if(typeof t>`u`)throw Error(`JSON-RPC provider for ${e} not found`);return t}setHttpProvider(e,t){let n=this.createHttpProvider(e,t);n&&(this.httpProviders[e]=n)}createHttpProvider(e,t){let n=t||r_(e,this.namespace,this.client.core.projectId);if(!n)throw Error(`No RPC url provided for chainId: ${e}`);return new ye(new Se(n,$(`disableProviderPing`)))}},N_=Object.defineProperty,P_=(e,t,n)=>t in e?N_(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,F_=(e,t,n)=>P_(e,typeof t==`symbol`?t:t+``,n),I_=class{constructor(e){F_(this,`name`,`cosmos`),F_(this,`client`),F_(this,`httpProviders`),F_(this,`events`),F_(this,`namespace`),F_(this,`chainId`),this.namespace=e.namespace,this.events=$(`events`),this.client=$(`client`),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(e){this.namespace=Object.assign(this.namespace,e)}requestAccounts(){return this.getAccounts()}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;let e=this.namespace.chains[0];if(!e)throw Error(`ChainId not found`);return e.split(`:`)[1]}request(e){return this.namespace.methods.includes(e.request.method)?this.client.request(e):this.getHttpProvider().request(e.request)}setDefaultChain(e,t){this.httpProviders[e]||this.setHttpProvider(e,t),this.chainId=e,this.events.emit(og.DEFAULT_CHAIN_CHANGED,`${this.name}:${this.chainId}`)}getAccounts(){let e=this.namespace.accounts;return e?[...new Set(e.filter(e=>e.split(`:`)[1]===this.chainId.toString()).map(e=>e.split(`:`)[2]))]:[]}createHttpProviders(){let e={};return this.namespace.chains.forEach(t=>{let n=i_(t);e[n]=this.createHttpProvider(n,this.namespace.rpcMap?.[t])}),e}getHttpProvider(){let e=`${this.name}:${this.chainId}`,t=this.httpProviders[e];if(typeof t>`u`)throw Error(`JSON-RPC provider for ${e} not found`);return t}setHttpProvider(e,t){let n=this.createHttpProvider(e,t);n&&(this.httpProviders[e]=n)}createHttpProvider(e,t){let n=t||r_(e,this.namespace,this.client.core.projectId);if(!n)throw Error(`No RPC url provided for chainId: ${e}`);return new ye(new Se(n,$(`disableProviderPing`)))}},L_=Object.defineProperty,R_=(e,t,n)=>t in e?L_(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,z_=(e,t,n)=>R_(e,typeof t==`symbol`?t:t+``,n),B_=class{constructor(e){z_(this,`name`,`algorand`),z_(this,`client`),z_(this,`httpProviders`),z_(this,`events`),z_(this,`namespace`),z_(this,`chainId`),this.namespace=e.namespace,this.events=$(`events`),this.client=$(`client`),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(e){this.namespace=Object.assign(this.namespace,e)}requestAccounts(){return this.getAccounts()}request(e){return this.namespace.methods.includes(e.request.method)?this.client.request(e):this.getHttpProvider().request(e.request)}setDefaultChain(e,t){if(!this.httpProviders[e]){let n=t||r_(`${this.name}:${e}`,this.namespace,this.client.core.projectId);if(!n)throw Error(`No RPC url provided for chainId: ${e}`);this.setHttpProvider(e,n)}this.chainId=e,this.events.emit(og.DEFAULT_CHAIN_CHANGED,`${this.name}:${this.chainId}`)}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;let e=this.namespace.chains[0];if(!e)throw Error(`ChainId not found`);return e.split(`:`)[1]}getAccounts(){let e=this.namespace.accounts;return e?[...new Set(e.filter(e=>e.split(`:`)[1]===this.chainId.toString()).map(e=>e.split(`:`)[2]))]:[]}createHttpProviders(){let e={};return this.namespace.chains.forEach(t=>{e[t]=this.createHttpProvider(t,this.namespace.rpcMap?.[t])}),e}getHttpProvider(){let e=`${this.name}:${this.chainId}`,t=this.httpProviders[e];if(typeof t>`u`)throw Error(`JSON-RPC provider for ${e} not found`);return t}setHttpProvider(e,t){let n=this.createHttpProvider(e,t);n&&(this.httpProviders[e]=n)}createHttpProvider(e,t){let n=t||r_(e,this.namespace,this.client.core.projectId);return typeof n>`u`?void 0:new ye(new Se(n,$(`disableProviderPing`)))}},V_=Object.defineProperty,H_=(e,t,n)=>t in e?V_(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,U_=(e,t,n)=>H_(e,typeof t==`symbol`?t:t+``,n),W_=class{constructor(e){U_(this,`name`,`cip34`),U_(this,`client`),U_(this,`httpProviders`),U_(this,`events`),U_(this,`namespace`),U_(this,`chainId`),this.namespace=e.namespace,this.events=$(`events`),this.client=$(`client`),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(e){this.namespace=Object.assign(this.namespace,e)}requestAccounts(){return this.getAccounts()}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;let e=this.namespace.chains[0];if(!e)throw Error(`ChainId not found`);return e.split(`:`)[1]}request(e){return this.namespace.methods.includes(e.request.method)?this.client.request(e):this.getHttpProvider().request(e.request)}setDefaultChain(e,t){this.httpProviders[e]||this.setHttpProvider(e,t),this.chainId=e,this.events.emit(og.DEFAULT_CHAIN_CHANGED,`${this.name}:${this.chainId}`)}getAccounts(){let e=this.namespace.accounts;return e?[...new Set(e.filter(e=>e.split(`:`)[1]===this.chainId.toString()).map(e=>e.split(`:`)[2]))]:[]}createHttpProviders(){let e={};return this.namespace.chains.forEach(t=>{let n=this.getCardanoRPCUrl(t),r=i_(t);e[r]=this.createHttpProvider(r,n)}),e}getHttpProvider(){let e=`${this.name}:${this.chainId}`,t=this.httpProviders[e];if(typeof t>`u`)throw Error(`JSON-RPC provider for ${e} not found`);return t}getCardanoRPCUrl(e){let t=this.namespace.rpcMap;if(t)return t[e]}setHttpProvider(e,t){let n=this.createHttpProvider(e,t);n&&(this.httpProviders[e]=n)}createHttpProvider(e,t){let n=t||this.getCardanoRPCUrl(e);if(!n)throw Error(`No RPC url provided for chainId: ${e}`);return new ye(new Se(n,$(`disableProviderPing`)))}},G_=Object.defineProperty,K_=(e,t,n)=>t in e?G_(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,q_=(e,t,n)=>K_(e,typeof t==`symbol`?t:t+``,n),J_=class{constructor(e){q_(this,`name`,`elrond`),q_(this,`client`),q_(this,`httpProviders`),q_(this,`events`),q_(this,`namespace`),q_(this,`chainId`),this.namespace=e.namespace,this.events=$(`events`),this.client=$(`client`),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(e){this.namespace=Object.assign(this.namespace,e)}requestAccounts(){return this.getAccounts()}request(e){return this.namespace.methods.includes(e.request.method)?this.client.request(e):this.getHttpProvider().request(e.request)}setDefaultChain(e,t){this.httpProviders[e]||this.setHttpProvider(e,t),this.chainId=e,this.events.emit(og.DEFAULT_CHAIN_CHANGED,`${this.name}:${e}`)}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;let e=this.namespace.chains[0];if(!e)throw Error(`ChainId not found`);return e.split(`:`)[1]}getAccounts(){let e=this.namespace.accounts;return e?[...new Set(e.filter(e=>e.split(`:`)[1]===this.chainId.toString()).map(e=>e.split(`:`)[2]))]:[]}createHttpProviders(){let e={};return this.namespace.chains.forEach(t=>{let n=i_(t);e[n]=this.createHttpProvider(n,this.namespace.rpcMap?.[t])}),e}getHttpProvider(){let e=`${this.name}:${this.chainId}`,t=this.httpProviders[e];if(typeof t>`u`)throw Error(`JSON-RPC provider for ${e} not found`);return t}setHttpProvider(e,t){let n=this.createHttpProvider(e,t);n&&(this.httpProviders[e]=n)}createHttpProvider(e,t){let n=t||r_(e,this.namespace,this.client.core.projectId);if(!n)throw Error(`No RPC url provided for chainId: ${e}`);return new ye(new Se(n,$(`disableProviderPing`)))}},Y_=Object.defineProperty,X_=(e,t,n)=>t in e?Y_(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Z_=(e,t,n)=>X_(e,typeof t==`symbol`?t:t+``,n),Q_=class{constructor(e){Z_(this,`name`,`multiversx`),Z_(this,`client`),Z_(this,`httpProviders`),Z_(this,`events`),Z_(this,`namespace`),Z_(this,`chainId`),this.namespace=e.namespace,this.events=$(`events`),this.client=$(`client`),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(e){this.namespace=Object.assign(this.namespace,e)}requestAccounts(){return this.getAccounts()}request(e){return this.namespace.methods.includes(e.request.method)?this.client.request(e):this.getHttpProvider().request(e.request)}setDefaultChain(e,t){this.httpProviders[e]||this.setHttpProvider(e,t),this.chainId=e,this.events.emit(og.DEFAULT_CHAIN_CHANGED,`${this.name}:${e}`)}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;let e=this.namespace.chains[0];if(!e)throw Error(`ChainId not found`);return e.split(`:`)[1]}getAccounts(){let e=this.namespace.accounts;return e?[...new Set(e.filter(e=>e.split(`:`)[1]===this.chainId.toString()).map(e=>e.split(`:`)[2]))]:[]}createHttpProviders(){let e={};return this.namespace.chains.forEach(t=>{let n=i_(t);e[n]=this.createHttpProvider(n,this.namespace.rpcMap?.[t])}),e}getHttpProvider(){let e=`${this.name}:${this.chainId}`,t=this.httpProviders[e];if(typeof t>`u`)throw Error(`JSON-RPC provider for ${e} not found`);return t}setHttpProvider(e,t){let n=this.createHttpProvider(e,t);n&&(this.httpProviders[e]=n)}createHttpProvider(e,t){let n=t||r_(e,this.namespace,this.client.core.projectId);if(!n)throw Error(`No RPC url provided for chainId: ${e}`);return new ye(new Se(n,$(`disableProviderPing`)))}},$_=Object.defineProperty,ev=(e,t,n)=>t in e?$_(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,tv=(e,t,n)=>ev(e,typeof t==`symbol`?t:t+``,n),nv=class{constructor(e){tv(this,`name`,`near`),tv(this,`client`),tv(this,`httpProviders`),tv(this,`events`),tv(this,`namespace`),tv(this,`chainId`),this.namespace=e.namespace,this.events=$(`events`),this.client=$(`client`),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(e){this.namespace=Object.assign(this.namespace,e)}requestAccounts(){return this.getAccounts()}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;let e=this.namespace.chains[0];if(!e)throw Error(`ChainId not found`);return e.split(`:`)[1]}request(e){return this.namespace.methods.includes(e.request.method)?this.client.request(e):this.getHttpProvider().request(e.request)}setDefaultChain(e,t){if(this.chainId=e,!this.httpProviders[e]){let n=t||r_(`${this.name}:${e}`,this.namespace);if(!n)throw Error(`No RPC url provided for chainId: ${e}`);this.setHttpProvider(e,n)}this.events.emit(og.DEFAULT_CHAIN_CHANGED,`${this.name}:${this.chainId}`)}getAccounts(){let e=this.namespace.accounts;return e&&e.filter(e=>e.split(`:`)[1]===this.chainId.toString()).map(e=>e.split(`:`)[2])||[]}createHttpProviders(){let e={};return this.namespace.chains.forEach(t=>{e[t]=this.createHttpProvider(t,this.namespace.rpcMap?.[t])}),e}getHttpProvider(){let e=`${this.name}:${this.chainId}`,t=this.httpProviders[e];if(typeof t>`u`)throw Error(`JSON-RPC provider for ${e} not found`);return t}setHttpProvider(e,t){let n=this.createHttpProvider(e,t);n&&(this.httpProviders[e]=n)}createHttpProvider(e,t){let n=t||r_(e,this.namespace);return typeof n>`u`?void 0:new ye(new Se(n,$(`disableProviderPing`)))}},rv=Object.defineProperty,iv=(e,t,n)=>t in e?rv(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,av=(e,t,n)=>iv(e,typeof t==`symbol`?t:t+``,n),ov=class{constructor(e){av(this,`name`,`tezos`),av(this,`client`),av(this,`httpProviders`),av(this,`events`),av(this,`namespace`),av(this,`chainId`),this.namespace=e.namespace,this.events=$(`events`),this.client=$(`client`),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(e){this.namespace=Object.assign(this.namespace,e)}requestAccounts(){return this.getAccounts()}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;let e=this.namespace.chains[0];if(!e)throw Error(`ChainId not found`);return e.split(`:`)[1]}request(e){return this.namespace.methods.includes(e.request.method)?this.client.request(e):this.getHttpProvider().request(e.request)}setDefaultChain(e,t){if(this.chainId=e,!this.httpProviders[e]){let n=t||r_(`${this.name}:${e}`,this.namespace);if(!n)throw Error(`No RPC url provided for chainId: ${e}`);this.setHttpProvider(e,n)}this.events.emit(og.DEFAULT_CHAIN_CHANGED,`${this.name}:${this.chainId}`)}getAccounts(){let e=this.namespace.accounts;return e&&e.filter(e=>e.split(`:`)[1]===this.chainId.toString()).map(e=>e.split(`:`)[2])||[]}createHttpProviders(){let e={};return this.namespace.chains.forEach(t=>{e[t]=this.createHttpProvider(t)}),e}getHttpProvider(){let e=`${this.name}:${this.chainId}`,t=this.httpProviders[e];if(typeof t>`u`)throw Error(`JSON-RPC provider for ${e} not found`);return t}setHttpProvider(e,t){let n=this.createHttpProvider(e,t);n&&(this.httpProviders[e]=n)}createHttpProvider(e,t){let n=t||r_(e,this.namespace);return typeof n>`u`?void 0:new ye(new Se(n))}},sv=Object.defineProperty,cv=(e,t,n)=>t in e?sv(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,lv=(e,t,n)=>cv(e,typeof t==`symbol`?t:t+``,n),uv=class{constructor(e){lv(this,`name`,ig),lv(this,`client`),lv(this,`httpProviders`),lv(this,`events`),lv(this,`namespace`),lv(this,`chainId`),this.namespace=e.namespace,this.events=$(`events`),this.client=$(`client`),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(e){this.namespace.chains=[...new Set((this.namespace.chains||[]).concat(e.chains||[]))],this.namespace.accounts=[...new Set((this.namespace.accounts||[]).concat(e.accounts||[]))],this.namespace.methods=[...new Set((this.namespace.methods||[]).concat(e.methods||[]))],this.namespace.events=[...new Set((this.namespace.events||[]).concat(e.events||[]))],this.httpProviders=this.createHttpProviders()}requestAccounts(){return this.getAccounts()}request(e){return this.namespace.methods.includes(e.request.method)?this.client.request(e):this.getHttpProvider(e.chainId).request(e.request)}setDefaultChain(e,t){this.httpProviders[e]||this.setHttpProvider(e,t),this.chainId=e,this.events.emit(og.DEFAULT_CHAIN_CHANGED,`${this.name}:${e}`)}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;let e=this.namespace.chains[0];if(!e)throw Error(`ChainId not found`);return e.split(`:`)[1]}getAccounts(){let e=this.namespace.accounts;return e?[...new Set(e.filter(e=>e.split(`:`)[1]===this.chainId.toString()).map(e=>e.split(`:`)[2]))]:[]}createHttpProviders(){var e;let t={};return(e=this.namespace?.accounts)==null||e.forEach(e=>{let n=Ni(e);t[`${n.namespace}:${n.reference}`]=this.createHttpProvider(e)}),t}getHttpProvider(e){let t=this.httpProviders[e];if(typeof t>`u`)throw Error(`JSON-RPC provider for ${e} not found`);return t}setHttpProvider(e,t){let n=this.createHttpProvider(e,t);n&&(this.httpProviders[e]=n)}createHttpProvider(e,t){let n=t||r_(e,this.namespace,this.client.core.projectId);if(!n)throw Error(`No RPC url provided for chainId: ${e}`);return new ye(new Se(n,$(`disableProviderPing`)))}},dv=Object.defineProperty,fv=Object.defineProperties,pv=Object.getOwnPropertyDescriptors,mv=Object.getOwnPropertySymbols,hv=Object.prototype.hasOwnProperty,gv=Object.prototype.propertyIsEnumerable,_v=(e,t,n)=>t in e?dv(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,vv=(e,t)=>{for(var n in t||={})hv.call(t,n)&&_v(e,n,t[n]);if(mv)for(var n of mv(t))gv.call(t,n)&&_v(e,n,t[n]);return e},yv=(e,t)=>fv(e,pv(t)),bv=(e,t,n)=>_v(e,typeof t==`symbol`?t:t+``,n),xv=class e{constructor(e){bv(this,`client`),bv(this,`namespaces`),bv(this,`optionalNamespaces`),bv(this,`sessionProperties`),bv(this,`scopedProperties`),bv(this,`events`,new it.default),bv(this,`rpcProviders`,{}),bv(this,`session`),bv(this,`providerOpts`),bv(this,`logger`),bv(this,`uri`),bv(this,`disableProviderPing`,!1),this.providerOpts=e,this.logger=typeof e?.logger<`u`&&typeof e?.logger!=`string`?e.logger:(0,me.default)(te({level:e?.logger||eg})),this.disableProviderPing=e?.disableProviderPing||!1}static async init(t){let n=new e(t);return await n.initialize(),n}async request(e,t,n){let[r,i]=this.validateChain(t);if(!this.session)throw Error(`Please call connect() before request()`);return await this.getProvider(r).request({request:vv({},e),chainId:`${r}:${i}`,topic:this.session.topic,expiry:n})}sendAsync(e,t,n,r){let i=new Date().getTime();this.request(e,n,r).then(e=>t(null,ke(i,e))).catch(e=>t(e,void 0))}async enable(){if(!this.client)throw Error(`Sign Client not initialized`);return this.session||await this.connect({namespaces:this.namespaces,optionalNamespaces:this.optionalNamespaces,sessionProperties:this.sessionProperties,scopedProperties:this.scopedProperties}),await this.requestAccounts()}async disconnect(){if(!this.session)throw Error(`Please call connect() before enable()`);await this.client.disconnect({topic:this.session?.topic,reason:W(`USER_DISCONNECTED`)}),await this.cleanup()}async connect(e){if(!this.client)throw Error(`Sign Client not initialized`);if(this.setNamespaces(e),await this.cleanupPendingPairings(),!e.skipPairing)return await this.pair(e.pairingTopic)}async authenticate(e,t){if(!this.client)throw Error(`Sign Client not initialized`);this.setNamespaces(e),await this.cleanupPendingPairings();let{uri:n,response:r}=await this.client.authenticate(e,t);n&&(this.uri=n,this.events.emit(`display_uri`,n));let i=await r();if(this.session=i.session,this.session){let e=u_(this.session.namespaces);this.namespaces=s_(this.namespaces,e),await this.persist(`namespaces`,this.namespaces),this.onConnect()}return i}on(e,t){this.events.on(e,t)}once(e,t){this.events.once(e,t)}removeListener(e,t){this.events.removeListener(e,t)}off(e,t){this.events.off(e,t)}get isWalletConnect(){return!0}async pair(e){let{uri:t,approval:n}=await this.client.connect({pairingTopic:e,requiredNamespaces:this.namespaces,optionalNamespaces:this.optionalNamespaces,sessionProperties:this.sessionProperties,scopedProperties:this.scopedProperties});t&&(this.uri=t,this.events.emit(`display_uri`,t));let r=await n();this.session=r;let i=u_(r.namespaces);return this.namespaces=s_(this.namespaces,i),await this.persist(`namespaces`,this.namespaces),await this.persist(`optionalNamespaces`,this.optionalNamespaces),this.onConnect(),this.session}setDefaultChain(e,t){try{if(!this.session)return;let[n,r]=this.validateChain(e),i=this.getProvider(n);i.name===ig?i.setDefaultChain(`${n}:${r}`,t):i.setDefaultChain(r,t)}catch(e){if(!/Please call connect/.test(e.message))throw e}}async cleanupPendingPairings(e={}){this.logger.info(`Cleaning up inactive pairings...`);let t=this.client.pairing.getAll();if(wl(t)){for(let n of t)e.deletePairings?this.client.core.expirer.set(n.topic,0):await this.client.core.relayer.subscriber.unsubscribe(n.topic);this.logger.info(`Inactive pairings cleared: ${t.length}`)}}abortPairingAttempt(){this.logger.warn(`abortPairingAttempt is deprecated. This is now a no-op.`)}async checkStorage(){this.namespaces=await this.getFromStore(`namespaces`)||{},this.optionalNamespaces=await this.getFromStore(`optionalNamespaces`)||{},this.session&&this.createProviders()}async initialize(){this.logger.trace(`Initialized`),await this.createClient(),await this.checkStorage(),this.registerEventListeners()}async createClient(){if(this.client=this.providerOpts.client||await $h.init({core:this.providerOpts.core,logger:this.providerOpts.logger||eg,relayUrl:this.providerOpts.relayUrl||tg,projectId:this.providerOpts.projectId,metadata:this.providerOpts.metadata,storageOptions:this.providerOpts.storageOptions,storage:this.providerOpts.storage,name:this.providerOpts.name,customStoragePrefix:this.providerOpts.customStoragePrefix,telemetryEnabled:this.providerOpts.telemetryEnabled}),this.providerOpts.session)try{this.session=this.client.session.get(this.providerOpts.session.topic)}catch(e){throw this.logger.error(`Failed to get session`,e),Error(`The provided session: ${this.providerOpts?.session?.topic} doesn't exist in the Sign client`)}else{let e=this.client.session.getAll();this.session=e[0]}this.logger.trace(`SignClient Initialized`)}createProviders(){if(!this.client)throw Error(`Sign Client not initialized`);if(!this.session)throw Error(`Session not initialized. Please call connect() before enable()`);let e=[...new Set(Object.keys(this.session.namespaces).map(e=>yl(e)))];p_(`client`,this.client),p_(`events`,this.events),p_(`disableProviderPing`,this.disableProviderPing),e.forEach(e=>{if(!this.session)return;let t=o_(e,this.session),n=a_(t),r=yv(vv({},s_(this.namespaces,this.optionalNamespaces)[e]),{accounts:t,chains:n});switch(e){case`eip155`:this.rpcProviders[e]=new O_({namespace:r});break;case`algorand`:this.rpcProviders[e]=new B_({namespace:r});break;case`solana`:this.rpcProviders[e]=new M_({namespace:r});break;case`cosmos`:this.rpcProviders[e]=new I_({namespace:r});break;case`polkadot`:this.rpcProviders[e]=new __({namespace:r});break;case`cip34`:this.rpcProviders[e]=new W_({namespace:r});break;case`elrond`:this.rpcProviders[e]=new J_({namespace:r});break;case`multiversx`:this.rpcProviders[e]=new Q_({namespace:r});break;case`near`:this.rpcProviders[e]=new nv({namespace:r});break;case`tezos`:this.rpcProviders[e]=new ov({namespace:r});break;default:this.rpcProviders[ig]?this.rpcProviders[ig].updateNamespace(r):this.rpcProviders[ig]=new uv({namespace:r})}})}registerEventListeners(){if(typeof this.client>`u`)throw Error(`Sign Client is not initialized`);this.client.on(`session_ping`,e=>{let{topic:t}=e;t===this.session?.topic&&this.events.emit(`session_ping`,e)}),this.client.on(`session_event`,e=>{let{params:t,topic:n}=e;if(n!==this.session?.topic)return;let{event:r}=t;if(r.name===`accountsChanged`){let e=r.data;e&&wl(e)&&this.events.emit(`accountsChanged`,e.map(l_))}else if(r.name===`chainChanged`){let e=t.chainId,n=t.event.data,r=yl(e),i=d_(e)===d_(n)?e:`${r}:${d_(n)}`;this.onChainChanged(i)}else this.events.emit(r.name,r.data);this.events.emit(`session_event`,e)}),this.client.on(`session_update`,({topic:e,params:t})=>{if(e!==this.session?.topic)return;let{namespaces:n}=t,r=this.client?.session.get(e);this.session=yv(vv({},r),{namespaces:n}),this.onSessionUpdate(),this.events.emit(`session_update`,{topic:e,params:t})}),this.client.on(`session_delete`,async e=>{e.topic===this.session?.topic&&(await this.cleanup(),this.events.emit(`session_delete`,e),this.events.emit(`disconnect`,yv(vv({},W(`USER_DISCONNECTED`)),{data:e.topic})))}),this.on(og.DEFAULT_CHAIN_CHANGED,e=>{this.onChainChanged(e,!0)})}getProvider(e){return this.rpcProviders[e]||this.rpcProviders[ig]}onSessionUpdate(){Object.keys(this.rpcProviders).forEach(e=>{this.getProvider(e).updateNamespace(this.session?.namespaces[e])})}setNamespaces(e){let{namespaces:t,optionalNamespaces:n,sessionProperties:r,scopedProperties:i}=e;t&&Object.keys(t).length&&(this.namespaces=t),n&&Object.keys(n).length&&(this.optionalNamespaces=n),this.sessionProperties=r,this.scopedProperties=i}validateChain(e){let[t,n]=e?.split(`:`)||[``,``];if(!this.namespaces||!Object.keys(this.namespaces).length)return[t,n];if(t&&!Object.keys(this.namespaces||{}).map(e=>yl(e)).includes(t))throw Error(`Namespace '${t}' is not configured. Please call connect() first with namespace config.`);if(t&&n)return[t,n];let r=yl(Object.keys(this.namespaces)[0]);return[r,this.rpcProviders[r].getDefaultChain()]}async requestAccounts(){let[e]=this.validateChain();return await this.getProvider(e).requestAccounts()}async onChainChanged(e,t=!1){if(!this.namespaces)return;let[n,r]=this.validateChain(e);r&&(t||this.getProvider(n).setDefaultChain(r),this.namespaces[n]?this.namespaces[n].defaultChain=r:this.namespaces[`${n}:${r}`]?this.namespaces[`${n}:${r}`].defaultChain=r:this.namespaces[`${n}:${r}`]={defaultChain:r},this.events.emit(`chainChanged`,r),await this.persist(`namespaces`,this.namespaces))}onConnect(){this.createProviders(),this.events.emit(`connect`,{session:this.session})}async cleanup(){this.namespaces=void 0,this.optionalNamespaces=void 0,this.sessionProperties=void 0,await this.deleteFromStore(`namespaces`),await this.deleteFromStore(`optionalNamespaces`),await this.deleteFromStore(`sessionProperties`),this.session=void 0,await this.cleanupPendingPairings({deletePairings:!0}),await this.cleanupStorage()}async persist(e,t){let n=this.session?.topic||``;await this.client.core.storage.setItem(`${ng}/${e}${n}`,t)}async getFromStore(e){let t=this.session?.topic||``;return await this.client.core.storage.getItem(`${ng}/${e}${t}`)}async deleteFromStore(e){let t=this.session?.topic||``;await this.client.core.storage.removeItem(`${ng}/${e}${t}`)}async cleanupStorage(){try{if(this.client?.session.length>0)return;let e=await this.client.core.storage.getKeys();for(let t of e)t.startsWith(ng)&&await this.client.core.storage.removeItem(t)}catch(e){this.logger.warn(`Failed to cleanup storage`,e)}}},Sv={ERROR_CODE_UNRECOGNIZED_CHAIN_ID:4902,ERROR_CODE_DEFAULT:5e3,ERROR_INVALID_CHAIN_ID:32603};function Cv(e){return{formatters:void 0,fees:void 0,serializers:void 0,...e}}var wv=Cv({id:`5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp`,name:`Solana`,network:`solana-mainnet`,nativeCurrency:{name:`Solana`,symbol:`SOL`,decimals:9},rpcUrls:{default:{http:[`https://rpc.walletconnect.org/v1`]}},blockExplorers:{default:{name:`Solscan`,url:`https://solscan.io`}},testnet:!1,chainNamespace:`solana`,caipNetworkId:`solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp`,deprecatedCaipNetworkId:`solana:4sGjMW1sUnHzSxGspuhpqLDx6wiyjNtZ`}),Tv=Cv({id:`EtWTRABZaYq6iMfeYKouRu166VU2xqa1`,name:`Solana Devnet`,network:`solana-devnet`,nativeCurrency:{name:`Solana`,symbol:`SOL`,decimals:9},rpcUrls:{default:{http:[`https://rpc.walletconnect.org/v1`]}},blockExplorers:{default:{name:`Solscan`,url:`https://solscan.io`}},testnet:!0,chainNamespace:`solana`,caipNetworkId:`solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1`,deprecatedCaipNetworkId:`solana:8E9rvCKLFQia2Y35HXjjpWzj8weVo44K`}),Ev=Cv({id:`4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z`,name:`Solana Testnet`,network:`solana-testnet`,nativeCurrency:{name:`Solana`,symbol:`SOL`,decimals:9},rpcUrls:{default:{http:[`https://rpc.walletconnect.org/v1`]}},blockExplorers:{default:{name:`Solscan`,url:`https://solscan.io`}},testnet:!0,chainNamespace:`solana`,caipNetworkId:`solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z`});Cv({id:`000000000019d6689c085ae165831e93`,caipNetworkId:`bip122:000000000019d6689c085ae165831e93`,chainNamespace:`bip122`,name:`Bitcoin`,nativeCurrency:{name:`Bitcoin`,symbol:`BTC`,decimals:8},rpcUrls:{default:{http:[`https://rpc.walletconnect.org/v1`]}}}),Cv({id:`000000000933ea01ad0ee984209779ba`,caipNetworkId:`bip122:000000000933ea01ad0ee984209779ba`,chainNamespace:`bip122`,name:`Bitcoin Testnet`,nativeCurrency:{name:`Bitcoin`,symbol:`BTC`,decimals:8},rpcUrls:{default:{http:[`https://rpc.walletconnect.org/v1`]}},testnet:!0});var Dv={solana:[`solana_signMessage`,`solana_signTransaction`,`solana_requestAccounts`,`solana_getAccounts`,`solana_signAllTransactions`,`solana_signAndSendTransaction`],eip155:[`eth_accounts`,`eth_requestAccounts`,`eth_sendRawTransaction`,`eth_sign`,`eth_signTransaction`,`eth_signTypedData`,`eth_signTypedData_v3`,`eth_signTypedData_v4`,`eth_sendTransaction`,`personal_sign`,`wallet_switchEthereumChain`,`wallet_addEthereumChain`,`wallet_getPermissions`,`wallet_requestPermissions`,`wallet_registerOnboarding`,`wallet_watchAsset`,`wallet_scanQRCode`,`wallet_getCallsStatus`,`wallet_showCallsStatus`,`wallet_sendCalls`,`wallet_getCapabilities`,`wallet_grantPermissions`,`wallet_revokePermissions`,`wallet_getAssets`],bip122:[`sendTransfer`,`signMessage`,`signPsbt`,`getAccountAddresses`]},Ov={getMethodsByChainNamespace(e){return Dv[e]||[]},createDefaultNamespace(e){return{methods:this.getMethodsByChainNamespace(e),events:[`accountsChanged`,`chainChanged`],chains:[],rpcMap:{}}},applyNamespaceOverrides(e,t){if(!t)return{...e};let n={...e},r=new Set;if(t.methods&&Object.keys(t.methods).forEach(e=>r.add(e)),t.chains&&Object.keys(t.chains).forEach(e=>r.add(e)),t.events&&Object.keys(t.events).forEach(e=>r.add(e)),t.rpcMap&&Object.keys(t.rpcMap).forEach(e=>{let[t]=e.split(`:`);t&&r.add(t)}),r.forEach(e=>{n[e]||(n[e]=this.createDefaultNamespace(e))}),t.methods&&Object.entries(t.methods).forEach(([e,t])=>{n[e]&&(n[e].methods=t)}),t.chains&&Object.entries(t.chains).forEach(([e,t])=>{n[e]&&(n[e].chains=t)}),t.events&&Object.entries(t.events).forEach(([e,t])=>{n[e]&&(n[e].events=t)}),t.rpcMap){let e=new Set;Object.entries(t.rpcMap).forEach(([t,r])=>{let[i,a]=t.split(`:`);!i||!a||!n[i]||(n[i].rpcMap||(n[i].rpcMap={}),e.has(i)||(n[i].rpcMap={},e.add(i)),n[i].rpcMap[a]=r)})}return n},createNamespaces(e,t){let n=e.reduce((e,t)=>{let{id:n,chainNamespace:r,rpcUrls:i}=t,a=i.default.http[0];e[r]||(e[r]=this.createDefaultNamespace(r));let o=`${r}:${n}`,s=e[r];switch(s.chains.push(o),o){case wv.caipNetworkId:s.chains.push(wv.deprecatedCaipNetworkId);break;case Tv.caipNetworkId:s.chains.push(Tv.deprecatedCaipNetworkId);break;default:}return s?.rpcMap&&a&&(s.rpcMap[n]=a),e},{});return this.applyNamespaceOverrides(n,t)},resolveReownName:async e=>{let t=await dr.resolveName(e);return(Object.values(t?.addresses)||[])[0]?.address||!1},getChainsFromNamespaces(e={}){return Object.values(e).flatMap(e=>{let t=e.chains||[],n=e.accounts.map(e=>{let[t,n]=e.split(`:`);return`${t}:${n}`});return Array.from(new Set([...t,...n]))})},isSessionEventData(e){return typeof e==`object`&&!!e&&`id`in e&&`topic`in e&&`params`in e&&typeof e.params==`object`&&e.params!==null&&`chainId`in e.params&&`event`in e.params&&typeof e.params.event==`object`&&e.params.event!==null}},kv=class{constructor({provider:e,caipNetworks:t,namespace:n}){this.id=x.CONNECTOR_ID.WALLET_CONNECT,this.name=fr.ConnectorNamesMap[x.CONNECTOR_ID.WALLET_CONNECT],this.type=`WALLET_CONNECT`,this.imageId=fr.ConnectorImageIds[x.CONNECTOR_ID.WALLET_CONNECT],this.caipNetworks=t,this.provider=e,this.chain=n}get chains(){return this.caipNetworks}async connectWalletConnect(){if(!await this.authenticate()){let e=m.state.universalProviderConfigOverride,t=Ov.createNamespaces(this.caipNetworks,e);await this.provider.connect({optionalNamespaces:t})}return{clientId:await this.provider.client.core.crypto.getClientId(),session:this.provider.session}}async disconnect(){await this.provider.disconnect()}async authenticate(){let e=this.chains.map(e=>e.caipNetworkId);return h.universalProviderAuthenticate({universalProvider:this.provider,chains:e,methods:Av})}},Av=[`eth_accounts`,`eth_requestAccounts`,`eth_sendRawTransaction`,`eth_sign`,`eth_signTransaction`,`eth_signTypedData`,`eth_signTypedData_v3`,`eth_signTypedData_v4`,`eth_sendTransaction`,`personal_sign`,`wallet_switchEthereumChain`,`wallet_addEthereumChain`,`wallet_getPermissions`,`wallet_requestPermissions`,`wallet_registerOnboarding`,`wallet_watchAsset`,`wallet_scanQRCode`,`wallet_getCallsStatus`,`wallet_sendCalls`,`wallet_getCapabilities`,`wallet_grantPermissions`,`wallet_revokePermissions`,`wallet_getAssets`],jv=class{constructor(e){this.availableConnectors=[],this.eventListeners=new Map,e&&this.construct(e)}construct(e){this.caipNetworks=e.networks,this.projectId=e.projectId,this.namespace=e.namespace,this.adapterType=e.adapterType}get connectors(){return this.availableConnectors}get networks(){return this.caipNetworks||[]}setAuthProvider(e){this.addConnector({id:x.CONNECTOR_ID.AUTH,type:`AUTH`,name:x.CONNECTOR_NAMES.AUTH,provider:e,imageId:fr.ConnectorImageIds[x.CONNECTOR_ID.AUTH],chain:this.namespace,chains:[]})}addConnector(...e){let t=new Set;this.availableConnectors=[...e,...this.availableConnectors].filter(e=>t.has(e.id)?!1:(t.add(e.id),!0)),this.emit(`connectors`,this.availableConnectors)}setStatus(e,t){v.setStatus(e,t)}on(e,t){this.eventListeners.has(e)||this.eventListeners.set(e,new Set),this.eventListeners.get(e)?.add(t)}off(e,t){let n=this.eventListeners.get(e);n&&n.delete(t)}removeAllEventListeners(){this.eventListeners.forEach(e=>{e.clear()})}emit(e,t){let n=this.eventListeners.get(e);n&&n.forEach(e=>e(t))}async connectWalletConnect(e){return{clientId:(await this.getWalletConnectConnector().connectWalletConnect()).clientId}}async switchNetwork(e){let{caipNetwork:t,providerType:n}=e;if(!e.provider)return;let r=`provider`in e.provider?e.provider.provider:e.provider;if(n===`WALLET_CONNECT`){r.setDefaultChain(t.caipNetworkId);return}if(r&&n===`AUTH`){let e=r;await e.switchNetwork(t.caipNetworkId);let n=await e.getUser({chainId:t.caipNetworkId,preferredAccountType:m.state.defaultAccountTypes[t.chainNamespace]});this.emit(`switchNetwork`,n)}}getWalletConnectConnector(){let e=this.connectors.find(e=>e instanceof kv);if(!e)throw Error(`WalletConnectConnector not found`);return e}},Mv=class extends jv{setUniversalProvider(e){this.addConnector(new kv({provider:e,caipNetworks:this.caipNetworks||[],namespace:this.namespace}))}async connect(e){return Promise.resolve({id:`WALLET_CONNECT`,type:`WALLET_CONNECT`,chainId:Number(e.chainId),provider:this.provider,address:``})}async disconnect(){try{await this.getWalletConnectConnector().disconnect()}catch(e){console.warn(`UniversalAdapter:disconnect - error`,e)}}async getAccounts({namespace:e}){let t=this.provider?.session?.namespaces?.[e]?.accounts?.map(e=>{let[,,t]=e.split(`:`);return t}).filter((e,t,n)=>n.indexOf(e)===t)||[];return Promise.resolve({accounts:t.map(t=>f.createAccount(e,t,e===`bip122`?`payment`:`eoa`))})}async syncConnectors(){return Promise.resolve()}async getBalance(e){if(!(e.caipNetwork&&a.BALANCE_SUPPORTED_CHAINS.includes(e.caipNetwork?.chainNamespace))||e.caipNetwork?.testnet)return{balance:`0.00`,symbol:e.caipNetwork?.nativeCurrency.symbol||``};if(v.state.balanceLoading&&e.chainId===T.state.activeCaipNetwork?.id)return{balance:v.state.balance||`0.00`,symbol:v.state.balanceSymbol||``};let t=(await v.fetchTokenBalance()).find(t=>t.chainId===`${e.caipNetwork?.chainNamespace}:${e.chainId}`&&t.symbol===e.caipNetwork?.nativeCurrency.symbol);return{balance:t?.quantity.numeric||`0.00`,symbol:t?.symbol||e.caipNetwork?.nativeCurrency.symbol||``}}async signMessage(e){let{provider:t,message:n,address:r}=e;if(!t)throw Error(`UniversalAdapter:signMessage - provider is undefined`);let i=``;return i=T.state.activeCaipNetwork?.chainNamespace===x.CHAIN.SOLANA?(await t.request({method:`solana_signMessage`,params:{message:At.encode(new TextEncoder().encode(n)),pubkey:r}},T.state.activeCaipNetwork?.caipNetworkId)).signature:await t.request({method:`personal_sign`,params:[n,r]},T.state.activeCaipNetwork?.caipNetworkId),{signature:i}}async estimateGas(){return Promise.resolve({gas:BigInt(0)})}async getProfile(){return Promise.resolve({profileImage:``,profileName:``})}async sendTransaction(){return Promise.resolve({hash:``})}walletGetAssets(e){return Promise.resolve({})}async writeContract(){return Promise.resolve({hash:``})}async getEnsAddress(){return Promise.resolve({address:!1})}parseUnits(){return 0n}formatUnits(){return`0`}async getCapabilities(){return Promise.resolve({})}async grantPermissions(){return Promise.resolve({})}async revokePermissions(){return Promise.resolve(`0x`)}async syncConnection(){return Promise.resolve({id:`WALLET_CONNECT`,type:`WALLET_CONNECT`,chainId:1,provider:this.provider,address:``})}async switchNetwork(e){let{caipNetwork:t}=e,n=this.getWalletConnectConnector();if(t.chainNamespace===x.CHAIN.EVM)try{await n.provider?.request({method:`wallet_switchEthereumChain`,params:[{chainId:Gt(t.id)}]})}catch(e){if(e.code===Sv.ERROR_CODE_UNRECOGNIZED_CHAIN_ID||e.code===Sv.ERROR_INVALID_CHAIN_ID||e.code===Sv.ERROR_CODE_DEFAULT||e?.data?.originalError?.code===Sv.ERROR_CODE_UNRECOGNIZED_CHAIN_ID)try{await n.provider?.request({method:`wallet_addEthereumChain`,params:[{chainId:Gt(t.id),rpcUrls:[t?.rpcUrls.chainDefault?.http],chainName:t.name,nativeCurrency:t.nativeCurrency,blockExplorerUrls:[t.blockExplorers?.default.url]}]})}catch{throw Error(`Chain is not supported`)}}n.provider.setDefaultChain(t.caipNetworkId)}getWalletConnectProvider(){return this.connectors.find(e=>e.type===`WALLET_CONNECT`)?.provider}},Nv=class{constructor(e){this.hasSwitchedToPreferredAccountTypeOnConnect=!1,this.chainNamespaces=[],this.reportedAlertErrors={},this.getCaipNetwork=e=>e?T.getNetworkData(e)?.caipNetwork||T.getRequestedCaipNetworks(e).filter(t=>t.chainNamespace===e)?.[0]:T.state.activeCaipNetwork||this.defaultCaipNetwork,this.getCaipNetworkId=()=>{let e=this.getCaipNetwork();if(e)return e.id},this.getCaipNetworks=e=>T.getRequestedCaipNetworks(e),this.getActiveChainNamespace=()=>T.state.activeChain,this.setRequestedCaipNetworks=(e,t)=>{T.setRequestedCaipNetworks(e,t)},this.getApprovedCaipNetworkIds=()=>T.getAllApprovedCaipNetworkIds(),this.getCaipAddress=e=>T.state.activeChain===e||!e?T.state.activeCaipAddress:T.getAccountProp(`caipAddress`,e),this.setClientId=e=>{y.setClientId(e)},this.getProvider=e=>z.getProvider(e),this.getProviderType=e=>z.getProviderId(e),this.getPreferredAccountType=()=>v.state.preferredAccountType,this.setCaipAddress=(e,t)=>{v.setCaipAddress(e,t)},this.setBalance=(e,t,n)=>{v.setBalance(e,t,n)},this.setProfileName=(e,t)=>{v.setProfileName(e,t)},this.setProfileImage=(e,t)=>{v.setProfileImage(e,t)},this.setUser=(e,t)=>{v.setUser(e,t),m.state.enableEmbedded&&E.close()},this.resetAccount=e=>{v.resetAccount(e)},this.setCaipNetwork=e=>{T.setActiveCaipNetwork(e)},this.setCaipNetworkOfNamespace=(e,t)=>{T.setChainNetworkData(t,{caipNetwork:e})},this.setAllAccounts=(e,t)=>{v.setAllAccounts(e,t),m.setHasMultipleAddresses(e?.length>1)},this.setStatus=(e,t)=>{v.setStatus(e,t),A.isConnected()?S.setConnectionStatus(`connected`):S.setConnectionStatus(`disconnected`)},this.getAddressByChainNamespace=e=>T.getAccountProp(`address`,e),this.setConnectors=e=>{let t=[...A.getConnectors(),...e];A.setConnectors(t)},this.fetchIdentity=e=>y.fetchIdentity(e),this.getReownName=e=>dr.getNamesForAddress(e),this.getConnectors=()=>A.getConnectors(),this.getConnectorImage=e=>s.getConnectorImage(e),this.setConnectedWalletInfo=(e,t)=>{let n=z.getProviderId(t),r=e?{...e,type:n}:void 0;v.setConnectedWalletInfo(r,t)},this.getIsConnectedState=()=>!!T.state.activeCaipAddress,this.addAddressLabel=(e,t,n)=>{v.addAddressLabel(e,t,n)},this.removeAddressLabel=(e,t)=>{v.removeAddressLabel(e,t)},this.getAddress=e=>T.state.activeChain===e||!e?v.state.address:T.getAccountProp(`address`,e),this.setApprovedCaipNetworksData=e=>T.setApprovedCaipNetworksData(e),this.resetNetwork=e=>{T.resetNetwork(e)},this.addConnector=e=>{A.addConnector(e)},this.resetWcConnection=()=>{b.resetWcConnection()},this.setAddressExplorerUrl=(e,t)=>{v.setAddressExplorerUrl(e,t)},this.setSmartAccountDeployed=(e,t)=>{v.setSmartAccountDeployed(e,t)},this.setSmartAccountEnabledNetworks=(e,t)=>{T.setSmartAccountEnabledNetworks(e,t)},this.setPreferredAccountType=(e,t)=>{v.setPreferredAccountType(e,t)},this.setEIP6963Enabled=e=>{m.setEIP6963Enabled(e)},this.handleUnsafeRPCRequest=()=>{if(this.isOpen()){if(this.isTransactionStackEmpty())return;this.redirect(`ApproveTransaction`)}else this.open({view:`ApproveTransaction`})},this.options=e,this.version=e.sdkVersion,this.caipNetworks=this.extendCaipNetworks(e),this.chainNamespaces=[...new Set(this.caipNetworks?.map(e=>e.chainNamespace))],this.defaultCaipNetwork=this.extendDefaultCaipNetwork(e),this.chainAdapters=this.createAdapters(e.adapters),this.initialize(e),this.sendInitializeEvent(e)}async initialize(e){this.initControllers(e),await this.initChainAdapters(),await this.injectModalUi(),await this.syncExistingConnection(),ee.set({initialized:!0})}sendInitializeEvent(e){let{...t}=e;delete t.adapters,o.sendEvent({type:`track`,event:`INITIALIZE`,properties:{...t,networks:e.networks.map(e=>e.id),siweConfig:{options:e.siweConfig?.options||{}}}})}initControllers(e){this.initializeOptionsController(e),this.initializeChainController(e),this.initializeThemeController(e),this.initializeConnectionController(e),this.initializeConnectorController()}initializeThemeController(e){e.themeMode&&g.setThemeMode(e.themeMode),e.themeVariables&&g.setThemeVariables(e.themeVariables)}initializeChainController(e){if(!this.connectionControllerClient||!this.networkControllerClient)throw Error(`ConnectionControllerClient and NetworkControllerClient must be set`);T.initialize(e.adapters??[],this.caipNetworks,{connectionControllerClient:this.connectionControllerClient,networkControllerClient:this.networkControllerClient});let t=this.getDefaultNetwork();t&&T.setActiveCaipNetwork(t)}initializeConnectionController(e){b.setWcBasic(e.basic??!1)}initializeConnectorController(){A.initialize(this.chainNamespaces)}initializeOptionsController(e){m.setDebug(e.debug!==!1),m.setEnableWalletConnect(e.enableWalletConnect!==!1),m.setEnableWalletGuide(e.enableWalletGuide!==!1),m.setEnableWallets(e.enableWallets!==!1),m.setEIP6963Enabled(e.enableEIP6963!==!1),m.setEnableNetworkSwitch(e.enableNetworkSwitch!==!1),m.setEnableAuthLogger(e.enableAuthLogger!==!1),m.setCustomRpcUrls(e.customRpcUrls),m.setSdkVersion(e.sdkVersion),m.setProjectId(e.projectId),m.setEnableEmbedded(e.enableEmbedded),m.setAllWallets(e.allWallets),m.setIncludeWalletIds(e.includeWalletIds),m.setExcludeWalletIds(e.excludeWalletIds),m.setFeaturedWalletIds(e.featuredWalletIds),m.setTokens(e.tokens),m.setTermsConditionsUrl(e.termsConditionsUrl),m.setPrivacyPolicyUrl(e.privacyPolicyUrl),m.setCustomWallets(e.customWallets),m.setFeatures(e.features),m.setAllowUnsupportedChain(e.allowUnsupportedChain),m.setDefaultAccountTypes(e.defaultAccountTypes),m.setUniversalProviderConfigOverride(e.universalProviderConfigOverride);let t=this.getDefaultMetaData();if(!e.metadata&&t&&(e.metadata=t),m.setMetadata(e.metadata),m.setDisableAppend(e.disableAppend),m.setEnableEmbedded(e.enableEmbedded),m.setSIWX(e.siwx),!e.projectId){O.open(pr.ALERT_ERRORS.PROJECT_ID_NOT_CONFIGURED,`error`);return}if(e.adapters?.find(e=>e.namespace===x.CHAIN.EVM)&&e.siweConfig){if(e.siwx)throw Error("Cannot set both `siweConfig` and `siwx` options");m.setSIWX(e.siweConfig.mapToSIWX())}}getDefaultMetaData(){return typeof window<`u`&&typeof document<`u`?{name:document.getElementsByTagName(`title`)?.[0]?.textContent||``,description:document.querySelector(`meta[property="og:description"]`)?.content||``,url:window.location.origin,icons:[document.querySelector(`link[rel~="icon"]`)?.href||``]}:null}setUnsupportedNetwork(e){let t=this.getActiveChainNamespace();if(t){let n=yr.getUnsupportedNetwork(`${t}:${e}`);T.setActiveCaipNetwork(n)}}getDefaultNetwork(){return yr.getCaipNetworkFromStorage(this.defaultCaipNetwork)}extendCaipNetwork(e,t){return yr.extendCaipNetwork(e,{customNetworkImageUrls:t.chainImages,projectId:t.projectId})}extendCaipNetworks(e){return yr.extendCaipNetworks(e.networks,{customNetworkImageUrls:e.chainImages,customRpcUrls:e.customRpcUrls,projectId:e.projectId})}extendDefaultCaipNetwork(e){let t=e.networks.find(t=>t.id===e.defaultNetwork?.id);return t?yr.extendCaipNetwork(t,{customNetworkImageUrls:e.chainImages,customRpcUrls:e.customRpcUrls,projectId:e.projectId}):void 0}createClients(){this.connectionControllerClient={connectWalletConnect:async()=>{let e=T.state.activeChain,t=this.getAdapter(e),n=this.getCaipNetwork(e)?.id;if(!t)throw Error(`Adapter not found`);let r=await t.connectWalletConnect(n);this.close(),this.setClientId(r?.clientId||null),S.setConnectedNamespaces([...T.state.chains.keys()]),this.chainNamespaces.forEach(e=>{A.setConnectorId(Ne.CONNECTOR_TYPE_WALLET_CONNECT,e)}),await this.syncWalletConnectAccount()},connectExternal:async({id:e,info:t,type:n,provider:r,chain:i,caipNetwork:a})=>{let o=T.state.activeChain,s=i||o,c=this.getAdapter(s);if(i&&i!==o&&!a){let e=this.caipNetworks?.find(e=>e.chainNamespace===i);e&&this.setCaipNetwork(e)}if(!c)throw Error(`Adapter not found`);let l=this.getCaipNetwork(s),u=await c.connect({id:e,info:t,type:n,provider:r,chainId:a?.id||l?.id,rpcUrl:a?.rpcUrls?.default?.http?.[0]||l?.rpcUrls?.default?.http?.[0]});if(!u)return;S.addConnectedNamespace(s),this.syncProvider({...u,chainNamespace:s}),await this.syncAccount({...u,chainNamespace:s});let{accounts:d}=await c.getAccounts({namespace:s,id:e});this.setAllAccounts(d,s)},reconnectExternal:async({id:e,info:t,type:n,provider:r})=>{let i=T.state.activeChain,a=this.getAdapter(i);a?.reconnect&&(await a?.reconnect({id:e,info:t,type:n,provider:r,chainId:this.getCaipNetwork()?.id}),S.addConnectedNamespace(i))},disconnect:async e=>{let t=e||T.state.activeChain,n=this.getAdapter(t),r=z.getProvider(t),i=z.getProviderId(t);await n?.disconnect({provider:r,providerType:i}),S.removeConnectedNamespace(t),z.resetChain(t),this.setUser(void 0,t),this.setStatus(`disconnected`,t),this.hasSwitchedToPreferredAccountTypeOnConnect=!1},checkInstalled:e=>e?e.some(e=>!!window.ethereum?.[String(e)]):!!window.ethereum,signMessage:async e=>(await this.getAdapter(T.state.activeChain)?.signMessage({message:e,address:v.state.address,provider:z.getProvider(T.state.activeChain)}))?.signature||``,sendTransaction:async e=>{if(e.chainNamespace===x.CHAIN.EVM){let t=this.getAdapter(T.state.activeChain),n=z.getProvider(T.state.activeChain);return(await t?.sendTransaction({...e,caipNetwork:this.getCaipNetwork(),provider:n}))?.hash||``}return``},estimateGas:async e=>{if(e.chainNamespace===x.CHAIN.EVM){let t=this.getAdapter(T.state.activeChain),n=z.getProvider(T.state.activeChain),r=this.getCaipNetwork();if(!r)throw Error(`CaipNetwork is undefined`);return(await t?.estimateGas({...e,provider:n,caipNetwork:r}))?.gas||0n}return 0n},getEnsAvatar:async()=>(await this.getAdapter(T.state.activeChain)?.getProfile({address:v.state.address,chainId:Number(this.getCaipNetwork()?.id)}))?.profileImage||!1,getEnsAddress:async e=>{let t=this.getAdapter(T.state.activeChain),n=this.getCaipNetwork();return n&&(await t?.getEnsAddress({name:e,caipNetwork:n}))?.address||!1},writeContract:async e=>{let t=this.getAdapter(T.state.activeChain),n=this.getCaipNetwork(),r=this.getCaipAddress(),i=z.getProvider(T.state.activeChain);if(!n||!r)throw Error(`CaipNetwork or CaipAddress is undefined`);return(await t?.writeContract({...e,caipNetwork:n,provider:i,caipAddress:r}))?.hash},parseUnits:(e,t)=>this.getAdapter(T.state.activeChain)?.parseUnits({value:e,decimals:t})??0n,formatUnits:(e,t)=>this.getAdapter(T.state.activeChain)?.formatUnits({value:e,decimals:t})??`0`,getCapabilities:async e=>await this.getAdapter(T.state.activeChain)?.getCapabilities(e),grantPermissions:async e=>await this.getAdapter(T.state.activeChain)?.grantPermissions(e),revokePermissions:async e=>{let t=this.getAdapter(T.state.activeChain);return t?.revokePermissions?await t.revokePermissions(e):`0x`},walletGetAssets:async e=>await this.getAdapter(T.state.activeChain)?.walletGetAssets(e)??{}},this.networkControllerClient={switchCaipNetwork:async e=>await this.switchCaipNetwork(e),getApprovedCaipNetworksData:async()=>this.getApprovedCaipNetworksData()},b.setClient(this.connectionControllerClient)}getApprovedCaipNetworksData(){if(z.getProviderId(T.state.activeChain)===Ne.CONNECTOR_TYPE_WALLET_CONNECT){let e=this.universalProvider?.session?.namespaces;return{supportsAllNetworks:this.universalProvider?.session?.peer?.metadata.name===`MetaMask Wallet`,approvedCaipNetworkIds:this.getChainsFromNamespaces(e)}}return{supportsAllNetworks:!0,approvedCaipNetworkIds:[]}}async switchCaipNetwork(e){if(!e)return;let t=e.chainNamespace;if(this.getAddressByChainNamespace(e.chainNamespace)){let n=z.getProvider(t),r=z.getProviderId(t);if(e.chainNamespace===T.state.activeChain)await this.getAdapter(t)?.switchNetwork({caipNetwork:e,provider:n,providerType:r});else if(this.setCaipNetwork(e),r===Ne.CONNECTOR_TYPE_WALLET_CONNECT)this.syncWalletConnectAccount();else{let n=this.getAddressByChainNamespace(t);n&&this.syncAccount({address:n,chainId:e.id,chainNamespace:t})}}else this.setCaipNetwork(e)}getChainsFromNamespaces(e={}){return Object.values(e).flatMap(e=>{let t=e.chains||[],n=e.accounts.map(e=>{let{chainId:t,chainNamespace:n}=rt.parseCaipAddress(e);return`${n}:${t}`});return Array.from(new Set([...t,...n]))})}createAdapters(e){return this.createClients(),this.chainNamespaces.reduce((t,n)=>{let r=e?.find(e=>e.namespace===n);return r?(t[n]=r,t[n].namespace=n,t[n].construct({namespace:n,projectId:this.options?.projectId,networks:this.caipNetworks})):t[n]=new Mv({namespace:n,networks:this.caipNetworks}),t},{})}async initChainAdapter(e){this.onConnectors(e),this.listenAdapter(e),this.chainAdapters?.[e].syncConnectors(this.options,this),await this.createUniversalProviderForAdapter(e)}async initChainAdapters(){await Promise.all(this.chainNamespaces.map(async e=>{await this.initChainAdapter(e)}))}onConnectors(e){this.getAdapter(e)?.on(`connectors`,this.setConnectors.bind(this))}listenAdapter(e){let t=this.getAdapter(e);if(!t)return;let n=S.getConnectionStatus();n===`connected`?this.setStatus(`connecting`,e):(n===`disconnected`&&S.clearAddressCache(),this.setStatus(n,e)),t.on(`switchNetwork`,({address:t,chainId:n})=>{let r=this.caipNetworks?.find(e=>e.id===n||e.caipNetworkId===n),i=T.state.activeChain===e,a=T.getAccountProp(`address`,e);if(r){let r=i&&t?t:a;r&&this.syncAccount({address:r,chainId:n,chainNamespace:e})}else this.setUnsupportedNetwork(n)}),t.on(`disconnect`,this.disconnect.bind(this,e)),t.on(`pendingTransactions`,()=>{let e=v.state.address,t=T.state.activeCaipNetwork;!e||!t?.id||this.updateNativeBalance(e,t.id,t.chainNamespace)}),t.on(`accountChanged`,({address:t,chainId:n})=>{let r=T.state.activeChain===e;r&&n?this.syncAccount({address:t,chainId:n,chainNamespace:e}):r&&T.state.activeCaipNetwork?.id?this.syncAccount({address:t,chainId:T.state.activeCaipNetwork?.id,chainNamespace:e}):this.syncAccountInfo(t,n,e)})}async createUniversalProviderForAdapter(e){await this.getUniversalProvider(),this.universalProvider&&this.chainAdapters?.[e]?.setUniversalProvider?.(this.universalProvider)}async syncExistingConnection(){await Promise.allSettled(this.chainNamespaces.map(e=>this.syncNamespaceConnection(e)))}async syncNamespaceConnection(e){try{let t=A.getConnectorId(e);switch(this.setStatus(`connecting`,e),t){case x.CONNECTOR_ID.WALLET_CONNECT:await this.syncWalletConnectAccount();break;case x.CONNECTOR_ID.AUTH:break;default:await this.syncAdapterConnection(e)}}catch(t){console.warn(`AppKit couldn't sync existing connection`,t),this.setStatus(`disconnected`,e)}}async syncAdapterConnection(e){let t=this.getAdapter(e),n=A.getConnectorId(e),r=this.getCaipNetwork(e),i=A.getConnectors(e).find(e=>e.id===n);try{if(!t||!i)throw Error(`Adapter or connector not found for namespace ${e}`);if(!r?.id)throw Error(`CaipNetwork not found`);let n=await t?.syncConnection({namespace:e,id:i.id,chainId:r.id,rpcUrl:r?.rpcUrls?.default?.http?.[0]});if(n){let r=await t?.getAccounts({namespace:e,id:i.id});r&&r.accounts.length>0?this.setAllAccounts(r.accounts,e):this.setAllAccounts([f.createAccount(e,n.address,`eoa`)],e),this.syncProvider({...n,chainNamespace:e}),await this.syncAccount({...n,chainNamespace:e}),this.setStatus(`connected`,e)}else this.setStatus(`disconnected`,e)}catch{this.setStatus(`disconnected`,e)}}async syncWalletConnectAccount(){let e=this.chainNamespaces.map(async e=>{let t=this.getAdapter(e),n=this.universalProvider?.session?.namespaces?.[e]?.accounts||[],r=T.state.activeCaipNetwork?.id,i=n.find(e=>{let{chainId:t}=rt.parseCaipAddress(e);return t===r?.toString()})||n[0];if(i){let n=rt.validateCaipAddress(i),{chainId:r,address:a}=rt.parseCaipAddress(n);if(z.setProviderId(e,Ne.CONNECTOR_TYPE_WALLET_CONNECT),this.caipNetworks&&T.state.activeCaipNetwork&&t?.namespace!==x.CHAIN.EVM){let n=t?.getWalletConnectProvider({caipNetworks:this.caipNetworks,provider:this.universalProvider,activeCaipNetwork:T.state.activeCaipNetwork});z.setProvider(e,n)}else z.setProvider(e,this.universalProvider);A.setConnectorId(x.CONNECTOR_ID.WALLET_CONNECT,e),S.addConnectedNamespace(e),this.syncWalletConnectAccounts(e),await this.syncAccount({address:a,chainId:r,chainNamespace:e})}else this.setStatus(`disconnected`,e);await T.setApprovedCaipNetworksData(e)});await Promise.all(e)}syncWalletConnectAccounts(e){let t=this.universalProvider?.session?.namespaces?.[e]?.accounts?.map(e=>{let{address:t}=rt.parseCaipAddress(e);return t}).filter((e,t,n)=>n.indexOf(e)===t);t&&this.setAllAccounts(t.map(t=>f.createAccount(e,t,e===`bip122`?`payment`:`eoa`)),e)}syncProvider({type:e,provider:t,id:n,chainNamespace:r}){z.setProviderId(r,e),z.setProvider(r,t),A.setConnectorId(n,r)}async syncAccount(e){let t=e.chainNamespace===T.state.activeChain,n=T.getCaipNetworkByNamespace(e.chainNamespace,e.chainId),{address:r,chainId:i,chainNamespace:a}=e,{chainId:o}=S.getActiveNetworkProps(),s=i||o,c=T.state.activeCaipNetwork?.name===x.UNSUPPORTED_NETWORK_NAME,l=T.getNetworkProp(`supportsAllNetworks`,a);if(this.setStatus(`connected`,a),!(c&&!l)&&s){let e=this.caipNetworks?.find(e=>e.id.toString()===s.toString()),i=this.caipNetworks?.find(e=>e.chainNamespace===a);if(!l&&!e&&!i){let t=this.getApprovedCaipNetworkIds()||[],n=t.find(e=>rt.parseCaipNetworkId(e)?.chainId===s.toString()),r=t.find(e=>rt.parseCaipNetworkId(e)?.chainNamespace===a);e=this.caipNetworks?.find(e=>e.caipNetworkId===n),i=this.caipNetworks?.find(e=>e.caipNetworkId===r||`deprecatedCaipNetworkId`in e&&e.deprecatedCaipNetworkId===r)}let o=e||i;o?.chainNamespace===T.state.activeChain?m.state.enableNetworkSwitch&&!m.state.allowUnsupportedChain&&T.state.activeCaipNetwork?.name===x.UNSUPPORTED_NETWORK_NAME?T.showUnsupportedChainUI():this.setCaipNetwork(o):t||n&&this.setCaipNetworkOfNamespace(n,a),this.syncConnectedWalletInfo(a),Fe.isLowerCaseMatch(r,v.state.address)||this.syncAccountInfo(r,o?.id,a),t?await this.syncBalance({address:r,chainId:o?.id,chainNamespace:a}):await this.syncBalance({address:r,chainId:n?.id,chainNamespace:a})}}async syncAccountInfo(e,t,n){let r=this.getCaipAddress(n),i=t||r?.split(`:`)[1];if(!i)return;let a=`${n}:${i}:${e}`;this.setCaipAddress(a,n),await this.syncIdentity({address:e,chainId:i,chainNamespace:n})}async syncReownName(e,t){try{let n=await this.getReownName(e);if(n[0]){let e=n[0];this.setProfileName(e.name,t)}else this.setProfileName(null,t)}catch{this.setProfileName(null,t)}}syncConnectedWalletInfo(e){let t=A.getConnectorId(e),n=z.getProviderId(e);if(n===Ne.CONNECTOR_TYPE_ANNOUNCED||n===Ne.CONNECTOR_TYPE_INJECTED){if(t){let n=this.getConnectors().find(e=>e.id===t);if(n){let{info:t,name:r,imageUrl:i}=n,a=i||this.getConnectorImage(n);this.setConnectedWalletInfo({name:r,icon:a,...t},e)}}}else if(n===Ne.CONNECTOR_TYPE_WALLET_CONNECT){let t=z.getProvider(e);t?.session&&this.setConnectedWalletInfo({...t.session.peer.metadata,name:t.session.peer.metadata.name,icon:t.session.peer.metadata.icons?.[0]},e)}else if(t)if(t===x.CONNECTOR_ID.COINBASE){let t=this.getConnectors().find(e=>e.id===x.CONNECTOR_ID.COINBASE);this.setConnectedWalletInfo({name:`Coinbase Wallet`,icon:this.getConnectorImage(t)},e)}else this.setConnectedWalletInfo({name:t},e)}async syncBalance(e){!u.getNetworksByNamespace(this.caipNetworks,e.chainNamespace).find(t=>t.id.toString()===e.chainId?.toString())||!e.chainId||await this.updateNativeBalance(e.address,e.chainId,e.chainNamespace)}async updateNativeBalance(e,t,n){let r=this.getAdapter(n);if(r){let i=await r.getBalance({address:e,chainId:t,caipNetwork:this.getCaipNetwork(n),tokens:this.options.tokens});this.setBalance(i.balance,i.symbol,n)}}async initializeUniversalAdapter(){let e=hr.createLogger((e,...t)=>{e&&this.handleAlertError(e),console.error(...t)}),t={projectId:this.options?.projectId,metadata:{name:this.options?.metadata?this.options?.metadata.name:``,description:this.options?.metadata?this.options?.metadata.description:``,url:this.options?.metadata?this.options?.metadata.url:``,icons:this.options?.metadata?this.options?.metadata.icons:[``]},logger:e};m.setManualWCControl(!!this.options?.manualWCControl),this.universalProvider=this.options.universalProvider??await xv.init(t),this.listenWalletConnect()}listenWalletConnect(){this.universalProvider&&(this.universalProvider.on(`display_uri`,e=>{b.setUri(e)}),this.universalProvider.on(`connect`,b.finalizeWcConnection),this.universalProvider.on(`disconnect`,()=>{this.chainNamespaces.forEach(e=>{this.resetAccount(e)}),b.resetWcConnection()}),this.universalProvider.on(`chainChanged`,e=>{let t=this.caipNetworks?.find(t=>t.id==e),n=this.getCaipNetwork();if(!t){this.setUnsupportedNetwork(e);return}n?.id!==t?.id&&this.setCaipNetwork(t)}),this.universalProvider.on(`session_event`,e=>{if(Ov.isSessionEventData(e)){let{name:t,data:n}=e.params.event;t===`accountsChanged`&&Array.isArray(n)&&f.isCaipAddress(n[0])&&this.syncAccount(rt.parseCaipAddress(n[0]))}}))}createUniversalProvider(){return!this.universalProviderInitPromise&&f.isClient()&&this.options?.projectId&&(this.universalProviderInitPromise=this.initializeUniversalAdapter()),this.universalProviderInitPromise}async getUniversalProvider(){if(!this.universalProvider)try{await this.createUniversalProvider()}catch(e){o.sendEvent({type:`error`,event:`INTERNAL_SDK_ERROR`,properties:{errorType:`UniversalProviderInitError`,errorMessage:e instanceof Error?e.message:`Unknown`,uncaught:!1}}),console.error(`AppKit:getUniversalProvider - Cannot create provider`,e)}return this.universalProvider}handleAlertError(e){let[t,n]=Object.entries(pr.UniversalProviderErrors).find(([,{message:t}])=>e.message.includes(t))??[],{message:r,alertErrorKey:i}=n??{};if(t&&r&&!this.reportedAlertErrors[t]){let e=pr.ALERT_ERRORS[i];e&&(O.open(e,`error`),this.reportedAlertErrors[t]=!0)}}getAdapter(e){if(e)return this.chainAdapters?.[e]}createAdapter(e){if(!e)return;let t=e.namespace;if(!t)return;this.createClients();let n=e;n.namespace=t,n.construct({namespace:t,projectId:this.options?.projectId,networks:this.caipNetworks}),this.chainNamespaces.includes(t)||this.chainNamespaces.push(t),this.chainAdapters&&(this.chainAdapters[t]=n)}async open(e){await this.injectModalUi(),e?.uri&&b.setUri(e.uri),await E.open(e)}async close(){await this.injectModalUi(),E.close()}setLoading(e,t){E.setLoading(e,t)}async disconnect(e){await b.disconnect(e)}getError(){return``}getChainId(){return T.state.activeCaipNetwork?.id}async switchNetwork(e){let t=this.caipNetworks?.find(t=>t.id===e.id);if(!t){O.open(pr.ALERT_ERRORS.SWITCH_NETWORK_NOT_FOUND,`error`);return}await T.switchActiveNetwork(t)}getWalletProvider(){return T.state.activeChain?z.state.providers[T.state.activeChain]:null}getWalletProviderType(){return z.getProviderId(T.state.activeChain)}subscribeProviders(e){return z.subscribeProviders(e)}getThemeMode(){return g.state.themeMode}getThemeVariables(){return g.state.themeVariables}setThemeMode(e){g.setThemeMode(e),_(g.state.themeMode)}setTermsConditionsUrl(e){m.setTermsConditionsUrl(e)}setPrivacyPolicyUrl(e){m.setPrivacyPolicyUrl(e)}setThemeVariables(e){g.setThemeVariables(e),C(g.state.themeVariables)}subscribeTheme(e){return g.subscribe(e)}getWalletInfo(){return v.state.connectedWalletInfo}getAccount(e){let t=A.getAuthConnector(e),n=T.getAccountData(e);if(n)return{allAccounts:n.allAccounts,caipAddress:n.caipAddress,address:f.getPlainAddress(n.caipAddress),isConnected:!!n.caipAddress,status:n.status,embeddedWalletInfo:t?{user:n.user,authProvider:n.socialProvider||`email`,accountType:n.preferredAccountType,isSmartAccountDeployed:!!n.smartAccountDeployed}:void 0}}subscribeAccount(e,t){let n=()=>{let n=this.getAccount(t);n&&e(n)};t?T.subscribeChainProp(`accountState`,n,t):T.subscribe(n),A.subscribe(n)}subscribeNetwork(e){return T.subscribe(({activeCaipNetwork:t})=>{e({caipNetwork:t,chainId:t?.id,caipNetworkId:t?.caipNetworkId})})}subscribeWalletInfo(e){return v.subscribeKey(`connectedWalletInfo`,e)}subscribeShouldUpdateToAddress(e){v.subscribeKey(`shouldUpdateToAddress`,e)}subscribeCaipNetworkChange(e){T.subscribeKey(`activeCaipNetwork`,e)}getState(){return ee.state}subscribeState(e){return ee.subscribe(e)}showErrorMessage(e){D.showError(e)}showSuccessMessage(e){D.showSuccess(e)}getEvent(){return{...o.state}}subscribeEvents(e){return o.subscribe(e)}replace(e){k.replace(e)}redirect(e){k.push(e)}popTransactionStack(e){k.popTransactionStack(e)}isOpen(){return E.state.open}isTransactionStackEmpty(){return k.state.transactionStack.length===0}isTransactionShouldReplaceView(){return k.state.transactionStack[k.state.transactionStack.length-1]?.replace}static getInstance(){return this.instance}updateFeatures(e){m.setFeatures(e)}updateOptions(e){let t={...m.state||{},...e};m.setOptions(t)}setConnectMethodsOrder(e){m.setConnectMethodsOrder(e)}setWalletFeaturesOrder(e){m.setWalletFeaturesOrder(e)}setCollapseWallets(e){m.setCollapseWallets(e)}setSocialsOrder(e){m.setSocialsOrder(e)}getConnectMethodsOrder(){return Pe.getConnectOrderMethod(m.state.features,A.getConnectors())}removeAdapter(e){let t=this.getIsConnectedState(),n=this.getAdapter(e);if(!n||!this.chainAdapters||t)return;let r=this.caipNetworks?.filter(t=>t.chainNamespace!==e);T.removeAdapter(e),A.removeAdapter(e),this.chainNamespaces=this.chainNamespaces.filter(t=>t!==e),this.caipNetworks=r,n.removeAllEventListeners(),Reflect.deleteProperty(this.chainAdapters,e)}addAdapter(e,t){let n=e.namespace;if(!this.connectionControllerClient||!this.networkControllerClient||!this.chainAdapters||!n)return;let r=this.extendCaipNetworks({...this.options,networks:t});this.caipNetworks=[...this.caipNetworks||[],...r],this.createAdapter(e),this.initChainAdapter(n),T.addAdapter(e,{connectionControllerClient:this.connectionControllerClient,networkControllerClient:this.networkControllerClient},r)}addNetwork(e,t){if(this.chainAdapters&&!this.chainAdapters[e])throw Error(`Adapter for namespace ${e} doesn't exist`);let n=this.extendCaipNetwork(t,this.options);T.addNetwork(n),this.caipNetworks&&!this.caipNetworks?.find(e=>e.id===n.id)&&this.caipNetworks.push(n)}removeNetwork(e,t){if(this.chainAdapters&&!this.chainAdapters[e])throw Error(`Adapter for namespace ${e} doesn't exist`);if(!this.caipNetworks?.find(e=>e.id===t))throw Error(`Network with ID ${t} not found`);if(!this.caipNetworks)return;let n=this.caipNetworks.filter(n=>n.chainNamespace===e&&n.id!==t);if(!n?.length)throw Error(`Cannot remove last network for a namespace`);T.removeNetwork(e,t),this.caipNetworks=[...n]}},Pv=!1,Fv=class extends Nv{async open(e){A.isConnected()||await super.open(e)}async close(){await super.close(),this.options.manualWCControl&&b.finalizeWcConnection()}async syncIdentity(e){return Promise.resolve()}async syncBalance(e){return Promise.resolve()}async injectModalUi(){if(!Pv&&f.isClient()){if(await t(()=>import(`./basic-D6RUJpWK.js`),__vite__mapDeps([3,4,1,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34])),await t(()=>import(`./w3m-modal-BXg-8Jr5.js`),__vite__mapDeps([35,30,31,5,32,1,33,17])),!document.querySelector(`w3m-modal`)){let e=document.createElement(`w3m-modal`);!m.state.disableAppend&&!m.state.enableEmbedded&&document.body.insertAdjacentElement(`beforeend`,e)}Pv=!0}}},Iv=`1.7.2`;function Lv(e){return new Fv({...e,basic:!0,sdkVersion:`html-core-${Iv}`})}var Rv=class e extends Error{constructor(){super(),Object.setPrototypeOf(this,e.prototype)}},zv=class extends Error{constructor(e){super(`WalletConnect Adapter - Method ${e} is not supported by the wallet`),this.name=`WalletConnectFeatureNotSupportedError`}};function Bv(e){let t=[e];return e===B.Mainnet||e===B.Deprecated_Mainnet?(t=[B.Mainnet,B.Deprecated_Mainnet],e===B.Deprecated_Mainnet&&console.warn(Vv.mainnet)):(e===B.Deprecated_Devnet||e===B.Devnet)&&(t=[B.Devnet,B.Deprecated_Devnet],B.Deprecated_Devnet&&console.warn(Vv.devnet)),t}var Vv={mainnet:`You are using a deprecated chain ID for Solana Mainnet, please use ${B.Mainnet} instead.`,devnet:`You are using a deprecated chain ID for Solana Devnet, please use ${B.Devnet} instead.`,wallet:`The connected wallet is using a deprecated chain ID for Solana. Please, contact them to upgrade. You can learn more at https://github.com/ChainAgnostic/namespaces/blob/main/solana/caip10.md#chain-ids`};function Hv(e,t){let n=e.namespaces.solana?.accounts.map(e=>`solana:${e.split(`:`)[1]}`);if(t===B.Mainnet)return n?.find(e=>e===B.Mainnet)?B.Mainnet:(console.warn(Vv.wallet),B.Deprecated_Mainnet);if(t===B.Devnet)return n?.find(e=>e===B.Devnet)?B.Devnet:(console.warn(Vv.wallet),B.Deprecated_Devnet);throw Error(`WalletConnect Solana Adapter: Unable to get a default chain from the session.`)}function Uv(e){return{optionalNamespaces:{solana:{chains:Bv(e),methods:[Ei.signTransaction,Ei.signMessage],events:[]}}}}var Wv=class e extends Error{constructor(){super(`QR Code Modal was closed by user`),Object.setPrototypeOf(this,e.prototype),this.name=`QRCodeModalError`}},Gv=class{_UniversalProvider;_session;_modal;_projectId;_network;_ConnectQueueResolver;constructor(e){if(this.initClient(e.options),this._network=e.network,!e.options.projectId)throw Error(`WalletConnect Adapter: Project ID is undefined`);this._projectId=e.options.projectId}async connect(){if(this._UniversalProvider||await new Promise(e=>{this._ConnectQueueResolver=e}),!this._UniversalProvider)throw Error(`WalletConnect Adapter - Universal Provider was undefined while calling 'connect()'`);if(this._UniversalProvider.session){this._session=this._UniversalProvider.session;let e=Hv(this._session,this._network);return this._network=e,this._UniversalProvider.setDefaultChain(e),{publicKey:this.publicKey}}await this.initModal();let e=Uv(this._network);this._modal?.open();let t=new AbortController,n=t.signal;this._modal?.subscribeState(e=>{e.open||t.abort(new Wv)});try{let t=await Promise.race([this._UniversalProvider?.connect(e),new Promise((e,t)=>{n.addEventListener(`abort`,()=>{t(n.reason)})})]);if(this._modal?.close(),this._session=t,!t)throw new Ze;let r=Hv(t,this._network);return this._network=r,this._UniversalProvider?.setDefaultChain(r),{publicKey:this.publicKey}}catch(e){throw this._modal?.close(),e}}async disconnect(){if(this._UniversalProvider?.session){if(await this.initModal(),!this._modal)throw Error(`WalletConnect Adapter -Modal is undefined: unable to disconnect`);await this.client.disconnect(),this._session=void 0}else throw new Rv}get client(){if(this._UniversalProvider)return this._UniversalProvider;throw new Rv}get session(){if(!this._session)throw new Rv;return this._session}get publicKey(){if(this._UniversalProvider?.session&&this._session){let{address:e}=De(this._session?.namespaces.solana?.accounts[0]??``);return new i(e)}throw new Rv}async signTransaction(e){this.checkIfWalletSupportsMethod(Ei.signTransaction);let t=et(e),n=t?{}:e,{signature:r,transaction:i}=await this.client.client.request({chainId:this._network,topic:this.session.topic,request:{method:Ei.signTransaction,params:{...n,transaction:this.serialize(e)}}});return i?this.deserialize(i,t):(e.addSignature(this.publicKey,Buffer.from(At.decode(r))),e)}async signMessage(e){this.checkIfWalletSupportsMethod(Ei.signMessage);let{signature:t}=await this.client.client.request({chainId:this._network,topic:this.session.topic,request:{method:Ei.signMessage,params:{pubkey:this.publicKey.toString(),message:At.encode(e)}}});return At.decode(t)}async signAndSendTransaction(e){this.checkIfWalletSupportsMethod(Ei.signAndSendTransaction);let{signature:t}=await this.client.client.request({chainId:this._network,topic:this.session.topic,request:{method:Ei.signAndSendTransaction,params:{transaction:this.serialize(e)}}});return t}async signAllTransactions(e){try{this.checkIfWalletSupportsMethod(Ei.signAllTransactions);let t=e.map(e=>this.serialize(e)),{transactions:n}=await this.client.client.request({chainId:this._network,topic:this.session.topic,request:{method:Ei.signAllTransactions,params:{transactions:t}}});return e.map((e,t)=>et(e)?this.deserialize(n[t]??``,!0):this.deserialize(n[t]??``))}catch(t){if(t instanceof zv){let t=e.map(e=>this.signTransaction(e));return await Promise.all(t)}throw t}}async initClient(e){let t=await Te.init(e);this._UniversalProvider=t,this._ConnectQueueResolver&&this._ConnectQueueResolver(!0)}async initModal(){if(!this._modal){if(!this._UniversalProvider)throw Error(`WalletConnect Adapter - cannot init modal when Universal Provider is undefined`);this._modal=Lv({projectId:this._projectId,universalProvider:this._UniversalProvider,networks:[wv,Tv,Ev],manualWCControl:!0})}}serialize(e){return Buffer.from(e.serialize({verifySignatures:!1})).toString(`base64`)}deserialize(e,t=!1){return t?n.deserialize(Buffer.from(e,`base64`)):r.from(Buffer.from(e,`base64`))}checkIfWalletSupportsMethod(e){if(!this.session.namespaces.solana?.methods.includes(e))throw new zv(e)}},Kv=`WalletConnect`,qv=class extends $e{name=Kv;url=`https://walletconnect.org`;icon=`data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjE4NSIgdmlld0JveD0iMCAwIDMwMCAxODUiIHdpZHRoPSIzMDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0ibTYxLjQzODU0MjkgMzYuMjU2MjYxMmM0OC45MTEyMjQxLTQ3Ljg4ODE2NjMgMTI4LjIxMTk4NzEtNDcuODg4MTY2MyAxNzcuMTIzMjA5MSAwbDUuODg2NTQ1IDUuNzYzNDE3NGMyLjQ0NTU2MSAyLjM5NDQwODEgMi40NDU1NjEgNi4yNzY1MTEyIDAgOC42NzA5MjA0bC0yMC4xMzY2OTUgMTkuNzE1NTAzYy0xLjIyMjc4MSAxLjE5NzIwNTEtMy4yMDUzIDEuMTk3MjA1MS00LjQyODA4MSAwbC04LjEwMDU4NC03LjkzMTE0NzljLTM0LjEyMTY5Mi0zMy40MDc5ODE3LTg5LjQ0Mzg4Ni0zMy40MDc5ODE3LTEyMy41NjU1Nzg4IDBsLTguNjc1MDU2MiA4LjQ5MzYwNTFjLTEuMjIyNzgxNiAxLjE5NzIwNDEtMy4yMDUzMDEgMS4xOTcyMDQxLTQuNDI4MDgwNiAwbC0yMC4xMzY2OTQ5LTE5LjcxNTUwMzFjLTIuNDQ1NTYxMi0yLjM5NDQwOTItMi40NDU1NjEyLTYuMjc2NTEyMiAwLTguNjcwOTIwNHptMjE4Ljc2Nzc5NjEgNDAuNzczNzQ0OSAxNy45MjE2OTcgMTcuNTQ2ODk3YzIuNDQ1NTQ5IDIuMzk0Mzk2OSAyLjQ0NTU2MyA2LjI3NjQ3NjkuMDAwMDMxIDguNjcwODg5OWwtODAuODEwMTcxIDc5LjEyMTEzNGMtMi40NDU1NDQgMi4zOTQ0MjYtNi40MTA1ODIgMi4zOTQ0NTMtOC44NTYxNi4wMDAwNjItLjAwMDAxLS4wMDAwMS0uMDAwMDIyLS4wMDAwMjItLjAwMDAzMi0uMDAwMDMybC01Ny4zNTQxNDMtNTYuMTU0NTcyYy0uNjExMzktLjU5ODYwMi0xLjYwMjY1LS41OTg2MDItMi4yMTQwNCAwLS4wMDAwMDQuMDAwMDA0LS4wMDAwMDcuMDAwMDA4LS4wMDAwMTEuMDAwMDExbC01Ny4zNTI5MjEyIDU2LjE1NDUzMWMtMi40NDU1MzY4IDIuMzk0NDMyLTYuNDEwNTc1NSAyLjM5NDQ3Mi04Ljg1NjE2MTIuMDAwMDg3LS4wMDAwMTQzLS4wMDAwMTQtLjAwMDAyOTYtLjAwMDAyOC0uMDAwMDQ0OS0uMDAwMDQ0bC04MC44MTI0MTk0My03OS4xMjIxODVjLTIuNDQ1NTYwMjEtMi4zOTQ0MDgtMi40NDU1NjAyMS02LjI3NjUxMTUgMC04LjY3MDkxOTdsMTcuOTIxNzI5NjMtMTcuNTQ2ODY3M2MyLjQ0NTU2MDItMi4zOTQ0MDgyIDYuNDEwNTk4OS0yLjM5NDQwODIgOC44NTYxNjAyIDBsNTcuMzU0OTc3NSA1Ni4xNTUzNTdjLjYxMTM5MDguNTk4NjAyIDEuNjAyNjQ5LjU5ODYwMiAyLjIxNDAzOTggMCAuMDAwMDA5Mi0uMDAwMDA5LjAwMDAxNzQtLjAwMDAxNy4wMDAwMjY1LS4wMDAwMjRsNTcuMzUyMTAzMS01Ni4xNTUzMzNjMi40NDU1MDUtMi4zOTQ0NjMzIDYuNDEwNTQ0LTIuMzk0NTUzMSA4Ljg1NjE2MS0uMDAwMi4wMDAwMzQuMDAwMDMzNi4wMDAwNjguMDAwMDY3My4wMDAxMDEuMDAwMTAxbDU3LjM1NDkwMiA1Ni4xNTU0MzJjLjYxMTM5LjU5ODYwMSAxLjYwMjY1LjU5ODYwMSAyLjIxNDA0IDBsNTcuMzUzOTc1LTU2LjE1NDMyNDljMi40NDU1NjEtMi4zOTQ0MDkyIDYuNDEwNTk5LTIuMzk0NDA5MiA4Ljg1NjE2IDB6IiBmaWxsPSIjM2I5OWZjIi8+PC9zdmc+`;supportedTransactionVersions=new Set([`legacy`,0]);_publicKey;_connecting;_wallet;_config;_readyState;_onDisconnect;constructor(e){super(),this._publicKey=null,this._connecting=!1,this._config=e,this._wallet=null,this._readyState=typeof window>`u`?Xe.Unsupported:Xe.Loadable,this._onDisconnect=this.disconnect.bind(this)}get publicKey(){return this._publicKey}get connecting(){return this._connecting}get readyState(){return this._readyState}async connect(){try{if(this.connected||this.connecting)return;if(this._readyState!==Xe.Loadable)throw new Je;this._connecting=!0,this._wallet=new Gv({network:this._config.network===Qe.Mainnet?Ti.Mainnet:Ti.Devnet,options:this._config.options});let{publicKey:e}=await this._wallet.connect();this._publicKey=e,this.emit(`connect`,e),this._wallet.client.on(`session_delete`,this._onDisconnect)}catch(e){throw e.constructor.name===`QRCodeModalError`||e instanceof Error&&e.name===`QRCodeModalError`?new Ke:(this._connecting=!1,e)}finally{this._connecting=!1}}async disconnect(){let e=this._wallet;if(e){e.client.off(`session_delete`,this._onDisconnect),this._publicKey=null;try{e.client.session&&await e.disconnect()}catch(e){console.error(`WalletConnectWalletAdapter: disconnect error`,e),this.emit(`error`,new Ye(e?.message,e))}}this.emit(`disconnect`)}async signTransaction(e){try{let t=this._wallet;if(!t)throw new nt;try{return await t.signTransaction(e)}catch(e){throw new qe(e?.message,e)}}catch(e){throw this.emit(`error`,e),e}}async signMessage(e){try{let t=this._wallet;if(!t)throw new nt;try{return await t.signMessage(e)}catch(e){throw new tt(e?.message,e)}}catch(e){throw this.emit(`error`,e),e}}async signAndSendTransaction(e){try{let t=this._wallet;if(!t)throw new nt;try{return await t.signAndSendTransaction(e)}catch(e){throw new qe(e?.message,e)}}catch(e){throw this.emit(`error`,e),e}}async signAllTransactions(e){try{let t=this._wallet;if(!t)throw new nt;try{return await t.signAllTransactions(e)}catch(e){throw new qe(e?.message,e)}}catch(e){throw this.emit(`error`,e),e}}};export{qv as WalletConnectWalletAdapter,Kv as WalletConnectWalletName};
|
|
18
|
+
Approved: ${i.toString()}`))}),o.forEach(e=>{r||(Yi(i[e].methods,a[e].methods)?Yi(i[e].events,a[e].events)||(r=U(`NON_CONFORMING_NAMESPACES`,`${n} namespaces events don't satisfy namespace events for ${e}`)):r=U(`NON_CONFORMING_NAMESPACES`,`${n} namespaces methods don't satisfy namespace methods for ${e}`))}),r}function ru(e){let t={};return Object.keys(e).forEach(n=>{var r;n.includes(`:`)?t[n]=e[n]:(r=e[n].chains)==null||r.forEach(r=>{t[r]={methods:e[n].methods,events:e[n].events}})}),t}function iu(e){return[...new Set(e.map(e=>e.includes(`:`)?e.split(`:`)[0]:e))]}function au(e){let t={};return Object.keys(e).forEach(n=>{n.includes(`:`)?t[n]=e[n]:ml(e[n].accounts)?.forEach(r=>{t[r]={accounts:e[n].accounts.filter(e=>e.includes(`${r}:`)),methods:e[n].methods,events:e[n].events}})}),t}function ou(e,t){return Ol(e,!1)&&e<=t.max&&e>=t.min}function su(){let e=Vi();return new Promise(t=>{switch(e){case Fi.browser:t(cu());break;case Fi.reactNative:t(lu());break;case Fi.node:t(uu());break;default:t(!0)}})}function cu(){return Bi()&&navigator?.onLine}async function lu(){return Li()&&typeof global<`u`&&global!=null&&global.NetInfo?(await(global==null?void 0:global.NetInfo.fetch()))?.isConnected:!0}function uu(){return!0}function du(e){switch(Vi()){case Fi.browser:fu(e);break;case Fi.reactNative:pu(e);break;case Fi.node:break}}function fu(e){!Li()&&Bi()&&(window.addEventListener(`online`,()=>e(!0)),window.addEventListener(`offline`,()=>e(!1)))}function pu(e){Li()&&typeof global<`u`&&global!=null&&global.NetInfo&&global?.NetInfo.addEventListener(t=>e(t?.isConnected))}var mu={},hu=class{static get(e){return mu[e]}static set(e,t){mu[e]=t}static delete(e){delete mu[e]}},gu=`core`,_u=`wc@2:${gu}:`,vu={name:gu,logger:`error`},yu={database:`:memory:`},bu=`crypto`,xu=`client_ed25519_seed`,Su=R.ONE_DAY,Cu=`keychain`,wu=`messages`,Tu=R.SIX_HOURS,Eu=`publisher`,Du=`relayer`,Ou={message:`relayer_message`,message_ack:`relayer_message_ack`,connect:`relayer_connect`,disconnect:`relayer_disconnect`,error:`relayer_error`,connection_stalled:`relayer_connection_stalled`,transport_closed:`relayer_transport_closed`,publish:`relayer_publish`},ku={payload:`payload`,connect:`connect`,disconnect:`disconnect`,error:`error`},Au=`2.19.1`,G={link_mode:`link_mode`,relay:`relay`},ju={inbound:`inbound`,outbound:`outbound`},Mu=`WALLETCONNECT_CLIENT_ID`,Nu={created:`subscription_created`,deleted:`subscription_deleted`,expired:`subscription_expired`,disabled:`subscription_disabled`,sync:`subscription_sync`,resubscribed:`subscription_resubscribed`};R.THIRTY_DAYS;var Pu=`subscription`;R.FIVE_SECONDS*1e3;var Fu=`pairing`;R.THIRTY_DAYS;var Iu={wc_pairingDelete:{req:{ttl:R.ONE_DAY,prompt:!1,tag:1e3},res:{ttl:R.ONE_DAY,prompt:!1,tag:1001}},wc_pairingPing:{req:{ttl:R.THIRTY_SECONDS,prompt:!1,tag:1002},res:{ttl:R.THIRTY_SECONDS,prompt:!1,tag:1003}},unregistered_method:{req:{ttl:R.ONE_DAY,prompt:!1,tag:0},res:{ttl:R.ONE_DAY,prompt:!1,tag:0}}},Lu={create:`pairing_create`,expire:`pairing_expire`,delete:`pairing_delete`,ping:`pairing_ping`},Ru={created:`history_created`,updated:`history_updated`,deleted:`history_deleted`,sync:`history_sync`},zu=`history`,Bu=`expirer`,Vu={created:`expirer_created`,deleted:`expirer_deleted`,expired:`expirer_expired`,sync:`expirer_sync`};R.ONE_DAY;var Hu=`verify-api`,Uu=`https://verify.walletconnect.com`,Wu=`https://verify.walletconnect.org`,Gu=`${Wu}/v3`,Ku=[Uu,Wu],qu=`echo`,Ju=`https://echo.walletconnect.com`,Yu={pairing_started:`pairing_started`,pairing_uri_validation_success:`pairing_uri_validation_success`,pairing_uri_not_expired:`pairing_uri_not_expired`,store_new_pairing:`store_new_pairing`,subscribing_pairing_topic:`subscribing_pairing_topic`,subscribe_pairing_topic_success:`subscribe_pairing_topic_success`,existing_pairing:`existing_pairing`,pairing_not_expired:`pairing_not_expired`,emit_inactive_pairing:`emit_inactive_pairing`,emit_session_proposal:`emit_session_proposal`,subscribing_to_pairing_topic:`subscribing_to_pairing_topic`},Xu={no_wss_connection:`no_wss_connection`,no_internet_connection:`no_internet_connection`,malformed_pairing_uri:`malformed_pairing_uri`,active_pairing_already_exists:`active_pairing_already_exists`,subscribe_pairing_topic_failure:`subscribe_pairing_topic_failure`,pairing_expired:`pairing_expired`,proposal_expired:`proposal_expired`,proposal_listener_not_found:`proposal_listener_not_found`},Zu={session_approve_started:`session_approve_started`,proposal_not_expired:`proposal_not_expired`,session_namespaces_validation_success:`session_namespaces_validation_success`,create_session_topic:`create_session_topic`,subscribing_session_topic:`subscribing_session_topic`,subscribe_session_topic_success:`subscribe_session_topic_success`,publishing_session_approve:`publishing_session_approve`,session_approve_publish_success:`session_approve_publish_success`,store_session:`store_session`,publishing_session_settle:`publishing_session_settle`,session_settle_publish_success:`session_settle_publish_success`},Qu={no_internet_connection:`no_internet_connection`,no_wss_connection:`no_wss_connection`,proposal_expired:`proposal_expired`,subscribe_session_topic_failure:`subscribe_session_topic_failure`,session_approve_publish_failure:`session_approve_publish_failure`,session_settle_publish_failure:`session_settle_publish_failure`,session_approve_namespace_validation_failure:`session_approve_namespace_validation_failure`,proposal_not_found:`proposal_not_found`},$u={authenticated_session_approve_started:`authenticated_session_approve_started`,authenticated_session_not_expired:`authenticated_session_not_expired`,chains_caip2_compliant:`chains_caip2_compliant`,chains_evm_compliant:`chains_evm_compliant`,create_authenticated_session_topic:`create_authenticated_session_topic`,cacaos_verified:`cacaos_verified`,store_authenticated_session:`store_authenticated_session`,subscribing_authenticated_session_topic:`subscribing_authenticated_session_topic`,subscribe_authenticated_session_topic_success:`subscribe_authenticated_session_topic_success`,publishing_authenticated_session_approve:`publishing_authenticated_session_approve`,authenticated_session_approve_publish_success:`authenticated_session_approve_publish_success`},ed={no_internet_connection:`no_internet_connection`,no_wss_connection:`no_wss_connection`,missing_session_authenticate_request:`missing_session_authenticate_request`,session_authenticate_request_expired:`session_authenticate_request_expired`,chains_caip2_compliant_failure:`chains_caip2_compliant_failure`,chains_evm_compliant_failure:`chains_evm_compliant_failure`,invalid_cacao:`invalid_cacao`,subscribe_authenticated_session_topic_failure:`subscribe_authenticated_session_topic_failure`,authenticated_session_approve_publish_failure:`authenticated_session_approve_publish_failure`,authenticated_session_pending_request_not_found:`authenticated_session_pending_request_not_found`},td=.1,nd=`event-client`,rd=`https://pulse.walletconnect.org/batch`;function id(e,t){if(e.length>=255)throw TypeError(`Alphabet too long`);for(var n=new Uint8Array(256),r=0;r<n.length;r++)n[r]=255;for(var i=0;i<e.length;i++){var a=e.charAt(i),o=a.charCodeAt(0);if(n[o]!==255)throw TypeError(a+` is ambiguous`);n[o]=i}var s=e.length,c=e.charAt(0),l=Math.log(s)/Math.log(256),u=Math.log(256)/Math.log(s);function d(t){if(t instanceof Uint8Array||(ArrayBuffer.isView(t)?t=new Uint8Array(t.buffer,t.byteOffset,t.byteLength):Array.isArray(t)&&(t=Uint8Array.from(t))),!(t instanceof Uint8Array))throw TypeError(`Expected Uint8Array`);if(t.length===0)return``;for(var n=0,r=0,i=0,a=t.length;i!==a&&t[i]===0;)i++,n++;for(var o=(a-i)*u+1>>>0,l=new Uint8Array(o);i!==a;){for(var d=t[i],f=0,p=o-1;(d!==0||f<r)&&p!==-1;p--,f++)d+=256*l[p]>>>0,l[p]=d%s>>>0,d=d/s>>>0;if(d!==0)throw Error(`Non-zero carry`);r=f,i++}for(var m=o-r;m!==o&&l[m]===0;)m++;for(var h=c.repeat(n);m<o;++m)h+=e.charAt(l[m]);return h}function f(e){if(typeof e!=`string`)throw TypeError(`Expected String`);if(e.length===0)return new Uint8Array;var t=0;if(e[t]!==` `){for(var r=0,i=0;e[t]===c;)r++,t++;for(var a=(e.length-t)*l+1>>>0,o=new Uint8Array(a);e[t];){var u=n[e.charCodeAt(t)];if(u===255)return;for(var d=0,f=a-1;(u!==0||d<i)&&f!==-1;f--,d++)u+=s*o[f]>>>0,o[f]=u%256>>>0,u=u/256>>>0;if(u!==0)throw Error(`Non-zero carry`);i=d,t++}if(e[t]!==` `){for(var p=a-i;p!==a&&o[p]===0;)p++;for(var m=new Uint8Array(r+(a-p)),h=r;p!==a;)m[h++]=o[p++];return m}}}function p(e){var n=f(e);if(n)return n;throw Error(`Non-${t} character`)}return{encode:d,decodeUnsafe:f,decode:p}}var ad=id,od=e=>{if(e instanceof Uint8Array&&e.constructor.name===`Uint8Array`)return e;if(e instanceof ArrayBuffer)return new Uint8Array(e);if(ArrayBuffer.isView(e))return new Uint8Array(e.buffer,e.byteOffset,e.byteLength);throw Error(`Unknown type, must be binary type`)},sd=e=>new TextEncoder().encode(e),cd=e=>new TextDecoder().decode(e),ld=class{constructor(e,t,n){this.name=e,this.prefix=t,this.baseEncode=n}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error(`Unknown type, must be binary type`)}},ud=class{constructor(e,t,n){if(this.name=e,this.prefix=t,t.codePointAt(0)===void 0)throw Error(`Invalid prefix character`);this.prefixCodePoint=t.codePointAt(0),this.baseDecode=n}decode(e){if(typeof e==`string`){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error(`Can only multibase decode strings`)}or(e){return fd(this,e)}},dd=class{constructor(e){this.decoders=e}or(e){return fd(this,e)}decode(e){let t=e[0],n=this.decoders[t];if(n)return n.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}},fd=(e,t)=>new dd({...e.decoders||{[e.prefix]:e},...t.decoders||{[t.prefix]:t}}),pd=class{constructor(e,t,n,r){this.name=e,this.prefix=t,this.baseEncode=n,this.baseDecode=r,this.encoder=new ld(e,t,n),this.decoder=new ud(e,t,r)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}},md=({name:e,prefix:t,encode:n,decode:r})=>new pd(e,t,n,r),hd=({prefix:e,name:t,alphabet:n})=>{let{encode:r,decode:i}=ad(n,t);return md({prefix:e,name:t,encode:r,decode:e=>od(i(e))})},gd=(e,t,n,r)=>{let i={};for(let e=0;e<t.length;++e)i[t[e]]=e;let a=e.length;for(;e[a-1]===`=`;)--a;let o=new Uint8Array(a*n/8|0),s=0,c=0,l=0;for(let t=0;t<a;++t){let a=i[e[t]];if(a===void 0)throw SyntaxError(`Non-${r} character`);c=c<<n|a,s+=n,s>=8&&(s-=8,o[l++]=255&c>>s)}if(s>=n||255&c<<8-s)throw SyntaxError(`Unexpected end of data`);return o},_d=(e,t,n)=>{let r=t[t.length-1]===`=`,i=(1<<n)-1,a=``,o=0,s=0;for(let r=0;r<e.length;++r)for(s=s<<8|e[r],o+=8;o>n;)o-=n,a+=t[i&s>>o];if(o&&(a+=t[i&s<<n-o]),r)for(;a.length*n&7;)a+=`=`;return a},vd=({name:e,prefix:t,bitsPerChar:n,alphabet:r})=>md({prefix:t,name:e,encode(e){return _d(e,r,n)},decode(t){return gd(t,r,n,e)}}),yd=md({prefix:`\0`,name:`identity`,encode:e=>cd(e),decode:e=>sd(e)}),bd=Object.freeze({__proto__:null,identity:yd}),xd=vd({prefix:`0`,name:`base2`,alphabet:`01`,bitsPerChar:1}),Sd=Object.freeze({__proto__:null,base2:xd}),Cd=vd({prefix:`7`,name:`base8`,alphabet:`01234567`,bitsPerChar:3}),wd=Object.freeze({__proto__:null,base8:Cd}),Td=hd({prefix:`9`,name:`base10`,alphabet:`0123456789`}),Ed=Object.freeze({__proto__:null,base10:Td}),Dd=vd({prefix:`f`,name:`base16`,alphabet:`0123456789abcdef`,bitsPerChar:4}),Od=vd({prefix:`F`,name:`base16upper`,alphabet:`0123456789ABCDEF`,bitsPerChar:4}),kd=Object.freeze({__proto__:null,base16:Dd,base16upper:Od}),Ad=vd({prefix:`b`,name:`base32`,alphabet:`abcdefghijklmnopqrstuvwxyz234567`,bitsPerChar:5}),jd=vd({prefix:`B`,name:`base32upper`,alphabet:`ABCDEFGHIJKLMNOPQRSTUVWXYZ234567`,bitsPerChar:5}),Md=vd({prefix:`c`,name:`base32pad`,alphabet:`abcdefghijklmnopqrstuvwxyz234567=`,bitsPerChar:5}),Nd=vd({prefix:`C`,name:`base32padupper`,alphabet:`ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=`,bitsPerChar:5}),Pd=vd({prefix:`v`,name:`base32hex`,alphabet:`0123456789abcdefghijklmnopqrstuv`,bitsPerChar:5}),Fd=vd({prefix:`V`,name:`base32hexupper`,alphabet:`0123456789ABCDEFGHIJKLMNOPQRSTUV`,bitsPerChar:5}),Id=vd({prefix:`t`,name:`base32hexpad`,alphabet:`0123456789abcdefghijklmnopqrstuv=`,bitsPerChar:5}),Ld=vd({prefix:`T`,name:`base32hexpadupper`,alphabet:`0123456789ABCDEFGHIJKLMNOPQRSTUV=`,bitsPerChar:5}),Rd=vd({prefix:`h`,name:`base32z`,alphabet:`ybndrfg8ejkmcpqxot1uwisza345h769`,bitsPerChar:5}),zd=Object.freeze({__proto__:null,base32:Ad,base32upper:jd,base32pad:Md,base32padupper:Nd,base32hex:Pd,base32hexupper:Fd,base32hexpad:Id,base32hexpadupper:Ld,base32z:Rd}),Bd=hd({prefix:`k`,name:`base36`,alphabet:`0123456789abcdefghijklmnopqrstuvwxyz`}),Vd=hd({prefix:`K`,name:`base36upper`,alphabet:`0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ`}),Hd=Object.freeze({__proto__:null,base36:Bd,base36upper:Vd}),Ud=hd({name:`base58btc`,prefix:`z`,alphabet:`123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz`}),Wd=hd({name:`base58flickr`,prefix:`Z`,alphabet:`123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ`}),Gd=Object.freeze({__proto__:null,base58btc:Ud,base58flickr:Wd}),Kd=vd({prefix:`m`,name:`base64`,alphabet:`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/`,bitsPerChar:6}),qd=vd({prefix:`M`,name:`base64pad`,alphabet:`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=`,bitsPerChar:6}),Jd=vd({prefix:`u`,name:`base64url`,alphabet:`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_`,bitsPerChar:6}),Yd=vd({prefix:`U`,name:`base64urlpad`,alphabet:`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=`,bitsPerChar:6}),Xd=Object.freeze({__proto__:null,base64:Kd,base64pad:qd,base64url:Jd,base64urlpad:Yd}),Zd=Array.from(`🚀🪐☄🛰🌌🌑🌒🌓🌔🌕🌖🌗🌘🌍🌏🌎🐉☀💻🖥💾💿😂❤😍🤣😊🙏💕😭😘👍😅👏😁🔥🥰💔💖💙😢🤔😆🙄💪😉☺👌🤗💜😔😎😇🌹🤦🎉💞✌✨🤷😱😌🌸🙌😋💗💚😏💛🙂💓🤩😄😀🖤😃💯🙈👇🎶😒🤭❣😜💋👀😪😑💥🙋😞😩😡🤪👊🥳😥🤤👉💃😳✋😚😝😴🌟😬🙃🍀🌷😻😓⭐✅🥺🌈😈🤘💦✔😣🏃💐☹🎊💘😠☝😕🌺🎂🌻😐🖕💝🙊😹🗣💫💀👑🎵🤞😛🔴😤🌼😫⚽🤙☕🏆🤫👈😮🙆🍻🍃🐶💁😲🌿🧡🎁⚡🌞🎈❌✊👋😰🤨😶🤝🚶💰🍓💢🤟🙁🚨💨🤬✈🎀🍺🤓😙💟🌱😖👶🥴▶➡❓💎💸⬇😨🌚🦋😷🕺⚠🙅😟😵👎🤲🤠🤧📌🔵💅🧐🐾🍒😗🤑🌊🤯🐷☎💧😯💆👆🎤🙇🍑❄🌴💣🐸💌📍🥀🤢👅💡💩👐📸👻🤐🤮🎼🥵🚩🍎🍊👼💍📣🥂`),Qd=Zd.reduce((e,t,n)=>(e[n]=t,e),[]),$d=Zd.reduce((e,t,n)=>(e[t.codePointAt(0)]=n,e),[]);function ef(e){return e.reduce((e,t)=>(e+=Qd[t],e),``)}function tf(e){let t=[];for(let n of e){let e=$d[n.codePointAt(0)];if(e===void 0)throw Error(`Non-base256emoji character: ${n}`);t.push(e)}return new Uint8Array(t)}var nf=md({prefix:`🚀`,name:`base256emoji`,encode:ef,decode:tf}),rf=Object.freeze({__proto__:null,base256emoji:nf}),af=lf,of=128,sf=-128,cf=2**31;function lf(e,t,n){t||=[],n||=0;for(var r=n;e>=cf;)t[n++]=e&255|of,e/=128;for(;e&sf;)t[n++]=e&255|of,e>>>=7;return t[n]=e|0,lf.bytes=n-r+1,t}var uf=pf,df=128,ff=127;function pf(e,t){var n=0,t=t||0,r=0,i=t,a,o=e.length;do{if(i>=o)throw pf.bytes=0,RangeError(`Could not decode varint`);a=e[i++],n+=r<28?(a&ff)<<r:(a&ff)*2**r,r+=7}while(a>=df);return pf.bytes=i-t,n}var mf=2**7,hf=2**14,gf=2**21,_f=2**28,vf=2**35,yf=2**42,bf=2**49,xf=2**56,Sf=2**63,Cf={encode:af,decode:uf,encodingLength:function(e){return e<mf?1:e<hf?2:e<gf?3:e<_f?4:e<vf?5:e<yf?6:e<bf?7:e<xf?8:e<Sf?9:10}},wf=(e,t,n=0)=>(Cf.encode(e,t,n),t),Tf=e=>Cf.encodingLength(e),Ef=(e,t)=>{let n=t.byteLength,r=Tf(e),i=r+Tf(n),a=new Uint8Array(i+n);return wf(e,a,0),wf(n,a,r),a.set(t,i),new Df(e,n,t,a)},Df=class{constructor(e,t,n,r){this.code=e,this.size=t,this.digest=n,this.bytes=r}},Of=({name:e,code:t,encode:n})=>new kf(e,t,n),kf=class{constructor(e,t,n){this.name=e,this.code=t,this.encode=n}digest(e){if(e instanceof Uint8Array){let t=this.encode(e);return t instanceof Uint8Array?Ef(this.code,t):t.then(e=>Ef(this.code,e))}else throw Error(`Unknown type, must be binary type`)}},Af=e=>async t=>new Uint8Array(await crypto.subtle.digest(e,t)),jf=Of({name:`sha2-256`,code:18,encode:Af(`SHA-256`)}),Mf=Of({name:`sha2-512`,code:19,encode:Af(`SHA-512`)}),Nf=Object.freeze({__proto__:null,sha256:jf,sha512:Mf}),Pf=0,Ff=`identity`,If=od,Lf=Object.freeze({__proto__:null,identity:{code:Pf,name:Ff,encode:If,digest:e=>Ef(Pf,If(e))}});new TextEncoder,new TextDecoder;var Rf={...bd,...Sd,...wd,...Ed,...kd,...zd,...Hd,...Gd,...Xd,...rf};({...Nf,...Lf});function zf(e=0){return globalThis.Buffer!=null&&globalThis.Buffer.allocUnsafe!=null?globalThis.Buffer.allocUnsafe(e):new Uint8Array(e)}function Bf(e,t,n,r){return{name:e,prefix:t,encoder:{name:e,prefix:t,encode:n},decoder:{decode:r}}}var Vf=Bf(`utf8`,`u`,e=>`u`+new TextDecoder(`utf8`).decode(e),e=>new TextEncoder().encode(e.substring(1))),Hf=Bf(`ascii`,`a`,e=>{let t=`a`;for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return t},e=>{e=e.substring(1);let t=zf(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n);return t}),Uf={utf8:Vf,"utf-8":Vf,hex:Rf.base16,latin1:Hf,ascii:Hf,binary:Hf,...Rf};function Wf(e,t=`utf8`){let n=Uf[t];if(!n)throw Error(`Unsupported encoding "${t}"`);return(t===`utf8`||t===`utf-8`)&&globalThis.Buffer!=null&&globalThis.Buffer.from!=null?globalThis.Buffer.from(e,`utf8`):n.decoder.decode(`${n.prefix}${e}`)}var Gf=Object.defineProperty,Kf=(e,t,n)=>t in e?Gf(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,qf=(e,t,n)=>Kf(e,typeof t==`symbol`?t:t+``,n),Jf=class{constructor(e,t){this.core=e,this.logger=t,qf(this,`keychain`,new Map),qf(this,`name`,Cu),qf(this,`version`,`0.3`),qf(this,`initialized`,!1),qf(this,`storagePrefix`,_u),qf(this,`init`,async()=>{if(!this.initialized){let e=await this.getKeyChain();typeof e<`u`&&(this.keychain=e),this.initialized=!0}}),qf(this,`has`,e=>(this.isInitialized(),this.keychain.has(e))),qf(this,`set`,async(e,t)=>{this.isInitialized(),this.keychain.set(e,t),await this.persist()}),qf(this,`get`,e=>{this.isInitialized();let t=this.keychain.get(e);if(typeof t>`u`){let{message:t}=U(`NO_MATCHING_KEY`,`${this.name}: ${e}`);throw Error(t)}return t}),qf(this,`del`,async e=>{this.isInitialized(),this.keychain.delete(e),await this.persist()}),this.core=e,this.logger=M(t,this.name)}get context(){return pe(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+`//`+this.name}async setKeyChain(e){await this.core.storage.setItem(this.storageKey,Xi(e))}async getKeyChain(){let e=await this.core.storage.getItem(this.storageKey);return typeof e<`u`?Zi(e):void 0}async persist(){await this.setKeyChain(this.keychain)}isInitialized(){if(!this.initialized){let{message:e}=U(`NOT_INITIALIZED`,this.name);throw Error(e)}}},Yf=Object.defineProperty,Xf=(e,t,n)=>t in e?Yf(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Zf=(e,t,n)=>Xf(e,typeof t==`symbol`?t:t+``,n),Qf=class{constructor(e,t,n){this.core=e,this.logger=t,Zf(this,`name`,bu),Zf(this,`keychain`),Zf(this,`randomSessionIdentifier`,Bc()),Zf(this,`initialized`,!1),Zf(this,`init`,async()=>{this.initialized||=(await this.keychain.init(),!0)}),Zf(this,`hasKeys`,e=>(this.isInitialized(),this.keychain.has(e))),Zf(this,`getClientId`,async()=>(this.isInitialized(),ne(I(await this.getClientSeed()).publicKey))),Zf(this,`generateKeyPair`,()=>{this.isInitialized();let e=zc();return this.setPrivateKey(e.publicKey,e.privateKey)}),Zf(this,`signJWT`,async e=>{this.isInitialized();let t=I(await this.getClientSeed()),n=this.randomSessionIdentifier;return await ae(n,e,Su,t)}),Zf(this,`generateSharedKey`,(e,t,n)=>{this.isInitialized();let r=Vc(this.getPrivateKey(e),t);return this.setSymKey(r,n)}),Zf(this,`setSymKey`,async(e,t)=>{this.isInitialized();let n=t||Hc(e);return await this.keychain.set(n,e),n}),Zf(this,`deleteKeyPair`,async e=>{this.isInitialized(),await this.keychain.del(e)}),Zf(this,`deleteSymKey`,async e=>{this.isInitialized(),await this.keychain.del(e)}),Zf(this,`encode`,async(e,t,n)=>{this.isInitialized();let r=$c(n),i=ie(t);if(tl(r))return Jc(i,n?.encoding);if(el(r)){let t=r.senderPublicKey,n=r.receiverPublicKey;e=await this.generateSharedKey(t,n)}let a=this.getSymKey(e),{type:o,senderPublicKey:s}=r;return Kc({type:o,symKey:a,message:i,senderPublicKey:s,encoding:n?.encoding})}),Zf(this,`decode`,async(e,t,n)=>{this.isInitialized();let r=Qc(t,n);if(tl(r))return L(Yc(t,n?.encoding));if(el(r)){let t=r.receiverPublicKey,n=r.senderPublicKey;e=await this.generateSharedKey(t,n)}try{return L(qc({symKey:this.getSymKey(e),encoded:t,encoding:n?.encoding}))}catch(t){this.logger.error(`Failed to decode message from topic: '${e}', clientId: '${await this.getClientId()}'`),this.logger.error(t)}}),Zf(this,`getPayloadType`,(e,t=Mc)=>Gc(Zc({encoded:e,encoding:t}).type)),Zf(this,`getPayloadSenderPublicKey`,(e,t=Mc)=>{let n=Zc({encoded:e,encoding:t});return n.senderPublicKey?we(n.senderPublicKey,jc):void 0}),this.core=e,this.logger=M(t,this.name),this.keychain=n||new Jf(this.core,this.logger)}get context(){return pe(this.logger)}async setPrivateKey(e,t){return await this.keychain.set(e,t),e}getPrivateKey(e){return this.keychain.get(e)}async getClientSeed(){let e=``;try{e=this.keychain.get(xu)}catch{e=Bc(),await this.keychain.set(xu,e)}return Wf(e,`base16`)}getSymKey(e){return this.keychain.get(e)}isInitialized(){if(!this.initialized){let{message:e}=U(`NOT_INITIALIZED`,this.name);throw Error(e)}}},$f=Object.defineProperty,ep=Object.defineProperties,tp=Object.getOwnPropertyDescriptors,np=Object.getOwnPropertySymbols,rp=Object.prototype.hasOwnProperty,ip=Object.prototype.propertyIsEnumerable,ap=(e,t,n)=>t in e?$f(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,op=(e,t)=>{for(var n in t||={})rp.call(t,n)&&ap(e,n,t[n]);if(np)for(var n of np(t))ip.call(t,n)&&ap(e,n,t[n]);return e},sp=(e,t)=>ep(e,tp(t)),cp=(e,t,n)=>ap(e,typeof t==`symbol`?t:t+``,n),lp=class extends pt{constructor(e,t){super(e,t),this.logger=e,this.core=t,cp(this,`messages`,new Map),cp(this,`messagesWithoutClientAck`,new Map),cp(this,`name`,wu),cp(this,`version`,`0.3`),cp(this,`initialized`,!1),cp(this,`storagePrefix`,_u),cp(this,`init`,async()=>{if(!this.initialized){this.logger.trace(`Initialized`);try{let e=await this.getRelayerMessages();typeof e<`u`&&(this.messages=e);let t=await this.getRelayerMessagesWithoutClientAck();typeof t<`u`&&(this.messagesWithoutClientAck=t),this.logger.debug(`Successfully Restored records for ${this.name}`),this.logger.trace({type:`method`,method:`restore`,size:this.messages.size})}catch(e){this.logger.debug(`Failed to Restore records for ${this.name}`),this.logger.error(e)}finally{this.initialized=!0}}}),cp(this,`set`,async(e,t,n)=>{this.isInitialized();let r=Uc(t),i=this.messages.get(e);if(typeof i>`u`&&(i={}),typeof i[r]<`u`)return r;if(i[r]=t,this.messages.set(e,i),n===ju.inbound){let n=this.messagesWithoutClientAck.get(e)||{};this.messagesWithoutClientAck.set(e,sp(op({},n),{[r]:t}))}return await this.persist(),r}),cp(this,`get`,e=>{this.isInitialized();let t=this.messages.get(e);return typeof t>`u`&&(t={}),t}),cp(this,`getWithoutAck`,e=>{this.isInitialized();let t={};for(let n of e){let e=this.messagesWithoutClientAck.get(n)||{};t[n]=Object.values(e)}return t}),cp(this,`has`,(e,t)=>(this.isInitialized(),typeof this.get(e)[Uc(t)]<`u`)),cp(this,`ack`,async(e,t)=>{this.isInitialized();let n=this.messagesWithoutClientAck.get(e);if(typeof n>`u`)return;let r=Uc(t);delete n[r],Object.keys(n).length===0?this.messagesWithoutClientAck.delete(e):this.messagesWithoutClientAck.set(e,n),await this.persist()}),cp(this,`del`,async e=>{this.isInitialized(),this.messages.delete(e),this.messagesWithoutClientAck.delete(e),await this.persist()}),this.logger=M(e,this.name),this.core=t}get context(){return pe(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+`//`+this.name}get storageKeyWithoutClientAck(){return this.storagePrefix+this.version+this.core.customStoragePrefix+`//`+this.name+`_withoutClientAck`}async setRelayerMessages(e){await this.core.storage.setItem(this.storageKey,Xi(e))}async setRelayerMessagesWithoutClientAck(e){await this.core.storage.setItem(this.storageKeyWithoutClientAck,Xi(e))}async getRelayerMessages(){let e=await this.core.storage.getItem(this.storageKey);return typeof e<`u`?Zi(e):void 0}async getRelayerMessagesWithoutClientAck(){let e=await this.core.storage.getItem(this.storageKeyWithoutClientAck);return typeof e<`u`?Zi(e):void 0}async persist(){await this.setRelayerMessages(this.messages),await this.setRelayerMessagesWithoutClientAck(this.messagesWithoutClientAck)}isInitialized(){if(!this.initialized){let{message:e}=U(`NOT_INITIALIZED`,this.name);throw Error(e)}}},up=Object.defineProperty,dp=Object.defineProperties,fp=Object.getOwnPropertyDescriptors,pp=Object.getOwnPropertySymbols,mp=Object.prototype.hasOwnProperty,hp=Object.prototype.propertyIsEnumerable,gp=(e,t,n)=>t in e?up(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,_p=(e,t)=>{for(var n in t||={})mp.call(t,n)&&gp(e,n,t[n]);if(pp)for(var n of pp(t))hp.call(t,n)&&gp(e,n,t[n]);return e},vp=(e,t)=>dp(e,fp(t)),yp=(e,t,n)=>gp(e,typeof t==`symbol`?t:t+``,n),bp=class extends mt{constructor(e,t){super(e,t),this.relayer=e,this.logger=t,yp(this,`events`,new it.EventEmitter),yp(this,`name`,Eu),yp(this,`queue`,new Map),yp(this,`publishTimeout`,(0,R.toMiliseconds)(R.ONE_MINUTE)),yp(this,`initialPublishTimeout`,(0,R.toMiliseconds)(R.ONE_SECOND*15)),yp(this,`needsTransportRestart`,!1),yp(this,`publish`,async(e,t,n)=>{var r;this.logger.debug(`Publishing Payload`),this.logger.trace({type:`method`,method:`publish`,params:{topic:e,message:t,opts:n}});let i=n?.ttl||Tu,a=ol(n),o=n?.prompt||!1,s=n?.tag||0,c=n?.id||fe().toString(),l={topic:e,message:t,opts:{ttl:i,relay:a,prompt:o,tag:s,id:c,attestation:n?.attestation,tvf:n?.tvf}},u=`Failed to publish payload, please try again. id:${c} tag:${s}`;try{let r=new Promise(async r=>{let a=({id:e})=>{l.opts.id===e&&(this.removeRequestFromQueue(e),this.relayer.events.removeListener(Ou.publish,a),r(l))};this.relayer.events.on(Ou.publish,a);let u=$i(new Promise((r,a)=>{this.rpcPublish({topic:e,message:t,ttl:i,prompt:o,tag:s,id:c,attestation:n?.attestation,tvf:n?.tvf}).then(r).catch(e=>{this.logger.warn(e,e?.message),a(e)})}),this.initialPublishTimeout,`Failed initial publish, retrying.... id:${c} tag:${s}`);try{await u,this.events.removeListener(Ou.publish,a)}catch(e){this.queue.set(c,vp(_p({},l),{attempt:1})),this.logger.warn(e,e?.message)}});this.logger.trace({type:`method`,method:`publish`,params:{id:c,topic:e,message:t,opts:n}}),await $i(r,this.publishTimeout,u)}catch(e){if(this.logger.debug(`Failed to Publish Payload`),this.logger.error(e),(r=n?.internal)!=null&&r.throwOnFailedPublish)throw e}finally{this.queue.delete(c)}}),yp(this,`on`,(e,t)=>{this.events.on(e,t)}),yp(this,`once`,(e,t)=>{this.events.once(e,t)}),yp(this,`off`,(e,t)=>{this.events.off(e,t)}),yp(this,`removeListener`,(e,t)=>{this.events.removeListener(e,t)}),this.relayer=e,this.logger=M(t,this.name),this.registerEventListeners()}get context(){return pe(this.logger)}async rpcPublish(e){var t,n;let{topic:r,message:i,ttl:a=Tu,prompt:o,tag:s,id:c,attestation:l,tvf:u}=e,d={method:sl(ol().protocol).publish,params:_p({topic:r,message:i,ttl:a,prompt:o,tag:s,attestation:l},u),id:c};El(d.params?.prompt)&&((t=d.params)==null||delete t.prompt),El(d.params?.tag)&&((n=d.params)==null||delete n.tag),this.logger.debug(`Outgoing Relay Payload`),this.logger.trace({type:`message`,direction:`outgoing`,request:d});let f=await this.relayer.request(d);return this.relayer.events.emit(Ou.publish,e),this.logger.debug(`Successfully Published Payload`),f}removeRequestFromQueue(e){this.queue.delete(e)}checkQueue(){this.queue.forEach(async(e,t)=>{let n=e.attempt+1;this.queue.set(t,vp(_p({},e),{attempt:n}));let{topic:r,message:i,opts:a,attestation:o}=e;this.logger.warn({},`Publisher: queue->publishing: ${e.opts.id}, tag: ${e.opts.tag}, attempt: ${n}`),await this.rpcPublish(vp(_p({},e),{topic:r,message:i,ttl:a.ttl,prompt:a.prompt,tag:a.tag,id:a.id,attestation:o,tvf:a.tvf})),this.logger.warn({},`Publisher: queue->published: ${e.opts.id}`)})}registerEventListeners(){this.relayer.core.heartbeat.on(re.pulse,()=>{if(this.needsTransportRestart){this.needsTransportRestart=!1,this.relayer.events.emit(Ou.connection_stalled);return}this.checkQueue()}),this.relayer.on(Ou.message_ack,e=>{this.removeRequestFromQueue(e.id.toString())})}},xp=Object.defineProperty,Sp=(e,t,n)=>t in e?xp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Cp=(e,t,n)=>Sp(e,typeof t==`symbol`?t:t+``,n),wp=class{constructor(){Cp(this,`map`,new Map),Cp(this,`set`,(e,t)=>{let n=this.get(e);this.exists(e,t)||this.map.set(e,[...n,t])}),Cp(this,`get`,e=>this.map.get(e)||[]),Cp(this,`exists`,(e,t)=>this.get(e).includes(t)),Cp(this,`delete`,(e,t)=>{if(typeof t>`u`){this.map.delete(e);return}if(!this.map.has(e))return;let n=this.get(e);if(!this.exists(e,t))return;let r=n.filter(e=>e!==t);if(!r.length){this.map.delete(e);return}this.map.set(e,r)}),Cp(this,`clear`,()=>{this.map.clear()})}get topics(){return Array.from(this.map.keys())}},Tp=Object.defineProperty,Ep=Object.defineProperties,Dp=Object.getOwnPropertyDescriptors,Op=Object.getOwnPropertySymbols,kp=Object.prototype.hasOwnProperty,Ap=Object.prototype.propertyIsEnumerable,jp=(e,t,n)=>t in e?Tp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Mp=(e,t)=>{for(var n in t||={})kp.call(t,n)&&jp(e,n,t[n]);if(Op)for(var n of Op(t))Ap.call(t,n)&&jp(e,n,t[n]);return e},Np=(e,t)=>Ep(e,Dp(t)),K=(e,t,n)=>jp(e,typeof t==`symbol`?t:t+``,n),Pp=class extends _t{constructor(e,t){super(e,t),this.relayer=e,this.logger=t,K(this,`subscriptions`,new Map),K(this,`topicMap`,new wp),K(this,`events`,new it.EventEmitter),K(this,`name`,Pu),K(this,`version`,`0.3`),K(this,`pending`,new Map),K(this,`cached`,[]),K(this,`initialized`,!1),K(this,`storagePrefix`,_u),K(this,`subscribeTimeout`,(0,R.toMiliseconds)(R.ONE_MINUTE)),K(this,`initialSubscribeTimeout`,(0,R.toMiliseconds)(R.ONE_SECOND*15)),K(this,`clientId`),K(this,`batchSubscribeTopicsLimit`,500),K(this,`init`,async()=>{this.initialized||(this.logger.trace(`Initialized`),this.registerEventListeners(),await this.restore()),this.initialized=!0}),K(this,`subscribe`,async(e,t)=>{this.isInitialized(),this.logger.debug(`Subscribing Topic`),this.logger.trace({type:`method`,method:`subscribe`,params:{topic:e,opts:t}});try{let n=ol(t),r={topic:e,relay:n,transportType:t?.transportType};this.pending.set(e,r);let i=await this.rpcSubscribe(e,n,t);return typeof i==`string`&&(this.onSubscribe(i,r),this.logger.debug(`Successfully Subscribed Topic`),this.logger.trace({type:`method`,method:`subscribe`,params:{topic:e,opts:t}})),i}catch(e){throw this.logger.debug(`Failed to Subscribe Topic`),this.logger.error(e),e}}),K(this,`unsubscribe`,async(e,t)=>{this.isInitialized(),typeof t?.id<`u`?await this.unsubscribeById(e,t.id,t):await this.unsubscribeByTopic(e,t)}),K(this,`isSubscribed`,e=>new Promise(t=>{t(this.topicMap.topics.includes(e))})),K(this,`isKnownTopic`,e=>new Promise(t=>{t(this.topicMap.topics.includes(e)||this.pending.has(e)||this.cached.some(t=>t.topic===e))})),K(this,`on`,(e,t)=>{this.events.on(e,t)}),K(this,`once`,(e,t)=>{this.events.once(e,t)}),K(this,`off`,(e,t)=>{this.events.off(e,t)}),K(this,`removeListener`,(e,t)=>{this.events.removeListener(e,t)}),K(this,`start`,async()=>{await this.onConnect()}),K(this,`stop`,async()=>{await this.onDisconnect()}),K(this,`restart`,async()=>{await this.restore(),await this.onRestart()}),K(this,`checkPending`,async()=>{if(this.pending.size===0&&(!this.initialized||!this.relayer.connected))return;let e=[];this.pending.forEach(t=>{e.push(t)}),await this.batchSubscribe(e)}),K(this,`registerEventListeners`,()=>{this.relayer.core.heartbeat.on(re.pulse,async()=>{await this.checkPending()}),this.events.on(Nu.created,async e=>{let t=Nu.created;this.logger.info(`Emitting ${t}`),this.logger.debug({type:`event`,event:t,data:e}),await this.persist()}),this.events.on(Nu.deleted,async e=>{let t=Nu.deleted;this.logger.info(`Emitting ${t}`),this.logger.debug({type:`event`,event:t,data:e}),await this.persist()})}),this.relayer=e,this.logger=M(t,this.name),this.clientId=``}get context(){return pe(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.relayer.core.customStoragePrefix+`//`+this.name}get length(){return this.subscriptions.size}get ids(){return Array.from(this.subscriptions.keys())}get values(){return Array.from(this.subscriptions.values())}get topics(){return this.topicMap.topics}get hasAnyTopics(){return this.topicMap.topics.length>0||this.pending.size>0||this.cached.length>0||this.subscriptions.size>0}hasSubscription(e,t){let n=!1;try{n=this.getSubscription(e).topic===t}catch{}return n}reset(){this.cached=[],this.initialized=!0}onDisable(){this.cached=this.values,this.subscriptions.clear(),this.topicMap.clear()}async unsubscribeByTopic(e,t){let n=this.topicMap.get(e);await Promise.all(n.map(async n=>await this.unsubscribeById(e,n,t)))}async unsubscribeById(e,t,n){this.logger.debug(`Unsubscribing Topic`),this.logger.trace({type:`method`,method:`unsubscribe`,params:{topic:e,id:t,opts:n}});try{let r=ol(n);await this.restartToComplete({topic:e,id:t,relay:r}),await this.rpcUnsubscribe(e,t,r);let i=W(`USER_DISCONNECTED`,`${this.name}, ${e}`);await this.onUnsubscribe(e,t,i),this.logger.debug(`Successfully Unsubscribed Topic`),this.logger.trace({type:`method`,method:`unsubscribe`,params:{topic:e,id:t,opts:n}})}catch(e){throw this.logger.debug(`Failed to Unsubscribe Topic`),this.logger.error(e),e}}async rpcSubscribe(e,t,n){(!n||n?.transportType===G.relay)&&await this.restartToComplete({topic:e,id:e,relay:t});let r={method:sl(t.protocol).subscribe,params:{topic:e}};this.logger.debug(`Outgoing Relay Payload`),this.logger.trace({type:`payload`,direction:`outgoing`,request:r});let i=n?.internal?.throwOnFailedPublish;try{let t=await this.getSubscriptionId(e);if(n?.transportType===G.link_mode)return setTimeout(()=>{(this.relayer.connected||this.relayer.connecting)&&this.relayer.request(r).catch(e=>this.logger.warn(e))},(0,R.toMiliseconds)(R.ONE_SECOND)),t;let a=await $i(new Promise(async t=>{let n=r=>{r.topic===e&&(this.events.removeListener(Nu.created,n),t(r.id))};this.events.on(Nu.created,n);try{let i=await $i(new Promise((e,t)=>{this.relayer.request(r).catch(e=>{this.logger.warn(e,e?.message),t(e)}).then(e)}),this.initialSubscribeTimeout,`Subscribing to ${e} failed, please try again`);this.events.removeListener(Nu.created,n),t(i)}catch{}}),this.subscribeTimeout,`Subscribing to ${e} failed, please try again`);if(!a&&i)throw Error(`Subscribing to ${e} failed, please try again`);return a?t:null}catch(e){if(this.logger.debug(`Outgoing Relay Subscribe Payload stalled`),this.relayer.events.emit(Ou.connection_stalled),i)throw e}return null}async rpcBatchSubscribe(e){if(!e.length)return;let t=e[0].relay,n={method:sl(t.protocol).batchSubscribe,params:{topics:e.map(e=>e.topic)}};this.logger.debug(`Outgoing Relay Payload`),this.logger.trace({type:`payload`,direction:`outgoing`,request:n});try{await await $i(new Promise(e=>{this.relayer.request(n).catch(e=>this.logger.warn(e)).then(e)}),this.subscribeTimeout,`rpcBatchSubscribe failed, please try again`)}catch{this.relayer.events.emit(Ou.connection_stalled)}}async rpcBatchFetchMessages(e){if(!e.length)return;let t=e[0].relay,n={method:sl(t.protocol).batchFetchMessages,params:{topics:e.map(e=>e.topic)}};this.logger.debug(`Outgoing Relay Payload`),this.logger.trace({type:`payload`,direction:`outgoing`,request:n});let r;try{r=await await $i(new Promise((e,t)=>{this.relayer.request(n).catch(e=>{this.logger.warn(e),t(e)}).then(e)}),this.subscribeTimeout,`rpcBatchFetchMessages failed, please try again`)}catch{this.relayer.events.emit(Ou.connection_stalled)}return r}rpcUnsubscribe(e,t,n){let r={method:sl(n.protocol).unsubscribe,params:{topic:e,id:t}};return this.logger.debug(`Outgoing Relay Payload`),this.logger.trace({type:`payload`,direction:`outgoing`,request:r}),this.relayer.request(r)}onSubscribe(e,t){this.setSubscription(e,Np(Mp({},t),{id:e})),this.pending.delete(t.topic)}onBatchSubscribe(e){e.length&&e.forEach(e=>{this.setSubscription(e.id,Mp({},e)),this.pending.delete(e.topic)})}async onUnsubscribe(e,t,n){this.events.removeAllListeners(t),this.hasSubscription(t,e)&&this.deleteSubscription(t,n),await this.relayer.messages.del(e)}async setRelayerSubscriptions(e){await this.relayer.core.storage.setItem(this.storageKey,e)}async getRelayerSubscriptions(){return await this.relayer.core.storage.getItem(this.storageKey)}setSubscription(e,t){this.logger.debug(`Setting subscription`),this.logger.trace({type:`method`,method:`setSubscription`,id:e,subscription:t}),this.addSubscription(e,t)}addSubscription(e,t){this.subscriptions.set(e,Mp({},t)),this.topicMap.set(t.topic,e),this.events.emit(Nu.created,t)}getSubscription(e){this.logger.debug(`Getting subscription`),this.logger.trace({type:`method`,method:`getSubscription`,id:e});let t=this.subscriptions.get(e);if(!t){let{message:t}=U(`NO_MATCHING_KEY`,`${this.name}: ${e}`);throw Error(t)}return t}deleteSubscription(e,t){this.logger.debug(`Deleting subscription`),this.logger.trace({type:`method`,method:`deleteSubscription`,id:e,reason:t});let n=this.getSubscription(e);this.subscriptions.delete(e),this.topicMap.delete(n.topic,e),this.events.emit(Nu.deleted,Np(Mp({},n),{reason:t}))}async persist(){await this.setRelayerSubscriptions(this.values),this.events.emit(Nu.sync)}async onRestart(){if(this.cached.length){let e=[...this.cached],t=Math.ceil(this.cached.length/this.batchSubscribeTopicsLimit);for(let n=0;n<t;n++){let t=e.splice(0,this.batchSubscribeTopicsLimit);await this.batchSubscribe(t)}}this.events.emit(Nu.resubscribed)}async restore(){try{let e=await this.getRelayerSubscriptions();if(typeof e>`u`||!e.length)return;if(this.subscriptions.size){let{message:e}=U(`RESTORE_WILL_OVERRIDE`,this.name);throw this.logger.error(e),this.logger.error(`${this.name}: ${JSON.stringify(this.values)}`),Error(e)}this.cached=e,this.logger.debug(`Successfully Restored subscriptions for ${this.name}`),this.logger.trace({type:`method`,method:`restore`,subscriptions:this.values})}catch(e){this.logger.debug(`Failed to Restore subscriptions for ${this.name}`),this.logger.error(e)}}async batchSubscribe(e){e.length&&(await this.rpcBatchSubscribe(e),this.onBatchSubscribe(await Promise.all(e.map(async e=>Np(Mp({},e),{id:await this.getSubscriptionId(e.topic)})))))}async batchFetchMessages(e){if(!e.length)return;this.logger.trace(`Fetching batch messages for ${e.length} subscriptions`);let t=await this.rpcBatchFetchMessages(e);t&&t.messages&&(await va((0,R.toMiliseconds)(R.ONE_SECOND)),await this.relayer.handleBatchMessageEvents(t.messages))}async onConnect(){await this.restart(),this.reset()}onDisconnect(){this.onDisable()}isInitialized(){if(!this.initialized){let{message:e}=U(`NOT_INITIALIZED`,this.name);throw Error(e)}}async restartToComplete(e){!this.relayer.connected&&!this.relayer.connecting&&(this.cached.push(e),await this.relayer.transportOpen())}async getClientId(){return this.clientId||=await this.relayer.core.crypto.getClientId(),this.clientId}async getSubscriptionId(e){return Uc(e+await this.getClientId())}},Fp=Object.defineProperty,Ip=Object.getOwnPropertySymbols,Lp=Object.prototype.hasOwnProperty,Rp=Object.prototype.propertyIsEnumerable,zp=(e,t,n)=>t in e?Fp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Bp=(e,t)=>{for(var n in t||={})Lp.call(t,n)&&zp(e,n,t[n]);if(Ip)for(var n of Ip(t))Rp.call(t,n)&&zp(e,n,t[n]);return e},q=(e,t,n)=>zp(e,typeof t==`symbol`?t:t+``,n),Vp=class extends ht{constructor(e){super(e),q(this,`protocol`,`wc`),q(this,`version`,2),q(this,`core`),q(this,`logger`),q(this,`events`,new it.EventEmitter),q(this,`provider`),q(this,`messages`),q(this,`subscriber`),q(this,`publisher`),q(this,`name`,Du),q(this,`transportExplicitlyClosed`,!1),q(this,`initialized`,!1),q(this,`connectionAttemptInProgress`,!1),q(this,`relayUrl`),q(this,`projectId`),q(this,`packageName`),q(this,`bundleId`),q(this,`hasExperiencedNetworkDisruption`,!1),q(this,`pingTimeout`),q(this,`heartBeatTimeout`,(0,R.toMiliseconds)(R.THIRTY_SECONDS+R.FIVE_SECONDS)),q(this,`reconnectTimeout`),q(this,`connectPromise`),q(this,`reconnectInProgress`,!1),q(this,`requestsInFlight`,[]),q(this,`connectTimeout`,(0,R.toMiliseconds)(R.ONE_SECOND*15)),q(this,`request`,async e=>{this.logger.debug(`Publishing Request Payload`);let t=e.id||fe().toString();await this.toEstablishConnection();try{this.logger.trace({id:t,method:e.method,topic:e.params?.topic},`relayer.request - publishing...`);let n=`${t}:${e.params?.tag||``}`;this.requestsInFlight.push(n);let r=await this.provider.request(e);return this.requestsInFlight=this.requestsInFlight.filter(e=>e!==n),r}catch(e){throw this.logger.debug(`Failed to Publish Request: ${t}`),e}}),q(this,`resetPingTimeout`,()=>{Ii()&&(clearTimeout(this.pingTimeout),this.pingTimeout=setTimeout(()=>{var e,t;try{this.logger.debug({},`pingTimeout: Connection stalled, terminating...`),(t=(e=this.provider?.connection?.socket)?.terminate)==null||t.call(e)}catch(e){this.logger.warn(e,e?.message)}},this.heartBeatTimeout))}),q(this,`onPayloadHandler`,e=>{this.onProviderPayload(e),this.resetPingTimeout()}),q(this,`onConnectHandler`,()=>{this.logger.warn({},`Relayer connected 🛜`),this.startPingTimeout(),this.events.emit(Ou.connect)}),q(this,`onDisconnectHandler`,()=>{this.logger.warn({},`Relayer disconnected 🛑`),this.requestsInFlight=[],this.onProviderDisconnect()}),q(this,`onProviderErrorHandler`,e=>{this.logger.fatal(`Fatal socket error: ${e.message}`),this.events.emit(Ou.error,e),this.logger.fatal(`Fatal socket error received, closing transport`),this.transportClose()}),q(this,`registerProviderListeners`,()=>{this.provider.on(ku.payload,this.onPayloadHandler),this.provider.on(ku.connect,this.onConnectHandler),this.provider.on(ku.disconnect,this.onDisconnectHandler),this.provider.on(ku.error,this.onProviderErrorHandler)}),this.core=e.core,this.logger=typeof e.logger<`u`&&typeof e.logger!=`string`?M(e.logger,this.name):(0,me.default)(te({level:e.logger||`error`})),this.messages=new lp(this.logger,e.core),this.subscriber=new Pp(this,this.logger),this.publisher=new bp(this,this.logger),this.relayUrl=e?.relayUrl||`wss://relay.walletconnect.org`,this.projectId=e.projectId,Ri()?this.packageName=Hi():zi()&&(this.bundleId=Hi()),this.provider={}}async init(){if(this.logger.trace(`Initialized`),this.registerEventListeners(),await Promise.all([this.messages.init(),this.subscriber.init()]),this.initialized=!0,this.subscriber.hasAnyTopics)try{await this.transportOpen()}catch(e){this.logger.warn(e,e?.message)}}get context(){return pe(this.logger)}get connected(){return this.provider?.connection?.socket?.readyState===1||!1}get connecting(){return this.provider?.connection?.socket?.readyState===0||this.connectPromise!==void 0||!1}async publish(e,t,n){this.isInitialized(),await this.publisher.publish(e,t,n),await this.recordMessageEvent({topic:e,message:t,publishedAt:Date.now(),transportType:G.relay},ju.outbound)}async subscribe(e,t){this.isInitialized(),(!(t!=null&&t.transportType)||t?.transportType===`relay`)&&await this.toEstablishConnection();let n=typeof t?.internal?.throwOnFailedPublish>`u`?!0:t?.internal?.throwOnFailedPublish,r=this.subscriber.topicMap.get(e)?.[0]||``,i,a=t=>{t.topic===e&&(this.subscriber.off(Nu.created,a),i())};return await Promise.all([new Promise(e=>{i=e,this.subscriber.on(Nu.created,a)}),new Promise(async(i,a)=>{r=await this.subscriber.subscribe(e,Bp({internal:{throwOnFailedPublish:n}},t)).catch(e=>{n&&a(e)})||r,i()})]),r}async unsubscribe(e,t){this.isInitialized(),await this.subscriber.unsubscribe(e,t)}on(e,t){this.events.on(e,t)}once(e,t){this.events.once(e,t)}off(e,t){this.events.off(e,t)}removeListener(e,t){this.events.removeListener(e,t)}async transportDisconnect(){this.provider.disconnect&&(this.hasExperiencedNetworkDisruption||this.connected)?await $i(this.provider.disconnect(),2e3,`provider.disconnect()`).catch(()=>this.onProviderDisconnect()):this.onProviderDisconnect()}async transportClose(){this.transportExplicitlyClosed=!0,await this.transportDisconnect()}async transportOpen(e){if(!this.subscriber.hasAnyTopics){this.logger.warn(`Starting WS connection skipped because the client has no topics to work with.`);return}if(this.connectPromise?(this.logger.debug({},`Waiting for existing connection attempt to resolve...`),await this.connectPromise,this.logger.debug({},`Existing connection attempt resolved`)):(this.connectPromise=new Promise(async(t,n)=>{await this.connect(e).then(t).catch(n).finally(()=>{this.connectPromise=void 0})}),await this.connectPromise),!this.connected)throw Error(`Couldn't establish socket connection to the relay server: ${this.relayUrl}`)}async restartTransport(e){this.logger.debug({},`Restarting transport...`),!this.connectionAttemptInProgress&&(this.relayUrl=e||this.relayUrl,await this.confirmOnlineStateOrThrow(),await this.transportClose(),await this.transportOpen())}async confirmOnlineStateOrThrow(){if(!await su())throw Error(`No internet connection detected. Please restart your network and try again.`)}async handleBatchMessageEvents(e){if(e?.length===0){this.logger.trace(`Batch message events is empty. Ignoring...`);return}let t=e.sort((e,t)=>e.publishedAt-t.publishedAt);this.logger.debug(`Batch of ${t.length} message events sorted`);for(let e of t)try{await this.onMessageEvent(e)}catch(e){this.logger.warn(e,`Error while processing batch message event: `+e?.message)}this.logger.trace(`Batch of ${t.length} message events processed`)}async onLinkMessageEvent(e,t){let{topic:n}=e;if(!t.sessionExists){let e={topic:n,expiry:ia(R.FIVE_MINUTES),relay:{protocol:`irn`},active:!1};await this.core.pairing.pairings.set(n,e)}this.events.emit(Ou.message,e),await this.recordMessageEvent(e,ju.inbound)}async connect(e){await this.confirmOnlineStateOrThrow(),e&&e!==this.relayUrl&&(this.relayUrl=e,await this.transportDisconnect()),this.connectionAttemptInProgress=!0,this.transportExplicitlyClosed=!1;let t=1;for(;t<6;){try{if(this.transportExplicitlyClosed)break;this.logger.debug({},`Connecting to ${this.relayUrl}, attempt: ${t}...`),await this.createProvider(),await new Promise(async(e,t)=>{let n=()=>{t(Error(`Connection interrupted while trying to subscribe`))};this.provider.once(ku.disconnect,n),await $i(new Promise((e,t)=>{this.provider.connect().then(e).catch(t)}),this.connectTimeout,`Socket stalled when trying to connect to ${this.relayUrl}`).catch(e=>{t(e)}).finally(()=>{this.provider.off(ku.disconnect,n),clearTimeout(this.reconnectTimeout)}),await new Promise(async(e,t)=>{let n=()=>{t(Error(`Connection interrupted while trying to subscribe`))};this.provider.once(ku.disconnect,n),await this.subscriber.start().then(e).catch(t).finally(()=>{this.provider.off(ku.disconnect,n)})}),this.hasExperiencedNetworkDisruption=!1,e()})}catch(e){await this.subscriber.stop();let t=e;this.logger.warn({},t.message),this.hasExperiencedNetworkDisruption=!0}finally{this.connectionAttemptInProgress=!1}if(this.connected){this.logger.debug({},`Connected to ${this.relayUrl} successfully on attempt: ${t}`);break}await new Promise(e=>setTimeout(e,(0,R.toMiliseconds)(t*1))),t++}}startPingTimeout(){var e,t;if(Ii())try{(e=this.provider?.connection)!=null&&e.socket&&((t=this.provider?.connection?.socket)==null||t.on(`ping`,()=>{this.resetPingTimeout()})),this.resetPingTimeout()}catch(e){this.logger.warn(e,e?.message)}}async createProvider(){this.provider.connection&&this.unregisterProviderListeners();let e=await this.core.crypto.signJWT(this.relayUrl);this.provider=new ye(new xe(Ji({sdkVersion:Au,protocol:this.protocol,version:this.version,relayUrl:this.relayUrl,projectId:this.projectId,auth:e,useOnCloseEvent:!0,bundleId:this.bundleId,packageName:this.packageName}))),this.registerProviderListeners()}async recordMessageEvent(e,t){let{topic:n,message:r}=e;await this.messages.set(n,r,t)}async shouldIgnoreMessageEvent(e){let{topic:t,message:n}=e;if(!n||n.length===0)return this.logger.warn(`Ignoring invalid/empty message: ${n}`),!0;if(!await this.subscriber.isKnownTopic(t))return this.logger.warn(`Ignoring message for unknown topic ${t}`),!0;let r=this.messages.has(t,n);return r&&this.logger.warn(`Ignoring duplicate message: ${n}`),r}async onProviderPayload(e){if(this.logger.debug(`Incoming Relay Payload`),this.logger.trace({type:`payload`,direction:`incoming`,payload:e}),je(e)){if(!e.method.endsWith(`_subscription`))return;let t=e.params,{topic:n,message:r,publishedAt:i,attestation:a}=t.data,o={topic:n,message:r,publishedAt:i,transportType:G.relay,attestation:a};this.logger.debug(`Emitting Relayer Payload`),this.logger.trace(Bp({type:`event`,event:t.id},o)),this.events.emit(t.id,o),await this.acknowledgePayload(e),await this.onMessageEvent(o)}else be(e)&&this.events.emit(Ou.message_ack,e)}async onMessageEvent(e){await this.shouldIgnoreMessageEvent(e)||(await this.recordMessageEvent(e,ju.inbound),this.events.emit(Ou.message,e))}async acknowledgePayload(e){let t=ke(e.id,!0);await this.provider.connection.send(t)}unregisterProviderListeners(){this.provider.off(ku.payload,this.onPayloadHandler),this.provider.off(ku.connect,this.onConnectHandler),this.provider.off(ku.disconnect,this.onDisconnectHandler),this.provider.off(ku.error,this.onProviderErrorHandler),clearTimeout(this.pingTimeout)}async registerEventListeners(){let e=await su();du(async t=>{e!==t&&(e=t,t?await this.transportOpen().catch(e=>this.logger.error(e,e?.message)):(this.hasExperiencedNetworkDisruption=!0,await this.transportDisconnect(),this.transportExplicitlyClosed=!1))})}async onProviderDisconnect(){clearTimeout(this.pingTimeout),this.events.emit(Ou.disconnect),this.connectionAttemptInProgress=!1,!this.reconnectInProgress&&(this.reconnectInProgress=!0,await this.subscriber.stop(),this.subscriber.hasAnyTopics&&(this.transportExplicitlyClosed||(this.reconnectTimeout=setTimeout(async()=>{await this.transportOpen().catch(e=>this.logger.error(e,e?.message)),this.reconnectTimeout=void 0,this.reconnectInProgress=!1},(0,R.toMiliseconds)(.1)))))}isInitialized(){if(!this.initialized){let{message:e}=U(`NOT_INITIALIZED`,this.name);throw Error(e)}}async toEstablishConnection(){await this.confirmOnlineStateOrThrow(),!this.connected&&await this.connect()}};function Hp(){}function Up(e){if(!e||typeof e!=`object`)return!1;let t=Object.getPrototypeOf(e);return t===null||t===Object.prototype||Object.getPrototypeOf(t)===null?Object.prototype.toString.call(e)===`[object Object]`:!1}function Wp(e){return Object.getOwnPropertySymbols(e).filter(t=>Object.prototype.propertyIsEnumerable.call(e,t))}function Gp(e){return e==null?e===void 0?`[object Undefined]`:`[object Null]`:Object.prototype.toString.call(e)}var Kp=`[object RegExp]`,qp=`[object String]`,Jp=`[object Number]`,Yp=`[object Boolean]`,Xp=`[object Arguments]`,Zp=`[object Symbol]`,Qp=`[object Date]`,$p=`[object Map]`,em=`[object Set]`,tm=`[object Array]`,nm=`[object Function]`,rm=`[object ArrayBuffer]`,im=`[object Object]`,am=`[object Error]`,om=`[object DataView]`,sm=`[object Uint8Array]`,cm=`[object Uint8ClampedArray]`,lm=`[object Uint16Array]`,um=`[object Uint32Array]`,dm=`[object BigUint64Array]`,fm=`[object Int8Array]`,pm=`[object Int16Array]`,mm=`[object Int32Array]`,hm=`[object BigInt64Array]`,gm=`[object Float32Array]`,_m=`[object Float64Array]`;function vm(e,t){return e===t||Number.isNaN(e)&&Number.isNaN(t)}function ym(e,t,n){return bm(e,t,void 0,void 0,void 0,void 0,n)}function bm(e,t,n,r,i,a,o){let s=o(e,t,n,r,i,a);if(s!==void 0)return s;if(typeof e==typeof t)switch(typeof e){case`bigint`:case`string`:case`boolean`:case`symbol`:case`undefined`:return e===t;case`number`:return e===t||Object.is(e,t);case`function`:return e===t;case`object`:return xm(e,t,a,o)}return xm(e,t,a,o)}function xm(e,t,n,r){if(Object.is(e,t))return!0;let i=Gp(e),a=Gp(t);if(i===Xp&&(i=im),a===Xp&&(a=im),i!==a)return!1;switch(i){case qp:return e.toString()===t.toString();case Jp:return vm(e.valueOf(),t.valueOf());case Yp:case Qp:case Zp:return Object.is(e.valueOf(),t.valueOf());case Kp:return e.source===t.source&&e.flags===t.flags;case nm:return e===t}n??=new Map;let o=n.get(e),s=n.get(t);if(o!=null&&s!=null)return o===t;n.set(e,t),n.set(t,e);try{switch(i){case $p:if(e.size!==t.size)return!1;for(let[i,a]of e.entries())if(!t.has(i)||!bm(a,t.get(i),i,e,t,n,r))return!1;return!0;case em:{if(e.size!==t.size)return!1;let i=Array.from(e.values()),a=Array.from(t.values());for(let o=0;o<i.length;o++){let s=i[o],c=a.findIndex(i=>bm(s,i,void 0,e,t,n,r));if(c===-1)return!1;a.splice(c,1)}return!0}case tm:case sm:case cm:case lm:case um:case dm:case fm:case pm:case mm:case hm:case gm:case _m:if(typeof Buffer<`u`&&Buffer.isBuffer(e)!==Buffer.isBuffer(t)||e.length!==t.length)return!1;for(let i=0;i<e.length;i++)if(!bm(e[i],t[i],i,e,t,n,r))return!1;return!0;case rm:return e.byteLength===t.byteLength?xm(new Uint8Array(e),new Uint8Array(t),n,r):!1;case om:return e.byteLength!==t.byteLength||e.byteOffset!==t.byteOffset?!1:xm(new Uint8Array(e),new Uint8Array(t),n,r);case am:return e.name===t.name&&e.message===t.message;case im:{if(!(xm(e.constructor,t.constructor,n,r)||Up(e)&&Up(t)))return!1;let i=[...Object.keys(e),...Wp(e)],a=[...Object.keys(t),...Wp(t)];if(i.length!==a.length)return!1;for(let a=0;a<i.length;a++){let o=i[a],s=e[o];if(!Object.hasOwn(t,o))return!1;let c=t[o];if(!bm(s,c,o,e,t,n,r))return!1}return!0}default:return!1}}finally{n.delete(e),n.delete(t)}}function Sm(e,t){return ym(e,t,Hp)}var Cm=Object.defineProperty,wm=Object.getOwnPropertySymbols,Tm=Object.prototype.hasOwnProperty,Em=Object.prototype.propertyIsEnumerable,Dm=(e,t,n)=>t in e?Cm(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Om=(e,t)=>{for(var n in t||={})Tm.call(t,n)&&Dm(e,n,t[n]);if(wm)for(var n of wm(t))Em.call(t,n)&&Dm(e,n,t[n]);return e},km=(e,t,n)=>Dm(e,typeof t==`symbol`?t:t+``,n),Am=class extends gt{constructor(e,t,n,r=_u,i=void 0){super(e,t,n,r),this.core=e,this.logger=t,this.name=n,km(this,`map`,new Map),km(this,`version`,`0.3`),km(this,`cached`,[]),km(this,`initialized`,!1),km(this,`getKey`),km(this,`storagePrefix`,_u),km(this,`recentlyDeleted`,[]),km(this,`recentlyDeletedLimit`,200),km(this,`init`,async()=>{this.initialized||=(this.logger.trace(`Initialized`),await this.restore(),this.cached.forEach(e=>{this.getKey&&e!==null&&!El(e)?this.map.set(this.getKey(e),e):Nl(e)?this.map.set(e.id,e):Pl(e)&&this.map.set(e.topic,e)}),this.cached=[],!0)}),km(this,`set`,async(e,t)=>{this.isInitialized(),this.map.has(e)?await this.update(e,t):(this.logger.debug(`Setting value`),this.logger.trace({type:`method`,method:`set`,key:e,value:t}),this.map.set(e,t),await this.persist())}),km(this,`get`,e=>(this.isInitialized(),this.logger.debug(`Getting value`),this.logger.trace({type:`method`,method:`get`,key:e}),this.getData(e))),km(this,`getAll`,e=>(this.isInitialized(),e?this.values.filter(t=>Object.keys(e).every(n=>Sm(t[n],e[n]))):this.values)),km(this,`update`,async(e,t)=>{this.isInitialized(),this.logger.debug(`Updating value`),this.logger.trace({type:`method`,method:`update`,key:e,update:t});let n=Om(Om({},this.getData(e)),t);this.map.set(e,n),await this.persist()}),km(this,`delete`,async(e,t)=>{this.isInitialized(),this.map.has(e)&&(this.logger.debug(`Deleting value`),this.logger.trace({type:`method`,method:`delete`,key:e,reason:t}),this.map.delete(e),this.addToRecentlyDeleted(e),await this.persist())}),this.logger=M(t,this.name),this.storagePrefix=r,this.getKey=i}get context(){return pe(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+`//`+this.name}get length(){return this.map.size}get keys(){return Array.from(this.map.keys())}get values(){return Array.from(this.map.values())}addToRecentlyDeleted(e){this.recentlyDeleted.push(e),this.recentlyDeleted.length>=this.recentlyDeletedLimit&&this.recentlyDeleted.splice(0,this.recentlyDeletedLimit/2)}async setDataStore(e){await this.core.storage.setItem(this.storageKey,e)}async getDataStore(){return await this.core.storage.getItem(this.storageKey)}getData(e){let t=this.map.get(e);if(!t){if(this.recentlyDeleted.includes(e)){let{message:t}=U(`MISSING_OR_INVALID`,`Record was recently deleted - ${this.name}: ${e}`);throw this.logger.error(t),Error(t)}let{message:t}=U(`NO_MATCHING_KEY`,`${this.name}: ${e}`);throw this.logger.error(t),Error(t)}return t}async persist(){await this.setDataStore(this.values)}async restore(){try{let e=await this.getDataStore();if(typeof e>`u`||!e.length)return;if(this.map.size){let{message:e}=U(`RESTORE_WILL_OVERRIDE`,this.name);throw this.logger.error(e),Error(e)}this.cached=e,this.logger.debug(`Successfully Restored value for ${this.name}`),this.logger.trace({type:`method`,method:`restore`,value:this.values})}catch(e){this.logger.debug(`Failed to Restore value for ${this.name}`),this.logger.error(e)}}isInitialized(){if(!this.initialized){let{message:e}=U(`NOT_INITIALIZED`,this.name);throw Error(e)}}},jm=Object.defineProperty,Mm=(e,t,n)=>t in e?jm(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,J=(e,t,n)=>Mm(e,typeof t==`symbol`?t:t+``,n),Nm=class{constructor(e,t){this.core=e,this.logger=t,J(this,`name`,Fu),J(this,`version`,`0.3`),J(this,`events`,new it.default),J(this,`pairings`),J(this,`initialized`,!1),J(this,`storagePrefix`,_u),J(this,`ignoredPayloadTypes`,[1]),J(this,`registeredMethods`,[]),J(this,`init`,async()=>{this.initialized||(await this.pairings.init(),await this.cleanup(),this.registerRelayerEvents(),this.registerExpirerEvents(),this.initialized=!0,this.logger.trace(`Initialized`))}),J(this,`register`,({methods:e})=>{this.isInitialized(),this.registeredMethods=[...new Set([...this.registeredMethods,...e])]}),J(this,`create`,async e=>{this.isInitialized();let t=Bc(),n=await this.core.crypto.setSymKey(t),r=ia(R.FIVE_MINUTES),i={protocol:`irn`},a={topic:n,expiry:r,relay:i,active:!1,methods:e?.methods},o=fl({protocol:this.core.protocol,version:this.core.version,topic:n,symKey:t,relay:i,expiryTimestamp:r,methods:e?.methods});return this.events.emit(Lu.create,a),this.core.expirer.set(n,r),await this.pairings.set(n,a),await this.core.relayer.subscribe(n,{transportType:e?.transportType}),{topic:n,uri:o}}),J(this,`pair`,async e=>{this.isInitialized();let t=this.core.eventClient.createEvent({properties:{topic:e?.uri,trace:[Yu.pairing_started]}});this.isValidPair(e,t);let{topic:n,symKey:r,relay:i,expiryTimestamp:a,methods:o}=ll(e.uri);t.props.properties.topic=n,t.addTrace(Yu.pairing_uri_validation_success),t.addTrace(Yu.pairing_uri_not_expired);let s;if(this.pairings.keys.includes(n)){if(s=this.pairings.get(n),t.addTrace(Yu.existing_pairing),s.active)throw t.setError(Xu.active_pairing_already_exists),Error(`Pairing already exists: ${n}. Please try again with a new connection URI.`);t.addTrace(Yu.pairing_not_expired)}let c=a||ia(R.FIVE_MINUTES),l={topic:n,relay:i,expiry:c,active:!1,methods:o};this.core.expirer.set(n,c),await this.pairings.set(n,l),t.addTrace(Yu.store_new_pairing),e.activatePairing&&await this.activate({topic:n}),this.events.emit(Lu.create,l),t.addTrace(Yu.emit_inactive_pairing),this.core.crypto.keychain.has(n)||await this.core.crypto.setSymKey(r,n),t.addTrace(Yu.subscribing_pairing_topic);try{await this.core.relayer.confirmOnlineStateOrThrow()}catch{t.setError(Xu.no_internet_connection)}try{await this.core.relayer.subscribe(n,{relay:i})}catch(e){throw t.setError(Xu.subscribe_pairing_topic_failure),e}return t.addTrace(Yu.subscribe_pairing_topic_success),l}),J(this,`activate`,async({topic:e})=>{this.isInitialized();let t=ia(R.FIVE_MINUTES);this.core.expirer.set(e,t),await this.pairings.update(e,{active:!0,expiry:t})}),J(this,`ping`,async e=>{this.isInitialized(),await this.isValidPing(e),this.logger.warn(`ping() is deprecated and will be removed in the next major release.`);let{topic:t}=e;if(this.pairings.keys.includes(t)){let e=await this.sendRequest(t,`wc_pairingPing`,{}),{done:n,resolve:r,reject:i}=Qi();this.events.once(V(`pairing_ping`,e),({error:e})=>{e?i(e):r()}),await n()}}),J(this,`updateExpiry`,async({topic:e,expiry:t})=>{this.isInitialized(),await this.pairings.update(e,{expiry:t})}),J(this,`updateMetadata`,async({topic:e,metadata:t})=>{this.isInitialized(),await this.pairings.update(e,{peerMetadata:t})}),J(this,`getPairings`,()=>(this.isInitialized(),this.pairings.values)),J(this,`disconnect`,async e=>{this.isInitialized(),await this.isValidDisconnect(e);let{topic:t}=e;this.pairings.keys.includes(t)&&(await this.sendRequest(t,`wc_pairingDelete`,W(`USER_DISCONNECTED`)),await this.deletePairing(t))}),J(this,`formatUriFromPairing`,e=>{this.isInitialized();let{topic:t,relay:n,expiry:r,methods:i}=e,a=this.core.crypto.keychain.get(t);return fl({protocol:this.core.protocol,version:this.core.version,topic:t,symKey:a,relay:n,expiryTimestamp:r,methods:i})}),J(this,`sendRequest`,async(e,t,n)=>{let r=N(t,n),i=await this.core.crypto.encode(e,r),a=Iu[t].req;return this.core.history.set(e,r),this.core.relayer.publish(e,i,a),r.id}),J(this,`sendResult`,async(e,t,n)=>{let r=ke(e,n),i=await this.core.crypto.encode(t,r),a=Iu[(await this.core.history.get(t,e)).request.method].res;await this.core.relayer.publish(t,i,a),await this.core.history.resolve(r)}),J(this,`sendError`,async(e,t,n)=>{let r=de(e,n),i=await this.core.crypto.encode(t,r),a=(await this.core.history.get(t,e)).request.method,o=Iu[a]?Iu[a].res:Iu.unregistered_method.res;await this.core.relayer.publish(t,i,o),await this.core.history.resolve(r)}),J(this,`deletePairing`,async(e,t)=>{await this.core.relayer.unsubscribe(e),await Promise.all([this.pairings.delete(e,W(`USER_DISCONNECTED`)),this.core.crypto.deleteSymKey(e),t?Promise.resolve():this.core.expirer.del(e)])}),J(this,`cleanup`,async()=>{let e=this.pairings.getAll().filter(e=>aa(e.expiry));await Promise.all(e.map(e=>this.deletePairing(e.topic)))}),J(this,`onRelayEventRequest`,async e=>{let{topic:t,payload:n}=e;switch(n.method){case`wc_pairingPing`:return await this.onPairingPingRequest(t,n);case`wc_pairingDelete`:return await this.onPairingDeleteRequest(t,n);default:return await this.onUnknownRpcMethodRequest(t,n)}}),J(this,`onRelayEventResponse`,async e=>{let{topic:t,payload:n}=e,r=(await this.core.history.get(t,n.id)).request.method;switch(r){case`wc_pairingPing`:return this.onPairingPingResponse(t,n);default:return this.onUnknownRpcMethodResponse(r)}}),J(this,`onPairingPingRequest`,async(e,t)=>{let{id:n}=t;try{this.isValidPing({topic:e}),await this.sendResult(n,e,!0),this.events.emit(Lu.ping,{id:n,topic:e})}catch(t){await this.sendError(n,e,t),this.logger.error(t)}}),J(this,`onPairingPingResponse`,(e,t)=>{let{id:n}=t;setTimeout(()=>{Ae(t)?this.events.emit(V(`pairing_ping`,n),{}):Oe(t)&&this.events.emit(V(`pairing_ping`,n),{error:t.error})},500)}),J(this,`onPairingDeleteRequest`,async(e,t)=>{let{id:n}=t;try{this.isValidDisconnect({topic:e}),await this.deletePairing(e),this.events.emit(Lu.delete,{id:n,topic:e})}catch(t){await this.sendError(n,e,t),this.logger.error(t)}}),J(this,`onUnknownRpcMethodRequest`,async(e,t)=>{let{id:n,method:r}=t;try{if(this.registeredMethods.includes(r))return;let t=W(`WC_METHOD_UNSUPPORTED`,r);await this.sendError(n,e,t),this.logger.error(t)}catch(t){await this.sendError(n,e,t),this.logger.error(t)}}),J(this,`onUnknownRpcMethodResponse`,e=>{this.registeredMethods.includes(e)||this.logger.error(W(`WC_METHOD_UNSUPPORTED`,e))}),J(this,`isValidPair`,(e,t)=>{var n;if(!Jl(e)){let{message:n}=U(`MISSING_OR_INVALID`,`pair() params: ${e}`);throw t.setError(Xu.malformed_pairing_uri),Error(n)}if(!Ml(e.uri)){let{message:n}=U(`MISSING_OR_INVALID`,`pair() uri: ${e.uri}`);throw t.setError(Xu.malformed_pairing_uri),Error(n)}let r=ll(e?.uri);if(!((n=r?.relay)!=null&&n.protocol)){let{message:e}=U(`MISSING_OR_INVALID`,`pair() uri#relay-protocol`);throw t.setError(Xu.malformed_pairing_uri),Error(e)}if(!(r!=null&&r.symKey)){let{message:e}=U(`MISSING_OR_INVALID`,`pair() uri#symKey`);throw t.setError(Xu.malformed_pairing_uri),Error(e)}if(r!=null&&r.expiryTimestamp&&(0,R.toMiliseconds)(r?.expiryTimestamp)<Date.now()){t.setError(Xu.pairing_expired);let{message:e}=U(`EXPIRED`,`pair() URI has expired. Please try again with a new connection URI.`);throw Error(e)}}),J(this,`isValidPing`,async e=>{if(!Jl(e)){let{message:t}=U(`MISSING_OR_INVALID`,`ping() params: ${e}`);throw Error(t)}let{topic:t}=e;await this.isValidPairingTopic(t)}),J(this,`isValidDisconnect`,async e=>{if(!Jl(e)){let{message:t}=U(`MISSING_OR_INVALID`,`disconnect() params: ${e}`);throw Error(t)}let{topic:t}=e;await this.isValidPairingTopic(t)}),J(this,`isValidPairingTopic`,async e=>{if(!Dl(e,!1)){let{message:t}=U(`MISSING_OR_INVALID`,`pairing topic should be a string: ${e}`);throw Error(t)}if(!this.pairings.keys.includes(e)){let{message:t}=U(`NO_MATCHING_KEY`,`pairing topic doesn't exist: ${e}`);throw Error(t)}if(aa(this.pairings.get(e).expiry)){await this.deletePairing(e);let{message:t}=U(`EXPIRED`,`pairing topic: ${e}`);throw Error(t)}}),this.core=e,this.logger=M(t,this.name),this.pairings=new Am(this.core,this.logger,this.name,this.storagePrefix)}get context(){return pe(this.logger)}isInitialized(){if(!this.initialized){let{message:e}=U(`NOT_INITIALIZED`,this.name);throw Error(e)}}registerRelayerEvents(){this.core.relayer.on(Ou.message,async e=>{let{topic:t,message:n,transportType:r}=e;if(this.pairings.keys.includes(t)&&r!==G.link_mode&&!this.ignoredPayloadTypes.includes(this.core.crypto.getPayloadType(n)))try{let e=await this.core.crypto.decode(t,n);je(e)?(this.core.history.set(t,e),await this.onRelayEventRequest({topic:t,payload:e})):be(e)&&(await this.core.history.resolve(e),await this.onRelayEventResponse({topic:t,payload:e}),this.core.history.delete(t,e.id)),await this.core.relayer.messages.ack(t,n)}catch(e){this.logger.error(e)}})}registerExpirerEvents(){this.core.expirer.on(Vu.expired,async e=>{let{topic:t}=ra(e.target);t&&this.pairings.keys.includes(t)&&(await this.deletePairing(t,!0),this.events.emit(Lu.expire,{topic:t}))})}},Pm=Object.defineProperty,Fm=(e,t,n)=>t in e?Pm(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Im=(e,t,n)=>Fm(e,typeof t==`symbol`?t:t+``,n),Lm=class extends ft{constructor(e,t){super(e,t),this.core=e,this.logger=t,Im(this,`records`,new Map),Im(this,`events`,new it.EventEmitter),Im(this,`name`,zu),Im(this,`version`,`0.3`),Im(this,`cached`,[]),Im(this,`initialized`,!1),Im(this,`storagePrefix`,_u),Im(this,`init`,async()=>{this.initialized||=(this.logger.trace(`Initialized`),await this.restore(),this.cached.forEach(e=>this.records.set(e.id,e)),this.cached=[],this.registerEventListeners(),!0)}),Im(this,`set`,(e,t,n)=>{if(this.isInitialized(),this.logger.debug(`Setting JSON-RPC request history record`),this.logger.trace({type:`method`,method:`set`,topic:e,request:t,chainId:n}),this.records.has(t.id))return;let r={id:t.id,topic:e,request:{method:t.method,params:t.params||null},chainId:n,expiry:ia(R.THIRTY_DAYS)};this.records.set(r.id,r),this.persist(),this.events.emit(Ru.created,r)}),Im(this,`resolve`,async e=>{if(this.isInitialized(),this.logger.debug(`Updating JSON-RPC response history record`),this.logger.trace({type:`method`,method:`update`,response:e}),!this.records.has(e.id))return;let t=await this.getRecord(e.id);typeof t.response>`u`&&(t.response=Oe(e)?{error:e.error}:{result:e.result},this.records.set(t.id,t),this.persist(),this.events.emit(Ru.updated,t))}),Im(this,`get`,async(e,t)=>(this.isInitialized(),this.logger.debug(`Getting record`),this.logger.trace({type:`method`,method:`get`,topic:e,id:t}),await this.getRecord(t))),Im(this,`delete`,(e,t)=>{this.isInitialized(),this.logger.debug(`Deleting record`),this.logger.trace({type:`method`,method:`delete`,id:t}),this.values.forEach(n=>{if(n.topic===e){if(typeof t<`u`&&n.id!==t)return;this.records.delete(n.id),this.events.emit(Ru.deleted,n)}}),this.persist()}),Im(this,`exists`,async(e,t)=>(this.isInitialized(),this.records.has(t)?(await this.getRecord(t)).topic===e:!1)),Im(this,`on`,(e,t)=>{this.events.on(e,t)}),Im(this,`once`,(e,t)=>{this.events.once(e,t)}),Im(this,`off`,(e,t)=>{this.events.off(e,t)}),Im(this,`removeListener`,(e,t)=>{this.events.removeListener(e,t)}),this.logger=M(t,this.name)}get context(){return pe(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+`//`+this.name}get size(){return this.records.size}get keys(){return Array.from(this.records.keys())}get values(){return Array.from(this.records.values())}get pending(){let e=[];return this.values.forEach(t=>{if(typeof t.response<`u`)return;let n={topic:t.topic,request:N(t.request.method,t.request.params,t.id),chainId:t.chainId};return e.push(n)}),e}async setJsonRpcRecords(e){await this.core.storage.setItem(this.storageKey,e)}async getJsonRpcRecords(){return await this.core.storage.getItem(this.storageKey)}getRecord(e){this.isInitialized();let t=this.records.get(e);if(!t){let{message:t}=U(`NO_MATCHING_KEY`,`${this.name}: ${e}`);throw Error(t)}return t}async persist(){await this.setJsonRpcRecords(this.values),this.events.emit(Ru.sync)}async restore(){try{let e=await this.getJsonRpcRecords();if(typeof e>`u`||!e.length)return;if(this.records.size){let{message:e}=U(`RESTORE_WILL_OVERRIDE`,this.name);throw this.logger.error(e),Error(e)}this.cached=e,this.logger.debug(`Successfully Restored records for ${this.name}`),this.logger.trace({type:`method`,method:`restore`,records:this.values})}catch(e){this.logger.debug(`Failed to Restore records for ${this.name}`),this.logger.error(e)}}registerEventListeners(){this.events.on(Ru.created,e=>{let t=Ru.created;this.logger.info(`Emitting ${t}`),this.logger.debug({type:`event`,event:t,record:e})}),this.events.on(Ru.updated,e=>{let t=Ru.updated;this.logger.info(`Emitting ${t}`),this.logger.debug({type:`event`,event:t,record:e})}),this.events.on(Ru.deleted,e=>{let t=Ru.deleted;this.logger.info(`Emitting ${t}`),this.logger.debug({type:`event`,event:t,record:e})}),this.core.heartbeat.on(re.pulse,()=>{this.cleanup()})}cleanup(){try{this.isInitialized();let e=!1;this.records.forEach(t=>{(0,R.toMiliseconds)(t.expiry||0)-Date.now()<=0&&(this.logger.info(`Deleting expired history log: ${t.id}`),this.records.delete(t.id),this.events.emit(Ru.deleted,t,!1),e=!0)}),e&&this.persist()}catch(e){this.logger.warn(e)}}isInitialized(){if(!this.initialized){let{message:e}=U(`NOT_INITIALIZED`,this.name);throw Error(e)}}},Rm=Object.defineProperty,zm=(e,t,n)=>t in e?Rm(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Bm=(e,t,n)=>zm(e,typeof t==`symbol`?t:t+``,n),Vm=class extends vt{constructor(e,t){super(e,t),this.core=e,this.logger=t,Bm(this,`expirations`,new Map),Bm(this,`events`,new it.EventEmitter),Bm(this,`name`,Bu),Bm(this,`version`,`0.3`),Bm(this,`cached`,[]),Bm(this,`initialized`,!1),Bm(this,`storagePrefix`,_u),Bm(this,`init`,async()=>{this.initialized||=(this.logger.trace(`Initialized`),await this.restore(),this.cached.forEach(e=>this.expirations.set(e.target,e)),this.cached=[],this.registerEventListeners(),!0)}),Bm(this,`has`,e=>{try{let t=this.formatTarget(e);return typeof this.getExpiration(t)<`u`}catch{return!1}}),Bm(this,`set`,(e,t)=>{this.isInitialized();let n=this.formatTarget(e),r={target:n,expiry:t};this.expirations.set(n,r),this.checkExpiry(n,r),this.events.emit(Vu.created,{target:n,expiration:r})}),Bm(this,`get`,e=>{this.isInitialized();let t=this.formatTarget(e);return this.getExpiration(t)}),Bm(this,`del`,e=>{if(this.isInitialized(),this.has(e)){let t=this.formatTarget(e),n=this.getExpiration(t);this.expirations.delete(t),this.events.emit(Vu.deleted,{target:t,expiration:n})}}),Bm(this,`on`,(e,t)=>{this.events.on(e,t)}),Bm(this,`once`,(e,t)=>{this.events.once(e,t)}),Bm(this,`off`,(e,t)=>{this.events.off(e,t)}),Bm(this,`removeListener`,(e,t)=>{this.events.removeListener(e,t)}),this.logger=M(t,this.name)}get context(){return pe(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+`//`+this.name}get length(){return this.expirations.size}get keys(){return Array.from(this.expirations.keys())}get values(){return Array.from(this.expirations.values())}formatTarget(e){if(typeof e==`string`)return ta(e);if(typeof e==`number`)return na(e);let{message:t}=U(`UNKNOWN_TYPE`,`Target type: ${typeof e}`);throw Error(t)}async setExpirations(e){await this.core.storage.setItem(this.storageKey,e)}async getExpirations(){return await this.core.storage.getItem(this.storageKey)}async persist(){await this.setExpirations(this.values),this.events.emit(Vu.sync)}async restore(){try{let e=await this.getExpirations();if(typeof e>`u`||!e.length)return;if(this.expirations.size){let{message:e}=U(`RESTORE_WILL_OVERRIDE`,this.name);throw this.logger.error(e),Error(e)}this.cached=e,this.logger.debug(`Successfully Restored expirations for ${this.name}`),this.logger.trace({type:`method`,method:`restore`,expirations:this.values})}catch(e){this.logger.debug(`Failed to Restore expirations for ${this.name}`),this.logger.error(e)}}getExpiration(e){let t=this.expirations.get(e);if(!t){let{message:t}=U(`NO_MATCHING_KEY`,`${this.name}: ${e}`);throw this.logger.warn(t),Error(t)}return t}checkExpiry(e,t){let{expiry:n}=t;(0,R.toMiliseconds)(n)-Date.now()<=0&&this.expire(e,t)}expire(e,t){this.expirations.delete(e),this.events.emit(Vu.expired,{target:e,expiration:t})}checkExpirations(){this.core.relayer.connected&&this.expirations.forEach((e,t)=>this.checkExpiry(t,e))}registerEventListeners(){this.core.heartbeat.on(re.pulse,()=>this.checkExpirations()),this.events.on(Vu.created,e=>{let t=Vu.created;this.logger.info(`Emitting ${t}`),this.logger.debug({type:`event`,event:t,data:e}),this.persist()}),this.events.on(Vu.expired,e=>{let t=Vu.expired;this.logger.info(`Emitting ${t}`),this.logger.debug({type:`event`,event:t,data:e}),this.persist()}),this.events.on(Vu.deleted,e=>{let t=Vu.deleted;this.logger.info(`Emitting ${t}`),this.logger.debug({type:`event`,event:t,data:e}),this.persist()})}isInitialized(){if(!this.initialized){let{message:e}=U(`NOT_INITIALIZED`,this.name);throw Error(e)}}},Hm=Object.defineProperty,Um=(e,t,n)=>t in e?Hm(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Wm=(e,t,n)=>Um(e,typeof t==`symbol`?t:t+``,n),Gm=class extends yt{constructor(e,t,n){super(e,t,n),this.core=e,this.logger=t,this.store=n,Wm(this,`name`,Hu),Wm(this,`abortController`),Wm(this,`isDevEnv`),Wm(this,`verifyUrlV3`,Gu),Wm(this,`storagePrefix`,_u),Wm(this,`version`,2),Wm(this,`publicKey`),Wm(this,`fetchPromise`),Wm(this,`init`,async()=>{this.isDevEnv||(this.publicKey=await this.store.getItem(this.storeKey),this.publicKey&&(0,R.toMiliseconds)(this.publicKey?.expiresAt)<Date.now()&&(this.logger.debug(`verify v2 public key expired`),await this.removePublicKey()))}),Wm(this,`register`,async e=>{if(!Bi()||this.isDevEnv)return;let t=window.location.origin,{id:n,decryptedId:r}=e,i=`${this.verifyUrlV3}/attestation?projectId=${this.core.projectId}&origin=${t}&id=${n}&decryptedId=${r}`;try{let e=(0,Dt.getDocument)(),t=this.startAbortTimer(R.ONE_SECOND*5),r=await new Promise((r,a)=>{let o=()=>{window.removeEventListener(`message`,c),e.body.removeChild(s),a(`attestation aborted`)};this.abortController.signal.addEventListener(`abort`,o);let s=e.createElement(`iframe`);s.src=i,s.style.display=`none`,s.addEventListener(`error`,o,{signal:this.abortController.signal});let c=i=>{if(i.data&&typeof i.data==`string`)try{let a=JSON.parse(i.data);if(a.type===`verify_attestation`){if(ue(a.attestation).payload.id!==n)return;clearInterval(t),e.body.removeChild(s),this.abortController.signal.removeEventListener(`abort`,o),window.removeEventListener(`message`,c),r(a.attestation===null?``:a.attestation)}}catch(e){this.logger.warn(e)}};e.body.appendChild(s),window.addEventListener(`message`,c,{signal:this.abortController.signal})});return this.logger.debug(`jwt attestation`,r),r}catch(e){this.logger.warn(e)}return``}),Wm(this,`resolve`,async e=>{if(this.isDevEnv)return``;let{attestationId:t,hash:n,encryptedId:r}=e;if(t===``){this.logger.debug(`resolve: attestationId is empty, skipping`);return}if(t){if(ue(t).payload.id!==r)return;let e=await this.isValidJwtAttestation(t);if(e){if(!e.isVerified){this.logger.warn(`resolve: jwt attestation: origin url not verified`);return}return e}}if(!n)return;let i=this.getVerifyUrl(e?.verifyUrl);return this.fetchAttestation(n,i)}),Wm(this,`fetchAttestation`,async(e,t)=>{this.logger.debug(`resolving attestation: ${e} from url: ${t}`);let n=this.startAbortTimer(R.ONE_SECOND*5),r=await fetch(`${t}/attestation/${e}?v2Supported=true`,{signal:this.abortController.signal});return clearTimeout(n),r.status===200?await r.json():void 0}),Wm(this,`getVerifyUrl`,e=>{let t=e||`https://verify.walletconnect.org`;return Ku.includes(t)||(this.logger.info(`verify url: ${t}, not included in trusted list, assigning default: https://verify.walletconnect.org`),t=`https://verify.walletconnect.org`),t}),Wm(this,`fetchPublicKey`,async()=>{try{this.logger.debug(`fetching public key from: ${this.verifyUrlV3}`);let e=this.startAbortTimer(R.FIVE_SECONDS),t=await fetch(`${this.verifyUrlV3}/public-key`,{signal:this.abortController.signal});return clearTimeout(e),await t.json()}catch(e){this.logger.warn(e)}}),Wm(this,`persistPublicKey`,async e=>{this.logger.debug(`persisting public key to local storage`,e),await this.store.setItem(this.storeKey,e),this.publicKey=e}),Wm(this,`removePublicKey`,async()=>{this.logger.debug(`removing verify v2 public key from storage`),await this.store.removeItem(this.storeKey),this.publicKey=void 0}),Wm(this,`isValidJwtAttestation`,async e=>{let t=await this.getPublicKey();try{if(t)return this.validateAttestation(e,t)}catch(e){this.logger.error(e),this.logger.warn(`error validating attestation`)}let n=await this.fetchAndPersistPublicKey();try{if(n)return this.validateAttestation(e,n)}catch(e){this.logger.error(e),this.logger.warn(`error validating attestation`)}}),Wm(this,`getPublicKey`,async()=>this.publicKey?this.publicKey:await this.fetchAndPersistPublicKey()),Wm(this,`fetchAndPersistPublicKey`,async()=>{if(this.fetchPromise)return await this.fetchPromise,this.publicKey;this.fetchPromise=new Promise(async e=>{let t=await this.fetchPublicKey();t&&(await this.persistPublicKey(t),e(t))});let e=await this.fetchPromise;return this.fetchPromise=void 0,e}),Wm(this,`validateAttestation`,(e,t)=>{let n=al(e,t.publicKey),r={hasExpired:(0,R.toMiliseconds)(n.exp)<Date.now(),payload:n};if(r.hasExpired)throw this.logger.warn(`resolve: jwt attestation expired`),Error(`JWT attestation expired`);return{origin:r.payload.origin,isScam:r.payload.isScam,isVerified:r.payload.isVerified}}),this.logger=M(t,this.name),this.abortController=new AbortController,this.isDevEnv=pa(),this.init()}get storeKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+`//verify:public:key`}get context(){return pe(this.logger)}startAbortTimer(e){return this.abortController=new AbortController,setTimeout(()=>this.abortController.abort(),(0,R.toMiliseconds)(e))}},Km=Object.defineProperty,qm=(e,t,n)=>t in e?Km(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Jm=(e,t,n)=>qm(e,typeof t==`symbol`?t:t+``,n),Ym=class extends bt{constructor(e,t){super(e,t),this.projectId=e,this.logger=t,Jm(this,`context`,qu),Jm(this,`registerDeviceToken`,async e=>{let{clientId:t,token:n,notificationType:r,enableEncrypted:i=!1}=e,a=`${Ju}/${this.projectId}/clients`;await fetch(a,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({client_id:t,type:r,token:n,always_raw:i})})}),this.logger=M(t,this.context)}},Xm=Object.defineProperty,Zm=Object.getOwnPropertySymbols,Qm=Object.prototype.hasOwnProperty,$m=Object.prototype.propertyIsEnumerable,eh=(e,t,n)=>t in e?Xm(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,th=(e,t)=>{for(var n in t||={})Qm.call(t,n)&&eh(e,n,t[n]);if(Zm)for(var n of Zm(t))$m.call(t,n)&&eh(e,n,t[n]);return e},nh=(e,t,n)=>eh(e,typeof t==`symbol`?t:t+``,n),rh=class extends xt{constructor(e,t,n=!0){super(e,t,n),this.core=e,this.logger=t,nh(this,`context`,nd),nh(this,`storagePrefix`,_u),nh(this,`storageVersion`,td),nh(this,`events`,new Map),nh(this,`shouldPersist`,!1),nh(this,`init`,async()=>{if(!pa())try{let e={eventId:fa(),timestamp:Date.now(),domain:this.getAppDomain(),props:{event:`INIT`,type:``,properties:{client_id:await this.core.crypto.getClientId(),user_agent:qi(this.core.relayer.protocol,this.core.relayer.version,Au)}}};await this.sendEvent([e])}catch(e){this.logger.warn(e)}}),nh(this,`createEvent`,e=>{let{event:t=`ERROR`,type:n=``,properties:{topic:r,trace:i}}=e,a=fa(),o=this.core.projectId||``,s=th({eventId:a,timestamp:Date.now(),props:{event:t,type:n,properties:{topic:r,trace:i}},bundleId:o,domain:this.getAppDomain()},this.setMethods(a));return this.telemetryEnabled&&(this.events.set(a,s),this.shouldPersist=!0),s}),nh(this,`getEvent`,e=>{let{eventId:t,topic:n}=e;if(t)return this.events.get(t);let r=Array.from(this.events.values()).find(e=>e.props.properties.topic===n);if(r)return th(th({},r),this.setMethods(r.eventId))}),nh(this,`deleteEvent`,e=>{let{eventId:t}=e;this.events.delete(t),this.shouldPersist=!0}),nh(this,`setEventListeners`,()=>{this.core.heartbeat.on(re.pulse,async()=>{this.shouldPersist&&await this.persist(),this.events.forEach(e=>{(0,R.fromMiliseconds)(Date.now())-(0,R.fromMiliseconds)(e.timestamp)>86400&&(this.events.delete(e.eventId),this.shouldPersist=!0)})})}),nh(this,`setMethods`,e=>({addTrace:t=>this.addTrace(e,t),setError:t=>this.setError(e,t)})),nh(this,`addTrace`,(e,t)=>{let n=this.events.get(e);n&&(n.props.properties.trace.push(t),this.events.set(e,n),this.shouldPersist=!0)}),nh(this,`setError`,(e,t)=>{let n=this.events.get(e);n&&(n.props.type=t,n.timestamp=Date.now(),this.events.set(e,n),this.shouldPersist=!0)}),nh(this,`persist`,async()=>{await this.core.storage.setItem(this.storageKey,Array.from(this.events.values())),this.shouldPersist=!1}),nh(this,`restore`,async()=>{try{let e=await this.core.storage.getItem(this.storageKey)||[];if(!e.length)return;e.forEach(e=>{this.events.set(e.eventId,th(th({},e),this.setMethods(e.eventId)))})}catch(e){this.logger.warn(e)}}),nh(this,`submit`,async()=>{if(!this.telemetryEnabled||this.events.size===0)return;let e=[];for(let[t,n]of this.events)n.props.type&&e.push(n);if(e.length!==0)try{if((await this.sendEvent(e)).ok)for(let t of e)this.events.delete(t.eventId),this.shouldPersist=!0}catch(e){this.logger.warn(e)}}),nh(this,`sendEvent`,async e=>{let t=this.getAppDomain()?``:`&sp=desktop`;return await fetch(`${rd}?projectId=${this.core.projectId}&st=events_sdk&sv=js-${Au}${t}`,{method:`POST`,body:JSON.stringify(e)})}),nh(this,`getAppDomain`,()=>Wi().url),this.logger=M(t,this.context),this.telemetryEnabled=n,n?this.restore().then(async()=>{await this.submit(),this.setEventListeners()}):this.persist()}get storageKey(){return this.storagePrefix+this.storageVersion+this.core.customStoragePrefix+`//`+this.context}},ih=Object.defineProperty,ah=Object.getOwnPropertySymbols,oh=Object.prototype.hasOwnProperty,sh=Object.prototype.propertyIsEnumerable,ch=(e,t,n)=>t in e?ih(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,lh=(e,t)=>{for(var n in t||={})oh.call(t,n)&&ch(e,n,t[n]);if(ah)for(var n of ah(t))sh.call(t,n)&&ch(e,n,t[n]);return e},Y=(e,t,n)=>ch(e,typeof t==`symbol`?t:t+``,n),uh=class e extends ct{constructor(e){var t;super(e),Y(this,`protocol`,`wc`),Y(this,`version`,2),Y(this,`name`,gu),Y(this,`relayUrl`),Y(this,`projectId`),Y(this,`customStoragePrefix`),Y(this,`events`,new it.EventEmitter),Y(this,`logger`),Y(this,`heartbeat`),Y(this,`relayer`),Y(this,`crypto`),Y(this,`storage`),Y(this,`history`),Y(this,`expirer`),Y(this,`pairing`),Y(this,`verify`),Y(this,`echoClient`),Y(this,`linkModeSupportedApps`),Y(this,`eventClient`),Y(this,`initialized`,!1),Y(this,`logChunkController`),Y(this,`on`,(e,t)=>this.events.on(e,t)),Y(this,`once`,(e,t)=>this.events.once(e,t)),Y(this,`off`,(e,t)=>this.events.off(e,t)),Y(this,`removeListener`,(e,t)=>this.events.removeListener(e,t)),Y(this,`dispatchEnvelope`,({topic:e,message:t,sessionExists:n})=>{if(!e||!t)return;let r={topic:e,message:t,publishedAt:Date.now(),transportType:G.link_mode};this.relayer.onLinkMessageEvent(r,{sessionExists:n})}),this.projectId=e?.projectId,this.relayUrl=e?.relayUrl||`wss://relay.walletconnect.org`,this.customStoragePrefix=e!=null&&e.customStoragePrefix?`:${e.customStoragePrefix}`:``;let{logger:n,chunkLoggerController:r}=Me({opts:te({level:typeof e?.logger==`string`&&e.logger?e.logger:vu.logger,name:gu}),maxSizeInBytes:e?.maxLogBlobSizeInBytes,loggerOverride:e?.logger});this.logChunkController=r,(t=this.logChunkController)!=null&&t.downloadLogsBlobInBrowser&&(window.downloadLogsBlobInBrowser=async()=>{var e,t;(e=this.logChunkController)!=null&&e.downloadLogsBlobInBrowser&&((t=this.logChunkController)==null||t.downloadLogsBlobInBrowser({clientId:await this.crypto.getClientId()}))}),this.logger=M(n,this.name),this.heartbeat=new Ee,this.crypto=new Qf(this,this.logger,e?.keychain),this.history=new Lm(this,this.logger),this.expirer=new Vm(this,this.logger),this.storage=e!=null&&e.storage?e.storage:new he(lh(lh({},yu),e?.storageOptions)),this.relayer=new Vp({core:this,logger:this.logger,relayUrl:this.relayUrl,projectId:this.projectId}),this.pairing=new Nm(this,this.logger),this.verify=new Gm(this,this.logger,this.storage),this.echoClient=new Ym(this.projectId||``,this.logger),this.linkModeSupportedApps=[],this.eventClient=new rh(this,this.logger,e?.telemetryEnabled)}static async init(t){let n=new e(t);await n.initialize();let r=await n.crypto.getClientId();return await n.storage.setItem(Mu,r),n}get context(){return pe(this.logger)}async start(){this.initialized||await this.initialize()}async getLogsBlob(){return this.logChunkController?.logsToBlob({clientId:await this.crypto.getClientId()})}async addLinkModeSupportedApp(e){this.linkModeSupportedApps.includes(e)||(this.linkModeSupportedApps.push(e),await this.storage.setItem(`WALLETCONNECT_LINK_MODE_APPS`,this.linkModeSupportedApps))}async initialize(){this.logger.trace(`Initialized`);try{await this.crypto.init(),await this.history.init(),await this.expirer.init(),await this.relayer.init(),await this.heartbeat.init(),await this.pairing.init(),this.linkModeSupportedApps=await this.storage.getItem(`WALLETCONNECT_LINK_MODE_APPS`)||[],this.initialized=!0,this.logger.info(`Core Initialization Success`)}catch(e){throw this.logger.warn(`Core Initialization Failure at epoch ${Date.now()}`,e),this.logger.error(e.message),e}}},dh=`client`,fh=`wc@2:${dh}:`,ph={name:dh,logger:`error`,controller:!1,relayUrl:`wss://relay.walletconnect.org`},mh=`WALLETCONNECT_DEEPLINK_CHOICE`,hh=`proposal`;R.THIRTY_DAYS;var gh=`Proposal expired`,_h=`session`,vh=R.SEVEN_DAYS,yh=`engine`,bh={wc_sessionPropose:{req:{ttl:R.FIVE_MINUTES,prompt:!0,tag:1100},res:{ttl:R.FIVE_MINUTES,prompt:!1,tag:1101},reject:{ttl:R.FIVE_MINUTES,prompt:!1,tag:1120},autoReject:{ttl:R.FIVE_MINUTES,prompt:!1,tag:1121}},wc_sessionSettle:{req:{ttl:R.FIVE_MINUTES,prompt:!1,tag:1102},res:{ttl:R.FIVE_MINUTES,prompt:!1,tag:1103}},wc_sessionUpdate:{req:{ttl:R.ONE_DAY,prompt:!1,tag:1104},res:{ttl:R.ONE_DAY,prompt:!1,tag:1105}},wc_sessionExtend:{req:{ttl:R.ONE_DAY,prompt:!1,tag:1106},res:{ttl:R.ONE_DAY,prompt:!1,tag:1107}},wc_sessionRequest:{req:{ttl:R.FIVE_MINUTES,prompt:!0,tag:1108},res:{ttl:R.FIVE_MINUTES,prompt:!1,tag:1109}},wc_sessionEvent:{req:{ttl:R.FIVE_MINUTES,prompt:!0,tag:1110},res:{ttl:R.FIVE_MINUTES,prompt:!1,tag:1111}},wc_sessionDelete:{req:{ttl:R.ONE_DAY,prompt:!1,tag:1112},res:{ttl:R.ONE_DAY,prompt:!1,tag:1113}},wc_sessionPing:{req:{ttl:R.ONE_DAY,prompt:!1,tag:1114},res:{ttl:R.ONE_DAY,prompt:!1,tag:1115}},wc_sessionAuthenticate:{req:{ttl:R.ONE_HOUR,prompt:!0,tag:1116},res:{ttl:R.ONE_HOUR,prompt:!1,tag:1117},reject:{ttl:R.FIVE_MINUTES,prompt:!1,tag:1118},autoReject:{ttl:R.FIVE_MINUTES,prompt:!1,tag:1119}}},xh={min:R.FIVE_MINUTES,max:R.SEVEN_DAYS},Sh={idle:`IDLE`,active:`ACTIVE`},Ch={eth_sendTransaction:{key:``},eth_sendRawTransaction:{key:``},wallet_sendCalls:{key:``},solana_signTransaction:{key:`signature`},solana_signAllTransactions:{key:`transactions`},solana_signAndSendTransaction:{key:`signature`}},wh=`request`,Th=[`wc_sessionPropose`,`wc_sessionRequest`,`wc_authRequest`,`wc_sessionAuthenticate`],Eh=`auth`,Dh=`authKeys`,Oh=`pairingTopics`,kh=`requests`,Ah=`wc@1.5:${Eh}:`,jh=`${Ah}:PUB_KEY`,Mh=Object.defineProperty,Nh=Object.defineProperties,Ph=Object.getOwnPropertyDescriptors,Fh=Object.getOwnPropertySymbols,Ih=Object.prototype.hasOwnProperty,Lh=Object.prototype.propertyIsEnumerable,Rh=(e,t,n)=>t in e?Mh(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,X=(e,t)=>{for(var n in t||={})Ih.call(t,n)&&Rh(e,n,t[n]);if(Fh)for(var n of Fh(t))Lh.call(t,n)&&Rh(e,n,t[n]);return e},zh=(e,t)=>Nh(e,Ph(t)),Z=(e,t,n)=>Rh(e,typeof t==`symbol`?t:t+``,n),Bh=class extends Et{constructor(e){super(e),Z(this,`name`,yh),Z(this,`events`,new it.default),Z(this,`initialized`,!1),Z(this,`requestQueue`,{state:Sh.idle,queue:[]}),Z(this,`sessionRequestQueue`,{state:Sh.idle,queue:[]}),Z(this,`requestQueueDelay`,R.ONE_SECOND),Z(this,`expectedPairingMethodMap`,new Map),Z(this,`recentlyDeletedMap`,new Map),Z(this,`recentlyDeletedLimit`,200),Z(this,`relayMessageCache`,[]),Z(this,`pendingSessions`,new Map),Z(this,`init`,async()=>{this.initialized||(await this.cleanup(),this.registerRelayerEvents(),this.registerExpirerEvents(),this.registerPairingEvents(),await this.registerLinkModeListeners(),this.client.core.pairing.register({methods:Object.keys(bh)}),this.initialized=!0,setTimeout(async()=>{await this.processPendingMessageEvents(),this.sessionRequestQueue.queue=this.getPendingSessionRequests(),this.processSessionRequestQueue()},(0,R.toMiliseconds)(this.requestQueueDelay)))}),Z(this,`connect`,async e=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();let t=zh(X({},e),{requiredNamespaces:e.requiredNamespaces||{},optionalNamespaces:e.optionalNamespaces||{}});await this.isValidConnect(t);let{pairingTopic:n,requiredNamespaces:r,optionalNamespaces:i,sessionProperties:a,scopedProperties:o,relays:s}=t,c=n,l,u=!1;try{if(c){let e=this.client.core.pairing.pairings.get(c);this.client.logger.warn(`connect() with existing pairing topic is deprecated and will be removed in the next major release.`),u=e.active}}catch(e){throw this.client.logger.error(`connect() -> pairing.get(${c}) failed`),e}if(!c||!u){let{topic:e,uri:t}=await this.client.core.pairing.create();c=e,l=t}if(!c){let{message:e}=U(`NO_MATCHING_KEY`,`connect() pairing topic: ${c}`);throw Error(e)}let d=await this.client.core.crypto.generateKeyPair(),f=bh.wc_sessionPropose.req.ttl||R.FIVE_MINUTES,p=ia(f),m=zh(X(X({requiredNamespaces:r,optionalNamespaces:i,relays:s??[{protocol:`irn`}],proposer:{publicKey:d,metadata:this.client.metadata},expiryTimestamp:p,pairingTopic:c},a&&{sessionProperties:a}),o&&{scopedProperties:o}),{id:F()}),h=V(`session_connect`,m.id),{reject:g,resolve:_,done:v}=Qi(f,gh),y=({id:e})=>{e===m.id&&(this.client.events.off(`proposal_expire`,y),this.pendingSessions.delete(m.id),this.events.emit(h,{error:{message:`Proposal expired`,code:0}}))};return this.client.events.on(`proposal_expire`,y),this.events.once(h,({error:e,session:t})=>{this.client.events.off(`proposal_expire`,y),e?g(e):t&&_(t)}),await this.sendRequest({topic:c,method:`wc_sessionPropose`,params:m,throwOnFailedPublish:!0,clientRpcId:m.id}),await this.setProposal(m.id,m),{uri:l,approval:v}}),Z(this,`pair`,async e=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{return await this.client.core.pairing.pair(e)}catch(e){throw this.client.logger.error(`pair() failed`),e}}),Z(this,`approve`,async e=>{let t=this.client.core.eventClient.createEvent({properties:{topic:(e?.id)?.toString(),trace:[Zu.session_approve_started]}});try{this.isInitialized(),await this.confirmOnlineStateOrThrow()}catch(e){throw t.setError(Qu.no_internet_connection),e}try{await this.isValidProposalId(e?.id)}catch(n){throw this.client.logger.error(`approve() -> proposal.get(${e?.id}) failed`),t.setError(Qu.proposal_not_found),n}try{await this.isValidApprove(e)}catch(e){throw this.client.logger.error(`approve() -> isValidApprove() failed`),t.setError(Qu.session_approve_namespace_validation_failure),e}let{id:n,relayProtocol:r,namespaces:i,sessionProperties:a,scopedProperties:o,sessionConfig:s}=e,c=this.client.proposal.get(n);this.client.core.eventClient.deleteEvent({eventId:t.eventId});let{pairingTopic:l,proposer:u,requiredNamespaces:d,optionalNamespaces:f}=c,p=this.client.core.eventClient?.getEvent({topic:l});p||=this.client.core.eventClient?.createEvent({type:Zu.session_approve_started,properties:{topic:l,trace:[Zu.session_approve_started,Zu.session_namespaces_validation_success]}});let m=await this.client.core.crypto.generateKeyPair(),h=u.publicKey,g=await this.client.core.crypto.generateSharedKey(m,h),_=X(X(X({relay:{protocol:r??`irn`},namespaces:i,controller:{publicKey:m,metadata:this.client.metadata},expiry:ia(vh)},a&&{sessionProperties:a}),o&&{scopedProperties:o}),s&&{sessionConfig:s}),v=G.relay;p.addTrace(Zu.subscribing_session_topic);try{await this.client.core.relayer.subscribe(g,{transportType:v})}catch(e){throw p.setError(Qu.subscribe_session_topic_failure),e}p.addTrace(Zu.subscribe_session_topic_success);let y=zh(X({},_),{topic:g,requiredNamespaces:d,optionalNamespaces:f,pairingTopic:l,acknowledged:!1,self:_.controller,peer:{publicKey:u.publicKey,metadata:u.metadata},controller:m,transportType:G.relay});await this.client.session.set(g,y),p.addTrace(Zu.store_session);try{p.addTrace(Zu.publishing_session_settle),await this.sendRequest({topic:g,method:`wc_sessionSettle`,params:_,throwOnFailedPublish:!0}).catch(e=>{throw p?.setError(Qu.session_settle_publish_failure),e}),p.addTrace(Zu.session_settle_publish_success),p.addTrace(Zu.publishing_session_approve),await this.sendResult({id:n,topic:l,result:{relay:{protocol:r??`irn`},responderPublicKey:m},throwOnFailedPublish:!0}).catch(e=>{throw p?.setError(Qu.session_approve_publish_failure),e}),p.addTrace(Zu.session_approve_publish_success)}catch(e){throw this.client.logger.error(e),this.client.session.delete(g,W(`USER_DISCONNECTED`)),await this.client.core.relayer.unsubscribe(g),e}return this.client.core.eventClient.deleteEvent({eventId:p.eventId}),await this.client.core.pairing.updateMetadata({topic:l,metadata:u.metadata}),await this.client.proposal.delete(n,W(`USER_DISCONNECTED`)),await this.client.core.pairing.activate({topic:l}),await this.setExpiry(g,ia(vh)),{topic:g,acknowledged:()=>Promise.resolve(this.client.session.get(g))}}),Z(this,`reject`,async e=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{await this.isValidReject(e)}catch(e){throw this.client.logger.error(`reject() -> isValidReject() failed`),e}let{id:t,reason:n}=e,r;try{r=this.client.proposal.get(t).pairingTopic}catch(e){throw this.client.logger.error(`reject() -> proposal.get(${t}) failed`),e}r&&(await this.sendError({id:t,topic:r,error:n,rpcOpts:bh.wc_sessionPropose.reject}),await this.client.proposal.delete(t,W(`USER_DISCONNECTED`)))}),Z(this,`update`,async e=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{await this.isValidUpdate(e)}catch(e){throw this.client.logger.error(`update() -> isValidUpdate() failed`),e}let{topic:t,namespaces:n}=e,{done:r,resolve:i,reject:a}=Qi(),o=F(),s=fe().toString(),c=this.client.session.get(t).namespaces;return this.events.once(V(`session_update`,o),({error:e})=>{e?a(e):i()}),await this.client.session.update(t,{namespaces:n}),await this.sendRequest({topic:t,method:`wc_sessionUpdate`,params:{namespaces:n},throwOnFailedPublish:!0,clientRpcId:o,relayRpcId:s}).catch(e=>{this.client.logger.error(e),this.client.session.update(t,{namespaces:c}),a(e)}),{acknowledged:r}}),Z(this,`extend`,async e=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{await this.isValidExtend(e)}catch(e){throw this.client.logger.error(`extend() -> isValidExtend() failed`),e}let{topic:t}=e,n=F(),{done:r,resolve:i,reject:a}=Qi();return this.events.once(V(`session_extend`,n),({error:e})=>{e?a(e):i()}),await this.setExpiry(t,ia(vh)),this.sendRequest({topic:t,method:`wc_sessionExtend`,params:{},clientRpcId:n,throwOnFailedPublish:!0}).catch(e=>{a(e)}),{acknowledged:r}}),Z(this,`request`,async e=>{this.isInitialized();try{await this.isValidRequest(e)}catch(e){throw this.client.logger.error(`request() -> isValidRequest() failed`),e}let{chainId:t,request:n,topic:r,expiry:i=bh.wc_sessionRequest.req.ttl}=e,a=this.client.session.get(r);a?.transportType===G.relay&&await this.confirmOnlineStateOrThrow();let o=F(),s=fe().toString(),{done:c,resolve:l,reject:u}=Qi(i,`Request expired. Please try again.`);this.events.once(V(`session_request`,o),({error:e,result:t})=>{e?u(e):l(t)});let d=`wc_sessionRequest`,f=this.getAppLinkIfEnabled(a.peer.metadata,a.transportType);if(f)return await this.sendRequest({clientRpcId:o,relayRpcId:s,topic:r,method:d,params:{request:zh(X({},n),{expiryTimestamp:ia(i)}),chainId:t},expiry:i,throwOnFailedPublish:!0,appLink:f}).catch(e=>u(e)),this.client.events.emit(`session_request_sent`,{topic:r,request:n,chainId:t,id:o}),await c();let p={request:zh(X({},n),{expiryTimestamp:ia(i)}),chainId:t},m=this.shouldSetTVF(d,p);return await Promise.all([new Promise(async e=>{await this.sendRequest(X({clientRpcId:o,relayRpcId:s,topic:r,method:d,params:p,expiry:i,throwOnFailedPublish:!0},m&&{tvf:this.getTVFParams(o,p)})).catch(e=>u(e)),this.client.events.emit(`session_request_sent`,{topic:r,request:n,chainId:t,id:o}),e()}),new Promise(async e=>{var t;(t=a.sessionConfig)!=null&&t.disableDeepLink||await sa({id:o,topic:r,wcDeepLink:await ua(this.client.core.storage,mh)}),e()}),c()]).then(e=>e[2])}),Z(this,`respond`,async e=>{this.isInitialized(),await this.isValidRespond(e);let{topic:t,response:n}=e,{id:r}=n,i=this.client.session.get(t);i.transportType===G.relay&&await this.confirmOnlineStateOrThrow();let a=this.getAppLinkIfEnabled(i.peer.metadata,i.transportType);Ae(n)?await this.sendResult({id:r,topic:t,result:n.result,throwOnFailedPublish:!0,appLink:a}):Oe(n)&&await this.sendError({id:r,topic:t,error:n.error,appLink:a}),this.cleanupAfterResponse(e)}),Z(this,`ping`,async e=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{await this.isValidPing(e)}catch(e){throw this.client.logger.error(`ping() -> isValidPing() failed`),e}let{topic:t}=e;if(this.client.session.keys.includes(t)){let e=F(),n=fe().toString(),{done:r,resolve:i,reject:a}=Qi();this.events.once(V(`session_ping`,e),({error:e})=>{e?a(e):i()}),await Promise.all([this.sendRequest({topic:t,method:`wc_sessionPing`,params:{},throwOnFailedPublish:!0,clientRpcId:e,relayRpcId:n}),r()])}else this.client.core.pairing.pairings.keys.includes(t)&&(this.client.logger.warn(`ping() on pairing topic is deprecated and will be removed in the next major release.`),await this.client.core.pairing.ping({topic:t}))}),Z(this,`emit`,async e=>{this.isInitialized(),await this.confirmOnlineStateOrThrow(),await this.isValidEmit(e);let{topic:t,event:n,chainId:r}=e,i=fe().toString(),a=F();await this.sendRequest({topic:t,method:`wc_sessionEvent`,params:{event:n,chainId:r},throwOnFailedPublish:!0,relayRpcId:i,clientRpcId:a})}),Z(this,`disconnect`,async e=>{this.isInitialized(),await this.confirmOnlineStateOrThrow(),await this.isValidDisconnect(e);let{topic:t}=e;if(this.client.session.keys.includes(t))await this.sendRequest({topic:t,method:`wc_sessionDelete`,params:W(`USER_DISCONNECTED`),throwOnFailedPublish:!0}),await this.deleteSession({topic:t,emitEvent:!1});else if(this.client.core.pairing.pairings.keys.includes(t))await this.client.core.pairing.disconnect({topic:t});else{let{message:e}=U(`MISMATCHED_TOPIC`,`Session or pairing topic not found: ${t}`);throw Error(e)}}),Z(this,`find`,e=>(this.isInitialized(),this.client.session.getAll().filter(t=>kl(t,e)))),Z(this,`getPendingSessionRequests`,()=>this.client.pendingRequest.getAll()),Z(this,`authenticate`,async(e,t)=>{this.isInitialized(),this.isValidAuthenticate(e);let n=t&&this.client.core.linkModeSupportedApps.includes(t)&&this.client.metadata.redirect?.linkMode,r=n?G.link_mode:G.relay;r===G.relay&&await this.confirmOnlineStateOrThrow();let{chains:i,statement:a=``,uri:o,domain:s,nonce:c,type:l,exp:u,nbf:d,methods:f=[],expiry:p}=e,m=[...e.resources||[]],{topic:h,uri:g}=await this.client.core.pairing.create({methods:[`wc_sessionAuthenticate`],transportType:r});this.client.logger.info({message:`Generated new pairing`,pairing:{topic:h,uri:g}});let _=await this.client.core.crypto.generateKeyPair(),v=Hc(_);if(await Promise.all([this.client.auth.authKeys.set(jh,{responseTopic:v,publicKey:_}),this.client.auth.pairingTopics.set(v,{topic:v,pairingTopic:h})]),await this.client.core.relayer.subscribe(v,{transportType:r}),this.client.logger.info(`sending request to new pairing topic: ${h}`),f.length>0){let{namespace:e}=Ni(i[0]),t=Ro(e,`request`,f);Go(m)&&(t=Bo(t,m.pop())),m.push(t)}let y=p&&p>bh.wc_sessionAuthenticate.req.ttl?p:bh.wc_sessionAuthenticate.req.ttl,b={authPayload:{type:l??`caip122`,chains:i,statement:a,aud:o,domain:s,version:`1`,nonce:c,iat:new Date().toISOString(),exp:u,nbf:d,resources:m},requester:{publicKey:_,metadata:this.client.metadata},expiryTimestamp:ia(y)},ee={requiredNamespaces:{},optionalNamespaces:{eip155:{chains:i,methods:[...new Set([`personal_sign`,...f])],events:[`chainChanged`,`accountsChanged`]}},relays:[{protocol:`irn`}],pairingTopic:h,proposer:{publicKey:_,metadata:this.client.metadata},expiryTimestamp:ia(bh.wc_sessionPropose.req.ttl),id:F()},{done:x,resolve:S,reject:C}=Qi(y,`Request expired`),w=F(),T=V(`session_connect`,ee.id),E=V(`session_request`,w),D=async({error:e,session:t})=>{this.events.off(E,O),e?C(e):t&&S({session:t})},O=async e=>{var n,i,a;if(await this.deletePendingAuthRequest(w,{message:`fulfilled`,code:0}),e.error){let t=W(`WC_METHOD_UNSUPPORTED`,`wc_sessionAuthenticate`);return e.error.code===t.code?void 0:(this.events.off(T,D),C(e.error.message))}await this.deleteProposal(ee.id),this.events.off(T,D);let{cacaos:o,responder:s}=e.result,c=[],l=[];for(let e of o){await ko({cacao:e,projectId:this.client.core.projectId})||(this.client.logger.error(e,`Signature verification failed`),C(W(`SESSION_SETTLEMENT_FAILED`,`Signature verification failed`)));let{p:t}=e,n=Go(t.resources),r=[Do(t.iss)],i=Oo(t.iss);if(n){let e=Uo(n),t=Wo(n);c.push(...e),r.push(...t)}for(let e of r)l.push(`${e}:${i}`)}let u=await this.client.core.crypto.generateSharedKey(_,s.publicKey),d;c.length>0&&(d={topic:u,acknowledged:!0,self:{publicKey:_,metadata:this.client.metadata},peer:s,controller:s.publicKey,expiry:ia(vh),requiredNamespaces:{},optionalNamespaces:{},relay:{protocol:`irn`},pairingTopic:h,namespaces:xl([...new Set(c)],[...new Set(l)]),transportType:r},await this.client.core.relayer.subscribe(u,{transportType:r}),await this.client.session.set(u,d),h&&await this.client.core.pairing.updateMetadata({topic:h,metadata:s.metadata}),d=this.client.session.get(u)),(n=this.client.metadata.redirect)!=null&&n.linkMode&&(i=s.metadata.redirect)!=null&&i.linkMode&&(a=s.metadata.redirect)!=null&&a.universal&&t&&(this.client.core.addLinkModeSupportedApp(s.metadata.redirect.universal),this.client.session.update(u,{transportType:G.link_mode})),S({auths:o,session:d})};this.events.once(T,D),this.events.once(E,O);let k;try{if(n){let e=N(`wc_sessionAuthenticate`,b,w);this.client.core.history.set(h,e),k=pl(t,h,await this.client.core.crypto.encode(``,e,{type:2,encoding:Nc}))}else await Promise.all([this.sendRequest({topic:h,method:`wc_sessionAuthenticate`,params:b,expiry:e.expiry,throwOnFailedPublish:!0,clientRpcId:w}),this.sendRequest({topic:h,method:`wc_sessionPropose`,params:ee,expiry:bh.wc_sessionPropose.req.ttl,throwOnFailedPublish:!0,clientRpcId:ee.id})])}catch(e){throw this.events.off(T,D),this.events.off(E,O),e}return await this.setProposal(ee.id,ee),await this.setAuthRequest(w,{request:zh(X({},b),{verifyContext:{}}),pairingTopic:h,transportType:r}),{uri:k??g,response:x}}),Z(this,`approveSessionAuthenticate`,async e=>{let{id:t,auths:n}=e,r=this.client.core.eventClient.createEvent({properties:{topic:t.toString(),trace:[$u.authenticated_session_approve_started]}});try{this.isInitialized()}catch(e){throw r.setError(ed.no_internet_connection),e}let i=this.getPendingAuthRequest(t);if(!i)throw r.setError(ed.authenticated_session_pending_request_not_found),Error(`Could not find pending auth request with id ${t}`);let a=i.transportType||G.relay;a===G.relay&&await this.confirmOnlineStateOrThrow();let o=i.requester.publicKey,s=await this.client.core.crypto.generateKeyPair(),c=Hc(o),l={type:1,receiverPublicKey:o,senderPublicKey:s},u=[],d=[];for(let e of n){if(!await ko({cacao:e,projectId:this.client.core.projectId})){r.setError(ed.invalid_cacao);let e=W(`SESSION_SETTLEMENT_FAILED`,`Signature verification failed`);throw await this.sendError({id:t,topic:c,error:e,encodeOpts:l}),Error(e.message)}r.addTrace($u.cacaos_verified);let{p:n}=e,i=Go(n.resources),a=[Do(n.iss)],o=Oo(n.iss);if(i){let e=Uo(i),t=Wo(i);u.push(...e),a.push(...t)}for(let e of a)d.push(`${e}:${o}`)}let f=await this.client.core.crypto.generateSharedKey(s,o);r.addTrace($u.create_authenticated_session_topic);let p;if(u?.length>0){p={topic:f,acknowledged:!0,self:{publicKey:s,metadata:this.client.metadata},peer:{publicKey:o,metadata:i.requester.metadata},controller:o,expiry:ia(vh),authentication:n,requiredNamespaces:{},optionalNamespaces:{},relay:{protocol:`irn`},pairingTopic:i.pairingTopic,namespaces:xl([...new Set(u)],[...new Set(d)]),transportType:a},r.addTrace($u.subscribing_authenticated_session_topic);try{await this.client.core.relayer.subscribe(f,{transportType:a})}catch(e){throw r.setError(ed.subscribe_authenticated_session_topic_failure),e}r.addTrace($u.subscribe_authenticated_session_topic_success),await this.client.session.set(f,p),r.addTrace($u.store_authenticated_session),await this.client.core.pairing.updateMetadata({topic:i.pairingTopic,metadata:i.requester.metadata})}r.addTrace($u.publishing_authenticated_session_approve);try{await this.sendResult({topic:c,id:t,result:{cacaos:n,responder:{publicKey:s,metadata:this.client.metadata}},encodeOpts:l,throwOnFailedPublish:!0,appLink:this.getAppLinkIfEnabled(i.requester.metadata,a)})}catch(e){throw r.setError(ed.authenticated_session_approve_publish_failure),e}return await this.client.auth.requests.delete(t,{message:`fulfilled`,code:0}),await this.client.core.pairing.activate({topic:i.pairingTopic}),this.client.core.eventClient.deleteEvent({eventId:r.eventId}),{session:p}}),Z(this,`rejectSessionAuthenticate`,async e=>{this.isInitialized();let{id:t,reason:n}=e,r=this.getPendingAuthRequest(t);if(!r)throw Error(`Could not find pending auth request with id ${t}`);r.transportType===G.relay&&await this.confirmOnlineStateOrThrow();let i=r.requester.publicKey,a=await this.client.core.crypto.generateKeyPair(),o=Hc(i),s={type:1,receiverPublicKey:i,senderPublicKey:a};await this.sendError({id:t,topic:o,error:n,encodeOpts:s,rpcOpts:bh.wc_sessionAuthenticate.reject,appLink:this.getAppLinkIfEnabled(r.requester.metadata,r.transportType)}),await this.client.auth.requests.delete(t,{message:`rejected`,code:0}),await this.client.proposal.delete(t,W(`USER_DISCONNECTED`))}),Z(this,`formatAuthMessage`,e=>{this.isInitialized();let{request:t,iss:n}=e;return Ao(t,n)}),Z(this,`processRelayMessageCache`,()=>{setTimeout(async()=>{if(this.relayMessageCache.length!==0)for(;this.relayMessageCache.length>0;)try{let e=this.relayMessageCache.shift();e&&await this.onRelayMessage(e)}catch(e){this.client.logger.error(e)}},50)}),Z(this,`cleanupDuplicatePairings`,async e=>{if(e.pairingTopic)try{let t=this.client.core.pairing.pairings.get(e.pairingTopic),n=this.client.core.pairing.pairings.getAll().filter(n=>n.peerMetadata?.url&&n.peerMetadata?.url===e.peer.metadata.url&&n.topic&&n.topic!==t.topic);if(n.length===0)return;this.client.logger.info(`Cleaning up ${n.length} duplicate pairing(s)`),await Promise.all(n.map(e=>this.client.core.pairing.disconnect({topic:e.topic}))),this.client.logger.info(`Duplicate pairings clean up finished`)}catch(e){this.client.logger.error(e)}}),Z(this,`deleteSession`,async e=>{let{topic:t,expirerHasDeleted:n=!1,emitEvent:r=!0,id:i=0}=e,{self:a}=this.client.session.get(t);await this.client.core.relayer.unsubscribe(t),await this.client.session.delete(t,W(`USER_DISCONNECTED`)),this.addToRecentlyDeleted(t,`session`),this.client.core.crypto.keychain.has(a.publicKey)&&await this.client.core.crypto.deleteKeyPair(a.publicKey),this.client.core.crypto.keychain.has(t)&&await this.client.core.crypto.deleteSymKey(t),n||this.client.core.expirer.del(t),this.client.core.storage.removeItem(mh).catch(e=>this.client.logger.warn(e)),this.getPendingSessionRequests().forEach(e=>{e.topic===t&&this.deletePendingSessionRequest(e.id,W(`USER_DISCONNECTED`))}),t===this.sessionRequestQueue.queue[0]?.topic&&(this.sessionRequestQueue.state=Sh.idle),r&&this.client.events.emit(`session_delete`,{id:i,topic:t})}),Z(this,`deleteProposal`,async(e,t)=>{if(t)try{let t=this.client.proposal.get(e);this.client.core.eventClient.getEvent({topic:t.pairingTopic})?.setError(Qu.proposal_expired)}catch{}await Promise.all([this.client.proposal.delete(e,W(`USER_DISCONNECTED`)),t?Promise.resolve():this.client.core.expirer.del(e)]),this.addToRecentlyDeleted(e,`proposal`)}),Z(this,`deletePendingSessionRequest`,async(e,t,n=!1)=>{await Promise.all([this.client.pendingRequest.delete(e,t),n?Promise.resolve():this.client.core.expirer.del(e)]),this.addToRecentlyDeleted(e,`request`),this.sessionRequestQueue.queue=this.sessionRequestQueue.queue.filter(t=>t.id!==e),n&&(this.sessionRequestQueue.state=Sh.idle,this.client.events.emit(`session_request_expire`,{id:e}))}),Z(this,`deletePendingAuthRequest`,async(e,t,n=!1)=>{await Promise.all([this.client.auth.requests.delete(e,t),n?Promise.resolve():this.client.core.expirer.del(e)])}),Z(this,`setExpiry`,async(e,t)=>{this.client.session.keys.includes(e)&&(this.client.core.expirer.set(e,t),await this.client.session.update(e,{expiry:t}))}),Z(this,`setProposal`,async(e,t)=>{this.client.core.expirer.set(e,ia(bh.wc_sessionPropose.req.ttl)),await this.client.proposal.set(e,t)}),Z(this,`setAuthRequest`,async(e,t)=>{let{request:n,pairingTopic:r,transportType:i=G.relay}=t;this.client.core.expirer.set(e,n.expiryTimestamp),await this.client.auth.requests.set(e,{authPayload:n.authPayload,requester:n.requester,expiryTimestamp:n.expiryTimestamp,id:e,pairingTopic:r,verifyContext:n.verifyContext,transportType:i})}),Z(this,`setPendingSessionRequest`,async e=>{let{id:t,topic:n,params:r,verifyContext:i}=e,a=r.request.expiryTimestamp||ia(bh.wc_sessionRequest.req.ttl);this.client.core.expirer.set(t,a),await this.client.pendingRequest.set(t,{id:t,topic:n,params:r,verifyContext:i})}),Z(this,`sendRequest`,async e=>{let{topic:t,method:n,params:r,expiry:i,relayRpcId:a,clientRpcId:o,throwOnFailedPublish:s,appLink:c,tvf:l}=e,u=N(n,r,o),d,f=!!c;try{let e=f?Nc:Mc;d=await this.client.core.crypto.encode(t,u,{encoding:e})}catch(e){throw await this.cleanup(),this.client.logger.error(`sendRequest() -> core.crypto.encode() for topic ${t} failed`),e}let p;if(Th.includes(n)){let e=Uc(JSON.stringify(u)),t=Uc(d);p=await this.client.core.verify.register({id:t,decryptedId:e})}let m=bh[n].req;if(m.attestation=p,i&&(m.ttl=i),a&&(m.id=a),this.client.core.history.set(t,u),f){let e=pl(c,t,d);await global.Linking.openURL(e,this.client.name)}else{let e=bh[n].req;i&&(e.ttl=i),a&&(e.id=a),e.tvf=zh(X({},l),{correlationId:u.id}),s?(e.internal=zh(X({},e.internal),{throwOnFailedPublish:!0}),await this.client.core.relayer.publish(t,d,e)):this.client.core.relayer.publish(t,d,e).catch(e=>this.client.logger.error(e))}return u.id}),Z(this,`sendResult`,async e=>{let{id:t,topic:n,result:r,throwOnFailedPublish:i,encodeOpts:a,appLink:o}=e,s=ke(t,r),c,l=o&&typeof(global==null?void 0:global.Linking)<`u`;try{let e=l?Nc:Mc;c=await this.client.core.crypto.encode(n,s,zh(X({},a||{}),{encoding:e}))}catch(e){throw await this.cleanup(),this.client.logger.error(`sendResult() -> core.crypto.encode() for topic ${n} failed`),e}let u,d;try{u=await this.client.core.history.get(n,t);let e=u.request;try{this.shouldSetTVF(e.method,e.params)&&(d=this.getTVFParams(t,e.params,r))}catch(e){this.client.logger.warn(`sendResult() -> getTVFParams() failed`,e)}}catch(e){throw this.client.logger.error(`sendResult() -> history.get(${n}, ${t}) failed`),e}if(l){let e=pl(o,n,c);await global.Linking.openURL(e,this.client.name)}else{let e=bh[u.request.method].res;e.tvf=zh(X({},d),{correlationId:t}),i?(e.internal=zh(X({},e.internal),{throwOnFailedPublish:!0}),await this.client.core.relayer.publish(n,c,e)):this.client.core.relayer.publish(n,c,e).catch(e=>this.client.logger.error(e))}await this.client.core.history.resolve(s)}),Z(this,`sendError`,async e=>{let{id:t,topic:n,error:r,encodeOpts:i,rpcOpts:a,appLink:o}=e,s=de(t,r),c,l=o&&typeof(global==null?void 0:global.Linking)<`u`;try{let e=l?Nc:Mc;c=await this.client.core.crypto.encode(n,s,zh(X({},i||{}),{encoding:e}))}catch(e){throw await this.cleanup(),this.client.logger.error(`sendError() -> core.crypto.encode() for topic ${n} failed`),e}let u;try{u=await this.client.core.history.get(n,t)}catch(e){throw this.client.logger.error(`sendError() -> history.get(${n}, ${t}) failed`),e}if(l){let e=pl(o,n,c);await global.Linking.openURL(e,this.client.name)}else{let e=u.request.method,t=a||bh[e].res;this.client.core.relayer.publish(n,c,t)}await this.client.core.history.resolve(s)}),Z(this,`cleanup`,async()=>{let e=[],t=[];this.client.session.getAll().forEach(t=>{let n=!1;aa(t.expiry)&&(n=!0),this.client.core.crypto.keychain.has(t.topic)||(n=!0),n&&e.push(t.topic)}),this.client.proposal.getAll().forEach(e=>{aa(e.expiryTimestamp)&&t.push(e.id)}),await Promise.all([...e.map(e=>this.deleteSession({topic:e})),...t.map(e=>this.deleteProposal(e))])}),Z(this,`onProviderMessageEvent`,async e=>{!this.initialized||this.relayMessageCache.length>0?this.relayMessageCache.push(e):await this.onRelayMessage(e)}),Z(this,`onRelayEventRequest`,async e=>{this.requestQueue.queue.push(e),await this.processRequestsQueue()}),Z(this,`processRequestsQueue`,async()=>{if(this.requestQueue.state===Sh.active){this.client.logger.info(`Request queue already active, skipping...`);return}for(this.client.logger.info(`Request queue starting with ${this.requestQueue.queue.length} requests`);this.requestQueue.queue.length>0;){this.requestQueue.state=Sh.active;let e=this.requestQueue.queue.shift();if(e)try{await this.processRequest(e)}catch(e){this.client.logger.warn(e)}}this.requestQueue.state=Sh.idle}),Z(this,`processRequest`,async e=>{let{topic:t,payload:n,attestation:r,transportType:i,encryptedId:a}=e,o=n.method;if(!this.shouldIgnorePairingRequest({topic:t,requestMethod:o}))switch(o){case`wc_sessionPropose`:return await this.onSessionProposeRequest({topic:t,payload:n,attestation:r,encryptedId:a});case`wc_sessionSettle`:return await this.onSessionSettleRequest(t,n);case`wc_sessionUpdate`:return await this.onSessionUpdateRequest(t,n);case`wc_sessionExtend`:return await this.onSessionExtendRequest(t,n);case`wc_sessionPing`:return await this.onSessionPingRequest(t,n);case`wc_sessionDelete`:return await this.onSessionDeleteRequest(t,n);case`wc_sessionRequest`:return await this.onSessionRequest({topic:t,payload:n,attestation:r,encryptedId:a,transportType:i});case`wc_sessionEvent`:return await this.onSessionEventRequest(t,n);case`wc_sessionAuthenticate`:return await this.onSessionAuthenticateRequest({topic:t,payload:n,attestation:r,encryptedId:a,transportType:i});default:return this.client.logger.info(`Unsupported request method ${o}`)}}),Z(this,`onRelayEventResponse`,async e=>{let{topic:t,payload:n,transportType:r}=e,i=(await this.client.core.history.get(t,n.id)).request.method;switch(i){case`wc_sessionPropose`:return this.onSessionProposeResponse(t,n,r);case`wc_sessionSettle`:return this.onSessionSettleResponse(t,n);case`wc_sessionUpdate`:return this.onSessionUpdateResponse(t,n);case`wc_sessionExtend`:return this.onSessionExtendResponse(t,n);case`wc_sessionPing`:return this.onSessionPingResponse(t,n);case`wc_sessionRequest`:return this.onSessionRequestResponse(t,n);case`wc_sessionAuthenticate`:return this.onSessionAuthenticateResponse(t,n);default:return this.client.logger.info(`Unsupported response method ${i}`)}}),Z(this,`onRelayEventUnknownPayload`,e=>{let{topic:t}=e,{message:n}=U(`MISSING_OR_INVALID`,`Decoded payload on topic ${t} is not identifiable as a JSON-RPC request or a response.`);throw Error(n)}),Z(this,`shouldIgnorePairingRequest`,e=>{let{topic:t,requestMethod:n}=e,r=this.expectedPairingMethodMap.get(t);return!r||r.includes(n)?!1:!!(r.includes(`wc_sessionAuthenticate`)&&this.client.events.listenerCount(`session_authenticate`)>0)}),Z(this,`onSessionProposeRequest`,async e=>{let{topic:t,payload:n,attestation:r,encryptedId:i}=e,{params:a,id:o}=n;try{let e=this.client.core.eventClient.getEvent({topic:t});this.client.events.listenerCount(`session_proposal`)===0&&(console.warn(`No listener for session_proposal event`),e?.setError(Xu.proposal_listener_not_found)),this.isValidConnect(X({},n.params));let s=X({id:o,pairingTopic:t,expiryTimestamp:a.expiryTimestamp||ia(bh.wc_sessionPropose.req.ttl)},a);await this.setProposal(o,s);let c=await this.getVerifyContext({attestationId:r,hash:Uc(JSON.stringify(n)),encryptedId:i,metadata:s.proposer.metadata});e?.addTrace(Yu.emit_session_proposal),this.client.events.emit(`session_proposal`,{id:o,params:s,verifyContext:c})}catch(e){await this.sendError({id:o,topic:t,error:e,rpcOpts:bh.wc_sessionPropose.autoReject}),this.client.logger.error(e)}}),Z(this,`onSessionProposeResponse`,async(e,t,n)=>{let{id:r}=t;if(Ae(t)){let{result:i}=t;this.client.logger.trace({type:`method`,method:`onSessionProposeResponse`,result:i});let a=this.client.proposal.get(r);this.client.logger.trace({type:`method`,method:`onSessionProposeResponse`,proposal:a});let o=a.proposer.publicKey;this.client.logger.trace({type:`method`,method:`onSessionProposeResponse`,selfPublicKey:o});let s=i.responderPublicKey;this.client.logger.trace({type:`method`,method:`onSessionProposeResponse`,peerPublicKey:s});let c=await this.client.core.crypto.generateSharedKey(o,s);this.pendingSessions.set(r,{sessionTopic:c,pairingTopic:e,proposalId:r,publicKey:o});let l=await this.client.core.relayer.subscribe(c,{transportType:n});this.client.logger.trace({type:`method`,method:`onSessionProposeResponse`,subscriptionId:l}),await this.client.core.pairing.activate({topic:e})}else if(Oe(t)){await this.client.proposal.delete(r,W(`USER_DISCONNECTED`));let e=V(`session_connect`,r);if(this.events.listenerCount(e)===0)throw Error(`emitting ${e} without any listeners, 954`);this.events.emit(e,{error:t.error})}}),Z(this,`onSessionSettleRequest`,async(e,t)=>{let{id:n,params:r}=t;try{this.isValidSessionSettleRequest(r);let{relay:n,controller:i,expiry:a,namespaces:o,sessionProperties:s,scopedProperties:c,sessionConfig:l}=t.params,u=[...this.pendingSessions.values()].find(t=>t.sessionTopic===e);if(!u)return this.client.logger.error(`Pending session not found for topic ${e}`);let d=this.client.proposal.get(u.proposalId),f=zh(X(X(X({topic:e,relay:n,expiry:a,namespaces:o,acknowledged:!0,pairingTopic:u.pairingTopic,requiredNamespaces:d.requiredNamespaces,optionalNamespaces:d.optionalNamespaces,controller:i.publicKey,self:{publicKey:u.publicKey,metadata:this.client.metadata},peer:{publicKey:i.publicKey,metadata:i.metadata}},s&&{sessionProperties:s}),c&&{scopedProperties:c}),l&&{sessionConfig:l}),{transportType:G.relay});await this.client.session.set(f.topic,f),await this.setExpiry(f.topic,f.expiry),await this.client.core.pairing.updateMetadata({topic:u.pairingTopic,metadata:f.peer.metadata}),this.client.events.emit(`session_connect`,{session:f}),this.events.emit(V(`session_connect`,u.proposalId),{session:f}),this.pendingSessions.delete(u.proposalId),this.deleteProposal(u.proposalId,!1),this.cleanupDuplicatePairings(f),await this.sendResult({id:t.id,topic:e,result:!0,throwOnFailedPublish:!0})}catch(t){await this.sendError({id:n,topic:e,error:t}),this.client.logger.error(t)}}),Z(this,`onSessionSettleResponse`,async(e,t)=>{let{id:n}=t;Ae(t)?(await this.client.session.update(e,{acknowledged:!0}),this.events.emit(V(`session_approve`,n),{})):Oe(t)&&(await this.client.session.delete(e,W(`USER_DISCONNECTED`)),this.events.emit(V(`session_approve`,n),{error:t.error}))}),Z(this,`onSessionUpdateRequest`,async(e,t)=>{let{params:n,id:r}=t;try{let t=`${e}_session_update`,i=hu.get(t);if(i&&this.isRequestOutOfSync(i,r)){this.client.logger.warn(`Discarding out of sync request - ${r}`),this.sendError({id:r,topic:e,error:W(`INVALID_UPDATE_REQUEST`)});return}this.isValidUpdate(X({topic:e},n));try{hu.set(t,r),await this.client.session.update(e,{namespaces:n.namespaces}),await this.sendResult({id:r,topic:e,result:!0,throwOnFailedPublish:!0})}catch(e){throw hu.delete(t),e}this.client.events.emit(`session_update`,{id:r,topic:e,params:n})}catch(t){await this.sendError({id:r,topic:e,error:t}),this.client.logger.error(t)}}),Z(this,`isRequestOutOfSync`,(e,t)=>t.toString().slice(0,-3)<e.toString().slice(0,-3)),Z(this,`onSessionUpdateResponse`,(e,t)=>{let{id:n}=t,r=V(`session_update`,n);if(this.events.listenerCount(r)===0)throw Error(`emitting ${r} without any listeners`);Ae(t)?this.events.emit(V(`session_update`,n),{}):Oe(t)&&this.events.emit(V(`session_update`,n),{error:t.error})}),Z(this,`onSessionExtendRequest`,async(e,t)=>{let{id:n}=t;try{this.isValidExtend({topic:e}),await this.setExpiry(e,ia(vh)),await this.sendResult({id:n,topic:e,result:!0,throwOnFailedPublish:!0}),this.client.events.emit(`session_extend`,{id:n,topic:e})}catch(t){await this.sendError({id:n,topic:e,error:t}),this.client.logger.error(t)}}),Z(this,`onSessionExtendResponse`,(e,t)=>{let{id:n}=t,r=V(`session_extend`,n);if(this.events.listenerCount(r)===0)throw Error(`emitting ${r} without any listeners`);Ae(t)?this.events.emit(V(`session_extend`,n),{}):Oe(t)&&this.events.emit(V(`session_extend`,n),{error:t.error})}),Z(this,`onSessionPingRequest`,async(e,t)=>{let{id:n}=t;try{this.isValidPing({topic:e}),await this.sendResult({id:n,topic:e,result:!0,throwOnFailedPublish:!0}),this.client.events.emit(`session_ping`,{id:n,topic:e})}catch(t){await this.sendError({id:n,topic:e,error:t}),this.client.logger.error(t)}}),Z(this,`onSessionPingResponse`,(e,t)=>{let{id:n}=t,r=V(`session_ping`,n);setTimeout(()=>{if(this.events.listenerCount(r)===0)throw Error(`emitting ${r} without any listeners 2176`);Ae(t)?this.events.emit(V(`session_ping`,n),{}):Oe(t)&&this.events.emit(V(`session_ping`,n),{error:t.error})},500)}),Z(this,`onSessionDeleteRequest`,async(e,t)=>{let{id:n}=t;try{this.isValidDisconnect({topic:e,reason:t.params}),Promise.all([new Promise(t=>{this.client.core.relayer.once(Ou.publish,async()=>{t(await this.deleteSession({topic:e,id:n}))})}),this.sendResult({id:n,topic:e,result:!0,throwOnFailedPublish:!0}),this.cleanupPendingSentRequestsForTopic({topic:e,error:W(`USER_DISCONNECTED`)})]).catch(e=>this.client.logger.error(e))}catch(e){this.client.logger.error(e)}}),Z(this,`onSessionRequest`,async e=>{var t,n;let{topic:r,payload:i,attestation:a,encryptedId:o,transportType:s}=e,{id:c,params:l}=i;try{await this.isValidRequest(X({topic:r},l));let e=this.client.session.get(r),i={id:c,topic:r,params:l,verifyContext:await this.getVerifyContext({attestationId:a,hash:Uc(JSON.stringify(N(`wc_sessionRequest`,l,c))),encryptedId:o,metadata:e.peer.metadata,transportType:s})};await this.setPendingSessionRequest(i),s===G.link_mode&&(t=e.peer.metadata.redirect)!=null&&t.universal&&this.client.core.addLinkModeSupportedApp(e.peer.metadata.redirect?.universal),(n=this.client.signConfig)!=null&&n.disableRequestQueue?this.emitSessionRequest(i):(this.addSessionRequestToSessionRequestQueue(i),this.processSessionRequestQueue())}catch(e){await this.sendError({id:c,topic:r,error:e}),this.client.logger.error(e)}}),Z(this,`onSessionRequestResponse`,(e,t)=>{let{id:n}=t,r=V(`session_request`,n);if(this.events.listenerCount(r)===0)throw Error(`emitting ${r} without any listeners`);Ae(t)?this.events.emit(V(`session_request`,n),{result:t.result}):Oe(t)&&this.events.emit(V(`session_request`,n),{error:t.error})}),Z(this,`onSessionEventRequest`,async(e,t)=>{let{id:n,params:r}=t;try{let t=`${e}_session_event_${r.event.name}`,i=hu.get(t);if(i&&this.isRequestOutOfSync(i,n)){this.client.logger.info(`Discarding out of sync request - ${n}`);return}this.isValidEmit(X({topic:e},r)),this.client.events.emit(`session_event`,{id:n,topic:e,params:r}),hu.set(t,n)}catch(t){await this.sendError({id:n,topic:e,error:t}),this.client.logger.error(t)}}),Z(this,`onSessionAuthenticateResponse`,(e,t)=>{let{id:n}=t;this.client.logger.trace({type:`method`,method:`onSessionAuthenticateResponse`,topic:e,payload:t}),Ae(t)?this.events.emit(V(`session_request`,n),{result:t.result}):Oe(t)&&this.events.emit(V(`session_request`,n),{error:t.error})}),Z(this,`onSessionAuthenticateRequest`,async e=>{var t;let{topic:n,payload:r,attestation:i,encryptedId:a,transportType:o}=e;try{let{requester:e,authPayload:s,expiryTimestamp:c}=r.params,l=await this.getVerifyContext({attestationId:i,hash:Uc(JSON.stringify(r)),encryptedId:a,metadata:e.metadata,transportType:o}),u={requester:e,pairingTopic:n,id:r.id,authPayload:s,verifyContext:l,expiryTimestamp:c};await this.setAuthRequest(r.id,{request:u,pairingTopic:n,transportType:o}),o===G.link_mode&&(t=e.metadata.redirect)!=null&&t.universal&&this.client.core.addLinkModeSupportedApp(e.metadata.redirect.universal),this.client.events.emit(`session_authenticate`,{topic:n,params:r.params,id:r.id,verifyContext:l})}catch(e){this.client.logger.error(e);let t=r.params.requester.publicKey,i=await this.client.core.crypto.generateKeyPair(),a=this.getAppLinkIfEnabled(r.params.requester.metadata,o),s={type:1,receiverPublicKey:t,senderPublicKey:i};await this.sendError({id:r.id,topic:n,error:e,encodeOpts:s,rpcOpts:bh.wc_sessionAuthenticate.autoReject,appLink:a})}}),Z(this,`addSessionRequestToSessionRequestQueue`,e=>{this.sessionRequestQueue.queue.push(e)}),Z(this,`cleanupAfterResponse`,e=>{this.deletePendingSessionRequest(e.response.id,{message:`fulfilled`,code:0}),setTimeout(()=>{this.sessionRequestQueue.state=Sh.idle,this.processSessionRequestQueue()},(0,R.toMiliseconds)(this.requestQueueDelay))}),Z(this,`cleanupPendingSentRequestsForTopic`,({topic:e,error:t})=>{let n=this.client.core.history.pending;n.length>0&&n.filter(t=>t.topic===e&&t.request.method===`wc_sessionRequest`).forEach(e=>{let n=e.request.id,r=V(`session_request`,n);if(this.events.listenerCount(r)===0)throw Error(`emitting ${r} without any listeners`);this.events.emit(V(`session_request`,e.request.id),{error:t})})}),Z(this,`processSessionRequestQueue`,()=>{if(this.sessionRequestQueue.state===Sh.active){this.client.logger.info(`session request queue is already active.`);return}let e=this.sessionRequestQueue.queue[0];if(!e){this.client.logger.info(`session request queue is empty.`);return}try{this.sessionRequestQueue.state=Sh.active,this.emitSessionRequest(e)}catch(e){this.client.logger.error(e)}}),Z(this,`emitSessionRequest`,e=>{this.client.events.emit(`session_request`,e)}),Z(this,`onPairingCreated`,e=>{if(e.methods&&this.expectedPairingMethodMap.set(e.topic,e.methods),e.active)return;let t=this.client.proposal.getAll().find(t=>t.pairingTopic===e.topic);t&&this.onSessionProposeRequest({topic:e.topic,payload:N(`wc_sessionPropose`,zh(X({},t),{requiredNamespaces:t.requiredNamespaces,optionalNamespaces:t.optionalNamespaces,relays:t.relays,proposer:t.proposer,sessionProperties:t.sessionProperties,scopedProperties:t.scopedProperties}),t.id)})}),Z(this,`isValidConnect`,async e=>{if(!Jl(e)){let{message:t}=U(`MISSING_OR_INVALID`,`connect() params: ${JSON.stringify(e)}`);throw Error(t)}let{pairingTopic:t,requiredNamespaces:n,optionalNamespaces:r,sessionProperties:i,scopedProperties:a,relays:o}=e;if(El(t)||await this.isValidPairingTopic(t),!Kl(o,!0)){let{message:e}=U(`MISSING_OR_INVALID`,`connect() relays: ${o}`);throw Error(e)}if(!El(n)&&Tl(n)!==0&&this.validateNamespaces(n,`requiredNamespaces`),!El(r)&&Tl(r)!==0&&this.validateNamespaces(r,`optionalNamespaces`),El(i)||this.validateSessionProps(i,`sessionProperties`),!El(a)){this.validateSessionProps(a,`scopedProperties`);let e=Object.keys(n||{}).concat(Object.keys(r||{}));if(!Object.keys(a).every(t=>e.includes(t)))throw Error(`Scoped properties must be a subset of required/optional namespaces, received: ${JSON.stringify(a)}, required/optional namespaces: ${JSON.stringify(e)}`)}}),Z(this,`validateNamespaces`,(e,t)=>{let n=Ul(e,`connect()`,t);if(n)throw Error(n.message)}),Z(this,`isValidApprove`,async e=>{if(!Jl(e))throw Error(U(`MISSING_OR_INVALID`,`approve() params: ${e}`).message);let{id:t,namespaces:n,relayProtocol:r,sessionProperties:i,scopedProperties:a}=e;this.checkRecentlyDeleted(t),await this.isValidProposalId(t);let o=this.client.proposal.get(t),s=Wl(n,`approve()`);if(s)throw Error(s.message);let c=nu(o.requiredNamespaces,n,`approve()`);if(c)throw Error(c.message);if(!Dl(r,!0)){let{message:e}=U(`MISSING_OR_INVALID`,`approve() relayProtocol: ${r}`);throw Error(e)}if(El(i)||this.validateSessionProps(i,`sessionProperties`),!El(a)){this.validateSessionProps(a,`scopedProperties`);let e=new Set(Object.keys(n));if(!Object.keys(a).every(t=>e.has(t)))throw Error(`Scoped properties must be a subset of approved namespaces, received: ${JSON.stringify(a)}, approved namespaces: ${Array.from(e).join(`, `)}`)}}),Z(this,`isValidReject`,async e=>{if(!Jl(e)){let{message:t}=U(`MISSING_OR_INVALID`,`reject() params: ${e}`);throw Error(t)}let{id:t,reason:n}=e;if(this.checkRecentlyDeleted(t),await this.isValidProposalId(t),!Yl(n)){let{message:e}=U(`MISSING_OR_INVALID`,`reject() reason: ${JSON.stringify(n)}`);throw Error(e)}}),Z(this,`isValidSessionSettleRequest`,e=>{if(!Jl(e)){let{message:t}=U(`MISSING_OR_INVALID`,`onSessionSettleRequest() params: ${e}`);throw Error(t)}let{relay:t,controller:n,namespaces:r,expiry:i}=e;if(!Gl(t)){let{message:e}=U(`MISSING_OR_INVALID`,`onSessionSettleRequest() relay protocol should be a string`);throw Error(e)}let a=Fl(n,`onSessionSettleRequest()`);if(a)throw Error(a.message);let o=Wl(r,`onSessionSettleRequest()`);if(o)throw Error(o.message);if(aa(i)){let{message:e}=U(`EXPIRED`,`onSessionSettleRequest()`);throw Error(e)}}),Z(this,`isValidUpdate`,async e=>{if(!Jl(e)){let{message:t}=U(`MISSING_OR_INVALID`,`update() params: ${e}`);throw Error(t)}let{topic:t,namespaces:n}=e;this.checkRecentlyDeleted(t),await this.isValidSessionTopic(t);let r=this.client.session.get(t),i=Wl(n,`update()`);if(i)throw Error(i.message);let a=nu(r.requiredNamespaces,n,`update()`);if(a)throw Error(a.message)}),Z(this,`isValidExtend`,async e=>{if(!Jl(e)){let{message:t}=U(`MISSING_OR_INVALID`,`extend() params: ${e}`);throw Error(t)}let{topic:t}=e;this.checkRecentlyDeleted(t),await this.isValidSessionTopic(t)}),Z(this,`isValidRequest`,async e=>{if(!Jl(e)){let{message:t}=U(`MISSING_OR_INVALID`,`request() params: ${e}`);throw Error(t)}let{topic:t,request:n,chainId:r,expiry:i}=e;this.checkRecentlyDeleted(t),await this.isValidSessionTopic(t);let{namespaces:a}=this.client.session.get(t);if(!$l(a,r)){let{message:e}=U(`MISSING_OR_INVALID`,`request() chainId: ${r}`);throw Error(e)}if(!Xl(n)){let{message:e}=U(`MISSING_OR_INVALID`,`request() ${JSON.stringify(n)}`);throw Error(e)}if(!eu(a,r,n.method)){let{message:e}=U(`MISSING_OR_INVALID`,`request() method: ${n.method}`);throw Error(e)}if(i&&!ou(i,xh)){let{message:e}=U(`MISSING_OR_INVALID`,`request() expiry: ${i}. Expiry must be a number (in seconds) between ${xh.min} and ${xh.max}`);throw Error(e)}}),Z(this,`isValidRespond`,async e=>{var t;if(!Jl(e)){let{message:t}=U(`MISSING_OR_INVALID`,`respond() params: ${e}`);throw Error(t)}let{topic:n,response:r}=e;try{await this.isValidSessionTopic(n)}catch(n){throw(t=e?.response)!=null&&t.id&&this.cleanupAfterResponse(e),n}if(!Zl(r)){let{message:e}=U(`MISSING_OR_INVALID`,`respond() response: ${JSON.stringify(r)}`);throw Error(e)}}),Z(this,`isValidPing`,async e=>{if(!Jl(e)){let{message:t}=U(`MISSING_OR_INVALID`,`ping() params: ${e}`);throw Error(t)}let{topic:t}=e;await this.isValidSessionOrPairingTopic(t)}),Z(this,`isValidEmit`,async e=>{if(!Jl(e)){let{message:t}=U(`MISSING_OR_INVALID`,`emit() params: ${e}`);throw Error(t)}let{topic:t,event:n,chainId:r}=e;await this.isValidSessionTopic(t);let{namespaces:i}=this.client.session.get(t);if(!$l(i,r)){let{message:e}=U(`MISSING_OR_INVALID`,`emit() chainId: ${r}`);throw Error(e)}if(!Ql(n)){let{message:e}=U(`MISSING_OR_INVALID`,`emit() event: ${JSON.stringify(n)}`);throw Error(e)}if(!tu(i,r,n.name)){let{message:e}=U(`MISSING_OR_INVALID`,`emit() event: ${JSON.stringify(n)}`);throw Error(e)}}),Z(this,`isValidDisconnect`,async e=>{if(!Jl(e)){let{message:t}=U(`MISSING_OR_INVALID`,`disconnect() params: ${e}`);throw Error(t)}let{topic:t}=e;await this.isValidSessionOrPairingTopic(t)}),Z(this,`isValidAuthenticate`,e=>{let{chains:t,uri:n,domain:r,nonce:i}=e;if(!Array.isArray(t)||t.length===0)throw Error(`chains is required and must be a non-empty array`);if(!Dl(n,!1))throw Error(`uri is required parameter`);if(!Dl(r,!1))throw Error(`domain is required parameter`);if(!Dl(i,!1))throw Error(`nonce is required parameter`);if([...new Set(t.map(e=>Ni(e).namespace))].length>1)throw Error(`Multi-namespace requests are not supported. Please request single namespace only.`);let{namespace:a}=Ni(t[0]);if(a!==`eip155`)throw Error(`Only eip155 namespace is supported for authenticated sessions. Please use .connect() for non-eip155 chains.`)}),Z(this,`getVerifyContext`,async e=>{let{attestationId:t,hash:n,encryptedId:r,metadata:i,transportType:a}=e,o={verified:{verifyUrl:i.verifyUrl||`https://verify.walletconnect.org`,validation:`UNKNOWN`,origin:i.url||``}};try{if(a===G.link_mode){let e=this.getAppLinkIfEnabled(i,a);return o.verified.validation=e&&new URL(e).origin===new URL(i.url).origin?`VALID`:`INVALID`,o}let e=await this.client.core.verify.resolve({attestationId:t,hash:n,encryptedId:r,verifyUrl:i.verifyUrl});e&&(o.verified.origin=e.origin,o.verified.isScam=e.isScam,o.verified.validation=e.origin===new URL(i.url).origin?`VALID`:`INVALID`)}catch(e){this.client.logger.warn(e)}return this.client.logger.debug(`Verify context: ${JSON.stringify(o)}`),o}),Z(this,`validateSessionProps`,(e,t)=>{Object.values(e).forEach((n,r)=>{if(n==null){let{message:i}=U(`MISSING_OR_INVALID`,`${t} must contain an existing value for each key. Received: ${n} for key ${Object.keys(e)[r]}`);throw Error(i)}})}),Z(this,`getPendingAuthRequest`,e=>{let t=this.client.auth.requests.get(e);return typeof t==`object`?t:void 0}),Z(this,`addToRecentlyDeleted`,(e,t)=>{if(this.recentlyDeletedMap.set(e,t),this.recentlyDeletedMap.size>=this.recentlyDeletedLimit){let e=0,t=this.recentlyDeletedLimit/2;for(let n of this.recentlyDeletedMap.keys()){if(e++>=t)break;this.recentlyDeletedMap.delete(n)}}}),Z(this,`checkRecentlyDeleted`,e=>{let t=this.recentlyDeletedMap.get(e);if(t){let{message:n}=U(`MISSING_OR_INVALID`,`Record was recently deleted - ${t}: ${e}`);throw Error(n)}}),Z(this,`isLinkModeEnabled`,(e,t)=>!e||t!==G.link_mode?!1:this.client.metadata?.redirect?.linkMode===!0&&this.client.metadata?.redirect?.universal!==void 0&&this.client.metadata?.redirect?.universal!==``&&e?.redirect?.universal!==void 0&&e?.redirect?.universal!==``&&e?.redirect?.linkMode===!0&&this.client.core.linkModeSupportedApps.includes(e.redirect.universal)&&typeof(global==null?void 0:global.Linking)<`u`),Z(this,`getAppLinkIfEnabled`,(e,t)=>this.isLinkModeEnabled(e,t)?e?.redirect?.universal:void 0),Z(this,`handleLinkModeMessage`,({url:e})=>{if(!e||!e.includes(`wc_ev`)||!e.includes(`topic`))return;let t=da(e,`topic`)||``,n=decodeURIComponent(da(e,`wc_ev`)||``),r=this.client.session.keys.includes(t);r&&this.client.session.update(t,{transportType:G.link_mode}),this.client.core.dispatchEnvelope({topic:t,message:n,sessionExists:r})}),Z(this,`registerLinkModeListeners`,async()=>{var e;if(pa()||Li()&&(e=this.client.metadata.redirect)!=null&&e.linkMode){let e=global==null?void 0:global.Linking;if(typeof e<`u`){e.addEventListener(`url`,this.handleLinkModeMessage,this.client.name);let t=await e.getInitialURL();t&&setTimeout(()=>{this.handleLinkModeMessage({url:t})},50)}}}),Z(this,`shouldSetTVF`,(e,t)=>{if(!t||e!==`wc_sessionRequest`)return!1;let{request:n}=t;return Object.keys(Ch).includes(n.method)}),Z(this,`getTVFParams`,(e,t,n)=>{try{let r=t.request.method,i=this.extractTxHashesFromResult(r,n);return zh(X({correlationId:e,rpcMethods:[r],chainId:t.chainId},this.isValidContractData(t.request.params)&&{contractAddresses:[t.request.params?.[0]?.to]}),{txHashes:i})}catch(e){this.client.logger.warn(`Error getting TVF params`,e)}return{}}),Z(this,`isValidContractData`,e=>{if(!e)return!1;try{let t=e?.data||e?.[0]?.data;if(!t.startsWith(`0x`))return!1;let n=t.slice(2);return/^[0-9a-fA-F]*$/.test(n)?n.length%2==0:!1}catch{}return!1}),Z(this,`extractTxHashesFromResult`,(e,t)=>{try{let n=Ch[e];if(typeof t==`string`)return[t];let r=t[n.key];if(wl(r))return e===`solana_signAllTransactions`?r.map(e=>mo(e)):r;if(typeof r==`string`)return[r]}catch(e){this.client.logger.warn(`Error extracting tx hashes from result`,e)}return[]})}async processPendingMessageEvents(){try{let e=this.client.session.keys,t=this.client.core.relayer.messages.getWithoutAck(e);for(let[e,n]of Object.entries(t))for(let t of n)try{await this.onProviderMessageEvent({topic:e,message:t,publishedAt:Date.now()})}catch{this.client.logger.warn(`Error processing pending message event for topic: ${e}, message: ${t}`)}}catch(e){this.client.logger.warn(`processPendingMessageEvents failed`,e)}}isInitialized(){if(!this.initialized){let{message:e}=U(`NOT_INITIALIZED`,this.name);throw Error(e)}}async confirmOnlineStateOrThrow(){await this.client.core.relayer.confirmOnlineStateOrThrow()}registerRelayerEvents(){this.client.core.relayer.on(Ou.message,e=>{this.onProviderMessageEvent(e)})}async onRelayMessage(e){let{topic:t,message:n,attestation:r,transportType:i}=e,{publicKey:a}=this.client.auth.authKeys.keys.includes(jh)?this.client.auth.authKeys.get(jh):{responseTopic:void 0,publicKey:void 0};try{let e=await this.client.core.crypto.decode(t,n,{receiverPublicKey:a,encoding:i===G.link_mode?Nc:Mc});je(e)?(this.client.core.history.set(t,e),await this.onRelayEventRequest({topic:t,payload:e,attestation:r,transportType:i,encryptedId:Uc(n)})):be(e)?(await this.client.core.history.resolve(e),await this.onRelayEventResponse({topic:t,payload:e,transportType:i}),this.client.core.history.delete(t,e.id)):await this.onRelayEventUnknownPayload({topic:t,payload:e,transportType:i}),await this.client.core.relayer.messages.ack(t,n)}catch(e){this.client.logger.error(e)}}registerExpirerEvents(){this.client.core.expirer.on(Vu.expired,async e=>{let{topic:t,id:n}=ra(e.target);if(n&&this.client.pendingRequest.keys.includes(n))return await this.deletePendingSessionRequest(n,U(`EXPIRED`),!0);if(n&&this.client.auth.requests.keys.includes(n))return await this.deletePendingAuthRequest(n,U(`EXPIRED`),!0);t?this.client.session.keys.includes(t)&&(await this.deleteSession({topic:t,expirerHasDeleted:!0}),this.client.events.emit(`session_expire`,{topic:t})):n&&(await this.deleteProposal(n,!0),this.client.events.emit(`proposal_expire`,{id:n}))})}registerPairingEvents(){this.client.core.pairing.events.on(Lu.create,e=>this.onPairingCreated(e)),this.client.core.pairing.events.on(Lu.delete,e=>{this.addToRecentlyDeleted(e.topic,`pairing`)})}isValidPairingTopic(e){if(!Dl(e,!1)){let{message:t}=U(`MISSING_OR_INVALID`,`pairing topic should be a string: ${e}`);throw Error(t)}if(!this.client.core.pairing.pairings.keys.includes(e)){let{message:t}=U(`NO_MATCHING_KEY`,`pairing topic doesn't exist: ${e}`);throw Error(t)}if(aa(this.client.core.pairing.pairings.get(e).expiry)){let{message:t}=U(`EXPIRED`,`pairing topic: ${e}`);throw Error(t)}}async isValidSessionTopic(e){if(!Dl(e,!1)){let{message:t}=U(`MISSING_OR_INVALID`,`session topic should be a string: ${e}`);throw Error(t)}if(this.checkRecentlyDeleted(e),!this.client.session.keys.includes(e)){let{message:t}=U(`NO_MATCHING_KEY`,`session topic doesn't exist: ${e}`);throw Error(t)}if(aa(this.client.session.get(e).expiry)){await this.deleteSession({topic:e});let{message:t}=U(`EXPIRED`,`session topic: ${e}`);throw Error(t)}if(!this.client.core.crypto.keychain.has(e)){let{message:t}=U(`MISSING_OR_INVALID`,`session topic does not exist in keychain: ${e}`);throw await this.deleteSession({topic:e}),Error(t)}}async isValidSessionOrPairingTopic(e){if(this.checkRecentlyDeleted(e),this.client.session.keys.includes(e))await this.isValidSessionTopic(e);else if(this.client.core.pairing.pairings.keys.includes(e))this.isValidPairingTopic(e);else if(Dl(e,!1)){let{message:t}=U(`NO_MATCHING_KEY`,`session or pairing topic doesn't exist: ${e}`);throw Error(t)}else{let{message:t}=U(`MISSING_OR_INVALID`,`session or pairing topic should be a string: ${e}`);throw Error(t)}}async isValidProposalId(e){if(!ql(e)){let{message:t}=U(`MISSING_OR_INVALID`,`proposal id should be a number: ${e}`);throw Error(t)}if(!this.client.proposal.keys.includes(e)){let{message:t}=U(`NO_MATCHING_KEY`,`proposal id doesn't exist: ${e}`);throw Error(t)}if(aa(this.client.proposal.get(e).expiryTimestamp)){await this.deleteProposal(e);let{message:t}=U(`EXPIRED`,`proposal id: ${e}`);throw Error(t)}}},Vh=class extends Am{constructor(e,t){super(e,t,hh,fh),this.core=e,this.logger=t}},Hh=class extends Am{constructor(e,t){super(e,t,_h,fh),this.core=e,this.logger=t}},Uh=class extends Am{constructor(e,t){super(e,t,wh,fh,e=>e.id),this.core=e,this.logger=t}},Wh=class extends Am{constructor(e,t){super(e,t,Dh,Ah,()=>jh),this.core=e,this.logger=t}},Gh=class extends Am{constructor(e,t){super(e,t,Oh,Ah),this.core=e,this.logger=t}},Kh=class extends Am{constructor(e,t){super(e,t,kh,Ah,e=>e.id),this.core=e,this.logger=t}},qh=Object.defineProperty,Jh=(e,t,n)=>t in e?qh(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Yh=(e,t,n)=>Jh(e,typeof t==`symbol`?t:t+``,n),Xh=class{constructor(e,t){this.core=e,this.logger=t,Yh(this,`authKeys`),Yh(this,`pairingTopics`),Yh(this,`requests`),this.authKeys=new Wh(this.core,this.logger),this.pairingTopics=new Gh(this.core,this.logger),this.requests=new Kh(this.core,this.logger)}async init(){await this.authKeys.init(),await this.pairingTopics.init(),await this.requests.init()}},Zh=Object.defineProperty,Qh=(e,t,n)=>t in e?Zh(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Q=(e,t,n)=>Qh(e,typeof t==`symbol`?t:t+``,n),$h=class e extends Tt{constructor(e){super(e),Q(this,`protocol`,`wc`),Q(this,`version`,2),Q(this,`name`,ph.name),Q(this,`metadata`),Q(this,`core`),Q(this,`logger`),Q(this,`events`,new it.EventEmitter),Q(this,`engine`),Q(this,`session`),Q(this,`proposal`),Q(this,`pendingRequest`),Q(this,`auth`),Q(this,`signConfig`),Q(this,`on`,(e,t)=>this.events.on(e,t)),Q(this,`once`,(e,t)=>this.events.once(e,t)),Q(this,`off`,(e,t)=>this.events.off(e,t)),Q(this,`removeListener`,(e,t)=>this.events.removeListener(e,t)),Q(this,`removeAllListeners`,e=>this.events.removeAllListeners(e)),Q(this,`connect`,async e=>{try{return await this.engine.connect(e)}catch(e){throw this.logger.error(e.message),e}}),Q(this,`pair`,async e=>{try{return await this.engine.pair(e)}catch(e){throw this.logger.error(e.message),e}}),Q(this,`approve`,async e=>{try{return await this.engine.approve(e)}catch(e){throw this.logger.error(e.message),e}}),Q(this,`reject`,async e=>{try{return await this.engine.reject(e)}catch(e){throw this.logger.error(e.message),e}}),Q(this,`update`,async e=>{try{return await this.engine.update(e)}catch(e){throw this.logger.error(e.message),e}}),Q(this,`extend`,async e=>{try{return await this.engine.extend(e)}catch(e){throw this.logger.error(e.message),e}}),Q(this,`request`,async e=>{try{return await this.engine.request(e)}catch(e){throw this.logger.error(e.message),e}}),Q(this,`respond`,async e=>{try{return await this.engine.respond(e)}catch(e){throw this.logger.error(e.message),e}}),Q(this,`ping`,async e=>{try{return await this.engine.ping(e)}catch(e){throw this.logger.error(e.message),e}}),Q(this,`emit`,async e=>{try{return await this.engine.emit(e)}catch(e){throw this.logger.error(e.message),e}}),Q(this,`disconnect`,async e=>{try{return await this.engine.disconnect(e)}catch(e){throw this.logger.error(e.message),e}}),Q(this,`find`,e=>{try{return this.engine.find(e)}catch(e){throw this.logger.error(e.message),e}}),Q(this,`getPendingSessionRequests`,()=>{try{return this.engine.getPendingSessionRequests()}catch(e){throw this.logger.error(e.message),e}}),Q(this,`authenticate`,async(e,t)=>{try{return await this.engine.authenticate(e,t)}catch(e){throw this.logger.error(e.message),e}}),Q(this,`formatAuthMessage`,e=>{try{return this.engine.formatAuthMessage(e)}catch(e){throw this.logger.error(e.message),e}}),Q(this,`approveSessionAuthenticate`,async e=>{try{return await this.engine.approveSessionAuthenticate(e)}catch(e){throw this.logger.error(e.message),e}}),Q(this,`rejectSessionAuthenticate`,async e=>{try{return await this.engine.rejectSessionAuthenticate(e)}catch(e){throw this.logger.error(e.message),e}}),this.name=e?.name||ph.name,this.metadata=e?.metadata||Wi(),this.signConfig=e?.signConfig;let t=typeof e?.logger<`u`&&typeof e?.logger!=`string`?e.logger:(0,me.default)(te({level:e?.logger||ph.logger}));this.core=e?.core||new uh(e),this.logger=M(t,this.name),this.session=new Hh(this.core,this.logger),this.proposal=new Vh(this.core,this.logger),this.pendingRequest=new Uh(this.core,this.logger),this.engine=new Bh(this),this.auth=new Xh(this.core,this.logger)}static async init(t){let n=new e(t);return await n.initialize(),n}get context(){return pe(this.logger)}get pairing(){return this.core.pairing.pairings}async initialize(){this.logger.trace(`Initialized`);try{await this.core.start(),await this.session.init(),await this.proposal.init(),await this.pendingRequest.init(),await this.auth.init(),await this.engine.init(),this.logger.info(`SignClient Initialization Success`),setTimeout(()=>{this.engine.processRelayMessageCache()},(0,R.toMiliseconds)(R.ONE_SECOND))}catch(e){throw this.logger.info(`SignClient Initialization Failure`),this.logger.error(e.message),e}}},eg=`error`,tg=`wss://relay.walletconnect.org`,ng=`wc@2:universal_provider:`,rg=`https://rpc.walletconnect.org/v1/`,ig=`generic`,ag=`${rg}bundler`,og={DEFAULT_CHAIN_CHANGED:`default_chain_changed`};function sg(){}function cg(e){return e==null||typeof e!=`object`&&typeof e!=`function`}function lg(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function ug(e){if(cg(e))return e;if(Array.isArray(e)||lg(e)||e instanceof ArrayBuffer||typeof SharedArrayBuffer<`u`&&e instanceof SharedArrayBuffer)return e.slice(0);let t=Object.getPrototypeOf(e),n=t.constructor;if(e instanceof Date||e instanceof Map||e instanceof Set)return new n(e);if(e instanceof RegExp){let t=new n(e);return t.lastIndex=e.lastIndex,t}if(e instanceof DataView)return new n(e.buffer.slice(0));if(e instanceof Error){let t=new n(e.message);return t.stack=e.stack,t.name=e.name,t.cause=e.cause,t}return typeof File<`u`&&e instanceof File?new n([e],e.name,{type:e.type,lastModified:e.lastModified}):typeof e==`object`?Object.assign(Object.create(t),e):e}function dg(e){return typeof e==`object`&&!!e}function fg(e){return Object.getOwnPropertySymbols(e).filter(t=>Object.prototype.propertyIsEnumerable.call(e,t))}function pg(e){return e==null?e===void 0?`[object Undefined]`:`[object Null]`:Object.prototype.toString.call(e)}var mg=`[object RegExp]`,hg=`[object String]`,gg=`[object Number]`,_g=`[object Boolean]`,vg=`[object Arguments]`,yg=`[object Symbol]`,bg=`[object Date]`,xg=`[object Map]`,Sg=`[object Set]`,Cg=`[object Array]`,wg=`[object ArrayBuffer]`,Tg=`[object Object]`,Eg=`[object DataView]`,Dg=`[object Uint8Array]`,Og=`[object Uint8ClampedArray]`,kg=`[object Uint16Array]`,Ag=`[object Uint32Array]`,jg=`[object Int8Array]`,Mg=`[object Int16Array]`,Ng=`[object Int32Array]`,Pg=`[object Float32Array]`,Fg=`[object Float64Array]`;function Ig(e,t){return Lg(e,void 0,e,new Map,t)}function Lg(e,t,n,r=new Map,i=void 0){let a=i?.(e,t,n,r);if(a!=null)return a;if(cg(e))return e;if(r.has(e))return r.get(e);if(Array.isArray(e)){let t=Array(e.length);r.set(e,t);for(let a=0;a<e.length;a++)t[a]=Lg(e[a],a,n,r,i);return Object.hasOwn(e,`index`)&&(t.index=e.index),Object.hasOwn(e,`input`)&&(t.input=e.input),t}if(e instanceof Date)return new Date(e.getTime());if(e instanceof RegExp){let t=new RegExp(e.source,e.flags);return t.lastIndex=e.lastIndex,t}if(e instanceof Map){let t=new Map;r.set(e,t);for(let[a,o]of e)t.set(a,Lg(o,a,n,r,i));return t}if(e instanceof Set){let t=new Set;r.set(e,t);for(let a of e)t.add(Lg(a,void 0,n,r,i));return t}if(typeof Buffer<`u`&&Buffer.isBuffer(e))return e.subarray();if(lg(e)){let t=new(Object.getPrototypeOf(e)).constructor(e.length);r.set(e,t);for(let a=0;a<e.length;a++)t[a]=Lg(e[a],a,n,r,i);return t}if(e instanceof ArrayBuffer||typeof SharedArrayBuffer<`u`&&e instanceof SharedArrayBuffer)return e.slice(0);if(e instanceof DataView){let t=new DataView(e.buffer.slice(0),e.byteOffset,e.byteLength);return r.set(e,t),Rg(t,e,n,r,i),t}if(typeof File<`u`&&e instanceof File){let t=new File([e],e.name,{type:e.type});return r.set(e,t),Rg(t,e,n,r,i),t}if(e instanceof Blob){let t=new Blob([e],{type:e.type});return r.set(e,t),Rg(t,e,n,r,i),t}if(e instanceof Error){let t=new e.constructor;return r.set(e,t),t.message=e.message,t.name=e.name,t.stack=e.stack,t.cause=e.cause,Rg(t,e,n,r,i),t}if(typeof e==`object`&&zg(e)){let t=Object.create(Object.getPrototypeOf(e));return r.set(e,t),Rg(t,e,n,r,i),t}return e}function Rg(e,t,n=e,r,i){let a=[...Object.keys(t),...fg(t)];for(let o=0;o<a.length;o++){let s=a[o],c=Object.getOwnPropertyDescriptor(e,s);(c==null||c.writable)&&(e[s]=Lg(t[s],s,n,r,i))}}function zg(e){switch(pg(e)){case vg:case Cg:case wg:case Eg:case _g:case bg:case Pg:case Fg:case jg:case Mg:case Ng:case xg:case gg:case Tg:case mg:case Sg:case hg:case yg:case Dg:case Og:case kg:case Ag:return!0;default:return!1}}function Bg(e,t){return Ig(e,(n,r,i,a)=>{let o=t?.(n,r,i,a);if(o!=null)return o;if(typeof e==`object`)switch(Object.prototype.toString.call(e)){case gg:case hg:case _g:{let t=new e.constructor(e?.valueOf());return Rg(t,e),t}case vg:{let t={};return Rg(t,e),t.length=e.length,t[Symbol.iterator]=e[Symbol.iterator],t}default:return}})}function Vg(e){return Bg(e)}function Hg(e){return typeof e==`object`&&!!e&&pg(e)===`[object Arguments]`}function Ug(e){return lg(e)}function Wg(e){if(typeof e!=`object`||!e)return!1;if(Object.getPrototypeOf(e)===null)return!0;if(Object.prototype.toString.call(e)!==`[object Object]`){let t=e[Symbol.toStringTag];return t==null||!Object.getOwnPropertyDescriptor(e,Symbol.toStringTag)?.writable?!1:e.toString()===`[object ${t}]`}let t=e;for(;Object.getPrototypeOf(t)!==null;)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}function Gg(e,...t){let n=t.slice(0,-1),r=t[t.length-1],i=e;for(let e=0;e<n.length;e++){let t=n[e];i=Kg(i,t,r,new Map)}return i}function Kg(e,t,n,r){if(cg(e)&&(e=Object(e)),typeof t!=`object`||!t)return e;if(r.has(t))return ug(r.get(t));if(r.set(t,e),Array.isArray(t)){t=t.slice();for(let e=0;e<t.length;e++)t[e]=t[e]??void 0}let i=[...Object.keys(t),...fg(t)];for(let a=0;a<i.length;a++){let o=i[a],s=t[o],c=e[o];if(Hg(s)&&(s={...s}),Hg(c)&&(c={...c}),typeof Buffer<`u`&&Buffer.isBuffer(s)&&(s=Vg(s)),Array.isArray(s))if(typeof c==`object`&&c){let e=[],t=Reflect.ownKeys(c);for(let n=0;n<t.length;n++){let r=t[n];e[r]=c[r]}c=e}else c=[];let l=n(c,s,o,e,t,r);l==null?Array.isArray(s)||dg(c)&&dg(s)?e[o]=Kg(c,s,n,r):c==null&&Wg(s)?e[o]=Kg({},s,n,r):c==null&&Ug(s)?e[o]=Vg(s):(c===void 0||s!==void 0)&&(e[o]=s):e[o]=l}return e}function qg(e,...t){return Gg(e,...t,sg)}var Jg=Object.defineProperty,Yg=Object.defineProperties,Xg=Object.getOwnPropertyDescriptors,Zg=Object.getOwnPropertySymbols,Qg=Object.prototype.hasOwnProperty,$g=Object.prototype.propertyIsEnumerable,e_=(e,t,n)=>t in e?Jg(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,t_=(e,t)=>{for(var n in t||={})Qg.call(t,n)&&e_(e,n,t[n]);if(Zg)for(var n of Zg(t))$g.call(t,n)&&e_(e,n,t[n]);return e},n_=(e,t)=>Yg(e,Xg(t));function r_(e,t,n){let r=Ni(e);return t.rpcMap?.[r.reference]||`${rg}?chainId=${r.namespace}:${r.reference}&projectId=${n}`}function i_(e){return e.includes(`:`)?e.split(`:`)[1]:e}function a_(e){return e.map(e=>`${e.split(`:`)[0]}:${e.split(`:`)[1]}`)}function o_(e,t){let n=Object.keys(t.namespaces).filter(t=>t.includes(e));if(!n.length)return[];let r=[];return n.forEach(e=>{let n=t.namespaces[e].accounts;r.push(...n)}),r}function s_(e={},t={}){return qg(c_(e),c_(t))}function c_(e){let t={};if(!Tl(e))return t;for(let[n,r]of Object.entries(e)){let e=vl(n)?[n]:r.chains,i=r.methods||[],a=r.events||[],o=r.rpcMap||{},s=yl(n);t[s]=n_(t_(t_({},t[s]),r),{chains:oa(e,t[s]?.chains),methods:oa(i,t[s]?.methods),events:oa(a,t[s]?.events),rpcMap:t_(t_({},o),t[s]?.rpcMap)})}return t}function l_(e){return e.includes(`:`)?e.split(`:`)[2]:e}function u_(e){let t={};for(let[n,r]of Object.entries(e)){let e=r.methods||[],i=r.events||[],a=r.accounts||[];t[n]={chains:vl(n)?[n]:r.chains?r.chains:a_(r.accounts),methods:e,events:i,accounts:a}}return t}function d_(e){return typeof e==`number`?e:e.includes(`0x`)?parseInt(e,16):(e=e.includes(`:`)?e.split(`:`)[1]:e,isNaN(Number(e))?e:Number(e))}var f_={},$=e=>f_[e],p_=(e,t)=>{f_[e]=t},m_=Object.defineProperty,h_=(e,t,n)=>t in e?m_(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,g_=(e,t,n)=>h_(e,typeof t==`symbol`?t:t+``,n),__=class{constructor(e){g_(this,`name`,`polkadot`),g_(this,`client`),g_(this,`httpProviders`),g_(this,`events`),g_(this,`namespace`),g_(this,`chainId`),this.namespace=e.namespace,this.events=$(`events`),this.client=$(`client`),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(e){this.namespace=Object.assign(this.namespace,e)}requestAccounts(){return this.getAccounts()}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;let e=this.namespace.chains[0];if(!e)throw Error(`ChainId not found`);return e.split(`:`)[1]}request(e){return this.namespace.methods.includes(e.request.method)?this.client.request(e):this.getHttpProvider().request(e.request)}setDefaultChain(e,t){this.httpProviders[e]||this.setHttpProvider(e,t),this.chainId=e,this.events.emit(og.DEFAULT_CHAIN_CHANGED,`${this.name}:${e}`)}getAccounts(){let e=this.namespace.accounts;return e&&e.filter(e=>e.split(`:`)[1]===this.chainId.toString()).map(e=>e.split(`:`)[2])||[]}createHttpProviders(){let e={};return this.namespace.chains.forEach(t=>{let n=i_(t);e[n]=this.createHttpProvider(n,this.namespace.rpcMap?.[t])}),e}getHttpProvider(){let e=`${this.name}:${this.chainId}`,t=this.httpProviders[e];if(typeof t>`u`)throw Error(`JSON-RPC provider for ${e} not found`);return t}setHttpProvider(e,t){let n=this.createHttpProvider(e,t);n&&(this.httpProviders[e]=n)}createHttpProvider(e,t){let n=t||r_(e,this.namespace,this.client.core.projectId);if(!n)throw Error(`No RPC url provided for chainId: ${e}`);return new ye(new Se(n,$(`disableProviderPing`)))}},v_=Object.defineProperty,y_=Object.defineProperties,b_=Object.getOwnPropertyDescriptors,x_=Object.getOwnPropertySymbols,S_=Object.prototype.hasOwnProperty,C_=Object.prototype.propertyIsEnumerable,w_=(e,t,n)=>t in e?v_(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,T_=(e,t)=>{for(var n in t||={})S_.call(t,n)&&w_(e,n,t[n]);if(x_)for(var n of x_(t))C_.call(t,n)&&w_(e,n,t[n]);return e},E_=(e,t)=>y_(e,b_(t)),D_=(e,t,n)=>w_(e,typeof t==`symbol`?t:t+``,n),O_=class{constructor(e){D_(this,`name`,`eip155`),D_(this,`client`),D_(this,`chainId`),D_(this,`namespace`),D_(this,`httpProviders`),D_(this,`events`),this.namespace=e.namespace,this.events=$(`events`),this.client=$(`client`),this.httpProviders=this.createHttpProviders(),this.chainId=parseInt(this.getDefaultChain())}async request(e){switch(e.request.method){case`eth_requestAccounts`:return this.getAccounts();case`eth_accounts`:return this.getAccounts();case`wallet_switchEthereumChain`:return await this.handleSwitchChain(e);case`eth_chainId`:return parseInt(this.getDefaultChain());case`wallet_getCapabilities`:return await this.getCapabilities(e);case`wallet_getCallsStatus`:return await this.getCallStatus(e)}return this.namespace.methods.includes(e.request.method)?await this.client.request(e):this.getHttpProvider().request(e.request)}updateNamespace(e){this.namespace=Object.assign(this.namespace,e)}setDefaultChain(e,t){this.httpProviders[e]||this.setHttpProvider(parseInt(e),t),this.chainId=parseInt(e),this.events.emit(og.DEFAULT_CHAIN_CHANGED,`${this.name}:${e}`)}requestAccounts(){return this.getAccounts()}getDefaultChain(){if(this.chainId)return this.chainId.toString();if(this.namespace.defaultChain)return this.namespace.defaultChain;let e=this.namespace.chains[0];if(!e)throw Error(`ChainId not found`);return e.split(`:`)[1]}createHttpProvider(e,t){let n=t||r_(`${this.name}:${e}`,this.namespace,this.client.core.projectId);if(!n)throw Error(`No RPC url provided for chainId: ${e}`);return new ye(new Se(n,$(`disableProviderPing`)))}setHttpProvider(e,t){let n=this.createHttpProvider(e,t);n&&(this.httpProviders[e]=n)}createHttpProviders(){let e={};return this.namespace.chains.forEach(t=>{let n=parseInt(i_(t));e[n]=this.createHttpProvider(n,this.namespace.rpcMap?.[t])}),e}getAccounts(){let e=this.namespace.accounts;return e?[...new Set(e.filter(e=>e.split(`:`)[1]===this.chainId.toString()).map(e=>e.split(`:`)[2]))]:[]}getHttpProvider(){let e=this.chainId,t=this.httpProviders[e];if(typeof t>`u`)throw Error(`JSON-RPC provider for ${e} not found`);return t}async handleSwitchChain(e){let t=e.request.params?e.request.params[0]?.chainId:`0x0`;t=t.startsWith(`0x`)?t:`0x${t}`;let n=parseInt(t,16);if(this.isChainApproved(n))this.setDefaultChain(`${n}`);else if(this.namespace.methods.includes(`wallet_switchEthereumChain`))await this.client.request({topic:e.topic,request:{method:e.request.method,params:[{chainId:t}]},chainId:this.namespace.chains?.[0]}),this.setDefaultChain(`${n}`);else throw Error(`Failed to switch to chain 'eip155:${n}'. The chain is not approved or the wallet does not support 'wallet_switchEthereumChain' method.`);return null}isChainApproved(e){return this.namespace.chains.includes(`${this.name}:${e}`)}async getCapabilities(e){let t=e.request?.params?.[0];if(!t)throw Error("Missing address parameter in `wallet_getCapabilities` request");let n=this.client.session.get(e.topic),r=n?.sessionProperties?.capabilities||{};if(r!=null&&r[t])return r?.[t];let i=await this.client.request(e);try{await this.client.session.update(e.topic,{sessionProperties:E_(T_({},n.sessionProperties||{}),{capabilities:E_(T_({},r||{}),{[t]:i})})})}catch(e){console.warn(`Failed to update session with capabilities`,e)}return i}async getCallStatus(e){let t=this.client.session.get(e.topic),n=t.sessionProperties?.bundler_name;if(n){let t=this.getBundlerUrl(e.chainId,n);try{return await this.getUserOperationReceipt(t,e)}catch(e){console.warn(`Failed to fetch call status from bundler`,e,t)}}let r=t.sessionProperties?.bundler_url;if(r)try{return await this.getUserOperationReceipt(r,e)}catch(e){console.warn(`Failed to fetch call status from custom bundler`,e,r)}if(this.namespace.methods.includes(e.request.method))return await this.client.request(e);throw Error(`Fetching call status not approved by the wallet.`)}async getUserOperationReceipt(e,t){let n=new URL(e),r=await fetch(n,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(N(`eth_getUserOperationReceipt`,[t.request.params?.[0]]))});if(!r.ok)throw Error(`Failed to fetch user operation receipt - ${r.status}`);return await r.json()}getBundlerUrl(e,t){return`${ag}?projectId=${this.client.core.projectId}&chainId=${e}&bundler=${t}`}},k_=Object.defineProperty,A_=(e,t,n)=>t in e?k_(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,j_=(e,t,n)=>A_(e,typeof t==`symbol`?t:t+``,n),M_=class{constructor(e){j_(this,`name`,`solana`),j_(this,`client`),j_(this,`httpProviders`),j_(this,`events`),j_(this,`namespace`),j_(this,`chainId`),this.namespace=e.namespace,this.events=$(`events`),this.client=$(`client`),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(e){this.namespace=Object.assign(this.namespace,e)}requestAccounts(){return this.getAccounts()}request(e){return this.namespace.methods.includes(e.request.method)?this.client.request(e):this.getHttpProvider().request(e.request)}setDefaultChain(e,t){this.httpProviders[e]||this.setHttpProvider(e,t),this.chainId=e,this.events.emit(og.DEFAULT_CHAIN_CHANGED,`${this.name}:${e}`)}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;let e=this.namespace.chains[0];if(!e)throw Error(`ChainId not found`);return e.split(`:`)[1]}getAccounts(){let e=this.namespace.accounts;return e?[...new Set(e.filter(e=>e.split(`:`)[1]===this.chainId.toString()).map(e=>e.split(`:`)[2]))]:[]}createHttpProviders(){let e={};return this.namespace.chains.forEach(t=>{let n=i_(t);e[n]=this.createHttpProvider(n,this.namespace.rpcMap?.[t])}),e}getHttpProvider(){let e=`${this.name}:${this.chainId}`,t=this.httpProviders[e];if(typeof t>`u`)throw Error(`JSON-RPC provider for ${e} not found`);return t}setHttpProvider(e,t){let n=this.createHttpProvider(e,t);n&&(this.httpProviders[e]=n)}createHttpProvider(e,t){let n=t||r_(e,this.namespace,this.client.core.projectId);if(!n)throw Error(`No RPC url provided for chainId: ${e}`);return new ye(new Se(n,$(`disableProviderPing`)))}},N_=Object.defineProperty,P_=(e,t,n)=>t in e?N_(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,F_=(e,t,n)=>P_(e,typeof t==`symbol`?t:t+``,n),I_=class{constructor(e){F_(this,`name`,`cosmos`),F_(this,`client`),F_(this,`httpProviders`),F_(this,`events`),F_(this,`namespace`),F_(this,`chainId`),this.namespace=e.namespace,this.events=$(`events`),this.client=$(`client`),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(e){this.namespace=Object.assign(this.namespace,e)}requestAccounts(){return this.getAccounts()}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;let e=this.namespace.chains[0];if(!e)throw Error(`ChainId not found`);return e.split(`:`)[1]}request(e){return this.namespace.methods.includes(e.request.method)?this.client.request(e):this.getHttpProvider().request(e.request)}setDefaultChain(e,t){this.httpProviders[e]||this.setHttpProvider(e,t),this.chainId=e,this.events.emit(og.DEFAULT_CHAIN_CHANGED,`${this.name}:${this.chainId}`)}getAccounts(){let e=this.namespace.accounts;return e?[...new Set(e.filter(e=>e.split(`:`)[1]===this.chainId.toString()).map(e=>e.split(`:`)[2]))]:[]}createHttpProviders(){let e={};return this.namespace.chains.forEach(t=>{let n=i_(t);e[n]=this.createHttpProvider(n,this.namespace.rpcMap?.[t])}),e}getHttpProvider(){let e=`${this.name}:${this.chainId}`,t=this.httpProviders[e];if(typeof t>`u`)throw Error(`JSON-RPC provider for ${e} not found`);return t}setHttpProvider(e,t){let n=this.createHttpProvider(e,t);n&&(this.httpProviders[e]=n)}createHttpProvider(e,t){let n=t||r_(e,this.namespace,this.client.core.projectId);if(!n)throw Error(`No RPC url provided for chainId: ${e}`);return new ye(new Se(n,$(`disableProviderPing`)))}},L_=Object.defineProperty,R_=(e,t,n)=>t in e?L_(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,z_=(e,t,n)=>R_(e,typeof t==`symbol`?t:t+``,n),B_=class{constructor(e){z_(this,`name`,`algorand`),z_(this,`client`),z_(this,`httpProviders`),z_(this,`events`),z_(this,`namespace`),z_(this,`chainId`),this.namespace=e.namespace,this.events=$(`events`),this.client=$(`client`),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(e){this.namespace=Object.assign(this.namespace,e)}requestAccounts(){return this.getAccounts()}request(e){return this.namespace.methods.includes(e.request.method)?this.client.request(e):this.getHttpProvider().request(e.request)}setDefaultChain(e,t){if(!this.httpProviders[e]){let n=t||r_(`${this.name}:${e}`,this.namespace,this.client.core.projectId);if(!n)throw Error(`No RPC url provided for chainId: ${e}`);this.setHttpProvider(e,n)}this.chainId=e,this.events.emit(og.DEFAULT_CHAIN_CHANGED,`${this.name}:${this.chainId}`)}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;let e=this.namespace.chains[0];if(!e)throw Error(`ChainId not found`);return e.split(`:`)[1]}getAccounts(){let e=this.namespace.accounts;return e?[...new Set(e.filter(e=>e.split(`:`)[1]===this.chainId.toString()).map(e=>e.split(`:`)[2]))]:[]}createHttpProviders(){let e={};return this.namespace.chains.forEach(t=>{e[t]=this.createHttpProvider(t,this.namespace.rpcMap?.[t])}),e}getHttpProvider(){let e=`${this.name}:${this.chainId}`,t=this.httpProviders[e];if(typeof t>`u`)throw Error(`JSON-RPC provider for ${e} not found`);return t}setHttpProvider(e,t){let n=this.createHttpProvider(e,t);n&&(this.httpProviders[e]=n)}createHttpProvider(e,t){let n=t||r_(e,this.namespace,this.client.core.projectId);return typeof n>`u`?void 0:new ye(new Se(n,$(`disableProviderPing`)))}},V_=Object.defineProperty,H_=(e,t,n)=>t in e?V_(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,U_=(e,t,n)=>H_(e,typeof t==`symbol`?t:t+``,n),W_=class{constructor(e){U_(this,`name`,`cip34`),U_(this,`client`),U_(this,`httpProviders`),U_(this,`events`),U_(this,`namespace`),U_(this,`chainId`),this.namespace=e.namespace,this.events=$(`events`),this.client=$(`client`),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(e){this.namespace=Object.assign(this.namespace,e)}requestAccounts(){return this.getAccounts()}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;let e=this.namespace.chains[0];if(!e)throw Error(`ChainId not found`);return e.split(`:`)[1]}request(e){return this.namespace.methods.includes(e.request.method)?this.client.request(e):this.getHttpProvider().request(e.request)}setDefaultChain(e,t){this.httpProviders[e]||this.setHttpProvider(e,t),this.chainId=e,this.events.emit(og.DEFAULT_CHAIN_CHANGED,`${this.name}:${this.chainId}`)}getAccounts(){let e=this.namespace.accounts;return e?[...new Set(e.filter(e=>e.split(`:`)[1]===this.chainId.toString()).map(e=>e.split(`:`)[2]))]:[]}createHttpProviders(){let e={};return this.namespace.chains.forEach(t=>{let n=this.getCardanoRPCUrl(t),r=i_(t);e[r]=this.createHttpProvider(r,n)}),e}getHttpProvider(){let e=`${this.name}:${this.chainId}`,t=this.httpProviders[e];if(typeof t>`u`)throw Error(`JSON-RPC provider for ${e} not found`);return t}getCardanoRPCUrl(e){let t=this.namespace.rpcMap;if(t)return t[e]}setHttpProvider(e,t){let n=this.createHttpProvider(e,t);n&&(this.httpProviders[e]=n)}createHttpProvider(e,t){let n=t||this.getCardanoRPCUrl(e);if(!n)throw Error(`No RPC url provided for chainId: ${e}`);return new ye(new Se(n,$(`disableProviderPing`)))}},G_=Object.defineProperty,K_=(e,t,n)=>t in e?G_(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,q_=(e,t,n)=>K_(e,typeof t==`symbol`?t:t+``,n),J_=class{constructor(e){q_(this,`name`,`elrond`),q_(this,`client`),q_(this,`httpProviders`),q_(this,`events`),q_(this,`namespace`),q_(this,`chainId`),this.namespace=e.namespace,this.events=$(`events`),this.client=$(`client`),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(e){this.namespace=Object.assign(this.namespace,e)}requestAccounts(){return this.getAccounts()}request(e){return this.namespace.methods.includes(e.request.method)?this.client.request(e):this.getHttpProvider().request(e.request)}setDefaultChain(e,t){this.httpProviders[e]||this.setHttpProvider(e,t),this.chainId=e,this.events.emit(og.DEFAULT_CHAIN_CHANGED,`${this.name}:${e}`)}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;let e=this.namespace.chains[0];if(!e)throw Error(`ChainId not found`);return e.split(`:`)[1]}getAccounts(){let e=this.namespace.accounts;return e?[...new Set(e.filter(e=>e.split(`:`)[1]===this.chainId.toString()).map(e=>e.split(`:`)[2]))]:[]}createHttpProviders(){let e={};return this.namespace.chains.forEach(t=>{let n=i_(t);e[n]=this.createHttpProvider(n,this.namespace.rpcMap?.[t])}),e}getHttpProvider(){let e=`${this.name}:${this.chainId}`,t=this.httpProviders[e];if(typeof t>`u`)throw Error(`JSON-RPC provider for ${e} not found`);return t}setHttpProvider(e,t){let n=this.createHttpProvider(e,t);n&&(this.httpProviders[e]=n)}createHttpProvider(e,t){let n=t||r_(e,this.namespace,this.client.core.projectId);if(!n)throw Error(`No RPC url provided for chainId: ${e}`);return new ye(new Se(n,$(`disableProviderPing`)))}},Y_=Object.defineProperty,X_=(e,t,n)=>t in e?Y_(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Z_=(e,t,n)=>X_(e,typeof t==`symbol`?t:t+``,n),Q_=class{constructor(e){Z_(this,`name`,`multiversx`),Z_(this,`client`),Z_(this,`httpProviders`),Z_(this,`events`),Z_(this,`namespace`),Z_(this,`chainId`),this.namespace=e.namespace,this.events=$(`events`),this.client=$(`client`),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(e){this.namespace=Object.assign(this.namespace,e)}requestAccounts(){return this.getAccounts()}request(e){return this.namespace.methods.includes(e.request.method)?this.client.request(e):this.getHttpProvider().request(e.request)}setDefaultChain(e,t){this.httpProviders[e]||this.setHttpProvider(e,t),this.chainId=e,this.events.emit(og.DEFAULT_CHAIN_CHANGED,`${this.name}:${e}`)}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;let e=this.namespace.chains[0];if(!e)throw Error(`ChainId not found`);return e.split(`:`)[1]}getAccounts(){let e=this.namespace.accounts;return e?[...new Set(e.filter(e=>e.split(`:`)[1]===this.chainId.toString()).map(e=>e.split(`:`)[2]))]:[]}createHttpProviders(){let e={};return this.namespace.chains.forEach(t=>{let n=i_(t);e[n]=this.createHttpProvider(n,this.namespace.rpcMap?.[t])}),e}getHttpProvider(){let e=`${this.name}:${this.chainId}`,t=this.httpProviders[e];if(typeof t>`u`)throw Error(`JSON-RPC provider for ${e} not found`);return t}setHttpProvider(e,t){let n=this.createHttpProvider(e,t);n&&(this.httpProviders[e]=n)}createHttpProvider(e,t){let n=t||r_(e,this.namespace,this.client.core.projectId);if(!n)throw Error(`No RPC url provided for chainId: ${e}`);return new ye(new Se(n,$(`disableProviderPing`)))}},$_=Object.defineProperty,ev=(e,t,n)=>t in e?$_(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,tv=(e,t,n)=>ev(e,typeof t==`symbol`?t:t+``,n),nv=class{constructor(e){tv(this,`name`,`near`),tv(this,`client`),tv(this,`httpProviders`),tv(this,`events`),tv(this,`namespace`),tv(this,`chainId`),this.namespace=e.namespace,this.events=$(`events`),this.client=$(`client`),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(e){this.namespace=Object.assign(this.namespace,e)}requestAccounts(){return this.getAccounts()}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;let e=this.namespace.chains[0];if(!e)throw Error(`ChainId not found`);return e.split(`:`)[1]}request(e){return this.namespace.methods.includes(e.request.method)?this.client.request(e):this.getHttpProvider().request(e.request)}setDefaultChain(e,t){if(this.chainId=e,!this.httpProviders[e]){let n=t||r_(`${this.name}:${e}`,this.namespace);if(!n)throw Error(`No RPC url provided for chainId: ${e}`);this.setHttpProvider(e,n)}this.events.emit(og.DEFAULT_CHAIN_CHANGED,`${this.name}:${this.chainId}`)}getAccounts(){let e=this.namespace.accounts;return e&&e.filter(e=>e.split(`:`)[1]===this.chainId.toString()).map(e=>e.split(`:`)[2])||[]}createHttpProviders(){let e={};return this.namespace.chains.forEach(t=>{e[t]=this.createHttpProvider(t,this.namespace.rpcMap?.[t])}),e}getHttpProvider(){let e=`${this.name}:${this.chainId}`,t=this.httpProviders[e];if(typeof t>`u`)throw Error(`JSON-RPC provider for ${e} not found`);return t}setHttpProvider(e,t){let n=this.createHttpProvider(e,t);n&&(this.httpProviders[e]=n)}createHttpProvider(e,t){let n=t||r_(e,this.namespace);return typeof n>`u`?void 0:new ye(new Se(n,$(`disableProviderPing`)))}},rv=Object.defineProperty,iv=(e,t,n)=>t in e?rv(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,av=(e,t,n)=>iv(e,typeof t==`symbol`?t:t+``,n),ov=class{constructor(e){av(this,`name`,`tezos`),av(this,`client`),av(this,`httpProviders`),av(this,`events`),av(this,`namespace`),av(this,`chainId`),this.namespace=e.namespace,this.events=$(`events`),this.client=$(`client`),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(e){this.namespace=Object.assign(this.namespace,e)}requestAccounts(){return this.getAccounts()}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;let e=this.namespace.chains[0];if(!e)throw Error(`ChainId not found`);return e.split(`:`)[1]}request(e){return this.namespace.methods.includes(e.request.method)?this.client.request(e):this.getHttpProvider().request(e.request)}setDefaultChain(e,t){if(this.chainId=e,!this.httpProviders[e]){let n=t||r_(`${this.name}:${e}`,this.namespace);if(!n)throw Error(`No RPC url provided for chainId: ${e}`);this.setHttpProvider(e,n)}this.events.emit(og.DEFAULT_CHAIN_CHANGED,`${this.name}:${this.chainId}`)}getAccounts(){let e=this.namespace.accounts;return e&&e.filter(e=>e.split(`:`)[1]===this.chainId.toString()).map(e=>e.split(`:`)[2])||[]}createHttpProviders(){let e={};return this.namespace.chains.forEach(t=>{e[t]=this.createHttpProvider(t)}),e}getHttpProvider(){let e=`${this.name}:${this.chainId}`,t=this.httpProviders[e];if(typeof t>`u`)throw Error(`JSON-RPC provider for ${e} not found`);return t}setHttpProvider(e,t){let n=this.createHttpProvider(e,t);n&&(this.httpProviders[e]=n)}createHttpProvider(e,t){let n=t||r_(e,this.namespace);return typeof n>`u`?void 0:new ye(new Se(n))}},sv=Object.defineProperty,cv=(e,t,n)=>t in e?sv(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,lv=(e,t,n)=>cv(e,typeof t==`symbol`?t:t+``,n),uv=class{constructor(e){lv(this,`name`,ig),lv(this,`client`),lv(this,`httpProviders`),lv(this,`events`),lv(this,`namespace`),lv(this,`chainId`),this.namespace=e.namespace,this.events=$(`events`),this.client=$(`client`),this.chainId=this.getDefaultChain(),this.httpProviders=this.createHttpProviders()}updateNamespace(e){this.namespace.chains=[...new Set((this.namespace.chains||[]).concat(e.chains||[]))],this.namespace.accounts=[...new Set((this.namespace.accounts||[]).concat(e.accounts||[]))],this.namespace.methods=[...new Set((this.namespace.methods||[]).concat(e.methods||[]))],this.namespace.events=[...new Set((this.namespace.events||[]).concat(e.events||[]))],this.httpProviders=this.createHttpProviders()}requestAccounts(){return this.getAccounts()}request(e){return this.namespace.methods.includes(e.request.method)?this.client.request(e):this.getHttpProvider(e.chainId).request(e.request)}setDefaultChain(e,t){this.httpProviders[e]||this.setHttpProvider(e,t),this.chainId=e,this.events.emit(og.DEFAULT_CHAIN_CHANGED,`${this.name}:${e}`)}getDefaultChain(){if(this.chainId)return this.chainId;if(this.namespace.defaultChain)return this.namespace.defaultChain;let e=this.namespace.chains[0];if(!e)throw Error(`ChainId not found`);return e.split(`:`)[1]}getAccounts(){let e=this.namespace.accounts;return e?[...new Set(e.filter(e=>e.split(`:`)[1]===this.chainId.toString()).map(e=>e.split(`:`)[2]))]:[]}createHttpProviders(){var e;let t={};return(e=this.namespace?.accounts)==null||e.forEach(e=>{let n=Ni(e);t[`${n.namespace}:${n.reference}`]=this.createHttpProvider(e)}),t}getHttpProvider(e){let t=this.httpProviders[e];if(typeof t>`u`)throw Error(`JSON-RPC provider for ${e} not found`);return t}setHttpProvider(e,t){let n=this.createHttpProvider(e,t);n&&(this.httpProviders[e]=n)}createHttpProvider(e,t){let n=t||r_(e,this.namespace,this.client.core.projectId);if(!n)throw Error(`No RPC url provided for chainId: ${e}`);return new ye(new Se(n,$(`disableProviderPing`)))}},dv=Object.defineProperty,fv=Object.defineProperties,pv=Object.getOwnPropertyDescriptors,mv=Object.getOwnPropertySymbols,hv=Object.prototype.hasOwnProperty,gv=Object.prototype.propertyIsEnumerable,_v=(e,t,n)=>t in e?dv(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,vv=(e,t)=>{for(var n in t||={})hv.call(t,n)&&_v(e,n,t[n]);if(mv)for(var n of mv(t))gv.call(t,n)&&_v(e,n,t[n]);return e},yv=(e,t)=>fv(e,pv(t)),bv=(e,t,n)=>_v(e,typeof t==`symbol`?t:t+``,n),xv=class e{constructor(e){bv(this,`client`),bv(this,`namespaces`),bv(this,`optionalNamespaces`),bv(this,`sessionProperties`),bv(this,`scopedProperties`),bv(this,`events`,new it.default),bv(this,`rpcProviders`,{}),bv(this,`session`),bv(this,`providerOpts`),bv(this,`logger`),bv(this,`uri`),bv(this,`disableProviderPing`,!1),this.providerOpts=e,this.logger=typeof e?.logger<`u`&&typeof e?.logger!=`string`?e.logger:(0,me.default)(te({level:e?.logger||eg})),this.disableProviderPing=e?.disableProviderPing||!1}static async init(t){let n=new e(t);return await n.initialize(),n}async request(e,t,n){let[r,i]=this.validateChain(t);if(!this.session)throw Error(`Please call connect() before request()`);return await this.getProvider(r).request({request:vv({},e),chainId:`${r}:${i}`,topic:this.session.topic,expiry:n})}sendAsync(e,t,n,r){let i=new Date().getTime();this.request(e,n,r).then(e=>t(null,ke(i,e))).catch(e=>t(e,void 0))}async enable(){if(!this.client)throw Error(`Sign Client not initialized`);return this.session||await this.connect({namespaces:this.namespaces,optionalNamespaces:this.optionalNamespaces,sessionProperties:this.sessionProperties,scopedProperties:this.scopedProperties}),await this.requestAccounts()}async disconnect(){if(!this.session)throw Error(`Please call connect() before enable()`);await this.client.disconnect({topic:this.session?.topic,reason:W(`USER_DISCONNECTED`)}),await this.cleanup()}async connect(e){if(!this.client)throw Error(`Sign Client not initialized`);if(this.setNamespaces(e),await this.cleanupPendingPairings(),!e.skipPairing)return await this.pair(e.pairingTopic)}async authenticate(e,t){if(!this.client)throw Error(`Sign Client not initialized`);this.setNamespaces(e),await this.cleanupPendingPairings();let{uri:n,response:r}=await this.client.authenticate(e,t);n&&(this.uri=n,this.events.emit(`display_uri`,n));let i=await r();if(this.session=i.session,this.session){let e=u_(this.session.namespaces);this.namespaces=s_(this.namespaces,e),await this.persist(`namespaces`,this.namespaces),this.onConnect()}return i}on(e,t){this.events.on(e,t)}once(e,t){this.events.once(e,t)}removeListener(e,t){this.events.removeListener(e,t)}off(e,t){this.events.off(e,t)}get isWalletConnect(){return!0}async pair(e){let{uri:t,approval:n}=await this.client.connect({pairingTopic:e,requiredNamespaces:this.namespaces,optionalNamespaces:this.optionalNamespaces,sessionProperties:this.sessionProperties,scopedProperties:this.scopedProperties});t&&(this.uri=t,this.events.emit(`display_uri`,t));let r=await n();this.session=r;let i=u_(r.namespaces);return this.namespaces=s_(this.namespaces,i),await this.persist(`namespaces`,this.namespaces),await this.persist(`optionalNamespaces`,this.optionalNamespaces),this.onConnect(),this.session}setDefaultChain(e,t){try{if(!this.session)return;let[n,r]=this.validateChain(e),i=this.getProvider(n);i.name===ig?i.setDefaultChain(`${n}:${r}`,t):i.setDefaultChain(r,t)}catch(e){if(!/Please call connect/.test(e.message))throw e}}async cleanupPendingPairings(e={}){this.logger.info(`Cleaning up inactive pairings...`);let t=this.client.pairing.getAll();if(wl(t)){for(let n of t)e.deletePairings?this.client.core.expirer.set(n.topic,0):await this.client.core.relayer.subscriber.unsubscribe(n.topic);this.logger.info(`Inactive pairings cleared: ${t.length}`)}}abortPairingAttempt(){this.logger.warn(`abortPairingAttempt is deprecated. This is now a no-op.`)}async checkStorage(){this.namespaces=await this.getFromStore(`namespaces`)||{},this.optionalNamespaces=await this.getFromStore(`optionalNamespaces`)||{},this.session&&this.createProviders()}async initialize(){this.logger.trace(`Initialized`),await this.createClient(),await this.checkStorage(),this.registerEventListeners()}async createClient(){if(this.client=this.providerOpts.client||await $h.init({core:this.providerOpts.core,logger:this.providerOpts.logger||eg,relayUrl:this.providerOpts.relayUrl||tg,projectId:this.providerOpts.projectId,metadata:this.providerOpts.metadata,storageOptions:this.providerOpts.storageOptions,storage:this.providerOpts.storage,name:this.providerOpts.name,customStoragePrefix:this.providerOpts.customStoragePrefix,telemetryEnabled:this.providerOpts.telemetryEnabled}),this.providerOpts.session)try{this.session=this.client.session.get(this.providerOpts.session.topic)}catch(e){throw this.logger.error(`Failed to get session`,e),Error(`The provided session: ${this.providerOpts?.session?.topic} doesn't exist in the Sign client`)}else{let e=this.client.session.getAll();this.session=e[0]}this.logger.trace(`SignClient Initialized`)}createProviders(){if(!this.client)throw Error(`Sign Client not initialized`);if(!this.session)throw Error(`Session not initialized. Please call connect() before enable()`);let e=[...new Set(Object.keys(this.session.namespaces).map(e=>yl(e)))];p_(`client`,this.client),p_(`events`,this.events),p_(`disableProviderPing`,this.disableProviderPing),e.forEach(e=>{if(!this.session)return;let t=o_(e,this.session),n=a_(t),r=yv(vv({},s_(this.namespaces,this.optionalNamespaces)[e]),{accounts:t,chains:n});switch(e){case`eip155`:this.rpcProviders[e]=new O_({namespace:r});break;case`algorand`:this.rpcProviders[e]=new B_({namespace:r});break;case`solana`:this.rpcProviders[e]=new M_({namespace:r});break;case`cosmos`:this.rpcProviders[e]=new I_({namespace:r});break;case`polkadot`:this.rpcProviders[e]=new __({namespace:r});break;case`cip34`:this.rpcProviders[e]=new W_({namespace:r});break;case`elrond`:this.rpcProviders[e]=new J_({namespace:r});break;case`multiversx`:this.rpcProviders[e]=new Q_({namespace:r});break;case`near`:this.rpcProviders[e]=new nv({namespace:r});break;case`tezos`:this.rpcProviders[e]=new ov({namespace:r});break;default:this.rpcProviders[ig]?this.rpcProviders[ig].updateNamespace(r):this.rpcProviders[ig]=new uv({namespace:r})}})}registerEventListeners(){if(typeof this.client>`u`)throw Error(`Sign Client is not initialized`);this.client.on(`session_ping`,e=>{let{topic:t}=e;t===this.session?.topic&&this.events.emit(`session_ping`,e)}),this.client.on(`session_event`,e=>{let{params:t,topic:n}=e;if(n!==this.session?.topic)return;let{event:r}=t;if(r.name===`accountsChanged`){let e=r.data;e&&wl(e)&&this.events.emit(`accountsChanged`,e.map(l_))}else if(r.name===`chainChanged`){let e=t.chainId,n=t.event.data,r=yl(e),i=d_(e)===d_(n)?e:`${r}:${d_(n)}`;this.onChainChanged(i)}else this.events.emit(r.name,r.data);this.events.emit(`session_event`,e)}),this.client.on(`session_update`,({topic:e,params:t})=>{if(e!==this.session?.topic)return;let{namespaces:n}=t,r=this.client?.session.get(e);this.session=yv(vv({},r),{namespaces:n}),this.onSessionUpdate(),this.events.emit(`session_update`,{topic:e,params:t})}),this.client.on(`session_delete`,async e=>{e.topic===this.session?.topic&&(await this.cleanup(),this.events.emit(`session_delete`,e),this.events.emit(`disconnect`,yv(vv({},W(`USER_DISCONNECTED`)),{data:e.topic})))}),this.on(og.DEFAULT_CHAIN_CHANGED,e=>{this.onChainChanged(e,!0)})}getProvider(e){return this.rpcProviders[e]||this.rpcProviders[ig]}onSessionUpdate(){Object.keys(this.rpcProviders).forEach(e=>{this.getProvider(e).updateNamespace(this.session?.namespaces[e])})}setNamespaces(e){let{namespaces:t,optionalNamespaces:n,sessionProperties:r,scopedProperties:i}=e;t&&Object.keys(t).length&&(this.namespaces=t),n&&Object.keys(n).length&&(this.optionalNamespaces=n),this.sessionProperties=r,this.scopedProperties=i}validateChain(e){let[t,n]=e?.split(`:`)||[``,``];if(!this.namespaces||!Object.keys(this.namespaces).length)return[t,n];if(t&&!Object.keys(this.namespaces||{}).map(e=>yl(e)).includes(t))throw Error(`Namespace '${t}' is not configured. Please call connect() first with namespace config.`);if(t&&n)return[t,n];let r=yl(Object.keys(this.namespaces)[0]);return[r,this.rpcProviders[r].getDefaultChain()]}async requestAccounts(){let[e]=this.validateChain();return await this.getProvider(e).requestAccounts()}async onChainChanged(e,t=!1){if(!this.namespaces)return;let[n,r]=this.validateChain(e);r&&(t||this.getProvider(n).setDefaultChain(r),this.namespaces[n]?this.namespaces[n].defaultChain=r:this.namespaces[`${n}:${r}`]?this.namespaces[`${n}:${r}`].defaultChain=r:this.namespaces[`${n}:${r}`]={defaultChain:r},this.events.emit(`chainChanged`,r),await this.persist(`namespaces`,this.namespaces))}onConnect(){this.createProviders(),this.events.emit(`connect`,{session:this.session})}async cleanup(){this.namespaces=void 0,this.optionalNamespaces=void 0,this.sessionProperties=void 0,await this.deleteFromStore(`namespaces`),await this.deleteFromStore(`optionalNamespaces`),await this.deleteFromStore(`sessionProperties`),this.session=void 0,await this.cleanupPendingPairings({deletePairings:!0}),await this.cleanupStorage()}async persist(e,t){let n=this.session?.topic||``;await this.client.core.storage.setItem(`${ng}/${e}${n}`,t)}async getFromStore(e){let t=this.session?.topic||``;return await this.client.core.storage.getItem(`${ng}/${e}${t}`)}async deleteFromStore(e){let t=this.session?.topic||``;await this.client.core.storage.removeItem(`${ng}/${e}${t}`)}async cleanupStorage(){try{if(this.client?.session.length>0)return;let e=await this.client.core.storage.getKeys();for(let t of e)t.startsWith(ng)&&await this.client.core.storage.removeItem(t)}catch(e){this.logger.warn(`Failed to cleanup storage`,e)}}},Sv={ERROR_CODE_UNRECOGNIZED_CHAIN_ID:4902,ERROR_CODE_DEFAULT:5e3,ERROR_INVALID_CHAIN_ID:32603};function Cv(e){return{formatters:void 0,fees:void 0,serializers:void 0,...e}}var wv=Cv({id:`5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp`,name:`Solana`,network:`solana-mainnet`,nativeCurrency:{name:`Solana`,symbol:`SOL`,decimals:9},rpcUrls:{default:{http:[`https://rpc.walletconnect.org/v1`]}},blockExplorers:{default:{name:`Solscan`,url:`https://solscan.io`}},testnet:!1,chainNamespace:`solana`,caipNetworkId:`solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp`,deprecatedCaipNetworkId:`solana:4sGjMW1sUnHzSxGspuhpqLDx6wiyjNtZ`}),Tv=Cv({id:`EtWTRABZaYq6iMfeYKouRu166VU2xqa1`,name:`Solana Devnet`,network:`solana-devnet`,nativeCurrency:{name:`Solana`,symbol:`SOL`,decimals:9},rpcUrls:{default:{http:[`https://rpc.walletconnect.org/v1`]}},blockExplorers:{default:{name:`Solscan`,url:`https://solscan.io`}},testnet:!0,chainNamespace:`solana`,caipNetworkId:`solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1`,deprecatedCaipNetworkId:`solana:8E9rvCKLFQia2Y35HXjjpWzj8weVo44K`}),Ev=Cv({id:`4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z`,name:`Solana Testnet`,network:`solana-testnet`,nativeCurrency:{name:`Solana`,symbol:`SOL`,decimals:9},rpcUrls:{default:{http:[`https://rpc.walletconnect.org/v1`]}},blockExplorers:{default:{name:`Solscan`,url:`https://solscan.io`}},testnet:!0,chainNamespace:`solana`,caipNetworkId:`solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z`});Cv({id:`000000000019d6689c085ae165831e93`,caipNetworkId:`bip122:000000000019d6689c085ae165831e93`,chainNamespace:`bip122`,name:`Bitcoin`,nativeCurrency:{name:`Bitcoin`,symbol:`BTC`,decimals:8},rpcUrls:{default:{http:[`https://rpc.walletconnect.org/v1`]}}}),Cv({id:`000000000933ea01ad0ee984209779ba`,caipNetworkId:`bip122:000000000933ea01ad0ee984209779ba`,chainNamespace:`bip122`,name:`Bitcoin Testnet`,nativeCurrency:{name:`Bitcoin`,symbol:`BTC`,decimals:8},rpcUrls:{default:{http:[`https://rpc.walletconnect.org/v1`]}},testnet:!0});var Dv={solana:[`solana_signMessage`,`solana_signTransaction`,`solana_requestAccounts`,`solana_getAccounts`,`solana_signAllTransactions`,`solana_signAndSendTransaction`],eip155:[`eth_accounts`,`eth_requestAccounts`,`eth_sendRawTransaction`,`eth_sign`,`eth_signTransaction`,`eth_signTypedData`,`eth_signTypedData_v3`,`eth_signTypedData_v4`,`eth_sendTransaction`,`personal_sign`,`wallet_switchEthereumChain`,`wallet_addEthereumChain`,`wallet_getPermissions`,`wallet_requestPermissions`,`wallet_registerOnboarding`,`wallet_watchAsset`,`wallet_scanQRCode`,`wallet_getCallsStatus`,`wallet_showCallsStatus`,`wallet_sendCalls`,`wallet_getCapabilities`,`wallet_grantPermissions`,`wallet_revokePermissions`,`wallet_getAssets`],bip122:[`sendTransfer`,`signMessage`,`signPsbt`,`getAccountAddresses`]},Ov={getMethodsByChainNamespace(e){return Dv[e]||[]},createDefaultNamespace(e){return{methods:this.getMethodsByChainNamespace(e),events:[`accountsChanged`,`chainChanged`],chains:[],rpcMap:{}}},applyNamespaceOverrides(e,t){if(!t)return{...e};let n={...e},r=new Set;if(t.methods&&Object.keys(t.methods).forEach(e=>r.add(e)),t.chains&&Object.keys(t.chains).forEach(e=>r.add(e)),t.events&&Object.keys(t.events).forEach(e=>r.add(e)),t.rpcMap&&Object.keys(t.rpcMap).forEach(e=>{let[t]=e.split(`:`);t&&r.add(t)}),r.forEach(e=>{n[e]||(n[e]=this.createDefaultNamespace(e))}),t.methods&&Object.entries(t.methods).forEach(([e,t])=>{n[e]&&(n[e].methods=t)}),t.chains&&Object.entries(t.chains).forEach(([e,t])=>{n[e]&&(n[e].chains=t)}),t.events&&Object.entries(t.events).forEach(([e,t])=>{n[e]&&(n[e].events=t)}),t.rpcMap){let e=new Set;Object.entries(t.rpcMap).forEach(([t,r])=>{let[i,a]=t.split(`:`);!i||!a||!n[i]||(n[i].rpcMap||(n[i].rpcMap={}),e.has(i)||(n[i].rpcMap={},e.add(i)),n[i].rpcMap[a]=r)})}return n},createNamespaces(e,t){let n=e.reduce((e,t)=>{let{id:n,chainNamespace:r,rpcUrls:i}=t,a=i.default.http[0];e[r]||(e[r]=this.createDefaultNamespace(r));let o=`${r}:${n}`,s=e[r];switch(s.chains.push(o),o){case wv.caipNetworkId:s.chains.push(wv.deprecatedCaipNetworkId);break;case Tv.caipNetworkId:s.chains.push(Tv.deprecatedCaipNetworkId);break;default:}return s?.rpcMap&&a&&(s.rpcMap[n]=a),e},{});return this.applyNamespaceOverrides(n,t)},resolveReownName:async e=>{let t=await dr.resolveName(e);return(Object.values(t?.addresses)||[])[0]?.address||!1},getChainsFromNamespaces(e={}){return Object.values(e).flatMap(e=>{let t=e.chains||[],n=e.accounts.map(e=>{let[t,n]=e.split(`:`);return`${t}:${n}`});return Array.from(new Set([...t,...n]))})},isSessionEventData(e){return typeof e==`object`&&!!e&&`id`in e&&`topic`in e&&`params`in e&&typeof e.params==`object`&&e.params!==null&&`chainId`in e.params&&`event`in e.params&&typeof e.params.event==`object`&&e.params.event!==null}},kv=class{constructor({provider:e,caipNetworks:t,namespace:n}){this.id=x.CONNECTOR_ID.WALLET_CONNECT,this.name=fr.ConnectorNamesMap[x.CONNECTOR_ID.WALLET_CONNECT],this.type=`WALLET_CONNECT`,this.imageId=fr.ConnectorImageIds[x.CONNECTOR_ID.WALLET_CONNECT],this.caipNetworks=t,this.provider=e,this.chain=n}get chains(){return this.caipNetworks}async connectWalletConnect(){if(!await this.authenticate()){let e=m.state.universalProviderConfigOverride,t=Ov.createNamespaces(this.caipNetworks,e);await this.provider.connect({optionalNamespaces:t})}return{clientId:await this.provider.client.core.crypto.getClientId(),session:this.provider.session}}async disconnect(){await this.provider.disconnect()}async authenticate(){let e=this.chains.map(e=>e.caipNetworkId);return h.universalProviderAuthenticate({universalProvider:this.provider,chains:e,methods:Av})}},Av=[`eth_accounts`,`eth_requestAccounts`,`eth_sendRawTransaction`,`eth_sign`,`eth_signTransaction`,`eth_signTypedData`,`eth_signTypedData_v3`,`eth_signTypedData_v4`,`eth_sendTransaction`,`personal_sign`,`wallet_switchEthereumChain`,`wallet_addEthereumChain`,`wallet_getPermissions`,`wallet_requestPermissions`,`wallet_registerOnboarding`,`wallet_watchAsset`,`wallet_scanQRCode`,`wallet_getCallsStatus`,`wallet_sendCalls`,`wallet_getCapabilities`,`wallet_grantPermissions`,`wallet_revokePermissions`,`wallet_getAssets`],jv=class{constructor(e){this.availableConnectors=[],this.eventListeners=new Map,e&&this.construct(e)}construct(e){this.caipNetworks=e.networks,this.projectId=e.projectId,this.namespace=e.namespace,this.adapterType=e.adapterType}get connectors(){return this.availableConnectors}get networks(){return this.caipNetworks||[]}setAuthProvider(e){this.addConnector({id:x.CONNECTOR_ID.AUTH,type:`AUTH`,name:x.CONNECTOR_NAMES.AUTH,provider:e,imageId:fr.ConnectorImageIds[x.CONNECTOR_ID.AUTH],chain:this.namespace,chains:[]})}addConnector(...e){let t=new Set;this.availableConnectors=[...e,...this.availableConnectors].filter(e=>t.has(e.id)?!1:(t.add(e.id),!0)),this.emit(`connectors`,this.availableConnectors)}setStatus(e,t){v.setStatus(e,t)}on(e,t){this.eventListeners.has(e)||this.eventListeners.set(e,new Set),this.eventListeners.get(e)?.add(t)}off(e,t){let n=this.eventListeners.get(e);n&&n.delete(t)}removeAllEventListeners(){this.eventListeners.forEach(e=>{e.clear()})}emit(e,t){let n=this.eventListeners.get(e);n&&n.forEach(e=>e(t))}async connectWalletConnect(e){return{clientId:(await this.getWalletConnectConnector().connectWalletConnect()).clientId}}async switchNetwork(e){let{caipNetwork:t,providerType:n}=e;if(!e.provider)return;let r=`provider`in e.provider?e.provider.provider:e.provider;if(n===`WALLET_CONNECT`){r.setDefaultChain(t.caipNetworkId);return}if(r&&n===`AUTH`){let e=r;await e.switchNetwork(t.caipNetworkId);let n=await e.getUser({chainId:t.caipNetworkId,preferredAccountType:m.state.defaultAccountTypes[t.chainNamespace]});this.emit(`switchNetwork`,n)}}getWalletConnectConnector(){let e=this.connectors.find(e=>e instanceof kv);if(!e)throw Error(`WalletConnectConnector not found`);return e}},Mv=class extends jv{setUniversalProvider(e){this.addConnector(new kv({provider:e,caipNetworks:this.caipNetworks||[],namespace:this.namespace}))}async connect(e){return Promise.resolve({id:`WALLET_CONNECT`,type:`WALLET_CONNECT`,chainId:Number(e.chainId),provider:this.provider,address:``})}async disconnect(){try{await this.getWalletConnectConnector().disconnect()}catch(e){console.warn(`UniversalAdapter:disconnect - error`,e)}}async getAccounts({namespace:e}){let t=this.provider?.session?.namespaces?.[e]?.accounts?.map(e=>{let[,,t]=e.split(`:`);return t}).filter((e,t,n)=>n.indexOf(e)===t)||[];return Promise.resolve({accounts:t.map(t=>f.createAccount(e,t,e===`bip122`?`payment`:`eoa`))})}async syncConnectors(){return Promise.resolve()}async getBalance(e){if(!(e.caipNetwork&&a.BALANCE_SUPPORTED_CHAINS.includes(e.caipNetwork?.chainNamespace))||e.caipNetwork?.testnet)return{balance:`0.00`,symbol:e.caipNetwork?.nativeCurrency.symbol||``};if(v.state.balanceLoading&&e.chainId===T.state.activeCaipNetwork?.id)return{balance:v.state.balance||`0.00`,symbol:v.state.balanceSymbol||``};let t=(await v.fetchTokenBalance()).find(t=>t.chainId===`${e.caipNetwork?.chainNamespace}:${e.chainId}`&&t.symbol===e.caipNetwork?.nativeCurrency.symbol);return{balance:t?.quantity.numeric||`0.00`,symbol:t?.symbol||e.caipNetwork?.nativeCurrency.symbol||``}}async signMessage(e){let{provider:t,message:n,address:r}=e;if(!t)throw Error(`UniversalAdapter:signMessage - provider is undefined`);let i=``;return i=T.state.activeCaipNetwork?.chainNamespace===x.CHAIN.SOLANA?(await t.request({method:`solana_signMessage`,params:{message:At.encode(new TextEncoder().encode(n)),pubkey:r}},T.state.activeCaipNetwork?.caipNetworkId)).signature:await t.request({method:`personal_sign`,params:[n,r]},T.state.activeCaipNetwork?.caipNetworkId),{signature:i}}async estimateGas(){return Promise.resolve({gas:BigInt(0)})}async getProfile(){return Promise.resolve({profileImage:``,profileName:``})}async sendTransaction(){return Promise.resolve({hash:``})}walletGetAssets(e){return Promise.resolve({})}async writeContract(){return Promise.resolve({hash:``})}async getEnsAddress(){return Promise.resolve({address:!1})}parseUnits(){return 0n}formatUnits(){return`0`}async getCapabilities(){return Promise.resolve({})}async grantPermissions(){return Promise.resolve({})}async revokePermissions(){return Promise.resolve(`0x`)}async syncConnection(){return Promise.resolve({id:`WALLET_CONNECT`,type:`WALLET_CONNECT`,chainId:1,provider:this.provider,address:``})}async switchNetwork(e){let{caipNetwork:t}=e,n=this.getWalletConnectConnector();if(t.chainNamespace===x.CHAIN.EVM)try{await n.provider?.request({method:`wallet_switchEthereumChain`,params:[{chainId:Gt(t.id)}]})}catch(e){if(e.code===Sv.ERROR_CODE_UNRECOGNIZED_CHAIN_ID||e.code===Sv.ERROR_INVALID_CHAIN_ID||e.code===Sv.ERROR_CODE_DEFAULT||e?.data?.originalError?.code===Sv.ERROR_CODE_UNRECOGNIZED_CHAIN_ID)try{await n.provider?.request({method:`wallet_addEthereumChain`,params:[{chainId:Gt(t.id),rpcUrls:[t?.rpcUrls.chainDefault?.http],chainName:t.name,nativeCurrency:t.nativeCurrency,blockExplorerUrls:[t.blockExplorers?.default.url]}]})}catch{throw Error(`Chain is not supported`)}}n.provider.setDefaultChain(t.caipNetworkId)}getWalletConnectProvider(){return this.connectors.find(e=>e.type===`WALLET_CONNECT`)?.provider}},Nv=class{constructor(e){this.hasSwitchedToPreferredAccountTypeOnConnect=!1,this.chainNamespaces=[],this.reportedAlertErrors={},this.getCaipNetwork=e=>e?T.getNetworkData(e)?.caipNetwork||T.getRequestedCaipNetworks(e).filter(t=>t.chainNamespace===e)?.[0]:T.state.activeCaipNetwork||this.defaultCaipNetwork,this.getCaipNetworkId=()=>{let e=this.getCaipNetwork();if(e)return e.id},this.getCaipNetworks=e=>T.getRequestedCaipNetworks(e),this.getActiveChainNamespace=()=>T.state.activeChain,this.setRequestedCaipNetworks=(e,t)=>{T.setRequestedCaipNetworks(e,t)},this.getApprovedCaipNetworkIds=()=>T.getAllApprovedCaipNetworkIds(),this.getCaipAddress=e=>T.state.activeChain===e||!e?T.state.activeCaipAddress:T.getAccountProp(`caipAddress`,e),this.setClientId=e=>{y.setClientId(e)},this.getProvider=e=>z.getProvider(e),this.getProviderType=e=>z.getProviderId(e),this.getPreferredAccountType=()=>v.state.preferredAccountType,this.setCaipAddress=(e,t)=>{v.setCaipAddress(e,t)},this.setBalance=(e,t,n)=>{v.setBalance(e,t,n)},this.setProfileName=(e,t)=>{v.setProfileName(e,t)},this.setProfileImage=(e,t)=>{v.setProfileImage(e,t)},this.setUser=(e,t)=>{v.setUser(e,t),m.state.enableEmbedded&&E.close()},this.resetAccount=e=>{v.resetAccount(e)},this.setCaipNetwork=e=>{T.setActiveCaipNetwork(e)},this.setCaipNetworkOfNamespace=(e,t)=>{T.setChainNetworkData(t,{caipNetwork:e})},this.setAllAccounts=(e,t)=>{v.setAllAccounts(e,t),m.setHasMultipleAddresses(e?.length>1)},this.setStatus=(e,t)=>{v.setStatus(e,t),A.isConnected()?S.setConnectionStatus(`connected`):S.setConnectionStatus(`disconnected`)},this.getAddressByChainNamespace=e=>T.getAccountProp(`address`,e),this.setConnectors=e=>{let t=[...A.getConnectors(),...e];A.setConnectors(t)},this.fetchIdentity=e=>y.fetchIdentity(e),this.getReownName=e=>dr.getNamesForAddress(e),this.getConnectors=()=>A.getConnectors(),this.getConnectorImage=e=>s.getConnectorImage(e),this.setConnectedWalletInfo=(e,t)=>{let n=z.getProviderId(t),r=e?{...e,type:n}:void 0;v.setConnectedWalletInfo(r,t)},this.getIsConnectedState=()=>!!T.state.activeCaipAddress,this.addAddressLabel=(e,t,n)=>{v.addAddressLabel(e,t,n)},this.removeAddressLabel=(e,t)=>{v.removeAddressLabel(e,t)},this.getAddress=e=>T.state.activeChain===e||!e?v.state.address:T.getAccountProp(`address`,e),this.setApprovedCaipNetworksData=e=>T.setApprovedCaipNetworksData(e),this.resetNetwork=e=>{T.resetNetwork(e)},this.addConnector=e=>{A.addConnector(e)},this.resetWcConnection=()=>{b.resetWcConnection()},this.setAddressExplorerUrl=(e,t)=>{v.setAddressExplorerUrl(e,t)},this.setSmartAccountDeployed=(e,t)=>{v.setSmartAccountDeployed(e,t)},this.setSmartAccountEnabledNetworks=(e,t)=>{T.setSmartAccountEnabledNetworks(e,t)},this.setPreferredAccountType=(e,t)=>{v.setPreferredAccountType(e,t)},this.setEIP6963Enabled=e=>{m.setEIP6963Enabled(e)},this.handleUnsafeRPCRequest=()=>{if(this.isOpen()){if(this.isTransactionStackEmpty())return;this.redirect(`ApproveTransaction`)}else this.open({view:`ApproveTransaction`})},this.options=e,this.version=e.sdkVersion,this.caipNetworks=this.extendCaipNetworks(e),this.chainNamespaces=[...new Set(this.caipNetworks?.map(e=>e.chainNamespace))],this.defaultCaipNetwork=this.extendDefaultCaipNetwork(e),this.chainAdapters=this.createAdapters(e.adapters),this.initialize(e),this.sendInitializeEvent(e)}async initialize(e){this.initControllers(e),await this.initChainAdapters(),await this.injectModalUi(),await this.syncExistingConnection(),ee.set({initialized:!0})}sendInitializeEvent(e){let{...t}=e;delete t.adapters,o.sendEvent({type:`track`,event:`INITIALIZE`,properties:{...t,networks:e.networks.map(e=>e.id),siweConfig:{options:e.siweConfig?.options||{}}}})}initControllers(e){this.initializeOptionsController(e),this.initializeChainController(e),this.initializeThemeController(e),this.initializeConnectionController(e),this.initializeConnectorController()}initializeThemeController(e){e.themeMode&&g.setThemeMode(e.themeMode),e.themeVariables&&g.setThemeVariables(e.themeVariables)}initializeChainController(e){if(!this.connectionControllerClient||!this.networkControllerClient)throw Error(`ConnectionControllerClient and NetworkControllerClient must be set`);T.initialize(e.adapters??[],this.caipNetworks,{connectionControllerClient:this.connectionControllerClient,networkControllerClient:this.networkControllerClient});let t=this.getDefaultNetwork();t&&T.setActiveCaipNetwork(t)}initializeConnectionController(e){b.setWcBasic(e.basic??!1)}initializeConnectorController(){A.initialize(this.chainNamespaces)}initializeOptionsController(e){m.setDebug(e.debug!==!1),m.setEnableWalletConnect(e.enableWalletConnect!==!1),m.setEnableWalletGuide(e.enableWalletGuide!==!1),m.setEnableWallets(e.enableWallets!==!1),m.setEIP6963Enabled(e.enableEIP6963!==!1),m.setEnableNetworkSwitch(e.enableNetworkSwitch!==!1),m.setEnableAuthLogger(e.enableAuthLogger!==!1),m.setCustomRpcUrls(e.customRpcUrls),m.setSdkVersion(e.sdkVersion),m.setProjectId(e.projectId),m.setEnableEmbedded(e.enableEmbedded),m.setAllWallets(e.allWallets),m.setIncludeWalletIds(e.includeWalletIds),m.setExcludeWalletIds(e.excludeWalletIds),m.setFeaturedWalletIds(e.featuredWalletIds),m.setTokens(e.tokens),m.setTermsConditionsUrl(e.termsConditionsUrl),m.setPrivacyPolicyUrl(e.privacyPolicyUrl),m.setCustomWallets(e.customWallets),m.setFeatures(e.features),m.setAllowUnsupportedChain(e.allowUnsupportedChain),m.setDefaultAccountTypes(e.defaultAccountTypes),m.setUniversalProviderConfigOverride(e.universalProviderConfigOverride);let t=this.getDefaultMetaData();if(!e.metadata&&t&&(e.metadata=t),m.setMetadata(e.metadata),m.setDisableAppend(e.disableAppend),m.setEnableEmbedded(e.enableEmbedded),m.setSIWX(e.siwx),!e.projectId){O.open(pr.ALERT_ERRORS.PROJECT_ID_NOT_CONFIGURED,`error`);return}if(e.adapters?.find(e=>e.namespace===x.CHAIN.EVM)&&e.siweConfig){if(e.siwx)throw Error("Cannot set both `siweConfig` and `siwx` options");m.setSIWX(e.siweConfig.mapToSIWX())}}getDefaultMetaData(){return typeof window<`u`&&typeof document<`u`?{name:document.getElementsByTagName(`title`)?.[0]?.textContent||``,description:document.querySelector(`meta[property="og:description"]`)?.content||``,url:window.location.origin,icons:[document.querySelector(`link[rel~="icon"]`)?.href||``]}:null}setUnsupportedNetwork(e){let t=this.getActiveChainNamespace();if(t){let n=yr.getUnsupportedNetwork(`${t}:${e}`);T.setActiveCaipNetwork(n)}}getDefaultNetwork(){return yr.getCaipNetworkFromStorage(this.defaultCaipNetwork)}extendCaipNetwork(e,t){return yr.extendCaipNetwork(e,{customNetworkImageUrls:t.chainImages,projectId:t.projectId})}extendCaipNetworks(e){return yr.extendCaipNetworks(e.networks,{customNetworkImageUrls:e.chainImages,customRpcUrls:e.customRpcUrls,projectId:e.projectId})}extendDefaultCaipNetwork(e){let t=e.networks.find(t=>t.id===e.defaultNetwork?.id);return t?yr.extendCaipNetwork(t,{customNetworkImageUrls:e.chainImages,customRpcUrls:e.customRpcUrls,projectId:e.projectId}):void 0}createClients(){this.connectionControllerClient={connectWalletConnect:async()=>{let e=T.state.activeChain,t=this.getAdapter(e),n=this.getCaipNetwork(e)?.id;if(!t)throw Error(`Adapter not found`);let r=await t.connectWalletConnect(n);this.close(),this.setClientId(r?.clientId||null),S.setConnectedNamespaces([...T.state.chains.keys()]),this.chainNamespaces.forEach(e=>{A.setConnectorId(Ne.CONNECTOR_TYPE_WALLET_CONNECT,e)}),await this.syncWalletConnectAccount()},connectExternal:async({id:e,info:t,type:n,provider:r,chain:i,caipNetwork:a})=>{let o=T.state.activeChain,s=i||o,c=this.getAdapter(s);if(i&&i!==o&&!a){let e=this.caipNetworks?.find(e=>e.chainNamespace===i);e&&this.setCaipNetwork(e)}if(!c)throw Error(`Adapter not found`);let l=this.getCaipNetwork(s),u=await c.connect({id:e,info:t,type:n,provider:r,chainId:a?.id||l?.id,rpcUrl:a?.rpcUrls?.default?.http?.[0]||l?.rpcUrls?.default?.http?.[0]});if(!u)return;S.addConnectedNamespace(s),this.syncProvider({...u,chainNamespace:s}),await this.syncAccount({...u,chainNamespace:s});let{accounts:d}=await c.getAccounts({namespace:s,id:e});this.setAllAccounts(d,s)},reconnectExternal:async({id:e,info:t,type:n,provider:r})=>{let i=T.state.activeChain,a=this.getAdapter(i);a?.reconnect&&(await a?.reconnect({id:e,info:t,type:n,provider:r,chainId:this.getCaipNetwork()?.id}),S.addConnectedNamespace(i))},disconnect:async e=>{let t=e||T.state.activeChain,n=this.getAdapter(t),r=z.getProvider(t),i=z.getProviderId(t);await n?.disconnect({provider:r,providerType:i}),S.removeConnectedNamespace(t),z.resetChain(t),this.setUser(void 0,t),this.setStatus(`disconnected`,t),this.hasSwitchedToPreferredAccountTypeOnConnect=!1},checkInstalled:e=>e?e.some(e=>!!window.ethereum?.[String(e)]):!!window.ethereum,signMessage:async e=>(await this.getAdapter(T.state.activeChain)?.signMessage({message:e,address:v.state.address,provider:z.getProvider(T.state.activeChain)}))?.signature||``,sendTransaction:async e=>{if(e.chainNamespace===x.CHAIN.EVM){let t=this.getAdapter(T.state.activeChain),n=z.getProvider(T.state.activeChain);return(await t?.sendTransaction({...e,caipNetwork:this.getCaipNetwork(),provider:n}))?.hash||``}return``},estimateGas:async e=>{if(e.chainNamespace===x.CHAIN.EVM){let t=this.getAdapter(T.state.activeChain),n=z.getProvider(T.state.activeChain),r=this.getCaipNetwork();if(!r)throw Error(`CaipNetwork is undefined`);return(await t?.estimateGas({...e,provider:n,caipNetwork:r}))?.gas||0n}return 0n},getEnsAvatar:async()=>(await this.getAdapter(T.state.activeChain)?.getProfile({address:v.state.address,chainId:Number(this.getCaipNetwork()?.id)}))?.profileImage||!1,getEnsAddress:async e=>{let t=this.getAdapter(T.state.activeChain),n=this.getCaipNetwork();return n&&(await t?.getEnsAddress({name:e,caipNetwork:n}))?.address||!1},writeContract:async e=>{let t=this.getAdapter(T.state.activeChain),n=this.getCaipNetwork(),r=this.getCaipAddress(),i=z.getProvider(T.state.activeChain);if(!n||!r)throw Error(`CaipNetwork or CaipAddress is undefined`);return(await t?.writeContract({...e,caipNetwork:n,provider:i,caipAddress:r}))?.hash},parseUnits:(e,t)=>this.getAdapter(T.state.activeChain)?.parseUnits({value:e,decimals:t})??0n,formatUnits:(e,t)=>this.getAdapter(T.state.activeChain)?.formatUnits({value:e,decimals:t})??`0`,getCapabilities:async e=>await this.getAdapter(T.state.activeChain)?.getCapabilities(e),grantPermissions:async e=>await this.getAdapter(T.state.activeChain)?.grantPermissions(e),revokePermissions:async e=>{let t=this.getAdapter(T.state.activeChain);return t?.revokePermissions?await t.revokePermissions(e):`0x`},walletGetAssets:async e=>await this.getAdapter(T.state.activeChain)?.walletGetAssets(e)??{}},this.networkControllerClient={switchCaipNetwork:async e=>await this.switchCaipNetwork(e),getApprovedCaipNetworksData:async()=>this.getApprovedCaipNetworksData()},b.setClient(this.connectionControllerClient)}getApprovedCaipNetworksData(){if(z.getProviderId(T.state.activeChain)===Ne.CONNECTOR_TYPE_WALLET_CONNECT){let e=this.universalProvider?.session?.namespaces;return{supportsAllNetworks:this.universalProvider?.session?.peer?.metadata.name===`MetaMask Wallet`,approvedCaipNetworkIds:this.getChainsFromNamespaces(e)}}return{supportsAllNetworks:!0,approvedCaipNetworkIds:[]}}async switchCaipNetwork(e){if(!e)return;let t=e.chainNamespace;if(this.getAddressByChainNamespace(e.chainNamespace)){let n=z.getProvider(t),r=z.getProviderId(t);if(e.chainNamespace===T.state.activeChain)await this.getAdapter(t)?.switchNetwork({caipNetwork:e,provider:n,providerType:r});else if(this.setCaipNetwork(e),r===Ne.CONNECTOR_TYPE_WALLET_CONNECT)this.syncWalletConnectAccount();else{let n=this.getAddressByChainNamespace(t);n&&this.syncAccount({address:n,chainId:e.id,chainNamespace:t})}}else this.setCaipNetwork(e)}getChainsFromNamespaces(e={}){return Object.values(e).flatMap(e=>{let t=e.chains||[],n=e.accounts.map(e=>{let{chainId:t,chainNamespace:n}=rt.parseCaipAddress(e);return`${n}:${t}`});return Array.from(new Set([...t,...n]))})}createAdapters(e){return this.createClients(),this.chainNamespaces.reduce((t,n)=>{let r=e?.find(e=>e.namespace===n);return r?(t[n]=r,t[n].namespace=n,t[n].construct({namespace:n,projectId:this.options?.projectId,networks:this.caipNetworks})):t[n]=new Mv({namespace:n,networks:this.caipNetworks}),t},{})}async initChainAdapter(e){this.onConnectors(e),this.listenAdapter(e),this.chainAdapters?.[e].syncConnectors(this.options,this),await this.createUniversalProviderForAdapter(e)}async initChainAdapters(){await Promise.all(this.chainNamespaces.map(async e=>{await this.initChainAdapter(e)}))}onConnectors(e){this.getAdapter(e)?.on(`connectors`,this.setConnectors.bind(this))}listenAdapter(e){let t=this.getAdapter(e);if(!t)return;let n=S.getConnectionStatus();n===`connected`?this.setStatus(`connecting`,e):(n===`disconnected`&&S.clearAddressCache(),this.setStatus(n,e)),t.on(`switchNetwork`,({address:t,chainId:n})=>{let r=this.caipNetworks?.find(e=>e.id===n||e.caipNetworkId===n),i=T.state.activeChain===e,a=T.getAccountProp(`address`,e);if(r){let r=i&&t?t:a;r&&this.syncAccount({address:r,chainId:n,chainNamespace:e})}else this.setUnsupportedNetwork(n)}),t.on(`disconnect`,this.disconnect.bind(this,e)),t.on(`pendingTransactions`,()=>{let e=v.state.address,t=T.state.activeCaipNetwork;!e||!t?.id||this.updateNativeBalance(e,t.id,t.chainNamespace)}),t.on(`accountChanged`,({address:t,chainId:n})=>{let r=T.state.activeChain===e;r&&n?this.syncAccount({address:t,chainId:n,chainNamespace:e}):r&&T.state.activeCaipNetwork?.id?this.syncAccount({address:t,chainId:T.state.activeCaipNetwork?.id,chainNamespace:e}):this.syncAccountInfo(t,n,e)})}async createUniversalProviderForAdapter(e){await this.getUniversalProvider(),this.universalProvider&&this.chainAdapters?.[e]?.setUniversalProvider?.(this.universalProvider)}async syncExistingConnection(){await Promise.allSettled(this.chainNamespaces.map(e=>this.syncNamespaceConnection(e)))}async syncNamespaceConnection(e){try{let t=A.getConnectorId(e);switch(this.setStatus(`connecting`,e),t){case x.CONNECTOR_ID.WALLET_CONNECT:await this.syncWalletConnectAccount();break;case x.CONNECTOR_ID.AUTH:break;default:await this.syncAdapterConnection(e)}}catch(t){console.warn(`AppKit couldn't sync existing connection`,t),this.setStatus(`disconnected`,e)}}async syncAdapterConnection(e){let t=this.getAdapter(e),n=A.getConnectorId(e),r=this.getCaipNetwork(e),i=A.getConnectors(e).find(e=>e.id===n);try{if(!t||!i)throw Error(`Adapter or connector not found for namespace ${e}`);if(!r?.id)throw Error(`CaipNetwork not found`);let n=await t?.syncConnection({namespace:e,id:i.id,chainId:r.id,rpcUrl:r?.rpcUrls?.default?.http?.[0]});if(n){let r=await t?.getAccounts({namespace:e,id:i.id});r&&r.accounts.length>0?this.setAllAccounts(r.accounts,e):this.setAllAccounts([f.createAccount(e,n.address,`eoa`)],e),this.syncProvider({...n,chainNamespace:e}),await this.syncAccount({...n,chainNamespace:e}),this.setStatus(`connected`,e)}else this.setStatus(`disconnected`,e)}catch{this.setStatus(`disconnected`,e)}}async syncWalletConnectAccount(){let e=this.chainNamespaces.map(async e=>{let t=this.getAdapter(e),n=this.universalProvider?.session?.namespaces?.[e]?.accounts||[],r=T.state.activeCaipNetwork?.id,i=n.find(e=>{let{chainId:t}=rt.parseCaipAddress(e);return t===r?.toString()})||n[0];if(i){let n=rt.validateCaipAddress(i),{chainId:r,address:a}=rt.parseCaipAddress(n);if(z.setProviderId(e,Ne.CONNECTOR_TYPE_WALLET_CONNECT),this.caipNetworks&&T.state.activeCaipNetwork&&t?.namespace!==x.CHAIN.EVM){let n=t?.getWalletConnectProvider({caipNetworks:this.caipNetworks,provider:this.universalProvider,activeCaipNetwork:T.state.activeCaipNetwork});z.setProvider(e,n)}else z.setProvider(e,this.universalProvider);A.setConnectorId(x.CONNECTOR_ID.WALLET_CONNECT,e),S.addConnectedNamespace(e),this.syncWalletConnectAccounts(e),await this.syncAccount({address:a,chainId:r,chainNamespace:e})}else this.setStatus(`disconnected`,e);await T.setApprovedCaipNetworksData(e)});await Promise.all(e)}syncWalletConnectAccounts(e){let t=this.universalProvider?.session?.namespaces?.[e]?.accounts?.map(e=>{let{address:t}=rt.parseCaipAddress(e);return t}).filter((e,t,n)=>n.indexOf(e)===t);t&&this.setAllAccounts(t.map(t=>f.createAccount(e,t,e===`bip122`?`payment`:`eoa`)),e)}syncProvider({type:e,provider:t,id:n,chainNamespace:r}){z.setProviderId(r,e),z.setProvider(r,t),A.setConnectorId(n,r)}async syncAccount(e){let t=e.chainNamespace===T.state.activeChain,n=T.getCaipNetworkByNamespace(e.chainNamespace,e.chainId),{address:r,chainId:i,chainNamespace:a}=e,{chainId:o}=S.getActiveNetworkProps(),s=i||o,c=T.state.activeCaipNetwork?.name===x.UNSUPPORTED_NETWORK_NAME,l=T.getNetworkProp(`supportsAllNetworks`,a);if(this.setStatus(`connected`,a),!(c&&!l)&&s){let e=this.caipNetworks?.find(e=>e.id.toString()===s.toString()),i=this.caipNetworks?.find(e=>e.chainNamespace===a);if(!l&&!e&&!i){let t=this.getApprovedCaipNetworkIds()||[],n=t.find(e=>rt.parseCaipNetworkId(e)?.chainId===s.toString()),r=t.find(e=>rt.parseCaipNetworkId(e)?.chainNamespace===a);e=this.caipNetworks?.find(e=>e.caipNetworkId===n),i=this.caipNetworks?.find(e=>e.caipNetworkId===r||`deprecatedCaipNetworkId`in e&&e.deprecatedCaipNetworkId===r)}let o=e||i;o?.chainNamespace===T.state.activeChain?m.state.enableNetworkSwitch&&!m.state.allowUnsupportedChain&&T.state.activeCaipNetwork?.name===x.UNSUPPORTED_NETWORK_NAME?T.showUnsupportedChainUI():this.setCaipNetwork(o):t||n&&this.setCaipNetworkOfNamespace(n,a),this.syncConnectedWalletInfo(a),Fe.isLowerCaseMatch(r,v.state.address)||this.syncAccountInfo(r,o?.id,a),t?await this.syncBalance({address:r,chainId:o?.id,chainNamespace:a}):await this.syncBalance({address:r,chainId:n?.id,chainNamespace:a})}}async syncAccountInfo(e,t,n){let r=this.getCaipAddress(n),i=t||r?.split(`:`)[1];if(!i)return;let a=`${n}:${i}:${e}`;this.setCaipAddress(a,n),await this.syncIdentity({address:e,chainId:i,chainNamespace:n})}async syncReownName(e,t){try{let n=await this.getReownName(e);if(n[0]){let e=n[0];this.setProfileName(e.name,t)}else this.setProfileName(null,t)}catch{this.setProfileName(null,t)}}syncConnectedWalletInfo(e){let t=A.getConnectorId(e),n=z.getProviderId(e);if(n===Ne.CONNECTOR_TYPE_ANNOUNCED||n===Ne.CONNECTOR_TYPE_INJECTED){if(t){let n=this.getConnectors().find(e=>e.id===t);if(n){let{info:t,name:r,imageUrl:i}=n,a=i||this.getConnectorImage(n);this.setConnectedWalletInfo({name:r,icon:a,...t},e)}}}else if(n===Ne.CONNECTOR_TYPE_WALLET_CONNECT){let t=z.getProvider(e);t?.session&&this.setConnectedWalletInfo({...t.session.peer.metadata,name:t.session.peer.metadata.name,icon:t.session.peer.metadata.icons?.[0]},e)}else if(t)if(t===x.CONNECTOR_ID.COINBASE){let t=this.getConnectors().find(e=>e.id===x.CONNECTOR_ID.COINBASE);this.setConnectedWalletInfo({name:`Coinbase Wallet`,icon:this.getConnectorImage(t)},e)}else this.setConnectedWalletInfo({name:t},e)}async syncBalance(e){!u.getNetworksByNamespace(this.caipNetworks,e.chainNamespace).find(t=>t.id.toString()===e.chainId?.toString())||!e.chainId||await this.updateNativeBalance(e.address,e.chainId,e.chainNamespace)}async updateNativeBalance(e,t,n){let r=this.getAdapter(n);if(r){let i=await r.getBalance({address:e,chainId:t,caipNetwork:this.getCaipNetwork(n),tokens:this.options.tokens});this.setBalance(i.balance,i.symbol,n)}}async initializeUniversalAdapter(){let e=hr.createLogger((e,...t)=>{e&&this.handleAlertError(e),console.error(...t)}),t={projectId:this.options?.projectId,metadata:{name:this.options?.metadata?this.options?.metadata.name:``,description:this.options?.metadata?this.options?.metadata.description:``,url:this.options?.metadata?this.options?.metadata.url:``,icons:this.options?.metadata?this.options?.metadata.icons:[``]},logger:e};m.setManualWCControl(!!this.options?.manualWCControl),this.universalProvider=this.options.universalProvider??await xv.init(t),this.listenWalletConnect()}listenWalletConnect(){this.universalProvider&&(this.universalProvider.on(`display_uri`,e=>{b.setUri(e)}),this.universalProvider.on(`connect`,b.finalizeWcConnection),this.universalProvider.on(`disconnect`,()=>{this.chainNamespaces.forEach(e=>{this.resetAccount(e)}),b.resetWcConnection()}),this.universalProvider.on(`chainChanged`,e=>{let t=this.caipNetworks?.find(t=>t.id==e),n=this.getCaipNetwork();if(!t){this.setUnsupportedNetwork(e);return}n?.id!==t?.id&&this.setCaipNetwork(t)}),this.universalProvider.on(`session_event`,e=>{if(Ov.isSessionEventData(e)){let{name:t,data:n}=e.params.event;t===`accountsChanged`&&Array.isArray(n)&&f.isCaipAddress(n[0])&&this.syncAccount(rt.parseCaipAddress(n[0]))}}))}createUniversalProvider(){return!this.universalProviderInitPromise&&f.isClient()&&this.options?.projectId&&(this.universalProviderInitPromise=this.initializeUniversalAdapter()),this.universalProviderInitPromise}async getUniversalProvider(){if(!this.universalProvider)try{await this.createUniversalProvider()}catch(e){o.sendEvent({type:`error`,event:`INTERNAL_SDK_ERROR`,properties:{errorType:`UniversalProviderInitError`,errorMessage:e instanceof Error?e.message:`Unknown`,uncaught:!1}}),console.error(`AppKit:getUniversalProvider - Cannot create provider`,e)}return this.universalProvider}handleAlertError(e){let[t,n]=Object.entries(pr.UniversalProviderErrors).find(([,{message:t}])=>e.message.includes(t))??[],{message:r,alertErrorKey:i}=n??{};if(t&&r&&!this.reportedAlertErrors[t]){let e=pr.ALERT_ERRORS[i];e&&(O.open(e,`error`),this.reportedAlertErrors[t]=!0)}}getAdapter(e){if(e)return this.chainAdapters?.[e]}createAdapter(e){if(!e)return;let t=e.namespace;if(!t)return;this.createClients();let n=e;n.namespace=t,n.construct({namespace:t,projectId:this.options?.projectId,networks:this.caipNetworks}),this.chainNamespaces.includes(t)||this.chainNamespaces.push(t),this.chainAdapters&&(this.chainAdapters[t]=n)}async open(e){await this.injectModalUi(),e?.uri&&b.setUri(e.uri),await E.open(e)}async close(){await this.injectModalUi(),E.close()}setLoading(e,t){E.setLoading(e,t)}async disconnect(e){await b.disconnect(e)}getError(){return``}getChainId(){return T.state.activeCaipNetwork?.id}async switchNetwork(e){let t=this.caipNetworks?.find(t=>t.id===e.id);if(!t){O.open(pr.ALERT_ERRORS.SWITCH_NETWORK_NOT_FOUND,`error`);return}await T.switchActiveNetwork(t)}getWalletProvider(){return T.state.activeChain?z.state.providers[T.state.activeChain]:null}getWalletProviderType(){return z.getProviderId(T.state.activeChain)}subscribeProviders(e){return z.subscribeProviders(e)}getThemeMode(){return g.state.themeMode}getThemeVariables(){return g.state.themeVariables}setThemeMode(e){g.setThemeMode(e),_(g.state.themeMode)}setTermsConditionsUrl(e){m.setTermsConditionsUrl(e)}setPrivacyPolicyUrl(e){m.setPrivacyPolicyUrl(e)}setThemeVariables(e){g.setThemeVariables(e),C(g.state.themeVariables)}subscribeTheme(e){return g.subscribe(e)}getWalletInfo(){return v.state.connectedWalletInfo}getAccount(e){let t=A.getAuthConnector(e),n=T.getAccountData(e);if(n)return{allAccounts:n.allAccounts,caipAddress:n.caipAddress,address:f.getPlainAddress(n.caipAddress),isConnected:!!n.caipAddress,status:n.status,embeddedWalletInfo:t?{user:n.user,authProvider:n.socialProvider||`email`,accountType:n.preferredAccountType,isSmartAccountDeployed:!!n.smartAccountDeployed}:void 0}}subscribeAccount(e,t){let n=()=>{let n=this.getAccount(t);n&&e(n)};t?T.subscribeChainProp(`accountState`,n,t):T.subscribe(n),A.subscribe(n)}subscribeNetwork(e){return T.subscribe(({activeCaipNetwork:t})=>{e({caipNetwork:t,chainId:t?.id,caipNetworkId:t?.caipNetworkId})})}subscribeWalletInfo(e){return v.subscribeKey(`connectedWalletInfo`,e)}subscribeShouldUpdateToAddress(e){v.subscribeKey(`shouldUpdateToAddress`,e)}subscribeCaipNetworkChange(e){T.subscribeKey(`activeCaipNetwork`,e)}getState(){return ee.state}subscribeState(e){return ee.subscribe(e)}showErrorMessage(e){D.showError(e)}showSuccessMessage(e){D.showSuccess(e)}getEvent(){return{...o.state}}subscribeEvents(e){return o.subscribe(e)}replace(e){k.replace(e)}redirect(e){k.push(e)}popTransactionStack(e){k.popTransactionStack(e)}isOpen(){return E.state.open}isTransactionStackEmpty(){return k.state.transactionStack.length===0}isTransactionShouldReplaceView(){return k.state.transactionStack[k.state.transactionStack.length-1]?.replace}static getInstance(){return this.instance}updateFeatures(e){m.setFeatures(e)}updateOptions(e){let t={...m.state||{},...e};m.setOptions(t)}setConnectMethodsOrder(e){m.setConnectMethodsOrder(e)}setWalletFeaturesOrder(e){m.setWalletFeaturesOrder(e)}setCollapseWallets(e){m.setCollapseWallets(e)}setSocialsOrder(e){m.setSocialsOrder(e)}getConnectMethodsOrder(){return Pe.getConnectOrderMethod(m.state.features,A.getConnectors())}removeAdapter(e){let t=this.getIsConnectedState(),n=this.getAdapter(e);if(!n||!this.chainAdapters||t)return;let r=this.caipNetworks?.filter(t=>t.chainNamespace!==e);T.removeAdapter(e),A.removeAdapter(e),this.chainNamespaces=this.chainNamespaces.filter(t=>t!==e),this.caipNetworks=r,n.removeAllEventListeners(),Reflect.deleteProperty(this.chainAdapters,e)}addAdapter(e,t){let n=e.namespace;if(!this.connectionControllerClient||!this.networkControllerClient||!this.chainAdapters||!n)return;let r=this.extendCaipNetworks({...this.options,networks:t});this.caipNetworks=[...this.caipNetworks||[],...r],this.createAdapter(e),this.initChainAdapter(n),T.addAdapter(e,{connectionControllerClient:this.connectionControllerClient,networkControllerClient:this.networkControllerClient},r)}addNetwork(e,t){if(this.chainAdapters&&!this.chainAdapters[e])throw Error(`Adapter for namespace ${e} doesn't exist`);let n=this.extendCaipNetwork(t,this.options);T.addNetwork(n),this.caipNetworks&&!this.caipNetworks?.find(e=>e.id===n.id)&&this.caipNetworks.push(n)}removeNetwork(e,t){if(this.chainAdapters&&!this.chainAdapters[e])throw Error(`Adapter for namespace ${e} doesn't exist`);if(!this.caipNetworks?.find(e=>e.id===t))throw Error(`Network with ID ${t} not found`);if(!this.caipNetworks)return;let n=this.caipNetworks.filter(n=>n.chainNamespace===e&&n.id!==t);if(!n?.length)throw Error(`Cannot remove last network for a namespace`);T.removeNetwork(e,t),this.caipNetworks=[...n]}},Pv=!1,Fv=class extends Nv{async open(e){A.isConnected()||await super.open(e)}async close(){await super.close(),this.options.manualWCControl&&b.finalizeWcConnection()}async syncIdentity(e){return Promise.resolve()}async syncBalance(e){return Promise.resolve()}async injectModalUi(){if(!Pv&&f.isClient()){if(await t(()=>import(`./basic-BrmA66cj.js`),__vite__mapDeps([3,4,1,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34])),await t(()=>import(`./w3m-modal-BXg-8Jr5.js`),__vite__mapDeps([35,30,31,5,32,1,33,17])),!document.querySelector(`w3m-modal`)){let e=document.createElement(`w3m-modal`);!m.state.disableAppend&&!m.state.enableEmbedded&&document.body.insertAdjacentElement(`beforeend`,e)}Pv=!0}}},Iv=`1.7.2`;function Lv(e){return new Fv({...e,basic:!0,sdkVersion:`html-core-${Iv}`})}var Rv=class e extends Error{constructor(){super(),Object.setPrototypeOf(this,e.prototype)}},zv=class extends Error{constructor(e){super(`WalletConnect Adapter - Method ${e} is not supported by the wallet`),this.name=`WalletConnectFeatureNotSupportedError`}};function Bv(e){let t=[e];return e===B.Mainnet||e===B.Deprecated_Mainnet?(t=[B.Mainnet,B.Deprecated_Mainnet],e===B.Deprecated_Mainnet&&console.warn(Vv.mainnet)):(e===B.Deprecated_Devnet||e===B.Devnet)&&(t=[B.Devnet,B.Deprecated_Devnet],B.Deprecated_Devnet&&console.warn(Vv.devnet)),t}var Vv={mainnet:`You are using a deprecated chain ID for Solana Mainnet, please use ${B.Mainnet} instead.`,devnet:`You are using a deprecated chain ID for Solana Devnet, please use ${B.Devnet} instead.`,wallet:`The connected wallet is using a deprecated chain ID for Solana. Please, contact them to upgrade. You can learn more at https://github.com/ChainAgnostic/namespaces/blob/main/solana/caip10.md#chain-ids`};function Hv(e,t){let n=e.namespaces.solana?.accounts.map(e=>`solana:${e.split(`:`)[1]}`);if(t===B.Mainnet)return n?.find(e=>e===B.Mainnet)?B.Mainnet:(console.warn(Vv.wallet),B.Deprecated_Mainnet);if(t===B.Devnet)return n?.find(e=>e===B.Devnet)?B.Devnet:(console.warn(Vv.wallet),B.Deprecated_Devnet);throw Error(`WalletConnect Solana Adapter: Unable to get a default chain from the session.`)}function Uv(e){return{optionalNamespaces:{solana:{chains:Bv(e),methods:[Ei.signTransaction,Ei.signMessage],events:[]}}}}var Wv=class e extends Error{constructor(){super(`QR Code Modal was closed by user`),Object.setPrototypeOf(this,e.prototype),this.name=`QRCodeModalError`}},Gv=class{_UniversalProvider;_session;_modal;_projectId;_network;_ConnectQueueResolver;constructor(e){if(this.initClient(e.options),this._network=e.network,!e.options.projectId)throw Error(`WalletConnect Adapter: Project ID is undefined`);this._projectId=e.options.projectId}async connect(){if(this._UniversalProvider||await new Promise(e=>{this._ConnectQueueResolver=e}),!this._UniversalProvider)throw Error(`WalletConnect Adapter - Universal Provider was undefined while calling 'connect()'`);if(this._UniversalProvider.session){this._session=this._UniversalProvider.session;let e=Hv(this._session,this._network);return this._network=e,this._UniversalProvider.setDefaultChain(e),{publicKey:this.publicKey}}await this.initModal();let e=Uv(this._network);this._modal?.open();let t=new AbortController,n=t.signal;this._modal?.subscribeState(e=>{e.open||t.abort(new Wv)});try{let t=await Promise.race([this._UniversalProvider?.connect(e),new Promise((e,t)=>{n.addEventListener(`abort`,()=>{t(n.reason)})})]);if(this._modal?.close(),this._session=t,!t)throw new Ze;let r=Hv(t,this._network);return this._network=r,this._UniversalProvider?.setDefaultChain(r),{publicKey:this.publicKey}}catch(e){throw this._modal?.close(),e}}async disconnect(){if(this._UniversalProvider?.session){if(await this.initModal(),!this._modal)throw Error(`WalletConnect Adapter -Modal is undefined: unable to disconnect`);await this.client.disconnect(),this._session=void 0}else throw new Rv}get client(){if(this._UniversalProvider)return this._UniversalProvider;throw new Rv}get session(){if(!this._session)throw new Rv;return this._session}get publicKey(){if(this._UniversalProvider?.session&&this._session){let{address:e}=De(this._session?.namespaces.solana?.accounts[0]??``);return new i(e)}throw new Rv}async signTransaction(e){this.checkIfWalletSupportsMethod(Ei.signTransaction);let t=et(e),n=t?{}:e,{signature:r,transaction:i}=await this.client.client.request({chainId:this._network,topic:this.session.topic,request:{method:Ei.signTransaction,params:{...n,transaction:this.serialize(e)}}});return i?this.deserialize(i,t):(e.addSignature(this.publicKey,Buffer.from(At.decode(r))),e)}async signMessage(e){this.checkIfWalletSupportsMethod(Ei.signMessage);let{signature:t}=await this.client.client.request({chainId:this._network,topic:this.session.topic,request:{method:Ei.signMessage,params:{pubkey:this.publicKey.toString(),message:At.encode(e)}}});return At.decode(t)}async signAndSendTransaction(e){this.checkIfWalletSupportsMethod(Ei.signAndSendTransaction);let{signature:t}=await this.client.client.request({chainId:this._network,topic:this.session.topic,request:{method:Ei.signAndSendTransaction,params:{transaction:this.serialize(e)}}});return t}async signAllTransactions(e){try{this.checkIfWalletSupportsMethod(Ei.signAllTransactions);let t=e.map(e=>this.serialize(e)),{transactions:n}=await this.client.client.request({chainId:this._network,topic:this.session.topic,request:{method:Ei.signAllTransactions,params:{transactions:t}}});return e.map((e,t)=>et(e)?this.deserialize(n[t]??``,!0):this.deserialize(n[t]??``))}catch(t){if(t instanceof zv){let t=e.map(e=>this.signTransaction(e));return await Promise.all(t)}throw t}}async initClient(e){let t=await Te.init(e);this._UniversalProvider=t,this._ConnectQueueResolver&&this._ConnectQueueResolver(!0)}async initModal(){if(!this._modal){if(!this._UniversalProvider)throw Error(`WalletConnect Adapter - cannot init modal when Universal Provider is undefined`);this._modal=Lv({projectId:this._projectId,universalProvider:this._UniversalProvider,networks:[wv,Tv,Ev],manualWCControl:!0})}}serialize(e){return Buffer.from(e.serialize({verifySignatures:!1})).toString(`base64`)}deserialize(e,t=!1){return t?n.deserialize(Buffer.from(e,`base64`)):r.from(Buffer.from(e,`base64`))}checkIfWalletSupportsMethod(e){if(!this.session.namespaces.solana?.methods.includes(e))throw new zv(e)}},Kv=`WalletConnect`,qv=class extends $e{name=Kv;url=`https://walletconnect.org`;icon=`data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjE4NSIgdmlld0JveD0iMCAwIDMwMCAxODUiIHdpZHRoPSIzMDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0ibTYxLjQzODU0MjkgMzYuMjU2MjYxMmM0OC45MTEyMjQxLTQ3Ljg4ODE2NjMgMTI4LjIxMTk4NzEtNDcuODg4MTY2MyAxNzcuMTIzMjA5MSAwbDUuODg2NTQ1IDUuNzYzNDE3NGMyLjQ0NTU2MSAyLjM5NDQwODEgMi40NDU1NjEgNi4yNzY1MTEyIDAgOC42NzA5MjA0bC0yMC4xMzY2OTUgMTkuNzE1NTAzYy0xLjIyMjc4MSAxLjE5NzIwNTEtMy4yMDUzIDEuMTk3MjA1MS00LjQyODA4MSAwbC04LjEwMDU4NC03LjkzMTE0NzljLTM0LjEyMTY5Mi0zMy40MDc5ODE3LTg5LjQ0Mzg4Ni0zMy40MDc5ODE3LTEyMy41NjU1Nzg4IDBsLTguNjc1MDU2MiA4LjQ5MzYwNTFjLTEuMjIyNzgxNiAxLjE5NzIwNDEtMy4yMDUzMDEgMS4xOTcyMDQxLTQuNDI4MDgwNiAwbC0yMC4xMzY2OTQ5LTE5LjcxNTUwMzFjLTIuNDQ1NTYxMi0yLjM5NDQwOTItMi40NDU1NjEyLTYuMjc2NTEyMiAwLTguNjcwOTIwNHptMjE4Ljc2Nzc5NjEgNDAuNzczNzQ0OSAxNy45MjE2OTcgMTcuNTQ2ODk3YzIuNDQ1NTQ5IDIuMzk0Mzk2OSAyLjQ0NTU2MyA2LjI3NjQ3NjkuMDAwMDMxIDguNjcwODg5OWwtODAuODEwMTcxIDc5LjEyMTEzNGMtMi40NDU1NDQgMi4zOTQ0MjYtNi40MTA1ODIgMi4zOTQ0NTMtOC44NTYxNi4wMDAwNjItLjAwMDAxLS4wMDAwMS0uMDAwMDIyLS4wMDAwMjItLjAwMDAzMi0uMDAwMDMybC01Ny4zNTQxNDMtNTYuMTU0NTcyYy0uNjExMzktLjU5ODYwMi0xLjYwMjY1LS41OTg2MDItMi4yMTQwNCAwLS4wMDAwMDQuMDAwMDA0LS4wMDAwMDcuMDAwMDA4LS4wMDAwMTEuMDAwMDExbC01Ny4zNTI5MjEyIDU2LjE1NDUzMWMtMi40NDU1MzY4IDIuMzk0NDMyLTYuNDEwNTc1NSAyLjM5NDQ3Mi04Ljg1NjE2MTIuMDAwMDg3LS4wMDAwMTQzLS4wMDAwMTQtLjAwMDAyOTYtLjAwMDAyOC0uMDAwMDQ0OS0uMDAwMDQ0bC04MC44MTI0MTk0My03OS4xMjIxODVjLTIuNDQ1NTYwMjEtMi4zOTQ0MDgtMi40NDU1NjAyMS02LjI3NjUxMTUgMC04LjY3MDkxOTdsMTcuOTIxNzI5NjMtMTcuNTQ2ODY3M2MyLjQ0NTU2MDItMi4zOTQ0MDgyIDYuNDEwNTk4OS0yLjM5NDQwODIgOC44NTYxNjAyIDBsNTcuMzU0OTc3NSA1Ni4xNTUzNTdjLjYxMTM5MDguNTk4NjAyIDEuNjAyNjQ5LjU5ODYwMiAyLjIxNDAzOTggMCAuMDAwMDA5Mi0uMDAwMDA5LjAwMDAxNzQtLjAwMDAxNy4wMDAwMjY1LS4wMDAwMjRsNTcuMzUyMTAzMS01Ni4xNTUzMzNjMi40NDU1MDUtMi4zOTQ0NjMzIDYuNDEwNTQ0LTIuMzk0NTUzMSA4Ljg1NjE2MS0uMDAwMi4wMDAwMzQuMDAwMDMzNi4wMDAwNjguMDAwMDY3My4wMDAxMDEuMDAwMTAxbDU3LjM1NDkwMiA1Ni4xNTU0MzJjLjYxMTM5LjU5ODYwMSAxLjYwMjY1LjU5ODYwMSAyLjIxNDA0IDBsNTcuMzUzOTc1LTU2LjE1NDMyNDljMi40NDU1NjEtMi4zOTQ0MDkyIDYuNDEwNTk5LTIuMzk0NDA5MiA4Ljg1NjE2IDB6IiBmaWxsPSIjM2I5OWZjIi8+PC9zdmc+`;supportedTransactionVersions=new Set([`legacy`,0]);_publicKey;_connecting;_wallet;_config;_readyState;_onDisconnect;constructor(e){super(),this._publicKey=null,this._connecting=!1,this._config=e,this._wallet=null,this._readyState=typeof window>`u`?Xe.Unsupported:Xe.Loadable,this._onDisconnect=this.disconnect.bind(this)}get publicKey(){return this._publicKey}get connecting(){return this._connecting}get readyState(){return this._readyState}async connect(){try{if(this.connected||this.connecting)return;if(this._readyState!==Xe.Loadable)throw new Je;this._connecting=!0,this._wallet=new Gv({network:this._config.network===Qe.Mainnet?Ti.Mainnet:Ti.Devnet,options:this._config.options});let{publicKey:e}=await this._wallet.connect();this._publicKey=e,this.emit(`connect`,e),this._wallet.client.on(`session_delete`,this._onDisconnect)}catch(e){throw e.constructor.name===`QRCodeModalError`||e instanceof Error&&e.name===`QRCodeModalError`?new Ke:(this._connecting=!1,e)}finally{this._connecting=!1}}async disconnect(){let e=this._wallet;if(e){e.client.off(`session_delete`,this._onDisconnect),this._publicKey=null;try{e.client.session&&await e.disconnect()}catch(e){console.error(`WalletConnectWalletAdapter: disconnect error`,e),this.emit(`error`,new Ye(e?.message,e))}}this.emit(`disconnect`)}async signTransaction(e){try{let t=this._wallet;if(!t)throw new nt;try{return await t.signTransaction(e)}catch(e){throw new qe(e?.message,e)}}catch(e){throw this.emit(`error`,e),e}}async signMessage(e){try{let t=this._wallet;if(!t)throw new nt;try{return await t.signMessage(e)}catch(e){throw new tt(e?.message,e)}}catch(e){throw this.emit(`error`,e),e}}async signAndSendTransaction(e){try{let t=this._wallet;if(!t)throw new nt;try{return await t.signAndSendTransaction(e)}catch(e){throw new qe(e?.message,e)}}catch(e){throw this.emit(`error`,e),e}}async signAllTransactions(e){try{let t=this._wallet;if(!t)throw new nt;try{return await t.signAllTransactions(e)}catch(e){throw new qe(e?.message,e)}}catch(e){throw this.emit(`error`,e),e}}};export{qv as WalletConnectWalletAdapter,Kv as WalletConnectWalletName};
|