@wormhole-foundation/wormhole-connect 2.5.0-beta.0-development → 2.5.0-beta.2-development
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/{aptos-t5JANz4b.js → aptos-BGyyK8mz.js} +3 -3
- package/dist/assets/{aptos-DvAOSqnD.js → aptos-Cepohe0c.js} +1 -1
- package/dist/assets/{blake2b-CzqSqyTv.js → blake2b-BwI-z5NJ.js} +1 -1
- package/dist/assets/{ccip-4EBcfi6P.js → ccip-BpjdU5zN.js} +1 -1
- package/dist/assets/{chunk-IMTC3J2M-Cms0K4gx.js → chunk-IMTC3J2M-CWE1FuDc.js} +1 -1
- package/dist/assets/events-6PekJgMN.js +1 -0
- package/dist/assets/{evm-8e-eySdo.js → evm-DS7RCBlt.js} +2 -2
- package/dist/assets/{evm-CYjbe4kH.js → evm-DvDOQf0K.js} +4 -4
- package/dist/assets/{index-M2j4uONF.js → index-5kmPKAJ_.js} +1 -1
- package/dist/assets/{index-DALVDBZq.js → index-BP8gdgNH.js} +1 -1
- package/dist/assets/{index-BgVVAYar.js → index-BXRb91Mn.js} +1 -1
- package/dist/assets/{index-SO_H3W5I.js → index-Bbr14gKC.js} +1 -1
- package/dist/assets/index-BjVbgKwL.js +1 -0
- package/dist/assets/{index-JtvUouOr.js → index-BwPu1wGj.js} +1 -1
- package/dist/assets/{index-CwGBYrGm.js → index-BxXKtU8j.js} +1 -1
- package/dist/assets/{index-BKj7Inys.js → index-BzNSt2uL.js} +1 -1
- package/dist/assets/{index-CSHmWPOV.js → index-C1f05Vbe.js} +1 -1
- package/dist/assets/{index-BcX-2q-J.js → index-C74fy0qh.js} +1 -1
- package/dist/assets/{index-Dl17aI3S.js → index-CCOom38X.js} +1 -1
- package/dist/assets/{index-C0rvraea.js → index-CHnF49kB.js} +1 -1
- package/dist/assets/{index-DmaqQuhH.js → index-CyxmcHOs.js} +1 -1
- package/dist/assets/{index-Chd_bwGM.js → index-D1MoRUWm.js} +1 -1
- package/dist/assets/{index-CqA1lXp5.js → index-D54DXHBu.js} +1 -1
- package/dist/assets/index-D8nnAO88.js +1 -0
- package/dist/assets/index-DpMc0uqY.js +1 -0
- package/dist/assets/{index-Ced_GF9G.js → index-FNyibGfB.js} +2 -2
- package/dist/assets/{index-D9U4BOHM.js → index-X7Qc-hll.js} +1 -1
- package/dist/assets/{index-CcMXeWAX.js → index-YqzS8F8M.js} +2 -2
- package/dist/assets/{index.es-Bzsluoyw.js → index.es-B2WvD5Rz.js} +6 -6
- package/dist/assets/{solana-BHeUantu.js → solana-Dj3oh4lV.js} +2 -2
- package/dist/assets/solana-DseaNtL0.js +2 -0
- package/dist/assets/solanaEmbed.esm-xl7iC7nm.js +37 -0
- package/dist/assets/sui-BdOrw1dc.js +2 -0
- package/dist/assets/{sui-CLrvrAHM.js → sui-Ck-FZzH_.js} +1 -1
- package/dist/assets/unsignedTransaction-arVvzoJx.js +1 -0
- package/dist/main.js +102 -102
- package/dist/src/AppRouter.d.ts.map +1 -1
- package/dist/src/utils/coingecko.d.ts.map +1 -1
- package/lib/{aptos-By3qLiAP.js → aptos-BHFBFxf9.js} +1 -1
- package/lib/{aptos-C3Ph4uY9.mjs → aptos-BusONhYq.mjs} +5 -5
- package/lib/{aptos-Cs46Nns5.mjs → aptos-DS0eK_De.mjs} +2 -2
- package/lib/{aptos-D7X5GMcO.js → aptos-Dqp93_ct.js} +2 -2
- package/lib/{base64-B-n8C-1n.js → base64-Cjk6rii_.js} +1 -1
- package/lib/{base64-DxqKuhqD.mjs → base64-Vgzj53Io.mjs} +1 -1
- package/lib/{ccip-BoG9ZHRV.js → ccip-BLUli_Dz.js} +1 -1
- package/lib/{ccip-DgwbitdX.mjs → ccip-FbY2UZlg.mjs} +1 -1
- package/lib/{chunk-IMTC3J2M-DfLEkM5Z.js → chunk-IMTC3J2M-6yduhw0s.js} +1 -1
- package/lib/{chunk-IMTC3J2M-w136PyXJ.mjs → chunk-IMTC3J2M-AkEA0_z6.mjs} +3 -3
- package/lib/{evm-Bta1KBsb.js → evm-BB0d_Gf4.js} +2 -2
- package/lib/{evm--NPB9x1d.mjs → evm-DAHEa0cY.mjs} +5 -5
- package/lib/{evm-BwXOj4Er.js → evm-DZww7tTt.js} +3 -3
- package/lib/{evm-OXQXmbRf.mjs → evm-gEzFFEsO.mjs} +6 -6
- package/lib/{index-C2jvFfvC.js → index-6m6Q8Vsa.js} +1 -1
- package/lib/{index-0m16n7L7.js → index-8STuBnQE.js} +1 -1
- package/lib/{index-hFtbBndd.js → index-B5i1j7Dy.js} +1 -1
- package/lib/{index-CoEGiDGu.js → index-BZh72NtL.js} +1 -1
- package/lib/{index-C86P0A0Y.mjs → index-BaMrMiTv.mjs} +1 -1
- package/lib/{index-BEHglvs0.js → index-BbxXJYWg.js} +1 -1
- package/lib/{index-ByicGRKs.mjs → index-Bcl7n3KD.mjs} +2 -2
- package/lib/{index-Bi6PAFR8.mjs → index-BeYO1LV3.mjs} +2 -2
- package/lib/{index-wsfzS6PN.js → index-Bhgci81L.js} +120 -120
- package/lib/{index-CWffCIQl.js → index-BuPKwE_4.js} +1 -1
- package/lib/{index-C5tynAhb.mjs → index-C27ZY3oS.mjs} +1 -1
- package/lib/{index-bDliG7yg.mjs → index-C6YOw6gB.mjs} +4 -4
- package/lib/{index-1WX3nZoM.mjs → index-CA09NOzo.mjs} +3 -3
- package/lib/index-CHaex8L3.mjs +75 -0
- package/lib/{index-B5z5oFY1.js → index-CSK3DRpf.js} +1 -1
- package/lib/{index-Cslbrg97.js → index-CT45reKG.js} +1 -1
- package/lib/{index-PnMJX4OC.mjs → index-CkXJo6xD.mjs} +1 -1
- package/lib/{index-FGc8swXY.mjs → index-Cs1dlfzD.mjs} +1 -1
- package/lib/{index-CKtZvS3X.mjs → index-CxTd6N-A.mjs} +2 -2
- package/lib/{index-CGbtcED2.mjs → index-D9hjnIst.mjs} +2 -2
- package/lib/{index-CksJcNrV.mjs → index-DDZaEBsC.mjs} +3 -3
- package/lib/{index-CDwpyfnd.mjs → index-DR-fv3uE.mjs} +2 -2
- package/lib/{index-BGqNMVpQ.js → index-DUC1gOTG.js} +1 -1
- package/lib/{index-Bpx_Rf1J.js → index-DUZnVNwZ.js} +1 -1
- package/lib/{index-DLiQpgMj.js → index-DXzXHly-.js} +1 -1
- package/lib/{index-MytorfyK.mjs → index-D_PIxJ0d.mjs} +2 -2
- package/lib/index-D_XBMeuk.js +1 -0
- package/lib/{index-DSejRtdA.js → index-DcYZkDfF.js} +1 -1
- package/lib/{index-cyTUScMF.js → index-DhR1_nfh.js} +1 -1
- package/lib/index-DhowVYVk.mjs +191 -0
- package/lib/{index-BLxoZ8qT.js → index-DlNp9VMO.js} +1 -1
- package/lib/{index-zMaT9P4V.mjs → index-DpeIjsSi.mjs} +1 -1
- package/lib/{index-B3smMSuW.js → index-Ds5QMWJr.js} +1 -1
- package/lib/{index-BXc3l4Br.mjs → index-Ds6Q5qfX.mjs} +2 -2
- package/lib/{index-DlW1-aGm.js → index-DtjJKYjA.js} +1 -1
- package/lib/{index-ILKgpNXM.js → index-FoZ3qnSm.js} +1 -1
- package/lib/{index-CoX_24Ky.mjs → index-GSQqQOXb.mjs} +1 -1
- package/lib/{index-m0543tB2.mjs → index-LdDD7AAy.mjs} +20959 -32801
- package/lib/index-OqOcvaDE.mjs +654 -0
- package/lib/{index-50mhIuON.mjs → index-QCqnETT_.mjs} +2 -2
- package/lib/index-j8CdhHvQ.js +1 -0
- package/lib/{index-Dt0J9sau.js → index-pWRTEePn.js} +1 -1
- package/lib/{index-DPM7TGSv.mjs → index-pg4EQbm-.mjs} +11 -2
- package/lib/index-s9pQs8eO.js +1 -0
- package/lib/{index-CANn2DFq.mjs → index-tI4rmxN8.mjs} +1 -1
- package/lib/{index-NTAse-vE.js → index-u05I0QmU.js} +1 -1
- package/lib/{index.es-DIL345_I.js → index.es-BeAVotPr.js} +2 -2
- package/lib/{index.es-Bh1QXm67.mjs → index.es-Z5ZsZIyC.mjs} +5 -5
- package/lib/index.js +1 -1
- package/lib/index.mjs +19 -19
- package/lib/{signer-CeNONJjb.mjs → signer-B0f07_6U.mjs} +1 -1
- package/lib/{signer-Br2-fgMa.js → signer-yr6Zpc2i.js} +1 -1
- package/lib/{solana-C5lAA_Eh.mjs → solana-C-LeRjT-.mjs} +4 -4
- package/lib/solana-Ci7N1M7R.js +1 -0
- package/lib/solana-DCefclYK.mjs +17 -0
- package/lib/{solana-Bwwk-8HE.js → solana-DWYDxAWP.js} +1 -1
- package/lib/{solanaEmbed.esm-_NPc8tZC.mjs → solanaEmbed.esm-CEtmCHNm.mjs} +1 -1
- package/lib/{solanaEmbed.esm-BMTrlSVI.js → solanaEmbed.esm-D5pFIuXZ.js} +1 -1
- package/lib/src/AppRouter.d.ts.map +1 -1
- package/lib/src/utils/coingecko.d.ts.map +1 -1
- package/lib/sui-756LVCZm.js +1 -0
- package/lib/{sui-zLYQBpSC.js → sui-BIUo4whG.js} +1 -1
- package/lib/sui-BuI3_sI0.mjs +585 -0
- package/lib/{sui-X62i5q3_.mjs → sui-naAV3r83.mjs} +1 -1
- package/package.json +17 -17
- package/dist/assets/index-BRtMY3at.js +0 -1
- package/dist/assets/index-BUlVFUMr.js +0 -1
- package/dist/assets/index-RBS_ALc7.js +0 -1
- package/dist/assets/solana-BEFCVrXa.js +0 -2
- package/dist/assets/solanaEmbed.esm-B7A7qKmk.js +0 -37
- package/dist/assets/sui-C1wbtvIC.js +0 -2
- package/lib/index-CNkTJOH_.js +0 -1
- package/lib/index-DN6dWOSB.js +0 -1
- package/lib/index-DUOnxuE_.mjs +0 -252
- package/lib/index-DqFY4i5u.js +0 -1
- package/lib/index-Eomc9IwB.mjs +0 -936
- package/lib/index-fkzogQYE.mjs +0 -376
- package/lib/solana-4Qcfxe9o.js +0 -1
- package/lib/solana-DM9nG3cQ.mjs +0 -17
- package/lib/sui-BvJu9wTN.mjs +0 -701
- package/lib/sui-pGBefbTJ.js +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{bW as He,bY as Wl,i as R,bV as sa,S as Hl,j as oa,bZ as L,b_ as Ye,bX as aa,P as Jl,T as Gl}from"../main.js";import{d as Yl}from"./dijkstra-D_NXgYpA.js";import{c as I}from"./index-CSHmWPOV.js";import{r as Ql,a as It,g as xt,i as qe,b as ni,I as Rt,f as Ce,t as fe,w as Hi,c as Si,C as Xl,d as Zl,e as ns,h as eu,j as tu,k as vn,p as ru,l as wn,A as iu,E as pe,m as nu,y as be,P as ss,Q as su,n as ou,T as ca,o as _n,q as bn,s as Qe,_ as au,u as vt}from"./index-CcMXeWAX.js";import{s as la,a as Re,h as ua,L as cu,d as nr,l as lu,e as Ii,g as uu,i as os,k as hu}from"./index-SO_H3W5I.js";let du=class extends Ql{constructor(e){super(e),this.events=new He.EventEmitter,this.hasRegisteredEventListeners=!1,this.connection=this.setConnection(e),this.connection.connected&&this.registerEventListeners()}async connect(e=this.connection){await this.open(e)}async disconnect(){await this.close()}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 request(e,t){return this.requestStrict(It(e.method,e.params||[],e.id||xt().toString()),t)}async requestStrict(e,t){return new Promise(async(i,n)=>{if(!this.connection.connected)try{await this.open()}catch(s){n(s)}this.events.on(`${e.id}`,s=>{qe(s)?n(s.error):i(s.result)});try{await this.connection.send(e,t)}catch(s){n(s)}})}setConnection(e=this.connection){return e}onPayload(e){this.events.emit("payload",e),ni(e)?this.events.emit(`${e.id}`,e):this.events.emit("message",{type:e.method,data:e.params})}onClose(e){e&&e.code===3e3&&this.events.emit("error",new Error(`WebSocket connection closed abnormally with code: ${e.code} ${e.reason?`(${e.reason})`:""}`)),this.events.emit("disconnect")}async open(e=this.connection){this.connection===e&&this.connection.connected||(this.connection.connected&&this.close(),typeof e=="string"&&(await this.connection.open(e),e=this.connection),this.connection=this.setConnection(e),await this.connection.open(),this.registerEventListeners(),this.events.emit("connect"))}async close(){await this.connection.close()}registerEventListeners(){this.hasRegisteredEventListeners||(this.connection.on("payload",e=>this.onPayload(e)),this.connection.on("close",e=>this.onClose(e)),this.connection.on("error",e=>this.events.emit("error",e)),this.connection.on("register_error",e=>this.onClose()),this.hasRegisteredEventListeners=!0)}};var fu=function(){var r=document.getSelection();if(!r.rangeCount)return function(){};for(var e=document.activeElement,t=[],i=0;i<r.rangeCount;i++)t.push(r.getRangeAt(i));switch(e.tagName.toUpperCase()){case"INPUT":case"TEXTAREA":e.blur();break;default:e=null;break}return r.removeAllRanges(),function(){r.type==="Caret"&&r.removeAllRanges(),r.rangeCount||t.forEach(function(n){r.addRange(n)}),e&&e.focus()}},pu=fu,as={"text/plain":"Text","text/html":"Url",default:"Text"},gu="Copy to clipboard: #{key}, Enter";function yu(r){var e=(/mac os x/i.test(navigator.userAgent)?"⌘":"Ctrl")+"+C";return r.replace(/#{\s*key\s*}/g,e)}function mu(r,e){var t,i,n,s,o,a,c=!1;e||(e={}),t=e.debug||!1;try{n=pu(),s=document.createRange(),o=document.getSelection(),a=document.createElement("span"),a.textContent=r,a.ariaHidden="true",a.style.all="unset",a.style.position="fixed",a.style.top=0,a.style.clip="rect(0, 0, 0, 0)",a.style.whiteSpace="pre",a.style.webkitUserSelect="text",a.style.MozUserSelect="text",a.style.msUserSelect="text",a.style.userSelect="text",a.addEventListener("copy",function(u){if(u.stopPropagation(),e.format)if(u.preventDefault(),typeof u.clipboardData>"u"){t&&console.warn("unable to use e.clipboardData"),t&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var h=as[e.format]||as.default;window.clipboardData.setData(h,r)}else u.clipboardData.clearData(),u.clipboardData.setData(e.format,r);e.onCopy&&(u.preventDefault(),e.onCopy(u.clipboardData))}),document.body.appendChild(a),s.selectNodeContents(a),o.addRange(s);var l=document.execCommand("copy");if(!l)throw new Error("copy command was unsuccessful");c=!0}catch(u){t&&console.error("unable to copy using execCommand: ",u),t&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(e.format||"text",r),e.onCopy&&e.onCopy(window.clipboardData),c=!0}catch(h){t&&console.error("unable to copy using clipboardData: ",h),t&&console.error("falling back to prompt"),i=yu("message"in e?e.message:gu),window.prompt(i,r)}}finally{o&&(typeof o.removeRange=="function"?o.removeRange(s):o.removeAllRanges()),a&&document.body.removeChild(a),n()}return c}var vu=mu,wu={}.toString,En=Array.isArray||function(r){return wu.call(r)=="[object Array]"},_u=Wl(),Sn={},Y={};Object.defineProperty(Y,"__esModule",{value:!0});var ha=Y.getLocalStorage=Ea=Y.getLocalStorageOrThrow=ba=Y.getCrypto=_a=Y.getCryptoOrThrow=wa=Y.getLocation=va=Y.getLocationOrThrow=ma=Y.getNavigator=ya=Y.getNavigatorOrThrow=ga=Y.getDocument=pa=Y.getDocumentOrThrow=fa=Y.getFromWindowOrThrow=da=Y.getFromWindow=void 0;function Ct(r){let e;return typeof window<"u"&&typeof window[r]<"u"&&(e=window[r]),e}var da=Y.getFromWindow=Ct;function Qt(r){const e=Ct(r);if(!e)throw new Error(`${r} is not defined in Window`);return e}var fa=Y.getFromWindowOrThrow=Qt;function bu(){return Qt("document")}var pa=Y.getDocumentOrThrow=bu;function Eu(){return Ct("document")}var ga=Y.getDocument=Eu;function Su(){return Qt("navigator")}var ya=Y.getNavigatorOrThrow=Su;function Iu(){return Ct("navigator")}var ma=Y.getNavigator=Iu;function xu(){return Qt("location")}var va=Y.getLocationOrThrow=xu;function Pu(){return Ct("location")}var wa=Y.getLocation=Pu;function Au(){return Qt("crypto")}var _a=Y.getCryptoOrThrow=Au;function Tu(){return Ct("crypto")}var ba=Y.getCrypto=Tu;function Ru(){return Qt("localStorage")}var Ea=Y.getLocalStorageOrThrow=Ru;function Cu(){return Ct("localStorage")}ha=Y.getLocalStorage=Cu;Object.defineProperty(Sn,"__esModule",{value:!0});var Sa=Sn.getWindowMetadata=void 0;const cs=Y;function Nu(){let r,e;try{r=cs.getDocumentOrThrow(),e=cs.getLocationOrThrow()}catch{return null}function t(){const h=r.getElementsByTagName("link"),p=[];for(let d=0;d<h.length;d++){const f=h[d],g=f.getAttribute("rel");if(g&&g.toLowerCase().indexOf("icon")>-1){const y=f.getAttribute("href");if(y)if(y.toLowerCase().indexOf("https:")===-1&&y.toLowerCase().indexOf("http:")===-1&&y.indexOf("//")!==0){let m=e.protocol+"//"+e.host;if(y.indexOf("/")===0)m+=y;else{const v=e.pathname.split("/");v.pop();const _=v.join("/");m+=_+"/"+y}p.push(m)}else if(y.indexOf("//")===0){const m=e.protocol+y;p.push(m)}else p.push(y)}}return p}function i(...h){const p=r.getElementsByTagName("meta");for(let d=0;d<p.length;d++){const f=p[d],g=["itemprop","property","name"].map(y=>f.getAttribute(y)).filter(y=>y?h.includes(y):!1);if(g.length&&g){const y=f.getAttribute("content");if(y)return y}}return""}function n(){let h=i("name","og:site_name","og:title","twitter:title");return h||(h=r.title),h}function s(){return i("description","og:description","twitter:description","keywords")}const o=n(),a=s(),c=e.origin,l=t();return{description:a,url:c,icons:l,name:o}}Sa=Sn.getWindowMetadata=Nu;var Ou=function(){for(var r=0,e=0,t=arguments.length;e<t;e++)r+=arguments[e].length;for(var i=Array(r),n=0,e=0;e<t;e++)for(var s=arguments[e],o=0,a=s.length;o<a;o++,n++)i[n]=s[o];return i},$u=function(){function r(e,t,i){this.name=e,this.version=t,this.os=i,this.type="browser"}return r}(),ku=function(){function r(e){this.version=e,this.type="node",this.name="node",this.os=R.process.platform}return r}(),Mu=function(){function r(e,t,i,n){this.name=e,this.version=t,this.os=i,this.bot=n,this.type="bot-device"}return r}(),Lu=function(){function r(){this.type="bot",this.bot=!0,this.name="bot",this.version=null,this.os=null}return r}(),Du=function(){function r(){this.type="react-native",this.name="react-native",this.version=null,this.os=null}return r}(),Fu=/alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/,qu=/(nuhk|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask\ Jeeves\/Teoma|ia_archiver)/,ls=3,Uu=[["aol",/AOLShield\/([0-9\._]+)/],["edge",/Edge\/([0-9\._]+)/],["edge-ios",/EdgiOS\/([0-9\._]+)/],["yandexbrowser",/YaBrowser\/([0-9\._]+)/],["kakaotalk",/KAKAOTALK\s([0-9\.]+)/],["samsung",/SamsungBrowser\/([0-9\.]+)/],["silk",/\bSilk\/([0-9._-]+)\b/],["miui",/MiuiBrowser\/([0-9\.]+)$/],["beaker",/BeakerBrowser\/([0-9\.]+)/],["edge-chromium",/EdgA?\/([0-9\.]+)/],["chromium-webview",/(?!Chrom.*OPR)wv\).*Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/],["chrome",/(?!Chrom.*OPR)Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/],["phantomjs",/PhantomJS\/([0-9\.]+)(:?\s|$)/],["crios",/CriOS\/([0-9\.]+)(:?\s|$)/],["firefox",/Firefox\/([0-9\.]+)(?:\s|$)/],["fxios",/FxiOS\/([0-9\.]+)/],["opera-mini",/Opera Mini.*Version\/([0-9\.]+)/],["opera",/Opera\/([0-9\.]+)(?:\s|$)/],["opera",/OPR\/([0-9\.]+)(:?\s|$)/],["ie",/Trident\/7\.0.*rv\:([0-9\.]+).*\).*Gecko$/],["ie",/MSIE\s([0-9\.]+);.*Trident\/[4-7].0/],["ie",/MSIE\s(7\.0)/],["bb10",/BB10;\sTouch.*Version\/([0-9\.]+)/],["android",/Android\s([0-9\.]+)/],["ios",/Version\/([0-9\._]+).*Mobile.*Safari.*/],["safari",/Version\/([0-9\._]+).*Safari/],["facebook",/FBAV\/([0-9\.]+)/],["instagram",/Instagram\s([0-9\.]+)/],["ios-webview",/AppleWebKit\/([0-9\.]+).*Mobile/],["ios-webview",/AppleWebKit\/([0-9\.]+).*Gecko\)$/],["searchbot",Fu]],us=[["iOS",/iP(hone|od|ad)/],["Android OS",/Android/],["BlackBerry OS",/BlackBerry|BB10/],["Windows Mobile",/IEMobile/],["Amazon OS",/Kindle/],["Windows 3.11",/Win16/],["Windows 95",/(Windows 95)|(Win95)|(Windows_95)/],["Windows 98",/(Windows 98)|(Win98)/],["Windows 2000",/(Windows NT 5.0)|(Windows 2000)/],["Windows XP",/(Windows NT 5.1)|(Windows XP)/],["Windows Server 2003",/(Windows NT 5.2)/],["Windows Vista",/(Windows NT 6.0)/],["Windows 7",/(Windows NT 6.1)/],["Windows 8",/(Windows NT 6.2)/],["Windows 8.1",/(Windows NT 6.3)/],["Windows 10",/(Windows NT 10.0)/],["Windows ME",/Windows ME/],["Open BSD",/OpenBSD/],["Sun OS",/SunOS/],["Chrome OS",/CrOS/],["Linux",/(Linux)|(X11)/],["Mac OS",/(Mac_PowerPC)|(Macintosh)/],["QNX",/QNX/],["BeOS",/BeOS/],["OS/2",/OS\/2/]];function Bu(r){return r?hs(r):typeof document>"u"&&typeof navigator<"u"&&navigator.product==="ReactNative"?new Du:typeof navigator<"u"?hs(navigator.userAgent):ju()}function zu(r){return r!==""&&Uu.reduce(function(e,t){var i=t[0],n=t[1];if(e)return e;var s=n.exec(r);return!!s&&[i,s]},!1)}function hs(r){var e=zu(r);if(!e)return null;var t=e[0],i=e[1];if(t==="searchbot")return new Lu;var n=i[1]&&i[1].split(/[._]/).slice(0,3);n?n.length<ls&&(n=Ou(n,Vu(ls-n.length))):n=[];var s=n.join("."),o=Ku(r),a=qu.exec(r);return a&&a[1]?new Mu(t,s,o,a[1]):new $u(t,s,o)}function Ku(r){for(var e=0,t=us.length;e<t;e++){var i=us[e],n=i[0],s=i[1],o=s.exec(r);if(o)return n}return null}function ju(){var r=typeof R.process<"u"&&R.process.version;return r?new ku(R.process.version.slice(1)):null}function Vu(r){for(var e=[],t=0;t<r;t++)e.push("0");return e}function In(r){return Bu(r)}function si(){const r=In();return r&&r.os?r.os:void 0}function Ia(){const r=si();return r?r.toLowerCase().includes("android"):!1}function xa(){const r=si();return r?r.toLowerCase().includes("ios")||r.toLowerCase().includes("mac")&&navigator.maxTouchPoints>1:!1}function Wu(){return si()?Ia()||xa():!1}function Pa(){const r=In();return r&&r.name?r.name.toLowerCase()==="node":!1}function Hu(){return!Pa()&&!!Aa()}const Ju=da,Gu=fa,Yu=pa,Qu=ga,Xu=ya,Aa=ma,Zu=va,eh=wa,th=_a,rh=ba,ih=Ea,oi=ha;function nh(){return Sa()}function sh(r){if(typeof r!="string")throw new Error(`Cannot safe json parse value of type ${typeof r}`);try{return JSON.parse(r)}catch{return r}}function oh(r){return typeof r=="string"?r:JSON.stringify(r)}const Ta=sh,Ra=oh;function Ca(r,e){const t=Ra(e),i=oi();i&&i.setItem(r,t)}function ah(r){let e=null,t=null;const i=oi();return i&&(t=i.getItem(r)),e=t&&Ta(t),e}function ch(r){const e=oi();e&&e.removeItem(r)}const Na="WALLETCONNECT_DEEPLINK_CHOICE";function lh(r,e){const t=encodeURIComponent(r);return e.universalLink?`${e.universalLink}/wc?uri=${t}`:e.deepLink?`${e.deepLink}${e.deepLink.endsWith(":")?"//":"/"}wc?uri=${t}`:""}function uh(r){const e=r.href.split("?")[0];Ca(Na,Object.assign(Object.assign({},r),{href:e}))}function Oa(r,e){return r.filter(t=>t.name.toLowerCase().includes(e.toLowerCase()))[0]}function hh(r,e){let t=r;return e&&(t=e.map(i=>Oa(r,i)).filter(Boolean)),t}const $a="https://registry.walletconnect.com";function dh(){return $a+"/api/v2/wallets"}function fh(){return $a+"/api/v2/dapps"}function ka(r,e="mobile"){var t;return{name:r.name||"",shortName:r.metadata.shortName||"",color:r.metadata.colors.primary||"",logo:(t=r.image_url.sm)!==null&&t!==void 0?t:"",universalLink:r[e].universal||"",deepLink:r[e].native||""}}function ph(r,e="mobile"){return Object.values(r).filter(t=>!!t[e].universal||!!t[e].native).map(t=>ka(t,e))}const gh=Object.freeze(Object.defineProperty({__proto__:null,detectEnv:In,detectOS:si,formatIOSMobile:lh,formatMobileRegistry:ph,formatMobileRegistryEntry:ka,getClientMeta:nh,getCrypto:rh,getCryptoOrThrow:th,getDappRegistryUrl:fh,getDocument:Qu,getDocumentOrThrow:Yu,getFromWindow:Ju,getFromWindowOrThrow:Gu,getLocal:ah,getLocalStorage:oi,getLocalStorageOrThrow:ih,getLocation:eh,getLocationOrThrow:Zu,getMobileLinkRegistry:hh,getMobileRegistryEntry:Oa,getNavigator:Aa,getNavigatorOrThrow:Xu,getWalletRegistryUrl:dh,isAndroid:Ia,isBrowser:Hu,isIOS:xa,isMobile:Wu,isNode:Pa,mobileLinkChoiceKey:Na,removeLocal:ch,safeJsonParse:Ta,safeJsonStringify:Ra,saveMobileLinkInfo:uh,setLocal:Ca},Symbol.toStringTag,{value:"Module"})),yh=sa(gh);var Ir={},mh=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then},Ma={},pt={},vh=En;function wh(){try{var r=new Uint8Array(1);return r.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},r.foo()===42}catch{return!1}}z.TYPED_ARRAY_SUPPORT=wh();var ds=z.TYPED_ARRAY_SUPPORT?2147483647:1073741823;function z(r,e,t){return!z.TYPED_ARRAY_SUPPORT&&!(this instanceof z)?new z(r,e,t):typeof r=="number"?La(this,r):Ph(this,r,e,t)}z.TYPED_ARRAY_SUPPORT&&(z.prototype.__proto__=Uint8Array.prototype,z.__proto__=Uint8Array,typeof Symbol<"u"&&Symbol.species&&z[Symbol.species]===z&&Object.defineProperty(z,Symbol.species,{value:null,configurable:!0,enumerable:!1,writable:!1}));function xn(r){if(r>=ds)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+ds.toString(16)+" bytes");return r|0}function _h(r){return r!==r}function Bt(r,e){var t;return z.TYPED_ARRAY_SUPPORT?(t=new Uint8Array(e),t.__proto__=z.prototype):(t=r,t===null&&(t=new z(e)),t.length=e),t}function La(r,e){var t=Bt(r,e<0?0:xn(e)|0);if(!z.TYPED_ARRAY_SUPPORT)for(var i=0;i<e;++i)t[i]=0;return t}function bh(r,e){var t=Fa(e)|0,i=Bt(r,t),n=i.write(e);return n!==t&&(i=i.slice(0,n)),i}function Ji(r,e){for(var t=e.length<0?0:xn(e.length)|0,i=Bt(r,t),n=0;n<t;n+=1)i[n]=e[n]&255;return i}function Eh(r,e,t,i){if(t<0||e.byteLength<t)throw new RangeError("'offset' is out of bounds");if(e.byteLength<t+(i||0))throw new RangeError("'length' is out of bounds");var n;return t===void 0&&i===void 0?n=new Uint8Array(e):i===void 0?n=new Uint8Array(e,t):n=new Uint8Array(e,t,i),z.TYPED_ARRAY_SUPPORT?n.__proto__=z.prototype:n=Ji(r,n),n}function Sh(r,e){if(z.isBuffer(e)){var t=xn(e.length)|0,i=Bt(r,t);return i.length===0||e.copy(i,0,0,t),i}if(e){if(typeof ArrayBuffer<"u"&&e.buffer instanceof ArrayBuffer||"length"in e)return typeof e.length!="number"||_h(e.length)?Bt(r,0):Ji(r,e);if(e.type==="Buffer"&&Array.isArray(e.data))return Ji(r,e.data)}throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}function Da(r,e){e=e||1/0;for(var t,i=r.length,n=null,s=[],o=0;o<i;++o){if(t=r.charCodeAt(o),t>55295&&t<57344){if(!n){if(t>56319){(e-=3)>-1&&s.push(239,191,189);continue}else if(o+1===i){(e-=3)>-1&&s.push(239,191,189);continue}n=t;continue}if(t<56320){(e-=3)>-1&&s.push(239,191,189),n=t;continue}t=(n-55296<<10|t-56320)+65536}else n&&(e-=3)>-1&&s.push(239,191,189);if(n=null,t<128){if((e-=1)<0)break;s.push(t)}else if(t<2048){if((e-=2)<0)break;s.push(t>>6|192,t&63|128)}else if(t<65536){if((e-=3)<0)break;s.push(t>>12|224,t>>6&63|128,t&63|128)}else if(t<1114112){if((e-=4)<0)break;s.push(t>>18|240,t>>12&63|128,t>>6&63|128,t&63|128)}else throw new Error("Invalid code point")}return s}function Fa(r){if(z.isBuffer(r))return r.length;if(typeof ArrayBuffer<"u"&&typeof ArrayBuffer.isView=="function"&&(ArrayBuffer.isView(r)||r instanceof ArrayBuffer))return r.byteLength;typeof r!="string"&&(r=""+r);var e=r.length;return e===0?0:Da(r).length}function Ih(r,e,t,i){for(var n=0;n<i&&!(n+t>=e.length||n>=r.length);++n)e[n+t]=r[n];return n}function xh(r,e,t,i){return Ih(Da(e,r.length-t),r,t,i)}function Ph(r,e,t,i){if(typeof e=="number")throw new TypeError('"value" argument must not be a number');return typeof ArrayBuffer<"u"&&e instanceof ArrayBuffer?Eh(r,e,t,i):typeof e=="string"?bh(r,e):Sh(r,e)}z.prototype.write=function(e,t,i){t===void 0?(i=this.length,t=0):i===void 0&&typeof t=="string"?(i=this.length,t=0):isFinite(t)&&(t=t|0,isFinite(i)?i=i|0:i=void 0);var n=this.length-t;if((i===void 0||i>n)&&(i=n),e.length>0&&(i<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");return xh(this,e,t,i)};z.prototype.slice=function(e,t){var i=this.length;e=~~e,t=t===void 0?i:~~t,e<0?(e+=i,e<0&&(e=0)):e>i&&(e=i),t<0?(t+=i,t<0&&(t=0)):t>i&&(t=i),t<e&&(t=e);var n;if(z.TYPED_ARRAY_SUPPORT)n=this.subarray(e,t),n.__proto__=z.prototype;else{var s=t-e;n=new z(s,void 0);for(var o=0;o<s;++o)n[o]=this[o+e]}return n};z.prototype.copy=function(e,t,i,n){if(i||(i=0),!n&&n!==0&&(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n<i&&(n=i),n===i||e.length===0||this.length===0)return 0;if(t<0)throw new RangeError("targetStart out of bounds");if(i<0||i>=this.length)throw new RangeError("sourceStart out of bounds");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t<n-i&&(n=e.length-t+i);var s=n-i,o;if(this===e&&i<t&&t<n)for(o=s-1;o>=0;--o)e[o+t]=this[o+i];else if(s<1e3||!z.TYPED_ARRAY_SUPPORT)for(o=0;o<s;++o)e[o+t]=this[o+i];else Uint8Array.prototype.set.call(e,this.subarray(i,i+s),t);return s};z.prototype.fill=function(e,t,i){if(typeof e=="string"){if(typeof t=="string"?(t=0,i=this.length):typeof i=="string"&&(i=this.length),e.length===1){var n=e.charCodeAt(0);n<256&&(e=n)}}else typeof e=="number"&&(e=e&255);if(t<0||this.length<t||this.length<i)throw new RangeError("Out of range index");if(i<=t)return this;t=t>>>0,i=i===void 0?this.length:i>>>0,e||(e=0);var s;if(typeof e=="number")for(s=t;s<i;++s)this[s]=e;else{var o=z.isBuffer(e)?e:new z(e),a=o.length;for(s=0;s<i-t;++s)this[s+t]=o[s%a]}return this};z.concat=function(e,t){if(!vh(e))throw new TypeError('"list" argument must be an Array of Buffers');if(e.length===0)return Bt(null,0);var i;if(t===void 0)for(t=0,i=0;i<e.length;++i)t+=e[i].length;var n=La(null,t),s=0;for(i=0;i<e.length;++i){var o=e[i];if(!z.isBuffer(o))throw new TypeError('"list" argument must be an Array of Buffers');o.copy(n,s),s+=o.length}return n};z.byteLength=Fa;z.prototype._isBuffer=!0;z.isBuffer=function(e){return!!(e!=null&&e._isBuffer)};pt.alloc=function(r){var e=new z(r);return e.fill(0),e};pt.from=function(r){return new z(r)};var Ee={},Pn,Ah=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];Ee.getSymbolSize=function(e){if(!e)throw new Error('"version" cannot be null or undefined');if(e<1||e>40)throw new Error('"version" should be in range from 1 to 40');return e*4+17};Ee.getSymbolTotalCodewords=function(e){return Ah[e]};Ee.getBCHDigit=function(r){for(var e=0;r!==0;)e++,r>>>=1;return e};Ee.setToSJISFunction=function(e){if(typeof e!="function")throw new Error('"toSJISFunc" is not a valid function.');Pn=e};Ee.isKanjiModeEnabled=function(){return typeof Pn<"u"};Ee.toSJIS=function(e){return Pn(e)};var ai={};(function(r){r.L={bit:1},r.M={bit:0},r.Q={bit:3},r.H={bit:2};function e(t){if(typeof t!="string")throw new Error("Param is not a string");var i=t.toLowerCase();switch(i){case"l":case"low":return r.L;case"m":case"medium":return r.M;case"q":case"quartile":return r.Q;case"h":case"high":return r.H;default:throw new Error("Unknown EC Level: "+t)}}r.isValid=function(i){return i&&typeof i.bit<"u"&&i.bit>=0&&i.bit<4},r.from=function(i,n){if(r.isValid(i))return i;try{return e(i)}catch{return n}}})(ai);function qa(){this.buffer=[],this.length=0}qa.prototype={get:function(r){var e=Math.floor(r/8);return(this.buffer[e]>>>7-r%8&1)===1},put:function(r,e){for(var t=0;t<e;t++)this.putBit((r>>>e-t-1&1)===1)},getLengthInBits:function(){return this.length},putBit:function(r){var e=Math.floor(this.length/8);this.buffer.length<=e&&this.buffer.push(0),r&&(this.buffer[e]|=128>>>this.length%8),this.length++}};var Th=qa,fs=pt;function xr(r){if(!r||r<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=r,this.data=fs.alloc(r*r),this.reservedBit=fs.alloc(r*r)}xr.prototype.set=function(r,e,t,i){var n=r*this.size+e;this.data[n]=t,i&&(this.reservedBit[n]=!0)};xr.prototype.get=function(r,e){return this.data[r*this.size+e]};xr.prototype.xor=function(r,e,t){this.data[r*this.size+e]^=t};xr.prototype.isReserved=function(r,e){return this.reservedBit[r*this.size+e]};var Rh=xr,Ua={};(function(r){var e=Ee.getSymbolSize;r.getRowColCoords=function(i){if(i===1)return[];for(var n=Math.floor(i/7)+2,s=e(i),o=s===145?26:Math.ceil((s-13)/(2*n-2))*2,a=[s-7],c=1;c<n-1;c++)a[c]=a[c-1]-o;return a.push(6),a.reverse()},r.getPositions=function(i){for(var n=[],s=r.getRowColCoords(i),o=s.length,a=0;a<o;a++)for(var c=0;c<o;c++)a===0&&c===0||a===0&&c===o-1||a===o-1&&c===0||n.push([s[a],s[c]]);return n}})(Ua);var Ba={},Ch=Ee.getSymbolSize,ps=7;Ba.getPositions=function(e){var t=Ch(e);return[[0,0],[t-ps,0],[0,t-ps]]};var za={};(function(r){r.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};var e={N1:3,N2:3,N3:40,N4:10};r.isValid=function(n){return n!=null&&n!==""&&!isNaN(n)&&n>=0&&n<=7},r.from=function(n){return r.isValid(n)?parseInt(n,10):void 0},r.getPenaltyN1=function(n){for(var s=n.size,o=0,a=0,c=0,l=null,u=null,h=0;h<s;h++){a=c=0,l=u=null;for(var p=0;p<s;p++){var d=n.get(h,p);d===l?a++:(a>=5&&(o+=e.N1+(a-5)),l=d,a=1),d=n.get(p,h),d===u?c++:(c>=5&&(o+=e.N1+(c-5)),u=d,c=1)}a>=5&&(o+=e.N1+(a-5)),c>=5&&(o+=e.N1+(c-5))}return o},r.getPenaltyN2=function(n){for(var s=n.size,o=0,a=0;a<s-1;a++)for(var c=0;c<s-1;c++){var l=n.get(a,c)+n.get(a,c+1)+n.get(a+1,c)+n.get(a+1,c+1);(l===4||l===0)&&o++}return o*e.N2},r.getPenaltyN3=function(n){for(var s=n.size,o=0,a=0,c=0,l=0;l<s;l++){a=c=0;for(var u=0;u<s;u++)a=a<<1&2047|n.get(l,u),u>=10&&(a===1488||a===93)&&o++,c=c<<1&2047|n.get(u,l),u>=10&&(c===1488||c===93)&&o++}return o*e.N3},r.getPenaltyN4=function(n){for(var s=0,o=n.data.length,a=0;a<o;a++)s+=n.data[a];var c=Math.abs(Math.ceil(s*100/o/5)-10);return c*e.N4};function t(i,n,s){switch(i){case r.Patterns.PATTERN000:return(n+s)%2===0;case r.Patterns.PATTERN001:return n%2===0;case r.Patterns.PATTERN010:return s%3===0;case r.Patterns.PATTERN011:return(n+s)%3===0;case r.Patterns.PATTERN100:return(Math.floor(n/2)+Math.floor(s/3))%2===0;case r.Patterns.PATTERN101:return n*s%2+n*s%3===0;case r.Patterns.PATTERN110:return(n*s%2+n*s%3)%2===0;case r.Patterns.PATTERN111:return(n*s%3+(n+s)%2)%2===0;default:throw new Error("bad maskPattern:"+i)}}r.applyMask=function(n,s){for(var o=s.size,a=0;a<o;a++)for(var c=0;c<o;c++)s.isReserved(c,a)||s.xor(c,a,t(n,c,a))},r.getBestMask=function(n,s){for(var o=Object.keys(r.Patterns).length,a=0,c=1/0,l=0;l<o;l++){s(l),r.applyMask(l,n);var u=r.getPenaltyN1(n)+r.getPenaltyN2(n)+r.getPenaltyN3(n)+r.getPenaltyN4(n);r.applyMask(l,n),u<c&&(c=u,a=l)}return a}})(za);var ci={},ct=ai,$r=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],kr=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];ci.getBlocksCount=function(e,t){switch(t){case ct.L:return $r[(e-1)*4+0];case ct.M:return $r[(e-1)*4+1];case ct.Q:return $r[(e-1)*4+2];case ct.H:return $r[(e-1)*4+3];default:return}};ci.getTotalCodewordsCount=function(e,t){switch(t){case ct.L:return kr[(e-1)*4+0];case ct.M:return kr[(e-1)*4+1];case ct.Q:return kr[(e-1)*4+2];case ct.H:return kr[(e-1)*4+3];default:return}};var Ka={},li={},ja=pt,fr=ja.alloc(512),Wr=ja.alloc(256);(function(){for(var e=1,t=0;t<255;t++)fr[t]=e,Wr[e]=t,e<<=1,e&256&&(e^=285);for(t=255;t<512;t++)fr[t]=fr[t-255]})();li.log=function(e){if(e<1)throw new Error("log("+e+")");return Wr[e]};li.exp=function(e){return fr[e]};li.mul=function(e,t){return e===0||t===0?0:fr[Wr[e]+Wr[t]]};(function(r){var e=pt,t=li;r.mul=function(n,s){for(var o=e.alloc(n.length+s.length-1),a=0;a<n.length;a++)for(var c=0;c<s.length;c++)o[a+c]^=t.mul(n[a],s[c]);return o},r.mod=function(n,s){for(var o=e.from(n);o.length-s.length>=0;){for(var a=o[0],c=0;c<s.length;c++)o[c]^=t.mul(s[c],a);for(var l=0;l<o.length&&o[l]===0;)l++;o=o.slice(l)}return o},r.generateECPolynomial=function(n){for(var s=e.from([1]),o=0;o<n;o++)s=r.mul(s,[1,t.exp(o)]);return s}})(Ka);var gs=pt,Va=Ka,Nh=Hl.Buffer;function An(r){this.genPoly=void 0,this.degree=r,this.degree&&this.initialize(this.degree)}An.prototype.initialize=function(e){this.degree=e,this.genPoly=Va.generateECPolynomial(this.degree)};An.prototype.encode=function(e){if(!this.genPoly)throw new Error("Encoder not initialized");var t=gs.alloc(this.degree),i=Nh.concat([e,t],e.length+this.degree),n=Va.mod(i,this.genPoly),s=this.degree-n.length;if(s>0){var o=gs.alloc(this.degree);return n.copy(o,s),o}return n};var Oh=An,Wa={},gt={},Tn={};Tn.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40};var Je={},Ha="[0-9]+",$h="[A-Z $%*+\\-./:]+",vr="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";vr=vr.replace(/u/g,"\\u");var kh="(?:(?![A-Z0-9 $%*+\\-./:]|"+vr+`)(?:.|[\r
|
|
1
|
+
import{b_ as Wl,i as R,bY as sa,S as Hl,j as oa,b$ as L,c0 as Ye,P as Jl,T as Gl}from"../main.js";import{d as Yl}from"./dijkstra-D_NXgYpA.js";import{e as He,s as aa}from"./events-6PekJgMN.js";import{c as I}from"./index-C1f05Vbe.js";import{r as Ql,a as It,g as xt,i as qe,b as ni,I as Rt,f as Ce,t as fe,w as Hi,c as Si,C as Xl,d as Zl,e as ns,h as eu,j as tu,k as vn,p as ru,l as wn,A as iu,E as pe,m as nu,y as be,P as ss,Q as su,n as ou,T as ca,o as _n,q as bn,s as Qe,_ as au,u as vt}from"./index-YqzS8F8M.js";import{s as la,a as Re,h as ua,L as cu,d as nr,l as lu,e as Ii,g as uu,i as os,k as hu}from"./index-Bbr14gKC.js";let du=class extends Ql{constructor(e){super(e),this.events=new He.EventEmitter,this.hasRegisteredEventListeners=!1,this.connection=this.setConnection(e),this.connection.connected&&this.registerEventListeners()}async connect(e=this.connection){await this.open(e)}async disconnect(){await this.close()}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 request(e,t){return this.requestStrict(It(e.method,e.params||[],e.id||xt().toString()),t)}async requestStrict(e,t){return new Promise(async(i,n)=>{if(!this.connection.connected)try{await this.open()}catch(s){n(s)}this.events.on(`${e.id}`,s=>{qe(s)?n(s.error):i(s.result)});try{await this.connection.send(e,t)}catch(s){n(s)}})}setConnection(e=this.connection){return e}onPayload(e){this.events.emit("payload",e),ni(e)?this.events.emit(`${e.id}`,e):this.events.emit("message",{type:e.method,data:e.params})}onClose(e){e&&e.code===3e3&&this.events.emit("error",new Error(`WebSocket connection closed abnormally with code: ${e.code} ${e.reason?`(${e.reason})`:""}`)),this.events.emit("disconnect")}async open(e=this.connection){this.connection===e&&this.connection.connected||(this.connection.connected&&this.close(),typeof e=="string"&&(await this.connection.open(e),e=this.connection),this.connection=this.setConnection(e),await this.connection.open(),this.registerEventListeners(),this.events.emit("connect"))}async close(){await this.connection.close()}registerEventListeners(){this.hasRegisteredEventListeners||(this.connection.on("payload",e=>this.onPayload(e)),this.connection.on("close",e=>this.onClose(e)),this.connection.on("error",e=>this.events.emit("error",e)),this.connection.on("register_error",e=>this.onClose()),this.hasRegisteredEventListeners=!0)}};var fu=function(){var r=document.getSelection();if(!r.rangeCount)return function(){};for(var e=document.activeElement,t=[],i=0;i<r.rangeCount;i++)t.push(r.getRangeAt(i));switch(e.tagName.toUpperCase()){case"INPUT":case"TEXTAREA":e.blur();break;default:e=null;break}return r.removeAllRanges(),function(){r.type==="Caret"&&r.removeAllRanges(),r.rangeCount||t.forEach(function(n){r.addRange(n)}),e&&e.focus()}},pu=fu,as={"text/plain":"Text","text/html":"Url",default:"Text"},gu="Copy to clipboard: #{key}, Enter";function yu(r){var e=(/mac os x/i.test(navigator.userAgent)?"⌘":"Ctrl")+"+C";return r.replace(/#{\s*key\s*}/g,e)}function mu(r,e){var t,i,n,s,o,a,c=!1;e||(e={}),t=e.debug||!1;try{n=pu(),s=document.createRange(),o=document.getSelection(),a=document.createElement("span"),a.textContent=r,a.ariaHidden="true",a.style.all="unset",a.style.position="fixed",a.style.top=0,a.style.clip="rect(0, 0, 0, 0)",a.style.whiteSpace="pre",a.style.webkitUserSelect="text",a.style.MozUserSelect="text",a.style.msUserSelect="text",a.style.userSelect="text",a.addEventListener("copy",function(u){if(u.stopPropagation(),e.format)if(u.preventDefault(),typeof u.clipboardData>"u"){t&&console.warn("unable to use e.clipboardData"),t&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var h=as[e.format]||as.default;window.clipboardData.setData(h,r)}else u.clipboardData.clearData(),u.clipboardData.setData(e.format,r);e.onCopy&&(u.preventDefault(),e.onCopy(u.clipboardData))}),document.body.appendChild(a),s.selectNodeContents(a),o.addRange(s);var l=document.execCommand("copy");if(!l)throw new Error("copy command was unsuccessful");c=!0}catch(u){t&&console.error("unable to copy using execCommand: ",u),t&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(e.format||"text",r),e.onCopy&&e.onCopy(window.clipboardData),c=!0}catch(h){t&&console.error("unable to copy using clipboardData: ",h),t&&console.error("falling back to prompt"),i=yu("message"in e?e.message:gu),window.prompt(i,r)}}finally{o&&(typeof o.removeRange=="function"?o.removeRange(s):o.removeAllRanges()),a&&document.body.removeChild(a),n()}return c}var vu=mu,wu={}.toString,En=Array.isArray||function(r){return wu.call(r)=="[object Array]"},_u=Wl(),Sn={},Y={};Object.defineProperty(Y,"__esModule",{value:!0});var ha=Y.getLocalStorage=Ea=Y.getLocalStorageOrThrow=ba=Y.getCrypto=_a=Y.getCryptoOrThrow=wa=Y.getLocation=va=Y.getLocationOrThrow=ma=Y.getNavigator=ya=Y.getNavigatorOrThrow=ga=Y.getDocument=pa=Y.getDocumentOrThrow=fa=Y.getFromWindowOrThrow=da=Y.getFromWindow=void 0;function Ct(r){let e;return typeof window<"u"&&typeof window[r]<"u"&&(e=window[r]),e}var da=Y.getFromWindow=Ct;function Qt(r){const e=Ct(r);if(!e)throw new Error(`${r} is not defined in Window`);return e}var fa=Y.getFromWindowOrThrow=Qt;function bu(){return Qt("document")}var pa=Y.getDocumentOrThrow=bu;function Eu(){return Ct("document")}var ga=Y.getDocument=Eu;function Su(){return Qt("navigator")}var ya=Y.getNavigatorOrThrow=Su;function Iu(){return Ct("navigator")}var ma=Y.getNavigator=Iu;function xu(){return Qt("location")}var va=Y.getLocationOrThrow=xu;function Pu(){return Ct("location")}var wa=Y.getLocation=Pu;function Au(){return Qt("crypto")}var _a=Y.getCryptoOrThrow=Au;function Tu(){return Ct("crypto")}var ba=Y.getCrypto=Tu;function Ru(){return Qt("localStorage")}var Ea=Y.getLocalStorageOrThrow=Ru;function Cu(){return Ct("localStorage")}ha=Y.getLocalStorage=Cu;Object.defineProperty(Sn,"__esModule",{value:!0});var Sa=Sn.getWindowMetadata=void 0;const cs=Y;function Nu(){let r,e;try{r=cs.getDocumentOrThrow(),e=cs.getLocationOrThrow()}catch{return null}function t(){const h=r.getElementsByTagName("link"),p=[];for(let d=0;d<h.length;d++){const f=h[d],g=f.getAttribute("rel");if(g&&g.toLowerCase().indexOf("icon")>-1){const y=f.getAttribute("href");if(y)if(y.toLowerCase().indexOf("https:")===-1&&y.toLowerCase().indexOf("http:")===-1&&y.indexOf("//")!==0){let m=e.protocol+"//"+e.host;if(y.indexOf("/")===0)m+=y;else{const v=e.pathname.split("/");v.pop();const _=v.join("/");m+=_+"/"+y}p.push(m)}else if(y.indexOf("//")===0){const m=e.protocol+y;p.push(m)}else p.push(y)}}return p}function i(...h){const p=r.getElementsByTagName("meta");for(let d=0;d<p.length;d++){const f=p[d],g=["itemprop","property","name"].map(y=>f.getAttribute(y)).filter(y=>y?h.includes(y):!1);if(g.length&&g){const y=f.getAttribute("content");if(y)return y}}return""}function n(){let h=i("name","og:site_name","og:title","twitter:title");return h||(h=r.title),h}function s(){return i("description","og:description","twitter:description","keywords")}const o=n(),a=s(),c=e.origin,l=t();return{description:a,url:c,icons:l,name:o}}Sa=Sn.getWindowMetadata=Nu;var Ou=function(){for(var r=0,e=0,t=arguments.length;e<t;e++)r+=arguments[e].length;for(var i=Array(r),n=0,e=0;e<t;e++)for(var s=arguments[e],o=0,a=s.length;o<a;o++,n++)i[n]=s[o];return i},$u=function(){function r(e,t,i){this.name=e,this.version=t,this.os=i,this.type="browser"}return r}(),ku=function(){function r(e){this.version=e,this.type="node",this.name="node",this.os=R.process.platform}return r}(),Mu=function(){function r(e,t,i,n){this.name=e,this.version=t,this.os=i,this.bot=n,this.type="bot-device"}return r}(),Lu=function(){function r(){this.type="bot",this.bot=!0,this.name="bot",this.version=null,this.os=null}return r}(),Du=function(){function r(){this.type="react-native",this.name="react-native",this.version=null,this.os=null}return r}(),Fu=/alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/,qu=/(nuhk|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask\ Jeeves\/Teoma|ia_archiver)/,ls=3,Uu=[["aol",/AOLShield\/([0-9\._]+)/],["edge",/Edge\/([0-9\._]+)/],["edge-ios",/EdgiOS\/([0-9\._]+)/],["yandexbrowser",/YaBrowser\/([0-9\._]+)/],["kakaotalk",/KAKAOTALK\s([0-9\.]+)/],["samsung",/SamsungBrowser\/([0-9\.]+)/],["silk",/\bSilk\/([0-9._-]+)\b/],["miui",/MiuiBrowser\/([0-9\.]+)$/],["beaker",/BeakerBrowser\/([0-9\.]+)/],["edge-chromium",/EdgA?\/([0-9\.]+)/],["chromium-webview",/(?!Chrom.*OPR)wv\).*Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/],["chrome",/(?!Chrom.*OPR)Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/],["phantomjs",/PhantomJS\/([0-9\.]+)(:?\s|$)/],["crios",/CriOS\/([0-9\.]+)(:?\s|$)/],["firefox",/Firefox\/([0-9\.]+)(?:\s|$)/],["fxios",/FxiOS\/([0-9\.]+)/],["opera-mini",/Opera Mini.*Version\/([0-9\.]+)/],["opera",/Opera\/([0-9\.]+)(?:\s|$)/],["opera",/OPR\/([0-9\.]+)(:?\s|$)/],["ie",/Trident\/7\.0.*rv\:([0-9\.]+).*\).*Gecko$/],["ie",/MSIE\s([0-9\.]+);.*Trident\/[4-7].0/],["ie",/MSIE\s(7\.0)/],["bb10",/BB10;\sTouch.*Version\/([0-9\.]+)/],["android",/Android\s([0-9\.]+)/],["ios",/Version\/([0-9\._]+).*Mobile.*Safari.*/],["safari",/Version\/([0-9\._]+).*Safari/],["facebook",/FBAV\/([0-9\.]+)/],["instagram",/Instagram\s([0-9\.]+)/],["ios-webview",/AppleWebKit\/([0-9\.]+).*Mobile/],["ios-webview",/AppleWebKit\/([0-9\.]+).*Gecko\)$/],["searchbot",Fu]],us=[["iOS",/iP(hone|od|ad)/],["Android OS",/Android/],["BlackBerry OS",/BlackBerry|BB10/],["Windows Mobile",/IEMobile/],["Amazon OS",/Kindle/],["Windows 3.11",/Win16/],["Windows 95",/(Windows 95)|(Win95)|(Windows_95)/],["Windows 98",/(Windows 98)|(Win98)/],["Windows 2000",/(Windows NT 5.0)|(Windows 2000)/],["Windows XP",/(Windows NT 5.1)|(Windows XP)/],["Windows Server 2003",/(Windows NT 5.2)/],["Windows Vista",/(Windows NT 6.0)/],["Windows 7",/(Windows NT 6.1)/],["Windows 8",/(Windows NT 6.2)/],["Windows 8.1",/(Windows NT 6.3)/],["Windows 10",/(Windows NT 10.0)/],["Windows ME",/Windows ME/],["Open BSD",/OpenBSD/],["Sun OS",/SunOS/],["Chrome OS",/CrOS/],["Linux",/(Linux)|(X11)/],["Mac OS",/(Mac_PowerPC)|(Macintosh)/],["QNX",/QNX/],["BeOS",/BeOS/],["OS/2",/OS\/2/]];function Bu(r){return r?hs(r):typeof document>"u"&&typeof navigator<"u"&&navigator.product==="ReactNative"?new Du:typeof navigator<"u"?hs(navigator.userAgent):ju()}function zu(r){return r!==""&&Uu.reduce(function(e,t){var i=t[0],n=t[1];if(e)return e;var s=n.exec(r);return!!s&&[i,s]},!1)}function hs(r){var e=zu(r);if(!e)return null;var t=e[0],i=e[1];if(t==="searchbot")return new Lu;var n=i[1]&&i[1].split(/[._]/).slice(0,3);n?n.length<ls&&(n=Ou(n,Vu(ls-n.length))):n=[];var s=n.join("."),o=Ku(r),a=qu.exec(r);return a&&a[1]?new Mu(t,s,o,a[1]):new $u(t,s,o)}function Ku(r){for(var e=0,t=us.length;e<t;e++){var i=us[e],n=i[0],s=i[1],o=s.exec(r);if(o)return n}return null}function ju(){var r=typeof R.process<"u"&&R.process.version;return r?new ku(R.process.version.slice(1)):null}function Vu(r){for(var e=[],t=0;t<r;t++)e.push("0");return e}function In(r){return Bu(r)}function si(){const r=In();return r&&r.os?r.os:void 0}function Ia(){const r=si();return r?r.toLowerCase().includes("android"):!1}function xa(){const r=si();return r?r.toLowerCase().includes("ios")||r.toLowerCase().includes("mac")&&navigator.maxTouchPoints>1:!1}function Wu(){return si()?Ia()||xa():!1}function Pa(){const r=In();return r&&r.name?r.name.toLowerCase()==="node":!1}function Hu(){return!Pa()&&!!Aa()}const Ju=da,Gu=fa,Yu=pa,Qu=ga,Xu=ya,Aa=ma,Zu=va,eh=wa,th=_a,rh=ba,ih=Ea,oi=ha;function nh(){return Sa()}function sh(r){if(typeof r!="string")throw new Error(`Cannot safe json parse value of type ${typeof r}`);try{return JSON.parse(r)}catch{return r}}function oh(r){return typeof r=="string"?r:JSON.stringify(r)}const Ta=sh,Ra=oh;function Ca(r,e){const t=Ra(e),i=oi();i&&i.setItem(r,t)}function ah(r){let e=null,t=null;const i=oi();return i&&(t=i.getItem(r)),e=t&&Ta(t),e}function ch(r){const e=oi();e&&e.removeItem(r)}const Na="WALLETCONNECT_DEEPLINK_CHOICE";function lh(r,e){const t=encodeURIComponent(r);return e.universalLink?`${e.universalLink}/wc?uri=${t}`:e.deepLink?`${e.deepLink}${e.deepLink.endsWith(":")?"//":"/"}wc?uri=${t}`:""}function uh(r){const e=r.href.split("?")[0];Ca(Na,Object.assign(Object.assign({},r),{href:e}))}function Oa(r,e){return r.filter(t=>t.name.toLowerCase().includes(e.toLowerCase()))[0]}function hh(r,e){let t=r;return e&&(t=e.map(i=>Oa(r,i)).filter(Boolean)),t}const $a="https://registry.walletconnect.com";function dh(){return $a+"/api/v2/wallets"}function fh(){return $a+"/api/v2/dapps"}function ka(r,e="mobile"){var t;return{name:r.name||"",shortName:r.metadata.shortName||"",color:r.metadata.colors.primary||"",logo:(t=r.image_url.sm)!==null&&t!==void 0?t:"",universalLink:r[e].universal||"",deepLink:r[e].native||""}}function ph(r,e="mobile"){return Object.values(r).filter(t=>!!t[e].universal||!!t[e].native).map(t=>ka(t,e))}const gh=Object.freeze(Object.defineProperty({__proto__:null,detectEnv:In,detectOS:si,formatIOSMobile:lh,formatMobileRegistry:ph,formatMobileRegistryEntry:ka,getClientMeta:nh,getCrypto:rh,getCryptoOrThrow:th,getDappRegistryUrl:fh,getDocument:Qu,getDocumentOrThrow:Yu,getFromWindow:Ju,getFromWindowOrThrow:Gu,getLocal:ah,getLocalStorage:oi,getLocalStorageOrThrow:ih,getLocation:eh,getLocationOrThrow:Zu,getMobileLinkRegistry:hh,getMobileRegistryEntry:Oa,getNavigator:Aa,getNavigatorOrThrow:Xu,getWalletRegistryUrl:dh,isAndroid:Ia,isBrowser:Hu,isIOS:xa,isMobile:Wu,isNode:Pa,mobileLinkChoiceKey:Na,removeLocal:ch,safeJsonParse:Ta,safeJsonStringify:Ra,saveMobileLinkInfo:uh,setLocal:Ca},Symbol.toStringTag,{value:"Module"})),yh=sa(gh);var Ir={},mh=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then},Ma={},pt={},vh=En;function wh(){try{var r=new Uint8Array(1);return r.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},r.foo()===42}catch{return!1}}z.TYPED_ARRAY_SUPPORT=wh();var ds=z.TYPED_ARRAY_SUPPORT?2147483647:1073741823;function z(r,e,t){return!z.TYPED_ARRAY_SUPPORT&&!(this instanceof z)?new z(r,e,t):typeof r=="number"?La(this,r):Ph(this,r,e,t)}z.TYPED_ARRAY_SUPPORT&&(z.prototype.__proto__=Uint8Array.prototype,z.__proto__=Uint8Array,typeof Symbol<"u"&&Symbol.species&&z[Symbol.species]===z&&Object.defineProperty(z,Symbol.species,{value:null,configurable:!0,enumerable:!1,writable:!1}));function xn(r){if(r>=ds)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+ds.toString(16)+" bytes");return r|0}function _h(r){return r!==r}function Bt(r,e){var t;return z.TYPED_ARRAY_SUPPORT?(t=new Uint8Array(e),t.__proto__=z.prototype):(t=r,t===null&&(t=new z(e)),t.length=e),t}function La(r,e){var t=Bt(r,e<0?0:xn(e)|0);if(!z.TYPED_ARRAY_SUPPORT)for(var i=0;i<e;++i)t[i]=0;return t}function bh(r,e){var t=Fa(e)|0,i=Bt(r,t),n=i.write(e);return n!==t&&(i=i.slice(0,n)),i}function Ji(r,e){for(var t=e.length<0?0:xn(e.length)|0,i=Bt(r,t),n=0;n<t;n+=1)i[n]=e[n]&255;return i}function Eh(r,e,t,i){if(t<0||e.byteLength<t)throw new RangeError("'offset' is out of bounds");if(e.byteLength<t+(i||0))throw new RangeError("'length' is out of bounds");var n;return t===void 0&&i===void 0?n=new Uint8Array(e):i===void 0?n=new Uint8Array(e,t):n=new Uint8Array(e,t,i),z.TYPED_ARRAY_SUPPORT?n.__proto__=z.prototype:n=Ji(r,n),n}function Sh(r,e){if(z.isBuffer(e)){var t=xn(e.length)|0,i=Bt(r,t);return i.length===0||e.copy(i,0,0,t),i}if(e){if(typeof ArrayBuffer<"u"&&e.buffer instanceof ArrayBuffer||"length"in e)return typeof e.length!="number"||_h(e.length)?Bt(r,0):Ji(r,e);if(e.type==="Buffer"&&Array.isArray(e.data))return Ji(r,e.data)}throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}function Da(r,e){e=e||1/0;for(var t,i=r.length,n=null,s=[],o=0;o<i;++o){if(t=r.charCodeAt(o),t>55295&&t<57344){if(!n){if(t>56319){(e-=3)>-1&&s.push(239,191,189);continue}else if(o+1===i){(e-=3)>-1&&s.push(239,191,189);continue}n=t;continue}if(t<56320){(e-=3)>-1&&s.push(239,191,189),n=t;continue}t=(n-55296<<10|t-56320)+65536}else n&&(e-=3)>-1&&s.push(239,191,189);if(n=null,t<128){if((e-=1)<0)break;s.push(t)}else if(t<2048){if((e-=2)<0)break;s.push(t>>6|192,t&63|128)}else if(t<65536){if((e-=3)<0)break;s.push(t>>12|224,t>>6&63|128,t&63|128)}else if(t<1114112){if((e-=4)<0)break;s.push(t>>18|240,t>>12&63|128,t>>6&63|128,t&63|128)}else throw new Error("Invalid code point")}return s}function Fa(r){if(z.isBuffer(r))return r.length;if(typeof ArrayBuffer<"u"&&typeof ArrayBuffer.isView=="function"&&(ArrayBuffer.isView(r)||r instanceof ArrayBuffer))return r.byteLength;typeof r!="string"&&(r=""+r);var e=r.length;return e===0?0:Da(r).length}function Ih(r,e,t,i){for(var n=0;n<i&&!(n+t>=e.length||n>=r.length);++n)e[n+t]=r[n];return n}function xh(r,e,t,i){return Ih(Da(e,r.length-t),r,t,i)}function Ph(r,e,t,i){if(typeof e=="number")throw new TypeError('"value" argument must not be a number');return typeof ArrayBuffer<"u"&&e instanceof ArrayBuffer?Eh(r,e,t,i):typeof e=="string"?bh(r,e):Sh(r,e)}z.prototype.write=function(e,t,i){t===void 0?(i=this.length,t=0):i===void 0&&typeof t=="string"?(i=this.length,t=0):isFinite(t)&&(t=t|0,isFinite(i)?i=i|0:i=void 0);var n=this.length-t;if((i===void 0||i>n)&&(i=n),e.length>0&&(i<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");return xh(this,e,t,i)};z.prototype.slice=function(e,t){var i=this.length;e=~~e,t=t===void 0?i:~~t,e<0?(e+=i,e<0&&(e=0)):e>i&&(e=i),t<0?(t+=i,t<0&&(t=0)):t>i&&(t=i),t<e&&(t=e);var n;if(z.TYPED_ARRAY_SUPPORT)n=this.subarray(e,t),n.__proto__=z.prototype;else{var s=t-e;n=new z(s,void 0);for(var o=0;o<s;++o)n[o]=this[o+e]}return n};z.prototype.copy=function(e,t,i,n){if(i||(i=0),!n&&n!==0&&(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n<i&&(n=i),n===i||e.length===0||this.length===0)return 0;if(t<0)throw new RangeError("targetStart out of bounds");if(i<0||i>=this.length)throw new RangeError("sourceStart out of bounds");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t<n-i&&(n=e.length-t+i);var s=n-i,o;if(this===e&&i<t&&t<n)for(o=s-1;o>=0;--o)e[o+t]=this[o+i];else if(s<1e3||!z.TYPED_ARRAY_SUPPORT)for(o=0;o<s;++o)e[o+t]=this[o+i];else Uint8Array.prototype.set.call(e,this.subarray(i,i+s),t);return s};z.prototype.fill=function(e,t,i){if(typeof e=="string"){if(typeof t=="string"?(t=0,i=this.length):typeof i=="string"&&(i=this.length),e.length===1){var n=e.charCodeAt(0);n<256&&(e=n)}}else typeof e=="number"&&(e=e&255);if(t<0||this.length<t||this.length<i)throw new RangeError("Out of range index");if(i<=t)return this;t=t>>>0,i=i===void 0?this.length:i>>>0,e||(e=0);var s;if(typeof e=="number")for(s=t;s<i;++s)this[s]=e;else{var o=z.isBuffer(e)?e:new z(e),a=o.length;for(s=0;s<i-t;++s)this[s+t]=o[s%a]}return this};z.concat=function(e,t){if(!vh(e))throw new TypeError('"list" argument must be an Array of Buffers');if(e.length===0)return Bt(null,0);var i;if(t===void 0)for(t=0,i=0;i<e.length;++i)t+=e[i].length;var n=La(null,t),s=0;for(i=0;i<e.length;++i){var o=e[i];if(!z.isBuffer(o))throw new TypeError('"list" argument must be an Array of Buffers');o.copy(n,s),s+=o.length}return n};z.byteLength=Fa;z.prototype._isBuffer=!0;z.isBuffer=function(e){return!!(e!=null&&e._isBuffer)};pt.alloc=function(r){var e=new z(r);return e.fill(0),e};pt.from=function(r){return new z(r)};var Ee={},Pn,Ah=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];Ee.getSymbolSize=function(e){if(!e)throw new Error('"version" cannot be null or undefined');if(e<1||e>40)throw new Error('"version" should be in range from 1 to 40');return e*4+17};Ee.getSymbolTotalCodewords=function(e){return Ah[e]};Ee.getBCHDigit=function(r){for(var e=0;r!==0;)e++,r>>>=1;return e};Ee.setToSJISFunction=function(e){if(typeof e!="function")throw new Error('"toSJISFunc" is not a valid function.');Pn=e};Ee.isKanjiModeEnabled=function(){return typeof Pn<"u"};Ee.toSJIS=function(e){return Pn(e)};var ai={};(function(r){r.L={bit:1},r.M={bit:0},r.Q={bit:3},r.H={bit:2};function e(t){if(typeof t!="string")throw new Error("Param is not a string");var i=t.toLowerCase();switch(i){case"l":case"low":return r.L;case"m":case"medium":return r.M;case"q":case"quartile":return r.Q;case"h":case"high":return r.H;default:throw new Error("Unknown EC Level: "+t)}}r.isValid=function(i){return i&&typeof i.bit<"u"&&i.bit>=0&&i.bit<4},r.from=function(i,n){if(r.isValid(i))return i;try{return e(i)}catch{return n}}})(ai);function qa(){this.buffer=[],this.length=0}qa.prototype={get:function(r){var e=Math.floor(r/8);return(this.buffer[e]>>>7-r%8&1)===1},put:function(r,e){for(var t=0;t<e;t++)this.putBit((r>>>e-t-1&1)===1)},getLengthInBits:function(){return this.length},putBit:function(r){var e=Math.floor(this.length/8);this.buffer.length<=e&&this.buffer.push(0),r&&(this.buffer[e]|=128>>>this.length%8),this.length++}};var Th=qa,fs=pt;function xr(r){if(!r||r<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=r,this.data=fs.alloc(r*r),this.reservedBit=fs.alloc(r*r)}xr.prototype.set=function(r,e,t,i){var n=r*this.size+e;this.data[n]=t,i&&(this.reservedBit[n]=!0)};xr.prototype.get=function(r,e){return this.data[r*this.size+e]};xr.prototype.xor=function(r,e,t){this.data[r*this.size+e]^=t};xr.prototype.isReserved=function(r,e){return this.reservedBit[r*this.size+e]};var Rh=xr,Ua={};(function(r){var e=Ee.getSymbolSize;r.getRowColCoords=function(i){if(i===1)return[];for(var n=Math.floor(i/7)+2,s=e(i),o=s===145?26:Math.ceil((s-13)/(2*n-2))*2,a=[s-7],c=1;c<n-1;c++)a[c]=a[c-1]-o;return a.push(6),a.reverse()},r.getPositions=function(i){for(var n=[],s=r.getRowColCoords(i),o=s.length,a=0;a<o;a++)for(var c=0;c<o;c++)a===0&&c===0||a===0&&c===o-1||a===o-1&&c===0||n.push([s[a],s[c]]);return n}})(Ua);var Ba={},Ch=Ee.getSymbolSize,ps=7;Ba.getPositions=function(e){var t=Ch(e);return[[0,0],[t-ps,0],[0,t-ps]]};var za={};(function(r){r.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};var e={N1:3,N2:3,N3:40,N4:10};r.isValid=function(n){return n!=null&&n!==""&&!isNaN(n)&&n>=0&&n<=7},r.from=function(n){return r.isValid(n)?parseInt(n,10):void 0},r.getPenaltyN1=function(n){for(var s=n.size,o=0,a=0,c=0,l=null,u=null,h=0;h<s;h++){a=c=0,l=u=null;for(var p=0;p<s;p++){var d=n.get(h,p);d===l?a++:(a>=5&&(o+=e.N1+(a-5)),l=d,a=1),d=n.get(p,h),d===u?c++:(c>=5&&(o+=e.N1+(c-5)),u=d,c=1)}a>=5&&(o+=e.N1+(a-5)),c>=5&&(o+=e.N1+(c-5))}return o},r.getPenaltyN2=function(n){for(var s=n.size,o=0,a=0;a<s-1;a++)for(var c=0;c<s-1;c++){var l=n.get(a,c)+n.get(a,c+1)+n.get(a+1,c)+n.get(a+1,c+1);(l===4||l===0)&&o++}return o*e.N2},r.getPenaltyN3=function(n){for(var s=n.size,o=0,a=0,c=0,l=0;l<s;l++){a=c=0;for(var u=0;u<s;u++)a=a<<1&2047|n.get(l,u),u>=10&&(a===1488||a===93)&&o++,c=c<<1&2047|n.get(u,l),u>=10&&(c===1488||c===93)&&o++}return o*e.N3},r.getPenaltyN4=function(n){for(var s=0,o=n.data.length,a=0;a<o;a++)s+=n.data[a];var c=Math.abs(Math.ceil(s*100/o/5)-10);return c*e.N4};function t(i,n,s){switch(i){case r.Patterns.PATTERN000:return(n+s)%2===0;case r.Patterns.PATTERN001:return n%2===0;case r.Patterns.PATTERN010:return s%3===0;case r.Patterns.PATTERN011:return(n+s)%3===0;case r.Patterns.PATTERN100:return(Math.floor(n/2)+Math.floor(s/3))%2===0;case r.Patterns.PATTERN101:return n*s%2+n*s%3===0;case r.Patterns.PATTERN110:return(n*s%2+n*s%3)%2===0;case r.Patterns.PATTERN111:return(n*s%3+(n+s)%2)%2===0;default:throw new Error("bad maskPattern:"+i)}}r.applyMask=function(n,s){for(var o=s.size,a=0;a<o;a++)for(var c=0;c<o;c++)s.isReserved(c,a)||s.xor(c,a,t(n,c,a))},r.getBestMask=function(n,s){for(var o=Object.keys(r.Patterns).length,a=0,c=1/0,l=0;l<o;l++){s(l),r.applyMask(l,n);var u=r.getPenaltyN1(n)+r.getPenaltyN2(n)+r.getPenaltyN3(n)+r.getPenaltyN4(n);r.applyMask(l,n),u<c&&(c=u,a=l)}return a}})(za);var ci={},ct=ai,$r=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],kr=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];ci.getBlocksCount=function(e,t){switch(t){case ct.L:return $r[(e-1)*4+0];case ct.M:return $r[(e-1)*4+1];case ct.Q:return $r[(e-1)*4+2];case ct.H:return $r[(e-1)*4+3];default:return}};ci.getTotalCodewordsCount=function(e,t){switch(t){case ct.L:return kr[(e-1)*4+0];case ct.M:return kr[(e-1)*4+1];case ct.Q:return kr[(e-1)*4+2];case ct.H:return kr[(e-1)*4+3];default:return}};var Ka={},li={},ja=pt,fr=ja.alloc(512),Wr=ja.alloc(256);(function(){for(var e=1,t=0;t<255;t++)fr[t]=e,Wr[e]=t,e<<=1,e&256&&(e^=285);for(t=255;t<512;t++)fr[t]=fr[t-255]})();li.log=function(e){if(e<1)throw new Error("log("+e+")");return Wr[e]};li.exp=function(e){return fr[e]};li.mul=function(e,t){return e===0||t===0?0:fr[Wr[e]+Wr[t]]};(function(r){var e=pt,t=li;r.mul=function(n,s){for(var o=e.alloc(n.length+s.length-1),a=0;a<n.length;a++)for(var c=0;c<s.length;c++)o[a+c]^=t.mul(n[a],s[c]);return o},r.mod=function(n,s){for(var o=e.from(n);o.length-s.length>=0;){for(var a=o[0],c=0;c<s.length;c++)o[c]^=t.mul(s[c],a);for(var l=0;l<o.length&&o[l]===0;)l++;o=o.slice(l)}return o},r.generateECPolynomial=function(n){for(var s=e.from([1]),o=0;o<n;o++)s=r.mul(s,[1,t.exp(o)]);return s}})(Ka);var gs=pt,Va=Ka,Nh=Hl.Buffer;function An(r){this.genPoly=void 0,this.degree=r,this.degree&&this.initialize(this.degree)}An.prototype.initialize=function(e){this.degree=e,this.genPoly=Va.generateECPolynomial(this.degree)};An.prototype.encode=function(e){if(!this.genPoly)throw new Error("Encoder not initialized");var t=gs.alloc(this.degree),i=Nh.concat([e,t],e.length+this.degree),n=Va.mod(i,this.genPoly),s=this.degree-n.length;if(s>0){var o=gs.alloc(this.degree);return n.copy(o,s),o}return n};var Oh=An,Wa={},gt={},Tn={};Tn.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40};var Je={},Ha="[0-9]+",$h="[A-Z $%*+\\-./:]+",vr="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";vr=vr.replace(/u/g,"\\u");var kh="(?:(?![A-Z0-9 $%*+\\-./:]|"+vr+`)(?:.|[\r
|
|
2
2
|
]))+`;Je.KANJI=new RegExp(vr,"g");Je.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g");Je.BYTE=new RegExp(kh,"g");Je.NUMERIC=new RegExp(Ha,"g");Je.ALPHANUMERIC=new RegExp($h,"g");var Mh=new RegExp("^"+vr+"$"),Lh=new RegExp("^"+Ha+"$"),Dh=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");Je.testKanji=function(e){return Mh.test(e)};Je.testNumeric=function(e){return Lh.test(e)};Je.testAlphanumeric=function(e){return Dh.test(e)};(function(r){var e=Tn,t=Je;r.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]},r.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]},r.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]},r.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]},r.MIXED={bit:-1},r.getCharCountIndicator=function(s,o){if(!s.ccBits)throw new Error("Invalid mode: "+s);if(!e.isValid(o))throw new Error("Invalid version: "+o);return o>=1&&o<10?s.ccBits[0]:o<27?s.ccBits[1]:s.ccBits[2]},r.getBestModeForData=function(s){return t.testNumeric(s)?r.NUMERIC:t.testAlphanumeric(s)?r.ALPHANUMERIC:t.testKanji(s)?r.KANJI:r.BYTE},r.toString=function(s){if(s&&s.id)return s.id;throw new Error("Invalid mode")},r.isValid=function(s){return s&&s.bit&&s.ccBits};function i(n){if(typeof n!="string")throw new Error("Param is not a string");var s=n.toLowerCase();switch(s){case"numeric":return r.NUMERIC;case"alphanumeric":return r.ALPHANUMERIC;case"kanji":return r.KANJI;case"byte":return r.BYTE;default:throw new Error("Unknown mode: "+n)}}r.from=function(s,o){if(r.isValid(s))return s;try{return i(s)}catch{return o}}})(gt);(function(r){var e=Ee,t=ci,i=ai,n=gt,s=Tn,o=En,a=7973,c=e.getBCHDigit(a);function l(d,f,g){for(var y=1;y<=40;y++)if(f<=r.getCapacity(y,g,d))return y}function u(d,f){return n.getCharCountIndicator(d,f)+4}function h(d,f){var g=0;return d.forEach(function(y){var m=u(y.mode,f);g+=m+y.getBitsLength()}),g}function p(d,f){for(var g=1;g<=40;g++){var y=h(d,g);if(y<=r.getCapacity(g,f,n.MIXED))return g}}r.from=function(f,g){return s.isValid(f)?parseInt(f,10):g},r.getCapacity=function(f,g,y){if(!s.isValid(f))throw new Error("Invalid QR Code version");typeof y>"u"&&(y=n.BYTE);var m=e.getSymbolTotalCodewords(f),v=t.getTotalCodewordsCount(f,g),_=(m-v)*8;if(y===n.MIXED)return _;var w=_-u(y,f);switch(y){case n.NUMERIC:return Math.floor(w/10*3);case n.ALPHANUMERIC:return Math.floor(w/11*2);case n.KANJI:return Math.floor(w/13);case n.BYTE:default:return Math.floor(w/8)}},r.getBestVersionForData=function(f,g){var y,m=i.from(g,i.M);if(o(f)){if(f.length>1)return p(f,m);if(f.length===0)return 1;y=f[0]}else y=f;return l(y.mode,y.getLength(),m)},r.getEncodedBits=function(f){if(!s.isValid(f)||f<7)throw new Error("Invalid QR Code version");for(var g=f<<12;e.getBCHDigit(g)-c>=0;)g^=a<<e.getBCHDigit(g)-c;return f<<12|g}})(Wa);var Ja={},Gi=Ee,Ga=1335,Fh=21522,ys=Gi.getBCHDigit(Ga);Ja.getEncodedBits=function(e,t){for(var i=e.bit<<3|t,n=i<<10;Gi.getBCHDigit(n)-ys>=0;)n^=Ga<<Gi.getBCHDigit(n)-ys;return(i<<10|n)^Fh};var Ya={},qh=gt;function zt(r){this.mode=qh.NUMERIC,this.data=r.toString()}zt.getBitsLength=function(e){return 10*Math.floor(e/3)+(e%3?e%3*3+1:0)};zt.prototype.getLength=function(){return this.data.length};zt.prototype.getBitsLength=function(){return zt.getBitsLength(this.data.length)};zt.prototype.write=function(e){var t,i,n;for(t=0;t+3<=this.data.length;t+=3)i=this.data.substr(t,3),n=parseInt(i,10),e.put(n,10);var s=this.data.length-t;s>0&&(i=this.data.substr(t),n=parseInt(i,10),e.put(n,s*3+1))};var Uh=zt,Bh=gt,xi=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function Kt(r){this.mode=Bh.ALPHANUMERIC,this.data=r}Kt.getBitsLength=function(e){return 11*Math.floor(e/2)+6*(e%2)};Kt.prototype.getLength=function(){return this.data.length};Kt.prototype.getBitsLength=function(){return Kt.getBitsLength(this.data.length)};Kt.prototype.write=function(e){var t;for(t=0;t+2<=this.data.length;t+=2){var i=xi.indexOf(this.data[t])*45;i+=xi.indexOf(this.data[t+1]),e.put(i,11)}this.data.length%2&&e.put(xi.indexOf(this.data[t]),6)};var zh=Kt,Kh=pt,jh=gt;function jt(r){this.mode=jh.BYTE,this.data=Kh.from(r)}jt.getBitsLength=function(e){return e*8};jt.prototype.getLength=function(){return this.data.length};jt.prototype.getBitsLength=function(){return jt.getBitsLength(this.data.length)};jt.prototype.write=function(r){for(var e=0,t=this.data.length;e<t;e++)r.put(this.data[e],8)};var Vh=jt,Wh=gt,Hh=Ee;function Vt(r){this.mode=Wh.KANJI,this.data=r}Vt.getBitsLength=function(e){return e*13};Vt.prototype.getLength=function(){return this.data.length};Vt.prototype.getBitsLength=function(){return Vt.getBitsLength(this.data.length)};Vt.prototype.write=function(r){var e;for(e=0;e<this.data.length;e++){var t=Hh.toSJIS(this.data[e]);if(t>=33088&&t<=40956)t-=33088;else if(t>=57408&&t<=60351)t-=49472;else throw new Error("Invalid SJIS character: "+this.data[e]+`
|
|
3
3
|
Make sure your charset is UTF-8`);t=(t>>>8&255)*192+(t&255),r.put(t,13)}};var Jh=Vt;(function(r){var e=gt,t=Uh,i=zh,n=Vh,s=Jh,o=Je,a=Ee,c=Yl;function l(m){return unescape(encodeURIComponent(m)).length}function u(m,v,_){for(var w=[],b;(b=m.exec(_))!==null;)w.push({data:b[0],index:b.index,mode:v,length:b[0].length});return w}function h(m){var v=u(o.NUMERIC,e.NUMERIC,m),_=u(o.ALPHANUMERIC,e.ALPHANUMERIC,m),w,b;a.isKanjiModeEnabled()?(w=u(o.BYTE,e.BYTE,m),b=u(o.KANJI,e.KANJI,m)):(w=u(o.BYTE_KANJI,e.BYTE,m),b=[]);var E=v.concat(_,w,b);return E.sort(function(S,x){return S.index-x.index}).map(function(S){return{data:S.data,mode:S.mode,length:S.length}})}function p(m,v){switch(v){case e.NUMERIC:return t.getBitsLength(m);case e.ALPHANUMERIC:return i.getBitsLength(m);case e.KANJI:return s.getBitsLength(m);case e.BYTE:return n.getBitsLength(m)}}function d(m){return m.reduce(function(v,_){var w=v.length-1>=0?v[v.length-1]:null;return w&&w.mode===_.mode?(v[v.length-1].data+=_.data,v):(v.push(_),v)},[])}function f(m){for(var v=[],_=0;_<m.length;_++){var w=m[_];switch(w.mode){case e.NUMERIC:v.push([w,{data:w.data,mode:e.ALPHANUMERIC,length:w.length},{data:w.data,mode:e.BYTE,length:w.length}]);break;case e.ALPHANUMERIC:v.push([w,{data:w.data,mode:e.BYTE,length:w.length}]);break;case e.KANJI:v.push([w,{data:w.data,mode:e.BYTE,length:l(w.data)}]);break;case e.BYTE:v.push([{data:w.data,mode:e.BYTE,length:l(w.data)}])}}return v}function g(m,v){for(var _={},w={start:{}},b=["start"],E=0;E<m.length;E++){for(var S=m[E],x=[],C=0;C<S.length;C++){var N=S[C],O=""+E+C;x.push(O),_[O]={node:N,lastCount:0},w[O]={};for(var D=0;D<b.length;D++){var $=b[D];_[$]&&_[$].node.mode===N.mode?(w[$][O]=p(_[$].lastCount+N.length,N.mode)-p(_[$].lastCount,N.mode),_[$].lastCount+=N.length):(_[$]&&(_[$].lastCount=N.length),w[$][O]=p(N.length,N.mode)+4+e.getCharCountIndicator(N.mode,v))}}b=x}for(D=0;D<b.length;D++)w[b[D]].end=0;return{map:w,table:_}}function y(m,v){var _,w=e.getBestModeForData(m);if(_=e.from(v,w),_!==e.BYTE&&_.bit<w.bit)throw new Error('"'+m+'" cannot be encoded with mode '+e.toString(_)+`.
|
|
4
4
|
Suggested mode is: `+e.toString(w));switch(_===e.KANJI&&!a.isKanjiModeEnabled()&&(_=e.BYTE),_){case e.NUMERIC:return new t(m);case e.ALPHANUMERIC:return new i(m);case e.KANJI:return new s(m);case e.BYTE:return new n(m)}}r.fromArray=function(v){return v.reduce(function(_,w){return typeof w=="string"?_.push(y(w,null)):w.data&&_.push(y(w.data,w.mode)),_},[])},r.fromString=function(v,_){for(var w=h(v,a.isKanjiModeEnabled()),b=f(w),E=g(b,_),S=c.find_path(E.map,"start","end"),x=[],C=1;C<S.length-1;C++)x.push(E.table[S[C]].node);return r.fromArray(d(x))},r.rawSplit=function(v){return r.fromArray(h(v,a.isKanjiModeEnabled()))}})(Ya);var ms=pt,ui=Ee,Pi=ai,Gh=Th,Yh=Rh,Qh=Ua,Xh=Ba,Yi=za,Qi=ci,Zh=Oh,Hr=Wa,ed=Ja,td=gt,Ai=Ya,rd=En;function id(r,e){for(var t=r.size,i=Xh.getPositions(e),n=0;n<i.length;n++)for(var s=i[n][0],o=i[n][1],a=-1;a<=7;a++)if(!(s+a<=-1||t<=s+a))for(var c=-1;c<=7;c++)o+c<=-1||t<=o+c||(a>=0&&a<=6&&(c===0||c===6)||c>=0&&c<=6&&(a===0||a===6)||a>=2&&a<=4&&c>=2&&c<=4?r.set(s+a,o+c,!0,!0):r.set(s+a,o+c,!1,!0))}function nd(r){for(var e=r.size,t=8;t<e-8;t++){var i=t%2===0;r.set(t,6,i,!0),r.set(6,t,i,!0)}}function sd(r,e){for(var t=Qh.getPositions(e),i=0;i<t.length;i++)for(var n=t[i][0],s=t[i][1],o=-2;o<=2;o++)for(var a=-2;a<=2;a++)o===-2||o===2||a===-2||a===2||o===0&&a===0?r.set(n+o,s+a,!0,!0):r.set(n+o,s+a,!1,!0)}function od(r,e){for(var t=r.size,i=Hr.getEncodedBits(e),n,s,o,a=0;a<18;a++)n=Math.floor(a/3),s=a%3+t-8-3,o=(i>>a&1)===1,r.set(n,s,o,!0),r.set(s,n,o,!0)}function Ti(r,e,t){var i=r.size,n=ed.getEncodedBits(e,t),s,o;for(s=0;s<15;s++)o=(n>>s&1)===1,s<6?r.set(s,8,o,!0):s<8?r.set(s+1,8,o,!0):r.set(i-15+s,8,o,!0),s<8?r.set(8,i-s-1,o,!0):s<9?r.set(8,15-s-1+1,o,!0):r.set(8,15-s-1,o,!0);r.set(i-8,8,1,!0)}function ad(r,e){for(var t=r.size,i=-1,n=t-1,s=7,o=0,a=t-1;a>0;a-=2)for(a===6&&a--;;){for(var c=0;c<2;c++)if(!r.isReserved(n,a-c)){var l=!1;o<e.length&&(l=(e[o]>>>s&1)===1),r.set(n,a-c,l),s--,s===-1&&(o++,s=7)}if(n+=i,n<0||t<=n){n-=i,i=-i;break}}}function cd(r,e,t){var i=new Gh;t.forEach(function(l){i.put(l.mode.bit,4),i.put(l.getLength(),td.getCharCountIndicator(l.mode,r)),l.write(i)});var n=ui.getSymbolTotalCodewords(r),s=Qi.getTotalCodewordsCount(r,e),o=(n-s)*8;for(i.getLengthInBits()+4<=o&&i.put(0,4);i.getLengthInBits()%8!==0;)i.putBit(0);for(var a=(o-i.getLengthInBits())/8,c=0;c<a;c++)i.put(c%2?17:236,8);return ld(i,r,e)}function ld(r,e,t){for(var i=ui.getSymbolTotalCodewords(e),n=Qi.getTotalCodewordsCount(e,t),s=i-n,o=Qi.getBlocksCount(e,t),a=i%o,c=o-a,l=Math.floor(i/o),u=Math.floor(s/o),h=u+1,p=l-u,d=new Zh(p),f=0,g=new Array(o),y=new Array(o),m=0,v=ms.from(r.buffer),_=0;_<o;_++){var w=_<c?u:h;g[_]=v.slice(f,f+w),y[_]=d.encode(g[_]),f+=w,m=Math.max(m,w)}var b=ms.alloc(i),E=0,S,x;for(S=0;S<m;S++)for(x=0;x<o;x++)S<g[x].length&&(b[E++]=g[x][S]);for(S=0;S<p;S++)for(x=0;x<o;x++)b[E++]=y[x][S];return b}function ud(r,e,t,i){var n;if(rd(r))n=Ai.fromArray(r);else if(typeof r=="string"){var s=e;if(!s){var o=Ai.rawSplit(r);s=Hr.getBestVersionForData(o,t)}n=Ai.fromString(r,s||40)}else throw new Error("Invalid data");var a=Hr.getBestVersionForData(n,t);if(!a)throw new Error("The amount of data is too big to be stored in a QR Code");if(!e)e=a;else if(e<a)throw new Error(`
|
|
@@ -528,4 +528,4 @@ ${r.length}`,t=new TextEncoder().encode(e+r);return"0x"+R.Buffer.from(Vp(t)).toS
|
|
|
528
528
|
Required: ${o.toString()}
|
|
529
529
|
Approved: ${a.toString()}`)),Object.keys(e).forEach(h=>{if(!h.includes(":")||i)return;const p=rr(e[h].accounts);p.includes(h)||(i=P("NON_CONFORMING_NAMESPACES",`${t} namespaces accounts don't satisfy namespace accounts for ${h}
|
|
530
530
|
Required: ${h}
|
|
531
|
-
Approved: ${p.toString()}`))}),o.forEach(h=>{i||(Pt(n[h].methods,s[h].methods)?Pt(n[h].events,s[h].events)||(i=P("NON_CONFORMING_NAMESPACES",`${t} namespaces events don't satisfy namespace events for ${h}`)):i=P("NON_CONFORMING_NAMESPACES",`${t} namespaces methods don't satisfy namespace methods for ${h}`))}),i}function Qy(r){const e={};return Object.keys(r).forEach(t=>{var i;t.includes(":")?e[t]=r[t]:(i=r[t].chains)==null||i.forEach(n=>{e[n]={methods:r[t].methods,events:r[t].events}})}),e}function Io(r){return[...new Set(r.map(e=>e.includes(":")?e.split(":")[0]:e))]}function Xy(r){const e={};return Object.keys(r).forEach(t=>{if(t.includes(":"))e[t]=r[t];else{const i=rr(r[t].accounts);i==null||i.forEach(n=>{e[n]={accounts:r[t].accounts.filter(s=>s.includes(`${n}:`)),methods:r[t].methods,events:r[t].events}})}}),e}function Zy(r,e){return Zn(r,!1)&&r<=e.max&&r>=e.min}function xo(){const r=Tr();return new Promise(e=>{switch(r){case _e.browser:e(em());break;case _e.reactNative:e(tm());break;case _e.node:e(rm());break;default:e(!0)}})}function em(){return Ar()&&(navigator==null?void 0:navigator.onLine)}async function tm(){if(mt()&&typeof R.global<"u"&&R.global!=null&&R.global.NetInfo){const r=await(R.global==null?void 0:R.global.NetInfo.fetch());return r==null?void 0:r.isConnected}return!0}function rm(){return!0}function im(r){switch(Tr()){case _e.browser:nm(r);break;case _e.reactNative:sm(r);break}}function nm(r){!mt()&&Ar()&&(window.addEventListener("online",()=>r(!0)),window.addEventListener("offline",()=>r(!1)))}function sm(r){var e;mt()&&typeof R.global<"u"&&R.global!=null&&R.global.NetInfo&&((e=R.global)==null||e.NetInfo.addEventListener(t=>r(t==null?void 0:t.isConnected)))}const Bi={};class ar{static get(e){return Bi[e]}static set(e,t){Bi[e]=t}static delete(e){delete Bi[e]}}const om=r=>JSON.stringify(r,(e,t)=>typeof t=="bigint"?t.toString()+"n":t),am=r=>{const e=/([\[:])?(\d{17,}|(?:[9](?:[1-9]07199254740991|0[1-9]7199254740991|00[8-9]199254740991|007[2-9]99254740991|007199[3-9]54740991|0071992[6-9]4740991|00719925[5-9]740991|007199254[8-9]40991|0071992547[5-9]0991|00719925474[1-9]991|00719925474099[2-9])))([,\}\]])/g,t=r.replace(e,'$1"$2n"$3');return JSON.parse(t,(i,n)=>typeof n=="string"&&n.match(/^\d+n$/)?BigInt(n.substring(0,n.length-1)):n)};function cm(r){if(typeof r!="string")throw new Error(`Cannot safe json parse value of type ${typeof r}`);try{return am(r)}catch{return r}}function lm(r){return typeof r=="string"?r:om(r)||""}const um=()=>typeof WebSocket<"u"?WebSocket:typeof R.global<"u"&&typeof R.global.WebSocket<"u"?R.global.WebSocket:typeof window<"u"&&typeof window.WebSocket<"u"?window.WebSocket:typeof self<"u"&&typeof self.WebSocket<"u"?self.WebSocket:require("ws"),hm=()=>typeof WebSocket<"u"||typeof R.global<"u"&&typeof R.global.WebSocket<"u"||typeof window<"u"&&typeof window.WebSocket<"u"||typeof self<"u"&&typeof self.WebSocket<"u",Po=r=>r.split("?")[0],Ao=10,dm=um();class fm{constructor(e){if(this.url=e,this.events=new He.EventEmitter,this.registering=!1,!ns(e))throw new Error(`Provided URL is not compatible with WebSocket connection: ${e}`);this.url=e}get connected(){return typeof this.socket<"u"}get connecting(){return this.registering}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 open(e=this.url){await this.register(e)}async close(){return new Promise((e,t)=>{if(typeof this.socket>"u"){t(new Error("Connection already closed"));return}this.socket.onclose=i=>{this.onClose(i),e()},this.socket.close()})}async send(e){typeof this.socket>"u"&&(this.socket=await this.register());try{this.socket.send(lm(e))}catch(t){this.onError(e.id,t)}}register(e=this.url){if(!ns(e))throw new Error(`Provided URL is not compatible with WebSocket connection: ${e}`);if(this.registering){const t=this.events.getMaxListeners();return(this.events.listenerCount("register_error")>=t||this.events.listenerCount("open")>=t)&&this.events.setMaxListeners(t+1),new Promise((i,n)=>{this.events.once("register_error",s=>{this.resetMaxListeners(),n(s)}),this.events.once("open",()=>{if(this.resetMaxListeners(),typeof this.socket>"u")return n(new Error("WebSocket connection is missing or invalid"));i(this.socket)})})}return this.url=e,this.registering=!0,new Promise((t,i)=>{const n=eu.isReactNative()?void 0:{rejectUnauthorized:!tu(e)},s=new dm(e,[],n);hm()?s.onerror=o=>{const a=o;i(this.emitError(a.error))}:s.on("error",o=>{i(this.emitError(o))}),s.onopen=()=>{this.onOpen(s),t(s)}})}onOpen(e){e.onmessage=t=>this.onPayload(t),e.onclose=t=>this.onClose(t),this.socket=e,this.registering=!1,this.events.emit("open")}onClose(e){this.socket=void 0,this.registering=!1,this.events.emit("close",e)}onPayload(e){if(typeof e.data>"u")return;const t=typeof e.data=="string"?cm(e.data):e.data;this.events.emit("payload",t)}onError(e,t){const i=this.parseError(t),n=i.message||i.toString(),s=vn(e,n);this.events.emit("payload",s)}parseError(e,t=this.url){return ru(e,Po(t),"WS")}resetMaxListeners(){this.events.getMaxListeners()>Ao&&this.events.setMaxListeners(Ao)}emitError(e){const t=this.parseError(new Error((e==null?void 0:e.message)||`WebSocket connection failed for host: ${Po(this.url)}`));return this.events.emit("register_error",t),t}}var X={};Object.defineProperty(X,"__esModule",{value:!0});X.getLocalStorage=X.getLocalStorageOrThrow=X.getCrypto=X.getCryptoOrThrow=X.getLocation=X.getLocationOrThrow=X.getNavigator=X.getNavigatorOrThrow=Il=X.getDocument=X.getDocumentOrThrow=X.getFromWindowOrThrow=X.getFromWindow=void 0;function kt(r){let e;return typeof window<"u"&&typeof window[r]<"u"&&(e=window[r]),e}X.getFromWindow=kt;function ir(r){const e=kt(r);if(!e)throw new Error(`${r} is not defined in Window`);return e}X.getFromWindowOrThrow=ir;function pm(){return ir("document")}X.getDocumentOrThrow=pm;function gm(){return kt("document")}var Il=X.getDocument=gm;function ym(){return ir("navigator")}X.getNavigatorOrThrow=ym;function mm(){return kt("navigator")}X.getNavigator=mm;function vm(){return ir("location")}X.getLocationOrThrow=vm;function wm(){return kt("location")}X.getLocation=wm;function _m(){return ir("crypto")}X.getCryptoOrThrow=_m;function bm(){return kt("crypto")}X.getCrypto=bm;function Em(){return ir("localStorage")}X.getLocalStorageOrThrow=Em;function Sm(){return kt("localStorage")}X.getLocalStorage=Sm;const xl="wc",Pl=2,pn="core",We=`${xl}@2:${pn}:`,Im={logger:"error"},xm={database:":memory:"},Pm="crypto",To="client_ed25519_seed",Am=I.ONE_DAY,Tm="keychain",Rm="0.3",Cm="messages",Nm="0.3",Ro=I.SIX_HOURS,Om="publisher",Al="irn",$m="error",Tl="wss://relay.walletconnect.org",km="relayer",ne={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"},Mm="_subscription",Ae={payload:"payload",connect:"connect",disconnect:"disconnect",error:"error"},Lm=.1,gn="2.18.0",G={link_mode:"link_mode",relay:"relay"},Dm="0.3",Fm="WALLETCONNECT_CLIENT_ID",Co="WALLETCONNECT_LINK_MODE_APPS",ve={created:"subscription_created",deleted:"subscription_deleted",expired:"subscription_expired",disabled:"subscription_disabled",sync:"subscription_sync",resubscribed:"subscription_resubscribed"},qm="subscription",Um="0.3",Bm=I.FIVE_SECONDS*1e3,zm="pairing",Km="0.3",cr={wc_pairingDelete:{req:{ttl:I.ONE_DAY,prompt:!1,tag:1e3},res:{ttl:I.ONE_DAY,prompt:!1,tag:1001}},wc_pairingPing:{req:{ttl:I.THIRTY_SECONDS,prompt:!1,tag:1002},res:{ttl:I.THIRTY_SECONDS,prompt:!1,tag:1003}},unregistered_method:{req:{ttl:I.ONE_DAY,prompt:!1,tag:0},res:{ttl:I.ONE_DAY,prompt:!1,tag:0}}},Et={create:"pairing_create",expire:"pairing_expire",delete:"pairing_delete",ping:"pairing_ping"},Me={created:"history_created",updated:"history_updated",deleted:"history_deleted",sync:"history_sync"},jm="history",Vm="0.3",Wm="expirer",Te={created:"expirer_created",deleted:"expirer_deleted",expired:"expirer_expired",sync:"expirer_sync"},Hm="0.3",Jm="verify-api",Gm="https://verify.walletconnect.com",Rl="https://verify.walletconnect.org",mr=Rl,Ym=`${mr}/v3`,Qm=[Gm,Rl],Xm="echo",Zm="https://echo.walletconnect.com",Ve={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"},Xe={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"},Le={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"},wt={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"},_t={authenticated_session_approve_started:"authenticated_session_approve_started",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"},lr={no_internet_connection:"no_internet_connection",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"},e0=.1,t0="event-client",r0=86400,i0="https://pulse.walletconnect.org/batch";function n0(r,e){if(r.length>=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),i=0;i<t.length;i++)t[i]=255;for(var n=0;n<r.length;n++){var s=r.charAt(n),o=s.charCodeAt(0);if(t[o]!==255)throw new TypeError(s+" is ambiguous");t[o]=n}var a=r.length,c=r.charAt(0),l=Math.log(a)/Math.log(256),u=Math.log(256)/Math.log(a);function h(f){if(f instanceof Uint8Array||(ArrayBuffer.isView(f)?f=new Uint8Array(f.buffer,f.byteOffset,f.byteLength):Array.isArray(f)&&(f=Uint8Array.from(f))),!(f instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(f.length===0)return"";for(var g=0,y=0,m=0,v=f.length;m!==v&&f[m]===0;)m++,g++;for(var _=(v-m)*u+1>>>0,w=new Uint8Array(_);m!==v;){for(var b=f[m],E=0,S=_-1;(b!==0||E<y)&&S!==-1;S--,E++)b+=256*w[S]>>>0,w[S]=b%a>>>0,b=b/a>>>0;if(b!==0)throw new Error("Non-zero carry");y=E,m++}for(var x=_-y;x!==_&&w[x]===0;)x++;for(var C=c.repeat(g);x<_;++x)C+=r.charAt(w[x]);return C}function p(f){if(typeof f!="string")throw new TypeError("Expected String");if(f.length===0)return new Uint8Array;var g=0;if(f[g]!==" "){for(var y=0,m=0;f[g]===c;)y++,g++;for(var v=(f.length-g)*l+1>>>0,_=new Uint8Array(v);f[g];){var w=t[f.charCodeAt(g)];if(w===255)return;for(var b=0,E=v-1;(w!==0||b<m)&&E!==-1;E--,b++)w+=a*_[E]>>>0,_[E]=w%256>>>0,w=w/256>>>0;if(w!==0)throw new Error("Non-zero carry");m=b,g++}if(f[g]!==" "){for(var S=v-m;S!==v&&_[S]===0;)S++;for(var x=new Uint8Array(y+(v-S)),C=y;S!==v;)x[C++]=_[S++];return x}}}function d(f){var g=p(f);if(g)return g;throw new Error(`Non-${e} character`)}return{encode:h,decodeUnsafe:p,decode:d}}var s0=n0,o0=s0;const Cl=r=>{if(r instanceof Uint8Array&&r.constructor.name==="Uint8Array")return r;if(r instanceof ArrayBuffer)return new Uint8Array(r);if(ArrayBuffer.isView(r))return new Uint8Array(r.buffer,r.byteOffset,r.byteLength);throw new Error("Unknown type, must be binary type")},a0=r=>new TextEncoder().encode(r),c0=r=>new TextDecoder().decode(r);class l0{constructor(e,t,i){this.name=e,this.prefix=t,this.baseEncode=i}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}}class u0{constructor(e,t,i){if(this.name=e,this.prefix=t,t.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=t.codePointAt(0),this.baseDecode=i}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 Nl(this,e)}}class h0{constructor(e){this.decoders=e}or(e){return Nl(this,e)}decode(e){const t=e[0],i=this.decoders[t];if(i)return i.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}}const Nl=(r,e)=>new h0({...r.decoders||{[r.prefix]:r},...e.decoders||{[e.prefix]:e}});class d0{constructor(e,t,i,n){this.name=e,this.prefix=t,this.baseEncode=i,this.baseDecode=n,this.encoder=new l0(e,t,i),this.decoder=new u0(e,t,n)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}}const wi=({name:r,prefix:e,encode:t,decode:i})=>new d0(r,e,t,i),Or=({prefix:r,name:e,alphabet:t})=>{const{encode:i,decode:n}=o0(t,e);return wi({prefix:r,name:e,encode:i,decode:s=>Cl(n(s))})},f0=(r,e,t,i)=>{const n={};for(let u=0;u<e.length;++u)n[e[u]]=u;let s=r.length;for(;r[s-1]==="=";)--s;const o=new Uint8Array(s*t/8|0);let a=0,c=0,l=0;for(let u=0;u<s;++u){const h=n[r[u]];if(h===void 0)throw new SyntaxError(`Non-${i} character`);c=c<<t|h,a+=t,a>=8&&(a-=8,o[l++]=255&c>>a)}if(a>=t||255&c<<8-a)throw new SyntaxError("Unexpected end of data");return o},p0=(r,e,t)=>{const i=e[e.length-1]==="=",n=(1<<t)-1;let s="",o=0,a=0;for(let c=0;c<r.length;++c)for(a=a<<8|r[c],o+=8;o>t;)o-=t,s+=e[n&a>>o];if(o&&(s+=e[n&a<<t-o]),i)for(;s.length*t&7;)s+="=";return s},ce=({name:r,prefix:e,bitsPerChar:t,alphabet:i})=>wi({prefix:e,name:r,encode(n){return p0(n,i,t)},decode(n){return f0(n,i,t,r)}}),g0=wi({prefix:"\0",name:"identity",encode:r=>c0(r),decode:r=>a0(r)});var y0=Object.freeze({__proto__:null,identity:g0});const m0=ce({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var v0=Object.freeze({__proto__:null,base2:m0});const w0=ce({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var _0=Object.freeze({__proto__:null,base8:w0});const b0=Or({prefix:"9",name:"base10",alphabet:"0123456789"});var E0=Object.freeze({__proto__:null,base10:b0});const S0=ce({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),I0=ce({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var x0=Object.freeze({__proto__:null,base16:S0,base16upper:I0});const P0=ce({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),A0=ce({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),T0=ce({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),R0=ce({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),C0=ce({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),N0=ce({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),O0=ce({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),$0=ce({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),k0=ce({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var M0=Object.freeze({__proto__:null,base32:P0,base32upper:A0,base32pad:T0,base32padupper:R0,base32hex:C0,base32hexupper:N0,base32hexpad:O0,base32hexpadupper:$0,base32z:k0});const L0=Or({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),D0=Or({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var F0=Object.freeze({__proto__:null,base36:L0,base36upper:D0});const q0=Or({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),U0=Or({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var B0=Object.freeze({__proto__:null,base58btc:q0,base58flickr:U0});const z0=ce({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),K0=ce({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),j0=ce({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),V0=ce({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var W0=Object.freeze({__proto__:null,base64:z0,base64pad:K0,base64url:j0,base64urlpad:V0});const Ol=Array.from("🚀🪐☄🛰🌌🌑🌒🌓🌔🌕🌖🌗🌘🌍🌏🌎🐉☀💻🖥💾💿😂❤😍🤣😊🙏💕😭😘👍😅👏😁🔥🥰💔💖💙😢🤔😆🙄💪😉☺👌🤗💜😔😎😇🌹🤦🎉💞✌✨🤷😱😌🌸🙌😋💗💚😏💛🙂💓🤩😄😀🖤😃💯🙈👇🎶😒🤭❣😜💋👀😪😑💥🙋😞😩😡🤪👊🥳😥🤤👉💃😳✋😚😝😴🌟😬🙃🍀🌷😻😓⭐✅🥺🌈😈🤘💦✔😣🏃💐☹🎊💘😠☝😕🌺🎂🌻😐🖕💝🙊😹🗣💫💀👑🎵🤞😛🔴😤🌼😫⚽🤙☕🏆🤫👈😮🙆🍻🍃🐶💁😲🌿🧡🎁⚡🌞🎈❌✊👋😰🤨😶🤝🚶💰🍓💢🤟🙁🚨💨🤬✈🎀🍺🤓😙💟🌱😖👶🥴▶➡❓💎💸⬇😨🌚🦋😷🕺⚠🙅😟😵👎🤲🤠🤧📌🔵💅🧐🐾🍒😗🤑🌊🤯🐷☎💧😯💆👆🎤🙇🍑❄🌴💣🐸💌📍🥀🤢👅💡💩👐📸👻🤐🤮🎼🥵🚩🍎🍊👼💍📣🥂"),H0=Ol.reduce((r,e,t)=>(r[t]=e,r),[]),J0=Ol.reduce((r,e,t)=>(r[e.codePointAt(0)]=t,r),[]);function G0(r){return r.reduce((e,t)=>(e+=H0[t],e),"")}function Y0(r){const e=[];for(const t of r){const i=J0[t.codePointAt(0)];if(i===void 0)throw new Error(`Non-base256emoji character: ${t}`);e.push(i)}return new Uint8Array(e)}const Q0=wi({prefix:"🚀",name:"base256emoji",encode:G0,decode:Y0});var X0=Object.freeze({__proto__:null,base256emoji:Q0}),Z0=$l,No=128,ev=-128,tv=Math.pow(2,31);function $l(r,e,t){e=e||[],t=t||0;for(var i=t;r>=tv;)e[t++]=r&255|No,r/=128;for(;r&ev;)e[t++]=r&255|No,r>>>=7;return e[t]=r|0,$l.bytes=t-i+1,e}var rv=yn,iv=128,Oo=127;function yn(r,i){var t=0,i=i||0,n=0,s=i,o,a=r.length;do{if(s>=a)throw yn.bytes=0,new RangeError("Could not decode varint");o=r[s++],t+=n<28?(o&Oo)<<n:(o&Oo)*Math.pow(2,n),n+=7}while(o>=iv);return yn.bytes=s-i,t}var nv=Math.pow(2,7),sv=Math.pow(2,14),ov=Math.pow(2,21),av=Math.pow(2,28),cv=Math.pow(2,35),lv=Math.pow(2,42),uv=Math.pow(2,49),hv=Math.pow(2,56),dv=Math.pow(2,63),fv=function(r){return r<nv?1:r<sv?2:r<ov?3:r<av?4:r<cv?5:r<lv?6:r<uv?7:r<hv?8:r<dv?9:10},pv={encode:Z0,decode:rv,encodingLength:fv},kl=pv;const $o=(r,e,t=0)=>(kl.encode(r,e,t),e),ko=r=>kl.encodingLength(r),mn=(r,e)=>{const t=e.byteLength,i=ko(r),n=i+ko(t),s=new Uint8Array(n+t);return $o(r,s,0),$o(t,s,i),s.set(e,n),new gv(r,t,e,s)};class gv{constructor(e,t,i,n){this.code=e,this.size=t,this.digest=i,this.bytes=n}}const Ml=({name:r,code:e,encode:t})=>new yv(r,e,t);class yv{constructor(e,t,i){this.name=e,this.code=t,this.encode=i}digest(e){if(e instanceof Uint8Array){const t=this.encode(e);return t instanceof Uint8Array?mn(this.code,t):t.then(i=>mn(this.code,i))}else throw Error("Unknown type, must be binary type")}}const Ll=r=>async e=>new Uint8Array(await crypto.subtle.digest(r,e)),mv=Ml({name:"sha2-256",code:18,encode:Ll("SHA-256")}),vv=Ml({name:"sha2-512",code:19,encode:Ll("SHA-512")});var wv=Object.freeze({__proto__:null,sha256:mv,sha512:vv});const Dl=0,_v="identity",Fl=Cl,bv=r=>mn(Dl,Fl(r)),Ev={code:Dl,name:_v,encode:Fl,digest:bv};var Sv=Object.freeze({__proto__:null,identity:Ev});new TextEncoder,new TextDecoder;const Mo={...y0,...v0,..._0,...E0,...x0,...M0,...F0,...B0,...W0,...X0};({...wv,...Sv});function Iv(r=0){return globalThis.Buffer!=null&&globalThis.Buffer.allocUnsafe!=null?globalThis.Buffer.allocUnsafe(r):new Uint8Array(r)}function ql(r,e,t,i){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:i}}}const Lo=ql("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),zi=ql("ascii","a",r=>{let e="a";for(let t=0;t<r.length;t++)e+=String.fromCharCode(r[t]);return e},r=>{r=r.substring(1);const e=Iv(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),xv={utf8:Lo,"utf-8":Lo,hex:Mo.base16,latin1:zi,ascii:zi,binary:zi,...Mo};function Pv(r,e="utf8"){const t=xv[e];if(!t)throw new Error(`Unsupported encoding "${e}"`);return(e==="utf8"||e==="utf-8")&&globalThis.Buffer!=null&&globalThis.Buffer.from!=null?globalThis.Buffer.from(r,"utf8"):t.decoder.decode(`${t.prefix}${r}`)}class Av{constructor(e,t){this.core=e,this.logger=t,this.keychain=new Map,this.name=Tm,this.version=Rm,this.initialized=!1,this.storagePrefix=We,this.init=async()=>{if(!this.initialized){const i=await this.getKeyChain();typeof i<"u"&&(this.keychain=i),this.initialized=!0}},this.has=i=>(this.isInitialized(),this.keychain.has(i)),this.set=async(i,n)=>{this.isInitialized(),this.keychain.set(i,n),await this.persist()},this.get=i=>{this.isInitialized();const n=this.keychain.get(i);if(typeof n>"u"){const{message:s}=P("NO_MATCHING_KEY",`${this.name}: ${i}`);throw new Error(s)}return n},this.del=async i=>{this.isInitialized(),this.keychain.delete(i),await this.persist()},this.core=e,this.logger=pe(t,this.name)}get context(){return be(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}async setKeyChain(e){await this.core.storage.setItem(this.storageKey,Jc(e))}async getKeyChain(){const e=await this.core.storage.getItem(this.storageKey);return typeof e<"u"?Gc(e):void 0}async persist(){await this.setKeyChain(this.keychain)}isInitialized(){if(!this.initialized){const{message:e}=P("NOT_INITIALIZED",this.name);throw new Error(e)}}}class Tv{constructor(e,t,i){this.core=e,this.logger=t,this.name=Pm,this.randomSessionIdentifier=fn(),this.initialized=!1,this.init=async()=>{this.initialized||(await this.keychain.init(),this.initialized=!0)},this.hasKeys=n=>(this.isInitialized(),this.keychain.has(n)),this.getClientId=async()=>{this.isInitialized();const n=await this.getClientSeed(),s=ss(n);return su(s.publicKey)},this.generateKeyPair=()=>{this.isInitialized();const n=uy();return this.setPrivateKey(n.publicKey,n.privateKey)},this.signJWT=async n=>{this.isInitialized();const s=await this.getClientSeed(),o=ss(s),a=this.randomSessionIdentifier;return await ou(a,n,Am,o)},this.generateSharedKey=(n,s,o)=>{this.isInitialized();const a=this.getPrivateKey(n),c=hy(a,s);return this.setSymKey(c,o)},this.setSymKey=async(n,s)=>{this.isInitialized();const o=s||jr(n);return await this.keychain.set(o,n),o},this.deleteKeyPair=async n=>{this.isInitialized(),await this.keychain.del(n)},this.deleteSymKey=async n=>{this.isInitialized(),await this.keychain.del(n)},this.encode=async(n,s,o)=>{this.isInitialized();const a=bl(o),c=Nf(s);if(mo(a))return py(c,o==null?void 0:o.encoding);if(yo(a)){const p=a.senderPublicKey,d=a.receiverPublicKey;n=await this.generateSharedKey(p,d)}const l=this.getSymKey(n),{type:u,senderPublicKey:h}=a;return dy({type:u,symKey:l,message:c,senderPublicKey:h,encoding:o==null?void 0:o.encoding})},this.decode=async(n,s,o)=>{this.isInitialized();const a=yy(s,o);if(mo(a)){const c=gy(s,o==null?void 0:o.encoding);return Fs(c)}if(yo(a)){const c=a.receiverPublicKey,l=a.senderPublicKey;n=await this.generateSharedKey(c,l)}try{const c=this.getSymKey(n),l=fy({symKey:c,encoded:s,encoding:o==null?void 0:o.encoding});return Fs(l)}catch(c){this.logger.error(`Failed to decode message from topic: '${n}', clientId: '${await this.getClientId()}'`),this.logger.error(c)}},this.getPayloadType=(n,s=ut)=>{const o=Sr({encoded:n,encoding:s});return Tt(o.type)},this.getPayloadSenderPublicKey=(n,s=ut)=>{const o=Sr({encoded:n,encoding:s});return o.senderPublicKey?fe(o.senderPublicKey,ue):void 0},this.core=e,this.logger=pe(t,this.name),this.keychain=i||new Av(this.core,this.logger)}get context(){return be(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(To)}catch{e=fn(),await this.keychain.set(To,e)}return Pv(e,"base16")}getSymKey(e){return this.keychain.get(e)}isInitialized(){if(!this.initialized){const{message:e}=P("NOT_INITIALIZED",this.name);throw new Error(e)}}}class Rv extends _f{constructor(e,t){super(e,t),this.logger=e,this.core=t,this.messages=new Map,this.name=Cm,this.version=Nm,this.initialized=!1,this.storagePrefix=We,this.init=async()=>{if(!this.initialized){this.logger.trace("Initialized");try{const i=await this.getRelayerMessages();typeof i<"u"&&(this.messages=i),this.logger.debug(`Successfully Restored records for ${this.name}`),this.logger.trace({type:"method",method:"restore",size:this.messages.size})}catch(i){this.logger.debug(`Failed to Restore records for ${this.name}`),this.logger.error(i)}finally{this.initialized=!0}}},this.set=async(i,n)=>{this.isInitialized();const s=Ze(n);let o=this.messages.get(i);return typeof o>"u"&&(o={}),typeof o[s]<"u"||(o[s]=n,this.messages.set(i,o),await this.persist()),s},this.get=i=>{this.isInitialized();let n=this.messages.get(i);return typeof n>"u"&&(n={}),n},this.has=(i,n)=>{this.isInitialized();const s=this.get(i),o=Ze(n);return typeof s[o]<"u"},this.del=async i=>{this.isInitialized(),this.messages.delete(i),await this.persist()},this.logger=pe(e,this.name),this.core=t}get context(){return be(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}async setRelayerMessages(e){await this.core.storage.setItem(this.storageKey,Jc(e))}async getRelayerMessages(){const e=await this.core.storage.getItem(this.storageKey);return typeof e<"u"?Gc(e):void 0}async persist(){await this.setRelayerMessages(this.messages)}isInitialized(){if(!this.initialized){const{message:e}=P("NOT_INITIALIZED",this.name);throw new Error(e)}}}var Cv=Object.defineProperty,Nv=Object.defineProperties,Ov=Object.getOwnPropertyDescriptors,Do=Object.getOwnPropertySymbols,$v=Object.prototype.hasOwnProperty,kv=Object.prototype.propertyIsEnumerable,Fo=(r,e,t)=>e in r?Cv(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,qo=(r,e)=>{for(var t in e||(e={}))$v.call(e,t)&&Fo(r,t,e[t]);if(Do)for(var t of Do(e))kv.call(e,t)&&Fo(r,t,e[t]);return r},Uo=(r,e)=>Nv(r,Ov(e));class Mv extends bf{constructor(e,t){super(e,t),this.relayer=e,this.logger=t,this.events=new He.EventEmitter,this.name=Om,this.queue=new Map,this.publishTimeout=I.toMiliseconds(I.ONE_MINUTE),this.initialPublishTimeout=I.toMiliseconds(I.ONE_SECOND*15),this.needsTransportRestart=!1,this.publish=async(i,n,s)=>{var o;this.logger.debug("Publishing Payload"),this.logger.trace({type:"method",method:"publish",params:{topic:i,message:n,opts:s}});const a=(s==null?void 0:s.ttl)||Ro,c=ti(s),l=(s==null?void 0:s.prompt)||!1,u=(s==null?void 0:s.tag)||0,h=(s==null?void 0:s.id)||xt().toString(),p={topic:i,message:n,opts:{ttl:a,relay:c,prompt:l,tag:u,id:h,attestation:s==null?void 0:s.attestation}},d=`Failed to publish payload, please try again. id:${h} tag:${u}`;try{const f=new Promise(async g=>{const y=({id:v})=>{p.opts.id===v&&(this.removeRequestFromQueue(v),this.relayer.events.removeListener(ne.publish,y),g(p))};this.relayer.events.on(ne.publish,y);const m=lt(new Promise((v,_)=>{this.rpcPublish({topic:i,message:n,ttl:a,prompt:l,tag:u,id:h,attestation:s==null?void 0:s.attestation}).then(v).catch(w=>{this.logger.warn(w,w==null?void 0:w.message),_(w)})}),this.initialPublishTimeout,`Failed initial publish, retrying.... id:${h} tag:${u}`);try{await m,this.events.removeListener(ne.publish,y)}catch(v){this.queue.set(h,Uo(qo({},p),{attempt:1})),this.logger.warn(v,v==null?void 0:v.message)}});this.logger.trace({type:"method",method:"publish",params:{id:h,topic:i,message:n,opts:s}}),await lt(f,this.publishTimeout,d)}catch(f){if(this.logger.debug("Failed to Publish Payload"),this.logger.error(f),(o=s==null?void 0:s.internal)!=null&&o.throwOnFailedPublish)throw f}finally{this.queue.delete(h)}},this.on=(i,n)=>{this.events.on(i,n)},this.once=(i,n)=>{this.events.once(i,n)},this.off=(i,n)=>{this.events.off(i,n)},this.removeListener=(i,n)=>{this.events.removeListener(i,n)},this.relayer=e,this.logger=pe(t,this.name),this.registerEventListeners()}get context(){return be(this.logger)}async rpcPublish(e){var t,i,n,s;const{topic:o,message:a,ttl:c=Ro,prompt:l,tag:u,id:h,attestation:p}=e,d={method:dr(ti().protocol).publish,params:{topic:o,message:a,ttl:c,prompt:l,tag:u,attestation:p},id:h};de((t=d.params)==null?void 0:t.prompt)&&((i=d.params)==null||delete i.prompt),de((n=d.params)==null?void 0:n.tag)&&((s=d.params)==null||delete s.tag),this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"message",direction:"outgoing",request:d});const f=await this.relayer.request(d);return this.relayer.events.emit(ne.publish,e),this.logger.debug("Successfully Published Payload"),f}removeRequestFromQueue(e){this.queue.delete(e)}checkQueue(){this.queue.forEach(async(e,t)=>{const i=e.attempt+1;this.queue.set(t,Uo(qo({},e),{attempt:i}));const{topic:n,message:s,opts:o,attestation:a}=e;this.logger.warn({},`Publisher: queue->publishing: ${e.opts.id}, tag: ${e.opts.tag}, attempt: ${i}`),await this.rpcPublish({topic:n,message:s,ttl:o.ttl,prompt:o.prompt,tag:o.tag,id:o.id,attestation:a}),this.logger.warn({},`Publisher: queue->published: ${e.opts.id}`)})}registerEventListeners(){this.relayer.core.heartbeat.on(Zt.pulse,()=>{if(this.needsTransportRestart){this.needsTransportRestart=!1,this.relayer.events.emit(ne.connection_stalled);return}this.checkQueue()}),this.relayer.on(ne.message_ack,e=>{this.removeRequestFromQueue(e.id.toString())})}}class Lv{constructor(){this.map=new Map,this.set=(e,t)=>{const i=this.get(e);this.exists(e,t)||this.map.set(e,[...i,t])},this.get=e=>this.map.get(e)||[],this.exists=(e,t)=>this.get(e).includes(t),this.delete=(e,t)=>{if(typeof t>"u"){this.map.delete(e);return}if(!this.map.has(e))return;const i=this.get(e);if(!this.exists(e,t))return;const n=i.filter(s=>s!==t);if(!n.length){this.map.delete(e);return}this.map.set(e,n)},this.clear=()=>{this.map.clear()}}get topics(){return Array.from(this.map.keys())}}var Dv=Object.defineProperty,Fv=Object.defineProperties,qv=Object.getOwnPropertyDescriptors,Bo=Object.getOwnPropertySymbols,Uv=Object.prototype.hasOwnProperty,Bv=Object.prototype.propertyIsEnumerable,zo=(r,e,t)=>e in r?Dv(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,ur=(r,e)=>{for(var t in e||(e={}))Uv.call(e,t)&&zo(r,t,e[t]);if(Bo)for(var t of Bo(e))Bv.call(e,t)&&zo(r,t,e[t]);return r},Ki=(r,e)=>Fv(r,qv(e));class zv extends If{constructor(e,t){super(e,t),this.relayer=e,this.logger=t,this.subscriptions=new Map,this.topicMap=new Lv,this.events=new He.EventEmitter,this.name=qm,this.version=Um,this.pending=new Map,this.cached=[],this.initialized=!1,this.pendingSubscriptionWatchLabel="pending_sub_watch_label",this.pollingInterval=20,this.storagePrefix=We,this.subscribeTimeout=I.toMiliseconds(I.ONE_MINUTE),this.initialSubscribeTimeout=I.toMiliseconds(I.ONE_SECOND*15),this.batchSubscribeTopicsLimit=500,this.init=async()=>{this.initialized||(this.logger.trace("Initialized"),this.registerEventListeners(),this.clientId=await this.relayer.core.crypto.getClientId(),await this.restore()),this.initialized=!0},this.subscribe=async(i,n)=>{this.isInitialized(),this.logger.debug("Subscribing Topic"),this.logger.trace({type:"method",method:"subscribe",params:{topic:i,opts:n}});try{const s=ti(n),o={topic:i,relay:s,transportType:n==null?void 0:n.transportType};this.pending.set(i,o);const a=await this.rpcSubscribe(i,s,n);return typeof a=="string"&&(this.onSubscribe(a,o),this.logger.debug("Successfully Subscribed Topic"),this.logger.trace({type:"method",method:"subscribe",params:{topic:i,opts:n}})),a}catch(s){throw this.logger.debug("Failed to Subscribe Topic"),this.logger.error(s),s}},this.unsubscribe=async(i,n)=>{await this.restartToComplete(),this.isInitialized(),typeof(n==null?void 0:n.id)<"u"?await this.unsubscribeById(i,n.id,n):await this.unsubscribeByTopic(i,n)},this.isSubscribed=async i=>{if(this.topics.includes(i))return!0;const n=`${this.pendingSubscriptionWatchLabel}_${i}`;return await new Promise((s,o)=>{const a=new I.Watch;a.start(n);const c=setInterval(()=>{(!this.pending.has(i)&&this.topics.includes(i)||this.cached.some(l=>l.topic===i))&&(clearInterval(c),a.stop(n),s(!0)),a.elapsed(n)>=Bm&&(clearInterval(c),a.stop(n),o(new Error("Subscription resolution timeout")))},this.pollingInterval)}).catch(()=>!1)},this.on=(i,n)=>{this.events.on(i,n)},this.once=(i,n)=>{this.events.once(i,n)},this.off=(i,n)=>{this.events.off(i,n)},this.removeListener=(i,n)=>{this.events.removeListener(i,n)},this.start=async()=>{await this.onConnect()},this.stop=async()=>{await this.onDisconnect()},this.restart=async()=>{await this.restore(),await this.onRestart()},this.checkPending=async()=>{if(this.pending.size===0&&(!this.initialized||!this.relayer.connected))return;const i=[];this.pending.forEach(n=>{i.push(n)}),await this.batchSubscribe(i)},this.registerEventListeners=()=>{this.relayer.core.heartbeat.on(Zt.pulse,async()=>{await this.checkPending()}),this.events.on(ve.created,async i=>{const n=ve.created;this.logger.info(`Emitting ${n}`),this.logger.debug({type:"event",event:n,data:i}),await this.persist()}),this.events.on(ve.deleted,async i=>{const n=ve.deleted;this.logger.info(`Emitting ${n}`),this.logger.debug({type:"event",event:n,data:i}),await this.persist()})},this.relayer=e,this.logger=pe(t,this.name),this.clientId=""}get context(){return be(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}hasSubscription(e,t){let i=!1;try{i=this.getSubscription(e).topic===t}catch{}return i}reset(){this.cached=[],this.initialized=!0}onDisable(){this.cached=this.values,this.subscriptions.clear(),this.topicMap.clear()}async unsubscribeByTopic(e,t){const i=this.topicMap.get(e);await Promise.all(i.map(async n=>await this.unsubscribeById(e,n,t)))}async unsubscribeById(e,t,i){this.logger.debug("Unsubscribing Topic"),this.logger.trace({type:"method",method:"unsubscribe",params:{topic:e,id:t,opts:i}});try{const n=ti(i);await this.rpcUnsubscribe(e,t,n);const s=H("USER_DISCONNECTED",`${this.name}, ${e}`);await this.onUnsubscribe(e,t,s),this.logger.debug("Successfully Unsubscribed Topic"),this.logger.trace({type:"method",method:"unsubscribe",params:{topic:e,id:t,opts:i}})}catch(n){throw this.logger.debug("Failed to Unsubscribe Topic"),this.logger.error(n),n}}async rpcSubscribe(e,t,i){var n;(i==null?void 0:i.transportType)===G.relay&&await this.restartToComplete();const s={method:dr(t.protocol).subscribe,params:{topic:e}};this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"payload",direction:"outgoing",request:s});const o=(n=i==null?void 0:i.internal)==null?void 0:n.throwOnFailedPublish;try{const a=this.getSubscriptionId(e);if((i==null?void 0:i.transportType)===G.link_mode)return setTimeout(()=>{(this.relayer.connected||this.relayer.connecting)&&this.relayer.request(s).catch(u=>this.logger.warn(u))},I.toMiliseconds(I.ONE_SECOND)),a;const c=new Promise(async u=>{const h=p=>{p.topic===e&&(this.events.removeListener(ve.created,h),u(p.id))};this.events.on(ve.created,h);try{const p=await lt(new Promise((d,f)=>{this.relayer.request(s).catch(g=>{this.logger.warn(g,g==null?void 0:g.message),f(g)}).then(d)}),this.initialSubscribeTimeout,`Subscribing to ${e} failed, please try again`);this.events.removeListener(ve.created,h),u(p)}catch{}}),l=await lt(c,this.subscribeTimeout,`Subscribing to ${e} failed, please try again`);if(!l&&o)throw new Error(`Subscribing to ${e} failed, please try again`);return l?a:null}catch(a){if(this.logger.debug("Outgoing Relay Subscribe Payload stalled"),this.relayer.events.emit(ne.connection_stalled),o)throw a}return null}async rpcBatchSubscribe(e){if(!e.length)return;const t=e[0].relay,i={method:dr(t.protocol).batchSubscribe,params:{topics:e.map(n=>n.topic)}};this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"payload",direction:"outgoing",request:i});try{await await lt(new Promise(n=>{this.relayer.request(i).catch(s=>this.logger.warn(s)).then(n)}),this.subscribeTimeout,"rpcBatchSubscribe failed, please try again")}catch{this.relayer.events.emit(ne.connection_stalled)}}async rpcBatchFetchMessages(e){if(!e.length)return;const t=e[0].relay,i={method:dr(t.protocol).batchFetchMessages,params:{topics:e.map(s=>s.topic)}};this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"payload",direction:"outgoing",request:i});let n;try{n=await await lt(new Promise((s,o)=>{this.relayer.request(i).catch(a=>{this.logger.warn(a),o(a)}).then(s)}),this.subscribeTimeout,"rpcBatchFetchMessages failed, please try again")}catch{this.relayer.events.emit(ne.connection_stalled)}return n}rpcUnsubscribe(e,t,i){const n={method:dr(i.protocol).unsubscribe,params:{topic:e,id:t}};return this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"payload",direction:"outgoing",request:n}),this.relayer.request(n)}onSubscribe(e,t){this.setSubscription(e,Ki(ur({},t),{id:e})),this.pending.delete(t.topic)}onBatchSubscribe(e){e.length&&e.forEach(t=>{this.setSubscription(t.id,ur({},t)),this.pending.delete(t.topic)})}async onUnsubscribe(e,t,i){this.events.removeAllListeners(t),this.hasSubscription(t,e)&&this.deleteSubscription(t,i),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,ur({},t)),this.topicMap.set(t.topic,e),this.events.emit(ve.created,t)}getSubscription(e){this.logger.debug("Getting subscription"),this.logger.trace({type:"method",method:"getSubscription",id:e});const t=this.subscriptions.get(e);if(!t){const{message:i}=P("NO_MATCHING_KEY",`${this.name}: ${e}`);throw new Error(i)}return t}deleteSubscription(e,t){this.logger.debug("Deleting subscription"),this.logger.trace({type:"method",method:"deleteSubscription",id:e,reason:t});const i=this.getSubscription(e);this.subscriptions.delete(e),this.topicMap.delete(i.topic,e),this.events.emit(ve.deleted,Ki(ur({},i),{reason:t}))}async persist(){await this.setRelayerSubscriptions(this.values),this.events.emit(ve.sync)}async onRestart(){if(this.cached.length){const e=[...this.cached],t=Math.ceil(this.cached.length/this.batchSubscribeTopicsLimit);for(let i=0;i<t;i++){const n=e.splice(0,this.batchSubscribeTopicsLimit);await this.batchSubscribe(n)}}this.events.emit(ve.resubscribed)}async restore(){try{const e=await this.getRelayerSubscriptions();if(typeof e>"u"||!e.length)return;if(this.subscriptions.size){const{message:t}=P("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(t),this.logger.error(`${this.name}: ${JSON.stringify(this.values)}`),new Error(t)}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(e.map(t=>Ki(ur({},t),{id:this.getSubscriptionId(t.topic)}))))}async batchFetchMessages(e){if(!e.length)return;this.logger.trace(`Fetching batch messages for ${e.length} subscriptions`);const t=await this.rpcBatchFetchMessages(e);t&&t.messages&&(await Ip(I.toMiliseconds(I.ONE_SECOND)),await this.relayer.handleBatchMessageEvents(t.messages))}async onConnect(){await this.restart(),this.reset()}onDisconnect(){this.onDisable()}isInitialized(){if(!this.initialized){const{message:e}=P("NOT_INITIALIZED",this.name);throw new Error(e)}}async restartToComplete(){!this.relayer.connected&&!this.relayer.connecting&&await this.relayer.transportOpen()}getSubscriptionId(e){return Ze(e+this.clientId)}}var Kv=Object.defineProperty,Ko=Object.getOwnPropertySymbols,jv=Object.prototype.hasOwnProperty,Vv=Object.prototype.propertyIsEnumerable,jo=(r,e,t)=>e in r?Kv(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Vo=(r,e)=>{for(var t in e||(e={}))jv.call(e,t)&&jo(r,t,e[t]);if(Ko)for(var t of Ko(e))Vv.call(e,t)&&jo(r,t,e[t]);return r};class Wv extends Ef{constructor(e){super(e),this.protocol="wc",this.version=2,this.events=new He.EventEmitter,this.name=km,this.transportExplicitlyClosed=!1,this.initialized=!1,this.connectionAttemptInProgress=!1,this.hasExperiencedNetworkDisruption=!1,this.heartBeatTimeout=I.toMiliseconds(I.THIRTY_SECONDS+I.FIVE_SECONDS),this.requestsInFlight=[],this.connectTimeout=I.toMiliseconds(I.ONE_SECOND*15),this.request=async t=>{var i,n;this.logger.debug("Publishing Request Payload");const s=t.id||xt().toString();await this.toEstablishConnection();try{this.logger.trace({id:s,method:t.method,topic:(i=t.params)==null?void 0:i.topic},"relayer.request - publishing...");const o=`${s}:${((n=t.params)==null?void 0:n.tag)||""}`;this.requestsInFlight.push(o);const a=await this.provider.request(t);return this.requestsInFlight=this.requestsInFlight.filter(c=>c!==o),a}catch(o){throw this.logger.debug(`Failed to Publish Request: ${s}`),o}},this.resetPingTimeout=()=>{if(Zr())try{clearTimeout(this.pingTimeout),this.pingTimeout=setTimeout(()=>{var t,i,n;this.logger.debug({},"pingTimeout: Connection stalled, terminating..."),(n=(i=(t=this.provider)==null?void 0:t.connection)==null?void 0:i.socket)==null||n.terminate()},this.heartBeatTimeout)}catch(t){this.logger.warn(t,t==null?void 0:t.message)}},this.onPayloadHandler=t=>{this.onProviderPayload(t),this.resetPingTimeout()},this.onConnectHandler=()=>{this.logger.warn({},"Relayer connected 🛜"),this.startPingTimeout(),this.events.emit(ne.connect)},this.onDisconnectHandler=()=>{this.logger.warn({},"Relayer disconnected 🛑"),this.requestsInFlight=[],this.onProviderDisconnect()},this.onProviderErrorHandler=t=>{this.logger.fatal(t,`Fatal socket error: ${t==null?void 0:t.message}`),this.events.emit(ne.error,t),this.logger.fatal("Fatal socket error received, closing transport"),this.transportClose()},this.registerProviderListeners=()=>{this.provider.on(Ae.payload,this.onPayloadHandler),this.provider.on(Ae.connect,this.onConnectHandler),this.provider.on(Ae.disconnect,this.onDisconnectHandler),this.provider.on(Ae.error,this.onProviderErrorHandler)},this.core=e.core,this.logger=typeof e.logger<"u"&&typeof e.logger!="string"?pe(e.logger,this.name):ca(wn({level:e.logger||$m})),this.messages=new Rv(this.logger,e.core),this.subscriber=new zv(this,this.logger),this.publisher=new Mv(this,this.logger),this.relayUrl=(e==null?void 0:e.relayUrl)||Tl,this.projectId=e.projectId,cp()?this.packageName=zs():lp()&&(this.bundleId=zs()),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.cached.length>0)try{await this.transportOpen()}catch(e){this.logger.warn(e,e==null?void 0:e.message)}}get context(){return be(this.logger)}get connected(){var e,t,i;return((i=(t=(e=this.provider)==null?void 0:e.connection)==null?void 0:t.socket)==null?void 0:i.readyState)===1}get connecting(){var e,t,i;return((i=(t=(e=this.provider)==null?void 0:e.connection)==null?void 0:t.socket)==null?void 0:i.readyState)===0}async publish(e,t,i){this.isInitialized(),await this.publisher.publish(e,t,i),await this.recordMessageEvent({topic:e,message:t,publishedAt:Date.now(),transportType:G.relay})}async subscribe(e,t){var i,n,s;this.isInitialized(),(!(t!=null&&t.transportType)||(t==null?void 0:t.transportType)==="relay")&&await this.toEstablishConnection();const o=typeof((i=t==null?void 0:t.internal)==null?void 0:i.throwOnFailedPublish)>"u"?!0:(n=t==null?void 0:t.internal)==null?void 0:n.throwOnFailedPublish;let a=((s=this.subscriber.topicMap.get(e))==null?void 0:s[0])||"",c;const l=u=>{u.topic===e&&(this.subscriber.off(ve.created,l),c())};return await Promise.all([new Promise(u=>{c=u,this.subscriber.on(ve.created,l)}),new Promise(async(u,h)=>{a=await this.subscriber.subscribe(e,Vo({internal:{throwOnFailedPublish:o}},t)).catch(p=>{o&&h(p)})||a,u()})]),a}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 lt(this.provider.disconnect(),2e3,"provider.disconnect()").catch(()=>this.onProviderDisconnect()):this.onProviderDisconnect()}async transportClose(){this.transportExplicitlyClosed=!0,await this.transportDisconnect()}async transportOpen(e){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,i)=>{await this.connect(e).then(t).catch(i).finally(()=>{this.connectPromise=void 0})}),await this.connectPromise),!this.connected)throw new 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 xo())throw new Error("No internet connection detected. Please restart your network and try again.")}async handleBatchMessageEvents(e){if((e==null?void 0:e.length)===0){this.logger.trace("Batch message events is empty. Ignoring...");return}const t=e.sort((i,n)=>i.publishedAt-n.publishedAt);this.logger.debug(`Batch of ${t.length} message events sorted`);for(const i of t)try{await this.onMessageEvent(i)}catch(n){this.logger.warn(n,"Error while processing batch message event: "+(n==null?void 0:n.message))}this.logger.trace(`Batch of ${t.length} message events processed`)}async onLinkMessageEvent(e,t){const{topic:i}=e;if(!t.sessionExists){const n=re(I.FIVE_MINUTES),s={topic:i,expiry:n,relay:{protocol:"irn"},active:!1};await this.core.pairing.pairings.set(i,s)}this.events.emit(ne.message,e),await this.recordMessageEvent(e)}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{this.logger.debug({},`Connecting to ${this.relayUrl}, attempt: ${t}...`),await this.createProvider(),await new Promise(async(i,n)=>{const s=()=>{n(new Error("Connection interrupted while trying to subscribe"))};this.provider.once(Ae.disconnect,s),await lt(new Promise((o,a)=>{this.provider.connect().then(o).catch(a)}),this.connectTimeout,`Socket stalled when trying to connect to ${this.relayUrl}`).catch(o=>{n(o)}).finally(()=>{this.provider.off(Ae.disconnect,s),clearTimeout(this.reconnectTimeout),this.reconnectTimeout=void 0}),await new Promise(async(o,a)=>{const c=()=>{a(new Error("Connection interrupted while trying to subscribe"))};this.provider.once(Ae.disconnect,c),await this.subscriber.start().then(o).catch(a).finally(()=>{this.provider.off(Ae.disconnect,c)})}),this.hasExperiencedNetworkDisruption=!1,i()})}catch(i){await this.subscriber.stop();const n=i;this.logger.warn({},n.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(i=>setTimeout(i,I.toMiliseconds(t*1))),t++}}startPingTimeout(){var e,t,i,n,s;if(Zr())try{(t=(e=this.provider)==null?void 0:e.connection)!=null&&t.socket&&((s=(n=(i=this.provider)==null?void 0:i.connection)==null?void 0:n.socket)==null||s.on("ping",()=>{this.resetPingTimeout()})),this.resetPingTimeout()}catch(o){this.logger.warn(o,o==null?void 0:o.message)}}async createProvider(){this.provider.connection&&this.unregisterProviderListeners();const e=await this.core.crypto.signJWT(this.relayUrl);this.provider=new du(new fm(fp({sdkVersion:gn,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){const{topic:t,message:i}=e;await this.messages.set(t,i)}async shouldIgnoreMessageEvent(e){const{topic:t,message:i}=e;if(!i||i.length===0)return this.logger.warn(`Ignoring invalid/empty message: ${i}`),!0;if(!await this.subscriber.isSubscribed(t))return this.logger.warn(`Ignoring message for non-subscribed topic ${t}`),!0;const n=this.messages.has(t,i);return n&&this.logger.warn(`Ignoring duplicate message: ${i}`),n}async onProviderPayload(e){if(this.logger.debug("Incoming Relay Payload"),this.logger.trace({type:"payload",direction:"incoming",payload:e}),_n(e)){if(!e.method.endsWith(Mm))return;const t=e.params,{topic:i,message:n,publishedAt:s,attestation:o}=t.data,a={topic:i,message:n,publishedAt:s,transportType:G.relay,attestation:o};this.logger.debug("Emitting Relayer Payload"),this.logger.trace(Vo({type:"event",event:t.id},a)),this.events.emit(t.id,a),await this.acknowledgePayload(e),await this.onMessageEvent(a)}else ni(e)&&this.events.emit(ne.message_ack,e)}async onMessageEvent(e){await this.shouldIgnoreMessageEvent(e)||(this.events.emit(ne.message,e),await this.recordMessageEvent(e))}async acknowledgePayload(e){const t=bn(e.id,!0);await this.provider.connection.send(t)}unregisterProviderListeners(){this.provider.off(Ae.payload,this.onPayloadHandler),this.provider.off(Ae.connect,this.onConnectHandler),this.provider.off(Ae.disconnect,this.onDisconnectHandler),this.provider.off(Ae.error,this.onProviderErrorHandler),clearTimeout(this.pingTimeout)}async registerEventListeners(){let e=await xo();im(async t=>{e!==t&&(e=t,t?await this.transportOpen().catch(i=>this.logger.error(i,i==null?void 0:i.message)):(this.hasExperiencedNetworkDisruption=!0,await this.transportDisconnect(),this.transportExplicitlyClosed=!1))})}async onProviderDisconnect(){await this.subscriber.stop(),clearTimeout(this.pingTimeout),this.events.emit(ne.disconnect),this.connectionAttemptInProgress=!1,!this.transportExplicitlyClosed&&(this.reconnectTimeout||this.connectPromise||(this.reconnectTimeout=setTimeout(async()=>{clearTimeout(this.reconnectTimeout),await this.transportOpen().catch(e=>this.logger.error(e,e==null?void 0:e.message))},I.toMiliseconds(Lm))))}isInitialized(){if(!this.initialized){const{message:e}=P("NOT_INITIALIZED",this.name);throw new Error(e)}}async toEstablishConnection(){await this.confirmOnlineStateOrThrow(),!this.connected&&await this.transportOpen()}}var Hv=Object.defineProperty,Wo=Object.getOwnPropertySymbols,Jv=Object.prototype.hasOwnProperty,Gv=Object.prototype.propertyIsEnumerable,Ho=(r,e,t)=>e in r?Hv(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Jo=(r,e)=>{for(var t in e||(e={}))Jv.call(e,t)&&Ho(r,t,e[t]);if(Wo)for(var t of Wo(e))Gv.call(e,t)&&Ho(r,t,e[t]);return r};class Mt extends Sf{constructor(e,t,i,n=We,s=void 0){super(e,t,i,n),this.core=e,this.logger=t,this.name=i,this.map=new Map,this.version=Dm,this.cached=[],this.initialized=!1,this.storagePrefix=We,this.recentlyDeleted=[],this.recentlyDeletedLimit=200,this.init=async()=>{this.initialized||(this.logger.trace("Initialized"),await this.restore(),this.cached.forEach(o=>{this.getKey&&o!==null&&!de(o)?this.map.set(this.getKey(o),o):ky(o)?this.map.set(o.id,o):My(o)&&this.map.set(o.topic,o)}),this.cached=[],this.initialized=!0)},this.set=async(o,a)=>{this.isInitialized(),this.map.has(o)?await this.update(o,a):(this.logger.debug("Setting value"),this.logger.trace({type:"method",method:"set",key:o,value:a}),this.map.set(o,a),await this.persist())},this.get=o=>(this.isInitialized(),this.logger.debug("Getting value"),this.logger.trace({type:"method",method:"get",key:o}),this.getData(o)),this.getAll=o=>(this.isInitialized(),o?this.values.filter(a=>Object.keys(o).every(c=>au(a[c],o[c]))):this.values),this.update=async(o,a)=>{this.isInitialized(),this.logger.debug("Updating value"),this.logger.trace({type:"method",method:"update",key:o,update:a});const c=Jo(Jo({},this.getData(o)),a);this.map.set(o,c),await this.persist()},this.delete=async(o,a)=>{this.isInitialized(),this.map.has(o)&&(this.logger.debug("Deleting value"),this.logger.trace({type:"method",method:"delete",key:o,reason:a}),this.map.delete(o),this.addToRecentlyDeleted(o),await this.persist())},this.logger=pe(t,this.name),this.storagePrefix=n,this.getKey=s}get context(){return be(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){const t=this.map.get(e);if(!t){if(this.recentlyDeleted.includes(e)){const{message:n}=P("MISSING_OR_INVALID",`Record was recently deleted - ${this.name}: ${e}`);throw this.logger.error(n),new Error(n)}const{message:i}=P("NO_MATCHING_KEY",`${this.name}: ${e}`);throw this.logger.error(i),new Error(i)}return t}async persist(){await this.setDataStore(this.values)}async restore(){try{const e=await this.getDataStore();if(typeof e>"u"||!e.length)return;if(this.map.size){const{message:t}=P("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(t),new Error(t)}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){const{message:e}=P("NOT_INITIALIZED",this.name);throw new Error(e)}}}class Yv{constructor(e,t){this.core=e,this.logger=t,this.name=zm,this.version=Km,this.events=new aa,this.initialized=!1,this.storagePrefix=We,this.ignoredPayloadTypes=[rt],this.registeredMethods=[],this.init=async()=>{this.initialized||(await this.pairings.init(),await this.cleanup(),this.registerRelayerEvents(),this.registerExpirerEvents(),this.initialized=!0,this.logger.trace("Initialized"))},this.register=({methods:i})=>{this.isInitialized(),this.registeredMethods=[...new Set([...this.registeredMethods,...i])]},this.create=async i=>{this.isInitialized();const n=fn(),s=await this.core.crypto.setSymKey(n),o=re(I.FIVE_MINUTES),a={protocol:Al},c={topic:s,expiry:o,relay:a,active:!1,methods:i==null?void 0:i.methods},l=wo({protocol:this.core.protocol,version:this.core.version,topic:s,symKey:n,relay:a,expiryTimestamp:o,methods:i==null?void 0:i.methods});return this.events.emit(Et.create,c),this.core.expirer.set(s,o),await this.pairings.set(s,c),await this.core.relayer.subscribe(s,{transportType:i==null?void 0:i.transportType}),{topic:s,uri:l}},this.pair=async i=>{this.isInitialized();const n=this.core.eventClient.createEvent({properties:{topic:i==null?void 0:i.uri,trace:[Ve.pairing_started]}});this.isValidPair(i,n);const{topic:s,symKey:o,relay:a,expiryTimestamp:c,methods:l}=vo(i.uri);n.props.properties.topic=s,n.addTrace(Ve.pairing_uri_validation_success),n.addTrace(Ve.pairing_uri_not_expired);let u;if(this.pairings.keys.includes(s)){if(u=this.pairings.get(s),n.addTrace(Ve.existing_pairing),u.active)throw n.setError(Xe.active_pairing_already_exists),new Error(`Pairing already exists: ${s}. Please try again with a new connection URI.`);n.addTrace(Ve.pairing_not_expired)}const h=c||re(I.FIVE_MINUTES),p={topic:s,relay:a,expiry:h,active:!1,methods:l};this.core.expirer.set(s,h),await this.pairings.set(s,p),n.addTrace(Ve.store_new_pairing),i.activatePairing&&await this.activate({topic:s}),this.events.emit(Et.create,p),n.addTrace(Ve.emit_inactive_pairing),this.core.crypto.keychain.has(s)||await this.core.crypto.setSymKey(o,s),n.addTrace(Ve.subscribing_pairing_topic);try{await this.core.relayer.confirmOnlineStateOrThrow()}catch{n.setError(Xe.no_internet_connection)}try{await this.core.relayer.subscribe(s,{relay:a})}catch(d){throw n.setError(Xe.subscribe_pairing_topic_failure),d}return n.addTrace(Ve.subscribe_pairing_topic_success),p},this.activate=async({topic:i})=>{this.isInitialized();const n=re(I.FIVE_MINUTES);this.core.expirer.set(i,n),await this.pairings.update(i,{active:!0,expiry:n})},this.ping=async i=>{this.isInitialized(),await this.isValidPing(i),this.logger.warn("ping() is deprecated and will be removed in the next major release.");const{topic:n}=i;if(this.pairings.keys.includes(n)){const s=await this.sendRequest(n,"wc_pairingPing",{}),{done:o,resolve:a,reject:c}=bt();this.events.once(U("pairing_ping",s),({error:l})=>{l?c(l):a()}),await o()}},this.updateExpiry=async({topic:i,expiry:n})=>{this.isInitialized(),await this.pairings.update(i,{expiry:n})},this.updateMetadata=async({topic:i,metadata:n})=>{this.isInitialized(),await this.pairings.update(i,{peerMetadata:n})},this.getPairings=()=>(this.isInitialized(),this.pairings.values),this.disconnect=async i=>{this.isInitialized(),await this.isValidDisconnect(i);const{topic:n}=i;this.pairings.keys.includes(n)&&(await this.sendRequest(n,"wc_pairingDelete",H("USER_DISCONNECTED")),await this.deletePairing(n))},this.formatUriFromPairing=i=>{this.isInitialized();const{topic:n,relay:s,expiry:o,methods:a}=i,c=this.core.crypto.keychain.get(n);return wo({protocol:this.core.protocol,version:this.core.version,topic:n,symKey:c,relay:s,expiryTimestamp:o,methods:a})},this.sendRequest=async(i,n,s)=>{const o=It(n,s),a=await this.core.crypto.encode(i,o),c=cr[n].req;return this.core.history.set(i,o),this.core.relayer.publish(i,a,c),o.id},this.sendResult=async(i,n,s)=>{const o=bn(i,s),a=await this.core.crypto.encode(n,o),c=await this.core.history.get(n,i),l=cr[c.request.method].res;await this.core.relayer.publish(n,a,l),await this.core.history.resolve(o)},this.sendError=async(i,n,s)=>{const o=vn(i,s),a=await this.core.crypto.encode(n,o),c=await this.core.history.get(n,i),l=cr[c.request.method]?cr[c.request.method].res:cr.unregistered_method.res;await this.core.relayer.publish(n,a,l),await this.core.history.resolve(o)},this.deletePairing=async(i,n)=>{await this.core.relayer.unsubscribe(i),await Promise.all([this.pairings.delete(i,H("USER_DISCONNECTED")),this.core.crypto.deleteSymKey(i),n?Promise.resolve():this.core.expirer.del(i)])},this.cleanup=async()=>{const i=this.pairings.getAll().filter(n=>at(n.expiry));await Promise.all(i.map(n=>this.deletePairing(n.topic)))},this.onRelayEventRequest=i=>{const{topic:n,payload:s}=i;switch(s.method){case"wc_pairingPing":return this.onPairingPingRequest(n,s);case"wc_pairingDelete":return this.onPairingDeleteRequest(n,s);default:return this.onUnknownRpcMethodRequest(n,s)}},this.onRelayEventResponse=async i=>{const{topic:n,payload:s}=i,o=(await this.core.history.get(n,s.id)).request.method;switch(o){case"wc_pairingPing":return this.onPairingPingResponse(n,s);default:return this.onUnknownRpcMethodResponse(o)}},this.onPairingPingRequest=async(i,n)=>{const{id:s}=n;try{this.isValidPing({topic:i}),await this.sendResult(s,i,!0),this.events.emit(Et.ping,{id:s,topic:i})}catch(o){await this.sendError(s,i,o),this.logger.error(o)}},this.onPairingPingResponse=(i,n)=>{const{id:s}=n;setTimeout(()=>{Qe(n)?this.events.emit(U("pairing_ping",s),{}):qe(n)&&this.events.emit(U("pairing_ping",s),{error:n.error})},500)},this.onPairingDeleteRequest=async(i,n)=>{const{id:s}=n;try{this.isValidDisconnect({topic:i}),await this.deletePairing(i),this.events.emit(Et.delete,{id:s,topic:i})}catch(o){await this.sendError(s,i,o),this.logger.error(o)}},this.onUnknownRpcMethodRequest=async(i,n)=>{const{id:s,method:o}=n;try{if(this.registeredMethods.includes(o))return;const a=H("WC_METHOD_UNSUPPORTED",o);await this.sendError(s,i,a),this.logger.error(a)}catch(a){await this.sendError(s,i,a),this.logger.error(a)}},this.onUnknownRpcMethodResponse=i=>{this.registeredMethods.includes(i)||this.logger.error(H("WC_METHOD_UNSUPPORTED",i))},this.isValidPair=(i,n)=>{var s;if(!ge(i)){const{message:a}=P("MISSING_OR_INVALID",`pair() params: ${i}`);throw n.setError(Xe.malformed_pairing_uri),new Error(a)}if(!$y(i.uri)){const{message:a}=P("MISSING_OR_INVALID",`pair() uri: ${i.uri}`);throw n.setError(Xe.malformed_pairing_uri),new Error(a)}const o=vo(i==null?void 0:i.uri);if(!((s=o==null?void 0:o.relay)!=null&&s.protocol)){const{message:a}=P("MISSING_OR_INVALID","pair() uri#relay-protocol");throw n.setError(Xe.malformed_pairing_uri),new Error(a)}if(!(o!=null&&o.symKey)){const{message:a}=P("MISSING_OR_INVALID","pair() uri#symKey");throw n.setError(Xe.malformed_pairing_uri),new Error(a)}if(o!=null&&o.expiryTimestamp&&I.toMiliseconds(o==null?void 0:o.expiryTimestamp)<Date.now()){n.setError(Xe.pairing_expired);const{message:a}=P("EXPIRED","pair() URI has expired. Please try again with a new connection URI.");throw new Error(a)}},this.isValidPing=async i=>{if(!ge(i)){const{message:s}=P("MISSING_OR_INVALID",`ping() params: ${i}`);throw new Error(s)}const{topic:n}=i;await this.isValidPairingTopic(n)},this.isValidDisconnect=async i=>{if(!ge(i)){const{message:s}=P("MISSING_OR_INVALID",`disconnect() params: ${i}`);throw new Error(s)}const{topic:n}=i;await this.isValidPairingTopic(n)},this.isValidPairingTopic=async i=>{if(!ee(i,!1)){const{message:n}=P("MISSING_OR_INVALID",`pairing topic should be a string: ${i}`);throw new Error(n)}if(!this.pairings.keys.includes(i)){const{message:n}=P("NO_MATCHING_KEY",`pairing topic doesn't exist: ${i}`);throw new Error(n)}if(at(this.pairings.get(i).expiry)){await this.deletePairing(i);const{message:n}=P("EXPIRED",`pairing topic: ${i}`);throw new Error(n)}},this.core=e,this.logger=pe(t,this.name),this.pairings=new Mt(this.core,this.logger,this.name,this.storagePrefix)}get context(){return be(this.logger)}isInitialized(){if(!this.initialized){const{message:e}=P("NOT_INITIALIZED",this.name);throw new Error(e)}}registerRelayerEvents(){this.core.relayer.on(ne.message,async e=>{const{topic:t,message:i,transportType:n}=e;if(!this.pairings.keys.includes(t)||n===G.link_mode||this.ignoredPayloadTypes.includes(this.core.crypto.getPayloadType(i)))return;const s=await this.core.crypto.decode(t,i);try{_n(s)?(this.core.history.set(t,s),this.onRelayEventRequest({topic:t,payload:s})):ni(s)&&(await this.core.history.resolve(s),await this.onRelayEventResponse({topic:t,payload:s}),this.core.history.delete(t,s.id))}catch(o){this.logger.error(o)}})}registerExpirerEvents(){this.core.expirer.on(Te.expired,async e=>{const{topic:t}=Qc(e.target);t&&this.pairings.keys.includes(t)&&(await this.deletePairing(t,!0),this.events.emit(Et.expire,{topic:t}))})}}class Qv extends wf{constructor(e,t){super(e,t),this.core=e,this.logger=t,this.records=new Map,this.events=new He.EventEmitter,this.name=jm,this.version=Vm,this.cached=[],this.initialized=!1,this.storagePrefix=We,this.init=async()=>{this.initialized||(this.logger.trace("Initialized"),await this.restore(),this.cached.forEach(i=>this.records.set(i.id,i)),this.cached=[],this.registerEventListeners(),this.initialized=!0)},this.set=(i,n,s)=>{if(this.isInitialized(),this.logger.debug("Setting JSON-RPC request history record"),this.logger.trace({type:"method",method:"set",topic:i,request:n,chainId:s}),this.records.has(n.id))return;const o={id:n.id,topic:i,request:{method:n.method,params:n.params||null},chainId:s,expiry:re(I.THIRTY_DAYS)};this.records.set(o.id,o),this.persist(),this.events.emit(Me.created,o)},this.resolve=async i=>{if(this.isInitialized(),this.logger.debug("Updating JSON-RPC response history record"),this.logger.trace({type:"method",method:"update",response:i}),!this.records.has(i.id))return;const n=await this.getRecord(i.id);typeof n.response>"u"&&(n.response=qe(i)?{error:i.error}:{result:i.result},this.records.set(n.id,n),this.persist(),this.events.emit(Me.updated,n))},this.get=async(i,n)=>(this.isInitialized(),this.logger.debug("Getting record"),this.logger.trace({type:"method",method:"get",topic:i,id:n}),await this.getRecord(n)),this.delete=(i,n)=>{this.isInitialized(),this.logger.debug("Deleting record"),this.logger.trace({type:"method",method:"delete",id:n}),this.values.forEach(s=>{if(s.topic===i){if(typeof n<"u"&&s.id!==n)return;this.records.delete(s.id),this.events.emit(Me.deleted,s)}}),this.persist()},this.exists=async(i,n)=>(this.isInitialized(),this.records.has(n)?(await this.getRecord(n)).topic===i:!1),this.on=(i,n)=>{this.events.on(i,n)},this.once=(i,n)=>{this.events.once(i,n)},this.off=(i,n)=>{this.events.off(i,n)},this.removeListener=(i,n)=>{this.events.removeListener(i,n)},this.logger=pe(t,this.name)}get context(){return be(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(){const e=[];return this.values.forEach(t=>{if(typeof t.response<"u")return;const i={topic:t.topic,request:It(t.request.method,t.request.params,t.id),chainId:t.chainId};return e.push(i)}),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();const t=this.records.get(e);if(!t){const{message:i}=P("NO_MATCHING_KEY",`${this.name}: ${e}`);throw new Error(i)}return t}async persist(){await this.setJsonRpcRecords(this.values),this.events.emit(Me.sync)}async restore(){try{const e=await this.getJsonRpcRecords();if(typeof e>"u"||!e.length)return;if(this.records.size){const{message:t}=P("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(t),new Error(t)}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(Me.created,e=>{const t=Me.created;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,record:e})}),this.events.on(Me.updated,e=>{const t=Me.updated;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,record:e})}),this.events.on(Me.deleted,e=>{const t=Me.deleted;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,record:e})}),this.core.heartbeat.on(Zt.pulse,()=>{this.cleanup()})}cleanup(){try{this.isInitialized();let e=!1;this.records.forEach(t=>{I.toMiliseconds(t.expiry||0)-Date.now()<=0&&(this.logger.info(`Deleting expired history log: ${t.id}`),this.records.delete(t.id),this.events.emit(Me.deleted,t,!1),e=!0)}),e&&this.persist()}catch(e){this.logger.warn(e)}}isInitialized(){if(!this.initialized){const{message:e}=P("NOT_INITIALIZED",this.name);throw new Error(e)}}}class Xv extends xf{constructor(e,t){super(e,t),this.core=e,this.logger=t,this.expirations=new Map,this.events=new He.EventEmitter,this.name=Wm,this.version=Hm,this.cached=[],this.initialized=!1,this.storagePrefix=We,this.init=async()=>{this.initialized||(this.logger.trace("Initialized"),await this.restore(),this.cached.forEach(i=>this.expirations.set(i.target,i)),this.cached=[],this.registerEventListeners(),this.initialized=!0)},this.has=i=>{try{const n=this.formatTarget(i);return typeof this.getExpiration(n)<"u"}catch{return!1}},this.set=(i,n)=>{this.isInitialized();const s=this.formatTarget(i),o={target:s,expiry:n};this.expirations.set(s,o),this.checkExpiry(s,o),this.events.emit(Te.created,{target:s,expiration:o})},this.get=i=>{this.isInitialized();const n=this.formatTarget(i);return this.getExpiration(n)},this.del=i=>{if(this.isInitialized(),this.has(i)){const n=this.formatTarget(i),s=this.getExpiration(n);this.expirations.delete(n),this.events.emit(Te.deleted,{target:n,expiration:s})}},this.on=(i,n)=>{this.events.on(i,n)},this.once=(i,n)=>{this.events.once(i,n)},this.off=(i,n)=>{this.events.off(i,n)},this.removeListener=(i,n)=>{this.events.removeListener(i,n)},this.logger=pe(t,this.name)}get context(){return be(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 pp(e);if(typeof e=="number")return gp(e);const{message:t}=P("UNKNOWN_TYPE",`Target type: ${typeof e}`);throw new 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(Te.sync)}async restore(){try{const e=await this.getExpirations();if(typeof e>"u"||!e.length)return;if(this.expirations.size){const{message:t}=P("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(t),new Error(t)}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){const t=this.expirations.get(e);if(!t){const{message:i}=P("NO_MATCHING_KEY",`${this.name}: ${e}`);throw this.logger.warn(i),new Error(i)}return t}checkExpiry(e,t){const{expiry:i}=t;I.toMiliseconds(i)-Date.now()<=0&&this.expire(e,t)}expire(e,t){this.expirations.delete(e),this.events.emit(Te.expired,{target:e,expiration:t})}checkExpirations(){this.core.relayer.connected&&this.expirations.forEach((e,t)=>this.checkExpiry(t,e))}registerEventListeners(){this.core.heartbeat.on(Zt.pulse,()=>this.checkExpirations()),this.events.on(Te.created,e=>{const t=Te.created;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,data:e}),this.persist()}),this.events.on(Te.expired,e=>{const t=Te.expired;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,data:e}),this.persist()}),this.events.on(Te.deleted,e=>{const t=Te.deleted;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,data:e}),this.persist()})}isInitialized(){if(!this.initialized){const{message:e}=P("NOT_INITIALIZED",this.name);throw new Error(e)}}}class Zv extends Pf{constructor(e,t,i){super(e,t,i),this.core=e,this.logger=t,this.store=i,this.name=Jm,this.verifyUrlV3=Ym,this.storagePrefix=We,this.version=Pl,this.init=async()=>{var n;this.isDevEnv||(this.publicKey=await this.store.getItem(this.storeKey),this.publicKey&&I.toMiliseconds((n=this.publicKey)==null?void 0:n.expiresAt)<Date.now()&&(this.logger.debug("verify v2 public key expired"),await this.removePublicKey()))},this.register=async n=>{if(!Ar()||this.isDevEnv)return;const s=window.location.origin,{id:o,decryptedId:a}=n,c=`${this.verifyUrlV3}/attestation?projectId=${this.core.projectId}&origin=${s}&id=${o}&decryptedId=${a}`;try{const l=Il(),u=this.startAbortTimer(I.ONE_SECOND*5),h=await new Promise((p,d)=>{const f=()=>{window.removeEventListener("message",y),l.body.removeChild(g),d("attestation aborted")};this.abortController.signal.addEventListener("abort",f);const g=l.createElement("iframe");g.src=c,g.style.display="none",g.addEventListener("error",f,{signal:this.abortController.signal});const y=m=>{if(m.data&&typeof m.data=="string")try{const v=JSON.parse(m.data);if(v.type==="verify_attestation"){if(Hi(v.attestation).payload.id!==o)return;clearInterval(u),l.body.removeChild(g),this.abortController.signal.removeEventListener("abort",f),window.removeEventListener("message",y),p(v.attestation===null?"":v.attestation)}}catch(v){this.logger.warn(v)}};l.body.appendChild(g),window.addEventListener("message",y,{signal:this.abortController.signal})});return this.logger.debug("jwt attestation",h),h}catch(l){this.logger.warn(l)}return""},this.resolve=async n=>{if(this.isDevEnv)return"";const{attestationId:s,hash:o,encryptedId:a}=n;if(s===""){this.logger.debug("resolve: attestationId is empty, skipping");return}if(s){if(Hi(s).payload.id!==a)return;const l=await this.isValidJwtAttestation(s);if(l){if(!l.isVerified){this.logger.warn("resolve: jwt attestation: origin url not verified");return}return l}}if(!o)return;const c=this.getVerifyUrl(n==null?void 0:n.verifyUrl);return this.fetchAttestation(o,c)},this.fetchAttestation=async(n,s)=>{this.logger.debug(`resolving attestation: ${n} from url: ${s}`);const o=this.startAbortTimer(I.ONE_SECOND*5),a=await fetch(`${s}/attestation/${n}?v2Supported=true`,{signal:this.abortController.signal});return clearTimeout(o),a.status===200?await a.json():void 0},this.getVerifyUrl=n=>{let s=n||mr;return Qm.includes(s)||(this.logger.info(`verify url: ${s}, not included in trusted list, assigning default: ${mr}`),s=mr),s},this.fetchPublicKey=async()=>{try{this.logger.debug(`fetching public key from: ${this.verifyUrlV3}`);const n=this.startAbortTimer(I.FIVE_SECONDS),s=await fetch(`${this.verifyUrlV3}/public-key`,{signal:this.abortController.signal});return clearTimeout(n),await s.json()}catch(n){this.logger.warn(n)}},this.persistPublicKey=async n=>{this.logger.debug("persisting public key to local storage",n),await this.store.setItem(this.storeKey,n),this.publicKey=n},this.removePublicKey=async()=>{this.logger.debug("removing verify v2 public key from storage"),await this.store.removeItem(this.storeKey),this.publicKey=void 0},this.isValidJwtAttestation=async n=>{const s=await this.getPublicKey();try{if(s)return this.validateAttestation(n,s)}catch(a){this.logger.error(a),this.logger.warn("error validating attestation")}const o=await this.fetchAndPersistPublicKey();try{if(o)return this.validateAttestation(n,o)}catch(a){this.logger.error(a),this.logger.warn("error validating attestation")}},this.getPublicKey=async()=>this.publicKey?this.publicKey:await this.fetchAndPersistPublicKey(),this.fetchAndPersistPublicKey=async()=>{if(this.fetchPromise)return await this.fetchPromise,this.publicKey;this.fetchPromise=new Promise(async s=>{const o=await this.fetchPublicKey();o&&(await this.persistPublicKey(o),s(o))});const n=await this.fetchPromise;return this.fetchPromise=void 0,n},this.validateAttestation=(n,s)=>{const o=_y(n,s.publicKey),a={hasExpired:I.toMiliseconds(o.exp)<Date.now(),payload:o};if(a.hasExpired)throw this.logger.warn("resolve: jwt attestation expired"),new Error("JWT attestation expired");return{origin:a.payload.origin,isScam:a.payload.isScam,isVerified:a.payload.isVerified}},this.logger=pe(t,this.name),this.abortController=new AbortController,this.isDevEnv=Wn(),this.init()}get storeKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//verify:public:key"}get context(){return be(this.logger)}startAbortTimer(e){return this.abortController=new AbortController,setTimeout(()=>this.abortController.abort(),I.toMiliseconds(e))}}class ew extends Af{constructor(e,t){super(e,t),this.projectId=e,this.logger=t,this.context=Xm,this.registerDeviceToken=async i=>{const{clientId:n,token:s,notificationType:o,enableEncrypted:a=!1}=i,c=`${Zm}/${this.projectId}/clients`;await fetch(c,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({client_id:n,type:o,token:s,always_raw:a})})},this.logger=pe(t,this.context)}}var tw=Object.defineProperty,Go=Object.getOwnPropertySymbols,rw=Object.prototype.hasOwnProperty,iw=Object.prototype.propertyIsEnumerable,Yo=(r,e,t)=>e in r?tw(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,hr=(r,e)=>{for(var t in e||(e={}))rw.call(e,t)&&Yo(r,t,e[t]);if(Go)for(var t of Go(e))iw.call(e,t)&&Yo(r,t,e[t]);return r};class nw extends Tf{constructor(e,t,i=!0){super(e,t,i),this.core=e,this.logger=t,this.context=t0,this.storagePrefix=We,this.storageVersion=e0,this.events=new Map,this.shouldPersist=!1,this.init=async()=>{if(!Wn())try{const n={eventId:js(),timestamp:Date.now(),domain:this.getAppDomain(),props:{event:"INIT",type:"",properties:{client_id:await this.core.crypto.getClientId(),user_agent:Hc(this.core.relayer.protocol,this.core.relayer.version,gn)}}};await this.sendEvent([n])}catch(n){this.logger.warn(n)}},this.createEvent=n=>{const{event:s="ERROR",type:o="",properties:{topic:a,trace:c}}=n,l=js(),u=this.core.projectId||"",h=Date.now(),p=hr({eventId:l,timestamp:h,props:{event:s,type:o,properties:{topic:a,trace:c}},bundleId:u,domain:this.getAppDomain()},this.setMethods(l));return this.telemetryEnabled&&(this.events.set(l,p),this.shouldPersist=!0),p},this.getEvent=n=>{const{eventId:s,topic:o}=n;if(s)return this.events.get(s);const a=Array.from(this.events.values()).find(c=>c.props.properties.topic===o);if(a)return hr(hr({},a),this.setMethods(a.eventId))},this.deleteEvent=n=>{const{eventId:s}=n;this.events.delete(s),this.shouldPersist=!0},this.setEventListeners=()=>{this.core.heartbeat.on(Zt.pulse,async()=>{this.shouldPersist&&await this.persist(),this.events.forEach(n=>{I.fromMiliseconds(Date.now())-I.fromMiliseconds(n.timestamp)>r0&&(this.events.delete(n.eventId),this.shouldPersist=!0)})})},this.setMethods=n=>({addTrace:s=>this.addTrace(n,s),setError:s=>this.setError(n,s)}),this.addTrace=(n,s)=>{const o=this.events.get(n);o&&(o.props.properties.trace.push(s),this.events.set(n,o),this.shouldPersist=!0)},this.setError=(n,s)=>{const o=this.events.get(n);o&&(o.props.type=s,o.timestamp=Date.now(),this.events.set(n,o),this.shouldPersist=!0)},this.persist=async()=>{await this.core.storage.setItem(this.storageKey,Array.from(this.events.values())),this.shouldPersist=!1},this.restore=async()=>{try{const n=await this.core.storage.getItem(this.storageKey)||[];if(!n.length)return;n.forEach(s=>{this.events.set(s.eventId,hr(hr({},s),this.setMethods(s.eventId)))})}catch(n){this.logger.warn(n)}},this.submit=async()=>{if(!this.telemetryEnabled||this.events.size===0)return;const n=[];for(const[s,o]of this.events)o.props.type&&n.push(o);if(n.length!==0)try{if((await this.sendEvent(n)).ok)for(const s of n)this.events.delete(s.eventId),this.shouldPersist=!0}catch(s){this.logger.warn(s)}},this.sendEvent=async n=>{const s=this.getAppDomain()?"":"&sp=desktop";return await fetch(`${i0}?projectId=${this.core.projectId}&st=events_sdk&sv=js-${gn}${s}`,{method:"POST",body:JSON.stringify(n)})},this.getAppDomain=()=>Wc().url,this.logger=pe(t,this.context),this.telemetryEnabled=i,i?this.restore().then(async()=>{await this.submit(),this.setEventListeners()}):this.persist()}get storageKey(){return this.storagePrefix+this.storageVersion+this.core.customStoragePrefix+"//"+this.context}}var sw=Object.defineProperty,Qo=Object.getOwnPropertySymbols,ow=Object.prototype.hasOwnProperty,aw=Object.prototype.propertyIsEnumerable,Xo=(r,e,t)=>e in r?sw(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Zo=(r,e)=>{for(var t in e||(e={}))ow.call(e,t)&&Xo(r,t,e[t]);if(Qo)for(var t of Qo(e))aw.call(e,t)&&Xo(r,t,e[t]);return r};let cw=class Ul extends vf{constructor(e){var t;super(e),this.protocol=xl,this.version=Pl,this.name=pn,this.events=new He.EventEmitter,this.initialized=!1,this.on=(o,a)=>this.events.on(o,a),this.once=(o,a)=>this.events.once(o,a),this.off=(o,a)=>this.events.off(o,a),this.removeListener=(o,a)=>this.events.removeListener(o,a),this.dispatchEnvelope=({topic:o,message:a,sessionExists:c})=>{if(!o||!a)return;const l={topic:o,message:a,publishedAt:Date.now(),transportType:G.link_mode};this.relayer.onLinkMessageEvent(l,{sessionExists:c})},this.projectId=e==null?void 0:e.projectId,this.relayUrl=(e==null?void 0:e.relayUrl)||Tl,this.customStoragePrefix=e!=null&&e.customStoragePrefix?`:${e.customStoragePrefix}`:"";const i=wn({level:typeof(e==null?void 0:e.logger)=="string"&&e.logger?e.logger:Im.logger,name:pn}),{logger:n,chunkLoggerController:s}=iu({opts:i,maxSizeInBytes:e==null?void 0:e.maxLogBlobSizeInBytes,loggerOverride:e==null?void 0:e.logger});this.logChunkController=s,(t=this.logChunkController)!=null&&t.downloadLogsBlobInBrowser&&(window.downloadLogsBlobInBrowser=async()=>{var o,a;(o=this.logChunkController)!=null&&o.downloadLogsBlobInBrowser&&((a=this.logChunkController)==null||a.downloadLogsBlobInBrowser({clientId:await this.crypto.getClientId()}))}),this.logger=pe(n,this.name),this.heartbeat=new Un,this.crypto=new Tv(this,this.logger,e==null?void 0:e.keychain),this.history=new Qv(this,this.logger),this.expirer=new Xv(this,this.logger),this.storage=e!=null&&e.storage?e.storage:new nu(Zo(Zo({},xm),e==null?void 0:e.storageOptions)),this.relayer=new Wv({core:this,logger:this.logger,relayUrl:this.relayUrl,projectId:this.projectId}),this.pairing=new Yv(this,this.logger),this.verify=new Zv(this,this.logger,this.storage),this.echoClient=new ew(this.projectId||"",this.logger),this.linkModeSupportedApps=[],this.eventClient=new nw(this,this.logger,e==null?void 0:e.telemetryEnabled)}static async init(e){const t=new Ul(e);await t.initialize();const i=await t.crypto.getClientId();return await t.storage.setItem(Fm,i),t}get context(){return be(this.logger)}async start(){this.initialized||await this.initialize()}async getLogsBlob(){var e;return(e=this.logChunkController)==null?void 0:e.logsToBlob({clientId:await this.crypto.getClientId()})}async addLinkModeSupportedApp(e){this.linkModeSupportedApps.includes(e)||(this.linkModeSupportedApps.push(e),await this.storage.setItem(Co,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(Co)||[],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}}};const lw=cw;class uw{constructor(e){this.opts=e,this.protocol="wc",this.version=2}}class hw{constructor(e){this.client=e}}const Bl="wc",zl=2,Kl="client",es=`${Bl}@${zl}:${Kl}:`,ji={name:Kl,logger:"error"},ea="WALLETCONNECT_DEEPLINK_CHOICE",dw="proposal",fw="Proposal expired",pw="session",Ft=I.SEVEN_DAYS,gw="engine",ie={wc_sessionPropose:{req:{ttl:I.FIVE_MINUTES,prompt:!0,tag:1100},res:{ttl:I.FIVE_MINUTES,prompt:!1,tag:1101},reject:{ttl:I.FIVE_MINUTES,prompt:!1,tag:1120},autoReject:{ttl:I.FIVE_MINUTES,prompt:!1,tag:1121}},wc_sessionSettle:{req:{ttl:I.FIVE_MINUTES,prompt:!1,tag:1102},res:{ttl:I.FIVE_MINUTES,prompt:!1,tag:1103}},wc_sessionUpdate:{req:{ttl:I.ONE_DAY,prompt:!1,tag:1104},res:{ttl:I.ONE_DAY,prompt:!1,tag:1105}},wc_sessionExtend:{req:{ttl:I.ONE_DAY,prompt:!1,tag:1106},res:{ttl:I.ONE_DAY,prompt:!1,tag:1107}},wc_sessionRequest:{req:{ttl:I.FIVE_MINUTES,prompt:!0,tag:1108},res:{ttl:I.FIVE_MINUTES,prompt:!1,tag:1109}},wc_sessionEvent:{req:{ttl:I.FIVE_MINUTES,prompt:!0,tag:1110},res:{ttl:I.FIVE_MINUTES,prompt:!1,tag:1111}},wc_sessionDelete:{req:{ttl:I.ONE_DAY,prompt:!1,tag:1112},res:{ttl:I.ONE_DAY,prompt:!1,tag:1113}},wc_sessionPing:{req:{ttl:I.ONE_DAY,prompt:!1,tag:1114},res:{ttl:I.ONE_DAY,prompt:!1,tag:1115}},wc_sessionAuthenticate:{req:{ttl:I.ONE_HOUR,prompt:!0,tag:1116},res:{ttl:I.ONE_HOUR,prompt:!1,tag:1117},reject:{ttl:I.FIVE_MINUTES,prompt:!1,tag:1118},autoReject:{ttl:I.FIVE_MINUTES,prompt:!1,tag:1119}}},Vi={min:I.FIVE_MINUTES,max:I.SEVEN_DAYS},je={idle:"IDLE",active:"ACTIVE"},yw="request",mw=["wc_sessionPropose","wc_sessionRequest","wc_authRequest","wc_sessionAuthenticate"],vw="wc",ww="auth",_w="authKeys",bw="pairingTopics",Ew="requests",_i=`${vw}@${1.5}:${ww}:`,Vr=`${_i}:PUB_KEY`;var Sw=Object.defineProperty,Iw=Object.defineProperties,xw=Object.getOwnPropertyDescriptors,ta=Object.getOwnPropertySymbols,Pw=Object.prototype.hasOwnProperty,Aw=Object.prototype.propertyIsEnumerable,ra=(r,e,t)=>e in r?Sw(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Z=(r,e)=>{for(var t in e||(e={}))Pw.call(e,t)&&ra(r,t,e[t]);if(ta)for(var t of ta(e))Aw.call(e,t)&&ra(r,t,e[t]);return r},De=(r,e)=>Iw(r,xw(e));class Tw extends hw{constructor(e){super(e),this.name=gw,this.events=new aa,this.initialized=!1,this.requestQueue={state:je.idle,queue:[]},this.sessionRequestQueue={state:je.idle,queue:[]},this.requestQueueDelay=I.ONE_SECOND,this.expectedPairingMethodMap=new Map,this.recentlyDeletedMap=new Map,this.recentlyDeletedLimit=200,this.relayMessageCache=[],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(ie)}),this.initialized=!0,setTimeout(()=>{this.sessionRequestQueue.queue=this.getPendingSessionRequests(),this.processSessionRequestQueue()},I.toMiliseconds(this.requestQueueDelay)))},this.connect=async t=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();const i=De(Z({},t),{requiredNamespaces:t.requiredNamespaces||{},optionalNamespaces:t.optionalNamespaces||{}});await this.isValidConnect(i);const{pairingTopic:n,requiredNamespaces:s,optionalNamespaces:o,sessionProperties:a,relays:c}=i;let l=n,u,h=!1;try{if(l){const w=this.client.core.pairing.pairings.get(l);this.client.logger.warn("connect() with existing pairing topic is deprecated and will be removed in the next major release."),h=w.active}}catch(w){throw this.client.logger.error(`connect() -> pairing.get(${l}) failed`),w}if(!l||!h){const{topic:w,uri:b}=await this.client.core.pairing.create();l=w,u=b}if(!l){const{message:w}=P("NO_MATCHING_KEY",`connect() pairing topic: ${l}`);throw new Error(w)}const p=await this.client.core.crypto.generateKeyPair(),d=ie.wc_sessionPropose.req.ttl||I.FIVE_MINUTES,f=re(d),g=Z({requiredNamespaces:s,optionalNamespaces:o,relays:c??[{protocol:Al}],proposer:{publicKey:p,metadata:this.client.metadata},expiryTimestamp:f,pairingTopic:l},a&&{sessionProperties:a}),{reject:y,resolve:m,done:v}=bt(d,fw);this.events.once(U("session_connect"),async({error:w,session:b})=>{if(w)y(w);else if(b){b.self.publicKey=p;const E=De(Z({},b),{pairingTopic:g.pairingTopic,requiredNamespaces:g.requiredNamespaces,optionalNamespaces:g.optionalNamespaces,transportType:G.relay});await this.client.session.set(b.topic,E),await this.setExpiry(b.topic,b.expiry),l&&await this.client.core.pairing.updateMetadata({topic:l,metadata:b.peer.metadata}),this.cleanupDuplicatePairings(E),m(E)}});const _=await this.sendRequest({topic:l,method:"wc_sessionPropose",params:g,throwOnFailedPublish:!0});return await this.setProposal(_,Z({id:_},g)),{uri:u,approval:v}},this.pair=async t=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{return await this.client.core.pairing.pair(t)}catch(i){throw this.client.logger.error("pair() failed"),i}},this.approve=async t=>{var i,n,s;const o=this.client.core.eventClient.createEvent({properties:{topic:(i=t==null?void 0:t.id)==null?void 0:i.toString(),trace:[Le.session_approve_started]}});try{this.isInitialized(),await this.confirmOnlineStateOrThrow()}catch(x){throw o.setError(wt.no_internet_connection),x}try{await this.isValidProposalId(t==null?void 0:t.id)}catch(x){throw this.client.logger.error(`approve() -> proposal.get(${t==null?void 0:t.id}) failed`),o.setError(wt.proposal_not_found),x}try{await this.isValidApprove(t)}catch(x){throw this.client.logger.error("approve() -> isValidApprove() failed"),o.setError(wt.session_approve_namespace_validation_failure),x}const{id:a,relayProtocol:c,namespaces:l,sessionProperties:u,sessionConfig:h}=t,p=this.client.proposal.get(a);this.client.core.eventClient.deleteEvent({eventId:o.eventId});const{pairingTopic:d,proposer:f,requiredNamespaces:g,optionalNamespaces:y}=p;let m=(n=this.client.core.eventClient)==null?void 0:n.getEvent({topic:d});m||(m=(s=this.client.core.eventClient)==null?void 0:s.createEvent({type:Le.session_approve_started,properties:{topic:d,trace:[Le.session_approve_started,Le.session_namespaces_validation_success]}}));const v=await this.client.core.crypto.generateKeyPair(),_=f.publicKey,w=await this.client.core.crypto.generateSharedKey(v,_),b=Z(Z({relay:{protocol:c??"irn"},namespaces:l,controller:{publicKey:v,metadata:this.client.metadata},expiry:re(Ft)},u&&{sessionProperties:u}),h&&{sessionConfig:h}),E=G.relay;m.addTrace(Le.subscribing_session_topic);try{await this.client.core.relayer.subscribe(w,{transportType:E})}catch(x){throw m.setError(wt.subscribe_session_topic_failure),x}m.addTrace(Le.subscribe_session_topic_success);const S=De(Z({},b),{topic:w,requiredNamespaces:g,optionalNamespaces:y,pairingTopic:d,acknowledged:!1,self:b.controller,peer:{publicKey:f.publicKey,metadata:f.metadata},controller:v,transportType:G.relay});await this.client.session.set(w,S),m.addTrace(Le.store_session);try{m.addTrace(Le.publishing_session_settle),await this.sendRequest({topic:w,method:"wc_sessionSettle",params:b,throwOnFailedPublish:!0}).catch(x=>{throw m==null||m.setError(wt.session_settle_publish_failure),x}),m.addTrace(Le.session_settle_publish_success),m.addTrace(Le.publishing_session_approve),await this.sendResult({id:a,topic:d,result:{relay:{protocol:c??"irn"},responderPublicKey:v},throwOnFailedPublish:!0}).catch(x=>{throw m==null||m.setError(wt.session_approve_publish_failure),x}),m.addTrace(Le.session_approve_publish_success)}catch(x){throw this.client.logger.error(x),this.client.session.delete(w,H("USER_DISCONNECTED")),await this.client.core.relayer.unsubscribe(w),x}return this.client.core.eventClient.deleteEvent({eventId:m.eventId}),await this.client.core.pairing.updateMetadata({topic:d,metadata:f.metadata}),await this.client.proposal.delete(a,H("USER_DISCONNECTED")),await this.client.core.pairing.activate({topic:d}),await this.setExpiry(w,re(Ft)),{topic:w,acknowledged:()=>Promise.resolve(this.client.session.get(w))}},this.reject=async t=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{await this.isValidReject(t)}catch(o){throw this.client.logger.error("reject() -> isValidReject() failed"),o}const{id:i,reason:n}=t;let s;try{s=this.client.proposal.get(i).pairingTopic}catch(o){throw this.client.logger.error(`reject() -> proposal.get(${i}) failed`),o}s&&(await this.sendError({id:i,topic:s,error:n,rpcOpts:ie.wc_sessionPropose.reject}),await this.client.proposal.delete(i,H("USER_DISCONNECTED")))},this.update=async t=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{await this.isValidUpdate(t)}catch(h){throw this.client.logger.error("update() -> isValidUpdate() failed"),h}const{topic:i,namespaces:n}=t,{done:s,resolve:o,reject:a}=bt(),c=vt(),l=xt().toString(),u=this.client.session.get(i).namespaces;return this.events.once(U("session_update",c),({error:h})=>{h?a(h):o()}),await this.client.session.update(i,{namespaces:n}),await this.sendRequest({topic:i,method:"wc_sessionUpdate",params:{namespaces:n},throwOnFailedPublish:!0,clientRpcId:c,relayRpcId:l}).catch(h=>{this.client.logger.error(h),this.client.session.update(i,{namespaces:u}),a(h)}),{acknowledged:s}},this.extend=async t=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{await this.isValidExtend(t)}catch(c){throw this.client.logger.error("extend() -> isValidExtend() failed"),c}const{topic:i}=t,n=vt(),{done:s,resolve:o,reject:a}=bt();return this.events.once(U("session_extend",n),({error:c})=>{c?a(c):o()}),await this.setExpiry(i,re(Ft)),this.sendRequest({topic:i,method:"wc_sessionExtend",params:{},clientRpcId:n,throwOnFailedPublish:!0}).catch(c=>{a(c)}),{acknowledged:s}},this.request=async t=>{this.isInitialized();try{await this.isValidRequest(t)}catch(f){throw this.client.logger.error("request() -> isValidRequest() failed"),f}const{chainId:i,request:n,topic:s,expiry:o=ie.wc_sessionRequest.req.ttl}=t,a=this.client.session.get(s);(a==null?void 0:a.transportType)===G.relay&&await this.confirmOnlineStateOrThrow();const c=vt(),l=xt().toString(),{done:u,resolve:h,reject:p}=bt(o,"Request expired. Please try again.");this.events.once(U("session_request",c),({error:f,result:g})=>{f?p(f):h(g)});const d=this.getAppLinkIfEnabled(a.peer.metadata,a.transportType);return d?(await this.sendRequest({clientRpcId:c,relayRpcId:l,topic:s,method:"wc_sessionRequest",params:{request:De(Z({},n),{expiryTimestamp:re(o)}),chainId:i},expiry:o,throwOnFailedPublish:!0,appLink:d}).catch(f=>p(f)),this.client.events.emit("session_request_sent",{topic:s,request:n,chainId:i,id:c}),await u()):await Promise.all([new Promise(async f=>{await this.sendRequest({clientRpcId:c,relayRpcId:l,topic:s,method:"wc_sessionRequest",params:{request:De(Z({},n),{expiryTimestamp:re(o)}),chainId:i},expiry:o,throwOnFailedPublish:!0}).catch(g=>p(g)),this.client.events.emit("session_request_sent",{topic:s,request:n,chainId:i,id:c}),f()}),new Promise(async f=>{var g;if(!((g=a.sessionConfig)!=null&&g.disableDeepLink)){const y=await _p(this.client.core.storage,ea);await mp({id:c,topic:s,wcDeepLink:y})}f()}),u()]).then(f=>f[2])},this.respond=async t=>{this.isInitialized(),await this.isValidRespond(t);const{topic:i,response:n}=t,{id:s}=n,o=this.client.session.get(i);o.transportType===G.relay&&await this.confirmOnlineStateOrThrow();const a=this.getAppLinkIfEnabled(o.peer.metadata,o.transportType);Qe(n)?await this.sendResult({id:s,topic:i,result:n.result,throwOnFailedPublish:!0,appLink:a}):qe(n)&&await this.sendError({id:s,topic:i,error:n.error,appLink:a}),this.cleanupAfterResponse(t)},this.ping=async t=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{await this.isValidPing(t)}catch(n){throw this.client.logger.error("ping() -> isValidPing() failed"),n}const{topic:i}=t;if(this.client.session.keys.includes(i)){const n=vt(),s=xt().toString(),{done:o,resolve:a,reject:c}=bt();this.events.once(U("session_ping",n),({error:l})=>{l?c(l):a()}),await Promise.all([this.sendRequest({topic:i,method:"wc_sessionPing",params:{},throwOnFailedPublish:!0,clientRpcId:n,relayRpcId:s}),o()])}else this.client.core.pairing.pairings.keys.includes(i)&&(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:i}))},this.emit=async t=>{this.isInitialized(),await this.confirmOnlineStateOrThrow(),await this.isValidEmit(t);const{topic:i,event:n,chainId:s}=t,o=xt().toString(),a=vt();await this.sendRequest({topic:i,method:"wc_sessionEvent",params:{event:n,chainId:s},throwOnFailedPublish:!0,relayRpcId:o,clientRpcId:a})},this.disconnect=async t=>{this.isInitialized(),await this.confirmOnlineStateOrThrow(),await this.isValidDisconnect(t);const{topic:i}=t;if(this.client.session.keys.includes(i))await this.sendRequest({topic:i,method:"wc_sessionDelete",params:H("USER_DISCONNECTED"),throwOnFailedPublish:!0}),await this.deleteSession({topic:i,emitEvent:!1});else if(this.client.core.pairing.pairings.keys.includes(i))await this.client.core.pairing.disconnect({topic:i});else{const{message:n}=P("MISMATCHED_TOPIC",`Session or pairing topic not found: ${i}`);throw new Error(n)}},this.find=t=>(this.isInitialized(),this.client.session.getAll().filter(i=>Ny(i,t))),this.getPendingSessionRequests=()=>this.client.pendingRequest.getAll(),this.authenticate=async(t,i)=>{var n;this.isInitialized(),this.isValidAuthenticate(t);const s=i&&this.client.core.linkModeSupportedApps.includes(i)&&((n=this.client.metadata.redirect)==null?void 0:n.linkMode),o=s?G.link_mode:G.relay;o===G.relay&&await this.confirmOnlineStateOrThrow();const{chains:a,statement:c="",uri:l,domain:u,nonce:h,type:p,exp:d,nbf:f,methods:g=[],expiry:y}=t,m=[...t.resources||[]],{topic:v,uri:_}=await this.client.core.pairing.create({methods:["wc_sessionAuthenticate"],transportType:o});this.client.logger.info({message:"Generated new pairing",pairing:{topic:v,uri:_}});const w=await this.client.core.crypto.generateKeyPair(),b=jr(w);if(await Promise.all([this.client.auth.authKeys.set(Vr,{responseTopic:b,publicKey:w}),this.client.auth.pairingTopics.set(b,{topic:b,pairingTopic:v})]),await this.client.core.relayer.subscribe(b,{transportType:o}),this.client.logger.info(`sending request to new pairing topic: ${v}`),g.length>0){const{namespace:M}=zr(a[0]);let A=ug(M,"request",g);Kr(m)&&(A=dg(A,m.pop())),m.push(A)}const E=y&&y>ie.wc_sessionAuthenticate.req.ttl?y:ie.wc_sessionAuthenticate.req.ttl,S={authPayload:{type:p??"caip122",chains:a,statement:c,aud:l,domain:u,version:"1",nonce:h,iat:new Date().toISOString(),exp:d,nbf:f,resources:m},requester:{publicKey:w,metadata:this.client.metadata},expiryTimestamp:re(E)},x={eip155:{chains:a,methods:[...new Set(["personal_sign",...g])],events:["chainChanged","accountsChanged"]}},C={requiredNamespaces:{},optionalNamespaces:x,relays:[{protocol:"irn"}],pairingTopic:v,proposer:{publicKey:w,metadata:this.client.metadata},expiryTimestamp:re(ie.wc_sessionPropose.req.ttl)},{done:N,resolve:O,reject:D}=bt(E,"Request expired"),$=async({error:M,session:A})=>{if(this.events.off(U("session_request",F),q),M)D(M);else if(A){A.self.publicKey=w,await this.client.session.set(A.topic,A),await this.setExpiry(A.topic,A.expiry),v&&await this.client.core.pairing.updateMetadata({topic:v,metadata:A.peer.metadata});const j=this.client.session.get(A.topic);await this.deleteProposal(B),O({session:j})}},q=async M=>{var A,j,J;if(await this.deletePendingAuthRequest(F,{message:"fulfilled",code:0}),M.error){const Pe=H("WC_METHOD_UNSUPPORTED","wc_sessionAuthenticate");return M.error.code===Pe.code?void 0:(this.events.off(U("session_connect"),$),D(M.error.message))}await this.deleteProposal(B),this.events.off(U("session_connect"),$);const{cacaos:W,responder:te}=M.result,me=[],Ie=[];for(const Pe of W){await Xs({cacao:Pe,projectId:this.client.core.projectId})||(this.client.logger.error(Pe,"Signature verification failed"),D(H("SESSION_SETTLEMENT_FAILED","Signature verification failed")));const{p:ze}=Pe,bi=Kr(ze.resources),is=[an(ze.iss)],jl=ei(ze.iss);if(bi){const Ei=Zs(bi),Vl=eo(bi);me.push(...Ei),is.push(...Vl)}for(const Ei of is)Ie.push(`${Ei}:${jl}`)}const xe=await this.client.core.crypto.generateSharedKey(w,te.publicKey);let ke;me.length>0&&(ke={topic:xe,acknowledged:!0,self:{publicKey:w,metadata:this.client.metadata},peer:te,controller:te.publicKey,expiry:re(Ft),requiredNamespaces:{},optionalNamespaces:{},relay:{protocol:"irn"},pairingTopic:v,namespaces:_o([...new Set(me)],[...new Set(Ie)]),transportType:o},await this.client.core.relayer.subscribe(xe,{transportType:o}),await this.client.session.set(xe,ke),v&&await this.client.core.pairing.updateMetadata({topic:v,metadata:te.metadata}),ke=this.client.session.get(xe)),(A=this.client.metadata.redirect)!=null&&A.linkMode&&(j=te.metadata.redirect)!=null&&j.linkMode&&(J=te.metadata.redirect)!=null&&J.universal&&i&&(this.client.core.addLinkModeSupportedApp(te.metadata.redirect.universal),this.client.session.update(xe,{transportType:G.link_mode})),O({auths:W,session:ke})},F=vt(),B=vt();this.events.once(U("session_connect"),$),this.events.once(U("session_request",F),q);let K;try{if(s){const M=It("wc_sessionAuthenticate",S,F);this.client.core.history.set(v,M);const A=await this.client.core.crypto.encode("",M,{type:Nr,encoding:or});K=Fr(i,v,A)}else await Promise.all([this.sendRequest({topic:v,method:"wc_sessionAuthenticate",params:S,expiry:t.expiry,throwOnFailedPublish:!0,clientRpcId:F}),this.sendRequest({topic:v,method:"wc_sessionPropose",params:C,expiry:ie.wc_sessionPropose.req.ttl,throwOnFailedPublish:!0,clientRpcId:B})])}catch(M){throw this.events.off(U("session_connect"),$),this.events.off(U("session_request",F),q),M}return await this.setProposal(B,Z({id:B},C)),await this.setAuthRequest(F,{request:De(Z({},S),{verifyContext:{}}),pairingTopic:v,transportType:o}),{uri:K??_,response:N}},this.approveSessionAuthenticate=async t=>{const{id:i,auths:n}=t,s=this.client.core.eventClient.createEvent({properties:{topic:i.toString(),trace:[_t.authenticated_session_approve_started]}});try{this.isInitialized()}catch(y){throw s.setError(lr.no_internet_connection),y}const o=this.getPendingAuthRequest(i);if(!o)throw s.setError(lr.authenticated_session_pending_request_not_found),new Error(`Could not find pending auth request with id ${i}`);const a=o.transportType||G.relay;a===G.relay&&await this.confirmOnlineStateOrThrow();const c=o.requester.publicKey,l=await this.client.core.crypto.generateKeyPair(),u=jr(c),h={type:rt,receiverPublicKey:c,senderPublicKey:l},p=[],d=[];for(const y of n){if(!await Xs({cacao:y,projectId:this.client.core.projectId})){s.setError(lr.invalid_cacao);const b=H("SESSION_SETTLEMENT_FAILED","Signature verification failed");throw await this.sendError({id:i,topic:u,error:b,encodeOpts:h}),new Error(b.message)}s.addTrace(_t.cacaos_verified);const{p:m}=y,v=Kr(m.resources),_=[an(m.iss)],w=ei(m.iss);if(v){const b=Zs(v),E=eo(v);p.push(...b),_.push(...E)}for(const b of _)d.push(`${b}:${w}`)}const f=await this.client.core.crypto.generateSharedKey(l,c);s.addTrace(_t.create_authenticated_session_topic);let g;if((p==null?void 0:p.length)>0){g={topic:f,acknowledged:!0,self:{publicKey:l,metadata:this.client.metadata},peer:{publicKey:c,metadata:o.requester.metadata},controller:c,expiry:re(Ft),authentication:n,requiredNamespaces:{},optionalNamespaces:{},relay:{protocol:"irn"},pairingTopic:o.pairingTopic,namespaces:_o([...new Set(p)],[...new Set(d)]),transportType:a},s.addTrace(_t.subscribing_authenticated_session_topic);try{await this.client.core.relayer.subscribe(f,{transportType:a})}catch(y){throw s.setError(lr.subscribe_authenticated_session_topic_failure),y}s.addTrace(_t.subscribe_authenticated_session_topic_success),await this.client.session.set(f,g),s.addTrace(_t.store_authenticated_session),await this.client.core.pairing.updateMetadata({topic:o.pairingTopic,metadata:o.requester.metadata})}s.addTrace(_t.publishing_authenticated_session_approve);try{await this.sendResult({topic:u,id:i,result:{cacaos:n,responder:{publicKey:l,metadata:this.client.metadata}},encodeOpts:h,throwOnFailedPublish:!0,appLink:this.getAppLinkIfEnabled(o.requester.metadata,a)})}catch(y){throw s.setError(lr.authenticated_session_approve_publish_failure),y}return await this.client.auth.requests.delete(i,{message:"fulfilled",code:0}),await this.client.core.pairing.activate({topic:o.pairingTopic}),this.client.core.eventClient.deleteEvent({eventId:s.eventId}),{session:g}},this.rejectSessionAuthenticate=async t=>{this.isInitialized();const{id:i,reason:n}=t,s=this.getPendingAuthRequest(i);if(!s)throw new Error(`Could not find pending auth request with id ${i}`);s.transportType===G.relay&&await this.confirmOnlineStateOrThrow();const o=s.requester.publicKey,a=await this.client.core.crypto.generateKeyPair(),c=jr(o),l={type:rt,receiverPublicKey:o,senderPublicKey:a};await this.sendError({id:i,topic:c,error:n,encodeOpts:l,rpcOpts:ie.wc_sessionAuthenticate.reject,appLink:this.getAppLinkIfEnabled(s.requester.metadata,s.transportType)}),await this.client.auth.requests.delete(i,{message:"rejected",code:0}),await this.client.proposal.delete(i,H("USER_DISCONNECTED"))},this.formatAuthMessage=t=>{this.isInitialized();const{request:i,iss:n}=t;return ol(i,n)},this.processRelayMessageCache=()=>{setTimeout(async()=>{if(this.relayMessageCache.length!==0)for(;this.relayMessageCache.length>0;)try{const t=this.relayMessageCache.shift();t&&await this.onRelayMessage(t)}catch(t){this.client.logger.error(t)}},50)},this.cleanupDuplicatePairings=async t=>{if(t.pairingTopic)try{const i=this.client.core.pairing.pairings.get(t.pairingTopic),n=this.client.core.pairing.pairings.getAll().filter(s=>{var o,a;return((o=s.peerMetadata)==null?void 0:o.url)&&((a=s.peerMetadata)==null?void 0:a.url)===t.peer.metadata.url&&s.topic&&s.topic!==i.topic});if(n.length===0)return;this.client.logger.info(`Cleaning up ${n.length} duplicate pairing(s)`),await Promise.all(n.map(s=>this.client.core.pairing.disconnect({topic:s.topic}))),this.client.logger.info("Duplicate pairings clean up finished")}catch(i){this.client.logger.error(i)}},this.deleteSession=async t=>{var i;const{topic:n,expirerHasDeleted:s=!1,emitEvent:o=!0,id:a=0}=t,{self:c}=this.client.session.get(n);await this.client.core.relayer.unsubscribe(n),await this.client.session.delete(n,H("USER_DISCONNECTED")),this.addToRecentlyDeleted(n,"session"),this.client.core.crypto.keychain.has(c.publicKey)&&await this.client.core.crypto.deleteKeyPair(c.publicKey),this.client.core.crypto.keychain.has(n)&&await this.client.core.crypto.deleteSymKey(n),s||this.client.core.expirer.del(n),this.client.core.storage.removeItem(ea).catch(l=>this.client.logger.warn(l)),this.getPendingSessionRequests().forEach(l=>{l.topic===n&&this.deletePendingSessionRequest(l.id,H("USER_DISCONNECTED"))}),n===((i=this.sessionRequestQueue.queue[0])==null?void 0:i.topic)&&(this.sessionRequestQueue.state=je.idle),o&&this.client.events.emit("session_delete",{id:a,topic:n})},this.deleteProposal=async(t,i)=>{if(i)try{const n=this.client.proposal.get(t),s=this.client.core.eventClient.getEvent({topic:n.pairingTopic});s==null||s.setError(wt.proposal_expired)}catch{}await Promise.all([this.client.proposal.delete(t,H("USER_DISCONNECTED")),i?Promise.resolve():this.client.core.expirer.del(t)]),this.addToRecentlyDeleted(t,"proposal")},this.deletePendingSessionRequest=async(t,i,n=!1)=>{await Promise.all([this.client.pendingRequest.delete(t,i),n?Promise.resolve():this.client.core.expirer.del(t)]),this.addToRecentlyDeleted(t,"request"),this.sessionRequestQueue.queue=this.sessionRequestQueue.queue.filter(s=>s.id!==t),n&&(this.sessionRequestQueue.state=je.idle,this.client.events.emit("session_request_expire",{id:t}))},this.deletePendingAuthRequest=async(t,i,n=!1)=>{await Promise.all([this.client.auth.requests.delete(t,i),n?Promise.resolve():this.client.core.expirer.del(t)])},this.setExpiry=async(t,i)=>{this.client.session.keys.includes(t)&&(this.client.core.expirer.set(t,i),await this.client.session.update(t,{expiry:i}))},this.setProposal=async(t,i)=>{this.client.core.expirer.set(t,re(ie.wc_sessionPropose.req.ttl)),await this.client.proposal.set(t,i)},this.setAuthRequest=async(t,i)=>{const{request:n,pairingTopic:s,transportType:o=G.relay}=i;this.client.core.expirer.set(t,n.expiryTimestamp),await this.client.auth.requests.set(t,{authPayload:n.authPayload,requester:n.requester,expiryTimestamp:n.expiryTimestamp,id:t,pairingTopic:s,verifyContext:n.verifyContext,transportType:o})},this.setPendingSessionRequest=async t=>{const{id:i,topic:n,params:s,verifyContext:o}=t,a=s.request.expiryTimestamp||re(ie.wc_sessionRequest.req.ttl);this.client.core.expirer.set(i,a),await this.client.pendingRequest.set(i,{id:i,topic:n,params:s,verifyContext:o})},this.sendRequest=async t=>{const{topic:i,method:n,params:s,expiry:o,relayRpcId:a,clientRpcId:c,throwOnFailedPublish:l,appLink:u}=t,h=It(n,s,c);let p;const d=!!u;try{const y=d?or:ut;p=await this.client.core.crypto.encode(i,h,{encoding:y})}catch(y){throw await this.cleanup(),this.client.logger.error(`sendRequest() -> core.crypto.encode() for topic ${i} failed`),y}let f;if(mw.includes(n)){const y=Ze(JSON.stringify(h)),m=Ze(p);f=await this.client.core.verify.register({id:m,decryptedId:y})}const g=ie[n].req;if(g.attestation=f,o&&(g.ttl=o),a&&(g.id=a),this.client.core.history.set(i,h),d){const y=Fr(u,i,p);await R.global.Linking.openURL(y,this.client.name)}else{const y=ie[n].req;o&&(y.ttl=o),a&&(y.id=a),l?(y.internal=De(Z({},y.internal),{throwOnFailedPublish:!0}),await this.client.core.relayer.publish(i,p,y)):this.client.core.relayer.publish(i,p,y).catch(m=>this.client.logger.error(m))}return h.id},this.sendResult=async t=>{const{id:i,topic:n,result:s,throwOnFailedPublish:o,encodeOpts:a,appLink:c}=t,l=bn(i,s);let u;const h=c&&typeof(R.global==null?void 0:R.global.Linking)<"u";try{const d=h?or:ut;u=await this.client.core.crypto.encode(n,l,De(Z({},a||{}),{encoding:d}))}catch(d){throw await this.cleanup(),this.client.logger.error(`sendResult() -> core.crypto.encode() for topic ${n} failed`),d}let p;try{p=await this.client.core.history.get(n,i)}catch(d){throw this.client.logger.error(`sendResult() -> history.get(${n}, ${i}) failed`),d}if(h){const d=Fr(c,n,u);await R.global.Linking.openURL(d,this.client.name)}else{const d=ie[p.request.method].res;o?(d.internal=De(Z({},d.internal),{throwOnFailedPublish:!0}),await this.client.core.relayer.publish(n,u,d)):this.client.core.relayer.publish(n,u,d).catch(f=>this.client.logger.error(f))}await this.client.core.history.resolve(l)},this.sendError=async t=>{const{id:i,topic:n,error:s,encodeOpts:o,rpcOpts:a,appLink:c}=t,l=vn(i,s);let u;const h=c&&typeof(R.global==null?void 0:R.global.Linking)<"u";try{const d=h?or:ut;u=await this.client.core.crypto.encode(n,l,De(Z({},o||{}),{encoding:d}))}catch(d){throw await this.cleanup(),this.client.logger.error(`sendError() -> core.crypto.encode() for topic ${n} failed`),d}let p;try{p=await this.client.core.history.get(n,i)}catch(d){throw this.client.logger.error(`sendError() -> history.get(${n}, ${i}) failed`),d}if(h){const d=Fr(c,n,u);await R.global.Linking.openURL(d,this.client.name)}else{const d=a||ie[p.request.method].res;this.client.core.relayer.publish(n,u,d)}await this.client.core.history.resolve(l)},this.cleanup=async()=>{const t=[],i=[];this.client.session.getAll().forEach(n=>{let s=!1;at(n.expiry)&&(s=!0),this.client.core.crypto.keychain.has(n.topic)||(s=!0),s&&t.push(n.topic)}),this.client.proposal.getAll().forEach(n=>{at(n.expiryTimestamp)&&i.push(n.id)}),await Promise.all([...t.map(n=>this.deleteSession({topic:n})),...i.map(n=>this.deleteProposal(n))])},this.onRelayEventRequest=async t=>{this.requestQueue.queue.push(t),await this.processRequestsQueue()},this.processRequestsQueue=async()=>{if(this.requestQueue.state===je.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=je.active;const t=this.requestQueue.queue.shift();if(t)try{await this.processRequest(t)}catch(i){this.client.logger.warn(i)}}this.requestQueue.state=je.idle},this.processRequest=async t=>{const{topic:i,payload:n,attestation:s,transportType:o,encryptedId:a}=t,c=n.method;if(!this.shouldIgnorePairingRequest({topic:i,requestMethod:c}))switch(c){case"wc_sessionPropose":return await this.onSessionProposeRequest({topic:i,payload:n,attestation:s,encryptedId:a});case"wc_sessionSettle":return await this.onSessionSettleRequest(i,n);case"wc_sessionUpdate":return await this.onSessionUpdateRequest(i,n);case"wc_sessionExtend":return await this.onSessionExtendRequest(i,n);case"wc_sessionPing":return await this.onSessionPingRequest(i,n);case"wc_sessionDelete":return await this.onSessionDeleteRequest(i,n);case"wc_sessionRequest":return await this.onSessionRequest({topic:i,payload:n,attestation:s,encryptedId:a,transportType:o});case"wc_sessionEvent":return await this.onSessionEventRequest(i,n);case"wc_sessionAuthenticate":return await this.onSessionAuthenticateRequest({topic:i,payload:n,attestation:s,encryptedId:a,transportType:o});default:return this.client.logger.info(`Unsupported request method ${c}`)}},this.onRelayEventResponse=async t=>{const{topic:i,payload:n,transportType:s}=t,o=(await this.client.core.history.get(i,n.id)).request.method;switch(o){case"wc_sessionPropose":return this.onSessionProposeResponse(i,n,s);case"wc_sessionSettle":return this.onSessionSettleResponse(i,n);case"wc_sessionUpdate":return this.onSessionUpdateResponse(i,n);case"wc_sessionExtend":return this.onSessionExtendResponse(i,n);case"wc_sessionPing":return this.onSessionPingResponse(i,n);case"wc_sessionRequest":return this.onSessionRequestResponse(i,n);case"wc_sessionAuthenticate":return this.onSessionAuthenticateResponse(i,n);default:return this.client.logger.info(`Unsupported response method ${o}`)}},this.onRelayEventUnknownPayload=t=>{const{topic:i}=t,{message:n}=P("MISSING_OR_INVALID",`Decoded payload on topic ${i} is not identifiable as a JSON-RPC request or a response.`);throw new Error(n)},this.shouldIgnorePairingRequest=t=>{const{topic:i,requestMethod:n}=t,s=this.expectedPairingMethodMap.get(i);return!s||s.includes(n)?!1:!!(s.includes("wc_sessionAuthenticate")&&this.client.events.listenerCount("session_authenticate")>0)},this.onSessionProposeRequest=async t=>{const{topic:i,payload:n,attestation:s,encryptedId:o}=t,{params:a,id:c}=n;try{const l=this.client.core.eventClient.getEvent({topic:i});this.client.events.listenerCount("session_proposal")===0&&(console.warn("No listener for session_proposal event"),l==null||l.setError(Xe.proposal_listener_not_found)),this.isValidConnect(Z({},n.params));const u=a.expiryTimestamp||re(ie.wc_sessionPropose.req.ttl),h=Z({id:c,pairingTopic:i,expiryTimestamp:u},a);await this.setProposal(c,h);const p=await this.getVerifyContext({attestationId:s,hash:Ze(JSON.stringify(n)),encryptedId:o,metadata:h.proposer.metadata});l==null||l.addTrace(Ve.emit_session_proposal),this.client.events.emit("session_proposal",{id:c,params:h,verifyContext:p})}catch(l){await this.sendError({id:c,topic:i,error:l,rpcOpts:ie.wc_sessionPropose.autoReject}),this.client.logger.error(l)}},this.onSessionProposeResponse=async(t,i,n)=>{const{id:s}=i;if(Qe(i)){const{result:o}=i;this.client.logger.trace({type:"method",method:"onSessionProposeResponse",result:o});const a=this.client.proposal.get(s);this.client.logger.trace({type:"method",method:"onSessionProposeResponse",proposal:a});const c=a.proposer.publicKey;this.client.logger.trace({type:"method",method:"onSessionProposeResponse",selfPublicKey:c});const l=o.responderPublicKey;this.client.logger.trace({type:"method",method:"onSessionProposeResponse",peerPublicKey:l});const u=await this.client.core.crypto.generateSharedKey(c,l);this.client.logger.trace({type:"method",method:"onSessionProposeResponse",sessionTopic:u});const h=await this.client.core.relayer.subscribe(u,{transportType:n});this.client.logger.trace({type:"method",method:"onSessionProposeResponse",subscriptionId:h}),await this.client.core.pairing.activate({topic:t})}else if(qe(i)){await this.client.proposal.delete(s,H("USER_DISCONNECTED"));const o=U("session_connect");if(this.events.listenerCount(o)===0)throw new Error(`emitting ${o} without any listeners, 954`);this.events.emit(U("session_connect"),{error:i.error})}},this.onSessionSettleRequest=async(t,i)=>{const{id:n,params:s}=i;try{this.isValidSessionSettleRequest(s);const{relay:o,controller:a,expiry:c,namespaces:l,sessionProperties:u,sessionConfig:h}=i.params,p=De(Z(Z({topic:t,relay:o,expiry:c,namespaces:l,acknowledged:!0,pairingTopic:"",requiredNamespaces:{},optionalNamespaces:{},controller:a.publicKey,self:{publicKey:"",metadata:this.client.metadata},peer:{publicKey:a.publicKey,metadata:a.metadata}},u&&{sessionProperties:u}),h&&{sessionConfig:h}),{transportType:G.relay}),d=U("session_connect");if(this.events.listenerCount(d)===0)throw new Error(`emitting ${d} without any listeners 997`);this.events.emit(U("session_connect"),{session:p}),await this.sendResult({id:i.id,topic:t,result:!0,throwOnFailedPublish:!0})}catch(o){await this.sendError({id:n,topic:t,error:o}),this.client.logger.error(o)}},this.onSessionSettleResponse=async(t,i)=>{const{id:n}=i;Qe(i)?(await this.client.session.update(t,{acknowledged:!0}),this.events.emit(U("session_approve",n),{})):qe(i)&&(await this.client.session.delete(t,H("USER_DISCONNECTED")),this.events.emit(U("session_approve",n),{error:i.error}))},this.onSessionUpdateRequest=async(t,i)=>{const{params:n,id:s}=i;try{const o=`${t}_session_update`,a=ar.get(o);if(a&&this.isRequestOutOfSync(a,s)){this.client.logger.warn(`Discarding out of sync request - ${s}`),this.sendError({id:s,topic:t,error:H("INVALID_UPDATE_REQUEST")});return}this.isValidUpdate(Z({topic:t},n));try{ar.set(o,s),await this.client.session.update(t,{namespaces:n.namespaces}),await this.sendResult({id:s,topic:t,result:!0,throwOnFailedPublish:!0})}catch(c){throw ar.delete(o),c}this.client.events.emit("session_update",{id:s,topic:t,params:n})}catch(o){await this.sendError({id:s,topic:t,error:o}),this.client.logger.error(o)}},this.isRequestOutOfSync=(t,i)=>i.toString().slice(0,-3)<t.toString().slice(0,-3),this.onSessionUpdateResponse=(t,i)=>{const{id:n}=i,s=U("session_update",n);if(this.events.listenerCount(s)===0)throw new Error(`emitting ${s} without any listeners`);Qe(i)?this.events.emit(U("session_update",n),{}):qe(i)&&this.events.emit(U("session_update",n),{error:i.error})},this.onSessionExtendRequest=async(t,i)=>{const{id:n}=i;try{this.isValidExtend({topic:t}),await this.setExpiry(t,re(Ft)),await this.sendResult({id:n,topic:t,result:!0,throwOnFailedPublish:!0}),this.client.events.emit("session_extend",{id:n,topic:t})}catch(s){await this.sendError({id:n,topic:t,error:s}),this.client.logger.error(s)}},this.onSessionExtendResponse=(t,i)=>{const{id:n}=i,s=U("session_extend",n);if(this.events.listenerCount(s)===0)throw new Error(`emitting ${s} without any listeners`);Qe(i)?this.events.emit(U("session_extend",n),{}):qe(i)&&this.events.emit(U("session_extend",n),{error:i.error})},this.onSessionPingRequest=async(t,i)=>{const{id:n}=i;try{this.isValidPing({topic:t}),await this.sendResult({id:n,topic:t,result:!0,throwOnFailedPublish:!0}),this.client.events.emit("session_ping",{id:n,topic:t})}catch(s){await this.sendError({id:n,topic:t,error:s}),this.client.logger.error(s)}},this.onSessionPingResponse=(t,i)=>{const{id:n}=i,s=U("session_ping",n);if(this.events.listenerCount(s)===0)throw new Error(`emitting ${s} without any listeners`);setTimeout(()=>{Qe(i)?this.events.emit(U("session_ping",n),{}):qe(i)&&this.events.emit(U("session_ping",n),{error:i.error})},500)},this.onSessionDeleteRequest=async(t,i)=>{const{id:n}=i;try{this.isValidDisconnect({topic:t,reason:i.params}),Promise.all([new Promise(s=>{this.client.core.relayer.once(ne.publish,async()=>{s(await this.deleteSession({topic:t,id:n}))})}),this.sendResult({id:n,topic:t,result:!0,throwOnFailedPublish:!0}),this.cleanupPendingSentRequestsForTopic({topic:t,error:H("USER_DISCONNECTED")})]).catch(s=>this.client.logger.error(s))}catch(s){this.client.logger.error(s)}},this.onSessionRequest=async t=>{var i,n,s;const{topic:o,payload:a,attestation:c,encryptedId:l,transportType:u}=t,{id:h,params:p}=a;try{await this.isValidRequest(Z({topic:o},p));const d=this.client.session.get(o),f=await this.getVerifyContext({attestationId:c,hash:Ze(JSON.stringify(It("wc_sessionRequest",p,h))),encryptedId:l,metadata:d.peer.metadata,transportType:u}),g={id:h,topic:o,params:p,verifyContext:f};await this.setPendingSessionRequest(g),u===G.link_mode&&(i=d.peer.metadata.redirect)!=null&&i.universal&&this.client.core.addLinkModeSupportedApp((n=d.peer.metadata.redirect)==null?void 0:n.universal),(s=this.client.signConfig)!=null&&s.disableRequestQueue?this.emitSessionRequest(g):(this.addSessionRequestToSessionRequestQueue(g),this.processSessionRequestQueue())}catch(d){await this.sendError({id:h,topic:o,error:d}),this.client.logger.error(d)}},this.onSessionRequestResponse=(t,i)=>{const{id:n}=i,s=U("session_request",n);if(this.events.listenerCount(s)===0)throw new Error(`emitting ${s} without any listeners`);Qe(i)?this.events.emit(U("session_request",n),{result:i.result}):qe(i)&&this.events.emit(U("session_request",n),{error:i.error})},this.onSessionEventRequest=async(t,i)=>{const{id:n,params:s}=i;try{const o=`${t}_session_event_${s.event.name}`,a=ar.get(o);if(a&&this.isRequestOutOfSync(a,n)){this.client.logger.info(`Discarding out of sync request - ${n}`);return}this.isValidEmit(Z({topic:t},s)),this.client.events.emit("session_event",{id:n,topic:t,params:s}),ar.set(o,n)}catch(o){await this.sendError({id:n,topic:t,error:o}),this.client.logger.error(o)}},this.onSessionAuthenticateResponse=(t,i)=>{const{id:n}=i;this.client.logger.trace({type:"method",method:"onSessionAuthenticateResponse",topic:t,payload:i}),Qe(i)?this.events.emit(U("session_request",n),{result:i.result}):qe(i)&&this.events.emit(U("session_request",n),{error:i.error})},this.onSessionAuthenticateRequest=async t=>{var i;const{topic:n,payload:s,attestation:o,encryptedId:a,transportType:c}=t;try{const{requester:l,authPayload:u,expiryTimestamp:h}=s.params,p=await this.getVerifyContext({attestationId:o,hash:Ze(JSON.stringify(s)),encryptedId:a,metadata:l.metadata,transportType:c}),d={requester:l,pairingTopic:n,id:s.id,authPayload:u,verifyContext:p,expiryTimestamp:h};await this.setAuthRequest(s.id,{request:d,pairingTopic:n,transportType:c}),c===G.link_mode&&(i=l.metadata.redirect)!=null&&i.universal&&this.client.core.addLinkModeSupportedApp(l.metadata.redirect.universal),this.client.events.emit("session_authenticate",{topic:n,params:s.params,id:s.id,verifyContext:p})}catch(l){this.client.logger.error(l);const u=s.params.requester.publicKey,h=await this.client.core.crypto.generateKeyPair(),p=this.getAppLinkIfEnabled(s.params.requester.metadata,c),d={type:rt,receiverPublicKey:u,senderPublicKey:h};await this.sendError({id:s.id,topic:n,error:l,encodeOpts:d,rpcOpts:ie.wc_sessionAuthenticate.autoReject,appLink:p})}},this.addSessionRequestToSessionRequestQueue=t=>{this.sessionRequestQueue.queue.push(t)},this.cleanupAfterResponse=t=>{this.deletePendingSessionRequest(t.response.id,{message:"fulfilled",code:0}),setTimeout(()=>{this.sessionRequestQueue.state=je.idle,this.processSessionRequestQueue()},I.toMiliseconds(this.requestQueueDelay))},this.cleanupPendingSentRequestsForTopic=({topic:t,error:i})=>{const n=this.client.core.history.pending;n.length>0&&n.filter(s=>s.topic===t&&s.request.method==="wc_sessionRequest").forEach(s=>{const o=s.request.id,a=U("session_request",o);if(this.events.listenerCount(a)===0)throw new Error(`emitting ${a} without any listeners`);this.events.emit(U("session_request",s.request.id),{error:i})})},this.processSessionRequestQueue=()=>{if(this.sessionRequestQueue.state===je.active){this.client.logger.info("session request queue is already active.");return}const t=this.sessionRequestQueue.queue[0];if(!t){this.client.logger.info("session request queue is empty.");return}try{this.sessionRequestQueue.state=je.active,this.emitSessionRequest(t)}catch(i){this.client.logger.error(i)}},this.emitSessionRequest=t=>{this.client.events.emit("session_request",t)},this.onPairingCreated=t=>{if(t.methods&&this.expectedPairingMethodMap.set(t.topic,t.methods),t.active)return;const i=this.client.proposal.getAll().find(n=>n.pairingTopic===t.topic);i&&this.onSessionProposeRequest({topic:t.topic,payload:It("wc_sessionPropose",{requiredNamespaces:i.requiredNamespaces,optionalNamespaces:i.optionalNamespaces,relays:i.relays,proposer:i.proposer,sessionProperties:i.sessionProperties},i.id)})},this.isValidConnect=async t=>{if(!ge(t)){const{message:c}=P("MISSING_OR_INVALID",`connect() params: ${JSON.stringify(t)}`);throw new Error(c)}const{pairingTopic:i,requiredNamespaces:n,optionalNamespaces:s,sessionProperties:o,relays:a}=t;if(de(i)||await this.isValidPairingTopic(i),!Ky(a)){const{message:c}=P("MISSING_OR_INVALID",`connect() relays: ${a}`);throw new Error(c)}!de(n)&&ri(n)!==0&&this.validateNamespaces(n,"requiredNamespaces"),!de(s)&&ri(s)!==0&&this.validateNamespaces(s,"optionalNamespaces"),de(o)||this.validateSessionProps(o,"sessionProperties")},this.validateNamespaces=(t,i)=>{const n=zy(t,"connect()",i);if(n)throw new Error(n.message)},this.isValidApprove=async t=>{if(!ge(t))throw new Error(P("MISSING_OR_INVALID",`approve() params: ${t}`).message);const{id:i,namespaces:n,relayProtocol:s,sessionProperties:o}=t;this.checkRecentlyDeleted(i),await this.isValidProposalId(i);const a=this.client.proposal.get(i),c=Ui(n,"approve()");if(c)throw new Error(c.message);const l=So(a.requiredNamespaces,n,"approve()");if(l)throw new Error(l.message);if(!ee(s,!0)){const{message:u}=P("MISSING_OR_INVALID",`approve() relayProtocol: ${s}`);throw new Error(u)}de(o)||this.validateSessionProps(o,"sessionProperties")},this.isValidReject=async t=>{if(!ge(t)){const{message:s}=P("MISSING_OR_INVALID",`reject() params: ${t}`);throw new Error(s)}const{id:i,reason:n}=t;if(this.checkRecentlyDeleted(i),await this.isValidProposalId(i),!Vy(n)){const{message:s}=P("MISSING_OR_INVALID",`reject() reason: ${JSON.stringify(n)}`);throw new Error(s)}},this.isValidSessionSettleRequest=t=>{if(!ge(t)){const{message:l}=P("MISSING_OR_INVALID",`onSessionSettleRequest() params: ${t}`);throw new Error(l)}const{relay:i,controller:n,namespaces:s,expiry:o}=t;if(!Sl(i)){const{message:l}=P("MISSING_OR_INVALID","onSessionSettleRequest() relay protocol should be a string");throw new Error(l)}const a=Ly(n,"onSessionSettleRequest()");if(a)throw new Error(a.message);const c=Ui(s,"onSessionSettleRequest()");if(c)throw new Error(c.message);if(at(o)){const{message:l}=P("EXPIRED","onSessionSettleRequest()");throw new Error(l)}},this.isValidUpdate=async t=>{if(!ge(t)){const{message:c}=P("MISSING_OR_INVALID",`update() params: ${t}`);throw new Error(c)}const{topic:i,namespaces:n}=t;this.checkRecentlyDeleted(i),await this.isValidSessionTopic(i);const s=this.client.session.get(i),o=Ui(n,"update()");if(o)throw new Error(o.message);const a=So(s.requiredNamespaces,n,"update()");if(a)throw new Error(a.message)},this.isValidExtend=async t=>{if(!ge(t)){const{message:n}=P("MISSING_OR_INVALID",`extend() params: ${t}`);throw new Error(n)}const{topic:i}=t;this.checkRecentlyDeleted(i),await this.isValidSessionTopic(i)},this.isValidRequest=async t=>{if(!ge(t)){const{message:c}=P("MISSING_OR_INVALID",`request() params: ${t}`);throw new Error(c)}const{topic:i,request:n,chainId:s,expiry:o}=t;this.checkRecentlyDeleted(i),await this.isValidSessionTopic(i);const{namespaces:a}=this.client.session.get(i);if(!Eo(a,s)){const{message:c}=P("MISSING_OR_INVALID",`request() chainId: ${s}`);throw new Error(c)}if(!Wy(n)){const{message:c}=P("MISSING_OR_INVALID",`request() ${JSON.stringify(n)}`);throw new Error(c)}if(!Gy(a,s,n.method)){const{message:c}=P("MISSING_OR_INVALID",`request() method: ${n.method}`);throw new Error(c)}if(o&&!Zy(o,Vi)){const{message:c}=P("MISSING_OR_INVALID",`request() expiry: ${o}. Expiry must be a number (in seconds) between ${Vi.min} and ${Vi.max}`);throw new Error(c)}},this.isValidRespond=async t=>{var i;if(!ge(t)){const{message:o}=P("MISSING_OR_INVALID",`respond() params: ${t}`);throw new Error(o)}const{topic:n,response:s}=t;try{await this.isValidSessionTopic(n)}catch(o){throw(i=t==null?void 0:t.response)!=null&&i.id&&this.cleanupAfterResponse(t),o}if(!Hy(s)){const{message:o}=P("MISSING_OR_INVALID",`respond() response: ${JSON.stringify(s)}`);throw new Error(o)}},this.isValidPing=async t=>{if(!ge(t)){const{message:n}=P("MISSING_OR_INVALID",`ping() params: ${t}`);throw new Error(n)}const{topic:i}=t;await this.isValidSessionOrPairingTopic(i)},this.isValidEmit=async t=>{if(!ge(t)){const{message:a}=P("MISSING_OR_INVALID",`emit() params: ${t}`);throw new Error(a)}const{topic:i,event:n,chainId:s}=t;await this.isValidSessionTopic(i);const{namespaces:o}=this.client.session.get(i);if(!Eo(o,s)){const{message:a}=P("MISSING_OR_INVALID",`emit() chainId: ${s}`);throw new Error(a)}if(!Jy(n)){const{message:a}=P("MISSING_OR_INVALID",`emit() event: ${JSON.stringify(n)}`);throw new Error(a)}if(!Yy(o,s,n.name)){const{message:a}=P("MISSING_OR_INVALID",`emit() event: ${JSON.stringify(n)}`);throw new Error(a)}},this.isValidDisconnect=async t=>{if(!ge(t)){const{message:n}=P("MISSING_OR_INVALID",`disconnect() params: ${t}`);throw new Error(n)}const{topic:i}=t;await this.isValidSessionOrPairingTopic(i)},this.isValidAuthenticate=t=>{const{chains:i,uri:n,domain:s,nonce:o}=t;if(!Array.isArray(i)||i.length===0)throw new Error("chains is required and must be a non-empty array");if(!ee(n,!1))throw new Error("uri is required parameter");if(!ee(s,!1))throw new Error("domain is required parameter");if(!ee(o,!1))throw new Error("nonce is required parameter");if([...new Set(i.map(c=>zr(c).namespace))].length>1)throw new Error("Multi-namespace requests are not supported. Please request single namespace only.");const{namespace:a}=zr(i[0]);if(a!=="eip155")throw new Error("Only eip155 namespace is supported for authenticated sessions. Please use .connect() for non-eip155 chains.")},this.getVerifyContext=async t=>{const{attestationId:i,hash:n,encryptedId:s,metadata:o,transportType:a}=t,c={verified:{verifyUrl:o.verifyUrl||mr,validation:"UNKNOWN",origin:o.url||""}};try{if(a===G.link_mode){const u=this.getAppLinkIfEnabled(o,a);return c.verified.validation=u&&new URL(u).origin===new URL(o.url).origin?"VALID":"INVALID",c}const l=await this.client.core.verify.resolve({attestationId:i,hash:n,encryptedId:s,verifyUrl:o.verifyUrl});l&&(c.verified.origin=l.origin,c.verified.isScam=l.isScam,c.verified.validation=l.origin===new URL(o.url).origin?"VALID":"INVALID")}catch(l){this.client.logger.warn(l)}return this.client.logger.debug(`Verify context: ${JSON.stringify(c)}`),c},this.validateSessionProps=(t,i)=>{Object.values(t).forEach(n=>{if(!ee(n,!1)){const{message:s}=P("MISSING_OR_INVALID",`${i} must be in Record<string, string> format. Received: ${JSON.stringify(n)}`);throw new Error(s)}})},this.getPendingAuthRequest=t=>{const i=this.client.auth.requests.get(t);return typeof i=="object"?i:void 0},this.addToRecentlyDeleted=(t,i)=>{if(this.recentlyDeletedMap.set(t,i),this.recentlyDeletedMap.size>=this.recentlyDeletedLimit){let n=0;const s=this.recentlyDeletedLimit/2;for(const o of this.recentlyDeletedMap.keys()){if(n++>=s)break;this.recentlyDeletedMap.delete(o)}}},this.checkRecentlyDeleted=t=>{const i=this.recentlyDeletedMap.get(t);if(i){const{message:n}=P("MISSING_OR_INVALID",`Record was recently deleted - ${i}: ${t}`);throw new Error(n)}},this.isLinkModeEnabled=(t,i)=>{var n,s,o,a,c,l,u,h,p;return!t||i!==G.link_mode?!1:((s=(n=this.client.metadata)==null?void 0:n.redirect)==null?void 0:s.linkMode)===!0&&((a=(o=this.client.metadata)==null?void 0:o.redirect)==null?void 0:a.universal)!==void 0&&((l=(c=this.client.metadata)==null?void 0:c.redirect)==null?void 0:l.universal)!==""&&((u=t==null?void 0:t.redirect)==null?void 0:u.universal)!==void 0&&((h=t==null?void 0:t.redirect)==null?void 0:h.universal)!==""&&((p=t==null?void 0:t.redirect)==null?void 0:p.linkMode)===!0&&this.client.core.linkModeSupportedApps.includes(t.redirect.universal)&&typeof(R.global==null?void 0:R.global.Linking)<"u"},this.getAppLinkIfEnabled=(t,i)=>{var n;return this.isLinkModeEnabled(t,i)?(n=t==null?void 0:t.redirect)==null?void 0:n.universal:void 0},this.handleLinkModeMessage=({url:t})=>{if(!t||!t.includes("wc_ev")||!t.includes("topic"))return;const i=Ks(t,"topic")||"",n=decodeURIComponent(Ks(t,"wc_ev")||""),s=this.client.session.keys.includes(i);s&&this.client.session.update(i,{transportType:G.link_mode}),this.client.core.dispatchEnvelope({topic:i,message:n,sessionExists:s})},this.registerLinkModeListeners=async()=>{var t;if(Wn()||mt()&&(t=this.client.metadata.redirect)!=null&&t.linkMode){const i=R.global==null?void 0:R.global.Linking;if(typeof i<"u"){i.addEventListener("url",this.handleLinkModeMessage,this.client.name);const n=await i.getInitialURL();n&&setTimeout(()=>{this.handleLinkModeMessage({url:n})},50)}}}}isInitialized(){if(!this.initialized){const{message:e}=P("NOT_INITIALIZED",this.name);throw new Error(e)}}async confirmOnlineStateOrThrow(){await this.client.core.relayer.confirmOnlineStateOrThrow()}registerRelayerEvents(){this.client.core.relayer.on(ne.message,e=>{!this.initialized||this.relayMessageCache.length>0?this.relayMessageCache.push(e):this.onRelayMessage(e)})}async onRelayMessage(e){const{topic:t,message:i,attestation:n,transportType:s}=e,{publicKey:o}=this.client.auth.authKeys.keys.includes(Vr)?this.client.auth.authKeys.get(Vr):{publicKey:void 0},a=await this.client.core.crypto.decode(t,i,{receiverPublicKey:o,encoding:s===G.link_mode?or:ut});try{_n(a)?(this.client.core.history.set(t,a),this.onRelayEventRequest({topic:t,payload:a,attestation:n,transportType:s,encryptedId:Ze(i)})):ni(a)?(await this.client.core.history.resolve(a),await this.onRelayEventResponse({topic:t,payload:a,transportType:s}),this.client.core.history.delete(t,a.id)):this.onRelayEventUnknownPayload({topic:t,payload:a,transportType:s})}catch(c){this.client.logger.error(c)}}registerExpirerEvents(){this.client.core.expirer.on(Te.expired,async e=>{const{topic:t,id:i}=Qc(e.target);if(i&&this.client.pendingRequest.keys.includes(i))return await this.deletePendingSessionRequest(i,P("EXPIRED"),!0);if(i&&this.client.auth.requests.keys.includes(i))return await this.deletePendingAuthRequest(i,P("EXPIRED"),!0);t?this.client.session.keys.includes(t)&&(await this.deleteSession({topic:t,expirerHasDeleted:!0}),this.client.events.emit("session_expire",{topic:t})):i&&(await this.deleteProposal(i,!0),this.client.events.emit("proposal_expire",{id:i}))})}registerPairingEvents(){this.client.core.pairing.events.on(Et.create,e=>this.onPairingCreated(e)),this.client.core.pairing.events.on(Et.delete,e=>{this.addToRecentlyDeleted(e.topic,"pairing")})}isValidPairingTopic(e){if(!ee(e,!1)){const{message:t}=P("MISSING_OR_INVALID",`pairing topic should be a string: ${e}`);throw new Error(t)}if(!this.client.core.pairing.pairings.keys.includes(e)){const{message:t}=P("NO_MATCHING_KEY",`pairing topic doesn't exist: ${e}`);throw new Error(t)}if(at(this.client.core.pairing.pairings.get(e).expiry)){const{message:t}=P("EXPIRED",`pairing topic: ${e}`);throw new Error(t)}}async isValidSessionTopic(e){if(!ee(e,!1)){const{message:t}=P("MISSING_OR_INVALID",`session topic should be a string: ${e}`);throw new Error(t)}if(this.checkRecentlyDeleted(e),!this.client.session.keys.includes(e)){const{message:t}=P("NO_MATCHING_KEY",`session topic doesn't exist: ${e}`);throw new Error(t)}if(at(this.client.session.get(e).expiry)){await this.deleteSession({topic:e});const{message:t}=P("EXPIRED",`session topic: ${e}`);throw new Error(t)}if(!this.client.core.crypto.keychain.has(e)){const{message:t}=P("MISSING_OR_INVALID",`session topic does not exist in keychain: ${e}`);throw await this.deleteSession({topic:e}),new 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(ee(e,!1)){const{message:t}=P("NO_MATCHING_KEY",`session or pairing topic doesn't exist: ${e}`);throw new Error(t)}else{const{message:t}=P("MISSING_OR_INVALID",`session or pairing topic should be a string: ${e}`);throw new Error(t)}}async isValidProposalId(e){if(!jy(e)){const{message:t}=P("MISSING_OR_INVALID",`proposal id should be a number: ${e}`);throw new Error(t)}if(!this.client.proposal.keys.includes(e)){const{message:t}=P("NO_MATCHING_KEY",`proposal id doesn't exist: ${e}`);throw new Error(t)}if(at(this.client.proposal.get(e).expiryTimestamp)){await this.deleteProposal(e);const{message:t}=P("EXPIRED",`proposal id: ${e}`);throw new Error(t)}}}class Rw extends Mt{constructor(e,t){super(e,t,dw,es),this.core=e,this.logger=t}}class Cw extends Mt{constructor(e,t){super(e,t,pw,es),this.core=e,this.logger=t}}class Nw extends Mt{constructor(e,t){super(e,t,yw,es,i=>i.id),this.core=e,this.logger=t}}class Ow extends Mt{constructor(e,t){super(e,t,_w,_i,()=>Vr),this.core=e,this.logger=t}}class $w extends Mt{constructor(e,t){super(e,t,bw,_i),this.core=e,this.logger=t}}class kw extends Mt{constructor(e,t){super(e,t,Ew,_i,i=>i.id),this.core=e,this.logger=t}}class Mw{constructor(e,t){this.core=e,this.logger=t,this.authKeys=new Ow(this.core,this.logger),this.pairingTopics=new $w(this.core,this.logger),this.requests=new kw(this.core,this.logger)}async init(){await this.authKeys.init(),await this.pairingTopics.init(),await this.requests.init()}}class ts extends uw{constructor(e){super(e),this.protocol=Bl,this.version=zl,this.name=ji.name,this.events=new He.EventEmitter,this.on=(i,n)=>this.events.on(i,n),this.once=(i,n)=>this.events.once(i,n),this.off=(i,n)=>this.events.off(i,n),this.removeListener=(i,n)=>this.events.removeListener(i,n),this.removeAllListeners=i=>this.events.removeAllListeners(i),this.connect=async i=>{try{return await this.engine.connect(i)}catch(n){throw this.logger.error(n.message),n}},this.pair=async i=>{try{return await this.engine.pair(i)}catch(n){throw this.logger.error(n.message),n}},this.approve=async i=>{try{return await this.engine.approve(i)}catch(n){throw this.logger.error(n.message),n}},this.reject=async i=>{try{return await this.engine.reject(i)}catch(n){throw this.logger.error(n.message),n}},this.update=async i=>{try{return await this.engine.update(i)}catch(n){throw this.logger.error(n.message),n}},this.extend=async i=>{try{return await this.engine.extend(i)}catch(n){throw this.logger.error(n.message),n}},this.request=async i=>{try{return await this.engine.request(i)}catch(n){throw this.logger.error(n.message),n}},this.respond=async i=>{try{return await this.engine.respond(i)}catch(n){throw this.logger.error(n.message),n}},this.ping=async i=>{try{return await this.engine.ping(i)}catch(n){throw this.logger.error(n.message),n}},this.emit=async i=>{try{return await this.engine.emit(i)}catch(n){throw this.logger.error(n.message),n}},this.disconnect=async i=>{try{return await this.engine.disconnect(i)}catch(n){throw this.logger.error(n.message),n}},this.find=i=>{try{return this.engine.find(i)}catch(n){throw this.logger.error(n.message),n}},this.getPendingSessionRequests=()=>{try{return this.engine.getPendingSessionRequests()}catch(i){throw this.logger.error(i.message),i}},this.authenticate=async(i,n)=>{try{return await this.engine.authenticate(i,n)}catch(s){throw this.logger.error(s.message),s}},this.formatAuthMessage=i=>{try{return this.engine.formatAuthMessage(i)}catch(n){throw this.logger.error(n.message),n}},this.approveSessionAuthenticate=async i=>{try{return await this.engine.approveSessionAuthenticate(i)}catch(n){throw this.logger.error(n.message),n}},this.rejectSessionAuthenticate=async i=>{try{return await this.engine.rejectSessionAuthenticate(i)}catch(n){throw this.logger.error(n.message),n}},this.name=(e==null?void 0:e.name)||ji.name,this.metadata=(e==null?void 0:e.metadata)||Wc(),this.signConfig=e==null?void 0:e.signConfig;const t=typeof(e==null?void 0:e.logger)<"u"&&typeof(e==null?void 0:e.logger)!="string"?e.logger:ca(wn({level:(e==null?void 0:e.logger)||ji.logger}));this.core=(e==null?void 0:e.core)||new lw(e),this.logger=pe(t,this.name),this.session=new Cw(this.core,this.logger),this.proposal=new Rw(this.core,this.logger),this.pendingRequest=new Nw(this.core,this.logger),this.engine=new Tw(this),this.auth=new Mw(this.core,this.logger)}static async init(e){const t=new ts(e);return await t.initialize(),t}get context(){return be(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()},I.toMiliseconds(I.ONE_SECOND))}catch(e){throw this.logger.info("SignClient Initialization Failure"),this.logger.error(e.message),e}}}function Lw(r){if(r.length>=255)throw new TypeError("Alphabet too long");for(var e=new Uint8Array(256),t=0;t<e.length;t++)e[t]=255;for(var i=0;i<r.length;i++){var n=r.charAt(i),s=n.charCodeAt(0);if(e[s]!==255)throw new TypeError(n+" is ambiguous");e[s]=i}var o=r.length,a=r.charAt(0),c=Math.log(o)/Math.log(256),l=Math.log(256)/Math.log(o);function u(d){if(d instanceof Uint8Array||(ArrayBuffer.isView(d)?d=new Uint8Array(d.buffer,d.byteOffset,d.byteLength):Array.isArray(d)&&(d=Uint8Array.from(d))),!(d instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(d.length===0)return"";for(var f=0,g=0,y=0,m=d.length;y!==m&&d[y]===0;)y++,f++;for(var v=(m-y)*l+1>>>0,_=new Uint8Array(v);y!==m;){for(var w=d[y],b=0,E=v-1;(w!==0||b<g)&&E!==-1;E--,b++)w+=256*_[E]>>>0,_[E]=w%o>>>0,w=w/o>>>0;if(w!==0)throw new Error("Non-zero carry");g=b,y++}for(var S=v-g;S!==v&&_[S]===0;)S++;for(var x=a.repeat(f);S<v;++S)x+=r.charAt(_[S]);return x}function h(d){if(typeof d!="string")throw new TypeError("Expected String");if(d.length===0)return new Uint8Array;for(var f=0,g=0,y=0;d[f]===a;)g++,f++;for(var m=(d.length-f)*c+1>>>0,v=new Uint8Array(m);d[f];){var _=e[d.charCodeAt(f)];if(_===255)return;for(var w=0,b=m-1;(_!==0||w<y)&&b!==-1;b--,w++)_+=o*v[b]>>>0,v[b]=_%256>>>0,_=_/256>>>0;if(_!==0)throw new Error("Non-zero carry");y=w,f++}for(var E=m-y;E!==m&&v[E]===0;)E++;for(var S=new Uint8Array(g+(m-E)),x=g;E!==m;)S[x++]=v[E++];return S}function p(d){var f=h(d);if(f)return f;throw new Error("Non-base"+o+" character")}return{encode:u,decodeUnsafe:h,decode:p}}var Dw=Lw;const Fw=Dw,qw="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";var Uw=Fw(qw);const Wi=oa(Uw);class St extends Error{constructor(){super(),Object.setPrototypeOf(this,St.prototype)}}class rs extends Error{constructor(){super(),Object.setPrototypeOf(this,rs.prototype)}}var ia;(function(r){r.Mainnet="solana:4sGjMW1sUnHzSxGspuhpqLDx6wiyjNtZ",r.Devnet="solana:8E9rvCKLFQia2Y35HXjjpWzj8weVo44K"})(ia||(ia={}));var Yt;(function(r){r.signTransaction="solana_signTransaction",r.signMessage="solana_signMessage"})(Yt||(Yt={}));const na=r=>({requiredNamespaces:{solana:{chains:[r],methods:[Yt.signTransaction,Yt.signMessage],events:[]}}}),Bw=r=>"version"in r;class n_{constructor(e){this._options=e.options,this._network=e.network}async connect(){const e=this._client??await ts.init(this._options),t=e.find(na(this._network)).filter(i=>i.acknowledged);if(t.length)return this._session=t[t.length-1],this._client=e,{publicKey:this.publicKey};{const{uri:i,approval:n}=await e.connect(na(this._network));return new Promise((s,o)=>{i&&Ls.open(i,()=>{o(new rs)}),n().then(a=>{this._session=a,this._client=e,s({publicKey:this.publicKey})}).catch(o).finally(()=>{Ls.close()})})}}async disconnect(){if(this._client&&this._session)await this._client.disconnect({topic:this._session.topic,reason:H("USER_DISCONNECTED")}),this._session=void 0;else throw new St}get client(){if(this._client)return Object.assign({},this._client,{off:this._client.removeListener});throw new St}get publicKey(){if(this._client&&this._session){const{address:e}=sp(this._session.namespaces.solana.accounts[0]);return new Jl(e)}else throw new St}async signTransaction(e){if(this._client&&this._session){let t,i;Bw(e)?(t=R.Buffer.from(e.serialize()).toString("base64"),e.version==="legacy"&&(i=Gl.from(e.serialize()))):(t=e.serialize({requireAllSignatures:!1,verifySignatures:!1}).toString("base64"),i=e);const{signature:n}=await this._client.request({chainId:this._network,topic:this._session.topic,request:{method:Yt.signTransaction,params:{...i,transaction:t}}});return e.addSignature(this.publicKey,R.Buffer.from(Wi.decode(n))),e}else throw new St}async signMessage(e){if(this._client&&this._session){const{signature:t}=await this._client.request({chainId:this._network,topic:this._session.topic,request:{method:Yt.signMessage,params:{pubkey:this.publicKey.toString(),message:Wi.encode(e)}}});return Wi.decode(t)}else throw new St}}export{St as ClientNotInitializedError,rs as QRCodeModalError,ia as WalletConnectChainID,ts as WalletConnectClient,Yt as WalletConnectRPCMethods,n_ as WalletConnectWallet};
|
|
531
|
+
Approved: ${p.toString()}`))}),o.forEach(h=>{i||(Pt(n[h].methods,s[h].methods)?Pt(n[h].events,s[h].events)||(i=P("NON_CONFORMING_NAMESPACES",`${t} namespaces events don't satisfy namespace events for ${h}`)):i=P("NON_CONFORMING_NAMESPACES",`${t} namespaces methods don't satisfy namespace methods for ${h}`))}),i}function Qy(r){const e={};return Object.keys(r).forEach(t=>{var i;t.includes(":")?e[t]=r[t]:(i=r[t].chains)==null||i.forEach(n=>{e[n]={methods:r[t].methods,events:r[t].events}})}),e}function Io(r){return[...new Set(r.map(e=>e.includes(":")?e.split(":")[0]:e))]}function Xy(r){const e={};return Object.keys(r).forEach(t=>{if(t.includes(":"))e[t]=r[t];else{const i=rr(r[t].accounts);i==null||i.forEach(n=>{e[n]={accounts:r[t].accounts.filter(s=>s.includes(`${n}:`)),methods:r[t].methods,events:r[t].events}})}}),e}function Zy(r,e){return Zn(r,!1)&&r<=e.max&&r>=e.min}function xo(){const r=Tr();return new Promise(e=>{switch(r){case _e.browser:e(em());break;case _e.reactNative:e(tm());break;case _e.node:e(rm());break;default:e(!0)}})}function em(){return Ar()&&(navigator==null?void 0:navigator.onLine)}async function tm(){if(mt()&&typeof R.global<"u"&&R.global!=null&&R.global.NetInfo){const r=await(R.global==null?void 0:R.global.NetInfo.fetch());return r==null?void 0:r.isConnected}return!0}function rm(){return!0}function im(r){switch(Tr()){case _e.browser:nm(r);break;case _e.reactNative:sm(r);break}}function nm(r){!mt()&&Ar()&&(window.addEventListener("online",()=>r(!0)),window.addEventListener("offline",()=>r(!1)))}function sm(r){var e;mt()&&typeof R.global<"u"&&R.global!=null&&R.global.NetInfo&&((e=R.global)==null||e.NetInfo.addEventListener(t=>r(t==null?void 0:t.isConnected)))}const Bi={};class ar{static get(e){return Bi[e]}static set(e,t){Bi[e]=t}static delete(e){delete Bi[e]}}const om=r=>JSON.stringify(r,(e,t)=>typeof t=="bigint"?t.toString()+"n":t),am=r=>{const e=/([\[:])?(\d{17,}|(?:[9](?:[1-9]07199254740991|0[1-9]7199254740991|00[8-9]199254740991|007[2-9]99254740991|007199[3-9]54740991|0071992[6-9]4740991|00719925[5-9]740991|007199254[8-9]40991|0071992547[5-9]0991|00719925474[1-9]991|00719925474099[2-9])))([,\}\]])/g,t=r.replace(e,'$1"$2n"$3');return JSON.parse(t,(i,n)=>typeof n=="string"&&n.match(/^\d+n$/)?BigInt(n.substring(0,n.length-1)):n)};function cm(r){if(typeof r!="string")throw new Error(`Cannot safe json parse value of type ${typeof r}`);try{return am(r)}catch{return r}}function lm(r){return typeof r=="string"?r:om(r)||""}const um=()=>typeof WebSocket<"u"?WebSocket:typeof R.global<"u"&&typeof R.global.WebSocket<"u"?R.global.WebSocket:typeof window<"u"&&typeof window.WebSocket<"u"?window.WebSocket:typeof self<"u"&&typeof self.WebSocket<"u"?self.WebSocket:require("ws"),hm=()=>typeof WebSocket<"u"||typeof R.global<"u"&&typeof R.global.WebSocket<"u"||typeof window<"u"&&typeof window.WebSocket<"u"||typeof self<"u"&&typeof self.WebSocket<"u",Po=r=>r.split("?")[0],Ao=10,dm=um();class fm{constructor(e){if(this.url=e,this.events=new He.EventEmitter,this.registering=!1,!ns(e))throw new Error(`Provided URL is not compatible with WebSocket connection: ${e}`);this.url=e}get connected(){return typeof this.socket<"u"}get connecting(){return this.registering}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 open(e=this.url){await this.register(e)}async close(){return new Promise((e,t)=>{if(typeof this.socket>"u"){t(new Error("Connection already closed"));return}this.socket.onclose=i=>{this.onClose(i),e()},this.socket.close()})}async send(e){typeof this.socket>"u"&&(this.socket=await this.register());try{this.socket.send(lm(e))}catch(t){this.onError(e.id,t)}}register(e=this.url){if(!ns(e))throw new Error(`Provided URL is not compatible with WebSocket connection: ${e}`);if(this.registering){const t=this.events.getMaxListeners();return(this.events.listenerCount("register_error")>=t||this.events.listenerCount("open")>=t)&&this.events.setMaxListeners(t+1),new Promise((i,n)=>{this.events.once("register_error",s=>{this.resetMaxListeners(),n(s)}),this.events.once("open",()=>{if(this.resetMaxListeners(),typeof this.socket>"u")return n(new Error("WebSocket connection is missing or invalid"));i(this.socket)})})}return this.url=e,this.registering=!0,new Promise((t,i)=>{const n=eu.isReactNative()?void 0:{rejectUnauthorized:!tu(e)},s=new dm(e,[],n);hm()?s.onerror=o=>{const a=o;i(this.emitError(a.error))}:s.on("error",o=>{i(this.emitError(o))}),s.onopen=()=>{this.onOpen(s),t(s)}})}onOpen(e){e.onmessage=t=>this.onPayload(t),e.onclose=t=>this.onClose(t),this.socket=e,this.registering=!1,this.events.emit("open")}onClose(e){this.socket=void 0,this.registering=!1,this.events.emit("close",e)}onPayload(e){if(typeof e.data>"u")return;const t=typeof e.data=="string"?cm(e.data):e.data;this.events.emit("payload",t)}onError(e,t){const i=this.parseError(t),n=i.message||i.toString(),s=vn(e,n);this.events.emit("payload",s)}parseError(e,t=this.url){return ru(e,Po(t),"WS")}resetMaxListeners(){this.events.getMaxListeners()>Ao&&this.events.setMaxListeners(Ao)}emitError(e){const t=this.parseError(new Error((e==null?void 0:e.message)||`WebSocket connection failed for host: ${Po(this.url)}`));return this.events.emit("register_error",t),t}}var X={};Object.defineProperty(X,"__esModule",{value:!0});X.getLocalStorage=X.getLocalStorageOrThrow=X.getCrypto=X.getCryptoOrThrow=X.getLocation=X.getLocationOrThrow=X.getNavigator=X.getNavigatorOrThrow=Il=X.getDocument=X.getDocumentOrThrow=X.getFromWindowOrThrow=X.getFromWindow=void 0;function kt(r){let e;return typeof window<"u"&&typeof window[r]<"u"&&(e=window[r]),e}X.getFromWindow=kt;function ir(r){const e=kt(r);if(!e)throw new Error(`${r} is not defined in Window`);return e}X.getFromWindowOrThrow=ir;function pm(){return ir("document")}X.getDocumentOrThrow=pm;function gm(){return kt("document")}var Il=X.getDocument=gm;function ym(){return ir("navigator")}X.getNavigatorOrThrow=ym;function mm(){return kt("navigator")}X.getNavigator=mm;function vm(){return ir("location")}X.getLocationOrThrow=vm;function wm(){return kt("location")}X.getLocation=wm;function _m(){return ir("crypto")}X.getCryptoOrThrow=_m;function bm(){return kt("crypto")}X.getCrypto=bm;function Em(){return ir("localStorage")}X.getLocalStorageOrThrow=Em;function Sm(){return kt("localStorage")}X.getLocalStorage=Sm;const xl="wc",Pl=2,pn="core",We=`${xl}@2:${pn}:`,Im={logger:"error"},xm={database:":memory:"},Pm="crypto",To="client_ed25519_seed",Am=I.ONE_DAY,Tm="keychain",Rm="0.3",Cm="messages",Nm="0.3",Ro=I.SIX_HOURS,Om="publisher",Al="irn",$m="error",Tl="wss://relay.walletconnect.org",km="relayer",ne={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"},Mm="_subscription",Ae={payload:"payload",connect:"connect",disconnect:"disconnect",error:"error"},Lm=.1,gn="2.18.0",G={link_mode:"link_mode",relay:"relay"},Dm="0.3",Fm="WALLETCONNECT_CLIENT_ID",Co="WALLETCONNECT_LINK_MODE_APPS",ve={created:"subscription_created",deleted:"subscription_deleted",expired:"subscription_expired",disabled:"subscription_disabled",sync:"subscription_sync",resubscribed:"subscription_resubscribed"},qm="subscription",Um="0.3",Bm=I.FIVE_SECONDS*1e3,zm="pairing",Km="0.3",cr={wc_pairingDelete:{req:{ttl:I.ONE_DAY,prompt:!1,tag:1e3},res:{ttl:I.ONE_DAY,prompt:!1,tag:1001}},wc_pairingPing:{req:{ttl:I.THIRTY_SECONDS,prompt:!1,tag:1002},res:{ttl:I.THIRTY_SECONDS,prompt:!1,tag:1003}},unregistered_method:{req:{ttl:I.ONE_DAY,prompt:!1,tag:0},res:{ttl:I.ONE_DAY,prompt:!1,tag:0}}},Et={create:"pairing_create",expire:"pairing_expire",delete:"pairing_delete",ping:"pairing_ping"},Me={created:"history_created",updated:"history_updated",deleted:"history_deleted",sync:"history_sync"},jm="history",Vm="0.3",Wm="expirer",Te={created:"expirer_created",deleted:"expirer_deleted",expired:"expirer_expired",sync:"expirer_sync"},Hm="0.3",Jm="verify-api",Gm="https://verify.walletconnect.com",Rl="https://verify.walletconnect.org",mr=Rl,Ym=`${mr}/v3`,Qm=[Gm,Rl],Xm="echo",Zm="https://echo.walletconnect.com",Ve={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"},Xe={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"},Le={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"},wt={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"},_t={authenticated_session_approve_started:"authenticated_session_approve_started",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"},lr={no_internet_connection:"no_internet_connection",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"},e0=.1,t0="event-client",r0=86400,i0="https://pulse.walletconnect.org/batch";function n0(r,e){if(r.length>=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),i=0;i<t.length;i++)t[i]=255;for(var n=0;n<r.length;n++){var s=r.charAt(n),o=s.charCodeAt(0);if(t[o]!==255)throw new TypeError(s+" is ambiguous");t[o]=n}var a=r.length,c=r.charAt(0),l=Math.log(a)/Math.log(256),u=Math.log(256)/Math.log(a);function h(f){if(f instanceof Uint8Array||(ArrayBuffer.isView(f)?f=new Uint8Array(f.buffer,f.byteOffset,f.byteLength):Array.isArray(f)&&(f=Uint8Array.from(f))),!(f instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(f.length===0)return"";for(var g=0,y=0,m=0,v=f.length;m!==v&&f[m]===0;)m++,g++;for(var _=(v-m)*u+1>>>0,w=new Uint8Array(_);m!==v;){for(var b=f[m],E=0,S=_-1;(b!==0||E<y)&&S!==-1;S--,E++)b+=256*w[S]>>>0,w[S]=b%a>>>0,b=b/a>>>0;if(b!==0)throw new Error("Non-zero carry");y=E,m++}for(var x=_-y;x!==_&&w[x]===0;)x++;for(var C=c.repeat(g);x<_;++x)C+=r.charAt(w[x]);return C}function p(f){if(typeof f!="string")throw new TypeError("Expected String");if(f.length===0)return new Uint8Array;var g=0;if(f[g]!==" "){for(var y=0,m=0;f[g]===c;)y++,g++;for(var v=(f.length-g)*l+1>>>0,_=new Uint8Array(v);f[g];){var w=t[f.charCodeAt(g)];if(w===255)return;for(var b=0,E=v-1;(w!==0||b<m)&&E!==-1;E--,b++)w+=a*_[E]>>>0,_[E]=w%256>>>0,w=w/256>>>0;if(w!==0)throw new Error("Non-zero carry");m=b,g++}if(f[g]!==" "){for(var S=v-m;S!==v&&_[S]===0;)S++;for(var x=new Uint8Array(y+(v-S)),C=y;S!==v;)x[C++]=_[S++];return x}}}function d(f){var g=p(f);if(g)return g;throw new Error(`Non-${e} character`)}return{encode:h,decodeUnsafe:p,decode:d}}var s0=n0,o0=s0;const Cl=r=>{if(r instanceof Uint8Array&&r.constructor.name==="Uint8Array")return r;if(r instanceof ArrayBuffer)return new Uint8Array(r);if(ArrayBuffer.isView(r))return new Uint8Array(r.buffer,r.byteOffset,r.byteLength);throw new Error("Unknown type, must be binary type")},a0=r=>new TextEncoder().encode(r),c0=r=>new TextDecoder().decode(r);class l0{constructor(e,t,i){this.name=e,this.prefix=t,this.baseEncode=i}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}}class u0{constructor(e,t,i){if(this.name=e,this.prefix=t,t.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=t.codePointAt(0),this.baseDecode=i}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 Nl(this,e)}}class h0{constructor(e){this.decoders=e}or(e){return Nl(this,e)}decode(e){const t=e[0],i=this.decoders[t];if(i)return i.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}}const Nl=(r,e)=>new h0({...r.decoders||{[r.prefix]:r},...e.decoders||{[e.prefix]:e}});class d0{constructor(e,t,i,n){this.name=e,this.prefix=t,this.baseEncode=i,this.baseDecode=n,this.encoder=new l0(e,t,i),this.decoder=new u0(e,t,n)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}}const wi=({name:r,prefix:e,encode:t,decode:i})=>new d0(r,e,t,i),Or=({prefix:r,name:e,alphabet:t})=>{const{encode:i,decode:n}=o0(t,e);return wi({prefix:r,name:e,encode:i,decode:s=>Cl(n(s))})},f0=(r,e,t,i)=>{const n={};for(let u=0;u<e.length;++u)n[e[u]]=u;let s=r.length;for(;r[s-1]==="=";)--s;const o=new Uint8Array(s*t/8|0);let a=0,c=0,l=0;for(let u=0;u<s;++u){const h=n[r[u]];if(h===void 0)throw new SyntaxError(`Non-${i} character`);c=c<<t|h,a+=t,a>=8&&(a-=8,o[l++]=255&c>>a)}if(a>=t||255&c<<8-a)throw new SyntaxError("Unexpected end of data");return o},p0=(r,e,t)=>{const i=e[e.length-1]==="=",n=(1<<t)-1;let s="",o=0,a=0;for(let c=0;c<r.length;++c)for(a=a<<8|r[c],o+=8;o>t;)o-=t,s+=e[n&a>>o];if(o&&(s+=e[n&a<<t-o]),i)for(;s.length*t&7;)s+="=";return s},ce=({name:r,prefix:e,bitsPerChar:t,alphabet:i})=>wi({prefix:e,name:r,encode(n){return p0(n,i,t)},decode(n){return f0(n,i,t,r)}}),g0=wi({prefix:"\0",name:"identity",encode:r=>c0(r),decode:r=>a0(r)});var y0=Object.freeze({__proto__:null,identity:g0});const m0=ce({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var v0=Object.freeze({__proto__:null,base2:m0});const w0=ce({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var _0=Object.freeze({__proto__:null,base8:w0});const b0=Or({prefix:"9",name:"base10",alphabet:"0123456789"});var E0=Object.freeze({__proto__:null,base10:b0});const S0=ce({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),I0=ce({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var x0=Object.freeze({__proto__:null,base16:S0,base16upper:I0});const P0=ce({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),A0=ce({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),T0=ce({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),R0=ce({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),C0=ce({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),N0=ce({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),O0=ce({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),$0=ce({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),k0=ce({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var M0=Object.freeze({__proto__:null,base32:P0,base32upper:A0,base32pad:T0,base32padupper:R0,base32hex:C0,base32hexupper:N0,base32hexpad:O0,base32hexpadupper:$0,base32z:k0});const L0=Or({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),D0=Or({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var F0=Object.freeze({__proto__:null,base36:L0,base36upper:D0});const q0=Or({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),U0=Or({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var B0=Object.freeze({__proto__:null,base58btc:q0,base58flickr:U0});const z0=ce({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),K0=ce({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),j0=ce({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),V0=ce({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var W0=Object.freeze({__proto__:null,base64:z0,base64pad:K0,base64url:j0,base64urlpad:V0});const Ol=Array.from("🚀🪐☄🛰🌌🌑🌒🌓🌔🌕🌖🌗🌘🌍🌏🌎🐉☀💻🖥💾💿😂❤😍🤣😊🙏💕😭😘👍😅👏😁🔥🥰💔💖💙😢🤔😆🙄💪😉☺👌🤗💜😔😎😇🌹🤦🎉💞✌✨🤷😱😌🌸🙌😋💗💚😏💛🙂💓🤩😄😀🖤😃💯🙈👇🎶😒🤭❣😜💋👀😪😑💥🙋😞😩😡🤪👊🥳😥🤤👉💃😳✋😚😝😴🌟😬🙃🍀🌷😻😓⭐✅🥺🌈😈🤘💦✔😣🏃💐☹🎊💘😠☝😕🌺🎂🌻😐🖕💝🙊😹🗣💫💀👑🎵🤞😛🔴😤🌼😫⚽🤙☕🏆🤫👈😮🙆🍻🍃🐶💁😲🌿🧡🎁⚡🌞🎈❌✊👋😰🤨😶🤝🚶💰🍓💢🤟🙁🚨💨🤬✈🎀🍺🤓😙💟🌱😖👶🥴▶➡❓💎💸⬇😨🌚🦋😷🕺⚠🙅😟😵👎🤲🤠🤧📌🔵💅🧐🐾🍒😗🤑🌊🤯🐷☎💧😯💆👆🎤🙇🍑❄🌴💣🐸💌📍🥀🤢👅💡💩👐📸👻🤐🤮🎼🥵🚩🍎🍊👼💍📣🥂"),H0=Ol.reduce((r,e,t)=>(r[t]=e,r),[]),J0=Ol.reduce((r,e,t)=>(r[e.codePointAt(0)]=t,r),[]);function G0(r){return r.reduce((e,t)=>(e+=H0[t],e),"")}function Y0(r){const e=[];for(const t of r){const i=J0[t.codePointAt(0)];if(i===void 0)throw new Error(`Non-base256emoji character: ${t}`);e.push(i)}return new Uint8Array(e)}const Q0=wi({prefix:"🚀",name:"base256emoji",encode:G0,decode:Y0});var X0=Object.freeze({__proto__:null,base256emoji:Q0}),Z0=$l,No=128,ev=-128,tv=Math.pow(2,31);function $l(r,e,t){e=e||[],t=t||0;for(var i=t;r>=tv;)e[t++]=r&255|No,r/=128;for(;r&ev;)e[t++]=r&255|No,r>>>=7;return e[t]=r|0,$l.bytes=t-i+1,e}var rv=yn,iv=128,Oo=127;function yn(r,i){var t=0,i=i||0,n=0,s=i,o,a=r.length;do{if(s>=a)throw yn.bytes=0,new RangeError("Could not decode varint");o=r[s++],t+=n<28?(o&Oo)<<n:(o&Oo)*Math.pow(2,n),n+=7}while(o>=iv);return yn.bytes=s-i,t}var nv=Math.pow(2,7),sv=Math.pow(2,14),ov=Math.pow(2,21),av=Math.pow(2,28),cv=Math.pow(2,35),lv=Math.pow(2,42),uv=Math.pow(2,49),hv=Math.pow(2,56),dv=Math.pow(2,63),fv=function(r){return r<nv?1:r<sv?2:r<ov?3:r<av?4:r<cv?5:r<lv?6:r<uv?7:r<hv?8:r<dv?9:10},pv={encode:Z0,decode:rv,encodingLength:fv},kl=pv;const $o=(r,e,t=0)=>(kl.encode(r,e,t),e),ko=r=>kl.encodingLength(r),mn=(r,e)=>{const t=e.byteLength,i=ko(r),n=i+ko(t),s=new Uint8Array(n+t);return $o(r,s,0),$o(t,s,i),s.set(e,n),new gv(r,t,e,s)};class gv{constructor(e,t,i,n){this.code=e,this.size=t,this.digest=i,this.bytes=n}}const Ml=({name:r,code:e,encode:t})=>new yv(r,e,t);class yv{constructor(e,t,i){this.name=e,this.code=t,this.encode=i}digest(e){if(e instanceof Uint8Array){const t=this.encode(e);return t instanceof Uint8Array?mn(this.code,t):t.then(i=>mn(this.code,i))}else throw Error("Unknown type, must be binary type")}}const Ll=r=>async e=>new Uint8Array(await crypto.subtle.digest(r,e)),mv=Ml({name:"sha2-256",code:18,encode:Ll("SHA-256")}),vv=Ml({name:"sha2-512",code:19,encode:Ll("SHA-512")});var wv=Object.freeze({__proto__:null,sha256:mv,sha512:vv});const Dl=0,_v="identity",Fl=Cl,bv=r=>mn(Dl,Fl(r)),Ev={code:Dl,name:_v,encode:Fl,digest:bv};var Sv=Object.freeze({__proto__:null,identity:Ev});new TextEncoder,new TextDecoder;const Mo={...y0,...v0,..._0,...E0,...x0,...M0,...F0,...B0,...W0,...X0};({...wv,...Sv});function Iv(r=0){return globalThis.Buffer!=null&&globalThis.Buffer.allocUnsafe!=null?globalThis.Buffer.allocUnsafe(r):new Uint8Array(r)}function ql(r,e,t,i){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:i}}}const Lo=ql("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),zi=ql("ascii","a",r=>{let e="a";for(let t=0;t<r.length;t++)e+=String.fromCharCode(r[t]);return e},r=>{r=r.substring(1);const e=Iv(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),xv={utf8:Lo,"utf-8":Lo,hex:Mo.base16,latin1:zi,ascii:zi,binary:zi,...Mo};function Pv(r,e="utf8"){const t=xv[e];if(!t)throw new Error(`Unsupported encoding "${e}"`);return(e==="utf8"||e==="utf-8")&&globalThis.Buffer!=null&&globalThis.Buffer.from!=null?globalThis.Buffer.from(r,"utf8"):t.decoder.decode(`${t.prefix}${r}`)}class Av{constructor(e,t){this.core=e,this.logger=t,this.keychain=new Map,this.name=Tm,this.version=Rm,this.initialized=!1,this.storagePrefix=We,this.init=async()=>{if(!this.initialized){const i=await this.getKeyChain();typeof i<"u"&&(this.keychain=i),this.initialized=!0}},this.has=i=>(this.isInitialized(),this.keychain.has(i)),this.set=async(i,n)=>{this.isInitialized(),this.keychain.set(i,n),await this.persist()},this.get=i=>{this.isInitialized();const n=this.keychain.get(i);if(typeof n>"u"){const{message:s}=P("NO_MATCHING_KEY",`${this.name}: ${i}`);throw new Error(s)}return n},this.del=async i=>{this.isInitialized(),this.keychain.delete(i),await this.persist()},this.core=e,this.logger=pe(t,this.name)}get context(){return be(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}async setKeyChain(e){await this.core.storage.setItem(this.storageKey,Jc(e))}async getKeyChain(){const e=await this.core.storage.getItem(this.storageKey);return typeof e<"u"?Gc(e):void 0}async persist(){await this.setKeyChain(this.keychain)}isInitialized(){if(!this.initialized){const{message:e}=P("NOT_INITIALIZED",this.name);throw new Error(e)}}}class Tv{constructor(e,t,i){this.core=e,this.logger=t,this.name=Pm,this.randomSessionIdentifier=fn(),this.initialized=!1,this.init=async()=>{this.initialized||(await this.keychain.init(),this.initialized=!0)},this.hasKeys=n=>(this.isInitialized(),this.keychain.has(n)),this.getClientId=async()=>{this.isInitialized();const n=await this.getClientSeed(),s=ss(n);return su(s.publicKey)},this.generateKeyPair=()=>{this.isInitialized();const n=uy();return this.setPrivateKey(n.publicKey,n.privateKey)},this.signJWT=async n=>{this.isInitialized();const s=await this.getClientSeed(),o=ss(s),a=this.randomSessionIdentifier;return await ou(a,n,Am,o)},this.generateSharedKey=(n,s,o)=>{this.isInitialized();const a=this.getPrivateKey(n),c=hy(a,s);return this.setSymKey(c,o)},this.setSymKey=async(n,s)=>{this.isInitialized();const o=s||jr(n);return await this.keychain.set(o,n),o},this.deleteKeyPair=async n=>{this.isInitialized(),await this.keychain.del(n)},this.deleteSymKey=async n=>{this.isInitialized(),await this.keychain.del(n)},this.encode=async(n,s,o)=>{this.isInitialized();const a=bl(o),c=Nf(s);if(mo(a))return py(c,o==null?void 0:o.encoding);if(yo(a)){const p=a.senderPublicKey,d=a.receiverPublicKey;n=await this.generateSharedKey(p,d)}const l=this.getSymKey(n),{type:u,senderPublicKey:h}=a;return dy({type:u,symKey:l,message:c,senderPublicKey:h,encoding:o==null?void 0:o.encoding})},this.decode=async(n,s,o)=>{this.isInitialized();const a=yy(s,o);if(mo(a)){const c=gy(s,o==null?void 0:o.encoding);return Fs(c)}if(yo(a)){const c=a.receiverPublicKey,l=a.senderPublicKey;n=await this.generateSharedKey(c,l)}try{const c=this.getSymKey(n),l=fy({symKey:c,encoded:s,encoding:o==null?void 0:o.encoding});return Fs(l)}catch(c){this.logger.error(`Failed to decode message from topic: '${n}', clientId: '${await this.getClientId()}'`),this.logger.error(c)}},this.getPayloadType=(n,s=ut)=>{const o=Sr({encoded:n,encoding:s});return Tt(o.type)},this.getPayloadSenderPublicKey=(n,s=ut)=>{const o=Sr({encoded:n,encoding:s});return o.senderPublicKey?fe(o.senderPublicKey,ue):void 0},this.core=e,this.logger=pe(t,this.name),this.keychain=i||new Av(this.core,this.logger)}get context(){return be(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(To)}catch{e=fn(),await this.keychain.set(To,e)}return Pv(e,"base16")}getSymKey(e){return this.keychain.get(e)}isInitialized(){if(!this.initialized){const{message:e}=P("NOT_INITIALIZED",this.name);throw new Error(e)}}}class Rv extends _f{constructor(e,t){super(e,t),this.logger=e,this.core=t,this.messages=new Map,this.name=Cm,this.version=Nm,this.initialized=!1,this.storagePrefix=We,this.init=async()=>{if(!this.initialized){this.logger.trace("Initialized");try{const i=await this.getRelayerMessages();typeof i<"u"&&(this.messages=i),this.logger.debug(`Successfully Restored records for ${this.name}`),this.logger.trace({type:"method",method:"restore",size:this.messages.size})}catch(i){this.logger.debug(`Failed to Restore records for ${this.name}`),this.logger.error(i)}finally{this.initialized=!0}}},this.set=async(i,n)=>{this.isInitialized();const s=Ze(n);let o=this.messages.get(i);return typeof o>"u"&&(o={}),typeof o[s]<"u"||(o[s]=n,this.messages.set(i,o),await this.persist()),s},this.get=i=>{this.isInitialized();let n=this.messages.get(i);return typeof n>"u"&&(n={}),n},this.has=(i,n)=>{this.isInitialized();const s=this.get(i),o=Ze(n);return typeof s[o]<"u"},this.del=async i=>{this.isInitialized(),this.messages.delete(i),await this.persist()},this.logger=pe(e,this.name),this.core=t}get context(){return be(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}async setRelayerMessages(e){await this.core.storage.setItem(this.storageKey,Jc(e))}async getRelayerMessages(){const e=await this.core.storage.getItem(this.storageKey);return typeof e<"u"?Gc(e):void 0}async persist(){await this.setRelayerMessages(this.messages)}isInitialized(){if(!this.initialized){const{message:e}=P("NOT_INITIALIZED",this.name);throw new Error(e)}}}var Cv=Object.defineProperty,Nv=Object.defineProperties,Ov=Object.getOwnPropertyDescriptors,Do=Object.getOwnPropertySymbols,$v=Object.prototype.hasOwnProperty,kv=Object.prototype.propertyIsEnumerable,Fo=(r,e,t)=>e in r?Cv(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,qo=(r,e)=>{for(var t in e||(e={}))$v.call(e,t)&&Fo(r,t,e[t]);if(Do)for(var t of Do(e))kv.call(e,t)&&Fo(r,t,e[t]);return r},Uo=(r,e)=>Nv(r,Ov(e));class Mv extends bf{constructor(e,t){super(e,t),this.relayer=e,this.logger=t,this.events=new He.EventEmitter,this.name=Om,this.queue=new Map,this.publishTimeout=I.toMiliseconds(I.ONE_MINUTE),this.initialPublishTimeout=I.toMiliseconds(I.ONE_SECOND*15),this.needsTransportRestart=!1,this.publish=async(i,n,s)=>{var o;this.logger.debug("Publishing Payload"),this.logger.trace({type:"method",method:"publish",params:{topic:i,message:n,opts:s}});const a=(s==null?void 0:s.ttl)||Ro,c=ti(s),l=(s==null?void 0:s.prompt)||!1,u=(s==null?void 0:s.tag)||0,h=(s==null?void 0:s.id)||xt().toString(),p={topic:i,message:n,opts:{ttl:a,relay:c,prompt:l,tag:u,id:h,attestation:s==null?void 0:s.attestation}},d=`Failed to publish payload, please try again. id:${h} tag:${u}`;try{const f=new Promise(async g=>{const y=({id:v})=>{p.opts.id===v&&(this.removeRequestFromQueue(v),this.relayer.events.removeListener(ne.publish,y),g(p))};this.relayer.events.on(ne.publish,y);const m=lt(new Promise((v,_)=>{this.rpcPublish({topic:i,message:n,ttl:a,prompt:l,tag:u,id:h,attestation:s==null?void 0:s.attestation}).then(v).catch(w=>{this.logger.warn(w,w==null?void 0:w.message),_(w)})}),this.initialPublishTimeout,`Failed initial publish, retrying.... id:${h} tag:${u}`);try{await m,this.events.removeListener(ne.publish,y)}catch(v){this.queue.set(h,Uo(qo({},p),{attempt:1})),this.logger.warn(v,v==null?void 0:v.message)}});this.logger.trace({type:"method",method:"publish",params:{id:h,topic:i,message:n,opts:s}}),await lt(f,this.publishTimeout,d)}catch(f){if(this.logger.debug("Failed to Publish Payload"),this.logger.error(f),(o=s==null?void 0:s.internal)!=null&&o.throwOnFailedPublish)throw f}finally{this.queue.delete(h)}},this.on=(i,n)=>{this.events.on(i,n)},this.once=(i,n)=>{this.events.once(i,n)},this.off=(i,n)=>{this.events.off(i,n)},this.removeListener=(i,n)=>{this.events.removeListener(i,n)},this.relayer=e,this.logger=pe(t,this.name),this.registerEventListeners()}get context(){return be(this.logger)}async rpcPublish(e){var t,i,n,s;const{topic:o,message:a,ttl:c=Ro,prompt:l,tag:u,id:h,attestation:p}=e,d={method:dr(ti().protocol).publish,params:{topic:o,message:a,ttl:c,prompt:l,tag:u,attestation:p},id:h};de((t=d.params)==null?void 0:t.prompt)&&((i=d.params)==null||delete i.prompt),de((n=d.params)==null?void 0:n.tag)&&((s=d.params)==null||delete s.tag),this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"message",direction:"outgoing",request:d});const f=await this.relayer.request(d);return this.relayer.events.emit(ne.publish,e),this.logger.debug("Successfully Published Payload"),f}removeRequestFromQueue(e){this.queue.delete(e)}checkQueue(){this.queue.forEach(async(e,t)=>{const i=e.attempt+1;this.queue.set(t,Uo(qo({},e),{attempt:i}));const{topic:n,message:s,opts:o,attestation:a}=e;this.logger.warn({},`Publisher: queue->publishing: ${e.opts.id}, tag: ${e.opts.tag}, attempt: ${i}`),await this.rpcPublish({topic:n,message:s,ttl:o.ttl,prompt:o.prompt,tag:o.tag,id:o.id,attestation:a}),this.logger.warn({},`Publisher: queue->published: ${e.opts.id}`)})}registerEventListeners(){this.relayer.core.heartbeat.on(Zt.pulse,()=>{if(this.needsTransportRestart){this.needsTransportRestart=!1,this.relayer.events.emit(ne.connection_stalled);return}this.checkQueue()}),this.relayer.on(ne.message_ack,e=>{this.removeRequestFromQueue(e.id.toString())})}}class Lv{constructor(){this.map=new Map,this.set=(e,t)=>{const i=this.get(e);this.exists(e,t)||this.map.set(e,[...i,t])},this.get=e=>this.map.get(e)||[],this.exists=(e,t)=>this.get(e).includes(t),this.delete=(e,t)=>{if(typeof t>"u"){this.map.delete(e);return}if(!this.map.has(e))return;const i=this.get(e);if(!this.exists(e,t))return;const n=i.filter(s=>s!==t);if(!n.length){this.map.delete(e);return}this.map.set(e,n)},this.clear=()=>{this.map.clear()}}get topics(){return Array.from(this.map.keys())}}var Dv=Object.defineProperty,Fv=Object.defineProperties,qv=Object.getOwnPropertyDescriptors,Bo=Object.getOwnPropertySymbols,Uv=Object.prototype.hasOwnProperty,Bv=Object.prototype.propertyIsEnumerable,zo=(r,e,t)=>e in r?Dv(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,ur=(r,e)=>{for(var t in e||(e={}))Uv.call(e,t)&&zo(r,t,e[t]);if(Bo)for(var t of Bo(e))Bv.call(e,t)&&zo(r,t,e[t]);return r},Ki=(r,e)=>Fv(r,qv(e));class zv extends If{constructor(e,t){super(e,t),this.relayer=e,this.logger=t,this.subscriptions=new Map,this.topicMap=new Lv,this.events=new He.EventEmitter,this.name=qm,this.version=Um,this.pending=new Map,this.cached=[],this.initialized=!1,this.pendingSubscriptionWatchLabel="pending_sub_watch_label",this.pollingInterval=20,this.storagePrefix=We,this.subscribeTimeout=I.toMiliseconds(I.ONE_MINUTE),this.initialSubscribeTimeout=I.toMiliseconds(I.ONE_SECOND*15),this.batchSubscribeTopicsLimit=500,this.init=async()=>{this.initialized||(this.logger.trace("Initialized"),this.registerEventListeners(),this.clientId=await this.relayer.core.crypto.getClientId(),await this.restore()),this.initialized=!0},this.subscribe=async(i,n)=>{this.isInitialized(),this.logger.debug("Subscribing Topic"),this.logger.trace({type:"method",method:"subscribe",params:{topic:i,opts:n}});try{const s=ti(n),o={topic:i,relay:s,transportType:n==null?void 0:n.transportType};this.pending.set(i,o);const a=await this.rpcSubscribe(i,s,n);return typeof a=="string"&&(this.onSubscribe(a,o),this.logger.debug("Successfully Subscribed Topic"),this.logger.trace({type:"method",method:"subscribe",params:{topic:i,opts:n}})),a}catch(s){throw this.logger.debug("Failed to Subscribe Topic"),this.logger.error(s),s}},this.unsubscribe=async(i,n)=>{await this.restartToComplete(),this.isInitialized(),typeof(n==null?void 0:n.id)<"u"?await this.unsubscribeById(i,n.id,n):await this.unsubscribeByTopic(i,n)},this.isSubscribed=async i=>{if(this.topics.includes(i))return!0;const n=`${this.pendingSubscriptionWatchLabel}_${i}`;return await new Promise((s,o)=>{const a=new I.Watch;a.start(n);const c=setInterval(()=>{(!this.pending.has(i)&&this.topics.includes(i)||this.cached.some(l=>l.topic===i))&&(clearInterval(c),a.stop(n),s(!0)),a.elapsed(n)>=Bm&&(clearInterval(c),a.stop(n),o(new Error("Subscription resolution timeout")))},this.pollingInterval)}).catch(()=>!1)},this.on=(i,n)=>{this.events.on(i,n)},this.once=(i,n)=>{this.events.once(i,n)},this.off=(i,n)=>{this.events.off(i,n)},this.removeListener=(i,n)=>{this.events.removeListener(i,n)},this.start=async()=>{await this.onConnect()},this.stop=async()=>{await this.onDisconnect()},this.restart=async()=>{await this.restore(),await this.onRestart()},this.checkPending=async()=>{if(this.pending.size===0&&(!this.initialized||!this.relayer.connected))return;const i=[];this.pending.forEach(n=>{i.push(n)}),await this.batchSubscribe(i)},this.registerEventListeners=()=>{this.relayer.core.heartbeat.on(Zt.pulse,async()=>{await this.checkPending()}),this.events.on(ve.created,async i=>{const n=ve.created;this.logger.info(`Emitting ${n}`),this.logger.debug({type:"event",event:n,data:i}),await this.persist()}),this.events.on(ve.deleted,async i=>{const n=ve.deleted;this.logger.info(`Emitting ${n}`),this.logger.debug({type:"event",event:n,data:i}),await this.persist()})},this.relayer=e,this.logger=pe(t,this.name),this.clientId=""}get context(){return be(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}hasSubscription(e,t){let i=!1;try{i=this.getSubscription(e).topic===t}catch{}return i}reset(){this.cached=[],this.initialized=!0}onDisable(){this.cached=this.values,this.subscriptions.clear(),this.topicMap.clear()}async unsubscribeByTopic(e,t){const i=this.topicMap.get(e);await Promise.all(i.map(async n=>await this.unsubscribeById(e,n,t)))}async unsubscribeById(e,t,i){this.logger.debug("Unsubscribing Topic"),this.logger.trace({type:"method",method:"unsubscribe",params:{topic:e,id:t,opts:i}});try{const n=ti(i);await this.rpcUnsubscribe(e,t,n);const s=H("USER_DISCONNECTED",`${this.name}, ${e}`);await this.onUnsubscribe(e,t,s),this.logger.debug("Successfully Unsubscribed Topic"),this.logger.trace({type:"method",method:"unsubscribe",params:{topic:e,id:t,opts:i}})}catch(n){throw this.logger.debug("Failed to Unsubscribe Topic"),this.logger.error(n),n}}async rpcSubscribe(e,t,i){var n;(i==null?void 0:i.transportType)===G.relay&&await this.restartToComplete();const s={method:dr(t.protocol).subscribe,params:{topic:e}};this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"payload",direction:"outgoing",request:s});const o=(n=i==null?void 0:i.internal)==null?void 0:n.throwOnFailedPublish;try{const a=this.getSubscriptionId(e);if((i==null?void 0:i.transportType)===G.link_mode)return setTimeout(()=>{(this.relayer.connected||this.relayer.connecting)&&this.relayer.request(s).catch(u=>this.logger.warn(u))},I.toMiliseconds(I.ONE_SECOND)),a;const c=new Promise(async u=>{const h=p=>{p.topic===e&&(this.events.removeListener(ve.created,h),u(p.id))};this.events.on(ve.created,h);try{const p=await lt(new Promise((d,f)=>{this.relayer.request(s).catch(g=>{this.logger.warn(g,g==null?void 0:g.message),f(g)}).then(d)}),this.initialSubscribeTimeout,`Subscribing to ${e} failed, please try again`);this.events.removeListener(ve.created,h),u(p)}catch{}}),l=await lt(c,this.subscribeTimeout,`Subscribing to ${e} failed, please try again`);if(!l&&o)throw new Error(`Subscribing to ${e} failed, please try again`);return l?a:null}catch(a){if(this.logger.debug("Outgoing Relay Subscribe Payload stalled"),this.relayer.events.emit(ne.connection_stalled),o)throw a}return null}async rpcBatchSubscribe(e){if(!e.length)return;const t=e[0].relay,i={method:dr(t.protocol).batchSubscribe,params:{topics:e.map(n=>n.topic)}};this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"payload",direction:"outgoing",request:i});try{await await lt(new Promise(n=>{this.relayer.request(i).catch(s=>this.logger.warn(s)).then(n)}),this.subscribeTimeout,"rpcBatchSubscribe failed, please try again")}catch{this.relayer.events.emit(ne.connection_stalled)}}async rpcBatchFetchMessages(e){if(!e.length)return;const t=e[0].relay,i={method:dr(t.protocol).batchFetchMessages,params:{topics:e.map(s=>s.topic)}};this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"payload",direction:"outgoing",request:i});let n;try{n=await await lt(new Promise((s,o)=>{this.relayer.request(i).catch(a=>{this.logger.warn(a),o(a)}).then(s)}),this.subscribeTimeout,"rpcBatchFetchMessages failed, please try again")}catch{this.relayer.events.emit(ne.connection_stalled)}return n}rpcUnsubscribe(e,t,i){const n={method:dr(i.protocol).unsubscribe,params:{topic:e,id:t}};return this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"payload",direction:"outgoing",request:n}),this.relayer.request(n)}onSubscribe(e,t){this.setSubscription(e,Ki(ur({},t),{id:e})),this.pending.delete(t.topic)}onBatchSubscribe(e){e.length&&e.forEach(t=>{this.setSubscription(t.id,ur({},t)),this.pending.delete(t.topic)})}async onUnsubscribe(e,t,i){this.events.removeAllListeners(t),this.hasSubscription(t,e)&&this.deleteSubscription(t,i),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,ur({},t)),this.topicMap.set(t.topic,e),this.events.emit(ve.created,t)}getSubscription(e){this.logger.debug("Getting subscription"),this.logger.trace({type:"method",method:"getSubscription",id:e});const t=this.subscriptions.get(e);if(!t){const{message:i}=P("NO_MATCHING_KEY",`${this.name}: ${e}`);throw new Error(i)}return t}deleteSubscription(e,t){this.logger.debug("Deleting subscription"),this.logger.trace({type:"method",method:"deleteSubscription",id:e,reason:t});const i=this.getSubscription(e);this.subscriptions.delete(e),this.topicMap.delete(i.topic,e),this.events.emit(ve.deleted,Ki(ur({},i),{reason:t}))}async persist(){await this.setRelayerSubscriptions(this.values),this.events.emit(ve.sync)}async onRestart(){if(this.cached.length){const e=[...this.cached],t=Math.ceil(this.cached.length/this.batchSubscribeTopicsLimit);for(let i=0;i<t;i++){const n=e.splice(0,this.batchSubscribeTopicsLimit);await this.batchSubscribe(n)}}this.events.emit(ve.resubscribed)}async restore(){try{const e=await this.getRelayerSubscriptions();if(typeof e>"u"||!e.length)return;if(this.subscriptions.size){const{message:t}=P("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(t),this.logger.error(`${this.name}: ${JSON.stringify(this.values)}`),new Error(t)}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(e.map(t=>Ki(ur({},t),{id:this.getSubscriptionId(t.topic)}))))}async batchFetchMessages(e){if(!e.length)return;this.logger.trace(`Fetching batch messages for ${e.length} subscriptions`);const t=await this.rpcBatchFetchMessages(e);t&&t.messages&&(await Ip(I.toMiliseconds(I.ONE_SECOND)),await this.relayer.handleBatchMessageEvents(t.messages))}async onConnect(){await this.restart(),this.reset()}onDisconnect(){this.onDisable()}isInitialized(){if(!this.initialized){const{message:e}=P("NOT_INITIALIZED",this.name);throw new Error(e)}}async restartToComplete(){!this.relayer.connected&&!this.relayer.connecting&&await this.relayer.transportOpen()}getSubscriptionId(e){return Ze(e+this.clientId)}}var Kv=Object.defineProperty,Ko=Object.getOwnPropertySymbols,jv=Object.prototype.hasOwnProperty,Vv=Object.prototype.propertyIsEnumerable,jo=(r,e,t)=>e in r?Kv(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Vo=(r,e)=>{for(var t in e||(e={}))jv.call(e,t)&&jo(r,t,e[t]);if(Ko)for(var t of Ko(e))Vv.call(e,t)&&jo(r,t,e[t]);return r};class Wv extends Ef{constructor(e){super(e),this.protocol="wc",this.version=2,this.events=new He.EventEmitter,this.name=km,this.transportExplicitlyClosed=!1,this.initialized=!1,this.connectionAttemptInProgress=!1,this.hasExperiencedNetworkDisruption=!1,this.heartBeatTimeout=I.toMiliseconds(I.THIRTY_SECONDS+I.FIVE_SECONDS),this.requestsInFlight=[],this.connectTimeout=I.toMiliseconds(I.ONE_SECOND*15),this.request=async t=>{var i,n;this.logger.debug("Publishing Request Payload");const s=t.id||xt().toString();await this.toEstablishConnection();try{this.logger.trace({id:s,method:t.method,topic:(i=t.params)==null?void 0:i.topic},"relayer.request - publishing...");const o=`${s}:${((n=t.params)==null?void 0:n.tag)||""}`;this.requestsInFlight.push(o);const a=await this.provider.request(t);return this.requestsInFlight=this.requestsInFlight.filter(c=>c!==o),a}catch(o){throw this.logger.debug(`Failed to Publish Request: ${s}`),o}},this.resetPingTimeout=()=>{if(Zr())try{clearTimeout(this.pingTimeout),this.pingTimeout=setTimeout(()=>{var t,i,n;this.logger.debug({},"pingTimeout: Connection stalled, terminating..."),(n=(i=(t=this.provider)==null?void 0:t.connection)==null?void 0:i.socket)==null||n.terminate()},this.heartBeatTimeout)}catch(t){this.logger.warn(t,t==null?void 0:t.message)}},this.onPayloadHandler=t=>{this.onProviderPayload(t),this.resetPingTimeout()},this.onConnectHandler=()=>{this.logger.warn({},"Relayer connected 🛜"),this.startPingTimeout(),this.events.emit(ne.connect)},this.onDisconnectHandler=()=>{this.logger.warn({},"Relayer disconnected 🛑"),this.requestsInFlight=[],this.onProviderDisconnect()},this.onProviderErrorHandler=t=>{this.logger.fatal(t,`Fatal socket error: ${t==null?void 0:t.message}`),this.events.emit(ne.error,t),this.logger.fatal("Fatal socket error received, closing transport"),this.transportClose()},this.registerProviderListeners=()=>{this.provider.on(Ae.payload,this.onPayloadHandler),this.provider.on(Ae.connect,this.onConnectHandler),this.provider.on(Ae.disconnect,this.onDisconnectHandler),this.provider.on(Ae.error,this.onProviderErrorHandler)},this.core=e.core,this.logger=typeof e.logger<"u"&&typeof e.logger!="string"?pe(e.logger,this.name):ca(wn({level:e.logger||$m})),this.messages=new Rv(this.logger,e.core),this.subscriber=new zv(this,this.logger),this.publisher=new Mv(this,this.logger),this.relayUrl=(e==null?void 0:e.relayUrl)||Tl,this.projectId=e.projectId,cp()?this.packageName=zs():lp()&&(this.bundleId=zs()),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.cached.length>0)try{await this.transportOpen()}catch(e){this.logger.warn(e,e==null?void 0:e.message)}}get context(){return be(this.logger)}get connected(){var e,t,i;return((i=(t=(e=this.provider)==null?void 0:e.connection)==null?void 0:t.socket)==null?void 0:i.readyState)===1}get connecting(){var e,t,i;return((i=(t=(e=this.provider)==null?void 0:e.connection)==null?void 0:t.socket)==null?void 0:i.readyState)===0}async publish(e,t,i){this.isInitialized(),await this.publisher.publish(e,t,i),await this.recordMessageEvent({topic:e,message:t,publishedAt:Date.now(),transportType:G.relay})}async subscribe(e,t){var i,n,s;this.isInitialized(),(!(t!=null&&t.transportType)||(t==null?void 0:t.transportType)==="relay")&&await this.toEstablishConnection();const o=typeof((i=t==null?void 0:t.internal)==null?void 0:i.throwOnFailedPublish)>"u"?!0:(n=t==null?void 0:t.internal)==null?void 0:n.throwOnFailedPublish;let a=((s=this.subscriber.topicMap.get(e))==null?void 0:s[0])||"",c;const l=u=>{u.topic===e&&(this.subscriber.off(ve.created,l),c())};return await Promise.all([new Promise(u=>{c=u,this.subscriber.on(ve.created,l)}),new Promise(async(u,h)=>{a=await this.subscriber.subscribe(e,Vo({internal:{throwOnFailedPublish:o}},t)).catch(p=>{o&&h(p)})||a,u()})]),a}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 lt(this.provider.disconnect(),2e3,"provider.disconnect()").catch(()=>this.onProviderDisconnect()):this.onProviderDisconnect()}async transportClose(){this.transportExplicitlyClosed=!0,await this.transportDisconnect()}async transportOpen(e){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,i)=>{await this.connect(e).then(t).catch(i).finally(()=>{this.connectPromise=void 0})}),await this.connectPromise),!this.connected)throw new 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 xo())throw new Error("No internet connection detected. Please restart your network and try again.")}async handleBatchMessageEvents(e){if((e==null?void 0:e.length)===0){this.logger.trace("Batch message events is empty. Ignoring...");return}const t=e.sort((i,n)=>i.publishedAt-n.publishedAt);this.logger.debug(`Batch of ${t.length} message events sorted`);for(const i of t)try{await this.onMessageEvent(i)}catch(n){this.logger.warn(n,"Error while processing batch message event: "+(n==null?void 0:n.message))}this.logger.trace(`Batch of ${t.length} message events processed`)}async onLinkMessageEvent(e,t){const{topic:i}=e;if(!t.sessionExists){const n=re(I.FIVE_MINUTES),s={topic:i,expiry:n,relay:{protocol:"irn"},active:!1};await this.core.pairing.pairings.set(i,s)}this.events.emit(ne.message,e),await this.recordMessageEvent(e)}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{this.logger.debug({},`Connecting to ${this.relayUrl}, attempt: ${t}...`),await this.createProvider(),await new Promise(async(i,n)=>{const s=()=>{n(new Error("Connection interrupted while trying to subscribe"))};this.provider.once(Ae.disconnect,s),await lt(new Promise((o,a)=>{this.provider.connect().then(o).catch(a)}),this.connectTimeout,`Socket stalled when trying to connect to ${this.relayUrl}`).catch(o=>{n(o)}).finally(()=>{this.provider.off(Ae.disconnect,s),clearTimeout(this.reconnectTimeout),this.reconnectTimeout=void 0}),await new Promise(async(o,a)=>{const c=()=>{a(new Error("Connection interrupted while trying to subscribe"))};this.provider.once(Ae.disconnect,c),await this.subscriber.start().then(o).catch(a).finally(()=>{this.provider.off(Ae.disconnect,c)})}),this.hasExperiencedNetworkDisruption=!1,i()})}catch(i){await this.subscriber.stop();const n=i;this.logger.warn({},n.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(i=>setTimeout(i,I.toMiliseconds(t*1))),t++}}startPingTimeout(){var e,t,i,n,s;if(Zr())try{(t=(e=this.provider)==null?void 0:e.connection)!=null&&t.socket&&((s=(n=(i=this.provider)==null?void 0:i.connection)==null?void 0:n.socket)==null||s.on("ping",()=>{this.resetPingTimeout()})),this.resetPingTimeout()}catch(o){this.logger.warn(o,o==null?void 0:o.message)}}async createProvider(){this.provider.connection&&this.unregisterProviderListeners();const e=await this.core.crypto.signJWT(this.relayUrl);this.provider=new du(new fm(fp({sdkVersion:gn,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){const{topic:t,message:i}=e;await this.messages.set(t,i)}async shouldIgnoreMessageEvent(e){const{topic:t,message:i}=e;if(!i||i.length===0)return this.logger.warn(`Ignoring invalid/empty message: ${i}`),!0;if(!await this.subscriber.isSubscribed(t))return this.logger.warn(`Ignoring message for non-subscribed topic ${t}`),!0;const n=this.messages.has(t,i);return n&&this.logger.warn(`Ignoring duplicate message: ${i}`),n}async onProviderPayload(e){if(this.logger.debug("Incoming Relay Payload"),this.logger.trace({type:"payload",direction:"incoming",payload:e}),_n(e)){if(!e.method.endsWith(Mm))return;const t=e.params,{topic:i,message:n,publishedAt:s,attestation:o}=t.data,a={topic:i,message:n,publishedAt:s,transportType:G.relay,attestation:o};this.logger.debug("Emitting Relayer Payload"),this.logger.trace(Vo({type:"event",event:t.id},a)),this.events.emit(t.id,a),await this.acknowledgePayload(e),await this.onMessageEvent(a)}else ni(e)&&this.events.emit(ne.message_ack,e)}async onMessageEvent(e){await this.shouldIgnoreMessageEvent(e)||(this.events.emit(ne.message,e),await this.recordMessageEvent(e))}async acknowledgePayload(e){const t=bn(e.id,!0);await this.provider.connection.send(t)}unregisterProviderListeners(){this.provider.off(Ae.payload,this.onPayloadHandler),this.provider.off(Ae.connect,this.onConnectHandler),this.provider.off(Ae.disconnect,this.onDisconnectHandler),this.provider.off(Ae.error,this.onProviderErrorHandler),clearTimeout(this.pingTimeout)}async registerEventListeners(){let e=await xo();im(async t=>{e!==t&&(e=t,t?await this.transportOpen().catch(i=>this.logger.error(i,i==null?void 0:i.message)):(this.hasExperiencedNetworkDisruption=!0,await this.transportDisconnect(),this.transportExplicitlyClosed=!1))})}async onProviderDisconnect(){await this.subscriber.stop(),clearTimeout(this.pingTimeout),this.events.emit(ne.disconnect),this.connectionAttemptInProgress=!1,!this.transportExplicitlyClosed&&(this.reconnectTimeout||this.connectPromise||(this.reconnectTimeout=setTimeout(async()=>{clearTimeout(this.reconnectTimeout),await this.transportOpen().catch(e=>this.logger.error(e,e==null?void 0:e.message))},I.toMiliseconds(Lm))))}isInitialized(){if(!this.initialized){const{message:e}=P("NOT_INITIALIZED",this.name);throw new Error(e)}}async toEstablishConnection(){await this.confirmOnlineStateOrThrow(),!this.connected&&await this.transportOpen()}}var Hv=Object.defineProperty,Wo=Object.getOwnPropertySymbols,Jv=Object.prototype.hasOwnProperty,Gv=Object.prototype.propertyIsEnumerable,Ho=(r,e,t)=>e in r?Hv(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Jo=(r,e)=>{for(var t in e||(e={}))Jv.call(e,t)&&Ho(r,t,e[t]);if(Wo)for(var t of Wo(e))Gv.call(e,t)&&Ho(r,t,e[t]);return r};class Mt extends Sf{constructor(e,t,i,n=We,s=void 0){super(e,t,i,n),this.core=e,this.logger=t,this.name=i,this.map=new Map,this.version=Dm,this.cached=[],this.initialized=!1,this.storagePrefix=We,this.recentlyDeleted=[],this.recentlyDeletedLimit=200,this.init=async()=>{this.initialized||(this.logger.trace("Initialized"),await this.restore(),this.cached.forEach(o=>{this.getKey&&o!==null&&!de(o)?this.map.set(this.getKey(o),o):ky(o)?this.map.set(o.id,o):My(o)&&this.map.set(o.topic,o)}),this.cached=[],this.initialized=!0)},this.set=async(o,a)=>{this.isInitialized(),this.map.has(o)?await this.update(o,a):(this.logger.debug("Setting value"),this.logger.trace({type:"method",method:"set",key:o,value:a}),this.map.set(o,a),await this.persist())},this.get=o=>(this.isInitialized(),this.logger.debug("Getting value"),this.logger.trace({type:"method",method:"get",key:o}),this.getData(o)),this.getAll=o=>(this.isInitialized(),o?this.values.filter(a=>Object.keys(o).every(c=>au(a[c],o[c]))):this.values),this.update=async(o,a)=>{this.isInitialized(),this.logger.debug("Updating value"),this.logger.trace({type:"method",method:"update",key:o,update:a});const c=Jo(Jo({},this.getData(o)),a);this.map.set(o,c),await this.persist()},this.delete=async(o,a)=>{this.isInitialized(),this.map.has(o)&&(this.logger.debug("Deleting value"),this.logger.trace({type:"method",method:"delete",key:o,reason:a}),this.map.delete(o),this.addToRecentlyDeleted(o),await this.persist())},this.logger=pe(t,this.name),this.storagePrefix=n,this.getKey=s}get context(){return be(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){const t=this.map.get(e);if(!t){if(this.recentlyDeleted.includes(e)){const{message:n}=P("MISSING_OR_INVALID",`Record was recently deleted - ${this.name}: ${e}`);throw this.logger.error(n),new Error(n)}const{message:i}=P("NO_MATCHING_KEY",`${this.name}: ${e}`);throw this.logger.error(i),new Error(i)}return t}async persist(){await this.setDataStore(this.values)}async restore(){try{const e=await this.getDataStore();if(typeof e>"u"||!e.length)return;if(this.map.size){const{message:t}=P("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(t),new Error(t)}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){const{message:e}=P("NOT_INITIALIZED",this.name);throw new Error(e)}}}class Yv{constructor(e,t){this.core=e,this.logger=t,this.name=zm,this.version=Km,this.events=new aa,this.initialized=!1,this.storagePrefix=We,this.ignoredPayloadTypes=[rt],this.registeredMethods=[],this.init=async()=>{this.initialized||(await this.pairings.init(),await this.cleanup(),this.registerRelayerEvents(),this.registerExpirerEvents(),this.initialized=!0,this.logger.trace("Initialized"))},this.register=({methods:i})=>{this.isInitialized(),this.registeredMethods=[...new Set([...this.registeredMethods,...i])]},this.create=async i=>{this.isInitialized();const n=fn(),s=await this.core.crypto.setSymKey(n),o=re(I.FIVE_MINUTES),a={protocol:Al},c={topic:s,expiry:o,relay:a,active:!1,methods:i==null?void 0:i.methods},l=wo({protocol:this.core.protocol,version:this.core.version,topic:s,symKey:n,relay:a,expiryTimestamp:o,methods:i==null?void 0:i.methods});return this.events.emit(Et.create,c),this.core.expirer.set(s,o),await this.pairings.set(s,c),await this.core.relayer.subscribe(s,{transportType:i==null?void 0:i.transportType}),{topic:s,uri:l}},this.pair=async i=>{this.isInitialized();const n=this.core.eventClient.createEvent({properties:{topic:i==null?void 0:i.uri,trace:[Ve.pairing_started]}});this.isValidPair(i,n);const{topic:s,symKey:o,relay:a,expiryTimestamp:c,methods:l}=vo(i.uri);n.props.properties.topic=s,n.addTrace(Ve.pairing_uri_validation_success),n.addTrace(Ve.pairing_uri_not_expired);let u;if(this.pairings.keys.includes(s)){if(u=this.pairings.get(s),n.addTrace(Ve.existing_pairing),u.active)throw n.setError(Xe.active_pairing_already_exists),new Error(`Pairing already exists: ${s}. Please try again with a new connection URI.`);n.addTrace(Ve.pairing_not_expired)}const h=c||re(I.FIVE_MINUTES),p={topic:s,relay:a,expiry:h,active:!1,methods:l};this.core.expirer.set(s,h),await this.pairings.set(s,p),n.addTrace(Ve.store_new_pairing),i.activatePairing&&await this.activate({topic:s}),this.events.emit(Et.create,p),n.addTrace(Ve.emit_inactive_pairing),this.core.crypto.keychain.has(s)||await this.core.crypto.setSymKey(o,s),n.addTrace(Ve.subscribing_pairing_topic);try{await this.core.relayer.confirmOnlineStateOrThrow()}catch{n.setError(Xe.no_internet_connection)}try{await this.core.relayer.subscribe(s,{relay:a})}catch(d){throw n.setError(Xe.subscribe_pairing_topic_failure),d}return n.addTrace(Ve.subscribe_pairing_topic_success),p},this.activate=async({topic:i})=>{this.isInitialized();const n=re(I.FIVE_MINUTES);this.core.expirer.set(i,n),await this.pairings.update(i,{active:!0,expiry:n})},this.ping=async i=>{this.isInitialized(),await this.isValidPing(i),this.logger.warn("ping() is deprecated and will be removed in the next major release.");const{topic:n}=i;if(this.pairings.keys.includes(n)){const s=await this.sendRequest(n,"wc_pairingPing",{}),{done:o,resolve:a,reject:c}=bt();this.events.once(U("pairing_ping",s),({error:l})=>{l?c(l):a()}),await o()}},this.updateExpiry=async({topic:i,expiry:n})=>{this.isInitialized(),await this.pairings.update(i,{expiry:n})},this.updateMetadata=async({topic:i,metadata:n})=>{this.isInitialized(),await this.pairings.update(i,{peerMetadata:n})},this.getPairings=()=>(this.isInitialized(),this.pairings.values),this.disconnect=async i=>{this.isInitialized(),await this.isValidDisconnect(i);const{topic:n}=i;this.pairings.keys.includes(n)&&(await this.sendRequest(n,"wc_pairingDelete",H("USER_DISCONNECTED")),await this.deletePairing(n))},this.formatUriFromPairing=i=>{this.isInitialized();const{topic:n,relay:s,expiry:o,methods:a}=i,c=this.core.crypto.keychain.get(n);return wo({protocol:this.core.protocol,version:this.core.version,topic:n,symKey:c,relay:s,expiryTimestamp:o,methods:a})},this.sendRequest=async(i,n,s)=>{const o=It(n,s),a=await this.core.crypto.encode(i,o),c=cr[n].req;return this.core.history.set(i,o),this.core.relayer.publish(i,a,c),o.id},this.sendResult=async(i,n,s)=>{const o=bn(i,s),a=await this.core.crypto.encode(n,o),c=await this.core.history.get(n,i),l=cr[c.request.method].res;await this.core.relayer.publish(n,a,l),await this.core.history.resolve(o)},this.sendError=async(i,n,s)=>{const o=vn(i,s),a=await this.core.crypto.encode(n,o),c=await this.core.history.get(n,i),l=cr[c.request.method]?cr[c.request.method].res:cr.unregistered_method.res;await this.core.relayer.publish(n,a,l),await this.core.history.resolve(o)},this.deletePairing=async(i,n)=>{await this.core.relayer.unsubscribe(i),await Promise.all([this.pairings.delete(i,H("USER_DISCONNECTED")),this.core.crypto.deleteSymKey(i),n?Promise.resolve():this.core.expirer.del(i)])},this.cleanup=async()=>{const i=this.pairings.getAll().filter(n=>at(n.expiry));await Promise.all(i.map(n=>this.deletePairing(n.topic)))},this.onRelayEventRequest=i=>{const{topic:n,payload:s}=i;switch(s.method){case"wc_pairingPing":return this.onPairingPingRequest(n,s);case"wc_pairingDelete":return this.onPairingDeleteRequest(n,s);default:return this.onUnknownRpcMethodRequest(n,s)}},this.onRelayEventResponse=async i=>{const{topic:n,payload:s}=i,o=(await this.core.history.get(n,s.id)).request.method;switch(o){case"wc_pairingPing":return this.onPairingPingResponse(n,s);default:return this.onUnknownRpcMethodResponse(o)}},this.onPairingPingRequest=async(i,n)=>{const{id:s}=n;try{this.isValidPing({topic:i}),await this.sendResult(s,i,!0),this.events.emit(Et.ping,{id:s,topic:i})}catch(o){await this.sendError(s,i,o),this.logger.error(o)}},this.onPairingPingResponse=(i,n)=>{const{id:s}=n;setTimeout(()=>{Qe(n)?this.events.emit(U("pairing_ping",s),{}):qe(n)&&this.events.emit(U("pairing_ping",s),{error:n.error})},500)},this.onPairingDeleteRequest=async(i,n)=>{const{id:s}=n;try{this.isValidDisconnect({topic:i}),await this.deletePairing(i),this.events.emit(Et.delete,{id:s,topic:i})}catch(o){await this.sendError(s,i,o),this.logger.error(o)}},this.onUnknownRpcMethodRequest=async(i,n)=>{const{id:s,method:o}=n;try{if(this.registeredMethods.includes(o))return;const a=H("WC_METHOD_UNSUPPORTED",o);await this.sendError(s,i,a),this.logger.error(a)}catch(a){await this.sendError(s,i,a),this.logger.error(a)}},this.onUnknownRpcMethodResponse=i=>{this.registeredMethods.includes(i)||this.logger.error(H("WC_METHOD_UNSUPPORTED",i))},this.isValidPair=(i,n)=>{var s;if(!ge(i)){const{message:a}=P("MISSING_OR_INVALID",`pair() params: ${i}`);throw n.setError(Xe.malformed_pairing_uri),new Error(a)}if(!$y(i.uri)){const{message:a}=P("MISSING_OR_INVALID",`pair() uri: ${i.uri}`);throw n.setError(Xe.malformed_pairing_uri),new Error(a)}const o=vo(i==null?void 0:i.uri);if(!((s=o==null?void 0:o.relay)!=null&&s.protocol)){const{message:a}=P("MISSING_OR_INVALID","pair() uri#relay-protocol");throw n.setError(Xe.malformed_pairing_uri),new Error(a)}if(!(o!=null&&o.symKey)){const{message:a}=P("MISSING_OR_INVALID","pair() uri#symKey");throw n.setError(Xe.malformed_pairing_uri),new Error(a)}if(o!=null&&o.expiryTimestamp&&I.toMiliseconds(o==null?void 0:o.expiryTimestamp)<Date.now()){n.setError(Xe.pairing_expired);const{message:a}=P("EXPIRED","pair() URI has expired. Please try again with a new connection URI.");throw new Error(a)}},this.isValidPing=async i=>{if(!ge(i)){const{message:s}=P("MISSING_OR_INVALID",`ping() params: ${i}`);throw new Error(s)}const{topic:n}=i;await this.isValidPairingTopic(n)},this.isValidDisconnect=async i=>{if(!ge(i)){const{message:s}=P("MISSING_OR_INVALID",`disconnect() params: ${i}`);throw new Error(s)}const{topic:n}=i;await this.isValidPairingTopic(n)},this.isValidPairingTopic=async i=>{if(!ee(i,!1)){const{message:n}=P("MISSING_OR_INVALID",`pairing topic should be a string: ${i}`);throw new Error(n)}if(!this.pairings.keys.includes(i)){const{message:n}=P("NO_MATCHING_KEY",`pairing topic doesn't exist: ${i}`);throw new Error(n)}if(at(this.pairings.get(i).expiry)){await this.deletePairing(i);const{message:n}=P("EXPIRED",`pairing topic: ${i}`);throw new Error(n)}},this.core=e,this.logger=pe(t,this.name),this.pairings=new Mt(this.core,this.logger,this.name,this.storagePrefix)}get context(){return be(this.logger)}isInitialized(){if(!this.initialized){const{message:e}=P("NOT_INITIALIZED",this.name);throw new Error(e)}}registerRelayerEvents(){this.core.relayer.on(ne.message,async e=>{const{topic:t,message:i,transportType:n}=e;if(!this.pairings.keys.includes(t)||n===G.link_mode||this.ignoredPayloadTypes.includes(this.core.crypto.getPayloadType(i)))return;const s=await this.core.crypto.decode(t,i);try{_n(s)?(this.core.history.set(t,s),this.onRelayEventRequest({topic:t,payload:s})):ni(s)&&(await this.core.history.resolve(s),await this.onRelayEventResponse({topic:t,payload:s}),this.core.history.delete(t,s.id))}catch(o){this.logger.error(o)}})}registerExpirerEvents(){this.core.expirer.on(Te.expired,async e=>{const{topic:t}=Qc(e.target);t&&this.pairings.keys.includes(t)&&(await this.deletePairing(t,!0),this.events.emit(Et.expire,{topic:t}))})}}class Qv extends wf{constructor(e,t){super(e,t),this.core=e,this.logger=t,this.records=new Map,this.events=new He.EventEmitter,this.name=jm,this.version=Vm,this.cached=[],this.initialized=!1,this.storagePrefix=We,this.init=async()=>{this.initialized||(this.logger.trace("Initialized"),await this.restore(),this.cached.forEach(i=>this.records.set(i.id,i)),this.cached=[],this.registerEventListeners(),this.initialized=!0)},this.set=(i,n,s)=>{if(this.isInitialized(),this.logger.debug("Setting JSON-RPC request history record"),this.logger.trace({type:"method",method:"set",topic:i,request:n,chainId:s}),this.records.has(n.id))return;const o={id:n.id,topic:i,request:{method:n.method,params:n.params||null},chainId:s,expiry:re(I.THIRTY_DAYS)};this.records.set(o.id,o),this.persist(),this.events.emit(Me.created,o)},this.resolve=async i=>{if(this.isInitialized(),this.logger.debug("Updating JSON-RPC response history record"),this.logger.trace({type:"method",method:"update",response:i}),!this.records.has(i.id))return;const n=await this.getRecord(i.id);typeof n.response>"u"&&(n.response=qe(i)?{error:i.error}:{result:i.result},this.records.set(n.id,n),this.persist(),this.events.emit(Me.updated,n))},this.get=async(i,n)=>(this.isInitialized(),this.logger.debug("Getting record"),this.logger.trace({type:"method",method:"get",topic:i,id:n}),await this.getRecord(n)),this.delete=(i,n)=>{this.isInitialized(),this.logger.debug("Deleting record"),this.logger.trace({type:"method",method:"delete",id:n}),this.values.forEach(s=>{if(s.topic===i){if(typeof n<"u"&&s.id!==n)return;this.records.delete(s.id),this.events.emit(Me.deleted,s)}}),this.persist()},this.exists=async(i,n)=>(this.isInitialized(),this.records.has(n)?(await this.getRecord(n)).topic===i:!1),this.on=(i,n)=>{this.events.on(i,n)},this.once=(i,n)=>{this.events.once(i,n)},this.off=(i,n)=>{this.events.off(i,n)},this.removeListener=(i,n)=>{this.events.removeListener(i,n)},this.logger=pe(t,this.name)}get context(){return be(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(){const e=[];return this.values.forEach(t=>{if(typeof t.response<"u")return;const i={topic:t.topic,request:It(t.request.method,t.request.params,t.id),chainId:t.chainId};return e.push(i)}),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();const t=this.records.get(e);if(!t){const{message:i}=P("NO_MATCHING_KEY",`${this.name}: ${e}`);throw new Error(i)}return t}async persist(){await this.setJsonRpcRecords(this.values),this.events.emit(Me.sync)}async restore(){try{const e=await this.getJsonRpcRecords();if(typeof e>"u"||!e.length)return;if(this.records.size){const{message:t}=P("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(t),new Error(t)}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(Me.created,e=>{const t=Me.created;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,record:e})}),this.events.on(Me.updated,e=>{const t=Me.updated;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,record:e})}),this.events.on(Me.deleted,e=>{const t=Me.deleted;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,record:e})}),this.core.heartbeat.on(Zt.pulse,()=>{this.cleanup()})}cleanup(){try{this.isInitialized();let e=!1;this.records.forEach(t=>{I.toMiliseconds(t.expiry||0)-Date.now()<=0&&(this.logger.info(`Deleting expired history log: ${t.id}`),this.records.delete(t.id),this.events.emit(Me.deleted,t,!1),e=!0)}),e&&this.persist()}catch(e){this.logger.warn(e)}}isInitialized(){if(!this.initialized){const{message:e}=P("NOT_INITIALIZED",this.name);throw new Error(e)}}}class Xv extends xf{constructor(e,t){super(e,t),this.core=e,this.logger=t,this.expirations=new Map,this.events=new He.EventEmitter,this.name=Wm,this.version=Hm,this.cached=[],this.initialized=!1,this.storagePrefix=We,this.init=async()=>{this.initialized||(this.logger.trace("Initialized"),await this.restore(),this.cached.forEach(i=>this.expirations.set(i.target,i)),this.cached=[],this.registerEventListeners(),this.initialized=!0)},this.has=i=>{try{const n=this.formatTarget(i);return typeof this.getExpiration(n)<"u"}catch{return!1}},this.set=(i,n)=>{this.isInitialized();const s=this.formatTarget(i),o={target:s,expiry:n};this.expirations.set(s,o),this.checkExpiry(s,o),this.events.emit(Te.created,{target:s,expiration:o})},this.get=i=>{this.isInitialized();const n=this.formatTarget(i);return this.getExpiration(n)},this.del=i=>{if(this.isInitialized(),this.has(i)){const n=this.formatTarget(i),s=this.getExpiration(n);this.expirations.delete(n),this.events.emit(Te.deleted,{target:n,expiration:s})}},this.on=(i,n)=>{this.events.on(i,n)},this.once=(i,n)=>{this.events.once(i,n)},this.off=(i,n)=>{this.events.off(i,n)},this.removeListener=(i,n)=>{this.events.removeListener(i,n)},this.logger=pe(t,this.name)}get context(){return be(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 pp(e);if(typeof e=="number")return gp(e);const{message:t}=P("UNKNOWN_TYPE",`Target type: ${typeof e}`);throw new 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(Te.sync)}async restore(){try{const e=await this.getExpirations();if(typeof e>"u"||!e.length)return;if(this.expirations.size){const{message:t}=P("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(t),new Error(t)}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){const t=this.expirations.get(e);if(!t){const{message:i}=P("NO_MATCHING_KEY",`${this.name}: ${e}`);throw this.logger.warn(i),new Error(i)}return t}checkExpiry(e,t){const{expiry:i}=t;I.toMiliseconds(i)-Date.now()<=0&&this.expire(e,t)}expire(e,t){this.expirations.delete(e),this.events.emit(Te.expired,{target:e,expiration:t})}checkExpirations(){this.core.relayer.connected&&this.expirations.forEach((e,t)=>this.checkExpiry(t,e))}registerEventListeners(){this.core.heartbeat.on(Zt.pulse,()=>this.checkExpirations()),this.events.on(Te.created,e=>{const t=Te.created;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,data:e}),this.persist()}),this.events.on(Te.expired,e=>{const t=Te.expired;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,data:e}),this.persist()}),this.events.on(Te.deleted,e=>{const t=Te.deleted;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,data:e}),this.persist()})}isInitialized(){if(!this.initialized){const{message:e}=P("NOT_INITIALIZED",this.name);throw new Error(e)}}}class Zv extends Pf{constructor(e,t,i){super(e,t,i),this.core=e,this.logger=t,this.store=i,this.name=Jm,this.verifyUrlV3=Ym,this.storagePrefix=We,this.version=Pl,this.init=async()=>{var n;this.isDevEnv||(this.publicKey=await this.store.getItem(this.storeKey),this.publicKey&&I.toMiliseconds((n=this.publicKey)==null?void 0:n.expiresAt)<Date.now()&&(this.logger.debug("verify v2 public key expired"),await this.removePublicKey()))},this.register=async n=>{if(!Ar()||this.isDevEnv)return;const s=window.location.origin,{id:o,decryptedId:a}=n,c=`${this.verifyUrlV3}/attestation?projectId=${this.core.projectId}&origin=${s}&id=${o}&decryptedId=${a}`;try{const l=Il(),u=this.startAbortTimer(I.ONE_SECOND*5),h=await new Promise((p,d)=>{const f=()=>{window.removeEventListener("message",y),l.body.removeChild(g),d("attestation aborted")};this.abortController.signal.addEventListener("abort",f);const g=l.createElement("iframe");g.src=c,g.style.display="none",g.addEventListener("error",f,{signal:this.abortController.signal});const y=m=>{if(m.data&&typeof m.data=="string")try{const v=JSON.parse(m.data);if(v.type==="verify_attestation"){if(Hi(v.attestation).payload.id!==o)return;clearInterval(u),l.body.removeChild(g),this.abortController.signal.removeEventListener("abort",f),window.removeEventListener("message",y),p(v.attestation===null?"":v.attestation)}}catch(v){this.logger.warn(v)}};l.body.appendChild(g),window.addEventListener("message",y,{signal:this.abortController.signal})});return this.logger.debug("jwt attestation",h),h}catch(l){this.logger.warn(l)}return""},this.resolve=async n=>{if(this.isDevEnv)return"";const{attestationId:s,hash:o,encryptedId:a}=n;if(s===""){this.logger.debug("resolve: attestationId is empty, skipping");return}if(s){if(Hi(s).payload.id!==a)return;const l=await this.isValidJwtAttestation(s);if(l){if(!l.isVerified){this.logger.warn("resolve: jwt attestation: origin url not verified");return}return l}}if(!o)return;const c=this.getVerifyUrl(n==null?void 0:n.verifyUrl);return this.fetchAttestation(o,c)},this.fetchAttestation=async(n,s)=>{this.logger.debug(`resolving attestation: ${n} from url: ${s}`);const o=this.startAbortTimer(I.ONE_SECOND*5),a=await fetch(`${s}/attestation/${n}?v2Supported=true`,{signal:this.abortController.signal});return clearTimeout(o),a.status===200?await a.json():void 0},this.getVerifyUrl=n=>{let s=n||mr;return Qm.includes(s)||(this.logger.info(`verify url: ${s}, not included in trusted list, assigning default: ${mr}`),s=mr),s},this.fetchPublicKey=async()=>{try{this.logger.debug(`fetching public key from: ${this.verifyUrlV3}`);const n=this.startAbortTimer(I.FIVE_SECONDS),s=await fetch(`${this.verifyUrlV3}/public-key`,{signal:this.abortController.signal});return clearTimeout(n),await s.json()}catch(n){this.logger.warn(n)}},this.persistPublicKey=async n=>{this.logger.debug("persisting public key to local storage",n),await this.store.setItem(this.storeKey,n),this.publicKey=n},this.removePublicKey=async()=>{this.logger.debug("removing verify v2 public key from storage"),await this.store.removeItem(this.storeKey),this.publicKey=void 0},this.isValidJwtAttestation=async n=>{const s=await this.getPublicKey();try{if(s)return this.validateAttestation(n,s)}catch(a){this.logger.error(a),this.logger.warn("error validating attestation")}const o=await this.fetchAndPersistPublicKey();try{if(o)return this.validateAttestation(n,o)}catch(a){this.logger.error(a),this.logger.warn("error validating attestation")}},this.getPublicKey=async()=>this.publicKey?this.publicKey:await this.fetchAndPersistPublicKey(),this.fetchAndPersistPublicKey=async()=>{if(this.fetchPromise)return await this.fetchPromise,this.publicKey;this.fetchPromise=new Promise(async s=>{const o=await this.fetchPublicKey();o&&(await this.persistPublicKey(o),s(o))});const n=await this.fetchPromise;return this.fetchPromise=void 0,n},this.validateAttestation=(n,s)=>{const o=_y(n,s.publicKey),a={hasExpired:I.toMiliseconds(o.exp)<Date.now(),payload:o};if(a.hasExpired)throw this.logger.warn("resolve: jwt attestation expired"),new Error("JWT attestation expired");return{origin:a.payload.origin,isScam:a.payload.isScam,isVerified:a.payload.isVerified}},this.logger=pe(t,this.name),this.abortController=new AbortController,this.isDevEnv=Wn(),this.init()}get storeKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//verify:public:key"}get context(){return be(this.logger)}startAbortTimer(e){return this.abortController=new AbortController,setTimeout(()=>this.abortController.abort(),I.toMiliseconds(e))}}class ew extends Af{constructor(e,t){super(e,t),this.projectId=e,this.logger=t,this.context=Xm,this.registerDeviceToken=async i=>{const{clientId:n,token:s,notificationType:o,enableEncrypted:a=!1}=i,c=`${Zm}/${this.projectId}/clients`;await fetch(c,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({client_id:n,type:o,token:s,always_raw:a})})},this.logger=pe(t,this.context)}}var tw=Object.defineProperty,Go=Object.getOwnPropertySymbols,rw=Object.prototype.hasOwnProperty,iw=Object.prototype.propertyIsEnumerable,Yo=(r,e,t)=>e in r?tw(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,hr=(r,e)=>{for(var t in e||(e={}))rw.call(e,t)&&Yo(r,t,e[t]);if(Go)for(var t of Go(e))iw.call(e,t)&&Yo(r,t,e[t]);return r};class nw extends Tf{constructor(e,t,i=!0){super(e,t,i),this.core=e,this.logger=t,this.context=t0,this.storagePrefix=We,this.storageVersion=e0,this.events=new Map,this.shouldPersist=!1,this.init=async()=>{if(!Wn())try{const n={eventId:js(),timestamp:Date.now(),domain:this.getAppDomain(),props:{event:"INIT",type:"",properties:{client_id:await this.core.crypto.getClientId(),user_agent:Hc(this.core.relayer.protocol,this.core.relayer.version,gn)}}};await this.sendEvent([n])}catch(n){this.logger.warn(n)}},this.createEvent=n=>{const{event:s="ERROR",type:o="",properties:{topic:a,trace:c}}=n,l=js(),u=this.core.projectId||"",h=Date.now(),p=hr({eventId:l,timestamp:h,props:{event:s,type:o,properties:{topic:a,trace:c}},bundleId:u,domain:this.getAppDomain()},this.setMethods(l));return this.telemetryEnabled&&(this.events.set(l,p),this.shouldPersist=!0),p},this.getEvent=n=>{const{eventId:s,topic:o}=n;if(s)return this.events.get(s);const a=Array.from(this.events.values()).find(c=>c.props.properties.topic===o);if(a)return hr(hr({},a),this.setMethods(a.eventId))},this.deleteEvent=n=>{const{eventId:s}=n;this.events.delete(s),this.shouldPersist=!0},this.setEventListeners=()=>{this.core.heartbeat.on(Zt.pulse,async()=>{this.shouldPersist&&await this.persist(),this.events.forEach(n=>{I.fromMiliseconds(Date.now())-I.fromMiliseconds(n.timestamp)>r0&&(this.events.delete(n.eventId),this.shouldPersist=!0)})})},this.setMethods=n=>({addTrace:s=>this.addTrace(n,s),setError:s=>this.setError(n,s)}),this.addTrace=(n,s)=>{const o=this.events.get(n);o&&(o.props.properties.trace.push(s),this.events.set(n,o),this.shouldPersist=!0)},this.setError=(n,s)=>{const o=this.events.get(n);o&&(o.props.type=s,o.timestamp=Date.now(),this.events.set(n,o),this.shouldPersist=!0)},this.persist=async()=>{await this.core.storage.setItem(this.storageKey,Array.from(this.events.values())),this.shouldPersist=!1},this.restore=async()=>{try{const n=await this.core.storage.getItem(this.storageKey)||[];if(!n.length)return;n.forEach(s=>{this.events.set(s.eventId,hr(hr({},s),this.setMethods(s.eventId)))})}catch(n){this.logger.warn(n)}},this.submit=async()=>{if(!this.telemetryEnabled||this.events.size===0)return;const n=[];for(const[s,o]of this.events)o.props.type&&n.push(o);if(n.length!==0)try{if((await this.sendEvent(n)).ok)for(const s of n)this.events.delete(s.eventId),this.shouldPersist=!0}catch(s){this.logger.warn(s)}},this.sendEvent=async n=>{const s=this.getAppDomain()?"":"&sp=desktop";return await fetch(`${i0}?projectId=${this.core.projectId}&st=events_sdk&sv=js-${gn}${s}`,{method:"POST",body:JSON.stringify(n)})},this.getAppDomain=()=>Wc().url,this.logger=pe(t,this.context),this.telemetryEnabled=i,i?this.restore().then(async()=>{await this.submit(),this.setEventListeners()}):this.persist()}get storageKey(){return this.storagePrefix+this.storageVersion+this.core.customStoragePrefix+"//"+this.context}}var sw=Object.defineProperty,Qo=Object.getOwnPropertySymbols,ow=Object.prototype.hasOwnProperty,aw=Object.prototype.propertyIsEnumerable,Xo=(r,e,t)=>e in r?sw(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Zo=(r,e)=>{for(var t in e||(e={}))ow.call(e,t)&&Xo(r,t,e[t]);if(Qo)for(var t of Qo(e))aw.call(e,t)&&Xo(r,t,e[t]);return r};let cw=class Ul extends vf{constructor(e){var t;super(e),this.protocol=xl,this.version=Pl,this.name=pn,this.events=new He.EventEmitter,this.initialized=!1,this.on=(o,a)=>this.events.on(o,a),this.once=(o,a)=>this.events.once(o,a),this.off=(o,a)=>this.events.off(o,a),this.removeListener=(o,a)=>this.events.removeListener(o,a),this.dispatchEnvelope=({topic:o,message:a,sessionExists:c})=>{if(!o||!a)return;const l={topic:o,message:a,publishedAt:Date.now(),transportType:G.link_mode};this.relayer.onLinkMessageEvent(l,{sessionExists:c})},this.projectId=e==null?void 0:e.projectId,this.relayUrl=(e==null?void 0:e.relayUrl)||Tl,this.customStoragePrefix=e!=null&&e.customStoragePrefix?`:${e.customStoragePrefix}`:"";const i=wn({level:typeof(e==null?void 0:e.logger)=="string"&&e.logger?e.logger:Im.logger,name:pn}),{logger:n,chunkLoggerController:s}=iu({opts:i,maxSizeInBytes:e==null?void 0:e.maxLogBlobSizeInBytes,loggerOverride:e==null?void 0:e.logger});this.logChunkController=s,(t=this.logChunkController)!=null&&t.downloadLogsBlobInBrowser&&(window.downloadLogsBlobInBrowser=async()=>{var o,a;(o=this.logChunkController)!=null&&o.downloadLogsBlobInBrowser&&((a=this.logChunkController)==null||a.downloadLogsBlobInBrowser({clientId:await this.crypto.getClientId()}))}),this.logger=pe(n,this.name),this.heartbeat=new Un,this.crypto=new Tv(this,this.logger,e==null?void 0:e.keychain),this.history=new Qv(this,this.logger),this.expirer=new Xv(this,this.logger),this.storage=e!=null&&e.storage?e.storage:new nu(Zo(Zo({},xm),e==null?void 0:e.storageOptions)),this.relayer=new Wv({core:this,logger:this.logger,relayUrl:this.relayUrl,projectId:this.projectId}),this.pairing=new Yv(this,this.logger),this.verify=new Zv(this,this.logger,this.storage),this.echoClient=new ew(this.projectId||"",this.logger),this.linkModeSupportedApps=[],this.eventClient=new nw(this,this.logger,e==null?void 0:e.telemetryEnabled)}static async init(e){const t=new Ul(e);await t.initialize();const i=await t.crypto.getClientId();return await t.storage.setItem(Fm,i),t}get context(){return be(this.logger)}async start(){this.initialized||await this.initialize()}async getLogsBlob(){var e;return(e=this.logChunkController)==null?void 0:e.logsToBlob({clientId:await this.crypto.getClientId()})}async addLinkModeSupportedApp(e){this.linkModeSupportedApps.includes(e)||(this.linkModeSupportedApps.push(e),await this.storage.setItem(Co,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(Co)||[],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}}};const lw=cw;class uw{constructor(e){this.opts=e,this.protocol="wc",this.version=2}}class hw{constructor(e){this.client=e}}const Bl="wc",zl=2,Kl="client",es=`${Bl}@${zl}:${Kl}:`,ji={name:Kl,logger:"error"},ea="WALLETCONNECT_DEEPLINK_CHOICE",dw="proposal",fw="Proposal expired",pw="session",Ft=I.SEVEN_DAYS,gw="engine",ie={wc_sessionPropose:{req:{ttl:I.FIVE_MINUTES,prompt:!0,tag:1100},res:{ttl:I.FIVE_MINUTES,prompt:!1,tag:1101},reject:{ttl:I.FIVE_MINUTES,prompt:!1,tag:1120},autoReject:{ttl:I.FIVE_MINUTES,prompt:!1,tag:1121}},wc_sessionSettle:{req:{ttl:I.FIVE_MINUTES,prompt:!1,tag:1102},res:{ttl:I.FIVE_MINUTES,prompt:!1,tag:1103}},wc_sessionUpdate:{req:{ttl:I.ONE_DAY,prompt:!1,tag:1104},res:{ttl:I.ONE_DAY,prompt:!1,tag:1105}},wc_sessionExtend:{req:{ttl:I.ONE_DAY,prompt:!1,tag:1106},res:{ttl:I.ONE_DAY,prompt:!1,tag:1107}},wc_sessionRequest:{req:{ttl:I.FIVE_MINUTES,prompt:!0,tag:1108},res:{ttl:I.FIVE_MINUTES,prompt:!1,tag:1109}},wc_sessionEvent:{req:{ttl:I.FIVE_MINUTES,prompt:!0,tag:1110},res:{ttl:I.FIVE_MINUTES,prompt:!1,tag:1111}},wc_sessionDelete:{req:{ttl:I.ONE_DAY,prompt:!1,tag:1112},res:{ttl:I.ONE_DAY,prompt:!1,tag:1113}},wc_sessionPing:{req:{ttl:I.ONE_DAY,prompt:!1,tag:1114},res:{ttl:I.ONE_DAY,prompt:!1,tag:1115}},wc_sessionAuthenticate:{req:{ttl:I.ONE_HOUR,prompt:!0,tag:1116},res:{ttl:I.ONE_HOUR,prompt:!1,tag:1117},reject:{ttl:I.FIVE_MINUTES,prompt:!1,tag:1118},autoReject:{ttl:I.FIVE_MINUTES,prompt:!1,tag:1119}}},Vi={min:I.FIVE_MINUTES,max:I.SEVEN_DAYS},je={idle:"IDLE",active:"ACTIVE"},yw="request",mw=["wc_sessionPropose","wc_sessionRequest","wc_authRequest","wc_sessionAuthenticate"],vw="wc",ww="auth",_w="authKeys",bw="pairingTopics",Ew="requests",_i=`${vw}@${1.5}:${ww}:`,Vr=`${_i}:PUB_KEY`;var Sw=Object.defineProperty,Iw=Object.defineProperties,xw=Object.getOwnPropertyDescriptors,ta=Object.getOwnPropertySymbols,Pw=Object.prototype.hasOwnProperty,Aw=Object.prototype.propertyIsEnumerable,ra=(r,e,t)=>e in r?Sw(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Z=(r,e)=>{for(var t in e||(e={}))Pw.call(e,t)&&ra(r,t,e[t]);if(ta)for(var t of ta(e))Aw.call(e,t)&&ra(r,t,e[t]);return r},De=(r,e)=>Iw(r,xw(e));class Tw extends hw{constructor(e){super(e),this.name=gw,this.events=new aa,this.initialized=!1,this.requestQueue={state:je.idle,queue:[]},this.sessionRequestQueue={state:je.idle,queue:[]},this.requestQueueDelay=I.ONE_SECOND,this.expectedPairingMethodMap=new Map,this.recentlyDeletedMap=new Map,this.recentlyDeletedLimit=200,this.relayMessageCache=[],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(ie)}),this.initialized=!0,setTimeout(()=>{this.sessionRequestQueue.queue=this.getPendingSessionRequests(),this.processSessionRequestQueue()},I.toMiliseconds(this.requestQueueDelay)))},this.connect=async t=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();const i=De(Z({},t),{requiredNamespaces:t.requiredNamespaces||{},optionalNamespaces:t.optionalNamespaces||{}});await this.isValidConnect(i);const{pairingTopic:n,requiredNamespaces:s,optionalNamespaces:o,sessionProperties:a,relays:c}=i;let l=n,u,h=!1;try{if(l){const w=this.client.core.pairing.pairings.get(l);this.client.logger.warn("connect() with existing pairing topic is deprecated and will be removed in the next major release."),h=w.active}}catch(w){throw this.client.logger.error(`connect() -> pairing.get(${l}) failed`),w}if(!l||!h){const{topic:w,uri:b}=await this.client.core.pairing.create();l=w,u=b}if(!l){const{message:w}=P("NO_MATCHING_KEY",`connect() pairing topic: ${l}`);throw new Error(w)}const p=await this.client.core.crypto.generateKeyPair(),d=ie.wc_sessionPropose.req.ttl||I.FIVE_MINUTES,f=re(d),g=Z({requiredNamespaces:s,optionalNamespaces:o,relays:c??[{protocol:Al}],proposer:{publicKey:p,metadata:this.client.metadata},expiryTimestamp:f,pairingTopic:l},a&&{sessionProperties:a}),{reject:y,resolve:m,done:v}=bt(d,fw);this.events.once(U("session_connect"),async({error:w,session:b})=>{if(w)y(w);else if(b){b.self.publicKey=p;const E=De(Z({},b),{pairingTopic:g.pairingTopic,requiredNamespaces:g.requiredNamespaces,optionalNamespaces:g.optionalNamespaces,transportType:G.relay});await this.client.session.set(b.topic,E),await this.setExpiry(b.topic,b.expiry),l&&await this.client.core.pairing.updateMetadata({topic:l,metadata:b.peer.metadata}),this.cleanupDuplicatePairings(E),m(E)}});const _=await this.sendRequest({topic:l,method:"wc_sessionPropose",params:g,throwOnFailedPublish:!0});return await this.setProposal(_,Z({id:_},g)),{uri:u,approval:v}},this.pair=async t=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{return await this.client.core.pairing.pair(t)}catch(i){throw this.client.logger.error("pair() failed"),i}},this.approve=async t=>{var i,n,s;const o=this.client.core.eventClient.createEvent({properties:{topic:(i=t==null?void 0:t.id)==null?void 0:i.toString(),trace:[Le.session_approve_started]}});try{this.isInitialized(),await this.confirmOnlineStateOrThrow()}catch(x){throw o.setError(wt.no_internet_connection),x}try{await this.isValidProposalId(t==null?void 0:t.id)}catch(x){throw this.client.logger.error(`approve() -> proposal.get(${t==null?void 0:t.id}) failed`),o.setError(wt.proposal_not_found),x}try{await this.isValidApprove(t)}catch(x){throw this.client.logger.error("approve() -> isValidApprove() failed"),o.setError(wt.session_approve_namespace_validation_failure),x}const{id:a,relayProtocol:c,namespaces:l,sessionProperties:u,sessionConfig:h}=t,p=this.client.proposal.get(a);this.client.core.eventClient.deleteEvent({eventId:o.eventId});const{pairingTopic:d,proposer:f,requiredNamespaces:g,optionalNamespaces:y}=p;let m=(n=this.client.core.eventClient)==null?void 0:n.getEvent({topic:d});m||(m=(s=this.client.core.eventClient)==null?void 0:s.createEvent({type:Le.session_approve_started,properties:{topic:d,trace:[Le.session_approve_started,Le.session_namespaces_validation_success]}}));const v=await this.client.core.crypto.generateKeyPair(),_=f.publicKey,w=await this.client.core.crypto.generateSharedKey(v,_),b=Z(Z({relay:{protocol:c??"irn"},namespaces:l,controller:{publicKey:v,metadata:this.client.metadata},expiry:re(Ft)},u&&{sessionProperties:u}),h&&{sessionConfig:h}),E=G.relay;m.addTrace(Le.subscribing_session_topic);try{await this.client.core.relayer.subscribe(w,{transportType:E})}catch(x){throw m.setError(wt.subscribe_session_topic_failure),x}m.addTrace(Le.subscribe_session_topic_success);const S=De(Z({},b),{topic:w,requiredNamespaces:g,optionalNamespaces:y,pairingTopic:d,acknowledged:!1,self:b.controller,peer:{publicKey:f.publicKey,metadata:f.metadata},controller:v,transportType:G.relay});await this.client.session.set(w,S),m.addTrace(Le.store_session);try{m.addTrace(Le.publishing_session_settle),await this.sendRequest({topic:w,method:"wc_sessionSettle",params:b,throwOnFailedPublish:!0}).catch(x=>{throw m==null||m.setError(wt.session_settle_publish_failure),x}),m.addTrace(Le.session_settle_publish_success),m.addTrace(Le.publishing_session_approve),await this.sendResult({id:a,topic:d,result:{relay:{protocol:c??"irn"},responderPublicKey:v},throwOnFailedPublish:!0}).catch(x=>{throw m==null||m.setError(wt.session_approve_publish_failure),x}),m.addTrace(Le.session_approve_publish_success)}catch(x){throw this.client.logger.error(x),this.client.session.delete(w,H("USER_DISCONNECTED")),await this.client.core.relayer.unsubscribe(w),x}return this.client.core.eventClient.deleteEvent({eventId:m.eventId}),await this.client.core.pairing.updateMetadata({topic:d,metadata:f.metadata}),await this.client.proposal.delete(a,H("USER_DISCONNECTED")),await this.client.core.pairing.activate({topic:d}),await this.setExpiry(w,re(Ft)),{topic:w,acknowledged:()=>Promise.resolve(this.client.session.get(w))}},this.reject=async t=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{await this.isValidReject(t)}catch(o){throw this.client.logger.error("reject() -> isValidReject() failed"),o}const{id:i,reason:n}=t;let s;try{s=this.client.proposal.get(i).pairingTopic}catch(o){throw this.client.logger.error(`reject() -> proposal.get(${i}) failed`),o}s&&(await this.sendError({id:i,topic:s,error:n,rpcOpts:ie.wc_sessionPropose.reject}),await this.client.proposal.delete(i,H("USER_DISCONNECTED")))},this.update=async t=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{await this.isValidUpdate(t)}catch(h){throw this.client.logger.error("update() -> isValidUpdate() failed"),h}const{topic:i,namespaces:n}=t,{done:s,resolve:o,reject:a}=bt(),c=vt(),l=xt().toString(),u=this.client.session.get(i).namespaces;return this.events.once(U("session_update",c),({error:h})=>{h?a(h):o()}),await this.client.session.update(i,{namespaces:n}),await this.sendRequest({topic:i,method:"wc_sessionUpdate",params:{namespaces:n},throwOnFailedPublish:!0,clientRpcId:c,relayRpcId:l}).catch(h=>{this.client.logger.error(h),this.client.session.update(i,{namespaces:u}),a(h)}),{acknowledged:s}},this.extend=async t=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{await this.isValidExtend(t)}catch(c){throw this.client.logger.error("extend() -> isValidExtend() failed"),c}const{topic:i}=t,n=vt(),{done:s,resolve:o,reject:a}=bt();return this.events.once(U("session_extend",n),({error:c})=>{c?a(c):o()}),await this.setExpiry(i,re(Ft)),this.sendRequest({topic:i,method:"wc_sessionExtend",params:{},clientRpcId:n,throwOnFailedPublish:!0}).catch(c=>{a(c)}),{acknowledged:s}},this.request=async t=>{this.isInitialized();try{await this.isValidRequest(t)}catch(f){throw this.client.logger.error("request() -> isValidRequest() failed"),f}const{chainId:i,request:n,topic:s,expiry:o=ie.wc_sessionRequest.req.ttl}=t,a=this.client.session.get(s);(a==null?void 0:a.transportType)===G.relay&&await this.confirmOnlineStateOrThrow();const c=vt(),l=xt().toString(),{done:u,resolve:h,reject:p}=bt(o,"Request expired. Please try again.");this.events.once(U("session_request",c),({error:f,result:g})=>{f?p(f):h(g)});const d=this.getAppLinkIfEnabled(a.peer.metadata,a.transportType);return d?(await this.sendRequest({clientRpcId:c,relayRpcId:l,topic:s,method:"wc_sessionRequest",params:{request:De(Z({},n),{expiryTimestamp:re(o)}),chainId:i},expiry:o,throwOnFailedPublish:!0,appLink:d}).catch(f=>p(f)),this.client.events.emit("session_request_sent",{topic:s,request:n,chainId:i,id:c}),await u()):await Promise.all([new Promise(async f=>{await this.sendRequest({clientRpcId:c,relayRpcId:l,topic:s,method:"wc_sessionRequest",params:{request:De(Z({},n),{expiryTimestamp:re(o)}),chainId:i},expiry:o,throwOnFailedPublish:!0}).catch(g=>p(g)),this.client.events.emit("session_request_sent",{topic:s,request:n,chainId:i,id:c}),f()}),new Promise(async f=>{var g;if(!((g=a.sessionConfig)!=null&&g.disableDeepLink)){const y=await _p(this.client.core.storage,ea);await mp({id:c,topic:s,wcDeepLink:y})}f()}),u()]).then(f=>f[2])},this.respond=async t=>{this.isInitialized(),await this.isValidRespond(t);const{topic:i,response:n}=t,{id:s}=n,o=this.client.session.get(i);o.transportType===G.relay&&await this.confirmOnlineStateOrThrow();const a=this.getAppLinkIfEnabled(o.peer.metadata,o.transportType);Qe(n)?await this.sendResult({id:s,topic:i,result:n.result,throwOnFailedPublish:!0,appLink:a}):qe(n)&&await this.sendError({id:s,topic:i,error:n.error,appLink:a}),this.cleanupAfterResponse(t)},this.ping=async t=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{await this.isValidPing(t)}catch(n){throw this.client.logger.error("ping() -> isValidPing() failed"),n}const{topic:i}=t;if(this.client.session.keys.includes(i)){const n=vt(),s=xt().toString(),{done:o,resolve:a,reject:c}=bt();this.events.once(U("session_ping",n),({error:l})=>{l?c(l):a()}),await Promise.all([this.sendRequest({topic:i,method:"wc_sessionPing",params:{},throwOnFailedPublish:!0,clientRpcId:n,relayRpcId:s}),o()])}else this.client.core.pairing.pairings.keys.includes(i)&&(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:i}))},this.emit=async t=>{this.isInitialized(),await this.confirmOnlineStateOrThrow(),await this.isValidEmit(t);const{topic:i,event:n,chainId:s}=t,o=xt().toString(),a=vt();await this.sendRequest({topic:i,method:"wc_sessionEvent",params:{event:n,chainId:s},throwOnFailedPublish:!0,relayRpcId:o,clientRpcId:a})},this.disconnect=async t=>{this.isInitialized(),await this.confirmOnlineStateOrThrow(),await this.isValidDisconnect(t);const{topic:i}=t;if(this.client.session.keys.includes(i))await this.sendRequest({topic:i,method:"wc_sessionDelete",params:H("USER_DISCONNECTED"),throwOnFailedPublish:!0}),await this.deleteSession({topic:i,emitEvent:!1});else if(this.client.core.pairing.pairings.keys.includes(i))await this.client.core.pairing.disconnect({topic:i});else{const{message:n}=P("MISMATCHED_TOPIC",`Session or pairing topic not found: ${i}`);throw new Error(n)}},this.find=t=>(this.isInitialized(),this.client.session.getAll().filter(i=>Ny(i,t))),this.getPendingSessionRequests=()=>this.client.pendingRequest.getAll(),this.authenticate=async(t,i)=>{var n;this.isInitialized(),this.isValidAuthenticate(t);const s=i&&this.client.core.linkModeSupportedApps.includes(i)&&((n=this.client.metadata.redirect)==null?void 0:n.linkMode),o=s?G.link_mode:G.relay;o===G.relay&&await this.confirmOnlineStateOrThrow();const{chains:a,statement:c="",uri:l,domain:u,nonce:h,type:p,exp:d,nbf:f,methods:g=[],expiry:y}=t,m=[...t.resources||[]],{topic:v,uri:_}=await this.client.core.pairing.create({methods:["wc_sessionAuthenticate"],transportType:o});this.client.logger.info({message:"Generated new pairing",pairing:{topic:v,uri:_}});const w=await this.client.core.crypto.generateKeyPair(),b=jr(w);if(await Promise.all([this.client.auth.authKeys.set(Vr,{responseTopic:b,publicKey:w}),this.client.auth.pairingTopics.set(b,{topic:b,pairingTopic:v})]),await this.client.core.relayer.subscribe(b,{transportType:o}),this.client.logger.info(`sending request to new pairing topic: ${v}`),g.length>0){const{namespace:M}=zr(a[0]);let A=ug(M,"request",g);Kr(m)&&(A=dg(A,m.pop())),m.push(A)}const E=y&&y>ie.wc_sessionAuthenticate.req.ttl?y:ie.wc_sessionAuthenticate.req.ttl,S={authPayload:{type:p??"caip122",chains:a,statement:c,aud:l,domain:u,version:"1",nonce:h,iat:new Date().toISOString(),exp:d,nbf:f,resources:m},requester:{publicKey:w,metadata:this.client.metadata},expiryTimestamp:re(E)},x={eip155:{chains:a,methods:[...new Set(["personal_sign",...g])],events:["chainChanged","accountsChanged"]}},C={requiredNamespaces:{},optionalNamespaces:x,relays:[{protocol:"irn"}],pairingTopic:v,proposer:{publicKey:w,metadata:this.client.metadata},expiryTimestamp:re(ie.wc_sessionPropose.req.ttl)},{done:N,resolve:O,reject:D}=bt(E,"Request expired"),$=async({error:M,session:A})=>{if(this.events.off(U("session_request",F),q),M)D(M);else if(A){A.self.publicKey=w,await this.client.session.set(A.topic,A),await this.setExpiry(A.topic,A.expiry),v&&await this.client.core.pairing.updateMetadata({topic:v,metadata:A.peer.metadata});const j=this.client.session.get(A.topic);await this.deleteProposal(B),O({session:j})}},q=async M=>{var A,j,J;if(await this.deletePendingAuthRequest(F,{message:"fulfilled",code:0}),M.error){const Pe=H("WC_METHOD_UNSUPPORTED","wc_sessionAuthenticate");return M.error.code===Pe.code?void 0:(this.events.off(U("session_connect"),$),D(M.error.message))}await this.deleteProposal(B),this.events.off(U("session_connect"),$);const{cacaos:W,responder:te}=M.result,me=[],Ie=[];for(const Pe of W){await Xs({cacao:Pe,projectId:this.client.core.projectId})||(this.client.logger.error(Pe,"Signature verification failed"),D(H("SESSION_SETTLEMENT_FAILED","Signature verification failed")));const{p:ze}=Pe,bi=Kr(ze.resources),is=[an(ze.iss)],jl=ei(ze.iss);if(bi){const Ei=Zs(bi),Vl=eo(bi);me.push(...Ei),is.push(...Vl)}for(const Ei of is)Ie.push(`${Ei}:${jl}`)}const xe=await this.client.core.crypto.generateSharedKey(w,te.publicKey);let ke;me.length>0&&(ke={topic:xe,acknowledged:!0,self:{publicKey:w,metadata:this.client.metadata},peer:te,controller:te.publicKey,expiry:re(Ft),requiredNamespaces:{},optionalNamespaces:{},relay:{protocol:"irn"},pairingTopic:v,namespaces:_o([...new Set(me)],[...new Set(Ie)]),transportType:o},await this.client.core.relayer.subscribe(xe,{transportType:o}),await this.client.session.set(xe,ke),v&&await this.client.core.pairing.updateMetadata({topic:v,metadata:te.metadata}),ke=this.client.session.get(xe)),(A=this.client.metadata.redirect)!=null&&A.linkMode&&(j=te.metadata.redirect)!=null&&j.linkMode&&(J=te.metadata.redirect)!=null&&J.universal&&i&&(this.client.core.addLinkModeSupportedApp(te.metadata.redirect.universal),this.client.session.update(xe,{transportType:G.link_mode})),O({auths:W,session:ke})},F=vt(),B=vt();this.events.once(U("session_connect"),$),this.events.once(U("session_request",F),q);let K;try{if(s){const M=It("wc_sessionAuthenticate",S,F);this.client.core.history.set(v,M);const A=await this.client.core.crypto.encode("",M,{type:Nr,encoding:or});K=Fr(i,v,A)}else await Promise.all([this.sendRequest({topic:v,method:"wc_sessionAuthenticate",params:S,expiry:t.expiry,throwOnFailedPublish:!0,clientRpcId:F}),this.sendRequest({topic:v,method:"wc_sessionPropose",params:C,expiry:ie.wc_sessionPropose.req.ttl,throwOnFailedPublish:!0,clientRpcId:B})])}catch(M){throw this.events.off(U("session_connect"),$),this.events.off(U("session_request",F),q),M}return await this.setProposal(B,Z({id:B},C)),await this.setAuthRequest(F,{request:De(Z({},S),{verifyContext:{}}),pairingTopic:v,transportType:o}),{uri:K??_,response:N}},this.approveSessionAuthenticate=async t=>{const{id:i,auths:n}=t,s=this.client.core.eventClient.createEvent({properties:{topic:i.toString(),trace:[_t.authenticated_session_approve_started]}});try{this.isInitialized()}catch(y){throw s.setError(lr.no_internet_connection),y}const o=this.getPendingAuthRequest(i);if(!o)throw s.setError(lr.authenticated_session_pending_request_not_found),new Error(`Could not find pending auth request with id ${i}`);const a=o.transportType||G.relay;a===G.relay&&await this.confirmOnlineStateOrThrow();const c=o.requester.publicKey,l=await this.client.core.crypto.generateKeyPair(),u=jr(c),h={type:rt,receiverPublicKey:c,senderPublicKey:l},p=[],d=[];for(const y of n){if(!await Xs({cacao:y,projectId:this.client.core.projectId})){s.setError(lr.invalid_cacao);const b=H("SESSION_SETTLEMENT_FAILED","Signature verification failed");throw await this.sendError({id:i,topic:u,error:b,encodeOpts:h}),new Error(b.message)}s.addTrace(_t.cacaos_verified);const{p:m}=y,v=Kr(m.resources),_=[an(m.iss)],w=ei(m.iss);if(v){const b=Zs(v),E=eo(v);p.push(...b),_.push(...E)}for(const b of _)d.push(`${b}:${w}`)}const f=await this.client.core.crypto.generateSharedKey(l,c);s.addTrace(_t.create_authenticated_session_topic);let g;if((p==null?void 0:p.length)>0){g={topic:f,acknowledged:!0,self:{publicKey:l,metadata:this.client.metadata},peer:{publicKey:c,metadata:o.requester.metadata},controller:c,expiry:re(Ft),authentication:n,requiredNamespaces:{},optionalNamespaces:{},relay:{protocol:"irn"},pairingTopic:o.pairingTopic,namespaces:_o([...new Set(p)],[...new Set(d)]),transportType:a},s.addTrace(_t.subscribing_authenticated_session_topic);try{await this.client.core.relayer.subscribe(f,{transportType:a})}catch(y){throw s.setError(lr.subscribe_authenticated_session_topic_failure),y}s.addTrace(_t.subscribe_authenticated_session_topic_success),await this.client.session.set(f,g),s.addTrace(_t.store_authenticated_session),await this.client.core.pairing.updateMetadata({topic:o.pairingTopic,metadata:o.requester.metadata})}s.addTrace(_t.publishing_authenticated_session_approve);try{await this.sendResult({topic:u,id:i,result:{cacaos:n,responder:{publicKey:l,metadata:this.client.metadata}},encodeOpts:h,throwOnFailedPublish:!0,appLink:this.getAppLinkIfEnabled(o.requester.metadata,a)})}catch(y){throw s.setError(lr.authenticated_session_approve_publish_failure),y}return await this.client.auth.requests.delete(i,{message:"fulfilled",code:0}),await this.client.core.pairing.activate({topic:o.pairingTopic}),this.client.core.eventClient.deleteEvent({eventId:s.eventId}),{session:g}},this.rejectSessionAuthenticate=async t=>{this.isInitialized();const{id:i,reason:n}=t,s=this.getPendingAuthRequest(i);if(!s)throw new Error(`Could not find pending auth request with id ${i}`);s.transportType===G.relay&&await this.confirmOnlineStateOrThrow();const o=s.requester.publicKey,a=await this.client.core.crypto.generateKeyPair(),c=jr(o),l={type:rt,receiverPublicKey:o,senderPublicKey:a};await this.sendError({id:i,topic:c,error:n,encodeOpts:l,rpcOpts:ie.wc_sessionAuthenticate.reject,appLink:this.getAppLinkIfEnabled(s.requester.metadata,s.transportType)}),await this.client.auth.requests.delete(i,{message:"rejected",code:0}),await this.client.proposal.delete(i,H("USER_DISCONNECTED"))},this.formatAuthMessage=t=>{this.isInitialized();const{request:i,iss:n}=t;return ol(i,n)},this.processRelayMessageCache=()=>{setTimeout(async()=>{if(this.relayMessageCache.length!==0)for(;this.relayMessageCache.length>0;)try{const t=this.relayMessageCache.shift();t&&await this.onRelayMessage(t)}catch(t){this.client.logger.error(t)}},50)},this.cleanupDuplicatePairings=async t=>{if(t.pairingTopic)try{const i=this.client.core.pairing.pairings.get(t.pairingTopic),n=this.client.core.pairing.pairings.getAll().filter(s=>{var o,a;return((o=s.peerMetadata)==null?void 0:o.url)&&((a=s.peerMetadata)==null?void 0:a.url)===t.peer.metadata.url&&s.topic&&s.topic!==i.topic});if(n.length===0)return;this.client.logger.info(`Cleaning up ${n.length} duplicate pairing(s)`),await Promise.all(n.map(s=>this.client.core.pairing.disconnect({topic:s.topic}))),this.client.logger.info("Duplicate pairings clean up finished")}catch(i){this.client.logger.error(i)}},this.deleteSession=async t=>{var i;const{topic:n,expirerHasDeleted:s=!1,emitEvent:o=!0,id:a=0}=t,{self:c}=this.client.session.get(n);await this.client.core.relayer.unsubscribe(n),await this.client.session.delete(n,H("USER_DISCONNECTED")),this.addToRecentlyDeleted(n,"session"),this.client.core.crypto.keychain.has(c.publicKey)&&await this.client.core.crypto.deleteKeyPair(c.publicKey),this.client.core.crypto.keychain.has(n)&&await this.client.core.crypto.deleteSymKey(n),s||this.client.core.expirer.del(n),this.client.core.storage.removeItem(ea).catch(l=>this.client.logger.warn(l)),this.getPendingSessionRequests().forEach(l=>{l.topic===n&&this.deletePendingSessionRequest(l.id,H("USER_DISCONNECTED"))}),n===((i=this.sessionRequestQueue.queue[0])==null?void 0:i.topic)&&(this.sessionRequestQueue.state=je.idle),o&&this.client.events.emit("session_delete",{id:a,topic:n})},this.deleteProposal=async(t,i)=>{if(i)try{const n=this.client.proposal.get(t),s=this.client.core.eventClient.getEvent({topic:n.pairingTopic});s==null||s.setError(wt.proposal_expired)}catch{}await Promise.all([this.client.proposal.delete(t,H("USER_DISCONNECTED")),i?Promise.resolve():this.client.core.expirer.del(t)]),this.addToRecentlyDeleted(t,"proposal")},this.deletePendingSessionRequest=async(t,i,n=!1)=>{await Promise.all([this.client.pendingRequest.delete(t,i),n?Promise.resolve():this.client.core.expirer.del(t)]),this.addToRecentlyDeleted(t,"request"),this.sessionRequestQueue.queue=this.sessionRequestQueue.queue.filter(s=>s.id!==t),n&&(this.sessionRequestQueue.state=je.idle,this.client.events.emit("session_request_expire",{id:t}))},this.deletePendingAuthRequest=async(t,i,n=!1)=>{await Promise.all([this.client.auth.requests.delete(t,i),n?Promise.resolve():this.client.core.expirer.del(t)])},this.setExpiry=async(t,i)=>{this.client.session.keys.includes(t)&&(this.client.core.expirer.set(t,i),await this.client.session.update(t,{expiry:i}))},this.setProposal=async(t,i)=>{this.client.core.expirer.set(t,re(ie.wc_sessionPropose.req.ttl)),await this.client.proposal.set(t,i)},this.setAuthRequest=async(t,i)=>{const{request:n,pairingTopic:s,transportType:o=G.relay}=i;this.client.core.expirer.set(t,n.expiryTimestamp),await this.client.auth.requests.set(t,{authPayload:n.authPayload,requester:n.requester,expiryTimestamp:n.expiryTimestamp,id:t,pairingTopic:s,verifyContext:n.verifyContext,transportType:o})},this.setPendingSessionRequest=async t=>{const{id:i,topic:n,params:s,verifyContext:o}=t,a=s.request.expiryTimestamp||re(ie.wc_sessionRequest.req.ttl);this.client.core.expirer.set(i,a),await this.client.pendingRequest.set(i,{id:i,topic:n,params:s,verifyContext:o})},this.sendRequest=async t=>{const{topic:i,method:n,params:s,expiry:o,relayRpcId:a,clientRpcId:c,throwOnFailedPublish:l,appLink:u}=t,h=It(n,s,c);let p;const d=!!u;try{const y=d?or:ut;p=await this.client.core.crypto.encode(i,h,{encoding:y})}catch(y){throw await this.cleanup(),this.client.logger.error(`sendRequest() -> core.crypto.encode() for topic ${i} failed`),y}let f;if(mw.includes(n)){const y=Ze(JSON.stringify(h)),m=Ze(p);f=await this.client.core.verify.register({id:m,decryptedId:y})}const g=ie[n].req;if(g.attestation=f,o&&(g.ttl=o),a&&(g.id=a),this.client.core.history.set(i,h),d){const y=Fr(u,i,p);await R.global.Linking.openURL(y,this.client.name)}else{const y=ie[n].req;o&&(y.ttl=o),a&&(y.id=a),l?(y.internal=De(Z({},y.internal),{throwOnFailedPublish:!0}),await this.client.core.relayer.publish(i,p,y)):this.client.core.relayer.publish(i,p,y).catch(m=>this.client.logger.error(m))}return h.id},this.sendResult=async t=>{const{id:i,topic:n,result:s,throwOnFailedPublish:o,encodeOpts:a,appLink:c}=t,l=bn(i,s);let u;const h=c&&typeof(R.global==null?void 0:R.global.Linking)<"u";try{const d=h?or:ut;u=await this.client.core.crypto.encode(n,l,De(Z({},a||{}),{encoding:d}))}catch(d){throw await this.cleanup(),this.client.logger.error(`sendResult() -> core.crypto.encode() for topic ${n} failed`),d}let p;try{p=await this.client.core.history.get(n,i)}catch(d){throw this.client.logger.error(`sendResult() -> history.get(${n}, ${i}) failed`),d}if(h){const d=Fr(c,n,u);await R.global.Linking.openURL(d,this.client.name)}else{const d=ie[p.request.method].res;o?(d.internal=De(Z({},d.internal),{throwOnFailedPublish:!0}),await this.client.core.relayer.publish(n,u,d)):this.client.core.relayer.publish(n,u,d).catch(f=>this.client.logger.error(f))}await this.client.core.history.resolve(l)},this.sendError=async t=>{const{id:i,topic:n,error:s,encodeOpts:o,rpcOpts:a,appLink:c}=t,l=vn(i,s);let u;const h=c&&typeof(R.global==null?void 0:R.global.Linking)<"u";try{const d=h?or:ut;u=await this.client.core.crypto.encode(n,l,De(Z({},o||{}),{encoding:d}))}catch(d){throw await this.cleanup(),this.client.logger.error(`sendError() -> core.crypto.encode() for topic ${n} failed`),d}let p;try{p=await this.client.core.history.get(n,i)}catch(d){throw this.client.logger.error(`sendError() -> history.get(${n}, ${i}) failed`),d}if(h){const d=Fr(c,n,u);await R.global.Linking.openURL(d,this.client.name)}else{const d=a||ie[p.request.method].res;this.client.core.relayer.publish(n,u,d)}await this.client.core.history.resolve(l)},this.cleanup=async()=>{const t=[],i=[];this.client.session.getAll().forEach(n=>{let s=!1;at(n.expiry)&&(s=!0),this.client.core.crypto.keychain.has(n.topic)||(s=!0),s&&t.push(n.topic)}),this.client.proposal.getAll().forEach(n=>{at(n.expiryTimestamp)&&i.push(n.id)}),await Promise.all([...t.map(n=>this.deleteSession({topic:n})),...i.map(n=>this.deleteProposal(n))])},this.onRelayEventRequest=async t=>{this.requestQueue.queue.push(t),await this.processRequestsQueue()},this.processRequestsQueue=async()=>{if(this.requestQueue.state===je.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=je.active;const t=this.requestQueue.queue.shift();if(t)try{await this.processRequest(t)}catch(i){this.client.logger.warn(i)}}this.requestQueue.state=je.idle},this.processRequest=async t=>{const{topic:i,payload:n,attestation:s,transportType:o,encryptedId:a}=t,c=n.method;if(!this.shouldIgnorePairingRequest({topic:i,requestMethod:c}))switch(c){case"wc_sessionPropose":return await this.onSessionProposeRequest({topic:i,payload:n,attestation:s,encryptedId:a});case"wc_sessionSettle":return await this.onSessionSettleRequest(i,n);case"wc_sessionUpdate":return await this.onSessionUpdateRequest(i,n);case"wc_sessionExtend":return await this.onSessionExtendRequest(i,n);case"wc_sessionPing":return await this.onSessionPingRequest(i,n);case"wc_sessionDelete":return await this.onSessionDeleteRequest(i,n);case"wc_sessionRequest":return await this.onSessionRequest({topic:i,payload:n,attestation:s,encryptedId:a,transportType:o});case"wc_sessionEvent":return await this.onSessionEventRequest(i,n);case"wc_sessionAuthenticate":return await this.onSessionAuthenticateRequest({topic:i,payload:n,attestation:s,encryptedId:a,transportType:o});default:return this.client.logger.info(`Unsupported request method ${c}`)}},this.onRelayEventResponse=async t=>{const{topic:i,payload:n,transportType:s}=t,o=(await this.client.core.history.get(i,n.id)).request.method;switch(o){case"wc_sessionPropose":return this.onSessionProposeResponse(i,n,s);case"wc_sessionSettle":return this.onSessionSettleResponse(i,n);case"wc_sessionUpdate":return this.onSessionUpdateResponse(i,n);case"wc_sessionExtend":return this.onSessionExtendResponse(i,n);case"wc_sessionPing":return this.onSessionPingResponse(i,n);case"wc_sessionRequest":return this.onSessionRequestResponse(i,n);case"wc_sessionAuthenticate":return this.onSessionAuthenticateResponse(i,n);default:return this.client.logger.info(`Unsupported response method ${o}`)}},this.onRelayEventUnknownPayload=t=>{const{topic:i}=t,{message:n}=P("MISSING_OR_INVALID",`Decoded payload on topic ${i} is not identifiable as a JSON-RPC request or a response.`);throw new Error(n)},this.shouldIgnorePairingRequest=t=>{const{topic:i,requestMethod:n}=t,s=this.expectedPairingMethodMap.get(i);return!s||s.includes(n)?!1:!!(s.includes("wc_sessionAuthenticate")&&this.client.events.listenerCount("session_authenticate")>0)},this.onSessionProposeRequest=async t=>{const{topic:i,payload:n,attestation:s,encryptedId:o}=t,{params:a,id:c}=n;try{const l=this.client.core.eventClient.getEvent({topic:i});this.client.events.listenerCount("session_proposal")===0&&(console.warn("No listener for session_proposal event"),l==null||l.setError(Xe.proposal_listener_not_found)),this.isValidConnect(Z({},n.params));const u=a.expiryTimestamp||re(ie.wc_sessionPropose.req.ttl),h=Z({id:c,pairingTopic:i,expiryTimestamp:u},a);await this.setProposal(c,h);const p=await this.getVerifyContext({attestationId:s,hash:Ze(JSON.stringify(n)),encryptedId:o,metadata:h.proposer.metadata});l==null||l.addTrace(Ve.emit_session_proposal),this.client.events.emit("session_proposal",{id:c,params:h,verifyContext:p})}catch(l){await this.sendError({id:c,topic:i,error:l,rpcOpts:ie.wc_sessionPropose.autoReject}),this.client.logger.error(l)}},this.onSessionProposeResponse=async(t,i,n)=>{const{id:s}=i;if(Qe(i)){const{result:o}=i;this.client.logger.trace({type:"method",method:"onSessionProposeResponse",result:o});const a=this.client.proposal.get(s);this.client.logger.trace({type:"method",method:"onSessionProposeResponse",proposal:a});const c=a.proposer.publicKey;this.client.logger.trace({type:"method",method:"onSessionProposeResponse",selfPublicKey:c});const l=o.responderPublicKey;this.client.logger.trace({type:"method",method:"onSessionProposeResponse",peerPublicKey:l});const u=await this.client.core.crypto.generateSharedKey(c,l);this.client.logger.trace({type:"method",method:"onSessionProposeResponse",sessionTopic:u});const h=await this.client.core.relayer.subscribe(u,{transportType:n});this.client.logger.trace({type:"method",method:"onSessionProposeResponse",subscriptionId:h}),await this.client.core.pairing.activate({topic:t})}else if(qe(i)){await this.client.proposal.delete(s,H("USER_DISCONNECTED"));const o=U("session_connect");if(this.events.listenerCount(o)===0)throw new Error(`emitting ${o} without any listeners, 954`);this.events.emit(U("session_connect"),{error:i.error})}},this.onSessionSettleRequest=async(t,i)=>{const{id:n,params:s}=i;try{this.isValidSessionSettleRequest(s);const{relay:o,controller:a,expiry:c,namespaces:l,sessionProperties:u,sessionConfig:h}=i.params,p=De(Z(Z({topic:t,relay:o,expiry:c,namespaces:l,acknowledged:!0,pairingTopic:"",requiredNamespaces:{},optionalNamespaces:{},controller:a.publicKey,self:{publicKey:"",metadata:this.client.metadata},peer:{publicKey:a.publicKey,metadata:a.metadata}},u&&{sessionProperties:u}),h&&{sessionConfig:h}),{transportType:G.relay}),d=U("session_connect");if(this.events.listenerCount(d)===0)throw new Error(`emitting ${d} without any listeners 997`);this.events.emit(U("session_connect"),{session:p}),await this.sendResult({id:i.id,topic:t,result:!0,throwOnFailedPublish:!0})}catch(o){await this.sendError({id:n,topic:t,error:o}),this.client.logger.error(o)}},this.onSessionSettleResponse=async(t,i)=>{const{id:n}=i;Qe(i)?(await this.client.session.update(t,{acknowledged:!0}),this.events.emit(U("session_approve",n),{})):qe(i)&&(await this.client.session.delete(t,H("USER_DISCONNECTED")),this.events.emit(U("session_approve",n),{error:i.error}))},this.onSessionUpdateRequest=async(t,i)=>{const{params:n,id:s}=i;try{const o=`${t}_session_update`,a=ar.get(o);if(a&&this.isRequestOutOfSync(a,s)){this.client.logger.warn(`Discarding out of sync request - ${s}`),this.sendError({id:s,topic:t,error:H("INVALID_UPDATE_REQUEST")});return}this.isValidUpdate(Z({topic:t},n));try{ar.set(o,s),await this.client.session.update(t,{namespaces:n.namespaces}),await this.sendResult({id:s,topic:t,result:!0,throwOnFailedPublish:!0})}catch(c){throw ar.delete(o),c}this.client.events.emit("session_update",{id:s,topic:t,params:n})}catch(o){await this.sendError({id:s,topic:t,error:o}),this.client.logger.error(o)}},this.isRequestOutOfSync=(t,i)=>i.toString().slice(0,-3)<t.toString().slice(0,-3),this.onSessionUpdateResponse=(t,i)=>{const{id:n}=i,s=U("session_update",n);if(this.events.listenerCount(s)===0)throw new Error(`emitting ${s} without any listeners`);Qe(i)?this.events.emit(U("session_update",n),{}):qe(i)&&this.events.emit(U("session_update",n),{error:i.error})},this.onSessionExtendRequest=async(t,i)=>{const{id:n}=i;try{this.isValidExtend({topic:t}),await this.setExpiry(t,re(Ft)),await this.sendResult({id:n,topic:t,result:!0,throwOnFailedPublish:!0}),this.client.events.emit("session_extend",{id:n,topic:t})}catch(s){await this.sendError({id:n,topic:t,error:s}),this.client.logger.error(s)}},this.onSessionExtendResponse=(t,i)=>{const{id:n}=i,s=U("session_extend",n);if(this.events.listenerCount(s)===0)throw new Error(`emitting ${s} without any listeners`);Qe(i)?this.events.emit(U("session_extend",n),{}):qe(i)&&this.events.emit(U("session_extend",n),{error:i.error})},this.onSessionPingRequest=async(t,i)=>{const{id:n}=i;try{this.isValidPing({topic:t}),await this.sendResult({id:n,topic:t,result:!0,throwOnFailedPublish:!0}),this.client.events.emit("session_ping",{id:n,topic:t})}catch(s){await this.sendError({id:n,topic:t,error:s}),this.client.logger.error(s)}},this.onSessionPingResponse=(t,i)=>{const{id:n}=i,s=U("session_ping",n);if(this.events.listenerCount(s)===0)throw new Error(`emitting ${s} without any listeners`);setTimeout(()=>{Qe(i)?this.events.emit(U("session_ping",n),{}):qe(i)&&this.events.emit(U("session_ping",n),{error:i.error})},500)},this.onSessionDeleteRequest=async(t,i)=>{const{id:n}=i;try{this.isValidDisconnect({topic:t,reason:i.params}),Promise.all([new Promise(s=>{this.client.core.relayer.once(ne.publish,async()=>{s(await this.deleteSession({topic:t,id:n}))})}),this.sendResult({id:n,topic:t,result:!0,throwOnFailedPublish:!0}),this.cleanupPendingSentRequestsForTopic({topic:t,error:H("USER_DISCONNECTED")})]).catch(s=>this.client.logger.error(s))}catch(s){this.client.logger.error(s)}},this.onSessionRequest=async t=>{var i,n,s;const{topic:o,payload:a,attestation:c,encryptedId:l,transportType:u}=t,{id:h,params:p}=a;try{await this.isValidRequest(Z({topic:o},p));const d=this.client.session.get(o),f=await this.getVerifyContext({attestationId:c,hash:Ze(JSON.stringify(It("wc_sessionRequest",p,h))),encryptedId:l,metadata:d.peer.metadata,transportType:u}),g={id:h,topic:o,params:p,verifyContext:f};await this.setPendingSessionRequest(g),u===G.link_mode&&(i=d.peer.metadata.redirect)!=null&&i.universal&&this.client.core.addLinkModeSupportedApp((n=d.peer.metadata.redirect)==null?void 0:n.universal),(s=this.client.signConfig)!=null&&s.disableRequestQueue?this.emitSessionRequest(g):(this.addSessionRequestToSessionRequestQueue(g),this.processSessionRequestQueue())}catch(d){await this.sendError({id:h,topic:o,error:d}),this.client.logger.error(d)}},this.onSessionRequestResponse=(t,i)=>{const{id:n}=i,s=U("session_request",n);if(this.events.listenerCount(s)===0)throw new Error(`emitting ${s} without any listeners`);Qe(i)?this.events.emit(U("session_request",n),{result:i.result}):qe(i)&&this.events.emit(U("session_request",n),{error:i.error})},this.onSessionEventRequest=async(t,i)=>{const{id:n,params:s}=i;try{const o=`${t}_session_event_${s.event.name}`,a=ar.get(o);if(a&&this.isRequestOutOfSync(a,n)){this.client.logger.info(`Discarding out of sync request - ${n}`);return}this.isValidEmit(Z({topic:t},s)),this.client.events.emit("session_event",{id:n,topic:t,params:s}),ar.set(o,n)}catch(o){await this.sendError({id:n,topic:t,error:o}),this.client.logger.error(o)}},this.onSessionAuthenticateResponse=(t,i)=>{const{id:n}=i;this.client.logger.trace({type:"method",method:"onSessionAuthenticateResponse",topic:t,payload:i}),Qe(i)?this.events.emit(U("session_request",n),{result:i.result}):qe(i)&&this.events.emit(U("session_request",n),{error:i.error})},this.onSessionAuthenticateRequest=async t=>{var i;const{topic:n,payload:s,attestation:o,encryptedId:a,transportType:c}=t;try{const{requester:l,authPayload:u,expiryTimestamp:h}=s.params,p=await this.getVerifyContext({attestationId:o,hash:Ze(JSON.stringify(s)),encryptedId:a,metadata:l.metadata,transportType:c}),d={requester:l,pairingTopic:n,id:s.id,authPayload:u,verifyContext:p,expiryTimestamp:h};await this.setAuthRequest(s.id,{request:d,pairingTopic:n,transportType:c}),c===G.link_mode&&(i=l.metadata.redirect)!=null&&i.universal&&this.client.core.addLinkModeSupportedApp(l.metadata.redirect.universal),this.client.events.emit("session_authenticate",{topic:n,params:s.params,id:s.id,verifyContext:p})}catch(l){this.client.logger.error(l);const u=s.params.requester.publicKey,h=await this.client.core.crypto.generateKeyPair(),p=this.getAppLinkIfEnabled(s.params.requester.metadata,c),d={type:rt,receiverPublicKey:u,senderPublicKey:h};await this.sendError({id:s.id,topic:n,error:l,encodeOpts:d,rpcOpts:ie.wc_sessionAuthenticate.autoReject,appLink:p})}},this.addSessionRequestToSessionRequestQueue=t=>{this.sessionRequestQueue.queue.push(t)},this.cleanupAfterResponse=t=>{this.deletePendingSessionRequest(t.response.id,{message:"fulfilled",code:0}),setTimeout(()=>{this.sessionRequestQueue.state=je.idle,this.processSessionRequestQueue()},I.toMiliseconds(this.requestQueueDelay))},this.cleanupPendingSentRequestsForTopic=({topic:t,error:i})=>{const n=this.client.core.history.pending;n.length>0&&n.filter(s=>s.topic===t&&s.request.method==="wc_sessionRequest").forEach(s=>{const o=s.request.id,a=U("session_request",o);if(this.events.listenerCount(a)===0)throw new Error(`emitting ${a} without any listeners`);this.events.emit(U("session_request",s.request.id),{error:i})})},this.processSessionRequestQueue=()=>{if(this.sessionRequestQueue.state===je.active){this.client.logger.info("session request queue is already active.");return}const t=this.sessionRequestQueue.queue[0];if(!t){this.client.logger.info("session request queue is empty.");return}try{this.sessionRequestQueue.state=je.active,this.emitSessionRequest(t)}catch(i){this.client.logger.error(i)}},this.emitSessionRequest=t=>{this.client.events.emit("session_request",t)},this.onPairingCreated=t=>{if(t.methods&&this.expectedPairingMethodMap.set(t.topic,t.methods),t.active)return;const i=this.client.proposal.getAll().find(n=>n.pairingTopic===t.topic);i&&this.onSessionProposeRequest({topic:t.topic,payload:It("wc_sessionPropose",{requiredNamespaces:i.requiredNamespaces,optionalNamespaces:i.optionalNamespaces,relays:i.relays,proposer:i.proposer,sessionProperties:i.sessionProperties},i.id)})},this.isValidConnect=async t=>{if(!ge(t)){const{message:c}=P("MISSING_OR_INVALID",`connect() params: ${JSON.stringify(t)}`);throw new Error(c)}const{pairingTopic:i,requiredNamespaces:n,optionalNamespaces:s,sessionProperties:o,relays:a}=t;if(de(i)||await this.isValidPairingTopic(i),!Ky(a)){const{message:c}=P("MISSING_OR_INVALID",`connect() relays: ${a}`);throw new Error(c)}!de(n)&&ri(n)!==0&&this.validateNamespaces(n,"requiredNamespaces"),!de(s)&&ri(s)!==0&&this.validateNamespaces(s,"optionalNamespaces"),de(o)||this.validateSessionProps(o,"sessionProperties")},this.validateNamespaces=(t,i)=>{const n=zy(t,"connect()",i);if(n)throw new Error(n.message)},this.isValidApprove=async t=>{if(!ge(t))throw new Error(P("MISSING_OR_INVALID",`approve() params: ${t}`).message);const{id:i,namespaces:n,relayProtocol:s,sessionProperties:o}=t;this.checkRecentlyDeleted(i),await this.isValidProposalId(i);const a=this.client.proposal.get(i),c=Ui(n,"approve()");if(c)throw new Error(c.message);const l=So(a.requiredNamespaces,n,"approve()");if(l)throw new Error(l.message);if(!ee(s,!0)){const{message:u}=P("MISSING_OR_INVALID",`approve() relayProtocol: ${s}`);throw new Error(u)}de(o)||this.validateSessionProps(o,"sessionProperties")},this.isValidReject=async t=>{if(!ge(t)){const{message:s}=P("MISSING_OR_INVALID",`reject() params: ${t}`);throw new Error(s)}const{id:i,reason:n}=t;if(this.checkRecentlyDeleted(i),await this.isValidProposalId(i),!Vy(n)){const{message:s}=P("MISSING_OR_INVALID",`reject() reason: ${JSON.stringify(n)}`);throw new Error(s)}},this.isValidSessionSettleRequest=t=>{if(!ge(t)){const{message:l}=P("MISSING_OR_INVALID",`onSessionSettleRequest() params: ${t}`);throw new Error(l)}const{relay:i,controller:n,namespaces:s,expiry:o}=t;if(!Sl(i)){const{message:l}=P("MISSING_OR_INVALID","onSessionSettleRequest() relay protocol should be a string");throw new Error(l)}const a=Ly(n,"onSessionSettleRequest()");if(a)throw new Error(a.message);const c=Ui(s,"onSessionSettleRequest()");if(c)throw new Error(c.message);if(at(o)){const{message:l}=P("EXPIRED","onSessionSettleRequest()");throw new Error(l)}},this.isValidUpdate=async t=>{if(!ge(t)){const{message:c}=P("MISSING_OR_INVALID",`update() params: ${t}`);throw new Error(c)}const{topic:i,namespaces:n}=t;this.checkRecentlyDeleted(i),await this.isValidSessionTopic(i);const s=this.client.session.get(i),o=Ui(n,"update()");if(o)throw new Error(o.message);const a=So(s.requiredNamespaces,n,"update()");if(a)throw new Error(a.message)},this.isValidExtend=async t=>{if(!ge(t)){const{message:n}=P("MISSING_OR_INVALID",`extend() params: ${t}`);throw new Error(n)}const{topic:i}=t;this.checkRecentlyDeleted(i),await this.isValidSessionTopic(i)},this.isValidRequest=async t=>{if(!ge(t)){const{message:c}=P("MISSING_OR_INVALID",`request() params: ${t}`);throw new Error(c)}const{topic:i,request:n,chainId:s,expiry:o}=t;this.checkRecentlyDeleted(i),await this.isValidSessionTopic(i);const{namespaces:a}=this.client.session.get(i);if(!Eo(a,s)){const{message:c}=P("MISSING_OR_INVALID",`request() chainId: ${s}`);throw new Error(c)}if(!Wy(n)){const{message:c}=P("MISSING_OR_INVALID",`request() ${JSON.stringify(n)}`);throw new Error(c)}if(!Gy(a,s,n.method)){const{message:c}=P("MISSING_OR_INVALID",`request() method: ${n.method}`);throw new Error(c)}if(o&&!Zy(o,Vi)){const{message:c}=P("MISSING_OR_INVALID",`request() expiry: ${o}. Expiry must be a number (in seconds) between ${Vi.min} and ${Vi.max}`);throw new Error(c)}},this.isValidRespond=async t=>{var i;if(!ge(t)){const{message:o}=P("MISSING_OR_INVALID",`respond() params: ${t}`);throw new Error(o)}const{topic:n,response:s}=t;try{await this.isValidSessionTopic(n)}catch(o){throw(i=t==null?void 0:t.response)!=null&&i.id&&this.cleanupAfterResponse(t),o}if(!Hy(s)){const{message:o}=P("MISSING_OR_INVALID",`respond() response: ${JSON.stringify(s)}`);throw new Error(o)}},this.isValidPing=async t=>{if(!ge(t)){const{message:n}=P("MISSING_OR_INVALID",`ping() params: ${t}`);throw new Error(n)}const{topic:i}=t;await this.isValidSessionOrPairingTopic(i)},this.isValidEmit=async t=>{if(!ge(t)){const{message:a}=P("MISSING_OR_INVALID",`emit() params: ${t}`);throw new Error(a)}const{topic:i,event:n,chainId:s}=t;await this.isValidSessionTopic(i);const{namespaces:o}=this.client.session.get(i);if(!Eo(o,s)){const{message:a}=P("MISSING_OR_INVALID",`emit() chainId: ${s}`);throw new Error(a)}if(!Jy(n)){const{message:a}=P("MISSING_OR_INVALID",`emit() event: ${JSON.stringify(n)}`);throw new Error(a)}if(!Yy(o,s,n.name)){const{message:a}=P("MISSING_OR_INVALID",`emit() event: ${JSON.stringify(n)}`);throw new Error(a)}},this.isValidDisconnect=async t=>{if(!ge(t)){const{message:n}=P("MISSING_OR_INVALID",`disconnect() params: ${t}`);throw new Error(n)}const{topic:i}=t;await this.isValidSessionOrPairingTopic(i)},this.isValidAuthenticate=t=>{const{chains:i,uri:n,domain:s,nonce:o}=t;if(!Array.isArray(i)||i.length===0)throw new Error("chains is required and must be a non-empty array");if(!ee(n,!1))throw new Error("uri is required parameter");if(!ee(s,!1))throw new Error("domain is required parameter");if(!ee(o,!1))throw new Error("nonce is required parameter");if([...new Set(i.map(c=>zr(c).namespace))].length>1)throw new Error("Multi-namespace requests are not supported. Please request single namespace only.");const{namespace:a}=zr(i[0]);if(a!=="eip155")throw new Error("Only eip155 namespace is supported for authenticated sessions. Please use .connect() for non-eip155 chains.")},this.getVerifyContext=async t=>{const{attestationId:i,hash:n,encryptedId:s,metadata:o,transportType:a}=t,c={verified:{verifyUrl:o.verifyUrl||mr,validation:"UNKNOWN",origin:o.url||""}};try{if(a===G.link_mode){const u=this.getAppLinkIfEnabled(o,a);return c.verified.validation=u&&new URL(u).origin===new URL(o.url).origin?"VALID":"INVALID",c}const l=await this.client.core.verify.resolve({attestationId:i,hash:n,encryptedId:s,verifyUrl:o.verifyUrl});l&&(c.verified.origin=l.origin,c.verified.isScam=l.isScam,c.verified.validation=l.origin===new URL(o.url).origin?"VALID":"INVALID")}catch(l){this.client.logger.warn(l)}return this.client.logger.debug(`Verify context: ${JSON.stringify(c)}`),c},this.validateSessionProps=(t,i)=>{Object.values(t).forEach(n=>{if(!ee(n,!1)){const{message:s}=P("MISSING_OR_INVALID",`${i} must be in Record<string, string> format. Received: ${JSON.stringify(n)}`);throw new Error(s)}})},this.getPendingAuthRequest=t=>{const i=this.client.auth.requests.get(t);return typeof i=="object"?i:void 0},this.addToRecentlyDeleted=(t,i)=>{if(this.recentlyDeletedMap.set(t,i),this.recentlyDeletedMap.size>=this.recentlyDeletedLimit){let n=0;const s=this.recentlyDeletedLimit/2;for(const o of this.recentlyDeletedMap.keys()){if(n++>=s)break;this.recentlyDeletedMap.delete(o)}}},this.checkRecentlyDeleted=t=>{const i=this.recentlyDeletedMap.get(t);if(i){const{message:n}=P("MISSING_OR_INVALID",`Record was recently deleted - ${i}: ${t}`);throw new Error(n)}},this.isLinkModeEnabled=(t,i)=>{var n,s,o,a,c,l,u,h,p;return!t||i!==G.link_mode?!1:((s=(n=this.client.metadata)==null?void 0:n.redirect)==null?void 0:s.linkMode)===!0&&((a=(o=this.client.metadata)==null?void 0:o.redirect)==null?void 0:a.universal)!==void 0&&((l=(c=this.client.metadata)==null?void 0:c.redirect)==null?void 0:l.universal)!==""&&((u=t==null?void 0:t.redirect)==null?void 0:u.universal)!==void 0&&((h=t==null?void 0:t.redirect)==null?void 0:h.universal)!==""&&((p=t==null?void 0:t.redirect)==null?void 0:p.linkMode)===!0&&this.client.core.linkModeSupportedApps.includes(t.redirect.universal)&&typeof(R.global==null?void 0:R.global.Linking)<"u"},this.getAppLinkIfEnabled=(t,i)=>{var n;return this.isLinkModeEnabled(t,i)?(n=t==null?void 0:t.redirect)==null?void 0:n.universal:void 0},this.handleLinkModeMessage=({url:t})=>{if(!t||!t.includes("wc_ev")||!t.includes("topic"))return;const i=Ks(t,"topic")||"",n=decodeURIComponent(Ks(t,"wc_ev")||""),s=this.client.session.keys.includes(i);s&&this.client.session.update(i,{transportType:G.link_mode}),this.client.core.dispatchEnvelope({topic:i,message:n,sessionExists:s})},this.registerLinkModeListeners=async()=>{var t;if(Wn()||mt()&&(t=this.client.metadata.redirect)!=null&&t.linkMode){const i=R.global==null?void 0:R.global.Linking;if(typeof i<"u"){i.addEventListener("url",this.handleLinkModeMessage,this.client.name);const n=await i.getInitialURL();n&&setTimeout(()=>{this.handleLinkModeMessage({url:n})},50)}}}}isInitialized(){if(!this.initialized){const{message:e}=P("NOT_INITIALIZED",this.name);throw new Error(e)}}async confirmOnlineStateOrThrow(){await this.client.core.relayer.confirmOnlineStateOrThrow()}registerRelayerEvents(){this.client.core.relayer.on(ne.message,e=>{!this.initialized||this.relayMessageCache.length>0?this.relayMessageCache.push(e):this.onRelayMessage(e)})}async onRelayMessage(e){const{topic:t,message:i,attestation:n,transportType:s}=e,{publicKey:o}=this.client.auth.authKeys.keys.includes(Vr)?this.client.auth.authKeys.get(Vr):{publicKey:void 0},a=await this.client.core.crypto.decode(t,i,{receiverPublicKey:o,encoding:s===G.link_mode?or:ut});try{_n(a)?(this.client.core.history.set(t,a),this.onRelayEventRequest({topic:t,payload:a,attestation:n,transportType:s,encryptedId:Ze(i)})):ni(a)?(await this.client.core.history.resolve(a),await this.onRelayEventResponse({topic:t,payload:a,transportType:s}),this.client.core.history.delete(t,a.id)):this.onRelayEventUnknownPayload({topic:t,payload:a,transportType:s})}catch(c){this.client.logger.error(c)}}registerExpirerEvents(){this.client.core.expirer.on(Te.expired,async e=>{const{topic:t,id:i}=Qc(e.target);if(i&&this.client.pendingRequest.keys.includes(i))return await this.deletePendingSessionRequest(i,P("EXPIRED"),!0);if(i&&this.client.auth.requests.keys.includes(i))return await this.deletePendingAuthRequest(i,P("EXPIRED"),!0);t?this.client.session.keys.includes(t)&&(await this.deleteSession({topic:t,expirerHasDeleted:!0}),this.client.events.emit("session_expire",{topic:t})):i&&(await this.deleteProposal(i,!0),this.client.events.emit("proposal_expire",{id:i}))})}registerPairingEvents(){this.client.core.pairing.events.on(Et.create,e=>this.onPairingCreated(e)),this.client.core.pairing.events.on(Et.delete,e=>{this.addToRecentlyDeleted(e.topic,"pairing")})}isValidPairingTopic(e){if(!ee(e,!1)){const{message:t}=P("MISSING_OR_INVALID",`pairing topic should be a string: ${e}`);throw new Error(t)}if(!this.client.core.pairing.pairings.keys.includes(e)){const{message:t}=P("NO_MATCHING_KEY",`pairing topic doesn't exist: ${e}`);throw new Error(t)}if(at(this.client.core.pairing.pairings.get(e).expiry)){const{message:t}=P("EXPIRED",`pairing topic: ${e}`);throw new Error(t)}}async isValidSessionTopic(e){if(!ee(e,!1)){const{message:t}=P("MISSING_OR_INVALID",`session topic should be a string: ${e}`);throw new Error(t)}if(this.checkRecentlyDeleted(e),!this.client.session.keys.includes(e)){const{message:t}=P("NO_MATCHING_KEY",`session topic doesn't exist: ${e}`);throw new Error(t)}if(at(this.client.session.get(e).expiry)){await this.deleteSession({topic:e});const{message:t}=P("EXPIRED",`session topic: ${e}`);throw new Error(t)}if(!this.client.core.crypto.keychain.has(e)){const{message:t}=P("MISSING_OR_INVALID",`session topic does not exist in keychain: ${e}`);throw await this.deleteSession({topic:e}),new 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(ee(e,!1)){const{message:t}=P("NO_MATCHING_KEY",`session or pairing topic doesn't exist: ${e}`);throw new Error(t)}else{const{message:t}=P("MISSING_OR_INVALID",`session or pairing topic should be a string: ${e}`);throw new Error(t)}}async isValidProposalId(e){if(!jy(e)){const{message:t}=P("MISSING_OR_INVALID",`proposal id should be a number: ${e}`);throw new Error(t)}if(!this.client.proposal.keys.includes(e)){const{message:t}=P("NO_MATCHING_KEY",`proposal id doesn't exist: ${e}`);throw new Error(t)}if(at(this.client.proposal.get(e).expiryTimestamp)){await this.deleteProposal(e);const{message:t}=P("EXPIRED",`proposal id: ${e}`);throw new Error(t)}}}class Rw extends Mt{constructor(e,t){super(e,t,dw,es),this.core=e,this.logger=t}}class Cw extends Mt{constructor(e,t){super(e,t,pw,es),this.core=e,this.logger=t}}class Nw extends Mt{constructor(e,t){super(e,t,yw,es,i=>i.id),this.core=e,this.logger=t}}class Ow extends Mt{constructor(e,t){super(e,t,_w,_i,()=>Vr),this.core=e,this.logger=t}}class $w extends Mt{constructor(e,t){super(e,t,bw,_i),this.core=e,this.logger=t}}class kw extends Mt{constructor(e,t){super(e,t,Ew,_i,i=>i.id),this.core=e,this.logger=t}}class Mw{constructor(e,t){this.core=e,this.logger=t,this.authKeys=new Ow(this.core,this.logger),this.pairingTopics=new $w(this.core,this.logger),this.requests=new kw(this.core,this.logger)}async init(){await this.authKeys.init(),await this.pairingTopics.init(),await this.requests.init()}}class ts extends uw{constructor(e){super(e),this.protocol=Bl,this.version=zl,this.name=ji.name,this.events=new He.EventEmitter,this.on=(i,n)=>this.events.on(i,n),this.once=(i,n)=>this.events.once(i,n),this.off=(i,n)=>this.events.off(i,n),this.removeListener=(i,n)=>this.events.removeListener(i,n),this.removeAllListeners=i=>this.events.removeAllListeners(i),this.connect=async i=>{try{return await this.engine.connect(i)}catch(n){throw this.logger.error(n.message),n}},this.pair=async i=>{try{return await this.engine.pair(i)}catch(n){throw this.logger.error(n.message),n}},this.approve=async i=>{try{return await this.engine.approve(i)}catch(n){throw this.logger.error(n.message),n}},this.reject=async i=>{try{return await this.engine.reject(i)}catch(n){throw this.logger.error(n.message),n}},this.update=async i=>{try{return await this.engine.update(i)}catch(n){throw this.logger.error(n.message),n}},this.extend=async i=>{try{return await this.engine.extend(i)}catch(n){throw this.logger.error(n.message),n}},this.request=async i=>{try{return await this.engine.request(i)}catch(n){throw this.logger.error(n.message),n}},this.respond=async i=>{try{return await this.engine.respond(i)}catch(n){throw this.logger.error(n.message),n}},this.ping=async i=>{try{return await this.engine.ping(i)}catch(n){throw this.logger.error(n.message),n}},this.emit=async i=>{try{return await this.engine.emit(i)}catch(n){throw this.logger.error(n.message),n}},this.disconnect=async i=>{try{return await this.engine.disconnect(i)}catch(n){throw this.logger.error(n.message),n}},this.find=i=>{try{return this.engine.find(i)}catch(n){throw this.logger.error(n.message),n}},this.getPendingSessionRequests=()=>{try{return this.engine.getPendingSessionRequests()}catch(i){throw this.logger.error(i.message),i}},this.authenticate=async(i,n)=>{try{return await this.engine.authenticate(i,n)}catch(s){throw this.logger.error(s.message),s}},this.formatAuthMessage=i=>{try{return this.engine.formatAuthMessage(i)}catch(n){throw this.logger.error(n.message),n}},this.approveSessionAuthenticate=async i=>{try{return await this.engine.approveSessionAuthenticate(i)}catch(n){throw this.logger.error(n.message),n}},this.rejectSessionAuthenticate=async i=>{try{return await this.engine.rejectSessionAuthenticate(i)}catch(n){throw this.logger.error(n.message),n}},this.name=(e==null?void 0:e.name)||ji.name,this.metadata=(e==null?void 0:e.metadata)||Wc(),this.signConfig=e==null?void 0:e.signConfig;const t=typeof(e==null?void 0:e.logger)<"u"&&typeof(e==null?void 0:e.logger)!="string"?e.logger:ca(wn({level:(e==null?void 0:e.logger)||ji.logger}));this.core=(e==null?void 0:e.core)||new lw(e),this.logger=pe(t,this.name),this.session=new Cw(this.core,this.logger),this.proposal=new Rw(this.core,this.logger),this.pendingRequest=new Nw(this.core,this.logger),this.engine=new Tw(this),this.auth=new Mw(this.core,this.logger)}static async init(e){const t=new ts(e);return await t.initialize(),t}get context(){return be(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()},I.toMiliseconds(I.ONE_SECOND))}catch(e){throw this.logger.info("SignClient Initialization Failure"),this.logger.error(e.message),e}}}function Lw(r){if(r.length>=255)throw new TypeError("Alphabet too long");for(var e=new Uint8Array(256),t=0;t<e.length;t++)e[t]=255;for(var i=0;i<r.length;i++){var n=r.charAt(i),s=n.charCodeAt(0);if(e[s]!==255)throw new TypeError(n+" is ambiguous");e[s]=i}var o=r.length,a=r.charAt(0),c=Math.log(o)/Math.log(256),l=Math.log(256)/Math.log(o);function u(d){if(d instanceof Uint8Array||(ArrayBuffer.isView(d)?d=new Uint8Array(d.buffer,d.byteOffset,d.byteLength):Array.isArray(d)&&(d=Uint8Array.from(d))),!(d instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(d.length===0)return"";for(var f=0,g=0,y=0,m=d.length;y!==m&&d[y]===0;)y++,f++;for(var v=(m-y)*l+1>>>0,_=new Uint8Array(v);y!==m;){for(var w=d[y],b=0,E=v-1;(w!==0||b<g)&&E!==-1;E--,b++)w+=256*_[E]>>>0,_[E]=w%o>>>0,w=w/o>>>0;if(w!==0)throw new Error("Non-zero carry");g=b,y++}for(var S=v-g;S!==v&&_[S]===0;)S++;for(var x=a.repeat(f);S<v;++S)x+=r.charAt(_[S]);return x}function h(d){if(typeof d!="string")throw new TypeError("Expected String");if(d.length===0)return new Uint8Array;for(var f=0,g=0,y=0;d[f]===a;)g++,f++;for(var m=(d.length-f)*c+1>>>0,v=new Uint8Array(m);d[f];){var _=e[d.charCodeAt(f)];if(_===255)return;for(var w=0,b=m-1;(_!==0||w<y)&&b!==-1;b--,w++)_+=o*v[b]>>>0,v[b]=_%256>>>0,_=_/256>>>0;if(_!==0)throw new Error("Non-zero carry");y=w,f++}for(var E=m-y;E!==m&&v[E]===0;)E++;for(var S=new Uint8Array(g+(m-E)),x=g;E!==m;)S[x++]=v[E++];return S}function p(d){var f=h(d);if(f)return f;throw new Error("Non-base"+o+" character")}return{encode:u,decodeUnsafe:h,decode:p}}var Dw=Lw;const Fw=Dw,qw="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";var Uw=Fw(qw);const Wi=oa(Uw);class St extends Error{constructor(){super(),Object.setPrototypeOf(this,St.prototype)}}class rs extends Error{constructor(){super(),Object.setPrototypeOf(this,rs.prototype)}}var ia;(function(r){r.Mainnet="solana:4sGjMW1sUnHzSxGspuhpqLDx6wiyjNtZ",r.Devnet="solana:8E9rvCKLFQia2Y35HXjjpWzj8weVo44K"})(ia||(ia={}));var Yt;(function(r){r.signTransaction="solana_signTransaction",r.signMessage="solana_signMessage"})(Yt||(Yt={}));const na=r=>({requiredNamespaces:{solana:{chains:[r],methods:[Yt.signTransaction,Yt.signMessage],events:[]}}}),Bw=r=>"version"in r;class s_{constructor(e){this._options=e.options,this._network=e.network}async connect(){const e=this._client??await ts.init(this._options),t=e.find(na(this._network)).filter(i=>i.acknowledged);if(t.length)return this._session=t[t.length-1],this._client=e,{publicKey:this.publicKey};{const{uri:i,approval:n}=await e.connect(na(this._network));return new Promise((s,o)=>{i&&Ls.open(i,()=>{o(new rs)}),n().then(a=>{this._session=a,this._client=e,s({publicKey:this.publicKey})}).catch(o).finally(()=>{Ls.close()})})}}async disconnect(){if(this._client&&this._session)await this._client.disconnect({topic:this._session.topic,reason:H("USER_DISCONNECTED")}),this._session=void 0;else throw new St}get client(){if(this._client)return Object.assign({},this._client,{off:this._client.removeListener});throw new St}get publicKey(){if(this._client&&this._session){const{address:e}=sp(this._session.namespaces.solana.accounts[0]);return new Jl(e)}else throw new St}async signTransaction(e){if(this._client&&this._session){let t,i;Bw(e)?(t=R.Buffer.from(e.serialize()).toString("base64"),e.version==="legacy"&&(i=Gl.from(e.serialize()))):(t=e.serialize({requireAllSignatures:!1,verifySignatures:!1}).toString("base64"),i=e);const{signature:n}=await this._client.request({chainId:this._network,topic:this._session.topic,request:{method:Yt.signTransaction,params:{...i,transaction:t}}});return e.addSignature(this.publicKey,R.Buffer.from(Wi.decode(n))),e}else throw new St}async signMessage(e){if(this._client&&this._session){const{signature:t}=await this._client.request({chainId:this._network,topic:this._session.topic,request:{method:Yt.signMessage,params:{pubkey:this.publicKey.toString(),message:Wi.encode(e)}}});return Wi.decode(t)}else throw new St}}export{St as ClientNotInitializedError,rs as QRCodeModalError,ia as WalletConnectChainID,ts as WalletConnectClient,Yt as WalletConnectRPCMethods,s_ as WalletConnectWallet};
|