1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5232],{82857:function(e,t,i){i.d(t,{d:function(){return r}});var s=i(53248);class r extends s.J5{async init(e){this.chainConfig||(this.chainConfig=(0,s.h2)(s.EN.EIP155,1))}async authenticateUser(){if(!this.provider||this.status!==s.MP.CONNECTED)throw s.RM.notConnectedError();let{chainNamespace:e,chainId:t}=this.chainConfig,i=await this.provider.request({method:"eth_accounts"});if(i&&i.length>0){let r=(0,s.Cb)(i[0],this.name);if(r&&!(0,s.$E)(r))return{idToken:r};let n={domain:window.location.origin,uri:window.location.href,address:i[0],chainId:parseInt(t,16),version:"1",nonce:Math.random().toString(36).slice(2),issuedAt:new Date().toISOString()},a=await (0,s.tV)(n,e),o=await this.provider.request({method:"personal_sign",params:[a,i[0]]}),h=await (0,s.rn)(e,o,a,this.name,this.sessionTime,this.clientId,this.web3AuthNetwork);return(0,s.Fr)(i[0],this.name,h),{idToken:h}}throw s.RM.notConnectedError("Not connected with wallet, Please login/connect first")}async disconnectSession(){super.checkDisconnectionRequirements();let e=await this.provider.request({method:"eth_accounts"});e&&e.length>0&&(0,s.qz)(e[0],this.name)}async disconnect(){this.rehydrated=!1,this.emit(s.n2.DISCONNECTED)}}},75232:function(e,t,i){i.d(t,{WalletConnectV2Adapter:function(){return iT}});var s,r,n=i(53248),a=i(31686),o=i(56127),h=i(55445),c=i.n(h),l=i(50124),p=i(27600),d=i(80577),g=(e={})=>{let t;let i=e.base&&e.base.length>0?`${e.base}:`:"",s=e=>i+e;return e.dbName&&e.storeName&&(t=(0,p.MT)(e.dbName,e.storeName)),{name:"idb-keyval",options:e,hasItem:async e=>!(typeof await (0,p.U2)(s(e),t)>"u"),getItem:async e=>await (0,p.U2)(s(e),t)??null,setItem:(e,i)=>(0,p.t8)(s(e),i,t),removeItem:e=>(0,p.IV)(s(e),t),getKeys:()=>(0,p.XP)(t),clear:()=>(0,p.ZH)(t)}};class u{constructor(){this.indexedDb=(0,l.o6)({driver:g({dbName:"WALLET_CONNECT_V2_INDEXED_DB",storeName:"keyvaluestorage"})})}async getKeys(){return this.indexedDb.getKeys()}async getEntries(){return(await this.indexedDb.getItems(await this.indexedDb.getKeys())).map(e=>[e.key,e.value])}async getItem(e){let t=await this.indexedDb.getItem(e);if(null!==t)return t}async setItem(e,t){await this.indexedDb.setItem(e,(0,d.u)(t))}async removeItem(e){await this.indexedDb.removeItem(e)}}var y="u">typeof globalThis?globalThis:"u">typeof window?window:"u">typeof i.g?i.g:"u">typeof self?self:{},m={exports:{}};function w(e){var t;return[e[0],(0,d.D)(null!=(t=e[1])?t:"")]}!function(){function e(){}e.prototype.getItem=function(e){return this.hasOwnProperty(e)?String(this[e]):null},e.prototype.setItem=function(e,t){this[e]=String(t)},e.prototype.removeItem=function(e){delete this[e]},e.prototype.clear=function(){let e=this;Object.keys(e).forEach(function(t){e[t]=void 0,delete e[t]})},e.prototype.key=function(e){return e=e||0,Object.keys(this)[e]},e.prototype.__defineGetter__("length",function(){return Object.keys(this).length}),"u">typeof y&&y.localStorage?m.exports=y.localStorage:"u">typeof window&&window.localStorage?m.exports=window.localStorage:m.exports=new e}();class f{constructor(){this.localStorage=m.exports}async getKeys(){return Object.keys(this.localStorage)}async getEntries(){return Object.entries(this.localStorage).map(w)}async getItem(e){let t=this.localStorage.getItem(e);if(null!==t)return(0,d.D)(t)}async setItem(e,t){this.localStorage.setItem(e,(0,d.u)(t))}async removeItem(e){this.localStorage.removeItem(e)}}let b=async(e,t,i)=>{let s="wc_storage_version",r=await t.getItem(s);if(r&&r>=1){i(t);return}let n=await e.getKeys();if(!n.length){i(t);return}let a=[];for(;n.length;){let i=n.shift();if(!i)continue;let s=i.toLowerCase();if(s.includes("wc@")||s.includes("walletconnect")||s.includes("wc_")||s.includes("wallet_connect")){let s=await e.getItem(i);await t.setItem(i,s),a.push(i)}}await t.setItem(s,1),i(t),v(e,a)},v=async(e,t)=>{t.length&&t.forEach(async t=>{await e.removeItem(t)})};class E{constructor(){this.initialized=!1,this.setInitialized=e=>{this.storage=e,this.initialized=!0};let e=new f;this.storage=e;try{let t=new u;b(e,t,this.setInitialized)}catch{this.initialized=!0}}async getKeys(){return await this.initialize(),this.storage.getKeys()}async getEntries(){return await this.initialize(),this.storage.getEntries()}async getItem(e){return await this.initialize(),this.storage.getItem(e)}async setItem(e,t){return await this.initialize(),this.storage.setItem(e,t)}async removeItem(e){return await this.initialize(),this.storage.removeItem(e)}async initialize(){this.initialized||await new Promise(e=>{let t=setInterval(()=>{this.initialized&&(clearInterval(t),e())},20)})}}var I=i(96756),S=i(15133),R=i(93514);class _ extends R.q{constructor(e){super(),this.opts=e,this.protocol="wc",this.version=2}}class P extends R.q{constructor(e,t){super(),this.core=e,this.logger=t,this.records=new Map}}class N{constructor(e,t){this.logger=e,this.core=t}}class T extends R.q{constructor(e,t){super(),this.relayer=e,this.logger=t}}class C extends R.q{constructor(e){super()}}class q{constructor(e,t,i,s){this.core=e,this.logger=t,this.name=i}}class x extends R.q{constructor(e,t){super(),this.relayer=e,this.logger=t}}class D extends R.q{constructor(e,t){super(),this.core=e,this.logger=t}}class O{constructor(e,t){this.projectId=e,this.logger=t}}class A{constructor(e,t){this.projectId=e,this.logger=t}}class k{constructor(e){this.opts=e,this.protocol="wc",this.version=2}}class M{constructor(e){this.client=e}}var z=i(94921),$=i(22764),U=i(47783),V=i(40537),L=i(38979),K=i(5276),j=i(75646),F=i(15586),H=i.n(F),J=i(52423),B=i.n(J),G=i(25566),Y=function(e,t){if(e.length>=255)throw TypeError("Alphabet too long");for(var i=new Uint8Array(256),s=0;s<i.length;s++)i[s]=255;for(var r=0;r<e.length;r++){var n=e.charAt(r),a=n.charCodeAt(0);if(255!==i[a])throw TypeError(n+" is ambiguous");i[a]=r}
1var o=e.length,h=e.charAt(0),c=Math.log(o)/Math.log(256),l=Math.log(256)/Math.log(o);function p(e){if("string"!=typeof e)throw TypeError("Expected String");if(0===e.length)return new Uint8Array;var t=0;if(" "!==e[0]){for(var s=0,r=0;e[t]===h;)s++,t++;for(var n=(e.length-t)*c+1>>>0,a=new Uint8Array(n);e[t];){var l=i[e.charCodeAt(t)];if(255===l)return;for(var p=0,d=n-1;(0!==l||p<r)&&-1!==d;d--,p++)l+=o*a[d]>>>0,a[d]=l%256>>>0,l=l/256>>>0;if(0!==l)throw Error("Non-zero carry");r=p,t++}if(" "!==e[t]){for(var g=n-r;g!==n&&0===a[g];)g++;for(var u=new Uint8Array(s+(n-g)),y=s;g!==n;)u[y++]=a[g++];return u}}}return{encode:function(t){if(t instanceof Uint8Array||(ArrayBuffer.isView(t)?t=new Uint8Array(t.buffer,t.byteOffset,t.byteLength):Array.isArray(t)&&(t=Uint8Array.from(t))),!(t instanceof Uint8Array))throw TypeError("Expected Uint8Array");if(0===t.length)return"";for(var i=0,s=0,r=0,n=t.length;r!==n&&0===t[r];)r++,i++;for(var a=(n-r)*l+1>>>0,c=new Uint8Array(a);r!==n;){for(var p=t[r],d=0,g=a-1;(0!==p||d<s)&&-1!==g;g--,d++)p+=256*c[g]>>>0,c[g]=p%o>>>0,p=p/o>>>0;if(0!==p)throw Error("Non-zero carry");s=d,r++}for(var u=a-s;u!==a&&0===c[u];)u++;for(var y=h.repeat(i);u<a;++u)y+=e.charAt(c[u]);return y},decodeUnsafe:p,decode:function(e){var i=p(e);if(i)return i;throw Error(`Non-${t} character`)}}};let Q=e=>{if(e instanceof Uint8Array&&"Uint8Array"===e.constructor.name)return e;if(e instanceof ArrayBuffer)return new Uint8Array(e);if(ArrayBuffer.isView(e))return new Uint8Array(e.buffer,e.byteOffset,e.byteLength);throw Error("Unknown type, must be binary type")},W=e=>new TextEncoder().encode(e),Z=e=>new TextDecoder().decode(e);class X{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 ee{constructor(e,t,i){if(this.name=e,this.prefix=t,void 0===t.codePointAt(0))throw Error("Invalid prefix character");this.prefixCodePoint=t.codePointAt(0),this.baseDecode=i}decode(e){if("string"==typeof e){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))}throw Error("Can only multibase decode strings")}or(e){return ei(this,e)}}class et{constructor(e){this.decoders=e}or(e){return ei(this,e)}decode(e){let 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`)}}let ei=(e,t)=>new et({...e.decoders||{[e.prefix]:e},...t.decoders||{[t.prefix]:t}});class es{constructor(e,t,i,s){this.name=e,this.prefix=t,this.baseEncode=i,this.baseDecode=s,this.encoder=new X(e,t,i),this.decoder=new ee(e,t,s)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}}let er=({name:e,prefix:t,encode:i,decode:s})=>new es(e,t,i,s),en=({prefix:e,name:t,alphabet:i})=>{let{encode:s,decode:r}=Y(i,t);return er({prefix:e,name:t,encode:s,decode:e=>Q(r(e))})},ea=(e,t,i,s)=>{let r={};for(let e=0;e<t.length;++e)r[t[e]]=e;let n=e.length;for(;"="===e[n-1];)--n;let a=new Uint8Array(n*i/8|0),o=0,h=0,c=0;for(let t=0;t<n;++t){let n=r[e[t]];if(void 0===n)throw SyntaxError(`Non-${s} character`);h=h<<i|n,(o+=i)>=8&&(o-=8,a[c++]=255&h>>o)}if(o>=i||255&h<<8-o)throw SyntaxError("Unexpected end of data");return a},eo=(e,t,i)=>{let s="="===t[t.length-1],r=(1<<i)-1,n="",a=0,o=0;for(let s=0;s<e.length;++s)for(o=o<<8|e[s],a+=8;a>i;)a-=i,n+=t[r&o>>a];if(a&&(n+=t[r&o<<i-a]),s)for(;n.length*i&7;)n+="=";return n},eh=({name:e,prefix:t,bitsPerChar:i,alphabet:s})=>er({prefix:t,name:e,encode:e=>eo(e,s,i),decode:t=>ea(t,s,i,e)});var ec=Object.freeze({__proto__:null,identity:er({prefix:"\0",name:"identity",encode:e=>Z(e),decode:e=>W(e)})}),el=Object.freeze({__proto__:null,base2:eh({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1})}),ep=Object.freeze({__proto__:null,base8:eh({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3})}),ed=Object.freeze({__proto__:null,base10:en({prefix:"9",name:"base10",alphabet:"0123456789"})}),eg=Object.freeze({__proto__:null,base16:eh({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),base16upper:eh({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4})});let eu=eh({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),ey=eh({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),em=eh({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),ew=eh({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),ef=eh({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),eb=eh({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5});var ev=Object.freeze({__proto__:null,base32:eu,base32upper:ey,base32pad:em,base32padupper:ew,base32hex:ef,base32hexupper:eb,base32hexpad:eh({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),base32hexpadupper:eh({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),base32z:eh({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5})}),eE=Object.freeze({__proto__:null,base36:en({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),base36upper:en({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"})}),eI=Object.freeze({__proto__:null,base58btc:en({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),base58flickr:en({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"})});let eS=eh({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
1+/",bitsPerChar:6});var eR=Object.freeze({__proto__:null,base64:eS,base64pad:eh({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),base64url:eh({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),base64urlpad:eh({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6})});let e_=Array.from("\uD83D\uDE80\uD83E\uDE90â\uD83D\uDEF0\uD83C\uDF0C\uD83C\uDF11\uD83C\uDF12\uD83C\uDF13\uD83C\uDF14\uD83C\uDF15\uD83C\uDF16\uD83C\uDF17\uD83C\uDF18\uD83C\uDF0D\uD83C\uDF0F\uD83C\uDF0E\uD83D\uDC09â\uD83D\uDCBB\uD83D\uDDA5\uD83D\uDCBE\uD83D\uDCBF\uD83D\uDE02â¤\uD83D\uDE0D\uD83E\uDD23\uD83D\uDE0A\uD83D\uDE4F\uD83D\uDC95\uD83D\uDE2D\uD83D\uDE18\uD83D\uDC4D\uD83D\uDE05\uD83D\uDC4F\uD83D\uDE01\uD83D\uDD25\uD83E\uDD70\uD83D\uDC94\uD83D\uDC96\uD83D\uDC99\uD83D\uDE22\uD83E\uDD14\uD83D\uDE06\uD83D\uDE44\uD83D\uDCAA\uD83D\uDE09âº\uD83D\uDC4C\uD83E\uDD17\uD83D\uDC9C\uD83D\uDE14\uD83D\uDE0E\uD83D\uDE07\uD83C\uDF39\uD83E\uDD26\uD83C\uDF89\uD83D\uDC9Eââ¨\uD83E\uDD37\uD83D\uDE31\uD83D\uDE0C\uD83C\uDF38\uD83D\uDE4C\uD83D\uDE0B\uD83D\uDC97\uD83D\uDC9A\uD83D\uDE0F\uD83D\uDC9B\uD83D\uDE42\uD83D\uDC93\uD83E\uDD29\uD83D\uDE04\uD83D\uDE00\uD83D\uDDA4\uD83D\uDE03\uD83D\uDCAF\uD83D\uDE48\uD83D\uDC47\uD83C\uDFB6\uD83D\uDE12\uD83E\uDD2Dâ£\uD83D\uDE1C\uD83D\uDC8B\uD83D\uDC40\uD83D\uDE2A\uD83D\uDE11\uD83D\uDCA5\uD83D\uDE4B\uD83D\uDE1E\uD83D\uDE29\uD83D\uDE21\uD83E\uDD2A\uD83D\uDC4A\uD83E\uDD73\uD83D\uDE25\uD83E\uDD24\uD83D\uDC49\uD83D\uDC83\uD83D\uDE33â\uD83D\uDE1A\uD83D\uDE1D\uD83D\uDE34\uD83C\uDF1F\uD83D\uDE2C\uD83D\uDE43\uD83C\uDF40\uD83C\uDF37\uD83D\uDE3B\uD83D\uDE13ââ
\uD83E\uDD7A\uD83C\uDF08\uD83D\uDE08\uD83E\uDD18\uD83D\uDCA6â\uD83D\uDE23\uD83C\uDFC3\uD83D\uDC90â¹\uD83C\uDF8A\uD83D\uDC98\uD83D\uDE20â\uD83D\uDE15\uD83C\uDF3A\uD83C\uDF82\uD83C\uDF3B\uD83D\uDE10\uD83D\uDD95\uD83D\uDC9D\uD83D\uDE4A\uD83D\uDE39\uD83D\uDDE3\uD83D\uDCAB\uD83D\uDC80\uD83D\uDC51\uD83C\uDFB5\uD83E\uDD1E\uD83D\uDE1B\uD83D\uDD34\uD83D\uDE24\uD83C\uDF3C\uD83D\uDE2Bâ½\uD83E\uDD19â\uD83C\uDFC6\uD83E\uDD2B\uD83D\uDC48\uD83D\uDE2E\uD83D\uDE46\uD83C\uDF7B\uD83C\uDF43\uD83D\uDC36\uD83D\uDC81\uD83D\uDE32\uD83C\uDF3F\uD83E\uDDE1\uD83C\uDF81â¡\uD83C\uDF1E\uD83C\uDF88ââ\uD83D\uDC4B\uD83D\uDE30\uD83E\uDD28\uD83D\uDE36\uD83E\uDD1D\uD83D\uDEB6\uD83D\uDCB0\uD83C\uDF53\uD83D\uDCA2\uD83E\uDD1F\uD83D\uDE41\uD83D\uDEA8\uD83D\uDCA8\uD83E\uDD2Câ\uD83C\uDF80\uD83C\uDF7A\uD83E\uDD13\uD83D\uDE19\uD83D\uDC9F\uD83C\uDF31\uD83D\uDE16\uD83D\uDC76\uD83E\uDD74â¶â¡â\uD83D\uDC8E\uD83D\uDCB8â¬\uD83D\uDE28\uD83C\uDF1A\uD83E\uDD8B\uD83D\uDE37\uD83D\uDD7Aâ \uD83D\uDE45\uD83D\uDE1F\uD83D\uDE35\uD83D\uDC4E\uD83E\uDD32\uD83E\uDD20\uD83E\uDD27\uD83D\uDCCC\uD83D\uDD35\uD83D\uDC85\uD83E\uDDD0\uD83D\uDC3E\uD83C\uDF52\uD83D\uDE17\uD83E\uDD11\uD83C\uDF0A\uD83E\uDD2F\uD83D\uDC37â\uD83D\uDCA7\uD83D\uDE2F\uD83D\uDC86\uD83D\uDC46\uD83C\uDFA4\uD83D\uDE47\uD83C\uDF51â\uD83C\uDF34\uD83D\uDCA3\uD83D\uDC38\uD83D\uDC8C\uD83D\uDCCD\uD83E\uDD40\uD83E\uDD22\uD83D\uDC45\uD83D\uDCA1\uD83D\uDCA9\uD83D\uDC50\uD83D\uDCF8\uD83D\uDC7B\uD83E\uDD10\uD83E\uDD2E\uD83C\uDFBC\uD83E\uDD75\uD83D\uDEA9\uD83C\uDF4E\uD83C\uDF4A\uD83D\uDC7C\uD83D\uDC8D\uD83D\uDCE3\uD83E\uDD42"),eP=e_.reduce((e,t,i)=>(e[i]=t,e),[]),eN=e_.reduce((e,t,i)=>(e[t.codePointAt(0)]=i,e),[]);var eT=Object.freeze({__proto__:null,base256emoji:er({prefix:"\uD83D\uDE80",name:"base256emoji",encode:function(e){return e.reduce((e,t)=>e+=eP[t],"")},decode:function(e){let t=[];for(let i of e){let e=eN[i.codePointAt(0)];if(void 0===e)throw Error(`Non-base256emoji character: ${i}`);t.push(e)}return new Uint8Array(t)}})});function eC(e,t){var i,s=0,t=t||0,r=0,n=t,a=e.length;do{if(n>=a)throw eC.bytes=0,RangeError("Could not decode varint");i=e[n++],s+=r<28?(127&i)<<r:(127&i)*Math.pow(2,r),r+=7}while(i>=128);return eC.bytes=n-t,s}var eq=function e(t,i,s){i=i||[],s=s||0;for(var r=s;t>=2147483648;)i[s++]=255&t|128,t/=128;for(;-128&t;)i[s++]=255&t|128,t>>>=7;return i[s]=0|t,e.bytes=s-r+1,i};let ex=(e,t,i=0)=>(eq(e,t,i),t),eD=e=>e<128?1:e<16384?2:e<2097152?3:e<268435456?4:e<34359738368?5:e<4398046511104?6:e<562949953421312?7:e<72057594037927940?8:e<0x7fffffffffffffff?9:10,eO=(e,t)=>{let i=t.byteLength,s=eD(e),r=s+eD(i),n=new Uint8Array(r+i);return ex(e,n,0),ex(i,n,s),n.set(t,r),new eA(e,i,t,n)};
1class eA{constructor(e,t,i,s){this.code=e,this.size=t,this.digest=i,this.bytes=s}}let ek=({name:e,code:t,encode:i})=>new eM(e,t,i);class eM{constructor(e,t,i){this.name=e,this.code=t,this.encode=i}digest(e){if(e instanceof Uint8Array){let t=this.encode(e);return t instanceof Uint8Array?eO(this.code,t):t.then(e=>eO(this.code,e))}throw Error("Unknown type, must be binary type")}}let ez=e=>async t=>new Uint8Array(await crypto.subtle.digest(e,t));var e$=Object.freeze({__proto__:null,sha256:ek({name:"sha2-256",code:18,encode:ez("SHA-256")}),sha512:ek({name:"sha2-512",code:19,encode:ez("SHA-512")})}),eU=Object.freeze({__proto__:null,identity:{code:0,name:"identity",encode:Q,digest:e=>eO(0,Q(e))}});new TextEncoder,new TextDecoder;let eV={...ec,...el,...ep,...ed,...eg,...ev,...eE,...eI,...eR,...eT};function eL(e,t,i,s){return{name:e,prefix:t,encoder:{name:e,prefix:t,encode:i},decoder:{decode:s}}}({...e$,...eU});let eK=eL("utf8","u",e=>"u"+new TextDecoder("utf8").decode(e),e=>new TextEncoder().encode(e.substring(1))),ej=eL("ascii","a",e=>{let t="a";for(let i=0;i<e.length;i++)t+=String.fromCharCode(e[i]);return t},e=>{let t=function(e=0){return null!=globalThis.Buffer&&null!=globalThis.Buffer.allocUnsafe?globalThis.Buffer.allocUnsafe(e):new Uint8Array(e)}((e=e.substring(1)).length);for(let i=0;i<e.length;i++)t[i]=e.charCodeAt(i);return t}),eF={utf8:eK,"utf-8":eK,hex:eV.base16,latin1:ej,ascii:ej,binary:ej,...eV},eH="core",eJ=`wc@2:${eH}:`,eB={logger:"error"},eG={database:":memory:"},eY="client_ed25519_seed",eQ=V.ONE_DAY,eW=V.SIX_HOURS,eZ="wss://relay.walletconnect.com",eX="wss://relay.walletconnect.org",e0={message:"relayer_message",message_ack:"relayer_message_ack",connect:"relayer_connect",disconnect:"relayer_disconnect",error:"relayer_error",connection_stalled:"relayer_connection_stalled",publish:"relayer_publish"},e1={payload:"payload",connect:"connect",disconnect:"disconnect",error:"error"},e2=V.ONE_SECOND,e5={created:"subscription_created",deleted:"subscription_deleted",sync:"subscription_sync",resubscribed:"subscription_resubscribed"},e6=1e3*V.FIVE_SECONDS,e8={wc_pairingDelete:{req:{ttl:V.ONE_DAY,prompt:!1,tag:1e3},res:{ttl:V.ONE_DAY,prompt:!1,tag:1001}},wc_pairingPing:{req:{ttl:V.THIRTY_SECONDS,prompt:!1,tag:1002},res:{ttl:V.THIRTY_SECONDS,prompt:!1,tag:1003}},unregistered_method:{req:{ttl:V.ONE_DAY,prompt:!1,tag:0},res:{ttl:V.ONE_DAY,prompt:!1,tag:0}}},e3={create:"pairing_create",expire:"pairing_expire",delete:"pairing_delete",ping:"pairing_ping"},e4={created:"history_created",updated:"history_updated",deleted:"history_deleted",sync:"history_sync"},e7={created:"expirer_created",deleted:"expirer_deleted",expired:"expirer_expired",sync:"expirer_sync"},e9="verify-api",te="https://verify.walletconnect.com",tt="https://verify.walletconnect.org",ti=[te,tt];class ts{constructor(e,t){this.core=e,this.logger=t,this.keychain=new Map,this.name="keychain",this.version="0.3",this.initialized=!1,this.storagePrefix=eJ,this.init=async()=>{if(!this.initialized){let e=await this.getKeyChain();"u">typeof e&&(this.keychain=e),this.initialized=!0}},this.has=e=>(this.isInitialized(),this.keychain.has(e)),this.set=async(e,t)=>{this.isInitialized(),this.keychain.set(e,t),await this.persist()},this.get=e=>{this.isInitialized();let t=this.keychain.get(e);if(typeof t>"u"){let{message:t}=(0,$.kCb)("NO_MATCHING_KEY",`${this.name}: ${e}`);throw Error(t)}return t},this.del=async e=>{this.isInitialized(),this.keychain.delete(e),await this.persist()},this.core=e,this.logger=(0,S.Ep)(t,this.name)}get context(){return(0,S.Fd)(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}async setKeyChain(e){await this.core.storage.setItem(this.storageKey,(0,$.KCv)(e))}async getKeyChain(){let e=await this.core.storage.getItem(this.storageKey);return"u">typeof e?(0,$.IPd)(e):void 0}async persist(){await this.setKeyChain(this.keychain)}isInitialized(){if(!this.initialized){let{message:e}=(0,$.kCb)("NOT_INITIALIZED",this.name);throw Error(e)}}}class tr{constructor(e,t,i){this.core=e,this.logger=t,this.name="crypto",this.initialized=!1,this.init=async()=>{this.initialized||(await this.keychain.init(),this.initialized=!0)},this.hasKeys=e=>(this.isInitialized(),this.keychain.has(e)),this.getClientId=async()=>{this.isInitialized();let e=await this.getClientSeed(),t=z.generateKeyPair(e);return z.encodeIss(t.publicKey)},this.generateKeyPair=()=>{this.isInitialized();let e=(0,$.Au2)();return this.setPrivateKey(e.publicKey,e.privateKey)},this.signJWT=async e=>{this.isInitialized();let t=await this.getClientSeed(),i=z.generateKeyPair(t),s=(0,$.jdp)();return await z.signJWT(s,e,eQ,i)},this.generateSharedKey=(e,t,i)=>{this.isInitialized();let s=this.getPrivateKey(e),r=(0,$.m$A)(s,t);return this.setSymKey(r,i)},this.setSymKey=async(e,t)=>{this.isInitialized();let i=t||(0,$.YmJ)(e);return await this.keychain.set(i,e),i},this.deleteKeyPair=async e=>{this.isInitialized(),await this.keychain.del(e)},this.deleteSymKey=async e=>{this.isInitialized(),await this.keychain.del(e)},this.encode=async(e,t,i)=>{this.isInitialized();let s=(0,$.ENt)(i),r=(0,d.u)(t);if((0,$.Q8x)(s)){let t=s.senderPublicKey,i=s.receiverPublicKey;e=await this.generateSharedKey(t,i)}let n=this.getSymKey(e),{type:a,senderPublicKey:o}=s;return(0,$.HIp)({type:a,symKey:n,message:r,senderPublicKey:o})},this.decode=async(e,t,i)=>{this.isInitialized();let s=(0,$.Llj)(t,i);if((0,$.Q8x)(s)){let t=s.receiverPublicKey,i=s.senderPublicKey;e=await this.generateSharedKey(t,i)}try{let i=this.getSymKey(e),s=(0,$.peR)({symKey:i,encoded:t});return(0,d.D)(s)}catch(t){this.logger.error(`Failed to decode message from topic: '${e}', clientId: '${await this.getClientId()}'`),this.logger.error(t)}},this.getPayloadType=e=>{let t=(0,$.vBi)(e);return(0,$.WGe)(t.type)},this.getPayloadSenderPublicKey=e=>{let t=(0,$.vBi)(e);return t.senderPublicKey?(0,U.BB)(t.senderPublicKey,$.AWt):void 0},this.core=e,this.logger=(0,S.Ep)(t,this.name),this.keychain=i||new ts(this.core,this.logger)}get context(){return(0,S.Fd)(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(eY)}catch{e=(0,$.jdp)(),await this.keychain.set(eY,e)}return function(e,t="utf8"){let i=eF[t];if(!i)throw Error(`Unsupported encoding "${t}"`);return("utf8"===t||"utf-8"===t)&&null!=globalThis.Buffer&&null!=globalThis.Buffer.from?globalThis.Buffer.from(e,"utf8"):i.decoder.decode(`${i.prefix}${e}`)}(e,"base16")}getSymKey(e){return this.keychain.get(e)}isInitialized(){if(!this.initialized){let{message:e}=(0,$.kCb)("NOT_INITIALIZED",this.name);throw Error(e)}}}class tn extends N{constructor(e,t){super(e,t),this.logger=e,this.core=t,this.messages=new Map,this.name="messages",this.version="0.3",this.initialized=!1,this.storagePrefix=eJ,this.init=async()=>
1{if(!this.initialized){this.logger.trace("Initialized");try{let e=await this.getRelayerMessages();"u">typeof e&&(this.messages=e),this.logger.debug(`Successfully Restored records for ${this.name}`),this.logger.trace({type:"method",method:"restore",size:this.messages.size})}catch(e){this.logger.debug(`Failed to Restore records for ${this.name}`),this.logger.error(e)}finally{this.initialized=!0}}},this.set=async(e,t)=>{this.isInitialized();let i=(0,$.rjm)(t),s=this.messages.get(e);return typeof s>"u"&&(s={}),"u">typeof s[i]||(s[i]=t,this.messages.set(e,s),await this.persist()),i},this.get=e=>{this.isInitialized();let t=this.messages.get(e);return typeof t>"u"&&(t={}),t},this.has=(e,t)=>(this.isInitialized(),"u">typeof this.get(e)[(0,$.rjm)(t)]),this.del=async e=>{this.isInitialized(),this.messages.delete(e),await this.persist()},this.logger=(0,S.Ep)(e,this.name),this.core=t}get context(){return(0,S.Fd)(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}async setRelayerMessages(e){await this.core.storage.setItem(this.storageKey,(0,$.KCv)(e))}async getRelayerMessages(){let e=await this.core.storage.getItem(this.storageKey);return"u">typeof e?(0,$.IPd)(e):void 0}async persist(){await this.setRelayerMessages(this.messages)}isInitialized(){if(!this.initialized){let{message:e}=(0,$.kCb)("NOT_INITIALIZED",this.name);throw Error(e)}}}class ta extends T{constructor(e,t){super(e,t),this.relayer=e,this.logger=t,this.events=new h.EventEmitter,this.name="publisher",this.queue=new Map,this.publishTimeout=(0,V.toMiliseconds)(V.ONE_MINUTE),this.failedPublishTimeout=(0,V.toMiliseconds)(V.ONE_SECOND),this.needsTransportRestart=!1,this.publish=async(e,t,i)=>{var s;this.logger.debug("Publishing Payload"),this.logger.trace({type:"method",method:"publish",params:{topic:e,message:t,opts:i}});let r=i?.ttl||eW,n=(0,$._HE)(i),a=i?.prompt||!1,o=i?.tag||0,h=i?.id||(0,K.getBigIntRpcId)().toString(),c={topic:e,message:t,opts:{ttl:r,relay:n,prompt:a,tag:o,id:h}},l=`Failed to publish payload, please try again. id:${h} tag:${o}`,p=Date.now(),d,g=1;try{for(;void 0===d;){if(Date.now()-p>this.publishTimeout)throw Error(l);this.logger.trace({id:h,attempts:g},`publisher.publish - attempt ${g}`),d=await await (0,$.hFY)(this.rpcPublish(e,t,r,n,a,o,h).catch(e=>this.logger.warn(e)),this.publishTimeout,l),g++,d||await new Promise(e=>setTimeout(e,this.failedPublishTimeout))}this.relayer.events.emit(e0.publish,c),this.logger.debug("Successfully Published Payload"),this.logger.trace({type:"method",method:"publish",params:{id:h,topic:e,message:t,opts:i}})}catch(e){if(this.logger.debug("Failed to Publish Payload"),this.logger.error(e),null!=(s=i?.internal)&&s.throwOnFailedPublish)throw e;this.queue.set(h,c)}},this.on=(e,t)=>{this.events.on(e,t)},this.once=(e,t)=>{this.events.once(e,t)},this.off=(e,t)=>{this.events.off(e,t)},this.removeListener=(e,t)=>{this.events.removeListener(e,t)},this.relayer=e,this.logger=(0,S.Ep)(t,this.name),this.registerEventListeners()}get context(){return(0,S.Fd)(this.logger)}rpcPublish(e,t,i,s,r,n,a){var o,h,c,l;let p={method:(0,$.cOS)(s.protocol).publish,params:{topic:e,message:t,ttl:i,prompt:r,tag:n},id:a};return(0,$.o8e)(null==(o=p.params)?void 0:o.prompt)&&(null==(h=p.params)||delete h.prompt),(0,$.o8e)(null==(c=p.params)?void 0:c.tag)&&(null==(l=p.params)||delete l.tag),this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"message",direction:"outgoing",request:p}),this.relayer.request(p)}removeRequestFromQueue(e){this.queue.delete(e)}checkQueue(){this.queue.forEach(async e=>{let{topic:t,message:i,opts:s}=e;await this.publish(t,i,s)})}registerEventListeners(){this.relayer.core.heartbeat.on(I.Lx.pulse,()=>{if(this.needsTransportRestart){this.needsTransportRestart=!1,this.relayer.events.emit(e0.connection_stalled);return}this.checkQueue()}),this.relayer.on(e0.message_ack,e=>{this.removeRequestFromQueue(e.id.toString())})}}class to{constructor(){this.map=new Map,this.set=(e,t)=>{let 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)=>
1{if(typeof t>"u"){this.map.delete(e);return}if(!this.map.has(e))return;let i=this.get(e);if(!this.exists(e,t))return;let s=i.filter(e=>e!==t);if(!s.length){this.map.delete(e);return}this.map.set(e,s)},this.clear=()=>{this.map.clear()}}get topics(){return Array.from(this.map.keys())}}var th=Object.defineProperty,tc=Object.defineProperties,tl=Object.getOwnPropertyDescriptors,tp=Object.getOwnPropertySymbols,td=Object.prototype.hasOwnProperty,tg=Object.prototype.propertyIsEnumerable,tu=(e,t,i)=>t in e?th(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i,ty=(e,t)=>{for(var i in t||(t={}))td.call(t,i)&&tu(e,i,t[i]);if(tp)for(var i of tp(t))tg.call(t,i)&&tu(e,i,t[i]);return e},tm=(e,t)=>tc(e,tl(t));class tw extends x{constructor(e,t){super(e,t),this.relayer=e,this.logger=t,this.subscriptions=new Map,this.topicMap=new to,this.events=new h.EventEmitter,this.name="subscription",this.version="0.3",this.pending=new Map,this.cached=[],this.initialized=!1,this.pendingSubscriptionWatchLabel="pending_sub_watch_label",this.pollingInterval=20,this.storagePrefix=eJ,this.subscribeTimeout=(0,V.toMiliseconds)(V.ONE_MINUTE),this.restartInProgress=!1,this.batchSubscribeTopicsLimit=500,this.pendingBatchMessages=[],this.init=async()=>{this.initialized||(this.logger.trace("Initialized"),this.registerEventListeners(),this.clientId=await this.relayer.core.crypto.getClientId())},this.subscribe=async(e,t)=>{await this.restartToComplete(),this.isInitialized(),this.logger.debug("Subscribing Topic"),this.logger.trace({type:"method",method:"subscribe",params:{topic:e,opts:t}});try{let i=(0,$._HE)(t),s={topic:e,relay:i};this.pending.set(e,s);let r=await this.rpcSubscribe(e,i);return"string"==typeof r&&(this.onSubscribe(r,s),this.logger.debug("Successfully Subscribed Topic"),this.logger.trace({type:"method",method:"subscribe",params:{topic:e,opts:t}})),r}catch(e){throw this.logger.debug("Failed to Subscribe Topic"),this.logger.error(e),e}},this.unsubscribe=async(e,t)=>{await this.restartToComplete(),this.isInitialized(),"u">typeof t?.id?await this.unsubscribeById(e,t.id,t):await this.unsubscribeByTopic(e,t)},this.isSubscribed=async e=>{if(this.topics.includes(e))return!0;let t=`${this.pendingSubscriptionWatchLabel}_${e}`;return await new Promise((i,s)=>{let r=new V.Watch;r.start(t);let n=setInterval(()=>{!this.pending.has(e)&&this.topics.includes(e)&&(clearInterval(n),r.stop(t),i(!0)),r.elapsed(t)>=e6&&(clearInterval(n),r.stop(t),s(Error("Subscription resolution timeout")))},this.pollingInterval)}).catch(()=>!1)},this.on=(e,t)=>{this.events.on(e,t)},this.once=(e,t)=>{this.events.once(e,t)},this.off=(e,t)=>{this.events.off(e,t)},this.removeListener=(e,t)=>{this.events.removeListener(e,t)},this.start=async()=>{await this.onConnect()},this.stop=async()=>{await this.onDisconnect()},this.restart=async()=>{this.restartInProgress=!0,await this.restore(),await this.reset(),this.restartInProgress=!1},this.relayer=e,this.logger=(0,S.Ep)(t,this.name),this.clientId=""}get context(){return(0,S.Fd)(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}onEnable(){this.cached=[],this.initialized=!0}onDisable(){this.cached=this.values,this.subscriptions.clear(),this.topicMap.clear()}async unsubscribeByTopic(e,t){let i=this.topicMap.get(e);await Promise.all(i.map(async i=>await this.unsubscribeById(e,i,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{let s=(0,$._HE)(i);await this.rpcUnsubscribe(e,t,s);let r=(0,$.D6H)("USER_DISCONNECTED",`${this.name}, ${e}`);await this.onUnsubscribe(e,t,r),this.logger.debug("Successfully Unsubscribed Topic"),this.logger.trace({type:"method",method:"unsubscribe",params:{topic:e,id:t,opts:i}})}catch(e){throw this.logger.debug("Failed to Unsubscribe Topic"),this.logger.error(e),e}}async rpcSubscribe(e,t){let i={method:(0,$.cOS)(t.protocol).subscribe,params:{topic:e}};this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"payload",direction:"outgoing",request:i});try{return await await (0,$.hFY)(this.relayer.request(i).catch(e=>this.logger.warn(e)),this.subscribeTimeout)?(0,$.rjm)(e+this.clientId):null}catch{this.logger.debug("Outgoing Relay Subscribe Payload stalled"),this.relayer.events.emit(e0.c
1onnection_stalled)}return null}async rpcBatchSubscribe(e){if(!e.length)return;let t=e[0].relay,i={method:(0,$.cOS)(t.protocol).batchSubscribe,params:{topics:e.map(e=>e.topic)}};this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"payload",direction:"outgoing",request:i});try{return await await (0,$.hFY)(this.relayer.request(i).catch(e=>this.logger.warn(e)),this.subscribeTimeout)}catch{this.relayer.events.emit(e0.connection_stalled)}}async rpcBatchFetchMessages(e){let t;if(!e.length)return;let i=e[0].relay,s={method:(0,$.cOS)(i.protocol).batchFetchMessages,params:{topics:e.map(e=>e.topic)}};this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"payload",direction:"outgoing",request:s});try{t=await await (0,$.hFY)(this.relayer.request(s).catch(e=>this.logger.warn(e)),this.subscribeTimeout)}catch{this.relayer.events.emit(e0.connection_stalled)}return t}rpcUnsubscribe(e,t,i){let s={method:(0,$.cOS)(i.protocol).unsubscribe,params:{topic:e,id:t}};return this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"payload",direction:"outgoing",request:s}),this.relayer.request(s)}onSubscribe(e,t){this.setSubscription(e,tm(ty({},t),{id:e})),this.pending.delete(t.topic)}onBatchSubscribe(e){e.length&&e.forEach(e=>{this.setSubscription(e.id,ty({},e)),this.pending.delete(e.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,ty({},t)),this.topicMap.set(t.topic,e),this.events.emit(e5.created,t)}getSubscription(e){this.logger.debug("Getting subscription"),this.logger.trace({type:"method",method:"getSubscription",id:e});let t=this.subscriptions.get(e);if(!t){let{message:t}=(0,$.kCb)("NO_MATCHING_KEY",`${this.name}: ${e}`);throw Error(t)}return t}deleteSubscription(e,t){this.logger.debug("Deleting subscription"),this.logger.trace({type:"method",method:"deleteSubscription",id:e,reason:t});let i=this.getSubscription(e);this.subscriptions.delete(e),this.topicMap.delete(i.topic,e),this.events.emit(e5.deleted,tm(ty({},i),{reason:t}))}async persist(){await this.setRelayerSubscriptions(this.values),this.events.emit(e5.sync)}async reset(){if(this.cached.length){let e=Math.ceil(this.cached.length/this.batchSubscribeTopicsLimit);for(let t=0;t<e;t++){let e=this.cached.splice(0,this.batchSubscribeTopicsLimit);await this.batchFetchMessages(e),await this.batchSubscribe(e)}}this.events.emit(e5.resubscribed)}async restore(){try{let e=await this.getRelayerSubscriptions();if(typeof e>"u"||!e.length)return;if(this.subscriptions.size){let{message:e}=(0,$.kCb)("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(e),this.logger.error(`${this.name}: ${JSON.stringify(this.values)}`),Error(e)}this.cached=e,this.logger.debug(`Successfully Restored subscriptions for ${this.name}`),this.logger.trace({type:"method",method:"restore",subscriptions:this.values})}catch(e){this.logger.debug(`Failed to Restore subscriptions for ${this.name}`),this.logger.error(e)}}async batchSubscribe(e){if(!e.length)return;let t=await this.rpcBatchSubscribe(e);(0,$.qt8)(t)&&this.onBatchSubscribe(t.map((t,i)=>tm(ty({},e[i]),{id:t})))}async batchFetchMessages(e){if(!e.length)return;this.logger.trace(`Fetching batch messages for ${e.length} subscriptions`);let t=await this.rpcBatchFetchMessages(e);t&&t.messages&&(this.pendingBatchMessages=this.pendingBatchMessages.concat(t.messages))}async onConnect(){await this.restart(),this.onEnable()}onDisconnect(){this.onDisable()}async checkPending(){if(!this.initialized||!this.relayer.connected)return;let e=[];this.pending.forEach(t=>{e.push(t)}),await this.batchSubscribe(e),this.pendingBatchMessages.length&&(await this.relayer.handleBatchMessageEvents(this.pendingBatchMessages),this.pendingBatchMessages=[])}registerEventListeners(){this.relayer.core.heartbeat.on(I.Lx.pulse,async()=>{await this.checkPending()}),this.events.on(e5.created,async e=>{let t=e5.created;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,data:e}),await this.persist()}),this.events.on(e5.deleted,async e=>{let t=e5.deleted;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,data:e}),await this.persist()})}isInitialized(){if(!this.initialized){let{message:e}=(0,$.kCb)("NOT_INITIALIZED",this.name);throw Error(e)}}async restartToComplete(){this.restartInProgress&&await new Promise(e=>{let t=setInterval(()=>{this.restartInProgress||(clearInterval(t),e())},this.pollingInterval)})}}var tf=Object.defineProperty,tb=Object.getOwnPropertySymbols,tv=Object.prototype.hasOwnProperty,tE=Object.prototype.propertyIsEnumerable,tI=(e,t,i)=>t in e?tf(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i,tS=(e,t)=>{for(var i in t||(t={}))tv.call(t,i)&&tI(e,i,t[i]);if(tb)for(var i of tb(t))tE.call(t,i)&&tI(e,i,t[i]);return e};class tR extends C{constructor(e){super(e),this.protocol="wc",this.version=2,this.events=new h.EventEmitter,this.name="relayer",this.transportExplicitlyClosed=!1,this.initialized=!1,this.connectionAttemptInProgress=!1,this.connectionStatusPollingInterval=20,this.staleConnectionErrors=["s
1ocket hang up","stalled","interrupted"],this.hasExperiencedNetworkDisruption=!1,this.requestsInFlight=new Map,this.heartBeatTimeout=(0,V.toMiliseconds)(V.THIRTY_SECONDS+V.ONE_SECOND),this.request=async e=>{var t,i;this.logger.debug("Publishing Request Payload");let s=e.id||(0,K.getBigIntRpcId)().toString();await this.toEstablishConnection();try{let r=this.provider.request(e);this.requestsInFlight.set(s,{promise:r,request:e}),this.logger.trace({id:s,method:e.method,topic:null==(t=e.params)?void 0:t.topic},"relayer.request - attempt to publish...");let n=await new Promise(async(e,t)=>{let i=()=>{t(Error(`relayer.request - publish interrupted, id: ${s}`))};this.provider.on(e1.disconnect,i);let n=await r;this.provider.off(e1.disconnect,i),e(n)});return this.logger.trace({id:s,method:e.method,topic:null==(i=e.params)?void 0:i.topic},"relayer.request - published"),n}catch(e){throw this.logger.debug(`Failed to Publish Request: ${s}`),e}finally{this.requestsInFlight.delete(s)}},this.resetPingTimeout=()=>{if((0,$.UGU)())try{clearTimeout(this.pingTimeout),this.pingTimeout=setTimeout(()=>{var e,t,i;null==(i=null==(t=null==(e=this.provider)?void 0:e.connection)?void 0:t.socket)||i.terminate()},this.heartBeatTimeout)}catch(e){this.logger.warn(e)}},this.onPayloadHandler=e=>{this.onProviderPayload(e),this.resetPingTimeout()},this.onConnectHandler=()=>{this.startPingTimeout(),this.events.emit(e0.connect)},this.onDisconnectHandler=()=>{this.onProviderDisconnect()},this.onProviderErrorHandler=e=>{this.logger.error(e),this.events.emit(e0.error,e),this.logger.info("Fatal socket error received, closing transport"),this.transportClose()},this.registerProviderListeners=()=>{this.provider.on(e1.payload,this.onPayloadHandler),this.provider.on(e1.connect,this.onConnectHandler),this.provider.on(e1.disconnect,this.onDisconnectHandler),this.provider.on(e1.error,this.onProviderErrorHandler)},this.core=e.core,this.logger="u">typeof e.logger&&"string"!=typeof e.logger?(0,S.Ep)(e.logger,this.name):(0,S.gw)((0,S.jI)({level:e.logger||"error"})),this.messages=new tn(this.logger,e.core),this.subscriber=new tw(this,this.logger),this.publisher=new ta(this,this.logger),this.relayUrl=e?.relayUrl||eZ,this.projectId=e.projectId,this.bundleId=(0,$.X_B)(),this.provider={}}
1async init(){this.logger.trace("Initialized"),this.registerEventListeners(),await Promise.all([this.messages.init(),this.subscriber.init()]);try{await this.transportOpen()}catch{this.logger.warn(`Connection via ${this.relayUrl} failed, attempting to connect via failover domain ${eX}...`),await this.restartTransport(eX)}this.initialized=!0,setTimeout(async()=>{0===this.subscriber.topics.length&&0===this.subscriber.pending.size&&(this.logger.info("No topics subscribed to after init, closing transport"),await this.transportClose(),this.transportExplicitlyClosed=!1)},1e4)}get context(){return(0,S.Fd)(this.logger)}get connected(){var e,t,i;return(null==(i=null==(t=null==(e=this.provider)?void 0:e.connection)?void 0:t.socket)?void 0:i.readyState)===1}get connecting(){var e,t,i;return(null==(i=null==(t=null==(e=this.provider)?void 0:e.connection)?void 0:t.socket)?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()})}async subscribe(e,t){var i;this.isInitialized();let s=(null==(i=this.subscriber.topicMap.get(e))?void 0:i[0])||"",r,n=t=>{t.topic===e&&(this.subscriber.off(e5.created,n),r())};return await Promise.all([new Promise(e=>{r=e,this.subscriber.on(e5.created,n)}),new Promise(async i=>{s=await this.subscriber.subscribe(e,t)||s,i()})]),s}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(){if(!this.hasExperiencedNetworkDisruption&&this.connected&&this.requestsInFlight.size>0)try{await Promise.all(Array.from(this.requestsInFlight.values()).map(e=>e.promise))}catch(e){this.logger.warn(e)}this.hasExperiencedNetworkDisruption||this.connected?await (0,$.hFY)(this.provider.disconnect(),2e3,"provider.disconnect()").catch(()=>this.onProviderDisconnect()):this.onProviderDisconnect()}async transportClose(){this.transportExplicitlyClosed=!0,await this.transportDisconnect()}async transportOpen(e){await this.confirmOnlineStateOrThrow(),e&&e!==this.relayUrl&&(this.relayUrl=e,await this.transportDisconnect()),await this.createProvider(),this.connectionAttemptInProgress=!0,this.transportExplicitlyClosed=!1;try{await new Promise(async(e,t)=>{let i=()=>{this.provider.off(e1.disconnect,i),t(Error("Connection interrupted while trying to subscribe"))};this.provider.on(e1.disconnect,i),await (0,$.hFY)(this.provider.connect(),(0,V.toMiliseconds)(V.ONE_MINUTE),`Socket stalled when trying to connect to ${this.relayUrl}`).catch(e=>{t(e)}),await this.subscriber.start(),this.hasExperiencedNetworkDisruption=!1,e()})}catch(e){if(this.logger.error(e),this.hasExperiencedNetworkDisruption=!0,!this.isConnectionStalled(e.message))throw e}finally{this.connectionAttemptInProgress=!1}}async restartTransport(e){this.connectionAttemptInProgress||(this.relayUrl=e||this.relayUrl,await this.confirmOnlineStateOrThrow(),await this.transportClose(),await this.transportOpen())}async confirmOnlineStateOrThrow(){if(!await (0,$.Ggh)())throw Error("No internet connection detected. Please restart your network and try again.")}async handleBatchMessageEvents(e){if(e?.length===0){this.logger.trace("Batch message events is empty. Ignoring...");return}let t=e.sort((e,t)=>e.publishedAt-t.publishedAt);for(let e of(this.logger.trace(`Batch of ${t.length} message events sorted`),t))try{await this.onMessageEvent(e)}catch(e){this.logger.warn(e)}this.logger.trace(`Batch of ${t.length} message events processed`)}startPingTimeout(){var e,t,i,s,r;if((0,$.UGU)())try{null!=(t=null==(e=this.provider)?void 0:e.connection)&&t.socket&&(null==(r=null==(s=null==(i=this.provider)?void 0:i.connection)?void 0:s.socket)||r.once("ping",()=>{this.resetPingTimeout()})),this.resetPingTimeout()}catch(e){this.logger.warn(e)}}isConnectionStalled(e){return this.staleConnectionErrors.some(t=>e.includes(t))}async createProvider(){this.provider.connection&&this.unregisterProviderListeners();let e=await this.core.crypto.signJWT(this.relayUrl);this.provider=new L.r(new j.Z((0,$.$0m)({sdkVersion:"2.13.3",protocol:this.protocol,version:this.version,relayUrl:this.relayUrl,projectId:this.projectId,auth:e,useOnCloseEvent:!0,bundleId:this.bundleId}))),this.registerProviderListeners()}async recordMessageEvent(e){let{topic:t,message:i}=e;await this.messages.set(t,i)}async shouldIgnoreMessageEvent(e){let{topic:t,message:i}=e;if(!i||0===i.length)return this.logger.debug(`Ignoring invalid/empty message: ${i}`),!0;if(!await this.subscriber.isSubscribed(t))return this.logger.debug(`Ignoring message for non-subscribed topic ${t}`),!0;let s=this.messages.has(t,i);return s&&this.logger.debug(`Ignoring duplicate message: ${i}`),s}async onProviderPayload(e){if(this.logger.debug("Incoming Relay Payload"),this.logger.trace({type:"payload",direction:"incoming",payload:e}),(0,K.isJsonRpcRequest)(e)){if(!e.method.endsWith("_subscription"))return;let t=e.params,{topic:i,message:s,publishedAt:r}=t.data,n={topic:i,message:s,publishedAt:r};this.logger.debug("Emitting Relayer Payload"),this.logger.trace(tS({type:"event",event:t.id},n)),this.events.emit(t.id,n),await this.acknowledgePayload(e),await this.onMessageEvent(n)}else(0,K.isJsonRpcResponse)(e)&&this.events.emit(e0.message_ack,e)}async onMessageEvent(e){await this.shouldIgnoreMessageEvent(e)||(this.events.emit(e0.message,e),await this.recordMessageEvent(e))}async acknowledgePayload(e){let t=(0,K.formatJsonRpcResult)(e.id,!0);await this.provider.connection.send(t)}unregisterProviderListeners(){this.provider.off(e1.payload,this.onPayloadHandler),this.provider.off(e1.connect,this.onConnectHandler),this.provider.off(e1.disconnect,this.onDisconnectHandler),this.provider.off(e1.error,this.onProviderErrorHandler),clearTimeout(this.pingTimeout)}async registerEventListeners(){let e=await (0,$.Ggh)();(0,$.uwg)(async t=>{e!==t&&(e=t,t?await this.restartTransport().catch(e=>this.logger.error(e)):(this.hasExperiencedNetworkDisruption=!0,await this.transportDisconnect(),this.transportExplicitlyClosed=!1))})}async onProviderDisconnect(){await this.subscriber.stop(),this.requestsInFlight.clear(),clearTimeout(this.pingTimeout),this.events.emit(e0.disconnect),this.connectionAttemptInProgress=!1,this.transportExplicitlyClosed||setTimeout(async()=>{await this.transportOpen().catch(e=>this.logger.error(e))},(0,V.toMiliseconds)(e2))}isInitialized(){if(!this.initialized){let{message:e}=(0,$.kCb)("NOT_INITIALIZED",this.name);throw Error(e)}}async toEstablishConnection(){await this.confirmOnlineStateOrThrow(),this.connected||(this.connectionAttemptInProgress&&await new Promise(e=>{let t=setInterval(()=>{this.connected&&(clearInterval(t),e())},this.connectionStatusPollingInterval)}),await this.transportOpen())}}var t_=Object.defineProperty,tP=Object.getOwnPropertySymbols,tN=Object.prototype.hasOwnProperty,tT=Object.prototype.propertyIsEnumerable,tC=(e,t,i)=>t in e?t_(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i,tq=(e,t)=>
1{for(var i in t||(t={}))tN.call(t,i)&&tC(e,i,t[i]);if(tP)for(var i of tP(t))tT.call(t,i)&&tC(e,i,t[i]);return e};class tx extends q{constructor(e,t,i,s=eJ,r){super(e,t,i,s),this.core=e,this.logger=t,this.name=i,this.map=new Map,this.version="0.3",this.cached=[],this.initialized=!1,this.storagePrefix=eJ,this.recentlyDeleted=[],this.recentlyDeletedLimit=200,this.init=async()=>{this.initialized||(this.logger.trace("Initialized"),await this.restore(),this.cached.forEach(e=>{this.getKey&&null!==e&&!(0,$.o8e)(e)?this.map.set(this.getKey(e),e):(0,$.xWS)(e)?this.map.set(e.id,e):(0,$.h1R)(e)&&this.map.set(e.topic,e)}),this.cached=[],this.initialized=!0)},this.set=async(e,t)=>{this.isInitialized(),this.map.has(e)?await this.update(e,t):(this.logger.debug("Setting value"),this.logger.trace({type:"method",method:"set",key:e,value:t}),this.map.set(e,t),await this.persist())},this.get=e=>(this.isInitialized(),this.logger.debug("Getting value"),this.logger.trace({type:"method",method:"get",key:e}),this.getData(e)),this.getAll=e=>(this.isInitialized(),e?this.values.filter(t=>Object.keys(e).every(i=>H()(t[i],e[i]))):this.values),this.update=async(e,t)=>{this.isInitialized(),this.logger.debug("Updating value"),this.logger.trace({type:"method",method:"update",key:e,update:t});let i=tq(tq({},this.getData(e)),t);this.map.set(e,i),await this.persist()},this.delete=async(e,t)=>{this.isInitialized(),this.map.has(e)&&(this.logger.debug("Deleting value"),this.logger.trace({type:"method",method:"delete",key:e,reason:t}),this.map.delete(e),this.addToRecentlyDeleted(e),await this.persist())},this.logger=(0,S.Ep)(t,this.name),this.storagePrefix=s,this.getKey=r}get context(){return(0,S.Fd)(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}get length(){return this.map.size}get keys(){return Array.from(this.map.keys())}get values(){return Array.from(this.map.values())}addToRecentlyDeleted(e){this.recentlyDeleted.push(e),this.recentlyDeleted.length>=this.recentlyDeletedLimit&&this.recentlyDeleted.splice(0,this.recentlyDeletedLimit/2)}async setDataStore(e){await this.core.storage.setItem(this.storageKey,e)}async getDataStore(){return await this.core.storage.getItem(this.storageKey)}getData(e){let t=this.map.get(e);if(!t){if(this.recentlyDeleted.includes(e)){let{message:t}=(0,$.kCb)("MISSING_OR_INVALID",`Record was recently deleted - ${this.name}: ${e}`);throw this.logger.error(t),Error(t)}let{message:t}=(0,$.kCb)("NO_MATCHING_KEY",`${this.name}: ${e}`);throw this.logger.error(t),Error(t)}return t}async persist(){await this.setDataStore(this.values)}async restore(){try{let e=await this.getDataStore();if(typeof e>"u"||!e.length)return;if(this.map.size){let{message:e}=(0,$.kCb)("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(e),Error(e)}this.cached=e,this.logger.debug(`Successfully Restored value for ${this.name}`),this.logger.trace({type:"method",method:"restore",value:this.values})}catch(e){this.logger.debug(`Failed to Restore value for ${this.name}`),this.logger.error(e)}}isInitialized(){if(!this.initialized){let{message:e}=(0,$.kCb)("NOT_INITIALIZED",this.name);throw Error(e)}}}class tD{constructor(e,t){this.core=e,this.logger=t,this.name="pairing",this.version="0.3",this.events=new(c()),this.initialized=!1,this.storagePrefix=eJ,this.ignoredPayloadTypes=[$.rVF],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:e})=>{this.isInitialized(),this.registeredMethods=[...new Set([...this.registeredMethods,...e])]},this.create=async e=>{this.isInitialized();let t=(0,$.jdp)(),i=await this.core.crypto.setSymKey(t),s=(0,$.gn4)(V.FIVE_MINUTES),r={protocol:"irn"},n=(0,$.Bvr)({protocol:this.core.protocol,version:this.core.version,topic:i,symKey:t,relay:r,expiryTimestamp:s,methods:e?.methods});return this.core.expirer.set(i,s),await this.pairings.set(i,{topic:i,expiry:s,relay:r,active:!1}),await this.core.relayer.subscribe(i),{topic:i,uri:n}},this.pair=async e=>{this.isInitialized(),this.isValidPair(e);let{topic:t,symKey:i,relay:s,expiryTimestamp:r,methods:n}
1=(0,$.heJ)(e.uri);if(this.pairings.keys.includes(t)&&this.pairings.get(t).active)throw Error(`Pairing already exists: ${t}. Please try again with a new connection URI.`);let a=r||(0,$.gn4)(V.FIVE_MINUTES),o={topic:t,relay:s,expiry:a,active:!1,methods:n};return this.core.expirer.set(t,a),await this.pairings.set(t,o),e.activatePairing&&await this.activate({topic:t}),this.events.emit(e3.create,o),this.core.crypto.keychain.has(t)||await this.core.crypto.setSymKey(i,t),await this.core.relayer.subscribe(t,{relay:s}),o},this.activate=async({topic:e})=>{this.isInitialized();let t=(0,$.gn4)(V.THIRTY_DAYS);this.core.expirer.set(e,t),await this.pairings.update(e,{active:!0,expiry:t})},this.ping=async e=>{this.isInitialized(),await this.isValidPing(e);let{topic:t}=e;if(this.pairings.keys.includes(t)){let e=await this.sendRequest(t,"wc_pairingPing",{}),{done:i,resolve:s,reject:r}=(0,$.H1S)();this.events.once((0,$.E0T)("pairing_ping",e),({error:e})=>{e?r(e):s()}),await i()}},this.updateExpiry=async({topic:e,expiry:t})=>{this.isInitialized(),await this.pairings.update(e,{expiry:t})},this.updateMetadata=async({topic:e,metadata:t})=>{this.isInitialized(),await this.pairings.update(e,{peerMetadata:t})},this.getPairings=()=>(this.isInitialized(),this.pairings.values),this.disconnect=async e=>{this.isInitialized(),await this.isValidDisconnect(e);let{topic:t}=e;this.pairings.keys.includes(t)&&(await this.sendRequest(t,"wc_pairingDelete",(0,$.D6H)("USER_DISCONNECTED")),await this.deletePairing(t))},this.sendRequest=async(e,t,i)=>{let s=(0,K.formatJsonRpcRequest)(t,i),r=await this.core.crypto.encode(e,s),n=e8[t].req;return this.core.history.set(e,s),this.core.relayer.publish(e,r,n),s.id},this.sendResult=async(e,t,i)=>{let s=(0,K.formatJsonRpcResult)(e,i),r=await this.core.crypto.encode(t,s),n=e8[(await this.core.history.get(t,e)).request.method].res;await this.core.relayer.publish(t,r,n),await this.core.history.resolve(s)},this.sendError=async(e,t,i)=>{let s=(0,K.formatJsonRpcError)(e,i),r=await this.core.crypto.encode(t,s),n=await this.core.history.get(t,e),a=e8[n.request.method]?e8[n.request.method].res:e8.unregistered_method.res;await this.core.relayer.publish(t,r,a),await this.core.history.resolve(s)},this.deletePairing=async(e,t)=>{await this.core.relayer.unsubscribe(e),await Promise.all([this.pairings.delete(e,(0,$.D6H)("USER_DISCONNECTED")),this.core.crypto.deleteSymKey(e),t?Promise.resolve():this.core.expirer.del(e)])},this.cleanup=async()=>{let e=this.pairings.getAll().filter(e=>(0,$.BwD)(e.expiry));await Promise.all(e.map(e=>this.deletePairing(e.topic)))},this.onRelayEventRequest=e=>{let{topic:t,payload:i}=e;switch(i.method){case"wc_pairingPing":return this.onPairingPingRequest(t,i);case"wc_pairingDelete":return this.onPairingDeleteRequest(t,i);default:return this.onUnknownRpcMethodRequest(t,i)}},this.onRelayEventResponse=async e=>{let{topic:t,payload:i}=e,s=(await this.core.history.get(t,i.id)).request.method;return"wc_pairingPing"===s?this.onPairingPingResponse(t,i):this.onUnknownRpcMethodResponse(s)},this.onPairingPingRequest=async(e,t)=>{let{id:i}=t;try{this.isValidPing({topic:e}),await this.sendResult(i,e,!0),this.events.emit(e3.ping,{id:i,topic:e})}catch(t){await this.sendError(i,e,t),this.logger.error(t)}},this.onPairingPingResponse=(e,t)=>{let{id:i}=t;setTimeout(()=>{(0,K.isJsonRpcResult)(t)?this.events.emit((0,$.E0T)("pairing_ping",i),{}):(0,K.isJsonRpcError)(t)&&this.events.emit((0,$.E0T)("pairing_ping",i),{error:t.error})},500)},this.onPairingDeleteRequest=async(e,t)=>{let{id:i}=t;try{this.isValidDisconnect({topic:e}),await this.deletePairing(e),this.events.emit(e3.delete,{id:i,topic:e})}catch(t){await this.sendError(i,e,t),this.logger.error(t)}},this.onUnknownRpcMethodRequest=async(e,t)=>{let{id:i,method:s}=t;try{if(this.registeredMethods.includes(s))return;
1let t=(0,$.D6H)("WC_METHOD_UNSUPPORTED",s);await this.sendError(i,e,t),this.logger.error(t)}catch(t){await this.sendError(i,e,t),this.logger.error(t)}},this.onUnknownRpcMethodResponse=e=>{this.registeredMethods.includes(e)||this.logger.error((0,$.D6H)("WC_METHOD_UNSUPPORTED",e))},this.isValidPair=e=>{var t;if(!(0,$.EJd)(e)){let{message:t}=(0,$.kCb)("MISSING_OR_INVALID",`pair() params: ${e}`);throw Error(t)}if(!(0,$.jvJ)(e.uri)){let{message:t}=(0,$.kCb)("MISSING_OR_INVALID",`pair() uri: ${e.uri}`);throw Error(t)}let i=(0,$.heJ)(e.uri);if(!(null!=(t=i?.relay)&&t.protocol)){let{message:e}=(0,$.kCb)("MISSING_OR_INVALID","pair() uri#relay-protocol");throw Error(e)}if(!(null!=i&&i.symKey)){let{message:e}=(0,$.kCb)("MISSING_OR_INVALID","pair() uri#symKey");throw Error(e)}if(null!=i&&i.expiryTimestamp&&(0,V.toMiliseconds)(i?.expiryTimestamp)<Date.now()){let{message:e}=(0,$.kCb)("EXPIRED","pair() URI has expired. Please try again with a new connection URI.");throw Error(e)}},this.isValidPing=async e=>{if(!(0,$.EJd)(e)){let{message:t}=(0,$.kCb)("MISSING_OR_INVALID",`ping() params: ${e}`);throw Error(t)}let{topic:t}=e;await this.isValidPairingTopic(t)},this.isValidDisconnect=async e=>{if(!(0,$.EJd)(e)){let{message:t}=(0,$.kCb)("MISSING_OR_INVALID",`disconnect() params: ${e}`);throw Error(t)}let{topic:t}=e;await this.isValidPairingTopic(t)},this.isValidPairingTopic=async e=>{if(!(0,$.M_r)(e,!1)){let{message:t}=(0,$.kCb)("MISSING_OR_INVALID",`pairing topic should be a string: ${e}`);throw Error(t)}if(!this.pairings.keys.includes(e)){let{message:t}=(0,$.kCb)("NO_MATCHING_KEY",`pairing topic doesn't exist: ${e}`);throw Error(t)}if((0,$.BwD)(this.pairings.get(e).expiry)){await this.deletePairing(e);let{message:t}=(0,$.kCb)("EXPIRED",`pairing topic: ${e}`);throw Error(t)}},this.core=e,this.logger=(0,S.Ep)(t,this.name),this.pairings=new tx(this.core,this.logger,this.name,this.storagePrefix)}get context(){return(0,S.Fd)(this.logger)}isInitialized(){if(!this.initialized){let{message:e}=(0,$.kCb)("NOT_INITIALIZED",this.name);throw Error(e)}}registerRelayerEvents(){this.core.relayer.on(e0.message,async e=>{let{topic:t,message:i}=e;if(!this.pairings.keys.includes(t)||this.ignoredPayloadTypes.includes(this.core.crypto.getPayloadType(i)))return;let s=await this.core.crypto.decode(t,i);try{(0,K.isJsonRpcRequest)(s)?(this.core.history.set(t,s),this.onRelayEventRequest({topic:t,payload:s})):(0,K.isJsonRpcResponse)(s)&&(await this.core.history.resolve(s),await this.onRelayEventResponse({topic:t,payload:s}),this.core.history.delete(t,s.id))}catch(e){this.logger.error(e)}})}registerExpirerEvents(){this.core.expirer.on(e7.expired,async e=>{let{topic:t}=(0,$.iPz)(e.target);t&&this.pairings.keys.includes(t)&&(await this.deletePairing(t,!0),this.events.emit(e3.expire,{topic:t}))})}}class tO extends P{constructor(e,t){super(e,t),this.core=e,this.logger=t,this.records=new Map,this.events=new h.EventEmitter,this.name="history",this.version="0.3",this.cached=[],this.initialized=!1,this.storagePrefix=eJ,this.init=async()=>{this.initialized||(this.logger.trace("Initialized"),await this.restore(),this.cached.forEach(e=>this.records.set(e.id,e)),this.cached=[],this.registerEventListeners(),this.initialized=!0)},this.set=(e,t,i)=>{if(this.isInitialized(),this.logger.debug("Setting JSON-RPC request history record"),this.logger.trace({type:"method",method:"set",topic:e,request:t,chainId:i}),this.records.has(t.id))return;let s={id:t.id,topic:e,request:{method:t.method,params:t.params||null},chainId:i,expiry:(0,$.gn4)(V.THIRTY_DAYS)};this.records.set(s.id,s),this.persist(),this.events.emit(e4.created,s)},this.resolve=async e=>{if(this.isInitialized(),this.logger.debug("Updating JSON-RPC response history record"),this.logger.trace({type:"method",method:"update",response:e}),!this.records.has(e.id))return;let t=await this.getRecord(e.id);typeof t.response>"u"&&(t.response=(0,K.isJsonRpcError)(e)?{error:e.error}:{result:e.result},this.records.set(t.id,t),this.persist(),this.events.emit(e4.updated,t))},this.get=async(e,t)=>(this.isInitialized(),this.logger.debug("Getting record"),this.logger.trace({type:"method",method:"get",topic:e,id:t}),await this.getRecord(t)),this.delete=(e,t)=>
1{this.isInitialized(),this.logger.debug("Deleting record"),this.logger.trace({type:"method",method:"delete",id:t}),this.values.forEach(i=>{i.topic!==e||"u">typeof t&&i.id!==t||(this.records.delete(i.id),this.events.emit(e4.deleted,i))}),this.persist()},this.exists=async(e,t)=>(this.isInitialized(),!!this.records.has(t)&&(await this.getRecord(t)).topic===e),this.on=(e,t)=>{this.events.on(e,t)},this.once=(e,t)=>{this.events.once(e,t)},this.off=(e,t)=>{this.events.off(e,t)},this.removeListener=(e,t)=>{this.events.removeListener(e,t)},this.logger=(0,S.Ep)(t,this.name)}get context(){return(0,S.Fd)(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}get size(){return this.records.size}get keys(){return Array.from(this.records.keys())}get values(){return Array.from(this.records.values())}get pending(){let e=[];return this.values.forEach(t=>{if("u">typeof t.response)return;let i={topic:t.topic,request:(0,K.formatJsonRpcRequest)(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();let t=this.records.get(e);if(!t){let{message:t}=(0,$.kCb)("NO_MATCHING_KEY",`${this.name}: ${e}`);throw Error(t)}return t}async persist(){await this.setJsonRpcRecords(this.values),this.events.emit(e4.sync)}async restore(){try{let e=await this.getJsonRpcRecords();if(typeof e>"u"||!e.length)return;if(this.records.size){let{message:e}=(0,$.kCb)("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(e),Error(e)}this.cached=e,this.logger.debug(`Successfully Restored records for ${this.name}`),this.logger.trace({type:"method",method:"restore",records:this.values})}catch(e){this.logger.debug(`Failed to Restore records for ${this.name}`),this.logger.error(e)}}registerEventListeners(){this.events.on(e4.created,e=>{let t=e4.created;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,record:e})}),this.events.on(e4.updated,e=>{let t=e4.updated;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,record:e})}),this.events.on(e4.deleted,e=>{let t=e4.deleted;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,record:e})}),this.core.heartbeat.on(I.Lx.pulse,()=>{this.cleanup()})}cleanup(){try{this.isInitialized();let e=!1;this.records.forEach(t=>{(0,V.toMiliseconds)(t.expiry||0)-Date.now()<=0&&(this.logger.info(`Deleting expired history log: ${t.id}`),this.records.delete(t.id),this.events.emit(e4.deleted,t,!1),e=!0)}),e&&this.persist()}catch(e){this.logger.warn(e)}}isInitialized(){if(!this.initialized){let{message:e}=(0,$.kCb)("NOT_INITIALIZED",this.name);throw Error(e)}}}class tA extends D{constructor(e,t){super(e,t),this.core=e,this.logger=t,this.expirations=new Map,this.events=new h.EventEmitter,this.name="expirer",this.version="0.3",this.cached=[],this.initialized=!1,this.storagePrefix=eJ,this.init=async()=>{this.initialized||(this.logger.trace("Initialized"),await this.restore(),this.cached.forEach(e=>this.expirations.set(e.target,e)),this.cached=[],this.registerEventListeners(),this.initialized=!0)},this.has=e=>{try{let t=this.formatTarget(e);return"u">typeof this.getExpiration(t)}catch{return!1}},this.set=(e,t)=>{this.isInitialized();let i=this.formatTarget(e),s={target:i,expiry:t};this.expirations.set(i,s),this.checkExpiry(i,s),this.events.emit(e7.created,{target:i,expiration:s})},this.get=e=>{this.isInitialized();let t=this.formatTarget(e);return this.getExpiration(t)},this.del=e=>{if(this.isInitialized(),this.has(e)){let t=this.formatTarget(e),i=this.getExpiration(t);this.expirations.delete(t),this.events.emit(e7.deleted,{target:t,expiration:i})}},this.on=(e,t)=>{this.events.on(e,t)},this.once=(e,t)=>{this.events.once(e,t)},this.off=(e,t)=>{this.events.off(e,t)},this.removeListener=(e,t)=>{this.events.removeListener(e,t)},this.logger=(0,S.Ep)(t,this.name)}get context(){return(0,S.Fd)(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("string"==typeof e)return(0,$.Z42)(e);if("number"==typeof e)return(0,$.GqV)(e);let{message:t}=(0,$.kCb)("UNKNOWN_TYPE",`Target type: ${typeof e}`);throw Error(t)}async setExpirations(e){await this.core.storage.setItem(this.storageKey,e)}async getExpirations(){return await this.core.storage.getItem(this.storageKey)}async persist(){await this.setExpirations(this.values),this.events.emit(e7.sync)}
1async restore(){try{let e=await this.getExpirations();if(typeof e>"u"||!e.length)return;if(this.expirations.size){let{message:e}=(0,$.kCb)("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(e),Error(e)}this.cached=e,this.logger.debug(`Successfully Restored expirations for ${this.name}`),this.logger.trace({type:"method",method:"restore",expirations:this.values})}catch(e){this.logger.debug(`Failed to Restore expirations for ${this.name}`),this.logger.error(e)}}getExpiration(e){let t=this.expirations.get(e);if(!t){let{message:t}=(0,$.kCb)("NO_MATCHING_KEY",`${this.name}: ${e}`);throw this.logger.warn(t),Error(t)}return t}checkExpiry(e,t){let{expiry:i}=t;(0,V.toMiliseconds)(i)-Date.now()<=0&&this.expire(e,t)}expire(e,t){this.expirations.delete(e),this.events.emit(e7.expired,{target:e,expiration:t})}checkExpirations(){this.core.relayer.connected&&this.expirations.forEach((e,t)=>this.checkExpiry(t,e))}registerEventListeners(){this.core.heartbeat.on(I.Lx.pulse,()=>this.checkExpirations()),this.events.on(e7.created,e=>{let t=e7.created;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,data:e}),this.persist()}),this.events.on(e7.expired,e=>{let t=e7.expired;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,data:e}),this.persist()}),this.events.on(e7.deleted,e=>{let t=e7.deleted;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,data:e}),this.persist()})}isInitialized(){if(!this.initialized){let{message:e}=(0,$.kCb)("NOT_INITIALIZED",this.name);throw Error(e)}}}class tk extends O{constructor(e,t){super(e,t),this.projectId=e,this.logger=t,this.name=e9,this.initialized=!1,this.queue=[],this.verifyDisabled=!1,this.init=async e=>{if(this.verifyDisabled||(0,$.b$m)()||!(0,$.jUY)())return;let t=this.getVerifyUrl(e?.verifyUrl);this.verifyUrl!==t&&this.removeIframe(),this.verifyUrl=t;try{await this.createIframe()}catch(e){this.logger.info(`Verify iframe failed to load: ${this.verifyUrl}`),this.logger.info(e)}if(!this.initialized){this.removeIframe(),this.verifyUrl=tt;try{await this.createIframe()}catch(e){this.logger.info(`Verify iframe failed to load: ${this.verifyUrl}`),this.logger.info(e),this.verifyDisabled=!0}}},this.register=async e=>{this.initialized?this.sendPost(e.attestationId):(this.addToQueue(e.attestationId),await this.init())},this.resolve=async e=>{let t;if(this.isDevEnv)return"";let i=this.getVerifyUrl(e?.verifyUrl);try{t=await this.fetchAttestation(e.attestationId,i)}catch(s){this.logger.info(`failed to resolve attestation: ${e.attestationId} from url: ${i}`),this.logger.info(s),t=await this.fetchAttestation(e.attestationId,tt)}return t},this.fetchAttestation=async(e,t)=>{this.logger.info(`resolving attestation: ${e} from url: ${t}`);let i=this.startAbortTimer(2*V.ONE_SECOND),s=await fetch(`${t}/attestation/${e}`,{signal:this.abortController.signal});return clearTimeout(i),200===s.status?await s.json():void 0},this.addToQueue=e=>{this.queue.push(e)},this.processQueue=()=>{0!==this.queue.length&&(this.queue.forEach(e=>this.sendPost(e)),this.queue=[])},this.sendPost=e=>{var t;try{if(!this.iframe)return;null==(t=this.iframe.contentWindow)||t.postMessage(e,"*"),this.logger.info(`postMessage sent: ${e} ${this.verifyUrl}`)}catch{}},this.createIframe=async()=>{let e;let t=i=>{"verify_ready"===i.data&&(this.onInit(),window.removeEventListener("message",t),e())};await Promise.race([new Promise(i=>{let s=document.getElementById(e9);if(s)return this.iframe=s,this.onInit(),i();window.addEventListener("message",t);let r=document.createElement("iframe");r.id=e9,r.src=`${this.verifyUrl}/${this.projectId}`,r.style.display="none",document.body.append(r),this.iframe=r,e=i}),new Promise((e,i)=>setTimeout(()=>{window.removeEventListener("message",t),i("verify iframe load timeout")},(0,V.toMiliseconds)(V.FIVE_SECONDS)))])},this.onInit=()=>{this.initialized=!0,this.processQueue()},this.removeIframe=()=>{this.iframe&&(this.iframe.remove(),this.iframe=void 0,this.initialized=!1)},this.getVerifyUrl=e=>{let t=e||te;return ti.includes(t)||(this.logger.info(`verify url: ${t}, not included in trusted list, assigning default: ${te}`),t=te),t},this.logger=(0,S.Ep)(t,this.name),this.verifyUrl=te,this.abortController=new AbortController,this.isDevEnv=(0,$.UGU)()&&G.env.IS_VITEST}get context(){return(0,S.Fd)(this.logger)}startAbortTimer(e){return this.abortController=new AbortController,setTimeout(()=>this.abortController.abort(),(0,V.toMiliseconds)(e))}}class tM extends A{constructor(e,t){super(e,t),this.projectId=e,this.logger=t,this.context="echo",this.registerDeviceToken=async e=>{let{clientId:t,token:i,notificationType:s,enableEncrypted:r=!1}=e,n=`https://echo.walletconnect.com/${this.projectId}/clients`;await B()(n,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({client_id:t,type:s,token:i,always_raw:r})})},this.logger=(0,S.Ep)(t,this.context)}}var tz=Object.defineProperty,t$=Object.getOwnPropertySymbols,tU=Object.prototype.hasOwnProperty,tV=Object.prototype.propertyIsEnumerable,tL=(e,t,i)=>t in e?tz(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i,tK=(e,t)=>{for(var i in t||(t={}))tU.call(t,i)&&tL(e,i,t[i]);if(t$)for(var i of t$(t))tV.call(t,i)&&tL(e,i,t[i]);return e};class tj extends _{constructor(e){var t;super(e),this.protocol="wc",this.version=2,this.name=eH,this.events=new h.EventEmitter,this.initialized=!1,this.on=(e,t)=>this.events.on(e,t),this.once=(e,t)=>this.events.once(e,t),this.off=(e,t)=>this.events.off(e,t),this.removeListener=(e,t)=>this.events.removeListener(e,t),this.projectId=e?.projectId,this.relayUrl=e?.relayUrl||eZ,this.customStoragePrefix=null!=e&&e.customStoragePrefix?`:${e.customStoragePrefix}`:"";let i=(0,S.jI)({level:"string"==typeof e?.logger&&e.logger?e.logger:eB.logger}),{logger:s,chunkLoggerController:r}=(0,S.Rt)({opts:i,maxSizeInBytes:e?.maxLogBlobSizeInBytes,loggerOverride:e?.logger});
1this.logChunkController=r,null!=(t=this.logChunkController)&&t.downloadLogsBlobInBrowser&&(window.downloadLogsBlobInBrowser=async()=>{var e,t;null!=(e=this.logChunkController)&&e.downloadLogsBlobInBrowser&&(null==(t=this.logChunkController)||t.downloadLogsBlobInBrowser({clientId:await this.crypto.getClientId()}))}),this.logger=(0,S.Ep)(s,this.name),this.heartbeat=new I.C$,this.crypto=new tr(this,this.logger,e?.keychain),this.history=new tO(this,this.logger),this.expirer=new tA(this,this.logger),this.storage=null!=e&&e.storage?e.storage:new E(tK(tK({},eG),e?.storageOptions)),this.relayer=new tR({core:this,logger:this.logger,relayUrl:this.relayUrl,projectId:this.projectId}),this.pairing=new tD(this,this.logger),this.verify=new tk(this.projectId||"",this.logger),this.echoClient=new tM(this.projectId||"",this.logger)}static async init(e){let t=new tj(e);await t.initialize();let i=await t.crypto.getClientId();return await t.storage.setItem("WALLETCONNECT_CLIENT_ID",i),t}get context(){return(0,S.Fd)(this.logger)}async start(){this.initialized||await this.initialize()}async getLogsBlob(){var e;return null==(e=this.logChunkController)?void 0:e.logsToBlob({clientId:await this.crypto.getClientId()})}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.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}}}let tF="client",tH=`wc@2:${tF}:`,tJ={name:tF,logger:"error"},tB="WALLETCONNECT_DEEPLINK_CHOICE",tG=V.SEVEN_DAYS,tY={wc_sessionPropose:{req:{ttl:V.FIVE_MINUTES,prompt:!0,tag:1100},res:{ttl:V.FIVE_MINUTES,prompt:!1,tag:1101},reject:{ttl:V.FIVE_MINUTES,prompt:!1,tag:1120},autoReject:{ttl:V.FIVE_MINUTES,prompt:!1,tag:1121}},wc_sessionSettle:{req:{ttl:V.FIVE_MINUTES,prompt:!1,tag:1102},res:{ttl:V.FIVE_MINUTES,prompt:!1,tag:1103}},wc_sessionUpdate:{req:{ttl:V.ONE_DAY,prompt:!1,tag:1104},res:{ttl:V.ONE_DAY,prompt:!1,tag:1105}},wc_sessionExtend:{req:{ttl:V.ONE_DAY,prompt:!1,tag:1106},res:{ttl:V.ONE_DAY,prompt:!1,tag:1107}},wc_sessionRequest:{req:{ttl:V.FIVE_MINUTES,prompt:!0,tag:1108},res:{ttl:V.FIVE_MINUTES,prompt:!1,tag:1109}},wc_sessionEvent:{req:{ttl:V.FIVE_MINUTES,prompt:!0,tag:1110},res:{ttl:V.FIVE_MINUTES,prompt:!1,tag:1111}},wc_sessionDelete:{req:{ttl:V.ONE_DAY,prompt:!1,tag:1112},res:{ttl:V.ONE_DAY,prompt:!1,tag:1113}},wc_sessionPing:{req:{ttl:V.ONE_DAY,prompt:!1,tag:1114},res:{ttl:V.ONE_DAY,prompt:!1,tag:1115}},wc_sessionAuthenticate:{req:{ttl:V.ONE_HOUR,prompt:!0,tag:1116},res:{ttl:V.ONE_HOUR,prompt:!1,tag:1117},reject:{ttl:V.FIVE_MINUTES,prompt:!1,tag:1118},autoReject:{ttl:V.FIVE_MINUTES,prompt:!1,tag:1119}}},tQ={min:V.FIVE_MINUTES,max:V.SEVEN_DAYS},tW={idle:"IDLE",active:"ACTIVE"},tZ=["wc_sessionPropose","wc_sessionRequest","wc_authRequest"],tX="[email protected]:auth:",t0=`${tX}:PUB_KEY`;
1var t1=Object.defineProperty,t2=Object.defineProperties,t5=Object.getOwnPropertyDescriptors,t6=Object.getOwnPropertySymbols,t8=Object.prototype.hasOwnProperty,t3=Object.prototype.propertyIsEnumerable,t4=(e,t,i)=>t in e?t1(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i,t7=(e,t)=>{for(var i in t||(t={}))t8.call(t,i)&&t4(e,i,t[i]);if(t6)for(var i of t6(t))t3.call(t,i)&&t4(e,i,t[i]);return e},t9=(e,t)=>t2(e,t5(t));class ie extends M{constructor(e){super(e),this.name="engine",this.events=new(c()),this.initialized=!1,this.requestQueue={state:tW.idle,queue:[]},this.sessionRequestQueue={state:tW.idle,queue:[]},this.requestQueueDelay=V.ONE_SECOND,this.expectedPairingMethodMap=new Map,this.recentlyDeletedMap=new Map,this.recentlyDeletedLimit=200,this.init=async()=>{this.initialized||(await this.cleanup(),this.registerRelayerEvents(),this.registerExpirerEvents(),this.registerPairingEvents(),this.client.core.pairing.register({methods:Object.keys(tY)}),this.initialized=!0,setTimeout(()=>{this.sessionRequestQueue.queue=this.getPendingSessionRequests(),this.processSessionRequestQueue()},(0,V.toMiliseconds)(this.requestQueueDelay)))},this.connect=async e=>{await this.isInitialized();let t=t9(t7({},e),{requiredNamespaces:e.requiredNamespaces||{},optionalNamespaces:e.optionalNamespaces||{}});await this.isValidConnect(t);let{pairingTopic:i,requiredNamespaces:s,optionalNamespaces:r,sessionProperties:n,relays:a}=t,o=i,h,c=!1;try{o&&(c=this.client.core.pairing.pairings.get(o).active)}catch(e){throw this.client.logger.error(`connect() -> pairing.get(${o}) failed`),e}if(!o||!c){let{topic:e,uri:t}=await this.client.core.pairing.create();o=e,h=t}if(!o){let{message:e}=(0,$.kCb)("NO_MATCHING_KEY",`connect() pairing topic: ${o}`);throw Error(e)}let l=await this.client.core.crypto.generateKeyPair(),p=tY.wc_sessionPropose.req.ttl||V.FIVE_MINUTES,d=(0,$.gn4)(p),g=t7({requiredNamespaces:s,optionalNamespaces:r,relays:a??[{protocol:"irn"}],proposer:{publicKey:l,metadata:this.client.metadata},expiryTimestamp:d,pairingTopic:o},n&&{sessionProperties:n}),{reject:u,resolve:y,done:m}=(0,$.H1S)(p,"Proposal expired");this.events.once((0,$.E0T)("session_connect"),async({error:e,session:t})=>{if(e)u(e);else if(t){t.self.publicKey=l;let e=t9(t7({},t),{pairingTopic:g.pairingTopic,requiredNamespaces:g.requiredNamespaces,optionalNamespaces:g.optionalNamespaces});await this.client.session.set(t.topic,e),await this.setExpiry(t.topic,t.expiry),o&&await this.client.core.pairing.updateMetadata({topic:o,metadata:t.peer.metadata}),this.cleanupDuplicatePairings(e),y(e)}});let w=await this.sendRequest({topic:o,method:"wc_sessionPropose",params:g,throwOnFailedPublish:!0});return await this.setProposal(w,t7({id:w},g)),{uri:h,approval:m}},this.pair=async e=>{await this.isInitialized();try{return await this.client.core.pairing.pair(e)}catch(e){throw this.client.logger.error("pair() failed"),e}},this.approve=async e=>{let t;await this.isInitialized();try{await this.isValidApprove(e)}catch(e){throw this.client.logger.error("approve() -> isValidApprove() failed"),e}let{id:i,relayProtocol:s,namespaces:r,sessionProperties:n,sessionConfig:a}=e;try{t=this.client.proposal.get(i)}catch(e){throw this.client.logger.error(`approve() -> proposal.get(${i}) failed`),e}let{pairingTopic:o,proposer:h,requiredNamespaces:c,optionalNamespaces:l}=t,p=await this.client.core.crypto.generateKeyPair(),d=h.publicKey,g=await this.client.core.crypto.generateSharedKey(p,d),u=t7(t7({relay:{protocol:s??"irn"},namespaces:r,controller:{publicKey:p,metadata:this.client.metadata},expiry:(0,$.gn4)(tG)},n&&{sessionProperties:n}),a&&{sessionConfig:a});await this.client.core.relayer.subscribe(g);let y=t9(t7({},u),{topic:g,requiredNamespaces:c,optionalNamespaces:l,pairingTopic:o,acknowledged:!1,self:u.controller,peer:{publicKey:h.publicKey,metadata:h.metadata},controller:p});await this.client.session.set(g,y);try{await this.sendResult({id:i,topic:o,result:{relay:{protocol:s??"irn"},responderPublicKey:p},throwOnFailedPublish:!0}),await this.sendRequest({topic:g,method:"wc_sessionSettle",params:u,throwOnFailedPublish:!0})}catch(e){throw this.client.logger.error(e),this.client.session.delete(g,(0,$.D6H)("USER_DISCONNECTED")),await this.client.core.relayer.unsubscribe(g),e}return await this.client.core.pairing.updateMetadata({topic:o,metadata:h.metadata}),await this.client.proposal.delete(i,(0,$.D6H)("USER_DISCONNECTED")),await this.client.core.pairing.activate({topic:o}),await this.setExpiry(g,(0,$.gn4)(tG)),{topic:g,acknowledged:()=>new Promise(e=>setTimeout(()=>e(this.client.session.get(g)),500))}},this.reject=async e=>{let t;await this.isInitialized();try{await this.isValidReject(e)}catch(e){throw this.client.logger.error("reject() -> isValidReject() failed"),e}let{id:i,reason:s}=e;try{t=this.client.proposal.get(i).pairingTopic}catch(e){throw this.client.logger.error(`reject() -> proposal.get(${i}) failed`),e}
1t&&(await this.sendError({id:i,topic:t,error:s,rpcOpts:tY.wc_sessionPropose.reject}),await this.client.proposal.delete(i,(0,$.D6H)("USER_DISCONNECTED")))},this.update=async e=>{await this.isInitialized();try{await this.isValidUpdate(e)}catch(e){throw this.client.logger.error("update() -> isValidUpdate() failed"),e}let{topic:t,namespaces:i}=e,{done:s,resolve:r,reject:n}=(0,$.H1S)(),a=(0,K.payloadId)(),o=(0,K.getBigIntRpcId)().toString(),h=this.client.session.get(t).namespaces;return this.events.once((0,$.E0T)("session_update",a),({error:e})=>{e?n(e):r()}),await this.client.session.update(t,{namespaces:i}),await this.sendRequest({topic:t,method:"wc_sessionUpdate",params:{namespaces:i},throwOnFailedPublish:!0,clientRpcId:a,relayRpcId:o}).catch(e=>{this.client.logger.error(e),this.client.session.update(t,{namespaces:h}),n(e)}),{acknowledged:s}},this.extend=async e=>{await this.isInitialized();try{await this.isValidExtend(e)}catch(e){throw this.client.logger.error("extend() -> isValidExtend() failed"),e}let{topic:t}=e,i=(0,K.payloadId)(),{done:s,resolve:r,reject:n}=(0,$.H1S)();return this.events.once((0,$.E0T)("session_extend",i),({error:e})=>{e?n(e):r()}),await this.setExpiry(t,(0,$.gn4)(tG)),this.sendRequest({topic:t,method:"wc_sessionExtend",params:{},clientRpcId:i,throwOnFailedPublish:!0}).catch(e=>{n(e)}),{acknowledged:s}},this.request=async e=>{await this.isInitialized();try{await this.isValidRequest(e)}catch(e){throw this.client.logger.error("request() -> isValidRequest() failed"),e}let{chainId:t,request:i,topic:s,expiry:r=tY.wc_sessionRequest.req.ttl}=e,n=this.client.session.get(s),a=(0,K.payloadId)(),o=(0,K.getBigIntRpcId)().toString(),{done:h,resolve:c,reject:l}=(0,$.H1S)(r,"Request expired. Please try again.");return this.events.once((0,$.E0T)("session_request",a),({error:e,result:t})=>{e?l(e):c(t)}),await Promise.all([new Promise(async e=>{await this.sendRequest({clientRpcId:a,relayRpcId:o,topic:s,method:"wc_sessionRequest",params:{request:t9(t7({},i),{expiryTimestamp:(0,$.gn4)(r)}),chainId:t},expiry:r,throwOnFailedPublish:!0}).catch(e=>l(e)),this.client.events.emit("session_request_sent",{topic:s,request:i,chainId:t,id:a}),e()}),new Promise(async e=>{var t;if(!(null!=(t=n.sessionConfig)&&t.disableDeepLink)){let e=await (0,$.bW6)(this.client.core.storage,tB);(0,$.HhN)({id:a,topic:s,wcDeepLink:e})}e()}),h()]).then(e=>e[2])},this.respond=async e=>{await this.isInitialized(),await this.isValidRespond(e);let{topic:t,response:i}=e,{id:s}=i;(0,K.isJsonRpcResult)(i)?await this.sendResult({id:s,topic:t,result:i.result,throwOnFailedPublish:!0}):(0,K.isJsonRpcError)(i)&&await this.sendError({id:s,topic:t,error:i.error}),this.cleanupAfterResponse(e)},this.ping=async e=>{await this.isInitialized();try{await this.isValidPing(e)}catch(e){throw this.client.logger.error("ping() -> isValidPing() failed"),e}let{topic:t}=e;if(this.client.session.keys.includes(t)){let e=(0,K.payloadId)(),i=(0,K.getBigIntRpcId)().toString(),{done:s,resolve:r,reject:n}=(0,$.H1S)();this.events.once((0,$.E0T)("session_ping",e),({error:e})=>{e?n(e):r()}),await Promise.all([this.sendRequest({topic:t,method:"wc_sessionPing",params:{},throwOnFailedPublish:!0,clientRpcId:e,relayRpcId:i}),s()])}else this.client.core.pairing.pairings.keys.includes(t)&&await this.client.core.pairing.ping({topic:t})},this.emit=async e=>{await this.isInitialized(),await this.isValidEmit(e);let{topic:t,event:i,chainId:s}=e,r=(0,K.getBigIntRpcId)().toString();await this.sendRequest({topic:t,method:"wc_sessionEvent",params:{event:i,
1chainId:s},throwOnFailedPublish:!0,relayRpcId:r})},this.disconnect=async e=>{await this.isInitialized(),await this.isValidDisconnect(e);let{topic:t}=e;if(this.client.session.keys.includes(t))await this.sendRequest({topic:t,method:"wc_sessionDelete",params:(0,$.D6H)("USER_DISCONNECTED"),throwOnFailedPublish:!0}),await this.deleteSession({topic:t,emitEvent:!1});else if(this.client.core.pairing.pairings.keys.includes(t))await this.client.core.pairing.disconnect({topic:t});else{let{message:e}=(0,$.kCb)("MISMATCHED_TOPIC",`Session or pairing topic not found: ${t}`);throw Error(e)}},this.find=e=>(this.isInitialized(),this.client.session.getAll().filter(t=>(0,$.Ih8)(t,e))),this.getPendingSessionRequests=()=>this.client.pendingRequest.getAll(),this.authenticate=async e=>{this.isInitialized(),this.isValidAuthenticate(e);let{chains:t,statement:i="",uri:s,domain:r,nonce:n,type:a,exp:o,nbf:h,methods:c=[],expiry:l}=e,p=[...e.resources||[]],{topic:d,uri:g}=await this.client.core.pairing.create({methods:["wc_sessionAuthenticate"]});this.client.logger.info({message:"Generated new pairing",pairing:{topic:d,uri:g}});let u=await this.client.core.crypto.generateKeyPair(),y=(0,$.YmJ)(u);if(await Promise.all([this.client.auth.authKeys.set(t0,{responseTopic:y,publicKey:u}),this.client.auth.pairingTopics.set(y,{topic:y,pairingTopic:d})]),await this.client.core.relayer.subscribe(y),this.client.logger.info(`sending request to new pairing topic: ${d}`),c.length>0){let{namespace:e}=(0,$.DQe)(t[0]),i=(0,$.IkP)(e,"request",c);(0,$.hA9)(p)&&(i=(0,$.qJM)(i,p.pop())),p.push(i)}let m=l&&l>tY.wc_sessionAuthenticate.req.ttl?l:tY.wc_sessionAuthenticate.req.ttl,w={authPayload:{type:a??"caip122",chains:t,statement:i,aud:s,domain:r,version:"1",nonce:n,iat:new Date().toISOString(),exp:o,nbf:h,resources:p},requester:{publicKey:u,metadata:this.client.metadata},expiryTimestamp:(0,$.gn4)(m)},f={requiredNamespaces:{},optionalNamespaces:{eip155:{chains:t,methods:[...new Set(["personal_sign",...c])],events:["chainChanged","accountsChanged"]}},relays:[{protocol:"irn"}],pairingTopic:d,proposer:{publicKey:u,metadata:this.client.metadata},expiryTimestamp:(0,$.gn4)(tY.wc_sessionPropose.req.ttl)},{done:b,resolve:v,reject:E}=(0,$.H1S)(m,"Request expired"),I=async({error:e,session:t})=>{if(this.events.off((0,$.E0T)("session_request",R),S),e)E(e);else if(t){t.self.publicKey=u,await this.client.session.set(t.topic,t),await this.setExpiry(t.topic,t.expiry),d&&await this.client.core.pairing.updateMetadata({topic:d,metadata:t.peer.metadata});let e=this.client.session.get(t.topic);await this.deleteProposal(_),v({session:e})}},S=async e=>{let t;if(await this.deletePendingAuthRequest(R,{message:"fulfilled",code:0}
1),e.error){let t=(0,$.D6H)("WC_METHOD_UNSUPPORTED","wc_sessionAuthenticate");return e.error.code===t.code?void 0:(this.events.off((0,$.E0T)("session_connect"),I),E(e.error.message))}await this.deleteProposal(_),this.events.off((0,$.E0T)("session_connect"),I);let{cacaos:i,responder:s}=e.result,r=[],n=[];for(let e of i){await (0,$.c4l)({cacao:e,projectId:this.client.core.projectId})||(this.client.logger.error(e,"Signature verification failed"),E((0,$.D6H)("SESSION_SETTLEMENT_FAILED","Signature verification failed")));let{p:t}=e,i=(0,$.hA9)(t.resources),s=[(0,$.DJo)(t.iss)],a=(0,$.NmC)(t.iss);if(i){let e=(0,$.Y31)(i),t=(0,$.ouN)(i);r.push(...e),s.push(...t)}for(let e of s)n.push(`${e}:${a}`)}let a=await this.client.core.crypto.generateSharedKey(u,s.publicKey);r.length>0&&(t={topic:a,acknowledged:!0,self:{publicKey:u,metadata:this.client.metadata},peer:s,controller:s.publicKey,expiry:(0,$.gn4)(tG),requiredNamespaces:{},optionalNamespaces:{},relay:{protocol:"irn"},pairingTopic:d,namespaces:(0,$.E12)([...new Set(r)],[...new Set(n)])},await this.client.core.relayer.subscribe(a),await this.client.session.set(a,t),t=this.client.session.get(a)),v({auths:i,session:t})},R=(0,K.payloadId)(),_=(0,K.payloadId)();this.events.once((0,$.E0T)("session_connect"),I),this.events.once((0,$.E0T)("session_request",R),S);try{await Promise.all([this.sendRequest({topic:d,method:"wc_sessionAuthenticate",params:w,expiry:e.expiry,throwOnFailedPublish:!0,clientRpcId:R}),this.sendRequest({topic:d,method:"wc_sessionPropose",params:f,expiry:tY.wc_sessionPropose.req.ttl,throwOnFailedPublish:!0,clientRpcId:_})])}catch(e){throw this.events.off((0,$.E0T)("session_connect"),I),this.events.off((0,$.E0T)("session_request",R),S),e}return await this.setProposal(_,t7({id:_},f)),await this.setAuthRequest(R,{request:t9(t7({},w),{verifyContext:{}}),pairingTopic:d}),{uri:g,response:b}},this.approveSessionAuthenticate=async e=>{let t;this.isInitialized();let{id:i,auths:s}=e,r=this.getPendingAuthRequest(i);if(!r)throw Error(`Could not find pending auth request with id ${i}`);let n=r.requester.publicKey,a=await this.client.core.crypto.generateKeyPair(),o=(0,$.YmJ)(n),h={type:$.rVF,receiverPublicKey:n,senderPublicKey:a},c=[],l=[];for(let e of s){if(!await (0,$.c4l)({cacao:e,projectId:this.client.core.projectId})){let e=(0,$.D6H)("SESSION_SETTLEMENT_FAILED","Signature verification failed");throw await this.sendError({id:i,topic:o,error:e,encodeOpts:h}),Error(e.message)}let{p:t}=e,s=(0,$.hA9)(t.resources),r=[(0,$.DJo)(t.iss)],n=(0,$.NmC)(t.iss);if(s){let e=(0,$.Y31)(s),t=(0,$.ouN)(s);c.push(...e),r.push(...t)}for(let e of r)l.push(`${e}:${n}`)}let p=await this.client.core.crypto.generateSharedKey(a,n);return c?.length>0&&(t={topic:p,acknowledged:!0,self:{publicKey:a,metadata:this.client.metadata},peer:{publicKey:n,metadata:r.requester.metadata},controller:n,expiry:(0,$.gn4)(tG),authentication:s,requiredNamespaces:{},optionalNamespaces:{},relay:{protocol:"irn"},pairingTopic:"",namespaces:(0,$.E12)([...new Set(c)],[...new Set(l)])},await this.client.core.relayer.subscribe(p),await this.client.session.set(p,t)),await this.sendResult({topic:o,id:i,result:{cacaos:s,responder:{publicKey:a,metadata:this.client.metadata}},encodeOpts:h,throwOnFailedPublish:!0}),await this.client.auth.requests.delete(i,{message:"fulfilled",code:0}),await this.client.core.pairing.activate({topic:r.pairingTopic}),{session:t}},this.rejectSessionAuthenticate=async e=>{await this.isInitialized();let{id:t,reason:i}=e,s=this.getPendingAuthRequest(t);if(!s)throw Error(`Could not find pending auth request with id ${t}`);let r=s.requester.publicKey,n=await this.client.core.crypto.generateKeyPair(),a=(0,$.YmJ)(r),o={type:$.rVF,receiverPublicKey:r,senderPublicKey:n};await this.sendError({id:t,topic:a,error:i,encodeOpts:o,rpcOpts:tY.wc_sessionAuthenticate.reject}),await this.client.auth.requests.delete(t,{message:"rejected",code:0}),await this.client.proposal.delete(t,(0,$.D6H)("USER_DISCONNECTED"))},this.formatAuthMessage=e=>{this.isInitialized();let{request:t,iss:i}=e;return(0,$.wvx)(t,i)},this.cleanupDuplicatePairings=async e=>{if(e.pairingTopic)try{let t=this.client.core.pairing.pairings.get(e.pairingTopic),i=this.client.core.pairing.pairings.getAll().filter(i=>{var s,r;return(null==(s=i.peerMetadata)?void 0:s.url)&&(null==(r=i.peerMetadata)?void 0:r.url)===e.peer.metadata.url&&i.topic&&i.topic!==t.topic});if(0===i.length)return;this.client.logger.info(`Cleaning up ${i.length} duplicate pairing(s)`),await Promise.all(i.map(e=>this.client.core.pairing.disconnect({topic:e.topic}))),this.client.logger.info("Duplicate pairings clean up finished")}catch(e){this.client.logger.error(e)}},this.deleteSession=async e=>{var t;let{topic:i,expirerHasDeleted:s=!1,emitEvent:r=!0,id:n=0}=e,{self:a}=this.client.session.get(i);await this.client.core.relayer.unsubscribe(i),await this.client.session.delete(i,(0,$.D6H)("USER_DISCONNECTED")),this.addToRecentlyDeleted(i,"session"),this.client.core.crypto.keychain.has(a.publicKey)&&await this.client.core.crypto.deleteKeyPair(a.publicKey),this.client.core.crypto.keychain.has(i)&&await this.client.core.crypto.deleteSymKey(i),s||this.client.core.expirer.del(i),this.client.core.storage.removeItem(tB).catch(e=>this.client.logger.warn(e)),this.getPendingSessionRequests().forEac
1h(e=>{e.topic===i&&this.deletePendingSessionRequest(e.id,(0,$.D6H)("USER_DISCONNECTED"))}),i===(null==(t=this.sessionRequestQueue.queue[0])?void 0:t.topic)&&(this.sessionRequestQueue.state=tW.idle),r&&this.client.events.emit("session_delete",{id:n,topic:i})},this.deleteProposal=async(e,t)=>{await Promise.all([this.client.proposal.delete(e,(0,$.D6H)("USER_DISCONNECTED")),t?Promise.resolve():this.client.core.expirer.del(e)]),this.addToRecentlyDeleted(e,"proposal")},this.deletePendingSessionRequest=async(e,t,i=!1)=>{await Promise.all([this.client.pendingRequest.delete(e,t),i?Promise.resolve():this.client.core.expirer.del(e)]),this.addToRecentlyDeleted(e,"request"),this.sessionRequestQueue.queue=this.sessionRequestQueue.queue.filter(t=>t.id!==e),i&&(this.sessionRequestQueue.state=tW.idle,this.client.events.emit("session_request_expire",{id:e}))},this.deletePendingAuthRequest=async(e,t,i=!1)=>{await Promise.all([this.client.auth.requests.delete(e,t),i?Promise.resolve():this.client.core.expirer.del(e)])},this.setExpiry=async(e,t)=>{this.client.session.keys.includes(e)&&(this.client.core.expirer.set(e,t),await this.client.session.update(e,{expiry:t}))},this.setProposal=async(e,t)=>{this.client.core.expirer.set(e,(0,$.gn4)(tY.wc_sessionPropose.req.ttl)),await this.client.proposal.set(e,t)},this.setAuthRequest=async(e,t)=>{let{request:i,pairingTopic:s}=t;this.client.core.expirer.set(e,i.expiryTimestamp),await this.client.auth.requests.set(e,{authPayload:i.authPayload,requester:i.requester,expiryTimestamp:i.expiryTimestamp,id:e,pairingTopic:s,verifyContext:i.verifyContext})},this.setPendingSessionRequest=async e=>{let{id:t,topic:i,params:s,verifyContext:r}=e,n=s.request.expiryTimestamp||(0,$.gn4)(tY.wc_sessionRequest.req.ttl);this.client.core.expirer.set(t,n),await this.client.pendingRequest.set(t,{id:t,topic:i,params:s,verifyContext:r})},this.sendRequest=async e=>{let t;let{topic:i,method:s,params:r,expiry:n,relayRpcId:a,clientRpcId:o,throwOnFailedPublish:h}=e,c=(0,K.formatJsonRpcRequest)(s,r,o);if((0,$.jUY)()&&tZ.includes(s)){let e=(0,$.rjm)(JSON.stringify(c));this.client.core.verify.register({attestationId:e})}try{t=await this.client.core.crypto.encode(i,c)}catch(e){throw await this.cleanup(),this.client.logger.error(`sendRequest() -> core.crypto.encode() for topic ${i} failed`),e}let l=tY[s].req;return n&&(l.ttl=n),a&&(l.id=a),this.client.core.history.set(i,c),h?(l.internal=t9(t7({},l.internal),{throwOnFailedPublish:!0}),await this.client.core.relayer.publish(i,t,l)):this.client.core.relayer.publish(i,t,l).catch(e=>this.client.logger.error(e)),c.id},this.sendResult=async e=>{let t,i;let{id:s,topic:r,result:n,throwOnFailedPublish:a,encodeOpts:o}=e,h=(0,K.formatJsonRpcResult)(s,n);try{t=await this.client.core.crypto.encode(r,h,o)}catch(e){throw await this.cleanup(),this.client.logger.error(`sendResult() -> core.crypto.encode() for topic ${r} failed`),e}try{i=await this.client.core.history.get(r,s)}catch(e){throw this.client.logger.error(`sendResult() -> history.get(${r}, ${s}) failed`),e}let c=tY[i.request.method].res;a?(c.internal=t9(t7({},c.internal),{throwOnFailedPublish:!0}),await this.client.core.relayer.publish(r,t,c)):this.client.core.relayer.publish(r,t,c).catch(e=>this.client.logger.error(e)),await this.client.core.history.resolve(h)},this.sendError=async e=>{let t,i;let{id:s,topic:r,error:n,encodeOpts:a,rpcOpts:o}=e,h=(0,K.formatJsonRpcError)(s,n);try{t=await this.client.core.crypto.encode(r,h,a)}catch(e){throw await this.cleanup(),this.client.logger.error(`sendError() -> core.crypto.encode() for topic ${r} failed`),e}try{i=await this.client.core.history.get(r,s)}catch(e){throw this.client.logger.error(`sendError() -> history.get(${r}, ${s}) failed`),e}let c=o||tY[i.request.method].res;this.client.core.relayer.publish(r,t,c),await this.client.core.history.resolve(h)},this.cleanup=async()=>{let e=[],t=[];this.client.session.getAll().forEach(t=>{let i=!1;(0,$.BwD)(t.expiry)&&(i=!0),this.client.core.crypto.keychain.has(t.topic)||(i=!0),i&&e.push(t.topic)}),this.client.proposal.getAll().forEach(e=>{(0,$.BwD)(e.expiryTimestamp)&&t.push(e.id)}),await Promise.all([...e.map(e=>this.deleteSession({topic:e})),...t.map(e=>this.deleteProposal(e))])},this.onRelayEventRequest=async e=>{this.requestQueue.queue.push(e),await this.processRequestsQueue()},this.processRequestsQueue=async()=>
1{if(this.requestQueue.state===tW.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=tW.active;let e=this.requestQueue.queue.shift();if(e)try{this.processRequest(e),await new Promise(e=>setTimeout(e,300))}catch(e){this.client.logger.warn(e)}}this.requestQueue.state=tW.idle},this.processRequest=e=>{let{topic:t,payload:i}=e,s=i.method;if(!this.shouldIgnorePairingRequest({topic:t,requestMethod:s}))switch(s){case"wc_sessionPropose":return this.onSessionProposeRequest(t,i);case"wc_sessionSettle":return this.onSessionSettleRequest(t,i);case"wc_sessionUpdate":return this.onSessionUpdateRequest(t,i);case"wc_sessionExtend":return this.onSessionExtendRequest(t,i);case"wc_sessionPing":return this.onSessionPingRequest(t,i);case"wc_sessionDelete":return this.onSessionDeleteRequest(t,i);case"wc_sessionRequest":return this.onSessionRequest(t,i);case"wc_sessionEvent":return this.onSessionEventRequest(t,i);case"wc_sessionAuthenticate":return this.onSessionAuthenticateRequest(t,i);default:return this.client.logger.info(`Unsupported request method ${s}`)}},this.onRelayEventResponse=async e=>{let{topic:t,payload:i}=e,s=(await this.client.core.history.get(t,i.id)).request.method;switch(s){case"wc_sessionPropose":return this.onSessionProposeResponse(t,i);case"wc_sessionSettle":return this.onSessionSettleResponse(t,i);case"wc_sessionUpdate":return this.onSessionUpdateResponse(t,i);case"wc_sessionExtend":return this.onSessionExtendResponse(t,i);case"wc_sessionPing":return this.onSessionPingResponse(t,i);case"wc_sessionRequest":return this.onSessionRequestResponse(t,i);case"wc_sessionAuthenticate":return this.onSessionAuthenticateResponse(t,i);default:return this.client.logger.info(`Unsupported response method ${s}`)}},this.onRelayEventUnknownPayload=e=>{let{topic:t}=e,{message:i}=(0,$.kCb)("MISSING_OR_INVALID",`Decoded payload on topic ${t} is not identifiable as a JSON-RPC request or a response.`);throw Error(i)},this.shouldIgnorePairingRequest=e=>{let{topic:t,requestMethod:i}=e,s=this.expectedPairingMethodMap.get(t);return!(!s||s.includes(i))&&!!(s.includes("wc_sessionAuthenticate")&&this.client.events.listenerCount("session_authenticate")>0)},this.onSessionProposeRequest=async(e,t)=>{let{params:i,id:s}=t;try{this.isValidConnect(t7({},t.params));let r=i.expiryTimestamp||(0,$.gn4)(tY.wc_sessionPropose.req.ttl),n=t7({id:s,pairingTopic:e,expiryTimestamp:r},i);await this.setProposal(s,n);let a=(0,$.rjm)(JSON.stringify(t)),o=await this.getVerifyContext(a,n.proposer.metadata);this.client.events.emit("session_proposal",{id:s,params:n,verifyContext:o})}catch(t){await this.sendError({id:s,topic:e,error:t,rpcOpts:tY.wc_sessionPropose.autoReject}),this.client.logger.error(t)}},this.onSessionProposeResponse=async(e,t)=>{let{id:i}=t;if((0,K.isJsonRpcResult)(t)){let{result:s}=t;this.client.logger.trace({type:"method",method:"onSessionProposeResponse",result:s});let r=this.client.proposal.get(i);this.client.logger.trace({type:"method",method:"onSessionProposeResponse",proposal:r});let n=r.proposer.publicKey;this.client.logger.trace({type:"method",method:"onSessionProposeResponse",selfPublicKey:n});let a=s.responderPublicKey;this.client.logger.trace({type:"method",method:"onSessionProposeResponse",peerPublicKey:a});let o=await this.client.core.crypto.generateSharedKey(n,a);this.client.logger.trace({type:"method",method:"onSessionProposeResponse",sessionTopic:o});let h=await this.client.core.relayer.subscribe(o);this.client.logger.trace({type:"method",method:"onSessionProposeResponse",subscriptionId:h}),await this.client.core.pairing.activate({topic:e})}else if((0,K.isJsonRpcError)(t)){await this.client.proposal.delete(i,(0,$.D6H)("USER_DISCONNECTED"));let e=(0,$.E0T)("session_connect");if(0===this.events.listenerCount(e))throw Error(`emitting ${e} without any listeners, 954`);this.events.emit((0,$.E0T)("session_connect"),{error:t.error})}},this.onSessionSettleRequest=async(e,t)=>{let{id:i,params:s}=t;try{this.isValidSessionSettleRequest(s);let{relay:i,controller:r,expiry:n,namespaces:a,sessionProperties:o,sessionConfig:h}=t.params,c=t7(t7({topic:e,relay:i,expiry:n,namespaces:a,acknowledged:!0,pairingTopic:"",requiredNamespaces:{},optionalNamespaces:{},controller:r.publicKey,self:{publicKey:"",metadata:this.client.metadata},peer:{publicKey:r.publicKey,metadata:r.metadata}},o&&{sessionProperties:o}),h&&{sessionConfig:h});
1await this.sendResult({id:t.id,topic:e,result:!0,throwOnFailedPublish:!0});let l=(0,$.E0T)("session_connect");if(0===this.events.listenerCount(l))throw Error(`emitting ${l} without any listeners 997`);this.events.emit((0,$.E0T)("session_connect"),{session:c})}catch(t){await this.sendError({id:i,topic:e,error:t}),this.client.logger.error(t)}},this.onSessionSettleResponse=async(e,t)=>{let{id:i}=t;(0,K.isJsonRpcResult)(t)?(await this.client.session.update(e,{acknowledged:!0}),this.events.emit((0,$.E0T)("session_approve",i),{})):(0,K.isJsonRpcError)(t)&&(await this.client.session.delete(e,(0,$.D6H)("USER_DISCONNECTED")),this.events.emit((0,$.E0T)("session_approve",i),{error:t.error}))},this.onSessionUpdateRequest=async(e,t)=>{let{params:i,id:s}=t;try{let t=`${e}_session_update`,r=$.O6B.get(t);if(r&&this.isRequestOutOfSync(r,s)){this.client.logger.info(`Discarding out of sync request - ${s}`),this.sendError({id:s,topic:e,error:(0,$.D6H)("INVALID_UPDATE_REQUEST")});return}this.isValidUpdate(t7({topic:e},i));try{$.O6B.set(t,s),await this.client.session.update(e,{namespaces:i.namespaces}),await this.sendResult({id:s,topic:e,result:!0,throwOnFailedPublish:!0})}catch(e){throw $.O6B.delete(t),e}this.client.events.emit("session_update",{id:s,topic:e,params:i})}catch(t){await this.sendError({id:s,topic:e,error:t}),this.client.logger.error(t)}},this.isRequestOutOfSync=(e,t)=>parseInt(t.toString().slice(0,-3))<=parseInt(e.toString().slice(0,-3)),this.onSessionUpdateResponse=(e,t)=>{let{id:i}=t,s=(0,$.E0T)("session_update",i);if(0===this.events.listenerCount(s))throw Error(`emitting ${s} without any listeners`);(0,K.isJsonRpcResult)(t)?this.events.emit((0,$.E0T)("session_update",i),{}):(0,K.isJsonRpcError)(t)&&this.events.emit((0,$.E0T)("session_update",i),{error:t.error})},this.onSessionExtendRequest=async(e,t)=>{let{id:i}=t;try{this.isValidExtend({topic:e}),await this.setExpiry(e,(0,$.gn4)(tG)),await this.sendResult({id:i,topic:e,result:!0,throwOnFailedPublish:!0}),this.client.events.emit("session_extend",{id:i,topic:e})}catch(t){await this.sendError({id:i,topic:e,error:t}),this.client.logger.error(t)}},this.onSessionExtendResponse=(e,t)=>{let{id:i}=t,s=(0,$.E0T)("session_extend",i);if(0===this.events.listenerCount(s))throw Error(`emitting ${s} without any listeners`);(0,K.isJsonRpcResult)(t)?this.events.emit((0,$.E0T)("session_extend",i),{}):(0,K.isJsonRpcError)(t)&&this.events.emit((0,$.E0T)("session_extend",i),{error:t.error})},this.onSessionPingRequest=async(e,t)=>{let{id:i}=t;try{this.isValidPing({topic:e}),await this.sendResult({id:i,topic:e,result:!0,throwOnFailedPublish:!0}),this.client.events.emit("session_ping",{id:i,topic:e})}catch(t){await this.sendError({id:i,topic:e,error:t}),this.client.logger.error(t)}},this.onSessionPingResponse=(e,t)=>{let{id:i}=t,s=(0,$.E0T)("session_ping",i);if(0===this.events.listenerCount(s))throw Error(`emitting ${s} without any listeners`);setTimeout(()=>{(0,K.isJsonRpcResult)(t)?this.events.emit((0,$.E0T)("session_ping",i),{}):(0,K.isJsonRpcError)(t)&&this.events.emit((0,$.E0T)("session_ping",i),{error:t.error})},500)},this.onSessionDeleteRequest=async(e,t)=>{let{id:i}=t;try{this.isValidDisconnect({topic:e,reason:t.params}),await Promise.all([new Promise(t=>{this.client.core.relayer.once(e0.publish,async()=>{t(await this.deleteSession({topic:e,id:i}))})}),this.sendResult({id:i,topic:e,result:!0,throwOnFailedPublish:!0}),this.cleanupPendingSentRequestsForTopic({topic:e,error:(0,$.D6H)("USER_DISCONNECTED")})])}catch(e){this.client.logger.error(e)}},this.onSessionRequest=async(e,t)=>{var i;let{id:s,params:r}=t;try{await this.isValidRequest(t7({topic:e},r));let t=(0,$.rjm)(JSON.stringify((0,K.formatJsonRpcRequest)("wc_sessionRequest",r,s))),n=this.client.session.get(e),a=await this.getVerifyContext(t,n.peer.metadata),o={id:s,topic:e,params:r,verifyContext:a};await this.setPendingSessionRequest(o),null!=(i=this.client.signConfig)&&i.disableRequestQueue?this.emitSessionRequest(o):(this.addSessionRequestToSessionRequestQueue(o),this.processSessionRequestQueue())}catch(t){await this.sendError({id:s,topic:e,error:t}),this.client.logger.error(t)}},this.onSessionRequestResponse=(e,t)=>{let{id:i}=t,s=(0,$.E0T)("session_request",i);if(0===this.events.listenerCount(s))throw Error(`emitting ${s} without any listeners`);(0,K.isJsonRpcResult)(t)?this.events.emit((0,$.E0T)("session_request",i),{result:t.result}):(0,K.isJsonRpcError)(t)&&this.events.emit((0,$.E0T)("session_request",i),{error:t.error})},this.onSessionEventRequest=async(e,t)=>{let{id:i,params:s}=t;try{let t=`${e}_session_event_${s.event.name}`,r=$.O6B.get(t);if(r&&this.isRequestOutOfSync(r,i)){this.client.logger.info(`Discarding out of sync request - ${i}`);return}this.isValidEmit(t7({topic:e},s)),this.client.events.emit("session_event",{id:i,topic:e,params:s}),$.O6B.set(t,i)}
1catch(t){await this.sendError({id:i,topic:e,error:t}),this.client.logger.error(t)}},this.onSessionAuthenticateResponse=(e,t)=>{let{id:i}=t;this.client.logger.trace({type:"method",method:"onSessionAuthenticateResponse",topic:e,payload:t}),(0,K.isJsonRpcResult)(t)?this.events.emit((0,$.E0T)("session_request",i),{result:t.result}):(0,K.isJsonRpcError)(t)&&this.events.emit((0,$.E0T)("session_request",i),{error:t.error})},this.onSessionAuthenticateRequest=async(e,t)=>{try{let{requester:i,authPayload:s,expiryTimestamp:r}=t.params,n=(0,$.rjm)(JSON.stringify(t)),a=await this.getVerifyContext(n,this.client.metadata),o={requester:i,pairingTopic:e,id:t.id,authPayload:s,verifyContext:a,expiryTimestamp:r};await this.setAuthRequest(t.id,{request:o,pairingTopic:e}),this.client.events.emit("session_authenticate",{topic:e,params:t.params,id:t.id})}catch(n){this.client.logger.error(n);let i=t.params.requester.publicKey,s=await this.client.core.crypto.generateKeyPair(),r={type:$.rVF,receiverPublicKey:i,senderPublicKey:s};await this.sendError({id:t.id,topic:e,error:n,encodeOpts:r,rpcOpts:tY.wc_sessionAuthenticate.autoReject})}},this.addSessionRequestToSessionRequestQueue=e=>{this.sessionRequestQueue.queue.push(e)},this.cleanupAfterResponse=e=>{this.deletePendingSessionRequest(e.response.id,{message:"fulfilled",code:0}),setTimeout(()=>{this.sessionRequestQueue.state=tW.idle,this.processSessionRequestQueue()},(0,V.toMiliseconds)(this.requestQueueDelay))},this.cleanupPendingSentRequestsForTopic=({topic:e,error:t})=>{let i=this.client.core.history.pending;i.length>0&&i.filter(t=>t.topic===e&&"wc_sessionRequest"===t.request.method).forEach(e=>{let i=e.request.id,s=(0,$.E0T)("session_request",i);if(0===this.events.listenerCount(s))throw Error(`emitting ${s} without any listeners`);this.events.emit((0,$.E0T)("session_request",e.request.id),{error:t})})},this.processSessionRequestQueue=()=>{if(this.sessionRequestQueue.state===tW.active){this.client.logger.info("session request queue is already active.");return}let e=this.sessionRequestQueue.queue[0];if(!e){this.client.logger.info("session request queue is empty.");return}try{this.sessionRequestQueue.state=tW.active,this.emitSessionRequest(e)}catch(e){this.client.logger.error(e)}},this.emitSessionRequest=e=>{this.client.events.emit("session_request",e)},this.onPairingCreated=e=>{if(e.methods&&this.expectedPairingMethodMap.set(e.topic,e.methods),e.active)return;let t=this.client.proposal.getAll().find(t=>t.pairingTopic===e.topic);
1t&&this.onSessionProposeRequest(e.topic,(0,K.formatJsonRpcRequest)("wc_sessionPropose",{requiredNamespaces:t.requiredNamespaces,optionalNamespaces:t.optionalNamespaces,relays:t.relays,proposer:t.proposer,sessionProperties:t.sessionProperties},t.id))},this.isValidConnect=async e=>{if(!(0,$.EJd)(e)){let{message:t}=(0,$.kCb)("MISSING_OR_INVALID",`connect() params: ${JSON.stringify(e)}`);throw Error(t)}let{pairingTopic:t,requiredNamespaces:i,optionalNamespaces:s,sessionProperties:r,relays:n}=e;if((0,$.o8e)(t)||await this.isValidPairingTopic(t),!(0,$.PMr)(n,!0)){let{message:e}=(0,$.kCb)("MISSING_OR_INVALID",`connect() relays: ${n}`);throw Error(e)}(0,$.o8e)(i)||0===(0,$.L5o)(i)||this.validateNamespaces(i,"requiredNamespaces"),(0,$.o8e)(s)||0===(0,$.L5o)(s)||this.validateNamespaces(s,"optionalNamespaces"),(0,$.o8e)(r)||this.validateSessionProps(r,"sessionProperties")},this.validateNamespaces=(e,t)=>{let i=(0,$.naP)(e,"connect()",t);if(i)throw Error(i.message)},this.isValidApprove=async e=>{if(!(0,$.EJd)(e))throw Error((0,$.kCb)("MISSING_OR_INVALID",`approve() params: ${e}`).message);let{id:t,namespaces:i,relayProtocol:s,sessionProperties:r}=e;this.checkRecentlyDeleted(t),await this.isValidProposalId(t);let n=this.client.proposal.get(t),a=(0,$.ing)(i,"approve()");if(a)throw Error(a.message);let o=(0,$.rFo)(n.requiredNamespaces,i,"approve()");if(o)throw Error(o.message);if(!(0,$.M_r)(s,!0)){let{message:e}=(0,$.kCb)("MISSING_OR_INVALID",`approve() relayProtocol: ${s}`);throw Error(e)}(0,$.o8e)(r)||this.validateSessionProps(r,"sessionProperties")},this.isValidReject=async e=>{if(!(0,$.EJd)(e)){let{message:t}=(0,$.kCb)("MISSING_OR_INVALID",`reject() params: ${e}`);throw Error(t)}let{id:t,reason:i}=e;if(this.checkRecentlyDeleted(t),await this.isValidProposalId(t),!(0,$.H4H)(i)){let{message:e}=(0,$.kCb)("MISSING_OR_INVALID",`reject() reason: ${JSON.stringify(i)}`);throw Error(e)}},this.isValidSessionSettleRequest=e=>{if(!(0,$.EJd)(e)){let{message:t}=(0,$.kCb)("MISSING_OR_INVALID",`onSessionSettleRequest() params: ${e}`);throw Error(t)}let{relay:t,controller:i,namespaces:s,expiry:r}=e;if(!(0,$.Z26)(t)){let{message:e}=(0,$.kCb)("MISSING_OR_INVALID","onSessionSettleRequest() relay protocol should be a string");throw Error(e)}let n=(0,$.DdM)(i,"onSessionSettleRequest()");if(n)throw Error(n.message);let a=(0,$.ing)(s,"onSessionSettleRequest()");if(a)throw Error(a.message);if((0,$.BwD)(r)){let{message:e}=(0,$.kCb)("EXPIRED","onSessionSettleRequest()");throw Error(e)}},this.isValidUpdate=async e=>{if(!(0,$.EJd)(e)){let{message:t}=(0,$.kCb)("MISSING_OR_INVALID",`update() params: ${e}`);throw Error(t)}let{topic:t,namespaces:i}=e;this.checkRecentlyDeleted(t),await this.isValidSessionTopic(t);let s=this.client.session.get(t),r=(0,$.ing)(i,"update()");if(r)throw Error(r.message);let n=(0,$.rFo)(s.requiredNamespaces,i,"update()");if(n)throw Error(n.message)},this.isValidExtend=async e=>{if(!(0,$.EJd)(e)){let{message:t}=(0,$.kCb)("MISSING_OR_INVALID",`extend() params: ${e}`);throw Error(t)}let{topic:t}=e;this.checkRecentlyDeleted(t),await this.isValidSessionTopic(t)},this.isValidRequest=async e=>{if(!(0,$.EJd)(e)){let{message:t}=(0,$.kCb)("MISSING_OR_INVALID",`request() params: ${e}`);throw Error(t)}let{topic:t,request:i,chainId:s,expiry:r}=e;this.checkRecentlyDeleted(t),await this.isValidSessionTopic(t);let{namespaces:n}=this.client.session.get(t);if(!(0,$.p8o)(n,s)){let{message:e}=(0,$.kCb)("MISSING_OR_INVALID",`request() chainId: ${s}`);throw Error(e)}if(!(0,$.hHR)(i)){let{message:e}=(0,$.kCb)("MISSING_OR_INVALID",`request() ${JSON.stringify(i)}`);throw Error(e)}if(!(0,$.alS)(n,s,i.method)){let{message:e}=(0,$.kCb)("MISSING_OR_INVALID",`request() method: ${i.method}`);throw Error(e)}if(r&&!(0,$.ONw)(r,tQ)){let{message:e}=(0,$.kCb)("MISSING_OR_INVALID",`request() expiry: ${r}. Expiry must be a number (in seconds) between ${tQ.min} and ${tQ.max}`);throw Error(e)}},this.isValidRespond=async e=>{var t;if(!(0,$.EJd)(e)){let{message:t}=(0,$.kCb)("MISSING_OR_INVALID",`respond() params: ${e}`);throw Error(t)}let{topic:i,response:s}=e;try{await this.isValidSessionTopic(i)}catch(i){throw null!=(t=e?.response)&&t.id&&this.cleanupAfterResponse(e),i}if(!(0,$.JTI)(s)){let{message:e}=(0,$.kCb)("MISSING_OR_INVALID",`respond() response: ${JSON.stringify(s)}`);throw Error(e)}},this.isValidPing=async e=>{if(!(0,$.EJd)(e)){let{message:t}=(0,$.kCb)("MISSING_OR_INVALID",`ping() params: ${e}`);throw Error(t)}let{topic:t}=e;await this.isValidSessionOrPairingTopic(t)},this.isValidEmit=async e=>{if(!(0,$.EJd)(e)){let{message:t}=(0,$.kCb)("MISSING_OR_INVALID",`emit() params: ${e}`);throw Error(t)}
1let{topic:t,event:i,chainId:s}=e;await this.isValidSessionTopic(t);let{namespaces:r}=this.client.session.get(t);if(!(0,$.p8o)(r,s)){let{message:e}=(0,$.kCb)("MISSING_OR_INVALID",`emit() chainId: ${s}`);throw Error(e)}if(!(0,$.nfW)(i)){let{message:e}=(0,$.kCb)("MISSING_OR_INVALID",`emit() event: ${JSON.stringify(i)}`);throw Error(e)}if(!(0,$.B95)(r,s,i.name)){let{message:e}=(0,$.kCb)("MISSING_OR_INVALID",`emit() event: ${JSON.stringify(i)}`);throw Error(e)}},this.isValidDisconnect=async e=>{if(!(0,$.EJd)(e)){let{message:t}=(0,$.kCb)("MISSING_OR_INVALID",`disconnect() params: ${e}`);throw Error(t)}let{topic:t}=e;await this.isValidSessionOrPairingTopic(t)},this.isValidAuthenticate=e=>{let{chains:t,uri:i,domain:s,nonce:r}=e;if(!Array.isArray(t)||0===t.length)throw Error("chains is required and must be a non-empty array");if(!(0,$.M_r)(i,!1))throw Error("uri is required parameter");if(!(0,$.M_r)(s,!1))throw Error("domain is required parameter");if(!(0,$.M_r)(r,!1))throw Error("nonce is required parameter");if([...new Set(t.map(e=>(0,$.DQe)(e).namespace))].length>1)throw Error("Multi-namespace requests are not supported. Please request single namespace only.");let{namespace:n}=(0,$.DQe)(t[0]);if("eip155"!==n)throw Error("Only eip155 namespace is supported for authenticated sessions. Please use .connect() for non-eip155 chains.")},this.getVerifyContext=async(e,t)=>{let i={verified:{verifyUrl:t.verifyUrl||te,validation:"UNKNOWN",origin:t.url||""}};try{let s=await this.client.core.verify.resolve({attestationId:e,verifyUrl:t.verifyUrl});s&&(i.verified.origin=s.origin,i.verified.isScam=s.isScam,i.verified.validation=s.origin===new URL(t.url).origin?"VALID":"INVALID")}catch(e){this.client.logger.info(e)}return this.client.logger.info(`Verify context: ${JSON.stringify(i)}`),i},this.validateSessionProps=(e,t)=>{Object.values(e).forEach(e=>{if(!(0,$.M_r)(e,!1)){let{message:i}=(0,$.kCb)("MISSING_OR_INVALID",`${t} must be in Record<string, string> format. Received: ${JSON.stringify(e)}`);throw Error(i)}})},this.getPendingAuthRequest=e=>{let t=this.client.auth.requests.get(e);return"object"==typeof t?t:void 0},this.addToRecentlyDeleted=(e,t)=>{if(this.recentlyDeletedMap.set(e,t),this.recentlyDeletedMap.size>=this.recentlyDeletedLimit){let e=0,t=this.recentlyDeletedLimit/2;for(let i of this.recentlyDeletedMap.keys()){if(e++>=t)break;this.recentlyDeletedMap.delete(i)}}},this.checkRecentlyDeleted=e=>{let t=this.recentlyDeletedMap.get(e);if(t){let{message:i}=(0,$.kCb)("MISSING_OR_INVALID",`Record was recently deleted - ${t}: ${e}`);throw Error(i)}}}async isInitialized(){if(!this.initialized){let{message:e}=(0,$.kCb)("NOT_INITIALIZED",this.name);throw Error(e)}await this.client.core.relayer.confirmOnlineStateOrThrow()}registerRelayerEvents(){this.client.core.relayer.on(e0.message,async e=>{let{topic:t,message:i}=e,{publicKey:s}=this.client.auth.authKeys.keys.includes(t0)?this.client.auth.authKeys.get(t0):{responseTopic:void 0,publicKey:void 0},r=await this.client.core.crypto.decode(t,i,{receiverPublicKey:s});try{(0,K.isJsonRpcRequest)(r)?(this.client.core.history.set(t,r),this.onRelayEventRequest({topic:t,payload:r})):(0,K.isJsonRpcResponse)(r)?(await this.client.core.history.resolve(r),await this.onRelayEventResponse({topic:t,payload:r}),this.client.core.history.delete(t,r.id)):this.onRelayEventUnknownPayload({topic:t,payload:r})}catch(e){this.client.logger.error(e)}})}registerExpirerEvents(){this.client.core.expirer.on(e7.expired,async e=>{let{topic:t,id:i}=(0,$.iPz)(e.target);return i&&this.client.pendingRequest.keys.includes(i)?await this.deletePendingSessionRequest(i,(0,$.kCb)("EXPIRED"),!0):i&&this.client.auth.requests.keys.includes(i)?await this.deletePendingAuthRequest(i,(0,$.kCb)("EXPIRED"),!0):void(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(e3.create,e=>this.onPairingCreated(e)),this.client.core.pairing.events.on(e3.delete,e=>{this.addToRecentlyDeleted(e.topic,"pairing")})}isValidPairingTopic(e){if(!(0,$.M_r)(e,!1)){let{message:t}=(0,$.kCb)("MISSING_OR_INVALID",`pairing topic should be a string: ${e}`);throw Error(t)}if(!this.client.core.pairing.pairings.keys.includes(e)){let{message:t}=(0,$.kCb)("NO_MATCHING_KEY",`pairing topic doesn't exist: ${e}`);throw Error(t)}if((0,$.BwD)(this.client.core.pairing.pairings.get(e).expiry)){let{message:t}=(0,$.kCb)("EXPIRED",`pairing topic: ${e}`);throw Error(t)}}async isValidSessionTopic(e){if(!(0,$.M_r)(e,!1)){let{message:t}=(0,$.kCb)("MISSING_OR_INVALID",`session topic should be a string: ${e}`);throw Error(t)}if(this.checkRecentlyDeleted(e),!this.client.session.keys.includes(e)){let{message:t}=(0,$.kCb)("NO_MATCHING_KEY",`session topic doesn't exist: ${e}`);throw Error(t)}if((0,$.BwD)(this.client.session.get(e).expiry)){await this.deleteSession({topic:e});let{message:t}=(0,$.kCb)("EXPIRED",`session topic: ${e}`);throw Error(t)}if(!this.client.core.crypto.keychain.has(e)){let{message:t}=(0,$.kCb)("MISSING_OR_INVALID",`session topic does not exist in keychain: ${e}`);throw await this.deleteSession({topic:e}),Error(t)}}async isValidSessionOrPairingTopic(e){if(this.checkRecentlyDeleted(e),this.client.session.keys.includes(e))await this.isValidSessionTopic(e);else if(this.client.core.pairing.pairings.keys.includes(e))this.isValidPairingTopic(e);else if((0,$.M_r)(e,!1)){let{message:t}=(0,$.kCb)("NO_MATCHING_KEY",`session or pairing topic doesn't exist: ${e}`);throw Error(t)}else{let{message:t}=(0,$.kCb)("MISSING_OR_INVALID",`session or pairing topic should be a string: ${e}`);throw Error(t)}}async isValidProposalId(e){if(!(0,$.Q01)(e)){let{message:t}=(0,$.kCb)("MISSING_OR_INVALID",`proposal id should be a number: ${e}`);throw Error(t)}if(!this.client.proposal.keys.includes(e)){let{message:t}=(0,$.kCb)("NO_MATCHING_KEY",`proposal id doesn't exist: ${e}`);throw Error(t)}if((0,$.BwD)(this.client.proposal.get(e).expiryTimestamp)){await this.deleteProposal(e);let{message:t}=(0,$.kCb)("EXPIRED",`proposal id: ${e}`);throw Error(t)}}}class it extends tx{constructor(e,t){super(e,t,"proposal",tH),this.core=e,this.logger=t}}class ii extends tx{constructor(e,t){super(e,t,"session",tH),this.core=e,this.logger=t}}class is extends tx{constructor(e,t){super(e,t,"request",tH,e=>e.id),this.core=e,this.logger=t}}class ir extends tx{constructor(e,t){super(e,t,"authKeys",tX,()=>t0),this.core=e,this.logger=t}}class ia extends tx{constructor(e,t){super(e,t,"pairingTopics",tX),this.core=e,this.logger=t}}class io extends tx{constructor(e,t){super(e,t,"requests",tX,e=>e.id),this.core=e,this.logger=t}}class ih{constructor(e,t){this.core=e,this.logger=t,this.authKeys=new ir(this.core,this.logger),this.pairingTopics=new ia(this.core,this.logger),this.requests=new io(this.core,this.logger)}
1async init(){await this.authKeys.init(),await this.pairingTopics.init(),await this.requests.init()}}class ic extends k{constructor(e){super(e),this.protocol="wc",this.version=2,this.name=tJ.name,this.events=new h.EventEmitter,this.on=(e,t)=>this.events.on(e,t),this.once=(e,t)=>this.events.once(e,t),this.off=(e,t)=>this.events.off(e,t),this.removeListener=(e,t)=>this.events.removeListener(e,t),this.removeAllListeners=e=>this.events.removeAllListeners(e),this.connect=async e=>{try{return await this.engine.connect(e)}catch(e){throw this.logger.error(e.message),e}},this.pair=async e=>{try{return await this.engine.pair(e)}catch(e){throw this.logger.error(e.message),e}},this.approve=async e=>{try{return await this.engine.approve(e)}catch(e){throw this.logger.error(e.message),e}},this.reject=async e=>{try{return await this.engine.reject(e)}catch(e){throw this.logger.error(e.message),e}},this.update=async e=>{try{return await this.engine.update(e)}catch(e){throw this.logger.error(e.message),e}},this.extend=async e=>{try{return await this.engine.extend(e)}catch(e){throw this.logger.error(e.message),e}},this.request=async e=>{try{return await this.engine.request(e)}catch(e){throw this.logger.error(e.message),e}},this.respond=async e=>{try{return await this.engine.respond(e)}catch(e){throw this.logger.error(e.message),e}},this.ping=async e=>{try{return await this.engine.ping(e)}catch(e){throw this.logger.error(e.message),e}},this.emit=async e=>{try{return await this.engine.emit(e)}catch(e){throw this.logger.error(e.message),e}},this.disconnect=async e=>{try{return await this.engine.disconnect(e)}catch(e){throw this.logger.error(e.message),e}},this.find=e=>{try{return this.engine.find(e)}catch(e){throw this.logger.error(e.message),e}},this.getPendingSessionRequests=()=>{try{return this.engine.getPendingSessionRequests()}catch(e){throw this.logger.error(e.message),e}},this.authenticate=async e=>{try{return await this.engine.authenticate(e)}catch(e){throw this.logger.error(e.message),e}},this.formatAuthMessage=e=>{try{return this.engine.formatAuthMessage(e)}catch(e){throw this.logger.error(e.message),e}},this.approveSessionAuthenticate=async e=>{try{return await this.engine.approveSessionAuthenticate(e)}catch(e){throw this.logger.error(e.message),e}},this.rejectSessionAuthenticate=async e=>{try{return await this.engine.rejectSessionAuthenticate(e)}catch(e){throw this.logger.error(e.message),e}},this.name=e?.name||tJ.name,this.metadata=e?.metadata||(0,$.DaH)(),this.signConfig=e?.signConfig;let t="u">typeof e?.logger&&"string"!=typeof e?.logger?e.logger:(0,S.gw)((0,S.jI)({level:e?.logger||tJ.logger}));this.core=e?.core||new tj(e),this.logger=(0,S.Ep)(t,this.name),this.session=new ii(this.core,this.logger),this.proposal=new it(this.core,this.logger),this.pendingRequest=new is(this.core,this.logger),this.engine=new ie(this),this.auth=new ih(this.core,this.logger)}static async init(e){let t=new ic(e);return await t.initialize(),t}get context(){return(0,S.Fd)(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.engine.init(),await this.auth.init(),this.core.verify.init({verifyUrl:this.metadata.verifyUrl}),this.logger.info("SignClient Initialization Success")}catch(e){throw this.logger.info("SignClient Initialization Failure"),this.logger.error(e.message),e}}}var il=i(82857),ip=i(94665),id=i(97928),ig=i.n(id);let iu=[{name:"Rainbow",chains:[n.EN.EIP155],logo:"https://images.web3auth.io/login-rainbow.svg",mobile:{native:"rainbow:",universal:"https://rnbwapp.com"},desktop:{native:"",universal:""}},{name:"MetaMask",chains:[n.EN.EIP155],logo:"https://images.web3auth.io/login-metamask.svg",mobile:{native:"metamask:",universal:"https://metamask.app.link"},desktop:{native:"",universal:""}},{name:"Argent",chains:[n.EN.EIP155],logo:"https://images.web3auth.io/login-argent.svg",mobile:{native:"argent://",universal:"https://www.argent.xyz/app"},desktop:{native:"",universal:""}},{name:"Trust Wallet",chains:[n.EN.EIP155],logo:"https://images.web3auth.io/login-trust.
1svg",mobile:{native:"trust:",universal:"https://link.trustwallet.com"},desktop:{native:"",universal:""}},{name:"Zerion",chains:[n.EN.EIP155],logo:"https://images.web3auth.io/login-zerion.svg",mobile:{native:"zerion://",universal:"https://wallet.zerion.io"},desktop:{native:"",universal:""}}],iy=((s={}).ETH_SEND_TRANSACTION="eth_sendTransaction",s.ETH_SIGN="eth_sign",s.PERSONAL_SIGN="personal_sign",s.ETH_SIGN_TYPED_DATA="eth_signTypedData",s),im=((r={}).ETH_CHAIN_CHANGED="chainChanged",r.ETH_ACCOUNTS_CHANGED="accountsChanged",r),iw=e=>{let{document:t}=e,i=t.querySelector('head > meta[property="og:site_name"]');if(i)return i.content;let s=t.querySelector('head > meta[name="title"]');return s?s.content:t.title&&t.title.length>0?t.title:e.location.hostname};function ib(e){return new Promise((t,i)=>{try{let i=document.createElement("img");i.onload=()=>t(!0),i.onerror=()=>t(!1),i.src=e}catch(e){i(e)}})}async function iv(e){let{document:t}=e,i=t.querySelector('head > link[rel="shortcut icon"]');return i&&await ib(i.href)||(i=Array.from(t.querySelectorAll('head > link[rel="icon"]')).find(e=>!!e.href)||null)&&await ib(i.href)?i.href:null}let iE=async()=>({name:iw(window),icon:await iv(window)}),iI=e=>{let t=[];return e.forEach(e=>{let[i]=e.split(":");t.includes(i)||t.push(i)}),t},iS=e=>{if(e===n.EN.EIP155)return Object.values(iy);throw Error(`No default methods for namespace: ${e}`)},iR=e=>{if(e===n.EN.EIP155)return Object.values(im);throw Error(`No default events for namespace: ${e}`)},i_=e=>Object.fromEntries(iI(e).map(t=>[t,{methods:iS(t),chains:e.filter(e=>e.startsWith(t)),events:iR(t)}])),iP=async(e,t,i)=>{if(e===n.EN.EIP155){let s=await iE();return{adapterSettings:{walletConnectInitOptions:{projectId:i,relayUrl:"wss://relay.walletconnect.com",metadata:{name:s.name,description:s.name,url:window.location.origin,icons:[s.icon||""]}}},loginSettings:{optionalNamespaces:i_(t.map(t=>`${e}:${t}`))}}}throw Error(`Unsupported chain namespace: ${e}`)},iN=(e,t,i)=>{var s,r;let n=(null==i?void 0:i.requiredNamespaces)||{},a=`${e}:${t}`;return!!n[e].chains&&(null===(s=n[e].chains)||void 0===s?void 0:s.length)!==0&&!!(null===(r=n[e].chains)||void 0===r?void 0:r.includes(a))};class iT extends il.d{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};super(e),(0,o.Z)(this,"name",n.rW.WALLET_CONNECT_V2),(0,o.Z)(this,"adapterNamespace",n.yk.EIP155),(0,o.Z)(this,"currentChainNamespace",n.EN.EIP155),(0,o.Z)(this,"type",n.hN.EXTERNAL),(0,o.Z)(this,"adapterOptions",void 0),(0,o.Z)(this,"status",n.MP.NOT_READY),(0,o.Z)(this,"adapterData",{uri:"",extensionAdapters:iu}),(0,o.Z)(this,"connector",null),(0,o.Z)(this,"activeSession",null),(0,o.Z)(this,"wcProvider",null),this.adapterOptions=(0,a.Z)({},e)}get connected(){return!!this.activeSession}get provider(){return this.status!==n.MP.NOT_READY&&this.wcProvider?this.wcProvider:null}set provider(e){throw Error("Not implemented")}async init(e){var t,i,s;await super.init(),super.checkInitializationRequirements();let r=null===(t=this.adapterOptions.adapterSettings)||void 0===t||null===(t=t.walletConnectInitOptions)||void 0===t?void 0:t.projectId;if(!r)throw n.Ty.invalidParams("Wallet connect project id is required in wallet connect v2 adapter");let a=await iP(null===(i=this.chainConfig)||void 0===i?void 0:i.chainNamespace,[parseInt(null===(s=this.chainConfig)||void 0===s?void 0:s.chainId,16)],r);this.adapterOptions.loginSettings||(this.adapterOptions.loginSettings=a.loginSettings),this.adapterOptions.adapterSettings=ig()(a.adapterSettings,this.adapterOptions.adapterSettings);let{adapterSettings:o}=this.adapterOptions;if(this.connector=await ic.init(null==o?void 0:o.walletConnectInitOptions),this.wcProvider=new ip.G2({config:{chainConfig:this.chainConfig},connector:this.connector}),this.emit(n.n2.READY,n.rW.WALLET_CONNECT_V2),this.status=n.MP.READY,n.cM.debug("initializing wallet connect v2 adapter"),e.autoConnect){if(await this.checkForPersistedSession(),this.connected){this.rehydrated=!0;try{await this.onConnectHandler()}catch(e){n.cM.error("wallet auto connect",e),this.emit(n.n2.ERRORED,e)}}
1else this.status=n.MP.NOT_READY,this.emit(n.n2.CACHE_CLEAR)}}async connect(){if(super.checkConnectionRequirements(),!this.connector)throw n.Ty.notReady("Wallet adapter is not ready yet");try{if(this.connected)return await this.onConnectHandler(),this.provider;return this.status!==n.MP.CONNECTING&&await this.createNewSession(),this.provider}catch(e){throw n.cM.error("Wallet connect v2 adapter error while connecting",e),this.status=n.MP.READY,this.rehydrated=!0,this.emit(n.n2.ERRORED,e),e instanceof n.up?e:n.RM.connectionError(`Failed to login with wallet connect: ${(null==e?void 0:e.message)||""}`)}}async addChain(e){var t;let i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(super.checkAddChainRequirements(e,i),!iN(this.currentChainNamespace,parseInt(e.chainId,16),this.adapterOptions.loginSettings))throw n.XM.chainIDNotAllowed(`Unsupported chainID: ${e.chainId}`);await (null===(t=this.wcProvider)||void 0===t?void 0:t.addChain(e)),this.addChainConfig(e)}async switchChain(e){var t;let i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(super.checkSwitchChainRequirements(e,i),!iN(this.currentChainNamespace,parseInt(e.chainId,16),this.adapterOptions.loginSettings))throw n.XM.chainIDNotAllowed(`Unsupported chainID: ${e.chainId}`);await (null===(t=this.wcProvider)||void 0===t?void 0:t.switchChain({chainId:e.chainId})),this.setAdapterSettings({chainConfig:this.getChainConfig(e.chainId)})}async getUserInfo(){if(!this.connected)throw n.RM.notConnectedError("Not connected with wallet, Please login/connect first");return{}}async disconnect(){var e,t;let i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{cleanup:!1};await super.disconnectSession();let{cleanup:s}=i;if(!this.connector||!this.connected||!(null!==(e=this.activeSession)&&void 0!==e&&e.topic))throw n.RM.notConnectedError("Not connected with wallet");await this.connector.disconnect({topic:null===(t=this.activeSession)||void 0===t?void 0:t.topic,reason:(0,$.D6H)("USER_DISCONNECTED")}),this.rehydrated=!1,s?(this.connector=null,this.status=n.MP.NOT_READY,this.wcProvider=null):this.status=n.MP.READY,this.activeSession=null,await super.disconnect()}cleanupPendingPairings(){if(!this.connector)throw n.Ty.notReady("Wallet adapter is not ready yet");let e=this.connector.pairing.getAll({active:!1});(0,$.qt8)(e)&&e.forEach(e=>{this.connector&&this.connector.pairing.delete(e.topic,(0,$.D6H)("USER_DISCONNECTED"))})}async checkForPersistedSession(){if(!this.connector)throw n.Ty.notReady("Wallet adapter is not ready yet");if(this.connector.session.length){let e=this.connector.session.keys.length-1;this.activeSession=this.connector.session.get(this.connector.session.keys[e])}return this.activeSession}async createNewSession(){var e,t,i,s;let r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{forceNewSession:!1};try{if(!this.connector)throw n.Ty.notReady("Wallet adapter is not ready yet");if(!this.adapterOptions.loginSettings)throw n.Ty.notReady("login settings are not set yet");this.status=n.MP.CONNECTING,this.emit(n.n2.CONNECTING,{adapter:n.rW.WALLET_CONNECT_V2}),r.forceNewSession&&null!==(e=this.activeSession)&&void 0!==e&&e.topic&&await this.connector.disconnect({topic:null===(i=this.activeSession)||void 0===i?void 0:i.topic,reason:(0,$.D6H)("USER_DISCONNECTED")}),n.cM.debug("creating new session for web3auth wallet connect");let{uri:s,approval:a}=await this.connector.connect(this.adapterOptions.loginSettings),o=null===(t=this.adapterOptions)||void 0===t||null===(t=t.adapterSettings)||void 0===t?void 0:t.qrcodeModal;if(s){if(o)try{await o.openModal({uri:s}),n.cM.debug("EVENT","QR Code Modal closed"),this.status=n.MP.READY,this.emit(n.n2.READY,n.rW.WALLET_CONNECT_V2)}catch(e){n.cM.error("unable to open qr code modal")}else this.updateAdapterData({uri:s,extensionAdapters:iu})}n.cM.info("awaiting session approval from wallet");let h=await a();this.activeSession=h,await this.onConnectHandler(),o&&o.closeModal()}catch(e){if(null!==(s=e.message)&&void 0!==s&&s.toLowerCase().includes("proposal expired")){if(n.cM.info("current adapter status: ",this.status),this.status===n.MP.CONNECTING)return n.cM.info("retrying to create new wallet connect session since proposal expired"),this.createNewSession({forceNewSession:!0});if(this.status===n.MP.READY){n.cM.info("ignoring proposal expired error since some other adapter is connected");return}}throw n.cM.error("error while creating new wallet connect session",e),this.emit
1(n.n2.ERRORED,e),e}}async onConnectHandler(){var e;if(!this.connector||!this.wcProvider)throw n.Ty.notReady("Wallet adapter is not ready yet");if(!this.chainConfig)throw n.Ty.invalidParams("Chain config is not set");null!==(e=this.adapterOptions.adapterSettings)&&void 0!==e&&e.qrcodeModal&&(this.wcProvider=new ip.G2({config:{chainConfig:this.chainConfig,skipLookupNetwork:!0},connector:this.connector})),await this.wcProvider.setupProvider(this.connector),this.subscribeEvents(),this.cleanupPendingPairings(),this.status=n.MP.CONNECTED,this.emit(n.n2.CONNECTED,{adapter:n.rW.WALLET_CONNECT_V2,reconnected:this.rehydrated})}subscribeEvents(){if(!this.connector)throw n.Ty.notReady("Wallet adapter is not ready yet");this.connector.events.on("session_update",e=>{let{topic:t,params:i}=e;if(!this.connector)return;let{namespaces:s}=i,r=this.connector.session.get(t),n=(0,a.Z)((0,a.Z)({},r),{},{namespaces:s});this.activeSession=n}),this.connector.events.on("session_delete",()=>{this.disconnect()})}}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.