@walletconnect/ethereum-provider 2.12.2-rc-0 → 2.12.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.umd.js CHANGED
@@ -53,7 +53,7 @@
53
53
  LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
54
54
  OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
55
55
  PERFORMANCE OF THIS SOFTWARE.
56
- ***************************************************************************** */var r0=function(t,e){return r0=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,n){r.__proto__=n}||function(r,n){for(var i in n)n.hasOwnProperty(i)&&(r[i]=n[i])},r0(t,e)};function Vx(t,e){r0(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}var n0=function(){return n0=Object.assign||function(e){for(var r,n=1,i=arguments.length;n<i;n++){r=arguments[n];for(var o in r)Object.prototype.hasOwnProperty.call(r,o)&&(e[o]=r[o])}return e},n0.apply(this,arguments)};function Gx(t,e){var r={};for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&e.indexOf(n)<0&&(r[n]=t[n]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,n=Object.getOwnPropertySymbols(t);i<n.length;i++)e.indexOf(n[i])<0&&Object.prototype.propertyIsEnumerable.call(t,n[i])&&(r[n[i]]=t[n[i]]);return r}function Yx(t,e,r,n){var i=arguments.length,o=i<3?e:n===null?n=Object.getOwnPropertyDescriptor(e,r):n,c;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(t,e,r,n);else for(var l=t.length-1;l>=0;l--)(c=t[l])&&(o=(i<3?c(o):i>3?c(e,r,o):c(e,r))||o);return i>3&&o&&Object.defineProperty(e,r,o),o}function Jx(t,e){return function(r,n){e(r,n,t)}}function Qx(t,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(t,e)}function Zx(t,e,r,n){function i(o){return o instanceof r?o:new r(function(c){c(o)})}return new(r||(r=Promise))(function(o,c){function l(g){try{h(n.next(g))}catch(_){c(_)}}function f(g){try{h(n.throw(g))}catch(_){c(_)}}function h(g){g.done?o(g.value):i(g.value).then(l,f)}h((n=n.apply(t,e||[])).next())})}function Xx(t,e){var r={label:0,sent:function(){if(o[0]&1)throw o[1];return o[1]},trys:[],ops:[]},n,i,o,c;return c={next:l(0),throw:l(1),return:l(2)},typeof Symbol=="function"&&(c[Symbol.iterator]=function(){return this}),c;function l(h){return function(g){return f([h,g])}}function f(h){if(n)throw new TypeError("Generator is already executing.");for(;r;)try{if(n=1,i&&(o=h[0]&2?i.return:h[0]?i.throw||((o=i.return)&&o.call(i),0):i.next)&&!(o=o.call(i,h[1])).done)return o;switch(i=0,o&&(h=[h[0]&2,o.value]),h[0]){case 0:case 1:o=h;break;case 4:return r.label++,{value:h[1],done:!1};case 5:r.label++,i=h[1],h=[0];continue;case 7:h=r.ops.pop(),r.trys.pop();continue;default:if(o=r.trys,!(o=o.length>0&&o[o.length-1])&&(h[0]===6||h[0]===2)){r=0;continue}if(h[0]===3&&(!o||h[1]>o[0]&&h[1]<o[3])){r.label=h[1];break}if(h[0]===6&&r.label<o[1]){r.label=o[1],o=h;break}if(o&&r.label<o[2]){r.label=o[2],r.ops.push(h);break}o[2]&&r.ops.pop(),r.trys.pop();continue}h=e.call(t,r)}catch(g){h=[6,g],i=0}finally{n=o=0}if(h[0]&5)throw h[1];return{value:h[0]?h[1]:void 0,done:!0}}}function e9(t,e,r,n){n===void 0&&(n=r),t[n]=e[r]}function t9(t,e){for(var r in t)r!=="default"&&!e.hasOwnProperty(r)&&(e[r]=t[r])}function i0(t){var e=typeof Symbol=="function"&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&typeof t.length=="number")return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function mv(t,e){var r=typeof Symbol=="function"&&t[Symbol.iterator];if(!r)return t;var n=r.call(t),i,o=[],c;try{for(;(e===void 0||e-- >0)&&!(i=n.next()).done;)o.push(i.value)}catch(l){c={error:l}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(c)throw c.error}}return o}function r9(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(mv(arguments[e]));return t}function n9(){for(var t=0,e=0,r=arguments.length;e<r;e++)t+=arguments[e].length;for(var n=Array(t),i=0,e=0;e<r;e++)for(var o=arguments[e],c=0,l=o.length;c<l;c++,i++)n[i]=o[c];return n}function wc(t){return this instanceof wc?(this.v=t,this):new wc(t)}function i9(t,e,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n=r.apply(t,e||[]),i,o=[];return i={},c("next"),c("throw"),c("return"),i[Symbol.asyncIterator]=function(){return this},i;function c(E){n[E]&&(i[E]=function(A){return new Promise(function(S,U){o.push([E,A,S,U])>1||l(E,A)})})}function l(E,A){try{f(n[E](A))}catch(S){_(o[0][3],S)}}function f(E){E.value instanceof wc?Promise.resolve(E.value.v).then(h,g):_(o[0][2],E)}function h(E){l("next",E)}function g(E){l("throw",E)}function _(E,A){E(A),o.shift(),o.length&&l(o[0][0],o[0][1])}}function s9(t){var e,r;return e={},n("next"),n("throw",function(i){throw i}),n("return"),e[Symbol.iterator]=function(){return this},e;function n(i,o){e[i]=t[i]?function(c){return(r=!r)?{value:wc(t[i](c)),done:i==="return"}:o?o(c):c}:o}}function o9(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=t[Symbol.asyncIterator],r;return e?e.call(t):(t=typeof i0=="function"?i0(t):t[Symbol.iterator](),r={},n("next"),n("throw"),n("return"),r[Symbol.asyncIterator]=function(){return this},r);function n(o){r[o]=t[o]&&function(c){return new Promise(function(l,f){c=t[o](c),i(l,f,c.done,c.value)})}}function i(o,c,l,f){Promise.resolve(f).then(function(h){o({value:h,done:l})},c)}}function a9(t,e){return Object.defineProperty?Object.defineProperty(t,"raw",{value:e}):t.raw=e,t}function c9(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)Object.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e}function l9(t){return t&&t.__esModule?t:{default:t}}function u9(t,e){if(!e.has(t))throw new TypeError("attempted to get private field on non-instance");return e.get(t)}function h9(t,e,r){if(!e.has(t))throw new TypeError("attempted to set private field on non-instance");return e.set(t,r),r}var f9=Object.freeze({__proto__:null,__extends:Vx,get __assign(){return n0},__rest:Gx,__decorate:Yx,__param:Jx,__metadata:Qx,__awaiter:Zx,__generator:Xx,__createBinding:e9,__exportStar:t9,__values:i0,__read:mv,__spread:r9,__spreadArrays:n9,__await:wc,__asyncGenerator:i9,__asyncDelegator:s9,__asyncValues:o9,__makeTemplateObject:a9,__importStar:c9,__importDefault:l9,__classPrivateFieldGet:u9,__classPrivateFieldSet:h9}),d9=$o(f9),ji={},vv;function p9(){if(vv)return ji;vv=1,Object.defineProperty(ji,"__esModule",{value:!0}),ji.isBrowserCryptoAvailable=ji.getSubtleCrypto=ji.getBrowerCrypto=void 0;function t(){return Fr?.crypto||Fr?.msCrypto||{}}ji.getBrowerCrypto=t;function e(){const n=t();return n.subtle||n.webkitSubtle}ji.getSubtleCrypto=e;function r(){return!!t()&&!!e()}return ji.isBrowserCryptoAvailable=r,ji}var ki={},wv;function g9(){if(wv)return ki;wv=1,Object.defineProperty(ki,"__esModule",{value:!0}),ki.isBrowser=ki.isNode=ki.isReactNative=void 0;function t(){return typeof document>"u"&&typeof navigator<"u"&&navigator.product==="ReactNative"}ki.isReactNative=t;function e(){return typeof process<"u"&&typeof process.versions<"u"&&typeof process.versions.node<"u"}ki.isNode=e;function r(){return!t()&&!e()}return ki.isBrowser=r,ki}(function(t){Object.defineProperty(t,"__esModule",{value:!0});const e=d9;e.__exportStar(p9(),t),e.__exportStar(g9(),t)})(gv);function us(t=3){const e=Date.now()*Math.pow(10,t),r=Math.floor(Math.random()*Math.pow(10,t));return e+r}function Js(t=6){return BigInt(us(t))}function ta(t,e,r){return{id:r||us(),jsonrpc:"2.0",method:t,params:e}}function Jl(t,e){return{id:t,jsonrpc:"2.0",result:e}}function Ql(t,e,r){return{id:t,jsonrpc:"2.0",error:m9(e,r)}}function m9(t,e){return typeof t>"u"?dv(hv):(typeof t=="string"&&(t=Object.assign(Object.assign({},dv(t0)),{message:t})),typeof e<"u"&&(t.data=e),Kx(t.code)&&(t=Wx(t.code)),t)}class v9{}class w9 extends v9{constructor(){super()}}class y9 extends w9{constructor(e){super()}}const b9="^https?:",_9="^wss?:";function E9(t){const e=t.match(new RegExp(/^\w+:/,"gi"));if(!(!e||!e.length))return e[0]}function yv(t,e){const r=E9(t);return typeof r>"u"?!1:new RegExp(e).test(r)}function bv(t){return yv(t,b9)}function _v(t){return yv(t,_9)}function A9(t){return new RegExp("wss?://localhost(:d{2,5})?").test(t)}function Ev(t){return typeof t=="object"&&"id"in t&&"jsonrpc"in t&&t.jsonrpc==="2.0"}function s0(t){return Ev(t)&&"method"in t}function Zl(t){return Ev(t)&&(_i(t)||Mn(t))}function _i(t){return"result"in t}function Mn(t){return"error"in t}class qi extends y9{constructor(e){super(e),this.events=new Dr.exports.EventEmitter,this.hasRegisteredEventListeners=!1,this.connection=this.setConnection(e),this.connection.connected&&this.registerEventListeners()}async connect(e=this.connection){await this.open(e)}async disconnect(){await this.close()}on(e,r){this.events.on(e,r)}once(e,r){this.events.once(e,r)}off(e,r){this.events.off(e,r)}removeListener(e,r){this.events.removeListener(e,r)}async request(e,r){return this.requestStrict(ta(e.method,e.params||[],e.id||Js().toString()),r)}async requestStrict(e,r){return new Promise(async(n,i)=>{if(!this.connection.connected)try{await this.open()}catch(o){i(o)}this.events.on(`${e.id}`,o=>{Mn(o)?i(o.error):n(o.result)});try{await this.connection.send(e,r)}catch(o){i(o)}})}setConnection(e=this.connection){return e}onPayload(e){this.events.emit("payload",e),Zl(e)?this.events.emit(`${e.id}`,e):this.events.emit("message",{type:e.method,data:e.params})}onClose(e){e&&e.code===3e3&&this.events.emit("error",new Error(`WebSocket connection closed abnormally with code: ${e.code} ${e.reason?`(${e.reason})`:""}`)),this.events.emit("disconnect")}async open(e=this.connection){this.connection===e&&this.connection.connected||(this.connection.connected&&this.close(),typeof e=="string"&&(await this.connection.open(e),e=this.connection),this.connection=this.setConnection(e),await this.connection.open(),this.registerEventListeners(),this.events.emit("connect"))}async close(){await this.connection.close()}registerEventListeners(){this.hasRegisteredEventListeners||(this.connection.on("payload",e=>this.onPayload(e)),this.connection.on("close",e=>this.onClose(e)),this.connection.on("error",e=>this.events.emit("error",e)),this.connection.on("register_error",e=>this.onClose()),this.hasRegisteredEventListeners=!0)}}const x9=()=>typeof WebSocket<"u"?WebSocket:typeof global<"u"&&typeof global.WebSocket<"u"?global.WebSocket:typeof window<"u"&&typeof window.WebSocket<"u"?window.WebSocket:typeof self<"u"&&typeof self.WebSocket<"u"?self.WebSocket:require("ws"),I9=()=>typeof WebSocket<"u"||typeof global<"u"&&typeof global.WebSocket<"u"||typeof window<"u"&&typeof window.WebSocket<"u"||typeof self<"u"&&typeof self.WebSocket<"u",Av=t=>t.split("?")[0],xv=10,S9=x9();class D9{constructor(e){if(this.url=e,this.events=new Dr.exports.EventEmitter,this.registering=!1,!_v(e))throw new Error(`Provided URL is not compatible with WebSocket connection: ${e}`);this.url=e}get connected(){return typeof this.socket<"u"}get connecting(){return this.registering}on(e,r){this.events.on(e,r)}once(e,r){this.events.once(e,r)}off(e,r){this.events.off(e,r)}removeListener(e,r){this.events.removeListener(e,r)}async open(e=this.url){await this.register(e)}async close(){return new Promise((e,r)=>{if(typeof this.socket>"u"){r(new Error("Connection already closed"));return}this.socket.onclose=n=>{this.onClose(n),e()},this.socket.close()})}async send(e){typeof this.socket>"u"&&(this.socket=await this.register());try{this.socket.send(Fi(e))}catch(r){this.onError(e.id,r)}}register(e=this.url){if(!_v(e))throw new Error(`Provided URL is not compatible with WebSocket connection: ${e}`);if(this.registering){const r=this.events.getMaxListeners();return(this.events.listenerCount("register_error")>=r||this.events.listenerCount("open")>=r)&&this.events.setMaxListeners(r+1),new Promise((n,i)=>{this.events.once("register_error",o=>{this.resetMaxListeners(),i(o)}),this.events.once("open",()=>{if(this.resetMaxListeners(),typeof this.socket>"u")return i(new Error("WebSocket connection is missing or invalid"));n(this.socket)})})}return this.url=e,this.registering=!0,new Promise((r,n)=>{const i=new URLSearchParams(e).get("origin"),o=gv.isReactNative()?{headers:{origin:i}}:{rejectUnauthorized:!A9(e)},c=new S9(e,[],o);I9()?c.onerror=l=>{const f=l;n(this.emitError(f.error))}:c.on("error",l=>{n(this.emitError(l))}),c.onopen=()=>{this.onOpen(c),r(c)}})}onOpen(e){e.onmessage=r=>this.onPayload(r),e.onclose=r=>this.onClose(r),this.socket=e,this.registering=!1,this.events.emit("open")}onClose(e){this.socket=void 0,this.registering=!1,this.events.emit("close",e)}onPayload(e){if(typeof e.data>"u")return;const r=typeof e.data=="string"?uc(e.data):e.data;this.events.emit("payload",r)}onError(e,r){const n=this.parseError(r),i=n.message||n.toString(),o=Ql(e,i);this.events.emit("payload",o)}parseError(e,r=this.url){return pv(e,Av(r),"WS")}resetMaxListeners(){this.events.getMaxListeners()>xv&&this.events.setMaxListeners(xv)}emitError(e){const r=this.parseError(new Error(e?.message||`WebSocket connection failed for host: ${Av(this.url)}`));return this.events.emit("register_error",r),r}}var o0={exports:{}};(function(t,e){var r=200,n="__lodash_hash_undefined__",i=1,o=2,c=9007199254740991,l="[object Arguments]",f="[object Array]",h="[object AsyncFunction]",g="[object Boolean]",_="[object Date]",E="[object Error]",A="[object Function]",S="[object GeneratorFunction]",U="[object Map]",W="[object Number]",Y="[object Null]",B="[object Object]",z="[object Promise]",P="[object Proxy]",F="[object RegExp]",j="[object Set]",m="[object String]",T="[object Symbol]",te="[object Undefined]",ee="[object WeakMap]",ne="[object ArrayBuffer]",fe="[object DataView]",d="[object Float32Array]",p="[object Float64Array]",b="[object Int8Array]",D="[object Int16Array]",O="[object Int32Array]",$="[object Uint8Array]",L="[object Uint8ClampedArray]",C="[object Uint16Array]",v="[object Uint32Array]",N=/[\\^$.*+?()[\]{}|]/g,oe=/^\[object .+?Constructor\]$/,pe=/^(?:0|[1-9]\d*)$/,x={};x[d]=x[p]=x[b]=x[D]=x[O]=x[$]=x[L]=x[C]=x[v]=!0,x[l]=x[f]=x[ne]=x[g]=x[fe]=x[_]=x[E]=x[A]=x[U]=x[W]=x[B]=x[F]=x[j]=x[m]=x[ee]=!1;var re=typeof Fr=="object"&&Fr&&Fr.Object===Object&&Fr,q=typeof self=="object"&&self&&self.Object===Object&&self,H=re||q||Function("return this")(),V=e&&!e.nodeType&&e,w=V&&!0&&t&&!t.nodeType&&t,k=w&&w.exports===V,ie=k&&re.process,he=function(){try{return ie&&ie.binding&&ie.binding("util")}catch{}}(),le=he&&he.isTypedArray;function Oe(K,Q){for(var de=-1,Ie=K==null?0:K.length,Vt=0,ot=[];++de<Ie;){var Zt=K[de];Q(Zt,de,K)&&(ot[Vt++]=Zt)}return ot}function Me(K,Q){for(var de=-1,Ie=Q.length,Vt=K.length;++de<Ie;)K[Vt+de]=Q[de];return K}function Se(K,Q){for(var de=-1,Ie=K==null?0:K.length;++de<Ie;)if(Q(K[de],de,K))return!0;return!1}function Pt(K,Q){for(var de=-1,Ie=Array(K);++de<K;)Ie[de]=Q(de);return Ie}function ze(K){return function(Q){return K(Q)}}function Ce(K,Q){return K.has(Q)}function Fe(K,Q){return K?.[Q]}function Ee(K){var Q=-1,de=Array(K.size);return K.forEach(function(Ie,Vt){de[++Q]=[Vt,Ie]}),de}function Ae(K,Q){return function(de){return K(Q(de))}}function Ge(K){var Q=-1,de=Array(K.size);return K.forEach(function(Ie){de[++Q]=Ie}),de}var ye=Array.prototype,xe=Function.prototype,Be=Object.prototype,be=H["__core-js_shared__"],Pe=xe.toString,je=Be.hasOwnProperty,Te=function(){var K=/[^.]+$/.exec(be&&be.keys&&be.keys.IE_PROTO||"");return K?"Symbol(src)_1."+K:""}(),$e=Be.toString,lt=RegExp("^"+Pe.call(je).replace(N,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Re=k?H.Buffer:void 0,Ne=H.Symbol,nr=H.Uint8Array,dt=Be.propertyIsEnumerable,Et=ye.splice,ir=Ne?Ne.toStringTag:void 0,It=Object.getOwnPropertySymbols,Ot=Re?Re.isBuffer:void 0,Vr=Ae(Object.keys,Object),Ye=_n(H,"DataView"),He=_n(H,"Map"),Rt=_n(H,"Promise"),Je=_n(H,"Set"),Ve=_n(H,"WeakMap"),Mt=_n(Object,"create"),Xe=Gi(Ye),et=Gi(He),Lt=Gi(Rt),tt=Gi(Je),Qe=Gi(Ve),Ft=Ne?Ne.prototype:void 0,Ze=Ft?Ft.valueOf:void 0;function ke(K){var Q=-1,de=K==null?0:K.length;for(this.clear();++Q<de;){var Ie=K[Q];this.set(Ie[0],Ie[1])}}function Ht(){this.__data__=Mt?Mt(null):{},this.size=0}function rt(K){var Q=this.has(K)&&delete this.__data__[K];return this.size-=Q?1:0,Q}function jt(K){var Q=this.__data__;if(Mt){var de=Q[K];return de===n?void 0:de}return je.call(Q,K)?Q[K]:void 0}function ti(K){var Q=this.__data__;return Mt?Q[K]!==void 0:je.call(Q,K)}function kt(K,Q){var de=this.__data__;return this.size+=this.has(K)?0:1,de[K]=Mt&&Q===void 0?n:Q,this}ke.prototype.clear=Ht,ke.prototype.delete=rt,ke.prototype.get=jt,ke.prototype.has=ti,ke.prototype.set=kt;function vt(K){var Q=-1,de=K==null?0:K.length;for(this.clear();++Q<de;){var Ie=K[Q];this.set(Ie[0],Ie[1])}}function Ln(){this.__data__=[],this.size=0}function Bn(K){var Q=this.__data__,de=bo(Q,K);if(de<0)return!1;var Ie=Q.length-1;return de==Ie?Q.pop():Et.call(Q,de,1),--this.size,!0}function Un(K){var Q=this.__data__,de=bo(Q,K);return de<0?void 0:Q[de][1]}function Fn(K){return bo(this.__data__,K)>-1}function jn(K,Q){var de=this.__data__,Ie=bo(de,K);return Ie<0?(++this.size,de.push([K,Q])):de[Ie][1]=Q,this}vt.prototype.clear=Ln,vt.prototype.delete=Bn,vt.prototype.get=Un,vt.prototype.has=Fn,vt.prototype.set=jn;function xr(K){var Q=-1,de=K==null?0:K.length;for(this.clear();++Q<de;){var Ie=K[Q];this.set(Ie[0],Ie[1])}}function Di(){this.size=0,this.__data__={hash:new ke,map:new(He||vt),string:new ke}}function fo(K){var Q=Cs(this,K).delete(K);return this.size-=Q?1:0,Q}function Ci(K){return Cs(this,K).get(K)}function po(K){return Cs(this,K).has(K)}function go(K,Q){var de=Cs(this,K),Ie=de.size;return de.set(K,Q),this.size+=de.size==Ie?0:1,this}xr.prototype.clear=Di,xr.prototype.delete=fo,xr.prototype.get=Ci,xr.prototype.has=po,xr.prototype.set=go;function Oi(K){var Q=-1,de=K==null?0:K.length;for(this.__data__=new xr;++Q<de;)this.add(K[Q])}function Ss(K){return this.__data__.set(K,n),this}function Ds(K){return this.__data__.has(K)}Oi.prototype.add=Oi.prototype.push=Ss,Oi.prototype.has=Ds;function Gr(K){var Q=this.__data__=new vt(K);this.size=Q.size}function mo(){this.__data__=new vt,this.size=0}function vo(K){var Q=this.__data__,de=Q.delete(K);return this.size=Q.size,de}function wo(K){return this.__data__.get(K)}function yo(K){return this.__data__.has(K)}function Ru(K,Q){var de=this.__data__;if(de instanceof vt){var Ie=de.__data__;if(!He||Ie.length<r-1)return Ie.push([K,Q]),this.size=++de.size,this;de=this.__data__=new xr(Ie)}return de.set(K,Q),this.size=de.size,this}Gr.prototype.clear=mo,Gr.prototype.delete=vo,Gr.prototype.get=wo,Gr.prototype.has=yo,Gr.prototype.set=Ru;function Lu(K,Q){var de=Sa(K),Ie=!de&&Gu(K),Vt=!de&&!Ie&&Hc(K),ot=!de&&!Ie&&!Vt&&Qu(K),Zt=de||Ie||Vt||ot,gr=Zt?Pt(K.length,String):[],St=gr.length;for(var Gt in K)(Q||je.call(K,Gt))&&!(Zt&&(Gt=="length"||Vt&&(Gt=="offset"||Gt=="parent")||ot&&(Gt=="buffer"||Gt=="byteLength"||Gt=="byteOffset")||zu(Gt,St)))&&gr.push(Gt);return gr}function bo(K,Q){for(var de=K.length;de--;)if(Vu(K[de][0],Q))return de;return-1}function qc(K,Q,de){var Ie=Q(K);return Sa(K)?Ie:Me(Ie,de(K))}function _o(K){return K==null?K===void 0?te:Y:ir&&ir in Object(K)?ku(K):Ud(K)}function zc(K){return Ao(K)&&_o(K)==l}function Eo(K,Q,de,Ie,Vt){return K===Q?!0:K==null||Q==null||!Ao(K)&&!Ao(Q)?K!==K&&Q!==Q:Bu(K,Q,de,Ie,Eo,Vt)}function Bu(K,Q,de,Ie,Vt,ot){var Zt=Sa(K),gr=Sa(Q),St=Zt?f:Pi(K),Gt=gr?f:Pi(Q);St=St==l?B:St,Gt=Gt==l?B:Gt;var fr=St==B,ln=Gt==B,mr=St==Gt;if(mr&&Hc(K)){if(!Hc(Q))return!1;Zt=!0,fr=!1}if(mr&&!fr)return ot||(ot=new Gr),Zt||Qu(K)?xa(K,Q,de,Ie,Vt,ot):Bd(K,Q,St,de,Ie,Vt,ot);if(!(de&i)){var Xt=fr&&je.call(K,"__wrapped__"),Yr=ln&&je.call(Q,"__wrapped__");if(Xt||Yr){var ri=Xt?K.value():K,kn=Yr?Q.value():Q;return ot||(ot=new Gr),Vt(ri,kn,de,Ie,ot)}}return mr?(ot||(ot=new Gr),ju(K,Q,de,Ie,Vt,ot)):!1}function Ld(K){if(!Ju(K)||Ku(K))return!1;var Q=Da(K)?lt:oe;return Q.test(Gi(K))}function Uu(K){return Ao(K)&&Yu(K.length)&&!!x[_o(K)]}function Fu(K){if(!Wu(K))return Vr(K);var Q=[];for(var de in Object(K))je.call(K,de)&&de!="constructor"&&Q.push(de);return Q}function xa(K,Q,de,Ie,Vt,ot){var Zt=de&i,gr=K.length,St=Q.length;if(gr!=St&&!(Zt&&St>gr))return!1;var Gt=ot.get(K);if(Gt&&ot.get(Q))return Gt==Q;var fr=-1,ln=!0,mr=de&o?new Oi:void 0;for(ot.set(K,Q),ot.set(Q,K);++fr<gr;){var Xt=K[fr],Yr=Q[fr];if(Ie)var ri=Zt?Ie(Yr,Xt,fr,Q,K,ot):Ie(Xt,Yr,fr,K,Q,ot);if(ri!==void 0){if(ri)continue;ln=!1;break}if(mr){if(!Se(Q,function(kn,Mi){if(!Ce(mr,Mi)&&(Xt===kn||Vt(Xt,kn,de,Ie,ot)))return mr.push(Mi)})){ln=!1;break}}else if(!(Xt===Yr||Vt(Xt,Yr,de,Ie,ot))){ln=!1;break}}return ot.delete(K),ot.delete(Q),ln}function Bd(K,Q,de,Ie,Vt,ot,Zt){switch(de){case fe:if(K.byteLength!=Q.byteLength||K.byteOffset!=Q.byteOffset)return!1;K=K.buffer,Q=Q.buffer;case ne:return!(K.byteLength!=Q.byteLength||!ot(new nr(K),new nr(Q)));case g:case _:case W:return Vu(+K,+Q);case E:return K.name==Q.name&&K.message==Q.message;case F:case m:return K==Q+"";case U:var gr=Ee;case j:var St=Ie&i;if(gr||(gr=Ge),K.size!=Q.size&&!St)return!1;var Gt=Zt.get(K);if(Gt)return Gt==Q;Ie|=o,Zt.set(K,Q);var fr=xa(gr(K),gr(Q),Ie,Vt,ot,Zt);return Zt.delete(K),fr;case T:if(Ze)return Ze.call(K)==Ze.call(Q)}return!1}function ju(K,Q,de,Ie,Vt,ot){var Zt=de&i,gr=Ia(K),St=gr.length,Gt=Ia(Q),fr=Gt.length;if(St!=fr&&!Zt)return!1;for(var ln=St;ln--;){var mr=gr[ln];if(!(Zt?mr in Q:je.call(Q,mr)))return!1}var Xt=ot.get(K);if(Xt&&ot.get(Q))return Xt==Q;var Yr=!0;ot.set(K,Q),ot.set(Q,K);for(var ri=Zt;++ln<St;){mr=gr[ln];var kn=K[mr],Mi=Q[mr];if(Ie)var Kc=Zt?Ie(Mi,kn,mr,Q,K,ot):Ie(kn,Mi,mr,K,Q,ot);if(!(Kc===void 0?kn===Mi||Vt(kn,Mi,de,Ie,ot):Kc)){Yr=!1;break}ri||(ri=mr=="constructor")}if(Yr&&!ri){var xo=K.constructor,Ir=Q.constructor;xo!=Ir&&"constructor"in K&&"constructor"in Q&&!(typeof xo=="function"&&xo instanceof xo&&typeof Ir=="function"&&Ir instanceof Ir)&&(Yr=!1)}return ot.delete(K),ot.delete(Q),Yr}function Ia(K){return qc(K,kd,qu)}function Cs(K,Q){var de=K.__data__;return Hu(Q)?de[typeof Q=="string"?"string":"hash"]:de.map}function _n(K,Q){var de=Fe(K,Q);return Ld(de)?de:void 0}function ku(K){var Q=je.call(K,ir),de=K[ir];try{K[ir]=void 0;var Ie=!0}catch{}var Vt=$e.call(K);return Ie&&(Q?K[ir]=de:delete K[ir]),Vt}var qu=It?function(K){return K==null?[]:(K=Object(K),Oe(It(K),function(Q){return dt.call(K,Q)}))}:Wt,Pi=_o;(Ye&&Pi(new Ye(new ArrayBuffer(1)))!=fe||He&&Pi(new He)!=U||Rt&&Pi(Rt.resolve())!=z||Je&&Pi(new Je)!=j||Ve&&Pi(new Ve)!=ee)&&(Pi=function(K){var Q=_o(K),de=Q==B?K.constructor:void 0,Ie=de?Gi(de):"";if(Ie)switch(Ie){case Xe:return fe;case et:return U;case Lt:return z;case tt:return j;case Qe:return ee}return Q});function zu(K,Q){return Q=Q??c,!!Q&&(typeof K=="number"||pe.test(K))&&K>-1&&K%1==0&&K<Q}function Hu(K){var Q=typeof K;return Q=="string"||Q=="number"||Q=="symbol"||Q=="boolean"?K!=="__proto__":K===null}function Ku(K){return!!Te&&Te in K}function Wu(K){var Q=K&&K.constructor,de=typeof Q=="function"&&Q.prototype||Be;return K===de}function Ud(K){return $e.call(K)}function Gi(K){if(K!=null){try{return Pe.call(K)}catch{}try{return K+""}catch{}}return""}function Vu(K,Q){return K===Q||K!==K&&Q!==Q}var Gu=zc(function(){return arguments}())?zc:function(K){return Ao(K)&&je.call(K,"callee")&&!dt.call(K,"callee")},Sa=Array.isArray;function Fd(K){return K!=null&&Yu(K.length)&&!Da(K)}var Hc=Ot||Kt;function jd(K,Q){return Eo(K,Q)}function Da(K){if(!Ju(K))return!1;var Q=_o(K);return Q==A||Q==S||Q==h||Q==P}function Yu(K){return typeof K=="number"&&K>-1&&K%1==0&&K<=c}function Ju(K){var Q=typeof K;return K!=null&&(Q=="object"||Q=="function")}function Ao(K){return K!=null&&typeof K=="object"}var Qu=le?ze(le):Uu;function kd(K){return Fd(K)?Lu(K):Fu(K)}function Wt(){return[]}function Kt(){return!1}t.exports=jd})(o0,o0.exports);var C9=o0.exports;function O9(t,e){return e=e||{},new Promise(function(r,n){var i=new XMLHttpRequest,o=[],c=[],l={},f=function(){return{ok:(i.status/100|0)==2,statusText:i.statusText,status:i.status,url:i.responseURL,text:function(){return Promise.resolve(i.responseText)},json:function(){return Promise.resolve(i.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([i.response]))},clone:f,headers:{keys:function(){return o},entries:function(){return c},get:function(g){return l[g.toLowerCase()]},has:function(g){return g.toLowerCase()in l}}}};for(var h in i.open(e.method||"get",t,!0),i.onload=function(){i.getAllResponseHeaders().replace(/^(.*?):[^\S\n]*([\s\S]*?)$/gm,function(g,_,E){o.push(_=_.toLowerCase()),c.push([_,E]),l[_]=l[_]?l[_]+","+E:E}),r(f())},i.onerror=n,i.withCredentials=e.credentials=="include",e.headers)i.setRequestHeader(h,e.headers[h]);i.send(e.body||null)})}var P9=Object.freeze({__proto__:null,default:O9}),Iv=$o(P9),M9=self.fetch||(self.fetch=Iv.default||Iv),T9=Object.defineProperty,Sv=Object.getOwnPropertySymbols,$9=Object.prototype.hasOwnProperty,N9=Object.prototype.propertyIsEnumerable,Dv=(t,e,r)=>e in t?T9(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,Kr=(t,e)=>{for(var r in e||(e={}))$9.call(e,r)&&Dv(t,r,e[r]);if(Sv)for(var r of Sv(e))N9.call(e,r)&&Dv(t,r,e[r]);return t};function R9(t,e){if(t.length>=255)throw new TypeError("Alphabet too long");for(var r=new Uint8Array(256),n=0;n<r.length;n++)r[n]=255;for(var i=0;i<t.length;i++){var o=t.charAt(i),c=o.charCodeAt(0);if(r[c]!==255)throw new TypeError(o+" is ambiguous");r[c]=i}var l=t.length,f=t.charAt(0),h=Math.log(l)/Math.log(256),g=Math.log(256)/Math.log(l);function _(S){if(S instanceof Uint8Array||(ArrayBuffer.isView(S)?S=new Uint8Array(S.buffer,S.byteOffset,S.byteLength):Array.isArray(S)&&(S=Uint8Array.from(S))),!(S instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(S.length===0)return"";for(var U=0,W=0,Y=0,B=S.length;Y!==B&&S[Y]===0;)Y++,U++;for(var z=(B-Y)*g+1>>>0,P=new Uint8Array(z);Y!==B;){for(var F=S[Y],j=0,m=z-1;(F!==0||j<W)&&m!==-1;m--,j++)F+=256*P[m]>>>0,P[m]=F%l>>>0,F=F/l>>>0;if(F!==0)throw new Error("Non-zero carry");W=j,Y++}for(var T=z-W;T!==z&&P[T]===0;)T++;for(var te=f.repeat(U);T<z;++T)te+=t.charAt(P[T]);return te}function E(S){if(typeof S!="string")throw new TypeError("Expected String");if(S.length===0)return new Uint8Array;var U=0;if(S[U]!==" "){for(var W=0,Y=0;S[U]===f;)W++,U++;for(var B=(S.length-U)*h+1>>>0,z=new Uint8Array(B);S[U];){var P=r[S.charCodeAt(U)];if(P===255)return;for(var F=0,j=B-1;(P!==0||F<Y)&&j!==-1;j--,F++)P+=l*z[j]>>>0,z[j]=P%256>>>0,P=P/256>>>0;if(P!==0)throw new Error("Non-zero carry");Y=F,U++}if(S[U]!==" "){for(var m=B-Y;m!==B&&z[m]===0;)m++;for(var T=new Uint8Array(W+(B-m)),te=W;m!==B;)T[te++]=z[m++];return T}}}function A(S){var U=E(S);if(U)return U;throw new Error(`Non-${e} character`)}return{encode:_,decodeUnsafe:E,decode:A}}var L9=R9,B9=L9;const Cv=t=>{if(t instanceof Uint8Array&&t.constructor.name==="Uint8Array")return t;if(t instanceof ArrayBuffer)return new Uint8Array(t);if(ArrayBuffer.isView(t))return new Uint8Array(t.buffer,t.byteOffset,t.byteLength);throw new Error("Unknown type, must be binary type")},U9=t=>new TextEncoder().encode(t),F9=t=>new TextDecoder().decode(t);class j9{constructor(e,r,n){this.name=e,this.prefix=r,this.baseEncode=n}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}}class k9{constructor(e,r,n){if(this.name=e,this.prefix=r,r.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=r.codePointAt(0),this.baseDecode=n}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return Ov(this,e)}}class q9{constructor(e){this.decoders=e}or(e){return Ov(this,e)}decode(e){const r=e[0],n=this.decoders[r];if(n)return n.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}}const Ov=(t,e)=>new q9(Kr(Kr({},t.decoders||{[t.prefix]:t}),e.decoders||{[e.prefix]:e}));class z9{constructor(e,r,n,i){this.name=e,this.prefix=r,this.baseEncode=n,this.baseDecode=i,this.encoder=new j9(e,r,n),this.decoder=new k9(e,r,i)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}}const Xl=({name:t,prefix:e,encode:r,decode:n})=>new z9(t,e,r,n),yc=({prefix:t,name:e,alphabet:r})=>{const{encode:n,decode:i}=B9(r,e);return Xl({prefix:t,name:e,encode:n,decode:o=>Cv(i(o))})},H9=(t,e,r,n)=>{const i={};for(let g=0;g<e.length;++g)i[e[g]]=g;let o=t.length;for(;t[o-1]==="=";)--o;const c=new Uint8Array(o*r/8|0);let l=0,f=0,h=0;for(let g=0;g<o;++g){const _=i[t[g]];if(_===void 0)throw new SyntaxError(`Non-${n} character`);f=f<<r|_,l+=r,l>=8&&(l-=8,c[h++]=255&f>>l)}if(l>=r||255&f<<8-l)throw new SyntaxError("Unexpected end of data");return c},K9=(t,e,r)=>{const n=e[e.length-1]==="=",i=(1<<r)-1;let o="",c=0,l=0;for(let f=0;f<t.length;++f)for(l=l<<8|t[f],c+=8;c>r;)c-=r,o+=e[i&l>>c];if(c&&(o+=e[i&l<<r-c]),n)for(;o.length*r&7;)o+="=";return o},Mr=({name:t,prefix:e,bitsPerChar:r,alphabet:n})=>Xl({prefix:e,name:t,encode(i){return K9(i,n,r)},decode(i){return H9(i,n,r,t)}}),W9=Xl({prefix:"\0",name:"identity",encode:t=>F9(t),decode:t=>U9(t)});var V9=Object.freeze({__proto__:null,identity:W9});const G9=Mr({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var Y9=Object.freeze({__proto__:null,base2:G9});const J9=Mr({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var Q9=Object.freeze({__proto__:null,base8:J9});const Z9=yc({prefix:"9",name:"base10",alphabet:"0123456789"});var X9=Object.freeze({__proto__:null,base10:Z9});const eI=Mr({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),tI=Mr({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var rI=Object.freeze({__proto__:null,base16:eI,base16upper:tI});const nI=Mr({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),iI=Mr({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),sI=Mr({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),oI=Mr({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),aI=Mr({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),cI=Mr({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),lI=Mr({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),uI=Mr({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),hI=Mr({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var fI=Object.freeze({__proto__:null,base32:nI,base32upper:iI,base32pad:sI,base32padupper:oI,base32hex:aI,base32hexupper:cI,base32hexpad:lI,base32hexpadupper:uI,base32z:hI});const dI=yc({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),pI=yc({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var gI=Object.freeze({__proto__:null,base36:dI,base36upper:pI});const mI=yc({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),vI=yc({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var wI=Object.freeze({__proto__:null,base58btc:mI,base58flickr:vI});const yI=Mr({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),bI=Mr({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),_I=Mr({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),EI=Mr({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var AI=Object.freeze({__proto__:null,base64:yI,base64pad:bI,base64url:_I,base64urlpad:EI});const Pv=Array.from("\u{1F680}\u{1FA90}\u2604\u{1F6F0}\u{1F30C}\u{1F311}\u{1F312}\u{1F313}\u{1F314}\u{1F315}\u{1F316}\u{1F317}\u{1F318}\u{1F30D}\u{1F30F}\u{1F30E}\u{1F409}\u2600\u{1F4BB}\u{1F5A5}\u{1F4BE}\u{1F4BF}\u{1F602}\u2764\u{1F60D}\u{1F923}\u{1F60A}\u{1F64F}\u{1F495}\u{1F62D}\u{1F618}\u{1F44D}\u{1F605}\u{1F44F}\u{1F601}\u{1F525}\u{1F970}\u{1F494}\u{1F496}\u{1F499}\u{1F622}\u{1F914}\u{1F606}\u{1F644}\u{1F4AA}\u{1F609}\u263A\u{1F44C}\u{1F917}\u{1F49C}\u{1F614}\u{1F60E}\u{1F607}\u{1F339}\u{1F926}\u{1F389}\u{1F49E}\u270C\u2728\u{1F937}\u{1F631}\u{1F60C}\u{1F338}\u{1F64C}\u{1F60B}\u{1F497}\u{1F49A}\u{1F60F}\u{1F49B}\u{1F642}\u{1F493}\u{1F929}\u{1F604}\u{1F600}\u{1F5A4}\u{1F603}\u{1F4AF}\u{1F648}\u{1F447}\u{1F3B6}\u{1F612}\u{1F92D}\u2763\u{1F61C}\u{1F48B}\u{1F440}\u{1F62A}\u{1F611}\u{1F4A5}\u{1F64B}\u{1F61E}\u{1F629}\u{1F621}\u{1F92A}\u{1F44A}\u{1F973}\u{1F625}\u{1F924}\u{1F449}\u{1F483}\u{1F633}\u270B\u{1F61A}\u{1F61D}\u{1F634}\u{1F31F}\u{1F62C}\u{1F643}\u{1F340}\u{1F337}\u{1F63B}\u{1F613}\u2B50\u2705\u{1F97A}\u{1F308}\u{1F608}\u{1F918}\u{1F4A6}\u2714\u{1F623}\u{1F3C3}\u{1F490}\u2639\u{1F38A}\u{1F498}\u{1F620}\u261D\u{1F615}\u{1F33A}\u{1F382}\u{1F33B}\u{1F610}\u{1F595}\u{1F49D}\u{1F64A}\u{1F639}\u{1F5E3}\u{1F4AB}\u{1F480}\u{1F451}\u{1F3B5}\u{1F91E}\u{1F61B}\u{1F534}\u{1F624}\u{1F33C}\u{1F62B}\u26BD\u{1F919}\u2615\u{1F3C6}\u{1F92B}\u{1F448}\u{1F62E}\u{1F646}\u{1F37B}\u{1F343}\u{1F436}\u{1F481}\u{1F632}\u{1F33F}\u{1F9E1}\u{1F381}\u26A1\u{1F31E}\u{1F388}\u274C\u270A\u{1F44B}\u{1F630}\u{1F928}\u{1F636}\u{1F91D}\u{1F6B6}\u{1F4B0}\u{1F353}\u{1F4A2}\u{1F91F}\u{1F641}\u{1F6A8}\u{1F4A8}\u{1F92C}\u2708\u{1F380}\u{1F37A}\u{1F913}\u{1F619}\u{1F49F}\u{1F331}\u{1F616}\u{1F476}\u{1F974}\u25B6\u27A1\u2753\u{1F48E}\u{1F4B8}\u2B07\u{1F628}\u{1F31A}\u{1F98B}\u{1F637}\u{1F57A}\u26A0\u{1F645}\u{1F61F}\u{1F635}\u{1F44E}\u{1F932}\u{1F920}\u{1F927}\u{1F4CC}\u{1F535}\u{1F485}\u{1F9D0}\u{1F43E}\u{1F352}\u{1F617}\u{1F911}\u{1F30A}\u{1F92F}\u{1F437}\u260E\u{1F4A7}\u{1F62F}\u{1F486}\u{1F446}\u{1F3A4}\u{1F647}\u{1F351}\u2744\u{1F334}\u{1F4A3}\u{1F438}\u{1F48C}\u{1F4CD}\u{1F940}\u{1F922}\u{1F445}\u{1F4A1}\u{1F4A9}\u{1F450}\u{1F4F8}\u{1F47B}\u{1F910}\u{1F92E}\u{1F3BC}\u{1F975}\u{1F6A9}\u{1F34E}\u{1F34A}\u{1F47C}\u{1F48D}\u{1F4E3}\u{1F942}"),xI=Pv.reduce((t,e,r)=>(t[r]=e,t),[]),II=Pv.reduce((t,e,r)=>(t[e.codePointAt(0)]=r,t),[]);function SI(t){return t.reduce((e,r)=>(e+=xI[r],e),"")}function DI(t){const e=[];for(const r of t){const n=II[r.codePointAt(0)];if(n===void 0)throw new Error(`Non-base256emoji character: ${r}`);e.push(n)}return new Uint8Array(e)}const CI=Xl({prefix:"\u{1F680}",name:"base256emoji",encode:SI,decode:DI});var OI=Object.freeze({__proto__:null,base256emoji:CI}),PI=Tv,Mv=128,MI=127,TI=~MI,$I=Math.pow(2,31);function Tv(t,e,r){e=e||[],r=r||0;for(var n=r;t>=$I;)e[r++]=t&255|Mv,t/=128;for(;t&TI;)e[r++]=t&255|Mv,t>>>=7;return e[r]=t|0,Tv.bytes=r-n+1,e}var NI=a0,RI=128,$v=127;function a0(t,n){var r=0,n=n||0,i=0,o=n,c,l=t.length;do{if(o>=l)throw a0.bytes=0,new RangeError("Could not decode varint");c=t[o++],r+=i<28?(c&$v)<<i:(c&$v)*Math.pow(2,i),i+=7}while(c>=RI);return a0.bytes=o-n,r}var LI=Math.pow(2,7),BI=Math.pow(2,14),UI=Math.pow(2,21),FI=Math.pow(2,28),jI=Math.pow(2,35),kI=Math.pow(2,42),qI=Math.pow(2,49),zI=Math.pow(2,56),HI=Math.pow(2,63),KI=function(t){return t<LI?1:t<BI?2:t<UI?3:t<FI?4:t<jI?5:t<kI?6:t<qI?7:t<zI?8:t<HI?9:10},WI={encode:PI,decode:NI,encodingLength:KI},Nv=WI;const Rv=(t,e,r=0)=>(Nv.encode(t,e,r),e),Lv=t=>Nv.encodingLength(t),c0=(t,e)=>{const r=e.byteLength,n=Lv(t),i=n+Lv(r),o=new Uint8Array(i+r);return Rv(t,o,0),Rv(r,o,n),o.set(e,i),new VI(t,r,e,o)};class VI{constructor(e,r,n,i){this.code=e,this.size=r,this.digest=n,this.bytes=i}}const Bv=({name:t,code:e,encode:r})=>new GI(t,e,r);class GI{constructor(e,r,n){this.name=e,this.code=r,this.encode=n}digest(e){if(e instanceof Uint8Array){const r=this.encode(e);return r instanceof Uint8Array?c0(this.code,r):r.then(n=>c0(this.code,n))}else throw Error("Unknown type, must be binary type")}}const Uv=t=>async e=>new Uint8Array(await crypto.subtle.digest(t,e)),YI=Bv({name:"sha2-256",code:18,encode:Uv("SHA-256")}),JI=Bv({name:"sha2-512",code:19,encode:Uv("SHA-512")});var QI=Object.freeze({__proto__:null,sha256:YI,sha512:JI});const Fv=0,ZI="identity",jv=Cv;var XI=Object.freeze({__proto__:null,identity:{code:Fv,name:ZI,encode:jv,digest:t=>c0(Fv,jv(t))}});new TextEncoder,new TextDecoder;const kv=Kr(Kr(Kr(Kr(Kr(Kr(Kr(Kr(Kr(Kr({},V9),Y9),Q9),X9),rI),fI),gI),wI),AI),OI);Kr(Kr({},QI),XI);function qv(t){return globalThis.Buffer!=null?new Uint8Array(t.buffer,t.byteOffset,t.byteLength):t}function eS(t=0){return globalThis.Buffer!=null&&globalThis.Buffer.allocUnsafe!=null?qv(globalThis.Buffer.allocUnsafe(t)):new Uint8Array(t)}function zv(t,e,r,n){return{name:t,prefix:e,encoder:{name:t,prefix:e,encode:r},decoder:{decode:n}}}const Hv=zv("utf8","u",t=>"u"+new TextDecoder("utf8").decode(t),t=>new TextEncoder().encode(t.substring(1))),l0=zv("ascii","a",t=>{let e="a";for(let r=0;r<t.length;r++)e+=String.fromCharCode(t[r]);return e},t=>{t=t.substring(1);const e=eS(t.length);for(let r=0;r<t.length;r++)e[r]=t.charCodeAt(r);return e}),tS=Kr({utf8:Hv,"utf-8":Hv,hex:kv.base16,latin1:l0,ascii:l0,binary:l0},kv);function rS(t,e="utf8"){const r=tS[e];if(!r)throw new Error(`Unsupported encoding "${e}"`);return(e==="utf8"||e==="utf-8")&&globalThis.Buffer!=null&&globalThis.Buffer.from!=null?qv(globalThis.Buffer.from(t,"utf-8")):r.decoder.decode(`${r.prefix}${t}`)}const Kv="wc",nS=2,u0="core",hs=`${Kv}@2:${u0}:`,iS={name:u0,logger:"error"},sS={database:":memory:"},oS="crypto",Wv="client_ed25519_seed",aS=_e.ONE_DAY,cS="keychain",lS="0.3",uS="messages",hS="0.3",fS=_e.SIX_HOURS,dS="publisher",Vv="irn",pS="error",Gv="wss://relay.walletconnect.com",Yv="wss://relay.walletconnect.org",gS="relayer",wn={message:"relayer_message",message_ack:"relayer_message_ack",connect:"relayer_connect",disconnect:"relayer_disconnect",error:"relayer_error",connection_stalled:"relayer_connection_stalled",transport_closed:"relayer_transport_closed",publish:"relayer_publish"},mS="_subscription",Tn={payload:"payload",connect:"connect",disconnect:"disconnect",error:"error"},vS=_e.ONE_SECOND,wS="2.12.2-rc-0",yS=1e4,bS="0.3",_S="WALLETCONNECT_CLIENT_ID",Ei={created:"subscription_created",deleted:"subscription_deleted",expired:"subscription_expired",disabled:"subscription_disabled",sync:"subscription_sync",resubscribed:"subscription_resubscribed"},ES="subscription",AS="0.3",xS=_e.FIVE_SECONDS*1e3,IS="pairing",SS="0.3",bc={wc_pairingDelete:{req:{ttl:_e.ONE_DAY,prompt:!1,tag:1e3},res:{ttl:_e.ONE_DAY,prompt:!1,tag:1001}},wc_pairingPing:{req:{ttl:_e.THIRTY_SECONDS,prompt:!1,tag:1002},res:{ttl:_e.THIRTY_SECONDS,prompt:!1,tag:1003}},unregistered_method:{req:{ttl:_e.ONE_DAY,prompt:!1,tag:0},res:{ttl:_e.ONE_DAY,prompt:!1,tag:0}}},ra={create:"pairing_create",expire:"pairing_expire",delete:"pairing_delete",ping:"pairing_ping"},ei={created:"history_created",updated:"history_updated",deleted:"history_deleted",sync:"history_sync"},DS="history",CS="0.3",OS="expirer",$n={created:"expirer_created",deleted:"expirer_deleted",expired:"expirer_expired",sync:"expirer_sync"},PS="0.3",h0="verify-api",na="https://verify.walletconnect.com",f0="https://verify.walletconnect.org",MS=[na,f0],TS="echo",$S="https://echo.walletconnect.com";class NS{constructor(e,r){this.core=e,this.logger=r,this.keychain=new Map,this.name=cS,this.version=lS,this.initialized=!1,this.storagePrefix=hs,this.init=async()=>{if(!this.initialized){const n=await this.getKeyChain();typeof n<"u"&&(this.keychain=n),this.initialized=!0}},this.has=n=>(this.isInitialized(),this.keychain.has(n)),this.set=async(n,i)=>{this.isInitialized(),this.keychain.set(n,i),await this.persist()},this.get=n=>{this.isInitialized();const i=this.keychain.get(n);if(typeof i>"u"){const{message:o}=me("NO_MATCHING_KEY",`${this.name}: ${n}`);throw new Error(o)}return i},this.del=async n=>{this.isInitialized(),this.keychain.delete(n),await this.persist()},this.core=e,this.logger=on(r,this.name)}get context(){return sn(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}async setKeyChain(e){await this.core.storage.setItem(this.storageKey,sg(e))}async getKeyChain(){const e=await this.core.storage.getItem(this.storageKey);return typeof e<"u"?og(e):void 0}async persist(){await this.setKeyChain(this.keychain)}isInitialized(){if(!this.initialized){const{message:e}=me("NOT_INITIALIZED",this.name);throw new Error(e)}}}class RS{constructor(e,r,n){this.core=e,this.logger=r,this.name=oS,this.initialized=!1,this.init=async()=>{this.initialized||(await this.keychain.init(),this.initialized=!0)},this.hasKeys=i=>(this.isInitialized(),this.keychain.has(i)),this.getClientId=async()=>{this.isInitialized();const i=await this.getClientSeed(),o=uv(i);return lv(o.publicKey)},this.generateKeyPair=()=>{this.isInitialized();const i=UE();return this.setPrivateKey(i.publicKey,i.privateKey)},this.signJWT=async i=>{this.isInitialized();const o=await this.getClientSeed(),c=uv(o),l=Bf();return await Fx(l,i,aS,c)},this.generateSharedKey=(i,o,c)=>{this.isInitialized();const l=this.getPrivateKey(i),f=FE(l,o);return this.setSymKey(f,c)},this.setSymKey=async(i,o)=>{this.isInitialized();const c=o||Rl(i);return await this.keychain.set(c,i),c},this.deleteKeyPair=async i=>{this.isInitialized(),await this.keychain.del(i)},this.deleteSymKey=async i=>{this.isInitialized(),await this.keychain.del(i)},this.encode=async(i,o,c)=>{this.isInitialized();const l=xm(c),f=Fi(o);if(Im(l)){const E=l.senderPublicKey,A=l.receiverPublicKey;i=await this.generateSharedKey(E,A)}const h=this.getSymKey(i),{type:g,senderPublicKey:_}=l;return kE({type:g,symKey:h,message:f,senderPublicKey:_})},this.decode=async(i,o,c)=>{this.isInitialized();const l=HE(o,c);if(Im(l)){const f=l.receiverPublicKey,h=l.senderPublicKey;i=await this.generateSharedKey(f,h)}try{const f=this.getSymKey(i),h=qE({symKey:f,encoded:o});return uc(h)}catch(f){this.logger.error(`Failed to decode message from topic: '${i}', clientId: '${await this.getClientId()}'`),this.logger.error(f)}},this.getPayloadType=i=>{const o=Ll(i);return sc(o.type)},this.getPayloadSenderPublicKey=i=>{const o=Ll(i);return o.senderPublicKey?jr(o.senderPublicKey,zr):void 0},this.core=e,this.logger=on(r,this.name),this.keychain=n||new NS(this.core,this.logger)}get context(){return sn(this.logger)}async setPrivateKey(e,r){return await this.keychain.set(e,r),e}getPrivateKey(e){return this.keychain.get(e)}async getClientSeed(){let e="";try{e=this.keychain.get(Wv)}catch{e=Bf(),await this.keychain.set(Wv,e)}return rS(e,"base16")}getSymKey(e){return this.keychain.get(e)}isInitialized(){if(!this.initialized){const{message:e}=me("NOT_INITIALIZED",this.name);throw new Error(e)}}}class LS extends mx{constructor(e,r){super(e,r),this.logger=e,this.core=r,this.messages=new Map,this.name=uS,this.version=hS,this.initialized=!1,this.storagePrefix=hs,this.init=async()=>{if(!this.initialized){this.logger.trace("Initialized");try{const n=await this.getRelayerMessages();typeof n<"u"&&(this.messages=n),this.logger.debug(`Successfully Restored records for ${this.name}`),this.logger.trace({type:"method",method:"restore",size:this.messages.size})}catch(n){this.logger.debug(`Failed to Restore records for ${this.name}`),this.logger.error(n)}finally{this.initialized=!0}}},this.set=async(n,i)=>{this.isInitialized();const o=Ws(i);let c=this.messages.get(n);return typeof c>"u"&&(c={}),typeof c[o]<"u"||(c[o]=i,this.messages.set(n,c),await this.persist()),o},this.get=n=>{this.isInitialized();let i=this.messages.get(n);return typeof i>"u"&&(i={}),i},this.has=(n,i)=>{this.isInitialized();const o=this.get(n),c=Ws(i);return typeof o[c]<"u"},this.del=async n=>{this.isInitialized(),this.messages.delete(n),await this.persist()},this.logger=on(e,this.name),this.core=r}get context(){return sn(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}async setRelayerMessages(e){await this.core.storage.setItem(this.storageKey,sg(e))}async getRelayerMessages(){const e=await this.core.storage.getItem(this.storageKey);return typeof e<"u"?og(e):void 0}async persist(){await this.setRelayerMessages(this.messages)}isInitialized(){if(!this.initialized){const{message:e}=me("NOT_INITIALIZED",this.name);throw new Error(e)}}}class BS extends vx{constructor(e,r){super(e,r),this.relayer=e,this.logger=r,this.events=new Dr.exports.EventEmitter,this.name=dS,this.queue=new Map,this.publishTimeout=_e.toMiliseconds(_e.ONE_MINUTE),this.failedPublishTimeout=_e.toMiliseconds(_e.ONE_SECOND),this.needsTransportRestart=!1,this.publish=async(n,i,o)=>{var c;this.logger.debug("Publishing Payload"),this.logger.trace({type:"method",method:"publish",params:{topic:n,message:i,opts:o}});const l=o?.ttl||fS,f=Uf(o),h=o?.prompt||!1,g=o?.tag||0,_=o?.id||Js().toString(),E={topic:n,message:i,opts:{ttl:l,relay:f,prompt:h,tag:g,id:_}},A=`Failed to publish payload, please try again. id:${_} tag:${g}`,S=Date.now();let U,W=1;try{for(;U===void 0;){if(Date.now()-S>this.publishTimeout)throw new Error(A);this.logger.trace({id:_,attempts:W},`publisher.publish - attempt ${W}`),U=await await Ya(this.rpcPublish(n,i,l,f,h,g,_).catch(Y=>this.logger.warn(Y)),this.publishTimeout,A),W++,U||await new Promise(Y=>setTimeout(Y,this.failedPublishTimeout))}this.relayer.events.emit(wn.publish,E),this.logger.debug("Successfully Published Payload"),this.logger.trace({type:"method",method:"publish",params:{id:_,topic:n,message:i,opts:o}})}catch(Y){if(this.logger.debug("Failed to Publish Payload"),this.logger.error(Y),(c=o?.internal)!=null&&c.throwOnFailedPublish)throw Y;this.queue.set(_,E)}},this.on=(n,i)=>{this.events.on(n,i)},this.once=(n,i)=>{this.events.once(n,i)},this.off=(n,i)=>{this.events.off(n,i)},this.removeListener=(n,i)=>{this.events.removeListener(n,i)},this.relayer=e,this.logger=on(r,this.name),this.registerEventListeners()}get context(){return sn(this.logger)}rpcPublish(e,r,n,i,o,c,l){var f,h,g,_;const E={method:Bl(i.protocol).publish,params:{topic:e,message:r,ttl:n,prompt:o,tag:c},id:l};return Hr((f=E.params)==null?void 0:f.prompt)&&((h=E.params)==null||delete h.prompt),Hr((g=E.params)==null?void 0:g.tag)&&((_=E.params)==null||delete _.tag),this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"message",direction:"outgoing",request:E}),this.relayer.request(E)}removeRequestFromQueue(e){this.queue.delete(e)}checkQueue(){this.queue.forEach(async e=>{const{topic:r,message:n,opts:i}=e;await this.publish(r,n,i)})}registerEventListeners(){this.relayer.core.heartbeat.on(Zo.HEARTBEAT_EVENTS.pulse,()=>{if(this.needsTransportRestart){this.needsTransportRestart=!1,this.relayer.events.emit(wn.connection_stalled);return}this.checkQueue()}),this.relayer.on(wn.message_ack,e=>{this.removeRequestFromQueue(e.id.toString())})}}class US{constructor(){this.map=new Map,this.set=(e,r)=>{const n=this.get(e);this.exists(e,r)||this.map.set(e,[...n,r])},this.get=e=>this.map.get(e)||[],this.exists=(e,r)=>this.get(e).includes(r),this.delete=(e,r)=>{if(typeof r>"u"){this.map.delete(e);return}if(!this.map.has(e))return;const n=this.get(e);if(!this.exists(e,r))return;const i=n.filter(o=>o!==r);if(!i.length){this.map.delete(e);return}this.map.set(e,i)},this.clear=()=>{this.map.clear()}}get topics(){return Array.from(this.map.keys())}}var FS=Object.defineProperty,jS=Object.defineProperties,kS=Object.getOwnPropertyDescriptors,Jv=Object.getOwnPropertySymbols,qS=Object.prototype.hasOwnProperty,zS=Object.prototype.propertyIsEnumerable,Qv=(t,e,r)=>e in t?FS(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,_c=(t,e)=>{for(var r in e||(e={}))qS.call(e,r)&&Qv(t,r,e[r]);if(Jv)for(var r of Jv(e))zS.call(e,r)&&Qv(t,r,e[r]);return t},d0=(t,e)=>jS(t,kS(e));class HS extends bx{constructor(e,r){super(e,r),this.relayer=e,this.logger=r,this.subscriptions=new Map,this.topicMap=new US,this.events=new Dr.exports.EventEmitter,this.name=ES,this.version=AS,this.pending=new Map,this.cached=[],this.initialized=!1,this.pendingSubscriptionWatchLabel="pending_sub_watch_label",this.pollingInterval=20,this.storagePrefix=hs,this.subscribeTimeout=_e.toMiliseconds(_e.ONE_MINUTE),this.restartInProgress=!1,this.batchSubscribeTopicsLimit=500,this.init=async()=>{this.initialized||(this.logger.trace("Initialized"),this.registerEventListeners(),this.clientId=await this.relayer.core.crypto.getClientId())},this.subscribe=async(n,i)=>{await this.restartToComplete(),this.isInitialized(),this.logger.debug("Subscribing Topic"),this.logger.trace({type:"method",method:"subscribe",params:{topic:n,opts:i}});try{const o=Uf(i),c={topic:n,relay:o};this.pending.set(n,c);const l=await this.rpcSubscribe(n,o);return typeof l=="string"&&(this.onSubscribe(l,c),this.logger.debug("Successfully Subscribed Topic"),this.logger.trace({type:"method",method:"subscribe",params:{topic:n,opts:i}})),l}catch(o){throw this.logger.debug("Failed to Subscribe Topic"),this.logger.error(o),o}},this.unsubscribe=async(n,i)=>{await this.restartToComplete(),this.isInitialized(),typeof i?.id<"u"?await this.unsubscribeById(n,i.id,i):await this.unsubscribeByTopic(n,i)},this.isSubscribed=async n=>{if(this.topics.includes(n))return!0;const i=`${this.pendingSubscriptionWatchLabel}_${n}`;return await new Promise((o,c)=>{const l=new _e.Watch;l.start(i);const f=setInterval(()=>{!this.pending.has(n)&&this.topics.includes(n)&&(clearInterval(f),l.stop(i),o(!0)),l.elapsed(i)>=xS&&(clearInterval(f),l.stop(i),c(new Error("Subscription resolution timeout")))},this.pollingInterval)}).catch(()=>!1)},this.on=(n,i)=>{this.events.on(n,i)},this.once=(n,i)=>{this.events.once(n,i)},this.off=(n,i)=>{this.events.off(n,i)},this.removeListener=(n,i)=>{this.events.removeListener(n,i)},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=on(r,this.name),this.clientId=""}get context(){return sn(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,r){let n=!1;try{n=this.getSubscription(e).topic===r}catch{}return n}onEnable(){this.cached=[],this.initialized=!0}onDisable(){this.cached=this.values,this.subscriptions.clear(),this.topicMap.clear()}async unsubscribeByTopic(e,r){const n=this.topicMap.get(e);await Promise.all(n.map(async i=>await this.unsubscribeById(e,i,r)))}async unsubscribeById(e,r,n){this.logger.debug("Unsubscribing Topic"),this.logger.trace({type:"method",method:"unsubscribe",params:{topic:e,id:r,opts:n}});try{const i=Uf(n);await this.rpcUnsubscribe(e,r,i);const o=Ut("USER_DISCONNECTED",`${this.name}, ${e}`);await this.onUnsubscribe(e,r,o),this.logger.debug("Successfully Unsubscribed Topic"),this.logger.trace({type:"method",method:"unsubscribe",params:{topic:e,id:r,opts:n}})}catch(i){throw this.logger.debug("Failed to Unsubscribe Topic"),this.logger.error(i),i}}async rpcSubscribe(e,r){const n={method:Bl(r.protocol).subscribe,params:{topic:e}};this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"payload",direction:"outgoing",request:n});try{return await await Ya(this.relayer.request(n).catch(i=>this.logger.warn(i)),this.subscribeTimeout)?Ws(e+this.clientId):null}catch{this.logger.debug("Outgoing Relay Subscribe Payload stalled"),this.relayer.events.emit(wn.connection_stalled)}return null}async rpcBatchSubscribe(e){if(!e.length)return;const r=e[0].relay,n={method:Bl(r.protocol).batchSubscribe,params:{topics:e.map(i=>i.topic)}};this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"payload",direction:"outgoing",request:n});try{return await await Ya(this.relayer.request(n).catch(i=>this.logger.warn(i)),this.subscribeTimeout)}catch{this.relayer.events.emit(wn.connection_stalled)}}rpcUnsubscribe(e,r,n){const i={method:Bl(n.protocol).unsubscribe,params:{topic:e,id:r}};return this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"payload",direction:"outgoing",request:i}),this.relayer.request(i)}onSubscribe(e,r){this.setSubscription(e,d0(_c({},r),{id:e})),this.pending.delete(r.topic)}onBatchSubscribe(e){e.length&&e.forEach(r=>{this.setSubscription(r.id,_c({},r)),this.pending.delete(r.topic)})}async onUnsubscribe(e,r,n){this.events.removeAllListeners(r),this.hasSubscription(r,e)&&this.deleteSubscription(r,n),await this.relayer.messages.del(e)}async setRelayerSubscriptions(e){await this.relayer.core.storage.setItem(this.storageKey,e)}async getRelayerSubscriptions(){return await this.relayer.core.storage.getItem(this.storageKey)}setSubscription(e,r){this.logger.debug("Setting subscription"),this.logger.trace({type:"method",method:"setSubscription",id:e,subscription:r}),this.addSubscription(e,r)}addSubscription(e,r){this.subscriptions.set(e,_c({},r)),this.topicMap.set(r.topic,e),this.events.emit(Ei.created,r)}getSubscription(e){this.logger.debug("Getting subscription"),this.logger.trace({type:"method",method:"getSubscription",id:e});const r=this.subscriptions.get(e);if(!r){const{message:n}=me("NO_MATCHING_KEY",`${this.name}: ${e}`);throw new Error(n)}return r}deleteSubscription(e,r){this.logger.debug("Deleting subscription"),this.logger.trace({type:"method",method:"deleteSubscription",id:e,reason:r});const n=this.getSubscription(e);this.subscriptions.delete(e),this.topicMap.delete(n.topic,e),this.events.emit(Ei.deleted,d0(_c({},n),{reason:r}))}async persist(){await this.setRelayerSubscriptions(this.values),this.events.emit(Ei.sync)}async reset(){if(this.cached.length){const e=Math.ceil(this.cached.length/this.batchSubscribeTopicsLimit);for(let r=0;r<e;r++){const n=this.cached.splice(0,this.batchSubscribeTopicsLimit);await this.batchSubscribe(n)}}this.events.emit(Ei.resubscribed)}async restore(){try{const e=await this.getRelayerSubscriptions();if(typeof e>"u"||!e.length)return;if(this.subscriptions.size){const{message:r}=me("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(r),this.logger.error(`${this.name}: ${JSON.stringify(this.values)}`),new Error(r)}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;const r=await this.rpcBatchSubscribe(e);wi(r)&&this.onBatchSubscribe(r.map((n,i)=>d0(_c({},e[i]),{id:n})))}async onConnect(){await this.restart(),this.onEnable()}onDisconnect(){this.onDisable()}async checkPending(){if(!this.initialized||!this.relayer.connected)return;const e=[];this.pending.forEach(r=>{e.push(r)}),await this.batchSubscribe(e)}registerEventListeners(){this.relayer.core.heartbeat.on(Zo.HEARTBEAT_EVENTS.pulse,async()=>{await this.checkPending()}),this.events.on(Ei.created,async e=>{const r=Ei.created;this.logger.info(`Emitting ${r}`),this.logger.debug({type:"event",event:r,data:e}),await this.persist()}),this.events.on(Ei.deleted,async e=>{const r=Ei.deleted;this.logger.info(`Emitting ${r}`),this.logger.debug({type:"event",event:r,data:e}),await this.persist()})}isInitialized(){if(!this.initialized){const{message:e}=me("NOT_INITIALIZED",this.name);throw new Error(e)}}async restartToComplete(){this.restartInProgress&&await new Promise(e=>{const r=setInterval(()=>{this.restartInProgress||(clearInterval(r),e())},this.pollingInterval)})}}var KS=Object.defineProperty,Zv=Object.getOwnPropertySymbols,WS=Object.prototype.hasOwnProperty,VS=Object.prototype.propertyIsEnumerable,Xv=(t,e,r)=>e in t?KS(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,GS=(t,e)=>{for(var r in e||(e={}))WS.call(e,r)&&Xv(t,r,e[r]);if(Zv)for(var r of Zv(e))VS.call(e,r)&&Xv(t,r,e[r]);return t};class YS extends wx{constructor(e){super(e),this.protocol="wc",this.version=2,this.events=new Dr.exports.EventEmitter,this.name=gS,this.transportExplicitlyClosed=!1,this.initialized=!1,this.connectionAttemptInProgress=!1,this.connectionStatusPollingInterval=20,this.staleConnectionErrors=["socket hang up","socket stalled","interrupted"],this.hasExperiencedNetworkDisruption=!1,this.requestsInFlight=new Map,this.heartBeatTimeout=_e.toMiliseconds(_e.THIRTY_SECONDS+_e.ONE_SECOND),this.request=async r=>{var n,i;this.logger.debug("Publishing Request Payload");const o=r.id||Js().toString();await this.toEstablishConnection();try{const c=this.provider.request(r);this.requestsInFlight.set(o,{promise:c,request:r}),this.logger.trace({id:o,method:r.method,topic:(n=r.params)==null?void 0:n.topic},"relayer.request - attempt to publish...");const l=await new Promise(async(f,h)=>{const g=()=>{h(new Error(`relayer.request - publish interrupted, id: ${o}`))};this.provider.on(Tn.disconnect,g);const _=await c;this.provider.off(Tn.disconnect,g),f(_)});return this.logger.trace({id:o,method:r.method,topic:(i=r.params)==null?void 0:i.topic},"relayer.request - published"),l}catch(c){throw this.logger.debug(`Failed to Publish Request: ${o}`),c}finally{this.requestsInFlight.delete(o)}},this.resetPingTimeout=()=>{if(Va())try{clearTimeout(this.pingTimeout),this.pingTimeout=setTimeout(()=>{var r,n,i;(i=(n=(r=this.provider)==null?void 0:r.connection)==null?void 0:n.socket)==null||i.terminate()},this.heartBeatTimeout)}catch(r){this.logger.warn(r)}},this.onPayloadHandler=r=>{this.onProviderPayload(r),this.resetPingTimeout()},this.onConnectHandler=()=>{this.startPingTimeout(),this.events.emit(wn.connect)},this.onDisconnectHandler=()=>{this.onProviderDisconnect()},this.onProviderErrorHandler=r=>{this.logger.error(r),this.events.emit(wn.error,r),this.logger.info("Fatal socket error received, closing transport"),this.transportClose()},this.registerProviderListeners=()=>{this.provider.on(Tn.payload,this.onPayloadHandler),this.provider.on(Tn.connect,this.onConnectHandler),this.provider.on(Tn.disconnect,this.onDisconnectHandler),this.provider.on(Tn.error,this.onProviderErrorHandler)},this.core=e.core,this.logger=typeof e.logger<"u"&&typeof e.logger!="string"?on(e.logger,this.name):yi(Gl({level:e.logger||pS})),this.messages=new LS(this.logger,e.core),this.subscriber=new HS(this,this.logger),this.publisher=new BS(this,this.logger),this.relayUrl=e?.relayUrl||Gv,this.projectId=e.projectId,this.bundleId=D_(),this.provider={}}async init(){this.logger.trace("Initialized"),this.registerEventListeners(),await this.createProvider(),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 ${Yv}...`),await this.restartTransport(Yv)}this.initialized=!0,setTimeout(async()=>{this.subscriber.topics.length===0&&this.subscriber.pending.size===0&&(this.logger.info("No topics subscribed to after init, closing transport"),await this.transportClose(),this.transportExplicitlyClosed=!1)},yS)}get context(){return sn(this.logger)}get connected(){var e,r,n;return((n=(r=(e=this.provider)==null?void 0:e.connection)==null?void 0:r.socket)==null?void 0:n.readyState)===1}get connecting(){var e,r,n;return((n=(r=(e=this.provider)==null?void 0:e.connection)==null?void 0:r.socket)==null?void 0:n.readyState)===0}async publish(e,r,n){this.isInitialized(),await this.publisher.publish(e,r,n),await this.recordMessageEvent({topic:e,message:r,publishedAt:Date.now()})}async subscribe(e,r){var n;this.isInitialized();let i=((n=this.subscriber.topicMap.get(e))==null?void 0:n[0])||"",o;const c=l=>{l.topic===e&&(this.subscriber.off(Ei.created,c),o())};return await Promise.all([new Promise(l=>{o=l,this.subscriber.on(Ei.created,c)}),new Promise(async l=>{i=await this.subscriber.subscribe(e,r)||i,l()})]),i}async unsubscribe(e,r){this.isInitialized(),await this.subscriber.unsubscribe(e,r)}on(e,r){this.events.on(e,r)}once(e,r){this.events.once(e,r)}off(e,r){this.events.off(e,r)}removeListener(e,r){this.events.removeListener(e,r)}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 Ya(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(r,n)=>{const i=()=>{this.provider.off(Tn.disconnect,i),n(new Error("Connection interrupted while trying to subscribe"))};this.provider.on(Tn.disconnect,i),await Ya(this.provider.connect(),_e.toMiliseconds(_e.ONE_MINUTE),`Socket stalled when trying to connect to ${this.relayUrl}`).catch(o=>{n(o)}),await this.subscriber.start(),this.hasExperiencedNetworkDisruption=!1,r()})}catch(r){this.logger.error(r);const n=r;if(!this.isConnectionStalled(n.message))throw r}finally{this.connectionAttemptInProgress=!1}}async restartTransport(e){this.connectionAttemptInProgress||(this.relayUrl=e||this.relayUrl,await this.confirmOnlineStateOrThrow(),await this.transportClose(),await this.createProvider(),await this.transportOpen())}async confirmOnlineStateOrThrow(){if(!await Bm())throw new Error("No internet connection detected. Please restart your network and try again.")}startPingTimeout(){var e,r,n,i,o;if(Va())try{(r=(e=this.provider)==null?void 0:e.connection)!=null&&r.socket&&((o=(i=(n=this.provider)==null?void 0:n.connection)==null?void 0:i.socket)==null||o.once("ping",()=>{this.resetPingTimeout()})),this.resetPingTimeout()}catch(c){this.logger.warn(c)}}isConnectionStalled(e){return this.staleConnectionErrors.some(r=>e.includes(r))}async createProvider(){this.provider.connection&&this.unregisterProviderListeners();const e=await this.core.crypto.signJWT(this.relayUrl);this.provider=new qi(new D9($_({sdkVersion:wS,protocol:this.protocol,version:this.version,relayUrl:this.relayUrl,projectId:this.projectId,auth:e,useOnCloseEvent:!0,bundleId:this.bundleId}))),this.registerProviderListeners()}async recordMessageEvent(e){const{topic:r,message:n}=e;await this.messages.set(r,n)}async shouldIgnoreMessageEvent(e){const{topic:r,message:n}=e;if(!n||n.length===0)return this.logger.debug(`Ignoring invalid/empty message: ${n}`),!0;if(!await this.subscriber.isSubscribed(r))return this.logger.debug(`Ignoring message for non-subscribed topic ${r}`),!0;const i=this.messages.has(r,n);return i&&this.logger.debug(`Ignoring duplicate message: ${n}`),i}async onProviderPayload(e){if(this.logger.debug("Incoming Relay Payload"),this.logger.trace({type:"payload",direction:"incoming",payload:e}),s0(e)){if(!e.method.endsWith(mS))return;const r=e.params,{topic:n,message:i,publishedAt:o}=r.data,c={topic:n,message:i,publishedAt:o};this.logger.debug("Emitting Relayer Payload"),this.logger.trace(GS({type:"event",event:r.id},c)),this.events.emit(r.id,c),await this.acknowledgePayload(e),await this.onMessageEvent(c)}else Zl(e)&&this.events.emit(wn.message_ack,e)}async onMessageEvent(e){await this.shouldIgnoreMessageEvent(e)||(this.events.emit(wn.message,e),await this.recordMessageEvent(e))}async acknowledgePayload(e){const r=Jl(e.id,!0);await this.provider.connection.send(r)}unregisterProviderListeners(){this.provider.off(Tn.payload,this.onPayloadHandler),this.provider.off(Tn.connect,this.onConnectHandler),this.provider.off(Tn.disconnect,this.onDisconnectHandler),this.provider.off(Tn.error,this.onProviderErrorHandler)}async registerEventListeners(){let e=await Bm();NA(async r=>{e!==r&&(e=r,r?await this.restartTransport().catch(n=>this.logger.error(n)):(this.hasExperiencedNetworkDisruption=!0,await this.transportDisconnect(),this.transportExplicitlyClosed=!1))})}async onProviderDisconnect(){await this.subscriber.stop(),this.events.emit(wn.disconnect),this.connectionAttemptInProgress=!1,!this.transportExplicitlyClosed&&setTimeout(async()=>{await this.transportOpen().catch(e=>this.logger.error(e))},_e.toMiliseconds(vS))}isInitialized(){if(!this.initialized){const{message:e}=me("NOT_INITIALIZED",this.name);throw new Error(e)}}async toEstablishConnection(){await this.confirmOnlineStateOrThrow(),!this.connected&&(this.connectionAttemptInProgress&&await new Promise(e=>{const r=setInterval(()=>{this.connected&&(clearInterval(r),e())},this.connectionStatusPollingInterval)}),await this.transportOpen())}}var JS=Object.defineProperty,ew=Object.getOwnPropertySymbols,QS=Object.prototype.hasOwnProperty,ZS=Object.prototype.propertyIsEnumerable,tw=(t,e,r)=>e in t?JS(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,rw=(t,e)=>{for(var r in e||(e={}))QS.call(e,r)&&tw(t,r,e[r]);if(ew)for(var r of ew(e))ZS.call(e,r)&&tw(t,r,e[r]);return t};class Qs extends yx{constructor(e,r,n,i=hs,o=void 0){super(e,r,n,i),this.core=e,this.logger=r,this.name=n,this.map=new Map,this.version=bS,this.cached=[],this.initialized=!1,this.storagePrefix=hs,this.recentlyDeleted=[],this.recentlyDeletedLimit=200,this.init=async()=>{this.initialized||(this.logger.trace("Initialized"),await this.restore(),this.cached.forEach(c=>{this.getKey&&c!==null&&!Hr(c)?this.map.set(this.getKey(c),c):hA(c)?this.map.set(c.id,c):fA(c)&&this.map.set(c.topic,c)}),this.cached=[],this.initialized=!0)},this.set=async(c,l)=>{this.isInitialized(),this.map.has(c)?await this.update(c,l):(this.logger.debug("Setting value"),this.logger.trace({type:"method",method:"set",key:c,value:l}),this.map.set(c,l),await this.persist())},this.get=c=>(this.isInitialized(),this.logger.debug("Getting value"),this.logger.trace({type:"method",method:"get",key:c}),this.getData(c)),this.getAll=c=>(this.isInitialized(),c?this.values.filter(l=>Object.keys(c).every(f=>C9(l[f],c[f]))):this.values),this.update=async(c,l)=>{this.isInitialized(),this.logger.debug("Updating value"),this.logger.trace({type:"method",method:"update",key:c,update:l});const f=rw(rw({},this.getData(c)),l);this.map.set(c,f),await this.persist()},this.delete=async(c,l)=>{this.isInitialized(),this.map.has(c)&&(this.logger.debug("Deleting value"),this.logger.trace({type:"method",method:"delete",key:c,reason:l}),this.map.delete(c),this.addToRecentlyDeleted(c),await this.persist())},this.logger=on(r,this.name),this.storagePrefix=i,this.getKey=o}get context(){return sn(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}get length(){return this.map.size}get keys(){return Array.from(this.map.keys())}get values(){return Array.from(this.map.values())}addToRecentlyDeleted(e){this.recentlyDeleted.push(e),this.recentlyDeleted.length>=this.recentlyDeletedLimit&&this.recentlyDeleted.splice(0,this.recentlyDeletedLimit/2)}async setDataStore(e){await this.core.storage.setItem(this.storageKey,e)}async getDataStore(){return await this.core.storage.getItem(this.storageKey)}getData(e){const r=this.map.get(e);if(!r){if(this.recentlyDeleted.includes(e)){const{message:i}=me("MISSING_OR_INVALID",`Record was recently deleted - ${this.name}: ${e}`);throw this.logger.error(i),new Error(i)}const{message:n}=me("NO_MATCHING_KEY",`${this.name}: ${e}`);throw this.logger.error(n),new Error(n)}return r}async persist(){await this.setDataStore(this.values)}async restore(){try{const e=await this.getDataStore();if(typeof e>"u"||!e.length)return;if(this.map.size){const{message:r}=me("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(r),new Error(r)}this.cached=e,this.logger.debug(`Successfully Restored value for ${this.name}`),this.logger.trace({type:"method",method:"restore",value:this.values})}catch(e){this.logger.debug(`Failed to Restore value for ${this.name}`),this.logger.error(e)}}isInitialized(){if(!this.initialized){const{message:e}=me("NOT_INITIALIZED",this.name);throw new Error(e)}}}class XS{constructor(e,r){this.core=e,this.logger=r,this.name=IS,this.version=SS,this.events=new Dr.exports,this.initialized=!1,this.storagePrefix=hs,this.ignoredPayloadTypes=[ls],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:n})=>{this.isInitialized(),this.registeredMethods=[...new Set([...this.registeredMethods,...n])]},this.create=async n=>{this.isInitialized();const i=Bf(),o=await this.core.crypto.setSymKey(i),c=Nr(_e.FIVE_MINUTES),l={protocol:Vv},f={topic:o,expiry:c,relay:l,active:!1},h=tA({protocol:this.core.protocol,version:this.core.version,topic:o,symKey:i,relay:l,expiryTimestamp:c,methods:n?.methods});return await this.pairings.set(o,f),await this.core.relayer.subscribe(o),this.core.expirer.set(o,c),{topic:o,uri:h}},this.pair=async n=>{this.isInitialized(),this.isValidPair(n);const{topic:i,symKey:o,relay:c,expiryTimestamp:l,methods:f}=Om(n.uri);let h;if(this.pairings.keys.includes(i)&&(h=this.pairings.get(i),h.active))throw new Error(`Pairing already exists: ${i}. Please try again with a new connection URI.`);const g=l||Nr(_e.FIVE_MINUTES),_={topic:i,relay:c,expiry:g,active:!1,methods:f};return await this.pairings.set(i,_),this.core.expirer.set(i,g),n.activatePairing&&await this.activate({topic:i}),this.events.emit(ra.create,_),this.core.crypto.keychain.has(i)||await this.core.crypto.setSymKey(o,i),await this.core.relayer.subscribe(i,{relay:c}),_},this.activate=async({topic:n})=>{this.isInitialized();const i=Nr(_e.THIRTY_DAYS);await this.pairings.update(n,{active:!0,expiry:i}),this.core.expirer.set(n,i)},this.ping=async n=>{this.isInitialized(),await this.isValidPing(n);const{topic:i}=n;if(this.pairings.keys.includes(i)){const o=await this.sendRequest(i,"wc_pairingPing",{}),{done:c,resolve:l,reject:f}=qs();this.events.once(wt("pairing_ping",o),({error:h})=>{h?f(h):l()}),await c()}},this.updateExpiry=async({topic:n,expiry:i})=>{this.isInitialized(),await this.pairings.update(n,{expiry:i})},this.updateMetadata=async({topic:n,metadata:i})=>{this.isInitialized(),await this.pairings.update(n,{peerMetadata:i})},this.getPairings=()=>(this.isInitialized(),this.pairings.values),this.disconnect=async n=>{this.isInitialized(),await this.isValidDisconnect(n);const{topic:i}=n;this.pairings.keys.includes(i)&&(await this.sendRequest(i,"wc_pairingDelete",Ut("USER_DISCONNECTED")),await this.deletePairing(i))},this.sendRequest=async(n,i,o)=>{const c=ta(i,o),l=await this.core.crypto.encode(n,c),f=bc[i].req;return this.core.history.set(n,c),this.core.relayer.publish(n,l,f),c.id},this.sendResult=async(n,i,o)=>{const c=Jl(n,o),l=await this.core.crypto.encode(i,c),f=await this.core.history.get(i,n),h=bc[f.request.method].res;await this.core.relayer.publish(i,l,h),await this.core.history.resolve(c)},this.sendError=async(n,i,o)=>{const c=Ql(n,o),l=await this.core.crypto.encode(i,c),f=await this.core.history.get(i,n),h=bc[f.request.method]?bc[f.request.method].res:bc.unregistered_method.res;await this.core.relayer.publish(i,l,h),await this.core.history.resolve(c)},this.deletePairing=async(n,i)=>{await this.core.relayer.unsubscribe(n),await Promise.all([this.pairings.delete(n,Ut("USER_DISCONNECTED")),this.core.crypto.deleteSymKey(n),i?Promise.resolve():this.core.expirer.del(n)])},this.cleanup=async()=>{const n=this.pairings.getAll().filter(i=>ss(i.expiry));await Promise.all(n.map(i=>this.deletePairing(i.topic)))},this.onRelayEventRequest=n=>{const{topic:i,payload:o}=n;switch(o.method){case"wc_pairingPing":return this.onPairingPingRequest(i,o);case"wc_pairingDelete":return this.onPairingDeleteRequest(i,o);default:return this.onUnknownRpcMethodRequest(i,o)}},this.onRelayEventResponse=async n=>{const{topic:i,payload:o}=n,c=(await this.core.history.get(i,o.id)).request.method;switch(c){case"wc_pairingPing":return this.onPairingPingResponse(i,o);default:return this.onUnknownRpcMethodResponse(c)}},this.onPairingPingRequest=async(n,i)=>{const{id:o}=i;try{this.isValidPing({topic:n}),await this.sendResult(o,n,!0),this.events.emit(ra.ping,{id:o,topic:n})}catch(c){await this.sendError(o,n,c),this.logger.error(c)}},this.onPairingPingResponse=(n,i)=>{const{id:o}=i;setTimeout(()=>{_i(i)?this.events.emit(wt("pairing_ping",o),{}):Mn(i)&&this.events.emit(wt("pairing_ping",o),{error:i.error})},500)},this.onPairingDeleteRequest=async(n,i)=>{const{id:o}=i;try{this.isValidDisconnect({topic:n}),await this.deletePairing(n),this.events.emit(ra.delete,{id:o,topic:n})}catch(c){await this.sendError(o,n,c),this.logger.error(c)}},this.onUnknownRpcMethodRequest=async(n,i)=>{const{id:o,method:c}=i;try{if(this.registeredMethods.includes(c))return;const l=Ut("WC_METHOD_UNSUPPORTED",c);await this.sendError(o,n,l),this.logger.error(l)}catch(l){await this.sendError(o,n,l),this.logger.error(l)}},this.onUnknownRpcMethodResponse=n=>{this.registeredMethods.includes(n)||this.logger.error(Ut("WC_METHOD_UNSUPPORTED",n))},this.isValidPair=n=>{var i;if(!rn(n)){const{message:c}=me("MISSING_OR_INVALID",`pair() params: ${n}`);throw new Error(c)}if(!uA(n.uri)){const{message:c}=me("MISSING_OR_INVALID",`pair() uri: ${n.uri}`);throw new Error(c)}const o=Om(n.uri);if(!((i=o?.relay)!=null&&i.protocol)){const{message:c}=me("MISSING_OR_INVALID","pair() uri#relay-protocol");throw new Error(c)}if(!(o!=null&&o.symKey)){const{message:c}=me("MISSING_OR_INVALID","pair() uri#symKey");throw new Error(c)}if(o!=null&&o.expiryTimestamp&&_e.toMiliseconds(o?.expiryTimestamp)<Date.now()){const{message:c}=me("EXPIRED","pair() URI has expired. Please try again with a new connection URI.");throw new Error(c)}},this.isValidPing=async n=>{if(!rn(n)){const{message:o}=me("MISSING_OR_INVALID",`ping() params: ${n}`);throw new Error(o)}const{topic:i}=n;await this.isValidPairingTopic(i)},this.isValidDisconnect=async n=>{if(!rn(n)){const{message:o}=me("MISSING_OR_INVALID",`disconnect() params: ${n}`);throw new Error(o)}const{topic:i}=n;await this.isValidPairingTopic(i)},this.isValidPairingTopic=async n=>{if(!ur(n,!1)){const{message:i}=me("MISSING_OR_INVALID",`pairing topic should be a string: ${n}`);throw new Error(i)}if(!this.pairings.keys.includes(n)){const{message:i}=me("NO_MATCHING_KEY",`pairing topic doesn't exist: ${n}`);throw new Error(i)}if(ss(this.pairings.get(n).expiry)){await this.deletePairing(n);const{message:i}=me("EXPIRED",`pairing topic: ${n}`);throw new Error(i)}},this.core=e,this.logger=on(r,this.name),this.pairings=new Qs(this.core,this.logger,this.name,this.storagePrefix)}get context(){return sn(this.logger)}isInitialized(){if(!this.initialized){const{message:e}=me("NOT_INITIALIZED",this.name);throw new Error(e)}}registerRelayerEvents(){this.core.relayer.on(wn.message,async e=>{const{topic:r,message:n}=e;if(!this.pairings.keys.includes(r)||this.ignoredPayloadTypes.includes(this.core.crypto.getPayloadType(n)))return;const i=await this.core.crypto.decode(r,n);try{s0(i)?(this.core.history.set(r,i),this.onRelayEventRequest({topic:r,payload:i})):Zl(i)&&(await this.core.history.resolve(i),await this.onRelayEventResponse({topic:r,payload:i}),this.core.history.delete(r,i.id))}catch(o){this.logger.error(o)}})}registerExpirerEvents(){this.core.expirer.on($n.expired,async e=>{const{topic:r}=cg(e.target);r&&this.pairings.keys.includes(r)&&(await this.deletePairing(r,!0),this.events.emit(ra.expire,{topic:r}))})}}class eD extends gx{constructor(e,r){super(e,r),this.core=e,this.logger=r,this.records=new Map,this.events=new Dr.exports.EventEmitter,this.name=DS,this.version=CS,this.cached=[],this.initialized=!1,this.storagePrefix=hs,this.init=async()=>{this.initialized||(this.logger.trace("Initialized"),await this.restore(),this.cached.forEach(n=>this.records.set(n.id,n)),this.cached=[],this.registerEventListeners(),this.initialized=!0)},this.set=(n,i,o)=>{if(this.isInitialized(),this.logger.debug("Setting JSON-RPC request history record"),this.logger.trace({type:"method",method:"set",topic:n,request:i,chainId:o}),this.records.has(i.id))return;const c={id:i.id,topic:n,request:{method:i.method,params:i.params||null},chainId:o,expiry:Nr(_e.THIRTY_DAYS)};this.records.set(c.id,c),this.persist(),this.events.emit(ei.created,c)},this.resolve=async n=>{if(this.isInitialized(),this.logger.debug("Updating JSON-RPC response history record"),this.logger.trace({type:"method",method:"update",response:n}),!this.records.has(n.id))return;const i=await this.getRecord(n.id);typeof i.response>"u"&&(i.response=Mn(n)?{error:n.error}:{result:n.result},this.records.set(i.id,i),this.persist(),this.events.emit(ei.updated,i))},this.get=async(n,i)=>(this.isInitialized(),this.logger.debug("Getting record"),this.logger.trace({type:"method",method:"get",topic:n,id:i}),await this.getRecord(i)),this.delete=(n,i)=>{this.isInitialized(),this.logger.debug("Deleting record"),this.logger.trace({type:"method",method:"delete",id:i}),this.values.forEach(o=>{if(o.topic===n){if(typeof i<"u"&&o.id!==i)return;this.records.delete(o.id),this.events.emit(ei.deleted,o)}}),this.persist()},this.exists=async(n,i)=>(this.isInitialized(),this.records.has(i)?(await this.getRecord(i)).topic===n:!1),this.on=(n,i)=>{this.events.on(n,i)},this.once=(n,i)=>{this.events.once(n,i)},this.off=(n,i)=>{this.events.off(n,i)},this.removeListener=(n,i)=>{this.events.removeListener(n,i)},this.logger=on(r,this.name)}get context(){return sn(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}get size(){return this.records.size}get keys(){return Array.from(this.records.keys())}get values(){return Array.from(this.records.values())}get pending(){const e=[];return this.values.forEach(r=>{if(typeof r.response<"u")return;const n={topic:r.topic,request:ta(r.request.method,r.request.params,r.id),chainId:r.chainId};return e.push(n)}),e}async setJsonRpcRecords(e){await this.core.storage.setItem(this.storageKey,e)}async getJsonRpcRecords(){return await this.core.storage.getItem(this.storageKey)}getRecord(e){this.isInitialized();const r=this.records.get(e);if(!r){const{message:n}=me("NO_MATCHING_KEY",`${this.name}: ${e}`);throw new Error(n)}return r}async persist(){await this.setJsonRpcRecords(this.values),this.events.emit(ei.sync)}async restore(){try{const e=await this.getJsonRpcRecords();if(typeof e>"u"||!e.length)return;if(this.records.size){const{message:r}=me("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(r),new Error(r)}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(ei.created,e=>{const r=ei.created;this.logger.info(`Emitting ${r}`),this.logger.debug({type:"event",event:r,record:e})}),this.events.on(ei.updated,e=>{const r=ei.updated;this.logger.info(`Emitting ${r}`),this.logger.debug({type:"event",event:r,record:e})}),this.events.on(ei.deleted,e=>{const r=ei.deleted;this.logger.info(`Emitting ${r}`),this.logger.debug({type:"event",event:r,record:e})}),this.core.heartbeat.on(Zo.HEARTBEAT_EVENTS.pulse,()=>{this.cleanup()})}cleanup(){try{this.isInitialized();let e=!1;this.records.forEach(r=>{_e.toMiliseconds(r.expiry||0)-Date.now()<=0&&(this.logger.info(`Deleting expired history log: ${r.id}`),this.records.delete(r.id),this.events.emit(ei.deleted,r,!1),e=!0)}),e&&this.persist()}catch(e){this.logger.warn(e)}}isInitialized(){if(!this.initialized){const{message:e}=me("NOT_INITIALIZED",this.name);throw new Error(e)}}}class tD extends _x{constructor(e,r){super(e,r),this.core=e,this.logger=r,this.expirations=new Map,this.events=new Dr.exports.EventEmitter,this.name=OS,this.version=PS,this.cached=[],this.initialized=!1,this.storagePrefix=hs,this.init=async()=>{this.initialized||(this.logger.trace("Initialized"),await this.restore(),this.cached.forEach(n=>this.expirations.set(n.target,n)),this.cached=[],this.registerEventListeners(),this.initialized=!0)},this.has=n=>{try{const i=this.formatTarget(n);return typeof this.getExpiration(i)<"u"}catch{return!1}},this.set=(n,i)=>{this.isInitialized();const o=this.formatTarget(n),c={target:o,expiry:i};this.expirations.set(o,c),this.checkExpiry(o,c),this.events.emit($n.created,{target:o,expiration:c})},this.get=n=>{this.isInitialized();const i=this.formatTarget(n);return this.getExpiration(i)},this.del=n=>{if(this.isInitialized(),this.has(n)){const i=this.formatTarget(n),o=this.getExpiration(i);this.expirations.delete(i),this.events.emit($n.deleted,{target:i,expiration:o})}},this.on=(n,i)=>{this.events.on(n,i)},this.once=(n,i)=>{this.events.once(n,i)},this.off=(n,i)=>{this.events.off(n,i)},this.removeListener=(n,i)=>{this.events.removeListener(n,i)},this.logger=on(r,this.name)}get context(){return sn(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}get length(){return this.expirations.size}get keys(){return Array.from(this.expirations.keys())}get values(){return Array.from(this.expirations.values())}formatTarget(e){if(typeof e=="string")return N_(e);if(typeof e=="number")return R_(e);const{message:r}=me("UNKNOWN_TYPE",`Target type: ${typeof e}`);throw new Error(r)}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($n.sync)}async restore(){try{const e=await this.getExpirations();if(typeof e>"u"||!e.length)return;if(this.expirations.size){const{message:r}=me("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(r),new Error(r)}this.cached=e,this.logger.debug(`Successfully Restored expirations for ${this.name}`),this.logger.trace({type:"method",method:"restore",expirations:this.values})}catch(e){this.logger.debug(`Failed to Restore expirations for ${this.name}`),this.logger.error(e)}}getExpiration(e){const r=this.expirations.get(e);if(!r){const{message:n}=me("NO_MATCHING_KEY",`${this.name}: ${e}`);throw this.logger.warn(n),new Error(n)}return r}checkExpiry(e,r){const{expiry:n}=r;_e.toMiliseconds(n)-Date.now()<=0&&this.expire(e,r)}expire(e,r){this.expirations.delete(e),this.events.emit($n.expired,{target:e,expiration:r})}checkExpirations(){this.core.relayer.connected&&this.expirations.forEach((e,r)=>this.checkExpiry(r,e))}registerEventListeners(){this.core.heartbeat.on(Zo.HEARTBEAT_EVENTS.pulse,()=>this.checkExpirations()),this.events.on($n.created,e=>{const r=$n.created;this.logger.info(`Emitting ${r}`),this.logger.debug({type:"event",event:r,data:e}),this.persist()}),this.events.on($n.expired,e=>{const r=$n.expired;this.logger.info(`Emitting ${r}`),this.logger.debug({type:"event",event:r,data:e}),this.persist()}),this.events.on($n.deleted,e=>{const r=$n.deleted;this.logger.info(`Emitting ${r}`),this.logger.debug({type:"event",event:r,data:e}),this.persist()})}isInitialized(){if(!this.initialized){const{message:e}=me("NOT_INITIALIZED",this.name);throw new Error(e)}}}class rD extends Ex{constructor(e,r){super(e,r),this.projectId=e,this.logger=r,this.name=h0,this.initialized=!1,this.queue=[],this.verifyDisabled=!1,this.init=async n=>{if(this.verifyDisabled||Uo()||!Fo())return;const i=this.getVerifyUrl(n?.verifyUrl);this.verifyUrl!==i&&this.removeIframe(),this.verifyUrl=i;try{await this.createIframe()}catch(o){this.logger.info(`Verify iframe failed to load: ${this.verifyUrl}`),this.logger.info(o)}if(!this.initialized){this.removeIframe(),this.verifyUrl=f0;try{await this.createIframe()}catch(o){this.logger.info(`Verify iframe failed to load: ${this.verifyUrl}`),this.logger.info(o),this.verifyDisabled=!0}}},this.register=async n=>{this.initialized?this.sendPost(n.attestationId):(this.addToQueue(n.attestationId),await this.init())},this.resolve=async n=>{if(this.isDevEnv)return"";const i=this.getVerifyUrl(n?.verifyUrl);let o;try{o=await this.fetchAttestation(n.attestationId,i)}catch(c){this.logger.info(`failed to resolve attestation: ${n.attestationId} from url: ${i}`),this.logger.info(c),o=await this.fetchAttestation(n.attestationId,f0)}return o},this.fetchAttestation=async(n,i)=>{this.logger.info(`resolving attestation: ${n} from url: ${i}`);const o=this.startAbortTimer(_e.ONE_SECOND*2),c=await fetch(`${i}/attestation/${n}`,{signal:this.abortController.signal});return clearTimeout(o),c.status===200?await c.json():void 0},this.addToQueue=n=>{this.queue.push(n)},this.processQueue=()=>{this.queue.length!==0&&(this.queue.forEach(n=>this.sendPost(n)),this.queue=[])},this.sendPost=n=>{var i;try{if(!this.iframe)return;(i=this.iframe.contentWindow)==null||i.postMessage(n,"*"),this.logger.info(`postMessage sent: ${n} ${this.verifyUrl}`)}catch{}},this.createIframe=async()=>{let n;const i=o=>{o.data==="verify_ready"&&(this.onInit(),window.removeEventListener("message",i),n())};await Promise.race([new Promise(o=>{const c=document.getElementById(h0);if(c)return this.iframe=c,this.onInit(),o();window.addEventListener("message",i);const l=document.createElement("iframe");l.id=h0,l.src=`${this.verifyUrl}/${this.projectId}`,l.style.display="none",document.body.append(l),this.iframe=l,n=o}),new Promise((o,c)=>setTimeout(()=>{window.removeEventListener("message",i),c("verify iframe load timeout")},_e.toMiliseconds(_e.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=n=>{let i=n||na;return MS.includes(i)||(this.logger.info(`verify url: ${i}, not included in trusted list, assigning default: ${na}`),i=na),i},this.logger=on(r,this.name),this.verifyUrl=na,this.abortController=new AbortController,this.isDevEnv=Va()&&process.env.IS_VITEST}get context(){return sn(this.logger)}startAbortTimer(e){return this.abortController=new AbortController,setTimeout(()=>this.abortController.abort(),_e.toMiliseconds(e))}}class nD extends Ax{constructor(e,r){super(e,r),this.projectId=e,this.logger=r,this.context=TS,this.registerDeviceToken=async n=>{const{clientId:i,token:o,notificationType:c,enableEncrypted:l=!1}=n,f=`${$S}/${this.projectId}/clients`;await M9(f,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({client_id:i,type:c,token:o,always_raw:l})})},this.logger=on(r,this.context)}}var iD=Object.defineProperty,nw=Object.getOwnPropertySymbols,sD=Object.prototype.hasOwnProperty,oD=Object.prototype.propertyIsEnumerable,iw=(t,e,r)=>e in t?iD(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,sw=(t,e)=>{for(var r in e||(e={}))sD.call(e,r)&&iw(t,r,e[r]);if(nw)for(var r of nw(e))oD.call(e,r)&&iw(t,r,e[r]);return t};class p0 extends px{constructor(e){var r;super(e),this.protocol=Kv,this.version=nS,this.name=u0,this.events=new Dr.exports.EventEmitter,this.initialized=!1,this.on=(c,l)=>this.events.on(c,l),this.once=(c,l)=>this.events.once(c,l),this.off=(c,l)=>this.events.off(c,l),this.removeListener=(c,l)=>this.events.removeListener(c,l),this.projectId=e?.projectId,this.relayUrl=e?.relayUrl||Gv,this.customStoragePrefix=e!=null&&e.customStoragePrefix?`:${e.customStoragePrefix}`:"";const n=Gl({level:typeof e?.logger=="string"&&e.logger?e.logger:iS.logger}),{logger:i,chunkLoggerController:o}=dx({opts:n,maxSizeInBytes:e?.maxLogBlobSizeInBytes,loggerOverride:e?.logger});this.logChunkController=o,(r=this.logChunkController)!=null&&r.downloadLogsBlobInBrowser&&(window.downloadLogsBlobInBrowser=async()=>{var c,l;(c=this.logChunkController)!=null&&c.downloadLogsBlobInBrowser&&((l=this.logChunkController)==null||l.downloadLogsBlobInBrowser({clientId:await this.crypto.getClientId()}))}),this.logger=on(i,this.name),this.heartbeat=new Zo.HeartBeat,this.crypto=new RS(this,this.logger,e?.keychain),this.history=new eD(this,this.logger),this.expirer=new tD(this,this.logger),this.storage=e!=null&&e.storage?e.storage:new p7(sw(sw({},sS),e?.storageOptions)),this.relayer=new YS({core:this,logger:this.logger,relayUrl:this.relayUrl,projectId:this.projectId}),this.pairing=new XS(this,this.logger),this.verify=new rD(this.projectId||"",this.logger),this.echoClient=new nD(this.projectId||"",this.logger)}static async init(e){const r=new p0(e);await r.initialize();const n=await r.crypto.getClientId();return await r.storage.setItem(_S,n),r}get context(){return sn(this.logger)}async start(){this.initialized||await this.initialize()}async getLogsBlob(){var e;return(e=this.logChunkController)==null?void 0:e.logsToBlob({clientId:await this.crypto.getClientId()})}async 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}}}const aD=p0,ow="wc",aw=2,cw="client",g0=`${ow}@${aw}:${cw}:`,m0={name:cw,logger:"error",controller:!1,relayUrl:"wss://relay.walletconnect.com"},lw="WALLETCONNECT_DEEPLINK_CHOICE",cD="proposal",uw="Proposal expired",lD="session",ia=_e.SEVEN_DAYS,uD="engine",Nn={wc_sessionPropose:{req:{ttl:_e.FIVE_MINUTES,prompt:!0,tag:1100},res:{ttl:_e.FIVE_MINUTES,prompt:!1,tag:1101}},wc_sessionSettle:{req:{ttl:_e.FIVE_MINUTES,prompt:!1,tag:1102},res:{ttl:_e.FIVE_MINUTES,prompt:!1,tag:1103}},wc_sessionUpdate:{req:{ttl:_e.ONE_DAY,prompt:!1,tag:1104},res:{ttl:_e.ONE_DAY,prompt:!1,tag:1105}},wc_sessionExtend:{req:{ttl:_e.ONE_DAY,prompt:!1,tag:1106},res:{ttl:_e.ONE_DAY,prompt:!1,tag:1107}},wc_sessionRequest:{req:{ttl:_e.FIVE_MINUTES,prompt:!0,tag:1108},res:{ttl:_e.FIVE_MINUTES,prompt:!1,tag:1109}},wc_sessionEvent:{req:{ttl:_e.FIVE_MINUTES,prompt:!0,tag:1110},res:{ttl:_e.FIVE_MINUTES,prompt:!1,tag:1111}},wc_sessionDelete:{req:{ttl:_e.ONE_DAY,prompt:!1,tag:1112},res:{ttl:_e.ONE_DAY,prompt:!1,tag:1113}},wc_sessionPing:{req:{ttl:_e.ONE_DAY,prompt:!1,tag:1114},res:{ttl:_e.ONE_DAY,prompt:!1,tag:1115}},wc_sessionAuthenticate:{req:{ttl:_e.ONE_HOUR,prompt:!0,tag:1116},res:{ttl:_e.ONE_HOUR,prompt:!1,tag:1117}}},v0={min:_e.FIVE_MINUTES,max:_e.SEVEN_DAYS},zi={idle:"IDLE",active:"ACTIVE"},hD="request",fD=["wc_sessionPropose","wc_sessionRequest","wc_authRequest"],dD="wc",pD="auth",gD="authKeys",mD="pairingTopics",vD="requests",eu=`${dD}@${1.5}:${pD}:`,tu=`${eu}:PUB_KEY`;var wD=Object.defineProperty,yD=Object.defineProperties,bD=Object.getOwnPropertyDescriptors,hw=Object.getOwnPropertySymbols,_D=Object.prototype.hasOwnProperty,ED=Object.prototype.propertyIsEnumerable,fw=(t,e,r)=>e in t?wD(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,Er=(t,e)=>{for(var r in e||(e={}))_D.call(e,r)&&fw(t,r,e[r]);if(hw)for(var r of hw(e))ED.call(e,r)&&fw(t,r,e[r]);return t},sa=(t,e)=>yD(t,bD(e));class AD extends Ix{constructor(e){super(e),this.name=uD,this.events=new Dr.exports,this.initialized=!1,this.requestQueue={state:zi.idle,queue:[]},this.sessionRequestQueue={state:zi.idle,queue:[]},this.requestQueueDelay=_e.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(Nn)}),this.initialized=!0,setTimeout(()=>{this.sessionRequestQueue.queue=this.getPendingSessionRequests(),this.processSessionRequestQueue()},_e.toMiliseconds(this.requestQueueDelay)))},this.connect=async r=>{await this.isInitialized();const n=sa(Er({},r),{requiredNamespaces:r.requiredNamespaces||{},optionalNamespaces:r.optionalNamespaces||{}});await this.isValidConnect(n);const{pairingTopic:i,requiredNamespaces:o,optionalNamespaces:c,sessionProperties:l,relays:f}=n;let h=i,g,_=!1;try{h&&(_=this.client.core.pairing.pairings.get(h).active)}catch(P){throw this.client.logger.error(`connect() -> pairing.get(${h}) failed`),P}if(!h||!_){const{topic:P,uri:F}=await this.client.core.pairing.create();h=P,g=F}if(!h){const{message:P}=me("NO_MATCHING_KEY",`connect() pairing topic: ${h}`);throw new Error(P)}const E=await this.client.core.crypto.generateKeyPair(),A=Nn.wc_sessionPropose.req.ttl||_e.FIVE_MINUTES,S=Nr(A),U=Er({requiredNamespaces:o,optionalNamespaces:c,relays:f??[{protocol:Vv}],proposer:{publicKey:E,metadata:this.client.metadata},expiryTimestamp:S},l&&{sessionProperties:l}),{reject:W,resolve:Y,done:B}=qs(A,uw);this.events.once(wt("session_connect"),async({error:P,session:F})=>{if(P)W(P);else if(F){F.self.publicKey=E;const j=sa(Er({},F),{requiredNamespaces:U.requiredNamespaces,optionalNamespaces:U.optionalNamespaces});await this.client.session.set(F.topic,j),await this.setExpiry(F.topic,F.expiry),h&&await this.client.core.pairing.updateMetadata({topic:h,metadata:F.peer.metadata}),Y(j)}});const z=await this.sendRequest({topic:h,method:"wc_sessionPropose",params:U,throwOnFailedPublish:!0});return await this.setProposal(z,Er({id:z},U)),{uri:g,approval:B}},this.pair=async r=>{await this.isInitialized();try{return await this.client.core.pairing.pair(r)}catch(n){throw this.client.logger.error("pair() failed"),n}},this.approve=async r=>{await this.isInitialized();try{await this.isValidApprove(r)}catch(B){throw this.client.logger.error("approve() -> isValidApprove() failed"),B}const{id:n,relayProtocol:i,namespaces:o,sessionProperties:c,sessionConfig:l}=r;let f;try{f=this.client.proposal.get(n)}catch(B){throw this.client.logger.error(`approve() -> proposal.get(${n}) failed`),B}let{pairingTopic:h,proposer:g,requiredNamespaces:_,optionalNamespaces:E}=f;h=h||"";const A=await this.client.core.crypto.generateKeyPair(),S=g.publicKey,U=await this.client.core.crypto.generateSharedKey(A,S),W=Er(Er({relay:{protocol:i??"irn"},namespaces:o,pairingTopic:h,controller:{publicKey:A,metadata:this.client.metadata},expiry:Nr(ia)},c&&{sessionProperties:c}),l&&{sessionConfig:l});await this.client.core.relayer.subscribe(U);const Y=sa(Er({},W),{topic:U,requiredNamespaces:_,optionalNamespaces:E,pairingTopic:h,acknowledged:!1,self:W.controller,peer:{publicKey:g.publicKey,metadata:g.metadata},controller:A});await this.client.session.set(U,Y);try{await this.sendResult({id:n,topic:h,result:{relay:{protocol:i??"irn"},responderPublicKey:A},throwOnFailedPublish:!0}),await this.sendRequest({topic:U,method:"wc_sessionSettle",params:W,throwOnFailedPublish:!0})}catch(B){throw this.client.logger.error(B),this.client.session.delete(U,Ut("USER_DISCONNECTED")),await this.client.core.relayer.unsubscribe(U),B}return await this.client.core.pairing.updateMetadata({topic:h,metadata:g.metadata}),await this.client.proposal.delete(n,Ut("USER_DISCONNECTED")),await this.client.core.pairing.activate({topic:h}),await this.setExpiry(U,Nr(ia)),{topic:U,acknowledged:()=>new Promise(B=>setTimeout(()=>B(this.client.session.get(U)),500))}},this.reject=async r=>{await this.isInitialized();try{await this.isValidReject(r)}catch(c){throw this.client.logger.error("reject() -> isValidReject() failed"),c}const{id:n,reason:i}=r;let o;try{o=this.client.proposal.get(n).pairingTopic}catch(c){throw this.client.logger.error(`reject() -> proposal.get(${n}) failed`),c}o&&(await this.sendError({id:n,topic:o,error:i}),await this.client.proposal.delete(n,Ut("USER_DISCONNECTED")))},this.update=async r=>{await this.isInitialized();try{await this.isValidUpdate(r)}catch(_){throw this.client.logger.error("update() -> isValidUpdate() failed"),_}const{topic:n,namespaces:i}=r,{done:o,resolve:c,reject:l}=qs(),f=us(),h=Js().toString(),g=this.client.session.get(n).namespaces;return this.events.once(wt("session_update",f),({error:_})=>{_?l(_):c()}),await this.client.session.update(n,{namespaces:i}),this.sendRequest({topic:n,method:"wc_sessionUpdate",params:{namespaces:i},throwOnFailedPublish:!0,clientRpcId:f,relayRpcId:h}).catch(_=>{this.client.logger.error(_),this.client.session.update(n,{namespaces:g}),l(_)}),{acknowledged:o}},this.extend=async r=>{await this.isInitialized();try{await this.isValidExtend(r)}catch(f){throw this.client.logger.error("extend() -> isValidExtend() failed"),f}const{topic:n}=r,i=us(),{done:o,resolve:c,reject:l}=qs();return this.events.once(wt("session_extend",i),({error:f})=>{f?l(f):c()}),await this.setExpiry(n,Nr(ia)),this.sendRequest({topic:n,method:"wc_sessionExtend",params:{},clientRpcId:i,throwOnFailedPublish:!0}).catch(f=>{l(f)}),{acknowledged:o}},this.request=async r=>{await this.isInitialized();try{await this.isValidRequest(r)}catch(A){throw this.client.logger.error("request() -> isValidRequest() failed"),A}const{chainId:n,request:i,topic:o,expiry:c=Nn.wc_sessionRequest.req.ttl}=r,l=this.client.session.get(o),f=us(),h=Js().toString(),{done:g,resolve:_,reject:E}=qs(c,"Request expired. Please try again.");return this.events.once(wt("session_request",f),({error:A,result:S})=>{A?E(A):_(S)}),await Promise.all([new Promise(async A=>{await this.sendRequest({clientRpcId:f,relayRpcId:h,topic:o,method:"wc_sessionRequest",params:{request:sa(Er({},i),{expiryTimestamp:Nr(c)}),chainId:n},expiry:c,throwOnFailedPublish:!0}).catch(S=>E(S)),this.client.events.emit("session_request_sent",{topic:o,request:i,chainId:n,id:f}),A()}),new Promise(async A=>{var S;if(!((S=l.sessionConfig)!=null&&S.disableDeepLink)){const U=await B_(this.client.core.storage,lw);L_({id:f,topic:o,wcDeepLink:U})}A()}),g()]).then(A=>A[2])},this.respond=async r=>{await this.isInitialized(),await this.isValidRespond(r);const{topic:n,response:i}=r,{id:o}=i;_i(i)?await this.sendResult({id:o,topic:n,result:i.result,throwOnFailedPublish:!0}):Mn(i)&&await this.sendError({id:o,topic:n,error:i.error}),this.cleanupAfterResponse(r)},this.ping=async r=>{await this.isInitialized();try{await this.isValidPing(r)}catch(i){throw this.client.logger.error("ping() -> isValidPing() failed"),i}const{topic:n}=r;if(this.client.session.keys.includes(n)){const i=us(),o=Js().toString(),{done:c,resolve:l,reject:f}=qs();this.events.once(wt("session_ping",i),({error:h})=>{h?f(h):l()}),await Promise.all([this.sendRequest({topic:n,method:"wc_sessionPing",params:{},throwOnFailedPublish:!0,clientRpcId:i,relayRpcId:o}),c()])}else this.client.core.pairing.pairings.keys.includes(n)&&await this.client.core.pairing.ping({topic:n})},this.emit=async r=>{await this.isInitialized(),await this.isValidEmit(r);const{topic:n,event:i,chainId:o}=r,c=Js().toString();await this.sendRequest({topic:n,method:"wc_sessionEvent",params:{event:i,chainId:o},throwOnFailedPublish:!0,relayRpcId:c})},this.disconnect=async r=>{await this.isInitialized(),await this.isValidDisconnect(r);const{topic:n}=r;if(this.client.session.keys.includes(n))await this.sendRequest({topic:n,method:"wc_sessionDelete",params:Ut("USER_DISCONNECTED"),throwOnFailedPublish:!0}),await this.deleteSession({topic:n,emitEvent:!1});else if(this.client.core.pairing.pairings.keys.includes(n))await this.client.core.pairing.disconnect({topic:n});else{const{message:i}=me("MISMATCHED_TOPIC",`Session or pairing topic not found: ${n}`);throw new Error(i)}},this.find=r=>(this.isInitialized(),this.client.session.getAll().filter(n=>cA(n,r))),this.getPendingSessionRequests=()=>this.client.pendingRequest.getAll(),this.authenticate=async r=>{this.isInitialized(),this.isValidAuthenticate(r);const{chains:n,statement:i="",uri:o,domain:c,nonce:l,type:f,exp:h,nbf:g,methods:_=[]}=r,E=[...r.resources||[]],{topic:A,uri:S}=await this.client.core.pairing.create({methods:["wc_sessionAuthenticate"]});this.client.logger.info({message:"Generated new pairing",pairing:{topic:A,uri:S}});const U=await this.client.core.crypto.generateKeyPair(),W=Rl(U);if(await Promise.all([this.client.auth.authKeys.set(tu,{responseTopic:W,publicKey:U}),this.client.auth.pairingTopics.set(W,{topic:W,pairingTopic:A})]),await this.client.core.relayer.subscribe(W),this.client.logger.info(`sending request to new pairing topic: ${A}`),_.length>0){const{namespace:fe}=wl(n[0]);let d=TE(fe,"request",_);Nl(E)&&(d=NE(d,E.pop())),E.push(d)}const Y=Nr(Nn.wc_sessionPropose.req.ttl),B={authPayload:{type:f??"caip122",chains:n,statement:i,aud:o,domain:c,version:"1",nonce:l,iat:new Date().toISOString(),exp:h,nbf:g,resources:E},requester:{publicKey:U,metadata:this.client.metadata},expiryTimestamp:Y},z={eip155:{chains:n,methods:[...new Set(["personal_sign",..._])],events:["chainChanged","accountsChanged"]}},P={requiredNamespaces:{},optionalNamespaces:z,relays:[{protocol:"irn"}],proposer:{publicKey:U,metadata:this.client.metadata},expiryTimestamp:Y},{done:F,resolve:j,reject:m}=qs(Nn.wc_sessionAuthenticate.req.ttl,"Request expired"),T=async({error:fe,session:d})=>{if(this.events.off(wt("session_request",ee),te),fe)m(fe);else if(d){d.self.publicKey=U,await this.client.session.set(d.topic,d),await this.setExpiry(d.topic,d.expiry),A&&await this.client.core.pairing.updateMetadata({topic:A,metadata:d.peer.metadata});const p=this.client.session.get(d.topic);j({session:p})}},te=async fe=>{if(fe.error){const L=Ut("WC_METHOD_UNSUPPORTED","wc_sessionAuthenticate");return fe.error.code===L.code?void 0:(this.events.off(wt("session_connect"),T),m(fe.error.message))}this.events.off(wt("session_connect"),T);const{cacaos:d,responder:p}=fe.result,b=[],D=[];for(const L of d){await mm({cacao:L,projectId:this.client.core.projectId})||(this.client.logger.error(L,"Signature verification failed"),m(Ut("SESSION_SETTLEMENT_FAILED","Signature verification failed")));const{p:C}=L,v=Nl(C.resources),N=[gm(C.iss)],oe=$l(C.iss);if(v){const pe=ym(v),x=bm(v);b.push(...pe),N.push(...x)}for(const pe of N)D.push(`${pe}:${oe}`)}const O=await this.client.core.crypto.generateSharedKey(U,p.publicKey);let $;b.length>0&&($={topic:O,acknowledged:!0,self:{publicKey:U,metadata:this.client.metadata},peer:p,controller:p.publicKey,expiry:Nr(ia),requiredNamespaces:{},optionalNamespaces:{},relay:{protocol:"irn"},pairingTopic:A,namespaces:Pm([...new Set(b)],[...new Set(D)])},await this.client.core.relayer.subscribe(O),await this.client.session.set(O,$),$=this.client.session.get(O)),j({auths:d,session:$})},ee=us(),ne=us();this.events.once(wt("session_connect"),T),this.events.once(wt("session_request",ee),te);try{await Promise.all([this.sendRequest({topic:A,method:"wc_sessionAuthenticate",params:B,expiry:r.expiry,throwOnFailedPublish:!0,clientRpcId:ee}),this.sendRequest({topic:A,method:"wc_sessionPropose",params:P,expiry:Nn.wc_sessionPropose.req.ttl,throwOnFailedPublish:!0,clientRpcId:ne})])}catch(fe){throw this.events.off(wt("session_connect"),T),this.events.off(wt("session_request",ee),te),fe}return await this.setProposal(ne,Er({id:ne},P)),await this.client.auth.requests.set(ee,{authPayload:B.authPayload,requester:B.requester,expiryTimestamp:Y,id:ee,pairingTopic:A,verifyContext:{}}),{uri:S,response:F}},this.approveSessionAuthenticate=async r=>{this.isInitialized();const{id:n,auths:i}=r,o=this.getPendingAuthRequest(n);if(!o)throw new Error(`Could not find pending auth request with id ${n}`);const c=o.requester.publicKey,l=await this.client.core.crypto.generateKeyPair(),f=Rl(c),h={type:ls,receiverPublicKey:c,senderPublicKey:l},g=[],_=[];for(const S of i){if(!await mm({cacao:S,projectId:this.client.core.projectId})){const z=Ut("SESSION_SETTLEMENT_FAILED","Signature verification failed");throw await this.sendError({id:n,topic:f,error:z,encodeOpts:h}),new Error(z.message)}const{p:U}=S,W=Nl(U.resources),Y=[gm(U.iss)],B=$l(U.iss);if(W){const z=ym(W),P=bm(W);g.push(...z),Y.push(...P)}for(const z of Y)_.push(`${z}:${B}`)}const E=await this.client.core.crypto.generateSharedKey(l,c);let A;return g?.length>0&&(A={topic:E,acknowledged:!0,self:{publicKey:l,metadata:this.client.metadata},peer:{publicKey:c,metadata:o.requester.metadata},controller:c,expiry:Nr(ia),authentication:i,requiredNamespaces:{},optionalNamespaces:{},relay:{protocol:"irn"},pairingTopic:"",namespaces:Pm([...new Set(g)],[...new Set(_)])},await this.client.core.relayer.subscribe(E),await this.client.session.set(E,A)),await this.sendResult({topic:f,id:n,result:{cacaos:i,responder:{publicKey:l,metadata:this.client.metadata}},encodeOpts:h,throwOnFailedPublish:!0}),await this.client.auth.requests.delete(n,{message:"fullfilled",code:0}),await this.client.core.pairing.activate({topic:o.pairingTopic}),{session:A}},this.rejectSessionAuthenticate=async r=>{await this.isInitialized();const{id:n,reason:i}=r,o=this.getPendingAuthRequest(n);if(!o)throw new Error(`Could not find pending auth request with id ${n}`);const c=o.requester.publicKey,l=await this.client.core.crypto.generateKeyPair(),f=Rl(c),h={type:ls,receiverPublicKey:c,senderPublicKey:l};await this.sendError({id:n,topic:f,error:i,encodeOpts:h}),await this.client.auth.requests.delete(n,{message:"rejected",code:0}),await this.client.proposal.delete(n,Ut("USER_DISCONNECTED"))},this.formatAuthMessage=r=>{this.isInitialized();const{request:n,iss:i}=r;return vm(n,i)},this.cleanupDuplicatePairings=async r=>{if(r.pairingTopic)try{const n=this.client.core.pairing.pairings.get(r.pairingTopic),i=this.client.core.pairing.pairings.getAll().filter(o=>{var c,l;return((c=o.peerMetadata)==null?void 0:c.url)&&((l=o.peerMetadata)==null?void 0:l.url)===r.peer.metadata.url&&o.topic&&o.topic!==n.topic});if(i.length===0)return;this.client.logger.info(`Cleaning up ${i.length} duplicate pairing(s)`),await Promise.all(i.map(o=>this.client.core.pairing.disconnect({topic:o.topic}))),this.client.logger.info("Duplicate pairings clean up finished")}catch(n){this.client.logger.error(n)}},this.deleteSession=async r=>{const{topic:n,expirerHasDeleted:i=!1,emitEvent:o=!0,id:c=0}=r,{self:l}=this.client.session.get(n);await this.client.core.relayer.unsubscribe(n),await this.client.session.delete(n,Ut("USER_DISCONNECTED")),this.addToRecentlyDeleted(n,"session"),this.client.core.crypto.keychain.has(l.publicKey)&&await this.client.core.crypto.deleteKeyPair(l.publicKey),this.client.core.crypto.keychain.has(n)&&await this.client.core.crypto.deleteSymKey(n),i||this.client.core.expirer.del(n),this.client.core.storage.removeItem(lw).catch(f=>this.client.logger.warn(f)),this.getPendingSessionRequests().forEach(f=>{f.topic===n&&this.deletePendingSessionRequest(f.id,Ut("USER_DISCONNECTED"))}),o&&this.client.events.emit("session_delete",{id:c,topic:n})},this.deleteProposal=async(r,n)=>{await Promise.all([this.client.proposal.delete(r,Ut("USER_DISCONNECTED")),n?Promise.resolve():this.client.core.expirer.del(r)]),this.addToRecentlyDeleted(r,"proposal")},this.deletePendingSessionRequest=async(r,n,i=!1)=>{await Promise.all([this.client.pendingRequest.delete(r,n),i?Promise.resolve():this.client.core.expirer.del(r)]),this.addToRecentlyDeleted(r,"request"),this.sessionRequestQueue.queue=this.sessionRequestQueue.queue.filter(o=>o.id!==r),i&&(this.sessionRequestQueue.state=zi.idle,this.client.events.emit("session_request_expire",{id:r}))},this.setExpiry=async(r,n)=>{this.client.session.keys.includes(r)&&await this.client.session.update(r,{expiry:n}),this.client.core.expirer.set(r,n)},this.setProposal=async(r,n)=>{await this.client.proposal.set(r,n),this.client.core.expirer.set(r,Nr(Nn.wc_sessionPropose.req.ttl))},this.setPendingSessionRequest=async r=>{const{id:n,topic:i,params:o,verifyContext:c}=r,l=o.request.expiryTimestamp||Nr(Nn.wc_sessionRequest.req.ttl);await this.client.pendingRequest.set(n,{id:n,topic:i,params:o,verifyContext:c}),l&&this.client.core.expirer.set(n,l)},this.sendRequest=async r=>{const{topic:n,method:i,params:o,expiry:c,relayRpcId:l,clientRpcId:f,throwOnFailedPublish:h}=r,g=ta(i,o,f);if(Fo()&&fD.includes(i)){const A=Ws(JSON.stringify(g));this.client.core.verify.register({attestationId:A})}let _;try{_=await this.client.core.crypto.encode(n,g)}catch(A){throw await this.cleanup(),this.client.logger.error(`sendRequest() -> core.crypto.encode() for topic ${n} failed`),A}const E=Nn[i].req;return c&&(E.ttl=c),l&&(E.id=l),this.client.core.history.set(n,g),h?(E.internal=sa(Er({},E.internal),{throwOnFailedPublish:!0}),await this.client.core.relayer.publish(n,_,E)):this.client.core.relayer.publish(n,_,E).catch(A=>this.client.logger.error(A)),g.id},this.sendResult=async r=>{const{id:n,topic:i,result:o,throwOnFailedPublish:c,encodeOpts:l}=r,f=Jl(n,o);let h;try{h=await this.client.core.crypto.encode(i,f,l)}catch(E){throw await this.cleanup(),this.client.logger.error(`sendResult() -> core.crypto.encode() for topic ${i} failed`),E}let g;try{g=await this.client.core.history.get(i,n)}catch(E){throw this.client.logger.error(`sendResult() -> history.get(${i}, ${n}) failed`),E}const _=Nn[g.request.method].res;c?(_.internal=sa(Er({},_.internal),{throwOnFailedPublish:!0}),await this.client.core.relayer.publish(i,h,_)):this.client.core.relayer.publish(i,h,_).catch(E=>this.client.logger.error(E)),await this.client.core.history.resolve(f)},this.sendError=async r=>{const{id:n,topic:i,error:o,encodeOpts:c}=r,l=Ql(n,o);let f;try{f=await this.client.core.crypto.encode(i,l,c)}catch(_){throw await this.cleanup(),this.client.logger.error(`sendError() -> core.crypto.encode() for topic ${i} failed`),_}let h;try{h=await this.client.core.history.get(i,n)}catch(_){throw this.client.logger.error(`sendError() -> history.get(${i}, ${n}) failed`),_}const g=Nn[h.request.method].res;this.client.core.relayer.publish(i,f,g),await this.client.core.history.resolve(l)},this.cleanup=async()=>{const r=[],n=[];this.client.session.getAll().forEach(i=>{let o=!1;ss(i.expiry)&&(o=!0),this.client.core.crypto.keychain.has(i.topic)||(o=!0),o&&r.push(i.topic)}),this.client.proposal.getAll().forEach(i=>{ss(i.expiryTimestamp)&&n.push(i.id)}),await Promise.all([...r.map(i=>this.deleteSession({topic:i})),...n.map(i=>this.deleteProposal(i))])},this.onRelayEventRequest=async r=>{this.requestQueue.queue.push(r),await this.processRequestsQueue()},this.processRequestsQueue=async()=>{if(this.requestQueue.state===zi.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=zi.active;const r=this.requestQueue.queue.shift();if(r)try{this.processRequest(r),await new Promise(n=>setTimeout(n,300))}catch(n){this.client.logger.warn(n)}}this.requestQueue.state=zi.idle},this.processRequest=r=>{const{topic:n,payload:i}=r,o=i.method;if(!this.shouldIgnorePairingRequest({topic:n,requestMethod:o}))switch(o){case"wc_sessionPropose":return this.onSessionProposeRequest(n,i);case"wc_sessionSettle":return this.onSessionSettleRequest(n,i);case"wc_sessionUpdate":return this.onSessionUpdateRequest(n,i);case"wc_sessionExtend":return this.onSessionExtendRequest(n,i);case"wc_sessionPing":return this.onSessionPingRequest(n,i);case"wc_sessionDelete":return this.onSessionDeleteRequest(n,i);case"wc_sessionRequest":return this.onSessionRequest(n,i);case"wc_sessionEvent":return this.onSessionEventRequest(n,i);case"wc_sessionAuthenticate":return this.onSessionAuthenticateRequest(n,i);default:return this.client.logger.info(`Unsupported request method ${o}`)}},this.onRelayEventResponse=async r=>{const{topic:n,payload:i}=r,o=(await this.client.core.history.get(n,i.id)).request.method;switch(o){case"wc_sessionPropose":return this.onSessionProposeResponse(n,i);case"wc_sessionSettle":return this.onSessionSettleResponse(n,i);case"wc_sessionUpdate":return this.onSessionUpdateResponse(n,i);case"wc_sessionExtend":return this.onSessionExtendResponse(n,i);case"wc_sessionPing":return this.onSessionPingResponse(n,i);case"wc_sessionRequest":return this.onSessionRequestResponse(n,i);case"wc_sessionAuthenticate":return this.onSessionAuthenticateResponse(n,i);default:return this.client.logger.info(`Unsupported response method ${o}`)}},this.onRelayEventUnknownPayload=r=>{const{topic:n}=r,{message:i}=me("MISSING_OR_INVALID",`Decoded payload on topic ${n} is not identifiable as a JSON-RPC request or a response.`);throw new Error(i)},this.shouldIgnorePairingRequest=r=>{const{topic:n,requestMethod:i}=r,o=this.expectedPairingMethodMap.get(n);return!o||o.includes(i)?!1:!!(o.includes("wc_sessionAuthenticate")&&this.client.events.listenerCount("session_authenticate")>0)},this.onSessionProposeRequest=async(r,n)=>{const{params:i,id:o}=n;try{this.isValidConnect(Er({},n.params));const c=i.expiryTimestamp||Nr(Nn.wc_sessionPropose.req.ttl),l=Er({id:o,pairingTopic:r,expiryTimestamp:c},i);await this.setProposal(o,l);const f=Ws(JSON.stringify(n)),h=await this.getVerifyContext(f,l.proposer.metadata);this.client.events.emit("session_proposal",{id:o,params:l,verifyContext:h})}catch(c){await this.sendError({id:o,topic:r,error:c}),this.client.logger.error(c)}},this.onSessionProposeResponse=async(r,n)=>{const{id:i}=n;if(_i(n)){const{result:o}=n;this.client.logger.trace({type:"method",method:"onSessionProposeResponse",result:o});const c=this.client.proposal.get(i);this.client.logger.trace({type:"method",method:"onSessionProposeResponse",proposal:c});const l=c.proposer.publicKey;this.client.logger.trace({type:"method",method:"onSessionProposeResponse",selfPublicKey:l});const f=o.responderPublicKey;this.client.logger.trace({type:"method",method:"onSessionProposeResponse",peerPublicKey:f});const h=await this.client.core.crypto.generateSharedKey(l,f);this.client.logger.trace({type:"method",method:"onSessionProposeResponse",sessionTopic:h});const g=await this.client.core.relayer.subscribe(h);this.client.logger.trace({type:"method",method:"onSessionProposeResponse",subscriptionId:g}),await this.client.core.pairing.activate({topic:r})}else if(Mn(n)){await this.client.proposal.delete(i,Ut("USER_DISCONNECTED"));const o=wt("session_connect");if(this.events.listenerCount(o)===0)throw new Error(`emitting ${o} without any listeners, 954`);this.events.emit(wt("session_connect"),{error:n.error})}},this.onSessionSettleRequest=async(r,n)=>{const{id:i,params:o}=n;try{this.isValidSessionSettleRequest(o);const{relay:c,controller:l,expiry:f,namespaces:h,sessionProperties:g,pairingTopic:_,sessionConfig:E}=n.params,A=Er(Er({topic:r,relay:c,expiry:f,namespaces:h,acknowledged:!0,pairingTopic:_,requiredNamespaces:{},optionalNamespaces:{},controller:l.publicKey,self:{publicKey:"",metadata:this.client.metadata},peer:{publicKey:l.publicKey,metadata:l.metadata}},g&&{sessionProperties:g}),E&&{sessionConfig:E});await this.sendResult({id:n.id,topic:r,result:!0,throwOnFailedPublish:!0});const S=wt("session_connect");if(this.events.listenerCount(S)===0)throw new Error(`emitting ${S} without any listeners 997`);this.events.emit(wt("session_connect"),{session:A}),this.cleanupDuplicatePairings(A)}catch(c){await this.sendError({id:i,topic:r,error:c}),this.client.logger.error(c)}},this.onSessionSettleResponse=async(r,n)=>{const{id:i}=n;_i(n)?(await this.client.session.update(r,{acknowledged:!0}),this.events.emit(wt("session_approve",i),{})):Mn(n)&&(await this.client.session.delete(r,Ut("USER_DISCONNECTED")),this.events.emit(wt("session_approve",i),{error:n.error}))},this.onSessionUpdateRequest=async(r,n)=>{const{params:i,id:o}=n;try{const c=`${r}_session_update`,l=cc.get(c);if(l&&this.isRequestOutOfSync(l,o)){this.client.logger.info(`Discarding out of sync request - ${o}`),this.sendError({id:o,topic:r,error:Ut("INVALID_UPDATE_REQUEST")});return}this.isValidUpdate(Er({topic:r},i));try{cc.set(c,o),await this.client.session.update(r,{namespaces:i.namespaces}),await this.sendResult({id:o,topic:r,result:!0,throwOnFailedPublish:!0})}catch(f){throw cc.delete(c),f}this.client.events.emit("session_update",{id:o,topic:r,params:i})}catch(c){await this.sendError({id:o,topic:r,error:c}),this.client.logger.error(c)}},this.isRequestOutOfSync=(r,n)=>parseInt(n.toString().slice(0,-3))<=parseInt(r.toString().slice(0,-3)),this.onSessionUpdateResponse=(r,n)=>{const{id:i}=n,o=wt("session_update",i);if(this.events.listenerCount(o)===0)throw new Error(`emitting ${o} without any listeners`);_i(n)?this.events.emit(wt("session_update",i),{}):Mn(n)&&this.events.emit(wt("session_update",i),{error:n.error})},this.onSessionExtendRequest=async(r,n)=>{const{id:i}=n;try{this.isValidExtend({topic:r}),await this.setExpiry(r,Nr(ia)),await this.sendResult({id:i,topic:r,result:!0,throwOnFailedPublish:!0}),this.client.events.emit("session_extend",{id:i,topic:r})}catch(o){await this.sendError({id:i,topic:r,error:o}),this.client.logger.error(o)}},this.onSessionExtendResponse=(r,n)=>{const{id:i}=n,o=wt("session_extend",i);if(this.events.listenerCount(o)===0)throw new Error(`emitting ${o} without any listeners`);_i(n)?this.events.emit(wt("session_extend",i),{}):Mn(n)&&this.events.emit(wt("session_extend",i),{error:n.error})},this.onSessionPingRequest=async(r,n)=>{const{id:i}=n;try{this.isValidPing({topic:r}),await this.sendResult({id:i,topic:r,result:!0,throwOnFailedPublish:!0}),this.client.events.emit("session_ping",{id:i,topic:r})}catch(o){await this.sendError({id:i,topic:r,error:o}),this.client.logger.error(o)}},this.onSessionPingResponse=(r,n)=>{const{id:i}=n,o=wt("session_ping",i);if(this.events.listenerCount(o)===0)throw new Error(`emitting ${o} without any listeners`);setTimeout(()=>{_i(n)?this.events.emit(wt("session_ping",i),{}):Mn(n)&&this.events.emit(wt("session_ping",i),{error:n.error})},500)},this.onSessionDeleteRequest=async(r,n)=>{const{id:i}=n;try{this.isValidDisconnect({topic:r,reason:n.params}),await Promise.all([new Promise(o=>{this.client.core.relayer.once(wn.publish,async()=>{o(await this.deleteSession({topic:r,id:i}))})}),this.sendResult({id:i,topic:r,result:!0,throwOnFailedPublish:!0}),this.cleanupPendingSentRequestsForTopic({topic:r,error:Ut("USER_DISCONNECTED")})])}catch(o){this.client.logger.error(o)}},this.onSessionRequest=async(r,n)=>{const{id:i,params:o}=n;try{await this.isValidRequest(Er({topic:r},o));const c=Ws(JSON.stringify(ta("wc_sessionRequest",o,i))),l=this.client.session.get(r),f=await this.getVerifyContext(c,l.peer.metadata),h={id:i,topic:r,params:o,verifyContext:f};await this.setPendingSessionRequest(h),this.addSessionRequestToSessionRequestQueue(h),this.processSessionRequestQueue()}catch(c){await this.sendError({id:i,topic:r,error:c}),this.client.logger.error(c)}},this.onSessionRequestResponse=(r,n)=>{const{id:i}=n,o=wt("session_request",i);if(this.events.listenerCount(o)===0)throw new Error(`emitting ${o} without any listeners`);_i(n)?this.events.emit(wt("session_request",i),{result:n.result}):Mn(n)&&this.events.emit(wt("session_request",i),{error:n.error})},this.onSessionEventRequest=async(r,n)=>{const{id:i,params:o}=n;try{const c=`${r}_session_event_${o.event.name}`,l=cc.get(c);if(l&&this.isRequestOutOfSync(l,i)){this.client.logger.info(`Discarding out of sync request - ${i}`);return}this.isValidEmit(Er({topic:r},o)),this.client.events.emit("session_event",{id:i,topic:r,params:o}),cc.set(c,i)}catch(c){await this.sendError({id:i,topic:r,error:c}),this.client.logger.error(c)}},this.onSessionAuthenticateResponse=(r,n)=>{const{id:i}=n;this.client.logger.trace({type:"method",method:"onSessionAuthenticateResponse",topic:r,payload:n}),_i(n)?this.events.emit(wt("session_request",i),{result:n.result}):Mn(n)&&this.events.emit(wt("session_request",i),{error:n.error})},this.onSessionAuthenticateRequest=async(r,n)=>{const{requester:i,authPayload:o,expiryTimestamp:c}=n.params,l=Ws(JSON.stringify(n)),f=await this.getVerifyContext(l,this.client.metadata),h={requester:i,pairingTopic:r,id:n.id,authPayload:o,verifyContext:f,expiryTimestamp:c};await this.client.auth.requests.set(n.id,h),this.client.events.emit("session_authenticate",{topic:r,params:n.params,id:n.id})},this.addSessionRequestToSessionRequestQueue=r=>{this.sessionRequestQueue.queue.push(r)},this.cleanupAfterResponse=r=>{this.deletePendingSessionRequest(r.response.id,{message:"fulfilled",code:0}),setTimeout(()=>{this.sessionRequestQueue.state=zi.idle,this.processSessionRequestQueue()},_e.toMiliseconds(this.requestQueueDelay))},this.cleanupPendingSentRequestsForTopic=({topic:r,error:n})=>{const i=this.client.core.history.pending;i.length>0&&i.filter(o=>o.topic===r&&o.request.method==="wc_sessionRequest").forEach(o=>{const c=o.request.id,l=wt("session_request",c);if(this.events.listenerCount(l)===0)throw new Error(`emitting ${l} without any listeners`);this.events.emit(wt("session_request",o.request.id),{error:n})})},this.processSessionRequestQueue=()=>{if(this.sessionRequestQueue.state===zi.active){this.client.logger.info("session request queue is already active.");return}const r=this.sessionRequestQueue.queue[0];if(!r){this.client.logger.info("session request queue is empty.");return}try{this.sessionRequestQueue.state=zi.active,this.client.events.emit("session_request",r)}catch(n){this.client.logger.error(n)}},this.onPairingCreated=r=>{if(r.methods&&this.expectedPairingMethodMap.set(r.topic,r.methods),r.active)return;const n=this.client.proposal.getAll().find(i=>i.pairingTopic===r.topic);n&&this.onSessionProposeRequest(r.topic,ta("wc_sessionPropose",{requiredNamespaces:n.requiredNamespaces,optionalNamespaces:n.optionalNamespaces,relays:n.relays,proposer:n.proposer,sessionProperties:n.sessionProperties},n.id))},this.isValidConnect=async r=>{if(!rn(r)){const{message:f}=me("MISSING_OR_INVALID",`connect() params: ${JSON.stringify(r)}`);throw new Error(f)}const{pairingTopic:n,requiredNamespaces:i,optionalNamespaces:o,sessionProperties:c,relays:l}=r;if(Hr(n)||await this.isValidPairingTopic(n),!bA(l,!0)){const{message:f}=me("MISSING_OR_INVALID",`connect() relays: ${l}`);throw new Error(f)}!Hr(i)&&ac(i)!==0&&this.validateNamespaces(i,"requiredNamespaces"),!Hr(o)&&ac(o)!==0&&this.validateNamespaces(o,"optionalNamespaces"),Hr(c)||this.validateSessionProps(c,"sessionProperties")},this.validateNamespaces=(r,n)=>{const i=yA(r,"connect()",n);if(i)throw new Error(i.message)},this.isValidApprove=async r=>{if(!rn(r))throw new Error(me("MISSING_OR_INVALID",`approve() params: ${r}`).message);const{id:n,namespaces:i,relayProtocol:o,sessionProperties:c}=r;this.checkRecentlyDeleted(n),await this.isValidProposalId(n);const l=this.client.proposal.get(n),f=kf(i,"approve()");if(f)throw new Error(f.message);const h=Rm(l.requiredNamespaces,i,"approve()");if(h)throw new Error(h.message);if(!ur(o,!0)){const{message:g}=me("MISSING_OR_INVALID",`approve() relayProtocol: ${o}`);throw new Error(g)}Hr(c)||this.validateSessionProps(c,"sessionProperties")},this.isValidReject=async r=>{if(!rn(r)){const{message:o}=me("MISSING_OR_INVALID",`reject() params: ${r}`);throw new Error(o)}const{id:n,reason:i}=r;if(this.checkRecentlyDeleted(n),await this.isValidProposalId(n),!EA(i)){const{message:o}=me("MISSING_OR_INVALID",`reject() reason: ${JSON.stringify(i)}`);throw new Error(o)}},this.isValidSessionSettleRequest=r=>{if(!rn(r)){const{message:h}=me("MISSING_OR_INVALID",`onSessionSettleRequest() params: ${r}`);throw new Error(h)}const{relay:n,controller:i,namespaces:o,expiry:c}=r;if(!$m(n)){const{message:h}=me("MISSING_OR_INVALID","onSessionSettleRequest() relay protocol should be a string");throw new Error(h)}const l=dA(i,"onSessionSettleRequest()");if(l)throw new Error(l.message);const f=kf(o,"onSessionSettleRequest()");if(f)throw new Error(f.message);if(ss(c)){const{message:h}=me("EXPIRED","onSessionSettleRequest()");throw new Error(h)}},this.isValidUpdate=async r=>{if(!rn(r)){const{message:f}=me("MISSING_OR_INVALID",`update() params: ${r}`);throw new Error(f)}const{topic:n,namespaces:i}=r;this.checkRecentlyDeleted(n),await this.isValidSessionTopic(n);const o=this.client.session.get(n),c=kf(i,"update()");if(c)throw new Error(c.message);const l=Rm(o.requiredNamespaces,i,"update()");if(l)throw new Error(l.message)},this.isValidExtend=async r=>{if(!rn(r)){const{message:i}=me("MISSING_OR_INVALID",`extend() params: ${r}`);throw new Error(i)}const{topic:n}=r;this.checkRecentlyDeleted(n),await this.isValidSessionTopic(n)},this.isValidRequest=async r=>{if(!rn(r)){const{message:f}=me("MISSING_OR_INVALID",`request() params: ${r}`);throw new Error(f)}const{topic:n,request:i,chainId:o,expiry:c}=r;this.checkRecentlyDeleted(n),await this.isValidSessionTopic(n);const{namespaces:l}=this.client.session.get(n);if(!Nm(l,o)){const{message:f}=me("MISSING_OR_INVALID",`request() chainId: ${o}`);throw new Error(f)}if(!AA(i)){const{message:f}=me("MISSING_OR_INVALID",`request() ${JSON.stringify(i)}`);throw new Error(f)}if(!SA(l,o,i.method)){const{message:f}=me("MISSING_OR_INVALID",`request() method: ${i.method}`);throw new Error(f)}if(c&&!PA(c,v0)){const{message:f}=me("MISSING_OR_INVALID",`request() expiry: ${c}. Expiry must be a number (in seconds) between ${v0.min} and ${v0.max}`);throw new Error(f)}},this.isValidRespond=async r=>{var n;if(!rn(r)){const{message:c}=me("MISSING_OR_INVALID",`respond() params: ${r}`);throw new Error(c)}const{topic:i,response:o}=r;try{await this.isValidSessionTopic(i)}catch(c){throw(n=r?.response)!=null&&n.id&&this.cleanupAfterResponse(r),c}if(!xA(o)){const{message:c}=me("MISSING_OR_INVALID",`respond() response: ${JSON.stringify(o)}`);throw new Error(c)}},this.isValidPing=async r=>{if(!rn(r)){const{message:i}=me("MISSING_OR_INVALID",`ping() params: ${r}`);throw new Error(i)}const{topic:n}=r;await this.isValidSessionOrPairingTopic(n)},this.isValidEmit=async r=>{if(!rn(r)){const{message:l}=me("MISSING_OR_INVALID",`emit() params: ${r}`);throw new Error(l)}const{topic:n,event:i,chainId:o}=r;await this.isValidSessionTopic(n);const{namespaces:c}=this.client.session.get(n);if(!Nm(c,o)){const{message:l}=me("MISSING_OR_INVALID",`emit() chainId: ${o}`);throw new Error(l)}if(!IA(i)){const{message:l}=me("MISSING_OR_INVALID",`emit() event: ${JSON.stringify(i)}`);throw new Error(l)}if(!DA(c,o,i.name)){const{message:l}=me("MISSING_OR_INVALID",`emit() event: ${JSON.stringify(i)}`);throw new Error(l)}},this.isValidDisconnect=async r=>{if(!rn(r)){const{message:i}=me("MISSING_OR_INVALID",`disconnect() params: ${r}`);throw new Error(i)}const{topic:n}=r;await this.isValidSessionOrPairingTopic(n)},this.isValidAuthenticate=r=>{const{chains:n,uri:i,domain:o,nonce:c}=r;if(!Array.isArray(n)||n.length===0)throw new Error("chains is required and must be a non-empty array");if(!ur(i,!1))throw new Error("uri is required parameter");if(!ur(o,!1))throw new Error("domain is required parameter");if(!ur(c,!1))throw new Error("nonce is required parameter");if([...new Set(n.map(f=>wl(f).namespace))].length>1)throw new Error("Multi-namespace requests are not supported. Please request single namespace only.");const{namespace:l}=wl(n[0]);if(l!=="eip155")throw new Error("Only eip155 namespace is supported for authenticated sessions. Please use .connect() for non-eip155 chains.")},this.getVerifyContext=async(r,n)=>{const i={verified:{verifyUrl:n.verifyUrl||na,validation:"UNKNOWN",origin:n.url||""}};try{const o=await this.client.core.verify.resolve({attestationId:r,verifyUrl:n.verifyUrl});o&&(i.verified.origin=o.origin,i.verified.isScam=o.isScam,i.verified.validation=o.origin===new URL(n.url).origin?"VALID":"INVALID")}catch(o){this.client.logger.info(o)}return this.client.logger.info(`Verify context: ${JSON.stringify(i)}`),i},this.validateSessionProps=(r,n)=>{Object.values(r).forEach(i=>{if(!ur(i,!1)){const{message:o}=me("MISSING_OR_INVALID",`${n} must be in Record<string, string> format. Received: ${JSON.stringify(i)}`);throw new Error(o)}})},this.getPendingAuthRequest=r=>{const n=this.client.auth.requests.get(r);return typeof n=="object"?n:void 0},this.addToRecentlyDeleted=(r,n)=>{if(this.recentlyDeletedMap.set(r,n),this.recentlyDeletedMap.size>=this.recentlyDeletedLimit){let i=0;const o=this.recentlyDeletedLimit/2;for(const c of this.recentlyDeletedMap.keys()){if(i++>=o)break;this.recentlyDeletedMap.delete(c)}}},this.checkRecentlyDeleted=r=>{const n=this.recentlyDeletedMap.get(r);if(n){const{message:i}=me("MISSING_OR_INVALID",`Record was recently deleted - ${n}: ${r}`);throw new Error(i)}}}async isInitialized(){if(!this.initialized){const{message:e}=me("NOT_INITIALIZED",this.name);throw new Error(e)}await this.client.core.relayer.confirmOnlineStateOrThrow()}registerRelayerEvents(){this.client.core.relayer.on(wn.message,async e=>{const{topic:r,message:n}=e,{publicKey:i}=this.client.auth.authKeys.keys.includes(tu)?this.client.auth.authKeys.get(tu):{responseTopic:void 0,publicKey:void 0},o=await this.client.core.crypto.decode(r,n,{receiverPublicKey:i});try{s0(o)?(this.client.core.history.set(r,o),this.onRelayEventRequest({topic:r,payload:o})):Zl(o)?(await this.client.core.history.resolve(o),await this.onRelayEventResponse({topic:r,payload:o}),this.client.core.history.delete(r,o.id)):this.onRelayEventUnknownPayload({topic:r,payload:o})}catch(c){this.client.logger.error(c)}})}registerExpirerEvents(){this.client.core.expirer.on($n.expired,async e=>{const{topic:r,id:n}=cg(e.target);if(n&&this.client.pendingRequest.keys.includes(n))return await this.deletePendingSessionRequest(n,me("EXPIRED"),!0);r?this.client.session.keys.includes(r)&&(await this.deleteSession({topic:r,expirerHasDeleted:!0}),this.client.events.emit("session_expire",{topic:r})):n&&(await this.deleteProposal(n,!0),this.client.events.emit("proposal_expire",{id:n}))})}registerPairingEvents(){this.client.core.pairing.events.on(ra.create,e=>this.onPairingCreated(e)),this.client.core.pairing.events.on(ra.delete,e=>{this.addToRecentlyDeleted(e.topic,"pairing")})}isValidPairingTopic(e){if(!ur(e,!1)){const{message:r}=me("MISSING_OR_INVALID",`pairing topic should be a string: ${e}`);throw new Error(r)}if(!this.client.core.pairing.pairings.keys.includes(e)){const{message:r}=me("NO_MATCHING_KEY",`pairing topic doesn't exist: ${e}`);throw new Error(r)}if(ss(this.client.core.pairing.pairings.get(e).expiry)){const{message:r}=me("EXPIRED",`pairing topic: ${e}`);throw new Error(r)}}async isValidSessionTopic(e){if(!ur(e,!1)){const{message:r}=me("MISSING_OR_INVALID",`session topic should be a string: ${e}`);throw new Error(r)}if(this.checkRecentlyDeleted(e),!this.client.session.keys.includes(e)){const{message:r}=me("NO_MATCHING_KEY",`session topic doesn't exist: ${e}`);throw new Error(r)}if(ss(this.client.session.get(e).expiry)){await this.deleteSession({topic:e});const{message:r}=me("EXPIRED",`session topic: ${e}`);throw new Error(r)}if(!this.client.core.crypto.keychain.has(e)){const{message:r}=me("MISSING_OR_INVALID",`session topic does not exist in keychain: ${e}`);throw await this.deleteSession({topic:e}),new Error(r)}}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(ur(e,!1)){const{message:r}=me("NO_MATCHING_KEY",`session or pairing topic doesn't exist: ${e}`);throw new Error(r)}else{const{message:r}=me("MISSING_OR_INVALID",`session or pairing topic should be a string: ${e}`);throw new Error(r)}}async isValidProposalId(e){if(!_A(e)){const{message:r}=me("MISSING_OR_INVALID",`proposal id should be a number: ${e}`);throw new Error(r)}if(!this.client.proposal.keys.includes(e)){const{message:r}=me("NO_MATCHING_KEY",`proposal id doesn't exist: ${e}`);throw new Error(r)}if(ss(this.client.proposal.get(e).expiryTimestamp)){await this.deleteProposal(e);const{message:r}=me("EXPIRED",`proposal id: ${e}`);throw new Error(r)}}}class xD extends Qs{constructor(e,r){super(e,r,cD,g0),this.core=e,this.logger=r}}class ID extends Qs{constructor(e,r){super(e,r,lD,g0),this.core=e,this.logger=r}}class SD extends Qs{constructor(e,r){super(e,r,hD,g0,n=>n.id),this.core=e,this.logger=r}}class DD extends Qs{constructor(e,r){super(e,r,gD,eu,()=>tu),this.core=e,this.logger=r}}class CD extends Qs{constructor(e,r){super(e,r,mD,eu),this.core=e,this.logger=r}}class OD extends Qs{constructor(e,r){super(e,r,vD,eu,n=>n.id),this.core=e,this.logger=r}}class PD{constructor(e,r){this.core=e,this.logger=r,this.authKeys=new DD(this.core,this.logger),this.pairingTopics=new CD(this.core,this.logger),this.requests=new OD(this.core,this.logger)}async init(){await this.authKeys.init(),await this.pairingTopics.init(),await this.requests.init()}}class w0 extends xx{constructor(e){super(e),this.protocol=ow,this.version=aw,this.name=m0.name,this.events=new Dr.exports.EventEmitter,this.on=(n,i)=>this.events.on(n,i),this.once=(n,i)=>this.events.once(n,i),this.off=(n,i)=>this.events.off(n,i),this.removeListener=(n,i)=>this.events.removeListener(n,i),this.removeAllListeners=n=>this.events.removeAllListeners(n),this.connect=async n=>{try{return await this.engine.connect(n)}catch(i){throw this.logger.error(i.message),i}},this.pair=async n=>{try{return await this.engine.pair(n)}catch(i){throw this.logger.error(i.message),i}},this.approve=async n=>{try{return await this.engine.approve(n)}catch(i){throw this.logger.error(i.message),i}},this.reject=async n=>{try{return await this.engine.reject(n)}catch(i){throw this.logger.error(i.message),i}},this.update=async n=>{try{return await this.engine.update(n)}catch(i){throw this.logger.error(i.message),i}},this.extend=async n=>{try{return await this.engine.extend(n)}catch(i){throw this.logger.error(i.message),i}},this.request=async n=>{try{return await this.engine.request(n)}catch(i){throw this.logger.error(i.message),i}},this.respond=async n=>{try{return await this.engine.respond(n)}catch(i){throw this.logger.error(i.message),i}},this.ping=async n=>{try{return await this.engine.ping(n)}catch(i){throw this.logger.error(i.message),i}},this.emit=async n=>{try{return await this.engine.emit(n)}catch(i){throw this.logger.error(i.message),i}},this.disconnect=async n=>{try{return await this.engine.disconnect(n)}catch(i){throw this.logger.error(i.message),i}},this.find=n=>{try{return this.engine.find(n)}catch(i){throw this.logger.error(i.message),i}},this.getPendingSessionRequests=()=>{try{return this.engine.getPendingSessionRequests()}catch(n){throw this.logger.error(n.message),n}},this.authenticate=async n=>{try{return await this.engine.authenticate(n)}catch(i){throw this.logger.error(i.message),i}},this.formatAuthMessage=n=>{try{return this.engine.formatAuthMessage(n)}catch(i){throw this.logger.error(i.message),i}},this.approveSessionAuthenticate=async n=>{try{return await this.engine.approveSessionAuthenticate(n)}catch(i){throw this.logger.error(i.message),i}},this.rejectSessionAuthenticate=async n=>{try{return await this.engine.rejectSessionAuthenticate(n)}catch(i){throw this.logger.error(i.message),i}},this.name=e?.name||m0.name,this.metadata=e?.metadata||O_();const r=typeof e?.logger<"u"&&typeof e?.logger!="string"?e.logger:yi(Gl({level:e?.logger||m0.logger}));this.core=e?.core||new aD(e),this.logger=on(r,this.name),this.session=new ID(this.core,this.logger),this.proposal=new xD(this.core,this.logger),this.pendingRequest=new SD(this.core,this.logger),this.engine=new AD(this),this.auth=new PD(this.core,this.logger)}static async init(e){const r=new w0(e);return await r.initialize(),r}get context(){return sn(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 y0={exports:{}};(function(t,e){var r=typeof self<"u"?self:Fr,n=function(){function o(){this.fetch=!1,this.DOMException=r.DOMException}return o.prototype=r,new o}();(function(o){(function(c){var l={searchParams:"URLSearchParams"in o,iterable:"Symbol"in o&&"iterator"in Symbol,blob:"FileReader"in o&&"Blob"in o&&function(){try{return new Blob,!0}catch{return!1}}(),formData:"FormData"in o,arrayBuffer:"ArrayBuffer"in o};function f(p){return p&&DataView.prototype.isPrototypeOf(p)}if(l.arrayBuffer)var h=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],g=ArrayBuffer.isView||function(p){return p&&h.indexOf(Object.prototype.toString.call(p))>-1};function _(p){if(typeof p!="string"&&(p=String(p)),/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(p))throw new TypeError("Invalid character in header field name");return p.toLowerCase()}function E(p){return typeof p!="string"&&(p=String(p)),p}function A(p){var b={next:function(){var D=p.shift();return{done:D===void 0,value:D}}};return l.iterable&&(b[Symbol.iterator]=function(){return b}),b}function S(p){this.map={},p instanceof S?p.forEach(function(b,D){this.append(D,b)},this):Array.isArray(p)?p.forEach(function(b){this.append(b[0],b[1])},this):p&&Object.getOwnPropertyNames(p).forEach(function(b){this.append(b,p[b])},this)}S.prototype.append=function(p,b){p=_(p),b=E(b);var D=this.map[p];this.map[p]=D?D+", "+b:b},S.prototype.delete=function(p){delete this.map[_(p)]},S.prototype.get=function(p){return p=_(p),this.has(p)?this.map[p]:null},S.prototype.has=function(p){return this.map.hasOwnProperty(_(p))},S.prototype.set=function(p,b){this.map[_(p)]=E(b)},S.prototype.forEach=function(p,b){for(var D in this.map)this.map.hasOwnProperty(D)&&p.call(b,this.map[D],D,this)},S.prototype.keys=function(){var p=[];return this.forEach(function(b,D){p.push(D)}),A(p)},S.prototype.values=function(){var p=[];return this.forEach(function(b){p.push(b)}),A(p)},S.prototype.entries=function(){var p=[];return this.forEach(function(b,D){p.push([D,b])}),A(p)},l.iterable&&(S.prototype[Symbol.iterator]=S.prototype.entries);function U(p){if(p.bodyUsed)return Promise.reject(new TypeError("Already read"));p.bodyUsed=!0}function W(p){return new Promise(function(b,D){p.onload=function(){b(p.result)},p.onerror=function(){D(p.error)}})}function Y(p){var b=new FileReader,D=W(b);return b.readAsArrayBuffer(p),D}function B(p){var b=new FileReader,D=W(b);return b.readAsText(p),D}function z(p){for(var b=new Uint8Array(p),D=new Array(b.length),O=0;O<b.length;O++)D[O]=String.fromCharCode(b[O]);return D.join("")}function P(p){if(p.slice)return p.slice(0);var b=new Uint8Array(p.byteLength);return b.set(new Uint8Array(p)),b.buffer}function F(){return this.bodyUsed=!1,this._initBody=function(p){this._bodyInit=p,p?typeof p=="string"?this._bodyText=p:l.blob&&Blob.prototype.isPrototypeOf(p)?this._bodyBlob=p:l.formData&&FormData.prototype.isPrototypeOf(p)?this._bodyFormData=p:l.searchParams&&URLSearchParams.prototype.isPrototypeOf(p)?this._bodyText=p.toString():l.arrayBuffer&&l.blob&&f(p)?(this._bodyArrayBuffer=P(p.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):l.arrayBuffer&&(ArrayBuffer.prototype.isPrototypeOf(p)||g(p))?this._bodyArrayBuffer=P(p):this._bodyText=p=Object.prototype.toString.call(p):this._bodyText="",this.headers.get("content-type")||(typeof p=="string"?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):l.searchParams&&URLSearchParams.prototype.isPrototypeOf(p)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},l.blob&&(this.blob=function(){var p=U(this);if(p)return p;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?U(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(Y)}),this.text=function(){var p=U(this);if(p)return p;if(this._bodyBlob)return B(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(z(this._bodyArrayBuffer));if(this._bodyFormData)throw new Error("could not read FormData body as text");return Promise.resolve(this._bodyText)},l.formData&&(this.formData=function(){return this.text().then(te)}),this.json=function(){return this.text().then(JSON.parse)},this}var j=["DELETE","GET","HEAD","OPTIONS","POST","PUT"];function m(p){var b=p.toUpperCase();return j.indexOf(b)>-1?b:p}function T(p,b){b=b||{};var D=b.body;if(p instanceof T){if(p.bodyUsed)throw new TypeError("Already read");this.url=p.url,this.credentials=p.credentials,b.headers||(this.headers=new S(p.headers)),this.method=p.method,this.mode=p.mode,this.signal=p.signal,!D&&p._bodyInit!=null&&(D=p._bodyInit,p.bodyUsed=!0)}else this.url=String(p);if(this.credentials=b.credentials||this.credentials||"same-origin",(b.headers||!this.headers)&&(this.headers=new S(b.headers)),this.method=m(b.method||this.method||"GET"),this.mode=b.mode||this.mode||null,this.signal=b.signal||this.signal,this.referrer=null,(this.method==="GET"||this.method==="HEAD")&&D)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(D)}T.prototype.clone=function(){return new T(this,{body:this._bodyInit})};function te(p){var b=new FormData;return p.trim().split("&").forEach(function(D){if(D){var O=D.split("="),$=O.shift().replace(/\+/g," "),L=O.join("=").replace(/\+/g," ");b.append(decodeURIComponent($),decodeURIComponent(L))}}),b}function ee(p){var b=new S,D=p.replace(/\r?\n[\t ]+/g," ");return D.split(/\r?\n/).forEach(function(O){var $=O.split(":"),L=$.shift().trim();if(L){var C=$.join(":").trim();b.append(L,C)}}),b}F.call(T.prototype);function ne(p,b){b||(b={}),this.type="default",this.status=b.status===void 0?200:b.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in b?b.statusText:"OK",this.headers=new S(b.headers),this.url=b.url||"",this._initBody(p)}F.call(ne.prototype),ne.prototype.clone=function(){return new ne(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new S(this.headers),url:this.url})},ne.error=function(){var p=new ne(null,{status:0,statusText:""});return p.type="error",p};var fe=[301,302,303,307,308];ne.redirect=function(p,b){if(fe.indexOf(b)===-1)throw new RangeError("Invalid status code");return new ne(null,{status:b,headers:{location:p}})},c.DOMException=o.DOMException;try{new c.DOMException}catch{c.DOMException=function(b,D){this.message=b,this.name=D;var O=Error(b);this.stack=O.stack},c.DOMException.prototype=Object.create(Error.prototype),c.DOMException.prototype.constructor=c.DOMException}function d(p,b){return new Promise(function(D,O){var $=new T(p,b);if($.signal&&$.signal.aborted)return O(new c.DOMException("Aborted","AbortError"));var L=new XMLHttpRequest;function C(){L.abort()}L.onload=function(){var v={status:L.status,statusText:L.statusText,headers:ee(L.getAllResponseHeaders()||"")};v.url="responseURL"in L?L.responseURL:v.headers.get("X-Request-URL");var N="response"in L?L.response:L.responseText;D(new ne(N,v))},L.onerror=function(){O(new TypeError("Network request failed"))},L.ontimeout=function(){O(new TypeError("Network request failed"))},L.onabort=function(){O(new c.DOMException("Aborted","AbortError"))},L.open($.method,$.url,!0),$.credentials==="include"?L.withCredentials=!0:$.credentials==="omit"&&(L.withCredentials=!1),"responseType"in L&&l.blob&&(L.responseType="blob"),$.headers.forEach(function(v,N){L.setRequestHeader(N,v)}),$.signal&&($.signal.addEventListener("abort",C),L.onreadystatechange=function(){L.readyState===4&&$.signal.removeEventListener("abort",C)}),L.send(typeof $._bodyInit>"u"?null:$._bodyInit)})}return d.polyfill=!0,o.fetch||(o.fetch=d,o.Headers=S,o.Request=T,o.Response=ne),c.Headers=S,c.Request=T,c.Response=ne,c.fetch=d,Object.defineProperty(c,"__esModule",{value:!0}),c})({})})(n),n.fetch.ponyfill=!0,delete n.fetch.polyfill;var i=n;e=i.fetch,e.default=i.fetch,e.fetch=i.fetch,e.Headers=i.Headers,e.Request=i.Request,e.Response=i.Response,t.exports=e})(y0,y0.exports);var dw=e3(y0.exports);const pw={headers:{Accept:"application/json","Content-Type":"application/json"},method:"POST"},gw=10;class fs{constructor(e,r=!1){if(this.url=e,this.disableProviderPing=r,this.events=new Dr.exports.EventEmitter,this.isAvailable=!1,this.registering=!1,!bv(e))throw new Error(`Provided URL is not compatible with HTTP connection: ${e}`);this.url=e,this.disableProviderPing=r}get connected(){return this.isAvailable}get connecting(){return this.registering}on(e,r){this.events.on(e,r)}once(e,r){this.events.once(e,r)}off(e,r){this.events.off(e,r)}removeListener(e,r){this.events.removeListener(e,r)}async open(e=this.url){await this.register(e)}async close(){if(!this.isAvailable)throw new Error("Connection already closed");this.onClose()}async send(e,r){this.isAvailable||await this.register();try{const n=Fi(e),o=await(await dw(this.url,Object.assign(Object.assign({},pw),{body:n}))).json();this.onPayload({data:o})}catch(n){this.onError(e.id,n)}}async register(e=this.url){if(!bv(e))throw new Error(`Provided URL is not compatible with HTTP connection: ${e}`);if(this.registering){const r=this.events.getMaxListeners();return(this.events.listenerCount("register_error")>=r||this.events.listenerCount("open")>=r)&&this.events.setMaxListeners(r+1),new Promise((n,i)=>{this.events.once("register_error",o=>{this.resetMaxListeners(),i(o)}),this.events.once("open",()=>{if(this.resetMaxListeners(),typeof this.isAvailable>"u")return i(new Error("HTTP connection is missing or invalid"));n()})})}this.url=e,this.registering=!0;try{if(!this.disableProviderPing){const r=Fi({id:1,jsonrpc:"2.0",method:"test",params:[]});await dw(e,Object.assign(Object.assign({},pw),{body:r}))}this.onOpen()}catch(r){const n=this.parseError(r);throw this.events.emit("register_error",n),this.onClose(),n}}onOpen(){this.isAvailable=!0,this.registering=!1,this.events.emit("open")}onClose(){this.isAvailable=!1,this.registering=!1,this.events.emit("close")}onPayload(e){if(typeof e.data>"u")return;const r=typeof e.data=="string"?uc(e.data):e.data;this.events.emit("payload",r)}onError(e,r){const n=this.parseError(r),i=n.message||n.toString(),o=Ql(e,i);this.events.emit("payload",o)}parseError(e,r=this.url){return pv(e,r,"HTTP")}resetMaxListeners(){this.events.getMaxListeners()>gw&&this.events.setMaxListeners(gw)}}const mw="error",MD="wss://relay.walletconnect.com",TD="wc",$D="universal_provider",vw=`${TD}@2:${$D}:`,ND="https://rpc.walletconnect.com/v1/",Hi={DEFAULT_CHAIN_CHANGED:"default_chain_changed"};var Ec=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},b0={exports:{}};/**
56
+ ***************************************************************************** */var r0=function(t,e){return r0=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,n){r.__proto__=n}||function(r,n){for(var i in n)n.hasOwnProperty(i)&&(r[i]=n[i])},r0(t,e)};function Vx(t,e){r0(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}var n0=function(){return n0=Object.assign||function(e){for(var r,n=1,i=arguments.length;n<i;n++){r=arguments[n];for(var o in r)Object.prototype.hasOwnProperty.call(r,o)&&(e[o]=r[o])}return e},n0.apply(this,arguments)};function Gx(t,e){var r={};for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&e.indexOf(n)<0&&(r[n]=t[n]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,n=Object.getOwnPropertySymbols(t);i<n.length;i++)e.indexOf(n[i])<0&&Object.prototype.propertyIsEnumerable.call(t,n[i])&&(r[n[i]]=t[n[i]]);return r}function Yx(t,e,r,n){var i=arguments.length,o=i<3?e:n===null?n=Object.getOwnPropertyDescriptor(e,r):n,c;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(t,e,r,n);else for(var l=t.length-1;l>=0;l--)(c=t[l])&&(o=(i<3?c(o):i>3?c(e,r,o):c(e,r))||o);return i>3&&o&&Object.defineProperty(e,r,o),o}function Jx(t,e){return function(r,n){e(r,n,t)}}function Qx(t,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(t,e)}function Zx(t,e,r,n){function i(o){return o instanceof r?o:new r(function(c){c(o)})}return new(r||(r=Promise))(function(o,c){function l(g){try{h(n.next(g))}catch(_){c(_)}}function f(g){try{h(n.throw(g))}catch(_){c(_)}}function h(g){g.done?o(g.value):i(g.value).then(l,f)}h((n=n.apply(t,e||[])).next())})}function Xx(t,e){var r={label:0,sent:function(){if(o[0]&1)throw o[1];return o[1]},trys:[],ops:[]},n,i,o,c;return c={next:l(0),throw:l(1),return:l(2)},typeof Symbol=="function"&&(c[Symbol.iterator]=function(){return this}),c;function l(h){return function(g){return f([h,g])}}function f(h){if(n)throw new TypeError("Generator is already executing.");for(;r;)try{if(n=1,i&&(o=h[0]&2?i.return:h[0]?i.throw||((o=i.return)&&o.call(i),0):i.next)&&!(o=o.call(i,h[1])).done)return o;switch(i=0,o&&(h=[h[0]&2,o.value]),h[0]){case 0:case 1:o=h;break;case 4:return r.label++,{value:h[1],done:!1};case 5:r.label++,i=h[1],h=[0];continue;case 7:h=r.ops.pop(),r.trys.pop();continue;default:if(o=r.trys,!(o=o.length>0&&o[o.length-1])&&(h[0]===6||h[0]===2)){r=0;continue}if(h[0]===3&&(!o||h[1]>o[0]&&h[1]<o[3])){r.label=h[1];break}if(h[0]===6&&r.label<o[1]){r.label=o[1],o=h;break}if(o&&r.label<o[2]){r.label=o[2],r.ops.push(h);break}o[2]&&r.ops.pop(),r.trys.pop();continue}h=e.call(t,r)}catch(g){h=[6,g],i=0}finally{n=o=0}if(h[0]&5)throw h[1];return{value:h[0]?h[1]:void 0,done:!0}}}function e9(t,e,r,n){n===void 0&&(n=r),t[n]=e[r]}function t9(t,e){for(var r in t)r!=="default"&&!e.hasOwnProperty(r)&&(e[r]=t[r])}function i0(t){var e=typeof Symbol=="function"&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&typeof t.length=="number")return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function mv(t,e){var r=typeof Symbol=="function"&&t[Symbol.iterator];if(!r)return t;var n=r.call(t),i,o=[],c;try{for(;(e===void 0||e-- >0)&&!(i=n.next()).done;)o.push(i.value)}catch(l){c={error:l}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(c)throw c.error}}return o}function r9(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(mv(arguments[e]));return t}function n9(){for(var t=0,e=0,r=arguments.length;e<r;e++)t+=arguments[e].length;for(var n=Array(t),i=0,e=0;e<r;e++)for(var o=arguments[e],c=0,l=o.length;c<l;c++,i++)n[i]=o[c];return n}function wc(t){return this instanceof wc?(this.v=t,this):new wc(t)}function i9(t,e,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n=r.apply(t,e||[]),i,o=[];return i={},c("next"),c("throw"),c("return"),i[Symbol.asyncIterator]=function(){return this},i;function c(E){n[E]&&(i[E]=function(A){return new Promise(function(S,U){o.push([E,A,S,U])>1||l(E,A)})})}function l(E,A){try{f(n[E](A))}catch(S){_(o[0][3],S)}}function f(E){E.value instanceof wc?Promise.resolve(E.value.v).then(h,g):_(o[0][2],E)}function h(E){l("next",E)}function g(E){l("throw",E)}function _(E,A){E(A),o.shift(),o.length&&l(o[0][0],o[0][1])}}function s9(t){var e,r;return e={},n("next"),n("throw",function(i){throw i}),n("return"),e[Symbol.iterator]=function(){return this},e;function n(i,o){e[i]=t[i]?function(c){return(r=!r)?{value:wc(t[i](c)),done:i==="return"}:o?o(c):c}:o}}function o9(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=t[Symbol.asyncIterator],r;return e?e.call(t):(t=typeof i0=="function"?i0(t):t[Symbol.iterator](),r={},n("next"),n("throw"),n("return"),r[Symbol.asyncIterator]=function(){return this},r);function n(o){r[o]=t[o]&&function(c){return new Promise(function(l,f){c=t[o](c),i(l,f,c.done,c.value)})}}function i(o,c,l,f){Promise.resolve(f).then(function(h){o({value:h,done:l})},c)}}function a9(t,e){return Object.defineProperty?Object.defineProperty(t,"raw",{value:e}):t.raw=e,t}function c9(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)Object.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e}function l9(t){return t&&t.__esModule?t:{default:t}}function u9(t,e){if(!e.has(t))throw new TypeError("attempted to get private field on non-instance");return e.get(t)}function h9(t,e,r){if(!e.has(t))throw new TypeError("attempted to set private field on non-instance");return e.set(t,r),r}var f9=Object.freeze({__proto__:null,__extends:Vx,get __assign(){return n0},__rest:Gx,__decorate:Yx,__param:Jx,__metadata:Qx,__awaiter:Zx,__generator:Xx,__createBinding:e9,__exportStar:t9,__values:i0,__read:mv,__spread:r9,__spreadArrays:n9,__await:wc,__asyncGenerator:i9,__asyncDelegator:s9,__asyncValues:o9,__makeTemplateObject:a9,__importStar:c9,__importDefault:l9,__classPrivateFieldGet:u9,__classPrivateFieldSet:h9}),d9=$o(f9),ji={},vv;function p9(){if(vv)return ji;vv=1,Object.defineProperty(ji,"__esModule",{value:!0}),ji.isBrowserCryptoAvailable=ji.getSubtleCrypto=ji.getBrowerCrypto=void 0;function t(){return Fr?.crypto||Fr?.msCrypto||{}}ji.getBrowerCrypto=t;function e(){const n=t();return n.subtle||n.webkitSubtle}ji.getSubtleCrypto=e;function r(){return!!t()&&!!e()}return ji.isBrowserCryptoAvailable=r,ji}var ki={},wv;function g9(){if(wv)return ki;wv=1,Object.defineProperty(ki,"__esModule",{value:!0}),ki.isBrowser=ki.isNode=ki.isReactNative=void 0;function t(){return typeof document>"u"&&typeof navigator<"u"&&navigator.product==="ReactNative"}ki.isReactNative=t;function e(){return typeof process<"u"&&typeof process.versions<"u"&&typeof process.versions.node<"u"}ki.isNode=e;function r(){return!t()&&!e()}return ki.isBrowser=r,ki}(function(t){Object.defineProperty(t,"__esModule",{value:!0});const e=d9;e.__exportStar(p9(),t),e.__exportStar(g9(),t)})(gv);function us(t=3){const e=Date.now()*Math.pow(10,t),r=Math.floor(Math.random()*Math.pow(10,t));return e+r}function Js(t=6){return BigInt(us(t))}function ta(t,e,r){return{id:r||us(),jsonrpc:"2.0",method:t,params:e}}function Jl(t,e){return{id:t,jsonrpc:"2.0",result:e}}function Ql(t,e,r){return{id:t,jsonrpc:"2.0",error:m9(e,r)}}function m9(t,e){return typeof t>"u"?dv(hv):(typeof t=="string"&&(t=Object.assign(Object.assign({},dv(t0)),{message:t})),typeof e<"u"&&(t.data=e),Kx(t.code)&&(t=Wx(t.code)),t)}class v9{}class w9 extends v9{constructor(){super()}}class y9 extends w9{constructor(e){super()}}const b9="^https?:",_9="^wss?:";function E9(t){const e=t.match(new RegExp(/^\w+:/,"gi"));if(!(!e||!e.length))return e[0]}function yv(t,e){const r=E9(t);return typeof r>"u"?!1:new RegExp(e).test(r)}function bv(t){return yv(t,b9)}function _v(t){return yv(t,_9)}function A9(t){return new RegExp("wss?://localhost(:d{2,5})?").test(t)}function Ev(t){return typeof t=="object"&&"id"in t&&"jsonrpc"in t&&t.jsonrpc==="2.0"}function s0(t){return Ev(t)&&"method"in t}function Zl(t){return Ev(t)&&(_i(t)||Mn(t))}function _i(t){return"result"in t}function Mn(t){return"error"in t}class qi extends y9{constructor(e){super(e),this.events=new Dr.exports.EventEmitter,this.hasRegisteredEventListeners=!1,this.connection=this.setConnection(e),this.connection.connected&&this.registerEventListeners()}async connect(e=this.connection){await this.open(e)}async disconnect(){await this.close()}on(e,r){this.events.on(e,r)}once(e,r){this.events.once(e,r)}off(e,r){this.events.off(e,r)}removeListener(e,r){this.events.removeListener(e,r)}async request(e,r){return this.requestStrict(ta(e.method,e.params||[],e.id||Js().toString()),r)}async requestStrict(e,r){return new Promise(async(n,i)=>{if(!this.connection.connected)try{await this.open()}catch(o){i(o)}this.events.on(`${e.id}`,o=>{Mn(o)?i(o.error):n(o.result)});try{await this.connection.send(e,r)}catch(o){i(o)}})}setConnection(e=this.connection){return e}onPayload(e){this.events.emit("payload",e),Zl(e)?this.events.emit(`${e.id}`,e):this.events.emit("message",{type:e.method,data:e.params})}onClose(e){e&&e.code===3e3&&this.events.emit("error",new Error(`WebSocket connection closed abnormally with code: ${e.code} ${e.reason?`(${e.reason})`:""}`)),this.events.emit("disconnect")}async open(e=this.connection){this.connection===e&&this.connection.connected||(this.connection.connected&&this.close(),typeof e=="string"&&(await this.connection.open(e),e=this.connection),this.connection=this.setConnection(e),await this.connection.open(),this.registerEventListeners(),this.events.emit("connect"))}async close(){await this.connection.close()}registerEventListeners(){this.hasRegisteredEventListeners||(this.connection.on("payload",e=>this.onPayload(e)),this.connection.on("close",e=>this.onClose(e)),this.connection.on("error",e=>this.events.emit("error",e)),this.connection.on("register_error",e=>this.onClose()),this.hasRegisteredEventListeners=!0)}}const x9=()=>typeof WebSocket<"u"?WebSocket:typeof global<"u"&&typeof global.WebSocket<"u"?global.WebSocket:typeof window<"u"&&typeof window.WebSocket<"u"?window.WebSocket:typeof self<"u"&&typeof self.WebSocket<"u"?self.WebSocket:require("ws"),I9=()=>typeof WebSocket<"u"||typeof global<"u"&&typeof global.WebSocket<"u"||typeof window<"u"&&typeof window.WebSocket<"u"||typeof self<"u"&&typeof self.WebSocket<"u",Av=t=>t.split("?")[0],xv=10,S9=x9();class D9{constructor(e){if(this.url=e,this.events=new Dr.exports.EventEmitter,this.registering=!1,!_v(e))throw new Error(`Provided URL is not compatible with WebSocket connection: ${e}`);this.url=e}get connected(){return typeof this.socket<"u"}get connecting(){return this.registering}on(e,r){this.events.on(e,r)}once(e,r){this.events.once(e,r)}off(e,r){this.events.off(e,r)}removeListener(e,r){this.events.removeListener(e,r)}async open(e=this.url){await this.register(e)}async close(){return new Promise((e,r)=>{if(typeof this.socket>"u"){r(new Error("Connection already closed"));return}this.socket.onclose=n=>{this.onClose(n),e()},this.socket.close()})}async send(e){typeof this.socket>"u"&&(this.socket=await this.register());try{this.socket.send(Fi(e))}catch(r){this.onError(e.id,r)}}register(e=this.url){if(!_v(e))throw new Error(`Provided URL is not compatible with WebSocket connection: ${e}`);if(this.registering){const r=this.events.getMaxListeners();return(this.events.listenerCount("register_error")>=r||this.events.listenerCount("open")>=r)&&this.events.setMaxListeners(r+1),new Promise((n,i)=>{this.events.once("register_error",o=>{this.resetMaxListeners(),i(o)}),this.events.once("open",()=>{if(this.resetMaxListeners(),typeof this.socket>"u")return i(new Error("WebSocket connection is missing or invalid"));n(this.socket)})})}return this.url=e,this.registering=!0,new Promise((r,n)=>{const i=new URLSearchParams(e).get("origin"),o=gv.isReactNative()?{headers:{origin:i}}:{rejectUnauthorized:!A9(e)},c=new S9(e,[],o);I9()?c.onerror=l=>{const f=l;n(this.emitError(f.error))}:c.on("error",l=>{n(this.emitError(l))}),c.onopen=()=>{this.onOpen(c),r(c)}})}onOpen(e){e.onmessage=r=>this.onPayload(r),e.onclose=r=>this.onClose(r),this.socket=e,this.registering=!1,this.events.emit("open")}onClose(e){this.socket=void 0,this.registering=!1,this.events.emit("close",e)}onPayload(e){if(typeof e.data>"u")return;const r=typeof e.data=="string"?uc(e.data):e.data;this.events.emit("payload",r)}onError(e,r){const n=this.parseError(r),i=n.message||n.toString(),o=Ql(e,i);this.events.emit("payload",o)}parseError(e,r=this.url){return pv(e,Av(r),"WS")}resetMaxListeners(){this.events.getMaxListeners()>xv&&this.events.setMaxListeners(xv)}emitError(e){const r=this.parseError(new Error(e?.message||`WebSocket connection failed for host: ${Av(this.url)}`));return this.events.emit("register_error",r),r}}var o0={exports:{}};(function(t,e){var r=200,n="__lodash_hash_undefined__",i=1,o=2,c=9007199254740991,l="[object Arguments]",f="[object Array]",h="[object AsyncFunction]",g="[object Boolean]",_="[object Date]",E="[object Error]",A="[object Function]",S="[object GeneratorFunction]",U="[object Map]",W="[object Number]",Y="[object Null]",B="[object Object]",z="[object Promise]",P="[object Proxy]",F="[object RegExp]",j="[object Set]",m="[object String]",T="[object Symbol]",te="[object Undefined]",ee="[object WeakMap]",ne="[object ArrayBuffer]",fe="[object DataView]",d="[object Float32Array]",p="[object Float64Array]",b="[object Int8Array]",D="[object Int16Array]",O="[object Int32Array]",$="[object Uint8Array]",L="[object Uint8ClampedArray]",C="[object Uint16Array]",v="[object Uint32Array]",N=/[\\^$.*+?()[\]{}|]/g,oe=/^\[object .+?Constructor\]$/,pe=/^(?:0|[1-9]\d*)$/,x={};x[d]=x[p]=x[b]=x[D]=x[O]=x[$]=x[L]=x[C]=x[v]=!0,x[l]=x[f]=x[ne]=x[g]=x[fe]=x[_]=x[E]=x[A]=x[U]=x[W]=x[B]=x[F]=x[j]=x[m]=x[ee]=!1;var re=typeof Fr=="object"&&Fr&&Fr.Object===Object&&Fr,q=typeof self=="object"&&self&&self.Object===Object&&self,H=re||q||Function("return this")(),V=e&&!e.nodeType&&e,w=V&&!0&&t&&!t.nodeType&&t,k=w&&w.exports===V,ie=k&&re.process,he=function(){try{return ie&&ie.binding&&ie.binding("util")}catch{}}(),le=he&&he.isTypedArray;function Oe(K,Q){for(var de=-1,Ie=K==null?0:K.length,Vt=0,ot=[];++de<Ie;){var Zt=K[de];Q(Zt,de,K)&&(ot[Vt++]=Zt)}return ot}function Me(K,Q){for(var de=-1,Ie=Q.length,Vt=K.length;++de<Ie;)K[Vt+de]=Q[de];return K}function Se(K,Q){for(var de=-1,Ie=K==null?0:K.length;++de<Ie;)if(Q(K[de],de,K))return!0;return!1}function Pt(K,Q){for(var de=-1,Ie=Array(K);++de<K;)Ie[de]=Q(de);return Ie}function ze(K){return function(Q){return K(Q)}}function Ce(K,Q){return K.has(Q)}function Fe(K,Q){return K?.[Q]}function Ee(K){var Q=-1,de=Array(K.size);return K.forEach(function(Ie,Vt){de[++Q]=[Vt,Ie]}),de}function Ae(K,Q){return function(de){return K(Q(de))}}function Ge(K){var Q=-1,de=Array(K.size);return K.forEach(function(Ie){de[++Q]=Ie}),de}var ye=Array.prototype,xe=Function.prototype,Be=Object.prototype,be=H["__core-js_shared__"],Pe=xe.toString,je=Be.hasOwnProperty,Te=function(){var K=/[^.]+$/.exec(be&&be.keys&&be.keys.IE_PROTO||"");return K?"Symbol(src)_1."+K:""}(),$e=Be.toString,lt=RegExp("^"+Pe.call(je).replace(N,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Re=k?H.Buffer:void 0,Ne=H.Symbol,nr=H.Uint8Array,dt=Be.propertyIsEnumerable,Et=ye.splice,ir=Ne?Ne.toStringTag:void 0,It=Object.getOwnPropertySymbols,Ot=Re?Re.isBuffer:void 0,Vr=Ae(Object.keys,Object),Ye=_n(H,"DataView"),He=_n(H,"Map"),Rt=_n(H,"Promise"),Je=_n(H,"Set"),Ve=_n(H,"WeakMap"),Mt=_n(Object,"create"),Xe=Gi(Ye),et=Gi(He),Lt=Gi(Rt),tt=Gi(Je),Qe=Gi(Ve),Ft=Ne?Ne.prototype:void 0,Ze=Ft?Ft.valueOf:void 0;function ke(K){var Q=-1,de=K==null?0:K.length;for(this.clear();++Q<de;){var Ie=K[Q];this.set(Ie[0],Ie[1])}}function Ht(){this.__data__=Mt?Mt(null):{},this.size=0}function rt(K){var Q=this.has(K)&&delete this.__data__[K];return this.size-=Q?1:0,Q}function jt(K){var Q=this.__data__;if(Mt){var de=Q[K];return de===n?void 0:de}return je.call(Q,K)?Q[K]:void 0}function ti(K){var Q=this.__data__;return Mt?Q[K]!==void 0:je.call(Q,K)}function kt(K,Q){var de=this.__data__;return this.size+=this.has(K)?0:1,de[K]=Mt&&Q===void 0?n:Q,this}ke.prototype.clear=Ht,ke.prototype.delete=rt,ke.prototype.get=jt,ke.prototype.has=ti,ke.prototype.set=kt;function vt(K){var Q=-1,de=K==null?0:K.length;for(this.clear();++Q<de;){var Ie=K[Q];this.set(Ie[0],Ie[1])}}function Ln(){this.__data__=[],this.size=0}function Bn(K){var Q=this.__data__,de=bo(Q,K);if(de<0)return!1;var Ie=Q.length-1;return de==Ie?Q.pop():Et.call(Q,de,1),--this.size,!0}function Un(K){var Q=this.__data__,de=bo(Q,K);return de<0?void 0:Q[de][1]}function Fn(K){return bo(this.__data__,K)>-1}function jn(K,Q){var de=this.__data__,Ie=bo(de,K);return Ie<0?(++this.size,de.push([K,Q])):de[Ie][1]=Q,this}vt.prototype.clear=Ln,vt.prototype.delete=Bn,vt.prototype.get=Un,vt.prototype.has=Fn,vt.prototype.set=jn;function xr(K){var Q=-1,de=K==null?0:K.length;for(this.clear();++Q<de;){var Ie=K[Q];this.set(Ie[0],Ie[1])}}function Di(){this.size=0,this.__data__={hash:new ke,map:new(He||vt),string:new ke}}function fo(K){var Q=Cs(this,K).delete(K);return this.size-=Q?1:0,Q}function Ci(K){return Cs(this,K).get(K)}function po(K){return Cs(this,K).has(K)}function go(K,Q){var de=Cs(this,K),Ie=de.size;return de.set(K,Q),this.size+=de.size==Ie?0:1,this}xr.prototype.clear=Di,xr.prototype.delete=fo,xr.prototype.get=Ci,xr.prototype.has=po,xr.prototype.set=go;function Oi(K){var Q=-1,de=K==null?0:K.length;for(this.__data__=new xr;++Q<de;)this.add(K[Q])}function Ss(K){return this.__data__.set(K,n),this}function Ds(K){return this.__data__.has(K)}Oi.prototype.add=Oi.prototype.push=Ss,Oi.prototype.has=Ds;function Gr(K){var Q=this.__data__=new vt(K);this.size=Q.size}function mo(){this.__data__=new vt,this.size=0}function vo(K){var Q=this.__data__,de=Q.delete(K);return this.size=Q.size,de}function wo(K){return this.__data__.get(K)}function yo(K){return this.__data__.has(K)}function Ru(K,Q){var de=this.__data__;if(de instanceof vt){var Ie=de.__data__;if(!He||Ie.length<r-1)return Ie.push([K,Q]),this.size=++de.size,this;de=this.__data__=new xr(Ie)}return de.set(K,Q),this.size=de.size,this}Gr.prototype.clear=mo,Gr.prototype.delete=vo,Gr.prototype.get=wo,Gr.prototype.has=yo,Gr.prototype.set=Ru;function Lu(K,Q){var de=Sa(K),Ie=!de&&Gu(K),Vt=!de&&!Ie&&Hc(K),ot=!de&&!Ie&&!Vt&&Qu(K),Zt=de||Ie||Vt||ot,gr=Zt?Pt(K.length,String):[],St=gr.length;for(var Gt in K)(Q||je.call(K,Gt))&&!(Zt&&(Gt=="length"||Vt&&(Gt=="offset"||Gt=="parent")||ot&&(Gt=="buffer"||Gt=="byteLength"||Gt=="byteOffset")||zu(Gt,St)))&&gr.push(Gt);return gr}function bo(K,Q){for(var de=K.length;de--;)if(Vu(K[de][0],Q))return de;return-1}function qc(K,Q,de){var Ie=Q(K);return Sa(K)?Ie:Me(Ie,de(K))}function _o(K){return K==null?K===void 0?te:Y:ir&&ir in Object(K)?ku(K):Ud(K)}function zc(K){return Ao(K)&&_o(K)==l}function Eo(K,Q,de,Ie,Vt){return K===Q?!0:K==null||Q==null||!Ao(K)&&!Ao(Q)?K!==K&&Q!==Q:Bu(K,Q,de,Ie,Eo,Vt)}function Bu(K,Q,de,Ie,Vt,ot){var Zt=Sa(K),gr=Sa(Q),St=Zt?f:Pi(K),Gt=gr?f:Pi(Q);St=St==l?B:St,Gt=Gt==l?B:Gt;var fr=St==B,ln=Gt==B,mr=St==Gt;if(mr&&Hc(K)){if(!Hc(Q))return!1;Zt=!0,fr=!1}if(mr&&!fr)return ot||(ot=new Gr),Zt||Qu(K)?xa(K,Q,de,Ie,Vt,ot):Bd(K,Q,St,de,Ie,Vt,ot);if(!(de&i)){var Xt=fr&&je.call(K,"__wrapped__"),Yr=ln&&je.call(Q,"__wrapped__");if(Xt||Yr){var ri=Xt?K.value():K,kn=Yr?Q.value():Q;return ot||(ot=new Gr),Vt(ri,kn,de,Ie,ot)}}return mr?(ot||(ot=new Gr),ju(K,Q,de,Ie,Vt,ot)):!1}function Ld(K){if(!Ju(K)||Ku(K))return!1;var Q=Da(K)?lt:oe;return Q.test(Gi(K))}function Uu(K){return Ao(K)&&Yu(K.length)&&!!x[_o(K)]}function Fu(K){if(!Wu(K))return Vr(K);var Q=[];for(var de in Object(K))je.call(K,de)&&de!="constructor"&&Q.push(de);return Q}function xa(K,Q,de,Ie,Vt,ot){var Zt=de&i,gr=K.length,St=Q.length;if(gr!=St&&!(Zt&&St>gr))return!1;var Gt=ot.get(K);if(Gt&&ot.get(Q))return Gt==Q;var fr=-1,ln=!0,mr=de&o?new Oi:void 0;for(ot.set(K,Q),ot.set(Q,K);++fr<gr;){var Xt=K[fr],Yr=Q[fr];if(Ie)var ri=Zt?Ie(Yr,Xt,fr,Q,K,ot):Ie(Xt,Yr,fr,K,Q,ot);if(ri!==void 0){if(ri)continue;ln=!1;break}if(mr){if(!Se(Q,function(kn,Mi){if(!Ce(mr,Mi)&&(Xt===kn||Vt(Xt,kn,de,Ie,ot)))return mr.push(Mi)})){ln=!1;break}}else if(!(Xt===Yr||Vt(Xt,Yr,de,Ie,ot))){ln=!1;break}}return ot.delete(K),ot.delete(Q),ln}function Bd(K,Q,de,Ie,Vt,ot,Zt){switch(de){case fe:if(K.byteLength!=Q.byteLength||K.byteOffset!=Q.byteOffset)return!1;K=K.buffer,Q=Q.buffer;case ne:return!(K.byteLength!=Q.byteLength||!ot(new nr(K),new nr(Q)));case g:case _:case W:return Vu(+K,+Q);case E:return K.name==Q.name&&K.message==Q.message;case F:case m:return K==Q+"";case U:var gr=Ee;case j:var St=Ie&i;if(gr||(gr=Ge),K.size!=Q.size&&!St)return!1;var Gt=Zt.get(K);if(Gt)return Gt==Q;Ie|=o,Zt.set(K,Q);var fr=xa(gr(K),gr(Q),Ie,Vt,ot,Zt);return Zt.delete(K),fr;case T:if(Ze)return Ze.call(K)==Ze.call(Q)}return!1}function ju(K,Q,de,Ie,Vt,ot){var Zt=de&i,gr=Ia(K),St=gr.length,Gt=Ia(Q),fr=Gt.length;if(St!=fr&&!Zt)return!1;for(var ln=St;ln--;){var mr=gr[ln];if(!(Zt?mr in Q:je.call(Q,mr)))return!1}var Xt=ot.get(K);if(Xt&&ot.get(Q))return Xt==Q;var Yr=!0;ot.set(K,Q),ot.set(Q,K);for(var ri=Zt;++ln<St;){mr=gr[ln];var kn=K[mr],Mi=Q[mr];if(Ie)var Kc=Zt?Ie(Mi,kn,mr,Q,K,ot):Ie(kn,Mi,mr,K,Q,ot);if(!(Kc===void 0?kn===Mi||Vt(kn,Mi,de,Ie,ot):Kc)){Yr=!1;break}ri||(ri=mr=="constructor")}if(Yr&&!ri){var xo=K.constructor,Ir=Q.constructor;xo!=Ir&&"constructor"in K&&"constructor"in Q&&!(typeof xo=="function"&&xo instanceof xo&&typeof Ir=="function"&&Ir instanceof Ir)&&(Yr=!1)}return ot.delete(K),ot.delete(Q),Yr}function Ia(K){return qc(K,kd,qu)}function Cs(K,Q){var de=K.__data__;return Hu(Q)?de[typeof Q=="string"?"string":"hash"]:de.map}function _n(K,Q){var de=Fe(K,Q);return Ld(de)?de:void 0}function ku(K){var Q=je.call(K,ir),de=K[ir];try{K[ir]=void 0;var Ie=!0}catch{}var Vt=$e.call(K);return Ie&&(Q?K[ir]=de:delete K[ir]),Vt}var qu=It?function(K){return K==null?[]:(K=Object(K),Oe(It(K),function(Q){return dt.call(K,Q)}))}:Wt,Pi=_o;(Ye&&Pi(new Ye(new ArrayBuffer(1)))!=fe||He&&Pi(new He)!=U||Rt&&Pi(Rt.resolve())!=z||Je&&Pi(new Je)!=j||Ve&&Pi(new Ve)!=ee)&&(Pi=function(K){var Q=_o(K),de=Q==B?K.constructor:void 0,Ie=de?Gi(de):"";if(Ie)switch(Ie){case Xe:return fe;case et:return U;case Lt:return z;case tt:return j;case Qe:return ee}return Q});function zu(K,Q){return Q=Q??c,!!Q&&(typeof K=="number"||pe.test(K))&&K>-1&&K%1==0&&K<Q}function Hu(K){var Q=typeof K;return Q=="string"||Q=="number"||Q=="symbol"||Q=="boolean"?K!=="__proto__":K===null}function Ku(K){return!!Te&&Te in K}function Wu(K){var Q=K&&K.constructor,de=typeof Q=="function"&&Q.prototype||Be;return K===de}function Ud(K){return $e.call(K)}function Gi(K){if(K!=null){try{return Pe.call(K)}catch{}try{return K+""}catch{}}return""}function Vu(K,Q){return K===Q||K!==K&&Q!==Q}var Gu=zc(function(){return arguments}())?zc:function(K){return Ao(K)&&je.call(K,"callee")&&!dt.call(K,"callee")},Sa=Array.isArray;function Fd(K){return K!=null&&Yu(K.length)&&!Da(K)}var Hc=Ot||Kt;function jd(K,Q){return Eo(K,Q)}function Da(K){if(!Ju(K))return!1;var Q=_o(K);return Q==A||Q==S||Q==h||Q==P}function Yu(K){return typeof K=="number"&&K>-1&&K%1==0&&K<=c}function Ju(K){var Q=typeof K;return K!=null&&(Q=="object"||Q=="function")}function Ao(K){return K!=null&&typeof K=="object"}var Qu=le?ze(le):Uu;function kd(K){return Fd(K)?Lu(K):Fu(K)}function Wt(){return[]}function Kt(){return!1}t.exports=jd})(o0,o0.exports);var C9=o0.exports;function O9(t,e){return e=e||{},new Promise(function(r,n){var i=new XMLHttpRequest,o=[],c=[],l={},f=function(){return{ok:(i.status/100|0)==2,statusText:i.statusText,status:i.status,url:i.responseURL,text:function(){return Promise.resolve(i.responseText)},json:function(){return Promise.resolve(i.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([i.response]))},clone:f,headers:{keys:function(){return o},entries:function(){return c},get:function(g){return l[g.toLowerCase()]},has:function(g){return g.toLowerCase()in l}}}};for(var h in i.open(e.method||"get",t,!0),i.onload=function(){i.getAllResponseHeaders().replace(/^(.*?):[^\S\n]*([\s\S]*?)$/gm,function(g,_,E){o.push(_=_.toLowerCase()),c.push([_,E]),l[_]=l[_]?l[_]+","+E:E}),r(f())},i.onerror=n,i.withCredentials=e.credentials=="include",e.headers)i.setRequestHeader(h,e.headers[h]);i.send(e.body||null)})}var P9=Object.freeze({__proto__:null,default:O9}),Iv=$o(P9),M9=self.fetch||(self.fetch=Iv.default||Iv),T9=Object.defineProperty,Sv=Object.getOwnPropertySymbols,$9=Object.prototype.hasOwnProperty,N9=Object.prototype.propertyIsEnumerable,Dv=(t,e,r)=>e in t?T9(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,Kr=(t,e)=>{for(var r in e||(e={}))$9.call(e,r)&&Dv(t,r,e[r]);if(Sv)for(var r of Sv(e))N9.call(e,r)&&Dv(t,r,e[r]);return t};function R9(t,e){if(t.length>=255)throw new TypeError("Alphabet too long");for(var r=new Uint8Array(256),n=0;n<r.length;n++)r[n]=255;for(var i=0;i<t.length;i++){var o=t.charAt(i),c=o.charCodeAt(0);if(r[c]!==255)throw new TypeError(o+" is ambiguous");r[c]=i}var l=t.length,f=t.charAt(0),h=Math.log(l)/Math.log(256),g=Math.log(256)/Math.log(l);function _(S){if(S instanceof Uint8Array||(ArrayBuffer.isView(S)?S=new Uint8Array(S.buffer,S.byteOffset,S.byteLength):Array.isArray(S)&&(S=Uint8Array.from(S))),!(S instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(S.length===0)return"";for(var U=0,W=0,Y=0,B=S.length;Y!==B&&S[Y]===0;)Y++,U++;for(var z=(B-Y)*g+1>>>0,P=new Uint8Array(z);Y!==B;){for(var F=S[Y],j=0,m=z-1;(F!==0||j<W)&&m!==-1;m--,j++)F+=256*P[m]>>>0,P[m]=F%l>>>0,F=F/l>>>0;if(F!==0)throw new Error("Non-zero carry");W=j,Y++}for(var T=z-W;T!==z&&P[T]===0;)T++;for(var te=f.repeat(U);T<z;++T)te+=t.charAt(P[T]);return te}function E(S){if(typeof S!="string")throw new TypeError("Expected String");if(S.length===0)return new Uint8Array;var U=0;if(S[U]!==" "){for(var W=0,Y=0;S[U]===f;)W++,U++;for(var B=(S.length-U)*h+1>>>0,z=new Uint8Array(B);S[U];){var P=r[S.charCodeAt(U)];if(P===255)return;for(var F=0,j=B-1;(P!==0||F<Y)&&j!==-1;j--,F++)P+=l*z[j]>>>0,z[j]=P%256>>>0,P=P/256>>>0;if(P!==0)throw new Error("Non-zero carry");Y=F,U++}if(S[U]!==" "){for(var m=B-Y;m!==B&&z[m]===0;)m++;for(var T=new Uint8Array(W+(B-m)),te=W;m!==B;)T[te++]=z[m++];return T}}}function A(S){var U=E(S);if(U)return U;throw new Error(`Non-${e} character`)}return{encode:_,decodeUnsafe:E,decode:A}}var L9=R9,B9=L9;const Cv=t=>{if(t instanceof Uint8Array&&t.constructor.name==="Uint8Array")return t;if(t instanceof ArrayBuffer)return new Uint8Array(t);if(ArrayBuffer.isView(t))return new Uint8Array(t.buffer,t.byteOffset,t.byteLength);throw new Error("Unknown type, must be binary type")},U9=t=>new TextEncoder().encode(t),F9=t=>new TextDecoder().decode(t);class j9{constructor(e,r,n){this.name=e,this.prefix=r,this.baseEncode=n}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}}class k9{constructor(e,r,n){if(this.name=e,this.prefix=r,r.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=r.codePointAt(0),this.baseDecode=n}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return Ov(this,e)}}class q9{constructor(e){this.decoders=e}or(e){return Ov(this,e)}decode(e){const r=e[0],n=this.decoders[r];if(n)return n.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}}const Ov=(t,e)=>new q9(Kr(Kr({},t.decoders||{[t.prefix]:t}),e.decoders||{[e.prefix]:e}));class z9{constructor(e,r,n,i){this.name=e,this.prefix=r,this.baseEncode=n,this.baseDecode=i,this.encoder=new j9(e,r,n),this.decoder=new k9(e,r,i)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}}const Xl=({name:t,prefix:e,encode:r,decode:n})=>new z9(t,e,r,n),yc=({prefix:t,name:e,alphabet:r})=>{const{encode:n,decode:i}=B9(r,e);return Xl({prefix:t,name:e,encode:n,decode:o=>Cv(i(o))})},H9=(t,e,r,n)=>{const i={};for(let g=0;g<e.length;++g)i[e[g]]=g;let o=t.length;for(;t[o-1]==="=";)--o;const c=new Uint8Array(o*r/8|0);let l=0,f=0,h=0;for(let g=0;g<o;++g){const _=i[t[g]];if(_===void 0)throw new SyntaxError(`Non-${n} character`);f=f<<r|_,l+=r,l>=8&&(l-=8,c[h++]=255&f>>l)}if(l>=r||255&f<<8-l)throw new SyntaxError("Unexpected end of data");return c},K9=(t,e,r)=>{const n=e[e.length-1]==="=",i=(1<<r)-1;let o="",c=0,l=0;for(let f=0;f<t.length;++f)for(l=l<<8|t[f],c+=8;c>r;)c-=r,o+=e[i&l>>c];if(c&&(o+=e[i&l<<r-c]),n)for(;o.length*r&7;)o+="=";return o},Mr=({name:t,prefix:e,bitsPerChar:r,alphabet:n})=>Xl({prefix:e,name:t,encode(i){return K9(i,n,r)},decode(i){return H9(i,n,r,t)}}),W9=Xl({prefix:"\0",name:"identity",encode:t=>F9(t),decode:t=>U9(t)});var V9=Object.freeze({__proto__:null,identity:W9});const G9=Mr({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var Y9=Object.freeze({__proto__:null,base2:G9});const J9=Mr({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var Q9=Object.freeze({__proto__:null,base8:J9});const Z9=yc({prefix:"9",name:"base10",alphabet:"0123456789"});var X9=Object.freeze({__proto__:null,base10:Z9});const eI=Mr({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),tI=Mr({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var rI=Object.freeze({__proto__:null,base16:eI,base16upper:tI});const nI=Mr({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),iI=Mr({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),sI=Mr({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),oI=Mr({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),aI=Mr({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),cI=Mr({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),lI=Mr({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),uI=Mr({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),hI=Mr({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var fI=Object.freeze({__proto__:null,base32:nI,base32upper:iI,base32pad:sI,base32padupper:oI,base32hex:aI,base32hexupper:cI,base32hexpad:lI,base32hexpadupper:uI,base32z:hI});const dI=yc({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),pI=yc({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var gI=Object.freeze({__proto__:null,base36:dI,base36upper:pI});const mI=yc({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),vI=yc({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var wI=Object.freeze({__proto__:null,base58btc:mI,base58flickr:vI});const yI=Mr({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),bI=Mr({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),_I=Mr({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),EI=Mr({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var AI=Object.freeze({__proto__:null,base64:yI,base64pad:bI,base64url:_I,base64urlpad:EI});const Pv=Array.from("\u{1F680}\u{1FA90}\u2604\u{1F6F0}\u{1F30C}\u{1F311}\u{1F312}\u{1F313}\u{1F314}\u{1F315}\u{1F316}\u{1F317}\u{1F318}\u{1F30D}\u{1F30F}\u{1F30E}\u{1F409}\u2600\u{1F4BB}\u{1F5A5}\u{1F4BE}\u{1F4BF}\u{1F602}\u2764\u{1F60D}\u{1F923}\u{1F60A}\u{1F64F}\u{1F495}\u{1F62D}\u{1F618}\u{1F44D}\u{1F605}\u{1F44F}\u{1F601}\u{1F525}\u{1F970}\u{1F494}\u{1F496}\u{1F499}\u{1F622}\u{1F914}\u{1F606}\u{1F644}\u{1F4AA}\u{1F609}\u263A\u{1F44C}\u{1F917}\u{1F49C}\u{1F614}\u{1F60E}\u{1F607}\u{1F339}\u{1F926}\u{1F389}\u{1F49E}\u270C\u2728\u{1F937}\u{1F631}\u{1F60C}\u{1F338}\u{1F64C}\u{1F60B}\u{1F497}\u{1F49A}\u{1F60F}\u{1F49B}\u{1F642}\u{1F493}\u{1F929}\u{1F604}\u{1F600}\u{1F5A4}\u{1F603}\u{1F4AF}\u{1F648}\u{1F447}\u{1F3B6}\u{1F612}\u{1F92D}\u2763\u{1F61C}\u{1F48B}\u{1F440}\u{1F62A}\u{1F611}\u{1F4A5}\u{1F64B}\u{1F61E}\u{1F629}\u{1F621}\u{1F92A}\u{1F44A}\u{1F973}\u{1F625}\u{1F924}\u{1F449}\u{1F483}\u{1F633}\u270B\u{1F61A}\u{1F61D}\u{1F634}\u{1F31F}\u{1F62C}\u{1F643}\u{1F340}\u{1F337}\u{1F63B}\u{1F613}\u2B50\u2705\u{1F97A}\u{1F308}\u{1F608}\u{1F918}\u{1F4A6}\u2714\u{1F623}\u{1F3C3}\u{1F490}\u2639\u{1F38A}\u{1F498}\u{1F620}\u261D\u{1F615}\u{1F33A}\u{1F382}\u{1F33B}\u{1F610}\u{1F595}\u{1F49D}\u{1F64A}\u{1F639}\u{1F5E3}\u{1F4AB}\u{1F480}\u{1F451}\u{1F3B5}\u{1F91E}\u{1F61B}\u{1F534}\u{1F624}\u{1F33C}\u{1F62B}\u26BD\u{1F919}\u2615\u{1F3C6}\u{1F92B}\u{1F448}\u{1F62E}\u{1F646}\u{1F37B}\u{1F343}\u{1F436}\u{1F481}\u{1F632}\u{1F33F}\u{1F9E1}\u{1F381}\u26A1\u{1F31E}\u{1F388}\u274C\u270A\u{1F44B}\u{1F630}\u{1F928}\u{1F636}\u{1F91D}\u{1F6B6}\u{1F4B0}\u{1F353}\u{1F4A2}\u{1F91F}\u{1F641}\u{1F6A8}\u{1F4A8}\u{1F92C}\u2708\u{1F380}\u{1F37A}\u{1F913}\u{1F619}\u{1F49F}\u{1F331}\u{1F616}\u{1F476}\u{1F974}\u25B6\u27A1\u2753\u{1F48E}\u{1F4B8}\u2B07\u{1F628}\u{1F31A}\u{1F98B}\u{1F637}\u{1F57A}\u26A0\u{1F645}\u{1F61F}\u{1F635}\u{1F44E}\u{1F932}\u{1F920}\u{1F927}\u{1F4CC}\u{1F535}\u{1F485}\u{1F9D0}\u{1F43E}\u{1F352}\u{1F617}\u{1F911}\u{1F30A}\u{1F92F}\u{1F437}\u260E\u{1F4A7}\u{1F62F}\u{1F486}\u{1F446}\u{1F3A4}\u{1F647}\u{1F351}\u2744\u{1F334}\u{1F4A3}\u{1F438}\u{1F48C}\u{1F4CD}\u{1F940}\u{1F922}\u{1F445}\u{1F4A1}\u{1F4A9}\u{1F450}\u{1F4F8}\u{1F47B}\u{1F910}\u{1F92E}\u{1F3BC}\u{1F975}\u{1F6A9}\u{1F34E}\u{1F34A}\u{1F47C}\u{1F48D}\u{1F4E3}\u{1F942}"),xI=Pv.reduce((t,e,r)=>(t[r]=e,t),[]),II=Pv.reduce((t,e,r)=>(t[e.codePointAt(0)]=r,t),[]);function SI(t){return t.reduce((e,r)=>(e+=xI[r],e),"")}function DI(t){const e=[];for(const r of t){const n=II[r.codePointAt(0)];if(n===void 0)throw new Error(`Non-base256emoji character: ${r}`);e.push(n)}return new Uint8Array(e)}const CI=Xl({prefix:"\u{1F680}",name:"base256emoji",encode:SI,decode:DI});var OI=Object.freeze({__proto__:null,base256emoji:CI}),PI=Tv,Mv=128,MI=127,TI=~MI,$I=Math.pow(2,31);function Tv(t,e,r){e=e||[],r=r||0;for(var n=r;t>=$I;)e[r++]=t&255|Mv,t/=128;for(;t&TI;)e[r++]=t&255|Mv,t>>>=7;return e[r]=t|0,Tv.bytes=r-n+1,e}var NI=a0,RI=128,$v=127;function a0(t,n){var r=0,n=n||0,i=0,o=n,c,l=t.length;do{if(o>=l)throw a0.bytes=0,new RangeError("Could not decode varint");c=t[o++],r+=i<28?(c&$v)<<i:(c&$v)*Math.pow(2,i),i+=7}while(c>=RI);return a0.bytes=o-n,r}var LI=Math.pow(2,7),BI=Math.pow(2,14),UI=Math.pow(2,21),FI=Math.pow(2,28),jI=Math.pow(2,35),kI=Math.pow(2,42),qI=Math.pow(2,49),zI=Math.pow(2,56),HI=Math.pow(2,63),KI=function(t){return t<LI?1:t<BI?2:t<UI?3:t<FI?4:t<jI?5:t<kI?6:t<qI?7:t<zI?8:t<HI?9:10},WI={encode:PI,decode:NI,encodingLength:KI},Nv=WI;const Rv=(t,e,r=0)=>(Nv.encode(t,e,r),e),Lv=t=>Nv.encodingLength(t),c0=(t,e)=>{const r=e.byteLength,n=Lv(t),i=n+Lv(r),o=new Uint8Array(i+r);return Rv(t,o,0),Rv(r,o,n),o.set(e,i),new VI(t,r,e,o)};class VI{constructor(e,r,n,i){this.code=e,this.size=r,this.digest=n,this.bytes=i}}const Bv=({name:t,code:e,encode:r})=>new GI(t,e,r);class GI{constructor(e,r,n){this.name=e,this.code=r,this.encode=n}digest(e){if(e instanceof Uint8Array){const r=this.encode(e);return r instanceof Uint8Array?c0(this.code,r):r.then(n=>c0(this.code,n))}else throw Error("Unknown type, must be binary type")}}const Uv=t=>async e=>new Uint8Array(await crypto.subtle.digest(t,e)),YI=Bv({name:"sha2-256",code:18,encode:Uv("SHA-256")}),JI=Bv({name:"sha2-512",code:19,encode:Uv("SHA-512")});var QI=Object.freeze({__proto__:null,sha256:YI,sha512:JI});const Fv=0,ZI="identity",jv=Cv;var XI=Object.freeze({__proto__:null,identity:{code:Fv,name:ZI,encode:jv,digest:t=>c0(Fv,jv(t))}});new TextEncoder,new TextDecoder;const kv=Kr(Kr(Kr(Kr(Kr(Kr(Kr(Kr(Kr(Kr({},V9),Y9),Q9),X9),rI),fI),gI),wI),AI),OI);Kr(Kr({},QI),XI);function qv(t){return globalThis.Buffer!=null?new Uint8Array(t.buffer,t.byteOffset,t.byteLength):t}function eS(t=0){return globalThis.Buffer!=null&&globalThis.Buffer.allocUnsafe!=null?qv(globalThis.Buffer.allocUnsafe(t)):new Uint8Array(t)}function zv(t,e,r,n){return{name:t,prefix:e,encoder:{name:t,prefix:e,encode:r},decoder:{decode:n}}}const Hv=zv("utf8","u",t=>"u"+new TextDecoder("utf8").decode(t),t=>new TextEncoder().encode(t.substring(1))),l0=zv("ascii","a",t=>{let e="a";for(let r=0;r<t.length;r++)e+=String.fromCharCode(t[r]);return e},t=>{t=t.substring(1);const e=eS(t.length);for(let r=0;r<t.length;r++)e[r]=t.charCodeAt(r);return e}),tS=Kr({utf8:Hv,"utf-8":Hv,hex:kv.base16,latin1:l0,ascii:l0,binary:l0},kv);function rS(t,e="utf8"){const r=tS[e];if(!r)throw new Error(`Unsupported encoding "${e}"`);return(e==="utf8"||e==="utf-8")&&globalThis.Buffer!=null&&globalThis.Buffer.from!=null?qv(globalThis.Buffer.from(t,"utf-8")):r.decoder.decode(`${r.prefix}${t}`)}const Kv="wc",nS=2,u0="core",hs=`${Kv}@2:${u0}:`,iS={name:u0,logger:"error"},sS={database:":memory:"},oS="crypto",Wv="client_ed25519_seed",aS=_e.ONE_DAY,cS="keychain",lS="0.3",uS="messages",hS="0.3",fS=_e.SIX_HOURS,dS="publisher",Vv="irn",pS="error",Gv="wss://relay.walletconnect.com",Yv="wss://relay.walletconnect.org",gS="relayer",wn={message:"relayer_message",message_ack:"relayer_message_ack",connect:"relayer_connect",disconnect:"relayer_disconnect",error:"relayer_error",connection_stalled:"relayer_connection_stalled",transport_closed:"relayer_transport_closed",publish:"relayer_publish"},mS="_subscription",Tn={payload:"payload",connect:"connect",disconnect:"disconnect",error:"error"},vS=_e.ONE_SECOND,wS="2.12.2",yS=1e4,bS="0.3",_S="WALLETCONNECT_CLIENT_ID",Ei={created:"subscription_created",deleted:"subscription_deleted",expired:"subscription_expired",disabled:"subscription_disabled",sync:"subscription_sync",resubscribed:"subscription_resubscribed"},ES="subscription",AS="0.3",xS=_e.FIVE_SECONDS*1e3,IS="pairing",SS="0.3",bc={wc_pairingDelete:{req:{ttl:_e.ONE_DAY,prompt:!1,tag:1e3},res:{ttl:_e.ONE_DAY,prompt:!1,tag:1001}},wc_pairingPing:{req:{ttl:_e.THIRTY_SECONDS,prompt:!1,tag:1002},res:{ttl:_e.THIRTY_SECONDS,prompt:!1,tag:1003}},unregistered_method:{req:{ttl:_e.ONE_DAY,prompt:!1,tag:0},res:{ttl:_e.ONE_DAY,prompt:!1,tag:0}}},ra={create:"pairing_create",expire:"pairing_expire",delete:"pairing_delete",ping:"pairing_ping"},ei={created:"history_created",updated:"history_updated",deleted:"history_deleted",sync:"history_sync"},DS="history",CS="0.3",OS="expirer",$n={created:"expirer_created",deleted:"expirer_deleted",expired:"expirer_expired",sync:"expirer_sync"},PS="0.3",h0="verify-api",na="https://verify.walletconnect.com",f0="https://verify.walletconnect.org",MS=[na,f0],TS="echo",$S="https://echo.walletconnect.com";class NS{constructor(e,r){this.core=e,this.logger=r,this.keychain=new Map,this.name=cS,this.version=lS,this.initialized=!1,this.storagePrefix=hs,this.init=async()=>{if(!this.initialized){const n=await this.getKeyChain();typeof n<"u"&&(this.keychain=n),this.initialized=!0}},this.has=n=>(this.isInitialized(),this.keychain.has(n)),this.set=async(n,i)=>{this.isInitialized(),this.keychain.set(n,i),await this.persist()},this.get=n=>{this.isInitialized();const i=this.keychain.get(n);if(typeof i>"u"){const{message:o}=me("NO_MATCHING_KEY",`${this.name}: ${n}`);throw new Error(o)}return i},this.del=async n=>{this.isInitialized(),this.keychain.delete(n),await this.persist()},this.core=e,this.logger=on(r,this.name)}get context(){return sn(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}async setKeyChain(e){await this.core.storage.setItem(this.storageKey,sg(e))}async getKeyChain(){const e=await this.core.storage.getItem(this.storageKey);return typeof e<"u"?og(e):void 0}async persist(){await this.setKeyChain(this.keychain)}isInitialized(){if(!this.initialized){const{message:e}=me("NOT_INITIALIZED",this.name);throw new Error(e)}}}class RS{constructor(e,r,n){this.core=e,this.logger=r,this.name=oS,this.initialized=!1,this.init=async()=>{this.initialized||(await this.keychain.init(),this.initialized=!0)},this.hasKeys=i=>(this.isInitialized(),this.keychain.has(i)),this.getClientId=async()=>{this.isInitialized();const i=await this.getClientSeed(),o=uv(i);return lv(o.publicKey)},this.generateKeyPair=()=>{this.isInitialized();const i=UE();return this.setPrivateKey(i.publicKey,i.privateKey)},this.signJWT=async i=>{this.isInitialized();const o=await this.getClientSeed(),c=uv(o),l=Bf();return await Fx(l,i,aS,c)},this.generateSharedKey=(i,o,c)=>{this.isInitialized();const l=this.getPrivateKey(i),f=FE(l,o);return this.setSymKey(f,c)},this.setSymKey=async(i,o)=>{this.isInitialized();const c=o||Rl(i);return await this.keychain.set(c,i),c},this.deleteKeyPair=async i=>{this.isInitialized(),await this.keychain.del(i)},this.deleteSymKey=async i=>{this.isInitialized(),await this.keychain.del(i)},this.encode=async(i,o,c)=>{this.isInitialized();const l=xm(c),f=Fi(o);if(Im(l)){const E=l.senderPublicKey,A=l.receiverPublicKey;i=await this.generateSharedKey(E,A)}const h=this.getSymKey(i),{type:g,senderPublicKey:_}=l;return kE({type:g,symKey:h,message:f,senderPublicKey:_})},this.decode=async(i,o,c)=>{this.isInitialized();const l=HE(o,c);if(Im(l)){const f=l.receiverPublicKey,h=l.senderPublicKey;i=await this.generateSharedKey(f,h)}try{const f=this.getSymKey(i),h=qE({symKey:f,encoded:o});return uc(h)}catch(f){this.logger.error(`Failed to decode message from topic: '${i}', clientId: '${await this.getClientId()}'`),this.logger.error(f)}},this.getPayloadType=i=>{const o=Ll(i);return sc(o.type)},this.getPayloadSenderPublicKey=i=>{const o=Ll(i);return o.senderPublicKey?jr(o.senderPublicKey,zr):void 0},this.core=e,this.logger=on(r,this.name),this.keychain=n||new NS(this.core,this.logger)}get context(){return sn(this.logger)}async setPrivateKey(e,r){return await this.keychain.set(e,r),e}getPrivateKey(e){return this.keychain.get(e)}async getClientSeed(){let e="";try{e=this.keychain.get(Wv)}catch{e=Bf(),await this.keychain.set(Wv,e)}return rS(e,"base16")}getSymKey(e){return this.keychain.get(e)}isInitialized(){if(!this.initialized){const{message:e}=me("NOT_INITIALIZED",this.name);throw new Error(e)}}}class LS extends mx{constructor(e,r){super(e,r),this.logger=e,this.core=r,this.messages=new Map,this.name=uS,this.version=hS,this.initialized=!1,this.storagePrefix=hs,this.init=async()=>{if(!this.initialized){this.logger.trace("Initialized");try{const n=await this.getRelayerMessages();typeof n<"u"&&(this.messages=n),this.logger.debug(`Successfully Restored records for ${this.name}`),this.logger.trace({type:"method",method:"restore",size:this.messages.size})}catch(n){this.logger.debug(`Failed to Restore records for ${this.name}`),this.logger.error(n)}finally{this.initialized=!0}}},this.set=async(n,i)=>{this.isInitialized();const o=Ws(i);let c=this.messages.get(n);return typeof c>"u"&&(c={}),typeof c[o]<"u"||(c[o]=i,this.messages.set(n,c),await this.persist()),o},this.get=n=>{this.isInitialized();let i=this.messages.get(n);return typeof i>"u"&&(i={}),i},this.has=(n,i)=>{this.isInitialized();const o=this.get(n),c=Ws(i);return typeof o[c]<"u"},this.del=async n=>{this.isInitialized(),this.messages.delete(n),await this.persist()},this.logger=on(e,this.name),this.core=r}get context(){return sn(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}async setRelayerMessages(e){await this.core.storage.setItem(this.storageKey,sg(e))}async getRelayerMessages(){const e=await this.core.storage.getItem(this.storageKey);return typeof e<"u"?og(e):void 0}async persist(){await this.setRelayerMessages(this.messages)}isInitialized(){if(!this.initialized){const{message:e}=me("NOT_INITIALIZED",this.name);throw new Error(e)}}}class BS extends vx{constructor(e,r){super(e,r),this.relayer=e,this.logger=r,this.events=new Dr.exports.EventEmitter,this.name=dS,this.queue=new Map,this.publishTimeout=_e.toMiliseconds(_e.ONE_MINUTE),this.failedPublishTimeout=_e.toMiliseconds(_e.ONE_SECOND),this.needsTransportRestart=!1,this.publish=async(n,i,o)=>{var c;this.logger.debug("Publishing Payload"),this.logger.trace({type:"method",method:"publish",params:{topic:n,message:i,opts:o}});const l=o?.ttl||fS,f=Uf(o),h=o?.prompt||!1,g=o?.tag||0,_=o?.id||Js().toString(),E={topic:n,message:i,opts:{ttl:l,relay:f,prompt:h,tag:g,id:_}},A=`Failed to publish payload, please try again. id:${_} tag:${g}`,S=Date.now();let U,W=1;try{for(;U===void 0;){if(Date.now()-S>this.publishTimeout)throw new Error(A);this.logger.trace({id:_,attempts:W},`publisher.publish - attempt ${W}`),U=await await Ya(this.rpcPublish(n,i,l,f,h,g,_).catch(Y=>this.logger.warn(Y)),this.publishTimeout,A),W++,U||await new Promise(Y=>setTimeout(Y,this.failedPublishTimeout))}this.relayer.events.emit(wn.publish,E),this.logger.debug("Successfully Published Payload"),this.logger.trace({type:"method",method:"publish",params:{id:_,topic:n,message:i,opts:o}})}catch(Y){if(this.logger.debug("Failed to Publish Payload"),this.logger.error(Y),(c=o?.internal)!=null&&c.throwOnFailedPublish)throw Y;this.queue.set(_,E)}},this.on=(n,i)=>{this.events.on(n,i)},this.once=(n,i)=>{this.events.once(n,i)},this.off=(n,i)=>{this.events.off(n,i)},this.removeListener=(n,i)=>{this.events.removeListener(n,i)},this.relayer=e,this.logger=on(r,this.name),this.registerEventListeners()}get context(){return sn(this.logger)}rpcPublish(e,r,n,i,o,c,l){var f,h,g,_;const E={method:Bl(i.protocol).publish,params:{topic:e,message:r,ttl:n,prompt:o,tag:c},id:l};return Hr((f=E.params)==null?void 0:f.prompt)&&((h=E.params)==null||delete h.prompt),Hr((g=E.params)==null?void 0:g.tag)&&((_=E.params)==null||delete _.tag),this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"message",direction:"outgoing",request:E}),this.relayer.request(E)}removeRequestFromQueue(e){this.queue.delete(e)}checkQueue(){this.queue.forEach(async e=>{const{topic:r,message:n,opts:i}=e;await this.publish(r,n,i)})}registerEventListeners(){this.relayer.core.heartbeat.on(Zo.HEARTBEAT_EVENTS.pulse,()=>{if(this.needsTransportRestart){this.needsTransportRestart=!1,this.relayer.events.emit(wn.connection_stalled);return}this.checkQueue()}),this.relayer.on(wn.message_ack,e=>{this.removeRequestFromQueue(e.id.toString())})}}class US{constructor(){this.map=new Map,this.set=(e,r)=>{const n=this.get(e);this.exists(e,r)||this.map.set(e,[...n,r])},this.get=e=>this.map.get(e)||[],this.exists=(e,r)=>this.get(e).includes(r),this.delete=(e,r)=>{if(typeof r>"u"){this.map.delete(e);return}if(!this.map.has(e))return;const n=this.get(e);if(!this.exists(e,r))return;const i=n.filter(o=>o!==r);if(!i.length){this.map.delete(e);return}this.map.set(e,i)},this.clear=()=>{this.map.clear()}}get topics(){return Array.from(this.map.keys())}}var FS=Object.defineProperty,jS=Object.defineProperties,kS=Object.getOwnPropertyDescriptors,Jv=Object.getOwnPropertySymbols,qS=Object.prototype.hasOwnProperty,zS=Object.prototype.propertyIsEnumerable,Qv=(t,e,r)=>e in t?FS(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,_c=(t,e)=>{for(var r in e||(e={}))qS.call(e,r)&&Qv(t,r,e[r]);if(Jv)for(var r of Jv(e))zS.call(e,r)&&Qv(t,r,e[r]);return t},d0=(t,e)=>jS(t,kS(e));class HS extends bx{constructor(e,r){super(e,r),this.relayer=e,this.logger=r,this.subscriptions=new Map,this.topicMap=new US,this.events=new Dr.exports.EventEmitter,this.name=ES,this.version=AS,this.pending=new Map,this.cached=[],this.initialized=!1,this.pendingSubscriptionWatchLabel="pending_sub_watch_label",this.pollingInterval=20,this.storagePrefix=hs,this.subscribeTimeout=_e.toMiliseconds(_e.ONE_MINUTE),this.restartInProgress=!1,this.batchSubscribeTopicsLimit=500,this.init=async()=>{this.initialized||(this.logger.trace("Initialized"),this.registerEventListeners(),this.clientId=await this.relayer.core.crypto.getClientId())},this.subscribe=async(n,i)=>{await this.restartToComplete(),this.isInitialized(),this.logger.debug("Subscribing Topic"),this.logger.trace({type:"method",method:"subscribe",params:{topic:n,opts:i}});try{const o=Uf(i),c={topic:n,relay:o};this.pending.set(n,c);const l=await this.rpcSubscribe(n,o);return typeof l=="string"&&(this.onSubscribe(l,c),this.logger.debug("Successfully Subscribed Topic"),this.logger.trace({type:"method",method:"subscribe",params:{topic:n,opts:i}})),l}catch(o){throw this.logger.debug("Failed to Subscribe Topic"),this.logger.error(o),o}},this.unsubscribe=async(n,i)=>{await this.restartToComplete(),this.isInitialized(),typeof i?.id<"u"?await this.unsubscribeById(n,i.id,i):await this.unsubscribeByTopic(n,i)},this.isSubscribed=async n=>{if(this.topics.includes(n))return!0;const i=`${this.pendingSubscriptionWatchLabel}_${n}`;return await new Promise((o,c)=>{const l=new _e.Watch;l.start(i);const f=setInterval(()=>{!this.pending.has(n)&&this.topics.includes(n)&&(clearInterval(f),l.stop(i),o(!0)),l.elapsed(i)>=xS&&(clearInterval(f),l.stop(i),c(new Error("Subscription resolution timeout")))},this.pollingInterval)}).catch(()=>!1)},this.on=(n,i)=>{this.events.on(n,i)},this.once=(n,i)=>{this.events.once(n,i)},this.off=(n,i)=>{this.events.off(n,i)},this.removeListener=(n,i)=>{this.events.removeListener(n,i)},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=on(r,this.name),this.clientId=""}get context(){return sn(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,r){let n=!1;try{n=this.getSubscription(e).topic===r}catch{}return n}onEnable(){this.cached=[],this.initialized=!0}onDisable(){this.cached=this.values,this.subscriptions.clear(),this.topicMap.clear()}async unsubscribeByTopic(e,r){const n=this.topicMap.get(e);await Promise.all(n.map(async i=>await this.unsubscribeById(e,i,r)))}async unsubscribeById(e,r,n){this.logger.debug("Unsubscribing Topic"),this.logger.trace({type:"method",method:"unsubscribe",params:{topic:e,id:r,opts:n}});try{const i=Uf(n);await this.rpcUnsubscribe(e,r,i);const o=Ut("USER_DISCONNECTED",`${this.name}, ${e}`);await this.onUnsubscribe(e,r,o),this.logger.debug("Successfully Unsubscribed Topic"),this.logger.trace({type:"method",method:"unsubscribe",params:{topic:e,id:r,opts:n}})}catch(i){throw this.logger.debug("Failed to Unsubscribe Topic"),this.logger.error(i),i}}async rpcSubscribe(e,r){const n={method:Bl(r.protocol).subscribe,params:{topic:e}};this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"payload",direction:"outgoing",request:n});try{return await await Ya(this.relayer.request(n).catch(i=>this.logger.warn(i)),this.subscribeTimeout)?Ws(e+this.clientId):null}catch{this.logger.debug("Outgoing Relay Subscribe Payload stalled"),this.relayer.events.emit(wn.connection_stalled)}return null}async rpcBatchSubscribe(e){if(!e.length)return;const r=e[0].relay,n={method:Bl(r.protocol).batchSubscribe,params:{topics:e.map(i=>i.topic)}};this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"payload",direction:"outgoing",request:n});try{return await await Ya(this.relayer.request(n).catch(i=>this.logger.warn(i)),this.subscribeTimeout)}catch{this.relayer.events.emit(wn.connection_stalled)}}rpcUnsubscribe(e,r,n){const i={method:Bl(n.protocol).unsubscribe,params:{topic:e,id:r}};return this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"payload",direction:"outgoing",request:i}),this.relayer.request(i)}onSubscribe(e,r){this.setSubscription(e,d0(_c({},r),{id:e})),this.pending.delete(r.topic)}onBatchSubscribe(e){e.length&&e.forEach(r=>{this.setSubscription(r.id,_c({},r)),this.pending.delete(r.topic)})}async onUnsubscribe(e,r,n){this.events.removeAllListeners(r),this.hasSubscription(r,e)&&this.deleteSubscription(r,n),await this.relayer.messages.del(e)}async setRelayerSubscriptions(e){await this.relayer.core.storage.setItem(this.storageKey,e)}async getRelayerSubscriptions(){return await this.relayer.core.storage.getItem(this.storageKey)}setSubscription(e,r){this.logger.debug("Setting subscription"),this.logger.trace({type:"method",method:"setSubscription",id:e,subscription:r}),this.addSubscription(e,r)}addSubscription(e,r){this.subscriptions.set(e,_c({},r)),this.topicMap.set(r.topic,e),this.events.emit(Ei.created,r)}getSubscription(e){this.logger.debug("Getting subscription"),this.logger.trace({type:"method",method:"getSubscription",id:e});const r=this.subscriptions.get(e);if(!r){const{message:n}=me("NO_MATCHING_KEY",`${this.name}: ${e}`);throw new Error(n)}return r}deleteSubscription(e,r){this.logger.debug("Deleting subscription"),this.logger.trace({type:"method",method:"deleteSubscription",id:e,reason:r});const n=this.getSubscription(e);this.subscriptions.delete(e),this.topicMap.delete(n.topic,e),this.events.emit(Ei.deleted,d0(_c({},n),{reason:r}))}async persist(){await this.setRelayerSubscriptions(this.values),this.events.emit(Ei.sync)}async reset(){if(this.cached.length){const e=Math.ceil(this.cached.length/this.batchSubscribeTopicsLimit);for(let r=0;r<e;r++){const n=this.cached.splice(0,this.batchSubscribeTopicsLimit);await this.batchSubscribe(n)}}this.events.emit(Ei.resubscribed)}async restore(){try{const e=await this.getRelayerSubscriptions();if(typeof e>"u"||!e.length)return;if(this.subscriptions.size){const{message:r}=me("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(r),this.logger.error(`${this.name}: ${JSON.stringify(this.values)}`),new Error(r)}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;const r=await this.rpcBatchSubscribe(e);wi(r)&&this.onBatchSubscribe(r.map((n,i)=>d0(_c({},e[i]),{id:n})))}async onConnect(){await this.restart(),this.onEnable()}onDisconnect(){this.onDisable()}async checkPending(){if(!this.initialized||!this.relayer.connected)return;const e=[];this.pending.forEach(r=>{e.push(r)}),await this.batchSubscribe(e)}registerEventListeners(){this.relayer.core.heartbeat.on(Zo.HEARTBEAT_EVENTS.pulse,async()=>{await this.checkPending()}),this.events.on(Ei.created,async e=>{const r=Ei.created;this.logger.info(`Emitting ${r}`),this.logger.debug({type:"event",event:r,data:e}),await this.persist()}),this.events.on(Ei.deleted,async e=>{const r=Ei.deleted;this.logger.info(`Emitting ${r}`),this.logger.debug({type:"event",event:r,data:e}),await this.persist()})}isInitialized(){if(!this.initialized){const{message:e}=me("NOT_INITIALIZED",this.name);throw new Error(e)}}async restartToComplete(){this.restartInProgress&&await new Promise(e=>{const r=setInterval(()=>{this.restartInProgress||(clearInterval(r),e())},this.pollingInterval)})}}var KS=Object.defineProperty,Zv=Object.getOwnPropertySymbols,WS=Object.prototype.hasOwnProperty,VS=Object.prototype.propertyIsEnumerable,Xv=(t,e,r)=>e in t?KS(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,GS=(t,e)=>{for(var r in e||(e={}))WS.call(e,r)&&Xv(t,r,e[r]);if(Zv)for(var r of Zv(e))VS.call(e,r)&&Xv(t,r,e[r]);return t};class YS extends wx{constructor(e){super(e),this.protocol="wc",this.version=2,this.events=new Dr.exports.EventEmitter,this.name=gS,this.transportExplicitlyClosed=!1,this.initialized=!1,this.connectionAttemptInProgress=!1,this.connectionStatusPollingInterval=20,this.staleConnectionErrors=["socket hang up","socket stalled","interrupted"],this.hasExperiencedNetworkDisruption=!1,this.requestsInFlight=new Map,this.heartBeatTimeout=_e.toMiliseconds(_e.THIRTY_SECONDS+_e.ONE_SECOND),this.request=async r=>{var n,i;this.logger.debug("Publishing Request Payload");const o=r.id||Js().toString();await this.toEstablishConnection();try{const c=this.provider.request(r);this.requestsInFlight.set(o,{promise:c,request:r}),this.logger.trace({id:o,method:r.method,topic:(n=r.params)==null?void 0:n.topic},"relayer.request - attempt to publish...");const l=await new Promise(async(f,h)=>{const g=()=>{h(new Error(`relayer.request - publish interrupted, id: ${o}`))};this.provider.on(Tn.disconnect,g);const _=await c;this.provider.off(Tn.disconnect,g),f(_)});return this.logger.trace({id:o,method:r.method,topic:(i=r.params)==null?void 0:i.topic},"relayer.request - published"),l}catch(c){throw this.logger.debug(`Failed to Publish Request: ${o}`),c}finally{this.requestsInFlight.delete(o)}},this.resetPingTimeout=()=>{if(Va())try{clearTimeout(this.pingTimeout),this.pingTimeout=setTimeout(()=>{var r,n,i;(i=(n=(r=this.provider)==null?void 0:r.connection)==null?void 0:n.socket)==null||i.terminate()},this.heartBeatTimeout)}catch(r){this.logger.warn(r)}},this.onPayloadHandler=r=>{this.onProviderPayload(r),this.resetPingTimeout()},this.onConnectHandler=()=>{this.startPingTimeout(),this.events.emit(wn.connect)},this.onDisconnectHandler=()=>{this.onProviderDisconnect()},this.onProviderErrorHandler=r=>{this.logger.error(r),this.events.emit(wn.error,r),this.logger.info("Fatal socket error received, closing transport"),this.transportClose()},this.registerProviderListeners=()=>{this.provider.on(Tn.payload,this.onPayloadHandler),this.provider.on(Tn.connect,this.onConnectHandler),this.provider.on(Tn.disconnect,this.onDisconnectHandler),this.provider.on(Tn.error,this.onProviderErrorHandler)},this.core=e.core,this.logger=typeof e.logger<"u"&&typeof e.logger!="string"?on(e.logger,this.name):yi(Gl({level:e.logger||pS})),this.messages=new LS(this.logger,e.core),this.subscriber=new HS(this,this.logger),this.publisher=new BS(this,this.logger),this.relayUrl=e?.relayUrl||Gv,this.projectId=e.projectId,this.bundleId=D_(),this.provider={}}async init(){this.logger.trace("Initialized"),this.registerEventListeners(),await this.createProvider(),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 ${Yv}...`),await this.restartTransport(Yv)}this.initialized=!0,setTimeout(async()=>{this.subscriber.topics.length===0&&this.subscriber.pending.size===0&&(this.logger.info("No topics subscribed to after init, closing transport"),await this.transportClose(),this.transportExplicitlyClosed=!1)},yS)}get context(){return sn(this.logger)}get connected(){var e,r,n;return((n=(r=(e=this.provider)==null?void 0:e.connection)==null?void 0:r.socket)==null?void 0:n.readyState)===1}get connecting(){var e,r,n;return((n=(r=(e=this.provider)==null?void 0:e.connection)==null?void 0:r.socket)==null?void 0:n.readyState)===0}async publish(e,r,n){this.isInitialized(),await this.publisher.publish(e,r,n),await this.recordMessageEvent({topic:e,message:r,publishedAt:Date.now()})}async subscribe(e,r){var n;this.isInitialized();let i=((n=this.subscriber.topicMap.get(e))==null?void 0:n[0])||"",o;const c=l=>{l.topic===e&&(this.subscriber.off(Ei.created,c),o())};return await Promise.all([new Promise(l=>{o=l,this.subscriber.on(Ei.created,c)}),new Promise(async l=>{i=await this.subscriber.subscribe(e,r)||i,l()})]),i}async unsubscribe(e,r){this.isInitialized(),await this.subscriber.unsubscribe(e,r)}on(e,r){this.events.on(e,r)}once(e,r){this.events.once(e,r)}off(e,r){this.events.off(e,r)}removeListener(e,r){this.events.removeListener(e,r)}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 Ya(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(r,n)=>{const i=()=>{this.provider.off(Tn.disconnect,i),n(new Error("Connection interrupted while trying to subscribe"))};this.provider.on(Tn.disconnect,i),await Ya(this.provider.connect(),_e.toMiliseconds(_e.ONE_MINUTE),`Socket stalled when trying to connect to ${this.relayUrl}`).catch(o=>{n(o)}),await this.subscriber.start(),this.hasExperiencedNetworkDisruption=!1,r()})}catch(r){this.logger.error(r);const n=r;if(!this.isConnectionStalled(n.message))throw r}finally{this.connectionAttemptInProgress=!1}}async restartTransport(e){this.connectionAttemptInProgress||(this.relayUrl=e||this.relayUrl,await this.confirmOnlineStateOrThrow(),await this.transportClose(),await this.createProvider(),await this.transportOpen())}async confirmOnlineStateOrThrow(){if(!await Bm())throw new Error("No internet connection detected. Please restart your network and try again.")}startPingTimeout(){var e,r,n,i,o;if(Va())try{(r=(e=this.provider)==null?void 0:e.connection)!=null&&r.socket&&((o=(i=(n=this.provider)==null?void 0:n.connection)==null?void 0:i.socket)==null||o.once("ping",()=>{this.resetPingTimeout()})),this.resetPingTimeout()}catch(c){this.logger.warn(c)}}isConnectionStalled(e){return this.staleConnectionErrors.some(r=>e.includes(r))}async createProvider(){this.provider.connection&&this.unregisterProviderListeners();const e=await this.core.crypto.signJWT(this.relayUrl);this.provider=new qi(new D9($_({sdkVersion:wS,protocol:this.protocol,version:this.version,relayUrl:this.relayUrl,projectId:this.projectId,auth:e,useOnCloseEvent:!0,bundleId:this.bundleId}))),this.registerProviderListeners()}async recordMessageEvent(e){const{topic:r,message:n}=e;await this.messages.set(r,n)}async shouldIgnoreMessageEvent(e){const{topic:r,message:n}=e;if(!n||n.length===0)return this.logger.debug(`Ignoring invalid/empty message: ${n}`),!0;if(!await this.subscriber.isSubscribed(r))return this.logger.debug(`Ignoring message for non-subscribed topic ${r}`),!0;const i=this.messages.has(r,n);return i&&this.logger.debug(`Ignoring duplicate message: ${n}`),i}async onProviderPayload(e){if(this.logger.debug("Incoming Relay Payload"),this.logger.trace({type:"payload",direction:"incoming",payload:e}),s0(e)){if(!e.method.endsWith(mS))return;const r=e.params,{topic:n,message:i,publishedAt:o}=r.data,c={topic:n,message:i,publishedAt:o};this.logger.debug("Emitting Relayer Payload"),this.logger.trace(GS({type:"event",event:r.id},c)),this.events.emit(r.id,c),await this.acknowledgePayload(e),await this.onMessageEvent(c)}else Zl(e)&&this.events.emit(wn.message_ack,e)}async onMessageEvent(e){await this.shouldIgnoreMessageEvent(e)||(this.events.emit(wn.message,e),await this.recordMessageEvent(e))}async acknowledgePayload(e){const r=Jl(e.id,!0);await this.provider.connection.send(r)}unregisterProviderListeners(){this.provider.off(Tn.payload,this.onPayloadHandler),this.provider.off(Tn.connect,this.onConnectHandler),this.provider.off(Tn.disconnect,this.onDisconnectHandler),this.provider.off(Tn.error,this.onProviderErrorHandler)}async registerEventListeners(){let e=await Bm();NA(async r=>{e!==r&&(e=r,r?await this.restartTransport().catch(n=>this.logger.error(n)):(this.hasExperiencedNetworkDisruption=!0,await this.transportDisconnect(),this.transportExplicitlyClosed=!1))})}async onProviderDisconnect(){await this.subscriber.stop(),this.events.emit(wn.disconnect),this.connectionAttemptInProgress=!1,!this.transportExplicitlyClosed&&setTimeout(async()=>{await this.transportOpen().catch(e=>this.logger.error(e))},_e.toMiliseconds(vS))}isInitialized(){if(!this.initialized){const{message:e}=me("NOT_INITIALIZED",this.name);throw new Error(e)}}async toEstablishConnection(){await this.confirmOnlineStateOrThrow(),!this.connected&&(this.connectionAttemptInProgress&&await new Promise(e=>{const r=setInterval(()=>{this.connected&&(clearInterval(r),e())},this.connectionStatusPollingInterval)}),await this.transportOpen())}}var JS=Object.defineProperty,ew=Object.getOwnPropertySymbols,QS=Object.prototype.hasOwnProperty,ZS=Object.prototype.propertyIsEnumerable,tw=(t,e,r)=>e in t?JS(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,rw=(t,e)=>{for(var r in e||(e={}))QS.call(e,r)&&tw(t,r,e[r]);if(ew)for(var r of ew(e))ZS.call(e,r)&&tw(t,r,e[r]);return t};class Qs extends yx{constructor(e,r,n,i=hs,o=void 0){super(e,r,n,i),this.core=e,this.logger=r,this.name=n,this.map=new Map,this.version=bS,this.cached=[],this.initialized=!1,this.storagePrefix=hs,this.recentlyDeleted=[],this.recentlyDeletedLimit=200,this.init=async()=>{this.initialized||(this.logger.trace("Initialized"),await this.restore(),this.cached.forEach(c=>{this.getKey&&c!==null&&!Hr(c)?this.map.set(this.getKey(c),c):hA(c)?this.map.set(c.id,c):fA(c)&&this.map.set(c.topic,c)}),this.cached=[],this.initialized=!0)},this.set=async(c,l)=>{this.isInitialized(),this.map.has(c)?await this.update(c,l):(this.logger.debug("Setting value"),this.logger.trace({type:"method",method:"set",key:c,value:l}),this.map.set(c,l),await this.persist())},this.get=c=>(this.isInitialized(),this.logger.debug("Getting value"),this.logger.trace({type:"method",method:"get",key:c}),this.getData(c)),this.getAll=c=>(this.isInitialized(),c?this.values.filter(l=>Object.keys(c).every(f=>C9(l[f],c[f]))):this.values),this.update=async(c,l)=>{this.isInitialized(),this.logger.debug("Updating value"),this.logger.trace({type:"method",method:"update",key:c,update:l});const f=rw(rw({},this.getData(c)),l);this.map.set(c,f),await this.persist()},this.delete=async(c,l)=>{this.isInitialized(),this.map.has(c)&&(this.logger.debug("Deleting value"),this.logger.trace({type:"method",method:"delete",key:c,reason:l}),this.map.delete(c),this.addToRecentlyDeleted(c),await this.persist())},this.logger=on(r,this.name),this.storagePrefix=i,this.getKey=o}get context(){return sn(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}get length(){return this.map.size}get keys(){return Array.from(this.map.keys())}get values(){return Array.from(this.map.values())}addToRecentlyDeleted(e){this.recentlyDeleted.push(e),this.recentlyDeleted.length>=this.recentlyDeletedLimit&&this.recentlyDeleted.splice(0,this.recentlyDeletedLimit/2)}async setDataStore(e){await this.core.storage.setItem(this.storageKey,e)}async getDataStore(){return await this.core.storage.getItem(this.storageKey)}getData(e){const r=this.map.get(e);if(!r){if(this.recentlyDeleted.includes(e)){const{message:i}=me("MISSING_OR_INVALID",`Record was recently deleted - ${this.name}: ${e}`);throw this.logger.error(i),new Error(i)}const{message:n}=me("NO_MATCHING_KEY",`${this.name}: ${e}`);throw this.logger.error(n),new Error(n)}return r}async persist(){await this.setDataStore(this.values)}async restore(){try{const e=await this.getDataStore();if(typeof e>"u"||!e.length)return;if(this.map.size){const{message:r}=me("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(r),new Error(r)}this.cached=e,this.logger.debug(`Successfully Restored value for ${this.name}`),this.logger.trace({type:"method",method:"restore",value:this.values})}catch(e){this.logger.debug(`Failed to Restore value for ${this.name}`),this.logger.error(e)}}isInitialized(){if(!this.initialized){const{message:e}=me("NOT_INITIALIZED",this.name);throw new Error(e)}}}class XS{constructor(e,r){this.core=e,this.logger=r,this.name=IS,this.version=SS,this.events=new Dr.exports,this.initialized=!1,this.storagePrefix=hs,this.ignoredPayloadTypes=[ls],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:n})=>{this.isInitialized(),this.registeredMethods=[...new Set([...this.registeredMethods,...n])]},this.create=async n=>{this.isInitialized();const i=Bf(),o=await this.core.crypto.setSymKey(i),c=Nr(_e.FIVE_MINUTES),l={protocol:Vv},f={topic:o,expiry:c,relay:l,active:!1},h=tA({protocol:this.core.protocol,version:this.core.version,topic:o,symKey:i,relay:l,expiryTimestamp:c,methods:n?.methods});return await this.pairings.set(o,f),await this.core.relayer.subscribe(o),this.core.expirer.set(o,c),{topic:o,uri:h}},this.pair=async n=>{this.isInitialized(),this.isValidPair(n);const{topic:i,symKey:o,relay:c,expiryTimestamp:l,methods:f}=Om(n.uri);let h;if(this.pairings.keys.includes(i)&&(h=this.pairings.get(i),h.active))throw new Error(`Pairing already exists: ${i}. Please try again with a new connection URI.`);const g=l||Nr(_e.FIVE_MINUTES),_={topic:i,relay:c,expiry:g,active:!1,methods:f};return await this.pairings.set(i,_),this.core.expirer.set(i,g),n.activatePairing&&await this.activate({topic:i}),this.events.emit(ra.create,_),this.core.crypto.keychain.has(i)||await this.core.crypto.setSymKey(o,i),await this.core.relayer.subscribe(i,{relay:c}),_},this.activate=async({topic:n})=>{this.isInitialized();const i=Nr(_e.THIRTY_DAYS);await this.pairings.update(n,{active:!0,expiry:i}),this.core.expirer.set(n,i)},this.ping=async n=>{this.isInitialized(),await this.isValidPing(n);const{topic:i}=n;if(this.pairings.keys.includes(i)){const o=await this.sendRequest(i,"wc_pairingPing",{}),{done:c,resolve:l,reject:f}=qs();this.events.once(wt("pairing_ping",o),({error:h})=>{h?f(h):l()}),await c()}},this.updateExpiry=async({topic:n,expiry:i})=>{this.isInitialized(),await this.pairings.update(n,{expiry:i})},this.updateMetadata=async({topic:n,metadata:i})=>{this.isInitialized(),await this.pairings.update(n,{peerMetadata:i})},this.getPairings=()=>(this.isInitialized(),this.pairings.values),this.disconnect=async n=>{this.isInitialized(),await this.isValidDisconnect(n);const{topic:i}=n;this.pairings.keys.includes(i)&&(await this.sendRequest(i,"wc_pairingDelete",Ut("USER_DISCONNECTED")),await this.deletePairing(i))},this.sendRequest=async(n,i,o)=>{const c=ta(i,o),l=await this.core.crypto.encode(n,c),f=bc[i].req;return this.core.history.set(n,c),this.core.relayer.publish(n,l,f),c.id},this.sendResult=async(n,i,o)=>{const c=Jl(n,o),l=await this.core.crypto.encode(i,c),f=await this.core.history.get(i,n),h=bc[f.request.method].res;await this.core.relayer.publish(i,l,h),await this.core.history.resolve(c)},this.sendError=async(n,i,o)=>{const c=Ql(n,o),l=await this.core.crypto.encode(i,c),f=await this.core.history.get(i,n),h=bc[f.request.method]?bc[f.request.method].res:bc.unregistered_method.res;await this.core.relayer.publish(i,l,h),await this.core.history.resolve(c)},this.deletePairing=async(n,i)=>{await this.core.relayer.unsubscribe(n),await Promise.all([this.pairings.delete(n,Ut("USER_DISCONNECTED")),this.core.crypto.deleteSymKey(n),i?Promise.resolve():this.core.expirer.del(n)])},this.cleanup=async()=>{const n=this.pairings.getAll().filter(i=>ss(i.expiry));await Promise.all(n.map(i=>this.deletePairing(i.topic)))},this.onRelayEventRequest=n=>{const{topic:i,payload:o}=n;switch(o.method){case"wc_pairingPing":return this.onPairingPingRequest(i,o);case"wc_pairingDelete":return this.onPairingDeleteRequest(i,o);default:return this.onUnknownRpcMethodRequest(i,o)}},this.onRelayEventResponse=async n=>{const{topic:i,payload:o}=n,c=(await this.core.history.get(i,o.id)).request.method;switch(c){case"wc_pairingPing":return this.onPairingPingResponse(i,o);default:return this.onUnknownRpcMethodResponse(c)}},this.onPairingPingRequest=async(n,i)=>{const{id:o}=i;try{this.isValidPing({topic:n}),await this.sendResult(o,n,!0),this.events.emit(ra.ping,{id:o,topic:n})}catch(c){await this.sendError(o,n,c),this.logger.error(c)}},this.onPairingPingResponse=(n,i)=>{const{id:o}=i;setTimeout(()=>{_i(i)?this.events.emit(wt("pairing_ping",o),{}):Mn(i)&&this.events.emit(wt("pairing_ping",o),{error:i.error})},500)},this.onPairingDeleteRequest=async(n,i)=>{const{id:o}=i;try{this.isValidDisconnect({topic:n}),await this.deletePairing(n),this.events.emit(ra.delete,{id:o,topic:n})}catch(c){await this.sendError(o,n,c),this.logger.error(c)}},this.onUnknownRpcMethodRequest=async(n,i)=>{const{id:o,method:c}=i;try{if(this.registeredMethods.includes(c))return;const l=Ut("WC_METHOD_UNSUPPORTED",c);await this.sendError(o,n,l),this.logger.error(l)}catch(l){await this.sendError(o,n,l),this.logger.error(l)}},this.onUnknownRpcMethodResponse=n=>{this.registeredMethods.includes(n)||this.logger.error(Ut("WC_METHOD_UNSUPPORTED",n))},this.isValidPair=n=>{var i;if(!rn(n)){const{message:c}=me("MISSING_OR_INVALID",`pair() params: ${n}`);throw new Error(c)}if(!uA(n.uri)){const{message:c}=me("MISSING_OR_INVALID",`pair() uri: ${n.uri}`);throw new Error(c)}const o=Om(n.uri);if(!((i=o?.relay)!=null&&i.protocol)){const{message:c}=me("MISSING_OR_INVALID","pair() uri#relay-protocol");throw new Error(c)}if(!(o!=null&&o.symKey)){const{message:c}=me("MISSING_OR_INVALID","pair() uri#symKey");throw new Error(c)}if(o!=null&&o.expiryTimestamp&&_e.toMiliseconds(o?.expiryTimestamp)<Date.now()){const{message:c}=me("EXPIRED","pair() URI has expired. Please try again with a new connection URI.");throw new Error(c)}},this.isValidPing=async n=>{if(!rn(n)){const{message:o}=me("MISSING_OR_INVALID",`ping() params: ${n}`);throw new Error(o)}const{topic:i}=n;await this.isValidPairingTopic(i)},this.isValidDisconnect=async n=>{if(!rn(n)){const{message:o}=me("MISSING_OR_INVALID",`disconnect() params: ${n}`);throw new Error(o)}const{topic:i}=n;await this.isValidPairingTopic(i)},this.isValidPairingTopic=async n=>{if(!ur(n,!1)){const{message:i}=me("MISSING_OR_INVALID",`pairing topic should be a string: ${n}`);throw new Error(i)}if(!this.pairings.keys.includes(n)){const{message:i}=me("NO_MATCHING_KEY",`pairing topic doesn't exist: ${n}`);throw new Error(i)}if(ss(this.pairings.get(n).expiry)){await this.deletePairing(n);const{message:i}=me("EXPIRED",`pairing topic: ${n}`);throw new Error(i)}},this.core=e,this.logger=on(r,this.name),this.pairings=new Qs(this.core,this.logger,this.name,this.storagePrefix)}get context(){return sn(this.logger)}isInitialized(){if(!this.initialized){const{message:e}=me("NOT_INITIALIZED",this.name);throw new Error(e)}}registerRelayerEvents(){this.core.relayer.on(wn.message,async e=>{const{topic:r,message:n}=e;if(!this.pairings.keys.includes(r)||this.ignoredPayloadTypes.includes(this.core.crypto.getPayloadType(n)))return;const i=await this.core.crypto.decode(r,n);try{s0(i)?(this.core.history.set(r,i),this.onRelayEventRequest({topic:r,payload:i})):Zl(i)&&(await this.core.history.resolve(i),await this.onRelayEventResponse({topic:r,payload:i}),this.core.history.delete(r,i.id))}catch(o){this.logger.error(o)}})}registerExpirerEvents(){this.core.expirer.on($n.expired,async e=>{const{topic:r}=cg(e.target);r&&this.pairings.keys.includes(r)&&(await this.deletePairing(r,!0),this.events.emit(ra.expire,{topic:r}))})}}class eD extends gx{constructor(e,r){super(e,r),this.core=e,this.logger=r,this.records=new Map,this.events=new Dr.exports.EventEmitter,this.name=DS,this.version=CS,this.cached=[],this.initialized=!1,this.storagePrefix=hs,this.init=async()=>{this.initialized||(this.logger.trace("Initialized"),await this.restore(),this.cached.forEach(n=>this.records.set(n.id,n)),this.cached=[],this.registerEventListeners(),this.initialized=!0)},this.set=(n,i,o)=>{if(this.isInitialized(),this.logger.debug("Setting JSON-RPC request history record"),this.logger.trace({type:"method",method:"set",topic:n,request:i,chainId:o}),this.records.has(i.id))return;const c={id:i.id,topic:n,request:{method:i.method,params:i.params||null},chainId:o,expiry:Nr(_e.THIRTY_DAYS)};this.records.set(c.id,c),this.persist(),this.events.emit(ei.created,c)},this.resolve=async n=>{if(this.isInitialized(),this.logger.debug("Updating JSON-RPC response history record"),this.logger.trace({type:"method",method:"update",response:n}),!this.records.has(n.id))return;const i=await this.getRecord(n.id);typeof i.response>"u"&&(i.response=Mn(n)?{error:n.error}:{result:n.result},this.records.set(i.id,i),this.persist(),this.events.emit(ei.updated,i))},this.get=async(n,i)=>(this.isInitialized(),this.logger.debug("Getting record"),this.logger.trace({type:"method",method:"get",topic:n,id:i}),await this.getRecord(i)),this.delete=(n,i)=>{this.isInitialized(),this.logger.debug("Deleting record"),this.logger.trace({type:"method",method:"delete",id:i}),this.values.forEach(o=>{if(o.topic===n){if(typeof i<"u"&&o.id!==i)return;this.records.delete(o.id),this.events.emit(ei.deleted,o)}}),this.persist()},this.exists=async(n,i)=>(this.isInitialized(),this.records.has(i)?(await this.getRecord(i)).topic===n:!1),this.on=(n,i)=>{this.events.on(n,i)},this.once=(n,i)=>{this.events.once(n,i)},this.off=(n,i)=>{this.events.off(n,i)},this.removeListener=(n,i)=>{this.events.removeListener(n,i)},this.logger=on(r,this.name)}get context(){return sn(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}get size(){return this.records.size}get keys(){return Array.from(this.records.keys())}get values(){return Array.from(this.records.values())}get pending(){const e=[];return this.values.forEach(r=>{if(typeof r.response<"u")return;const n={topic:r.topic,request:ta(r.request.method,r.request.params,r.id),chainId:r.chainId};return e.push(n)}),e}async setJsonRpcRecords(e){await this.core.storage.setItem(this.storageKey,e)}async getJsonRpcRecords(){return await this.core.storage.getItem(this.storageKey)}getRecord(e){this.isInitialized();const r=this.records.get(e);if(!r){const{message:n}=me("NO_MATCHING_KEY",`${this.name}: ${e}`);throw new Error(n)}return r}async persist(){await this.setJsonRpcRecords(this.values),this.events.emit(ei.sync)}async restore(){try{const e=await this.getJsonRpcRecords();if(typeof e>"u"||!e.length)return;if(this.records.size){const{message:r}=me("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(r),new Error(r)}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(ei.created,e=>{const r=ei.created;this.logger.info(`Emitting ${r}`),this.logger.debug({type:"event",event:r,record:e})}),this.events.on(ei.updated,e=>{const r=ei.updated;this.logger.info(`Emitting ${r}`),this.logger.debug({type:"event",event:r,record:e})}),this.events.on(ei.deleted,e=>{const r=ei.deleted;this.logger.info(`Emitting ${r}`),this.logger.debug({type:"event",event:r,record:e})}),this.core.heartbeat.on(Zo.HEARTBEAT_EVENTS.pulse,()=>{this.cleanup()})}cleanup(){try{this.isInitialized();let e=!1;this.records.forEach(r=>{_e.toMiliseconds(r.expiry||0)-Date.now()<=0&&(this.logger.info(`Deleting expired history log: ${r.id}`),this.records.delete(r.id),this.events.emit(ei.deleted,r,!1),e=!0)}),e&&this.persist()}catch(e){this.logger.warn(e)}}isInitialized(){if(!this.initialized){const{message:e}=me("NOT_INITIALIZED",this.name);throw new Error(e)}}}class tD extends _x{constructor(e,r){super(e,r),this.core=e,this.logger=r,this.expirations=new Map,this.events=new Dr.exports.EventEmitter,this.name=OS,this.version=PS,this.cached=[],this.initialized=!1,this.storagePrefix=hs,this.init=async()=>{this.initialized||(this.logger.trace("Initialized"),await this.restore(),this.cached.forEach(n=>this.expirations.set(n.target,n)),this.cached=[],this.registerEventListeners(),this.initialized=!0)},this.has=n=>{try{const i=this.formatTarget(n);return typeof this.getExpiration(i)<"u"}catch{return!1}},this.set=(n,i)=>{this.isInitialized();const o=this.formatTarget(n),c={target:o,expiry:i};this.expirations.set(o,c),this.checkExpiry(o,c),this.events.emit($n.created,{target:o,expiration:c})},this.get=n=>{this.isInitialized();const i=this.formatTarget(n);return this.getExpiration(i)},this.del=n=>{if(this.isInitialized(),this.has(n)){const i=this.formatTarget(n),o=this.getExpiration(i);this.expirations.delete(i),this.events.emit($n.deleted,{target:i,expiration:o})}},this.on=(n,i)=>{this.events.on(n,i)},this.once=(n,i)=>{this.events.once(n,i)},this.off=(n,i)=>{this.events.off(n,i)},this.removeListener=(n,i)=>{this.events.removeListener(n,i)},this.logger=on(r,this.name)}get context(){return sn(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}get length(){return this.expirations.size}get keys(){return Array.from(this.expirations.keys())}get values(){return Array.from(this.expirations.values())}formatTarget(e){if(typeof e=="string")return N_(e);if(typeof e=="number")return R_(e);const{message:r}=me("UNKNOWN_TYPE",`Target type: ${typeof e}`);throw new Error(r)}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($n.sync)}async restore(){try{const e=await this.getExpirations();if(typeof e>"u"||!e.length)return;if(this.expirations.size){const{message:r}=me("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(r),new Error(r)}this.cached=e,this.logger.debug(`Successfully Restored expirations for ${this.name}`),this.logger.trace({type:"method",method:"restore",expirations:this.values})}catch(e){this.logger.debug(`Failed to Restore expirations for ${this.name}`),this.logger.error(e)}}getExpiration(e){const r=this.expirations.get(e);if(!r){const{message:n}=me("NO_MATCHING_KEY",`${this.name}: ${e}`);throw this.logger.warn(n),new Error(n)}return r}checkExpiry(e,r){const{expiry:n}=r;_e.toMiliseconds(n)-Date.now()<=0&&this.expire(e,r)}expire(e,r){this.expirations.delete(e),this.events.emit($n.expired,{target:e,expiration:r})}checkExpirations(){this.core.relayer.connected&&this.expirations.forEach((e,r)=>this.checkExpiry(r,e))}registerEventListeners(){this.core.heartbeat.on(Zo.HEARTBEAT_EVENTS.pulse,()=>this.checkExpirations()),this.events.on($n.created,e=>{const r=$n.created;this.logger.info(`Emitting ${r}`),this.logger.debug({type:"event",event:r,data:e}),this.persist()}),this.events.on($n.expired,e=>{const r=$n.expired;this.logger.info(`Emitting ${r}`),this.logger.debug({type:"event",event:r,data:e}),this.persist()}),this.events.on($n.deleted,e=>{const r=$n.deleted;this.logger.info(`Emitting ${r}`),this.logger.debug({type:"event",event:r,data:e}),this.persist()})}isInitialized(){if(!this.initialized){const{message:e}=me("NOT_INITIALIZED",this.name);throw new Error(e)}}}class rD extends Ex{constructor(e,r){super(e,r),this.projectId=e,this.logger=r,this.name=h0,this.initialized=!1,this.queue=[],this.verifyDisabled=!1,this.init=async n=>{if(this.verifyDisabled||Uo()||!Fo())return;const i=this.getVerifyUrl(n?.verifyUrl);this.verifyUrl!==i&&this.removeIframe(),this.verifyUrl=i;try{await this.createIframe()}catch(o){this.logger.info(`Verify iframe failed to load: ${this.verifyUrl}`),this.logger.info(o)}if(!this.initialized){this.removeIframe(),this.verifyUrl=f0;try{await this.createIframe()}catch(o){this.logger.info(`Verify iframe failed to load: ${this.verifyUrl}`),this.logger.info(o),this.verifyDisabled=!0}}},this.register=async n=>{this.initialized?this.sendPost(n.attestationId):(this.addToQueue(n.attestationId),await this.init())},this.resolve=async n=>{if(this.isDevEnv)return"";const i=this.getVerifyUrl(n?.verifyUrl);let o;try{o=await this.fetchAttestation(n.attestationId,i)}catch(c){this.logger.info(`failed to resolve attestation: ${n.attestationId} from url: ${i}`),this.logger.info(c),o=await this.fetchAttestation(n.attestationId,f0)}return o},this.fetchAttestation=async(n,i)=>{this.logger.info(`resolving attestation: ${n} from url: ${i}`);const o=this.startAbortTimer(_e.ONE_SECOND*2),c=await fetch(`${i}/attestation/${n}`,{signal:this.abortController.signal});return clearTimeout(o),c.status===200?await c.json():void 0},this.addToQueue=n=>{this.queue.push(n)},this.processQueue=()=>{this.queue.length!==0&&(this.queue.forEach(n=>this.sendPost(n)),this.queue=[])},this.sendPost=n=>{var i;try{if(!this.iframe)return;(i=this.iframe.contentWindow)==null||i.postMessage(n,"*"),this.logger.info(`postMessage sent: ${n} ${this.verifyUrl}`)}catch{}},this.createIframe=async()=>{let n;const i=o=>{o.data==="verify_ready"&&(this.onInit(),window.removeEventListener("message",i),n())};await Promise.race([new Promise(o=>{const c=document.getElementById(h0);if(c)return this.iframe=c,this.onInit(),o();window.addEventListener("message",i);const l=document.createElement("iframe");l.id=h0,l.src=`${this.verifyUrl}/${this.projectId}`,l.style.display="none",document.body.append(l),this.iframe=l,n=o}),new Promise((o,c)=>setTimeout(()=>{window.removeEventListener("message",i),c("verify iframe load timeout")},_e.toMiliseconds(_e.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=n=>{let i=n||na;return MS.includes(i)||(this.logger.info(`verify url: ${i}, not included in trusted list, assigning default: ${na}`),i=na),i},this.logger=on(r,this.name),this.verifyUrl=na,this.abortController=new AbortController,this.isDevEnv=Va()&&process.env.IS_VITEST}get context(){return sn(this.logger)}startAbortTimer(e){return this.abortController=new AbortController,setTimeout(()=>this.abortController.abort(),_e.toMiliseconds(e))}}class nD extends Ax{constructor(e,r){super(e,r),this.projectId=e,this.logger=r,this.context=TS,this.registerDeviceToken=async n=>{const{clientId:i,token:o,notificationType:c,enableEncrypted:l=!1}=n,f=`${$S}/${this.projectId}/clients`;await M9(f,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({client_id:i,type:c,token:o,always_raw:l})})},this.logger=on(r,this.context)}}var iD=Object.defineProperty,nw=Object.getOwnPropertySymbols,sD=Object.prototype.hasOwnProperty,oD=Object.prototype.propertyIsEnumerable,iw=(t,e,r)=>e in t?iD(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,sw=(t,e)=>{for(var r in e||(e={}))sD.call(e,r)&&iw(t,r,e[r]);if(nw)for(var r of nw(e))oD.call(e,r)&&iw(t,r,e[r]);return t};class p0 extends px{constructor(e){var r;super(e),this.protocol=Kv,this.version=nS,this.name=u0,this.events=new Dr.exports.EventEmitter,this.initialized=!1,this.on=(c,l)=>this.events.on(c,l),this.once=(c,l)=>this.events.once(c,l),this.off=(c,l)=>this.events.off(c,l),this.removeListener=(c,l)=>this.events.removeListener(c,l),this.projectId=e?.projectId,this.relayUrl=e?.relayUrl||Gv,this.customStoragePrefix=e!=null&&e.customStoragePrefix?`:${e.customStoragePrefix}`:"";const n=Gl({level:typeof e?.logger=="string"&&e.logger?e.logger:iS.logger}),{logger:i,chunkLoggerController:o}=dx({opts:n,maxSizeInBytes:e?.maxLogBlobSizeInBytes,loggerOverride:e?.logger});this.logChunkController=o,(r=this.logChunkController)!=null&&r.downloadLogsBlobInBrowser&&(window.downloadLogsBlobInBrowser=async()=>{var c,l;(c=this.logChunkController)!=null&&c.downloadLogsBlobInBrowser&&((l=this.logChunkController)==null||l.downloadLogsBlobInBrowser({clientId:await this.crypto.getClientId()}))}),this.logger=on(i,this.name),this.heartbeat=new Zo.HeartBeat,this.crypto=new RS(this,this.logger,e?.keychain),this.history=new eD(this,this.logger),this.expirer=new tD(this,this.logger),this.storage=e!=null&&e.storage?e.storage:new p7(sw(sw({},sS),e?.storageOptions)),this.relayer=new YS({core:this,logger:this.logger,relayUrl:this.relayUrl,projectId:this.projectId}),this.pairing=new XS(this,this.logger),this.verify=new rD(this.projectId||"",this.logger),this.echoClient=new nD(this.projectId||"",this.logger)}static async init(e){const r=new p0(e);await r.initialize();const n=await r.crypto.getClientId();return await r.storage.setItem(_S,n),r}get context(){return sn(this.logger)}async start(){this.initialized||await this.initialize()}async getLogsBlob(){var e;return(e=this.logChunkController)==null?void 0:e.logsToBlob({clientId:await this.crypto.getClientId()})}async 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}}}const aD=p0,ow="wc",aw=2,cw="client",g0=`${ow}@${aw}:${cw}:`,m0={name:cw,logger:"error",controller:!1,relayUrl:"wss://relay.walletconnect.com"},lw="WALLETCONNECT_DEEPLINK_CHOICE",cD="proposal",uw="Proposal expired",lD="session",ia=_e.SEVEN_DAYS,uD="engine",Nn={wc_sessionPropose:{req:{ttl:_e.FIVE_MINUTES,prompt:!0,tag:1100},res:{ttl:_e.FIVE_MINUTES,prompt:!1,tag:1101}},wc_sessionSettle:{req:{ttl:_e.FIVE_MINUTES,prompt:!1,tag:1102},res:{ttl:_e.FIVE_MINUTES,prompt:!1,tag:1103}},wc_sessionUpdate:{req:{ttl:_e.ONE_DAY,prompt:!1,tag:1104},res:{ttl:_e.ONE_DAY,prompt:!1,tag:1105}},wc_sessionExtend:{req:{ttl:_e.ONE_DAY,prompt:!1,tag:1106},res:{ttl:_e.ONE_DAY,prompt:!1,tag:1107}},wc_sessionRequest:{req:{ttl:_e.FIVE_MINUTES,prompt:!0,tag:1108},res:{ttl:_e.FIVE_MINUTES,prompt:!1,tag:1109}},wc_sessionEvent:{req:{ttl:_e.FIVE_MINUTES,prompt:!0,tag:1110},res:{ttl:_e.FIVE_MINUTES,prompt:!1,tag:1111}},wc_sessionDelete:{req:{ttl:_e.ONE_DAY,prompt:!1,tag:1112},res:{ttl:_e.ONE_DAY,prompt:!1,tag:1113}},wc_sessionPing:{req:{ttl:_e.ONE_DAY,prompt:!1,tag:1114},res:{ttl:_e.ONE_DAY,prompt:!1,tag:1115}},wc_sessionAuthenticate:{req:{ttl:_e.ONE_HOUR,prompt:!0,tag:1116},res:{ttl:_e.ONE_HOUR,prompt:!1,tag:1117}}},v0={min:_e.FIVE_MINUTES,max:_e.SEVEN_DAYS},zi={idle:"IDLE",active:"ACTIVE"},hD="request",fD=["wc_sessionPropose","wc_sessionRequest","wc_authRequest"],dD="wc",pD="auth",gD="authKeys",mD="pairingTopics",vD="requests",eu=`${dD}@${1.5}:${pD}:`,tu=`${eu}:PUB_KEY`;var wD=Object.defineProperty,yD=Object.defineProperties,bD=Object.getOwnPropertyDescriptors,hw=Object.getOwnPropertySymbols,_D=Object.prototype.hasOwnProperty,ED=Object.prototype.propertyIsEnumerable,fw=(t,e,r)=>e in t?wD(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,Er=(t,e)=>{for(var r in e||(e={}))_D.call(e,r)&&fw(t,r,e[r]);if(hw)for(var r of hw(e))ED.call(e,r)&&fw(t,r,e[r]);return t},sa=(t,e)=>yD(t,bD(e));class AD extends Ix{constructor(e){super(e),this.name=uD,this.events=new Dr.exports,this.initialized=!1,this.requestQueue={state:zi.idle,queue:[]},this.sessionRequestQueue={state:zi.idle,queue:[]},this.requestQueueDelay=_e.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(Nn)}),this.initialized=!0,setTimeout(()=>{this.sessionRequestQueue.queue=this.getPendingSessionRequests(),this.processSessionRequestQueue()},_e.toMiliseconds(this.requestQueueDelay)))},this.connect=async r=>{await this.isInitialized();const n=sa(Er({},r),{requiredNamespaces:r.requiredNamespaces||{},optionalNamespaces:r.optionalNamespaces||{}});await this.isValidConnect(n);const{pairingTopic:i,requiredNamespaces:o,optionalNamespaces:c,sessionProperties:l,relays:f}=n;let h=i,g,_=!1;try{h&&(_=this.client.core.pairing.pairings.get(h).active)}catch(P){throw this.client.logger.error(`connect() -> pairing.get(${h}) failed`),P}if(!h||!_){const{topic:P,uri:F}=await this.client.core.pairing.create();h=P,g=F}if(!h){const{message:P}=me("NO_MATCHING_KEY",`connect() pairing topic: ${h}`);throw new Error(P)}const E=await this.client.core.crypto.generateKeyPair(),A=Nn.wc_sessionPropose.req.ttl||_e.FIVE_MINUTES,S=Nr(A),U=Er({requiredNamespaces:o,optionalNamespaces:c,relays:f??[{protocol:Vv}],proposer:{publicKey:E,metadata:this.client.metadata},expiryTimestamp:S},l&&{sessionProperties:l}),{reject:W,resolve:Y,done:B}=qs(A,uw);this.events.once(wt("session_connect"),async({error:P,session:F})=>{if(P)W(P);else if(F){F.self.publicKey=E;const j=sa(Er({},F),{requiredNamespaces:U.requiredNamespaces,optionalNamespaces:U.optionalNamespaces});await this.client.session.set(F.topic,j),await this.setExpiry(F.topic,F.expiry),h&&await this.client.core.pairing.updateMetadata({topic:h,metadata:F.peer.metadata}),Y(j)}});const z=await this.sendRequest({topic:h,method:"wc_sessionPropose",params:U,throwOnFailedPublish:!0});return await this.setProposal(z,Er({id:z},U)),{uri:g,approval:B}},this.pair=async r=>{await this.isInitialized();try{return await this.client.core.pairing.pair(r)}catch(n){throw this.client.logger.error("pair() failed"),n}},this.approve=async r=>{await this.isInitialized();try{await this.isValidApprove(r)}catch(B){throw this.client.logger.error("approve() -> isValidApprove() failed"),B}const{id:n,relayProtocol:i,namespaces:o,sessionProperties:c,sessionConfig:l}=r;let f;try{f=this.client.proposal.get(n)}catch(B){throw this.client.logger.error(`approve() -> proposal.get(${n}) failed`),B}let{pairingTopic:h,proposer:g,requiredNamespaces:_,optionalNamespaces:E}=f;h=h||"";const A=await this.client.core.crypto.generateKeyPair(),S=g.publicKey,U=await this.client.core.crypto.generateSharedKey(A,S),W=Er(Er({relay:{protocol:i??"irn"},namespaces:o,pairingTopic:h,controller:{publicKey:A,metadata:this.client.metadata},expiry:Nr(ia)},c&&{sessionProperties:c}),l&&{sessionConfig:l});await this.client.core.relayer.subscribe(U);const Y=sa(Er({},W),{topic:U,requiredNamespaces:_,optionalNamespaces:E,pairingTopic:h,acknowledged:!1,self:W.controller,peer:{publicKey:g.publicKey,metadata:g.metadata},controller:A});await this.client.session.set(U,Y);try{await this.sendResult({id:n,topic:h,result:{relay:{protocol:i??"irn"},responderPublicKey:A},throwOnFailedPublish:!0}),await this.sendRequest({topic:U,method:"wc_sessionSettle",params:W,throwOnFailedPublish:!0})}catch(B){throw this.client.logger.error(B),this.client.session.delete(U,Ut("USER_DISCONNECTED")),await this.client.core.relayer.unsubscribe(U),B}return await this.client.core.pairing.updateMetadata({topic:h,metadata:g.metadata}),await this.client.proposal.delete(n,Ut("USER_DISCONNECTED")),await this.client.core.pairing.activate({topic:h}),await this.setExpiry(U,Nr(ia)),{topic:U,acknowledged:()=>new Promise(B=>setTimeout(()=>B(this.client.session.get(U)),500))}},this.reject=async r=>{await this.isInitialized();try{await this.isValidReject(r)}catch(c){throw this.client.logger.error("reject() -> isValidReject() failed"),c}const{id:n,reason:i}=r;let o;try{o=this.client.proposal.get(n).pairingTopic}catch(c){throw this.client.logger.error(`reject() -> proposal.get(${n}) failed`),c}o&&(await this.sendError({id:n,topic:o,error:i}),await this.client.proposal.delete(n,Ut("USER_DISCONNECTED")))},this.update=async r=>{await this.isInitialized();try{await this.isValidUpdate(r)}catch(_){throw this.client.logger.error("update() -> isValidUpdate() failed"),_}const{topic:n,namespaces:i}=r,{done:o,resolve:c,reject:l}=qs(),f=us(),h=Js().toString(),g=this.client.session.get(n).namespaces;return this.events.once(wt("session_update",f),({error:_})=>{_?l(_):c()}),await this.client.session.update(n,{namespaces:i}),this.sendRequest({topic:n,method:"wc_sessionUpdate",params:{namespaces:i},throwOnFailedPublish:!0,clientRpcId:f,relayRpcId:h}).catch(_=>{this.client.logger.error(_),this.client.session.update(n,{namespaces:g}),l(_)}),{acknowledged:o}},this.extend=async r=>{await this.isInitialized();try{await this.isValidExtend(r)}catch(f){throw this.client.logger.error("extend() -> isValidExtend() failed"),f}const{topic:n}=r,i=us(),{done:o,resolve:c,reject:l}=qs();return this.events.once(wt("session_extend",i),({error:f})=>{f?l(f):c()}),await this.setExpiry(n,Nr(ia)),this.sendRequest({topic:n,method:"wc_sessionExtend",params:{},clientRpcId:i,throwOnFailedPublish:!0}).catch(f=>{l(f)}),{acknowledged:o}},this.request=async r=>{await this.isInitialized();try{await this.isValidRequest(r)}catch(A){throw this.client.logger.error("request() -> isValidRequest() failed"),A}const{chainId:n,request:i,topic:o,expiry:c=Nn.wc_sessionRequest.req.ttl}=r,l=this.client.session.get(o),f=us(),h=Js().toString(),{done:g,resolve:_,reject:E}=qs(c,"Request expired. Please try again.");return this.events.once(wt("session_request",f),({error:A,result:S})=>{A?E(A):_(S)}),await Promise.all([new Promise(async A=>{await this.sendRequest({clientRpcId:f,relayRpcId:h,topic:o,method:"wc_sessionRequest",params:{request:sa(Er({},i),{expiryTimestamp:Nr(c)}),chainId:n},expiry:c,throwOnFailedPublish:!0}).catch(S=>E(S)),this.client.events.emit("session_request_sent",{topic:o,request:i,chainId:n,id:f}),A()}),new Promise(async A=>{var S;if(!((S=l.sessionConfig)!=null&&S.disableDeepLink)){const U=await B_(this.client.core.storage,lw);L_({id:f,topic:o,wcDeepLink:U})}A()}),g()]).then(A=>A[2])},this.respond=async r=>{await this.isInitialized(),await this.isValidRespond(r);const{topic:n,response:i}=r,{id:o}=i;_i(i)?await this.sendResult({id:o,topic:n,result:i.result,throwOnFailedPublish:!0}):Mn(i)&&await this.sendError({id:o,topic:n,error:i.error}),this.cleanupAfterResponse(r)},this.ping=async r=>{await this.isInitialized();try{await this.isValidPing(r)}catch(i){throw this.client.logger.error("ping() -> isValidPing() failed"),i}const{topic:n}=r;if(this.client.session.keys.includes(n)){const i=us(),o=Js().toString(),{done:c,resolve:l,reject:f}=qs();this.events.once(wt("session_ping",i),({error:h})=>{h?f(h):l()}),await Promise.all([this.sendRequest({topic:n,method:"wc_sessionPing",params:{},throwOnFailedPublish:!0,clientRpcId:i,relayRpcId:o}),c()])}else this.client.core.pairing.pairings.keys.includes(n)&&await this.client.core.pairing.ping({topic:n})},this.emit=async r=>{await this.isInitialized(),await this.isValidEmit(r);const{topic:n,event:i,chainId:o}=r,c=Js().toString();await this.sendRequest({topic:n,method:"wc_sessionEvent",params:{event:i,chainId:o},throwOnFailedPublish:!0,relayRpcId:c})},this.disconnect=async r=>{await this.isInitialized(),await this.isValidDisconnect(r);const{topic:n}=r;if(this.client.session.keys.includes(n))await this.sendRequest({topic:n,method:"wc_sessionDelete",params:Ut("USER_DISCONNECTED"),throwOnFailedPublish:!0}),await this.deleteSession({topic:n,emitEvent:!1});else if(this.client.core.pairing.pairings.keys.includes(n))await this.client.core.pairing.disconnect({topic:n});else{const{message:i}=me("MISMATCHED_TOPIC",`Session or pairing topic not found: ${n}`);throw new Error(i)}},this.find=r=>(this.isInitialized(),this.client.session.getAll().filter(n=>cA(n,r))),this.getPendingSessionRequests=()=>this.client.pendingRequest.getAll(),this.authenticate=async r=>{this.isInitialized(),this.isValidAuthenticate(r);const{chains:n,statement:i="",uri:o,domain:c,nonce:l,type:f,exp:h,nbf:g,methods:_=[]}=r,E=[...r.resources||[]],{topic:A,uri:S}=await this.client.core.pairing.create({methods:["wc_sessionAuthenticate"]});this.client.logger.info({message:"Generated new pairing",pairing:{topic:A,uri:S}});const U=await this.client.core.crypto.generateKeyPair(),W=Rl(U);if(await Promise.all([this.client.auth.authKeys.set(tu,{responseTopic:W,publicKey:U}),this.client.auth.pairingTopics.set(W,{topic:W,pairingTopic:A})]),await this.client.core.relayer.subscribe(W),this.client.logger.info(`sending request to new pairing topic: ${A}`),_.length>0){const{namespace:fe}=wl(n[0]);let d=TE(fe,"request",_);Nl(E)&&(d=NE(d,E.pop())),E.push(d)}const Y=Nr(Nn.wc_sessionPropose.req.ttl),B={authPayload:{type:f??"caip122",chains:n,statement:i,aud:o,domain:c,version:"1",nonce:l,iat:new Date().toISOString(),exp:h,nbf:g,resources:E},requester:{publicKey:U,metadata:this.client.metadata},expiryTimestamp:Y},z={eip155:{chains:n,methods:[...new Set(["personal_sign",..._])],events:["chainChanged","accountsChanged"]}},P={requiredNamespaces:{},optionalNamespaces:z,relays:[{protocol:"irn"}],proposer:{publicKey:U,metadata:this.client.metadata},expiryTimestamp:Y},{done:F,resolve:j,reject:m}=qs(Nn.wc_sessionAuthenticate.req.ttl,"Request expired"),T=async({error:fe,session:d})=>{if(this.events.off(wt("session_request",ee),te),fe)m(fe);else if(d){d.self.publicKey=U,await this.client.session.set(d.topic,d),await this.setExpiry(d.topic,d.expiry),A&&await this.client.core.pairing.updateMetadata({topic:A,metadata:d.peer.metadata});const p=this.client.session.get(d.topic);j({session:p})}},te=async fe=>{if(fe.error){const L=Ut("WC_METHOD_UNSUPPORTED","wc_sessionAuthenticate");return fe.error.code===L.code?void 0:(this.events.off(wt("session_connect"),T),m(fe.error.message))}this.events.off(wt("session_connect"),T);const{cacaos:d,responder:p}=fe.result,b=[],D=[];for(const L of d){await mm({cacao:L,projectId:this.client.core.projectId})||(this.client.logger.error(L,"Signature verification failed"),m(Ut("SESSION_SETTLEMENT_FAILED","Signature verification failed")));const{p:C}=L,v=Nl(C.resources),N=[gm(C.iss)],oe=$l(C.iss);if(v){const pe=ym(v),x=bm(v);b.push(...pe),N.push(...x)}for(const pe of N)D.push(`${pe}:${oe}`)}const O=await this.client.core.crypto.generateSharedKey(U,p.publicKey);let $;b.length>0&&($={topic:O,acknowledged:!0,self:{publicKey:U,metadata:this.client.metadata},peer:p,controller:p.publicKey,expiry:Nr(ia),requiredNamespaces:{},optionalNamespaces:{},relay:{protocol:"irn"},pairingTopic:A,namespaces:Pm([...new Set(b)],[...new Set(D)])},await this.client.core.relayer.subscribe(O),await this.client.session.set(O,$),$=this.client.session.get(O)),j({auths:d,session:$})},ee=us(),ne=us();this.events.once(wt("session_connect"),T),this.events.once(wt("session_request",ee),te);try{await Promise.all([this.sendRequest({topic:A,method:"wc_sessionAuthenticate",params:B,expiry:r.expiry,throwOnFailedPublish:!0,clientRpcId:ee}),this.sendRequest({topic:A,method:"wc_sessionPropose",params:P,expiry:Nn.wc_sessionPropose.req.ttl,throwOnFailedPublish:!0,clientRpcId:ne})])}catch(fe){throw this.events.off(wt("session_connect"),T),this.events.off(wt("session_request",ee),te),fe}return await this.setProposal(ne,Er({id:ne},P)),await this.client.auth.requests.set(ee,{authPayload:B.authPayload,requester:B.requester,expiryTimestamp:Y,id:ee,pairingTopic:A,verifyContext:{}}),{uri:S,response:F}},this.approveSessionAuthenticate=async r=>{this.isInitialized();const{id:n,auths:i}=r,o=this.getPendingAuthRequest(n);if(!o)throw new Error(`Could not find pending auth request with id ${n}`);const c=o.requester.publicKey,l=await this.client.core.crypto.generateKeyPair(),f=Rl(c),h={type:ls,receiverPublicKey:c,senderPublicKey:l},g=[],_=[];for(const S of i){if(!await mm({cacao:S,projectId:this.client.core.projectId})){const z=Ut("SESSION_SETTLEMENT_FAILED","Signature verification failed");throw await this.sendError({id:n,topic:f,error:z,encodeOpts:h}),new Error(z.message)}const{p:U}=S,W=Nl(U.resources),Y=[gm(U.iss)],B=$l(U.iss);if(W){const z=ym(W),P=bm(W);g.push(...z),Y.push(...P)}for(const z of Y)_.push(`${z}:${B}`)}const E=await this.client.core.crypto.generateSharedKey(l,c);let A;return g?.length>0&&(A={topic:E,acknowledged:!0,self:{publicKey:l,metadata:this.client.metadata},peer:{publicKey:c,metadata:o.requester.metadata},controller:c,expiry:Nr(ia),authentication:i,requiredNamespaces:{},optionalNamespaces:{},relay:{protocol:"irn"},pairingTopic:"",namespaces:Pm([...new Set(g)],[...new Set(_)])},await this.client.core.relayer.subscribe(E),await this.client.session.set(E,A)),await this.sendResult({topic:f,id:n,result:{cacaos:i,responder:{publicKey:l,metadata:this.client.metadata}},encodeOpts:h,throwOnFailedPublish:!0}),await this.client.auth.requests.delete(n,{message:"fullfilled",code:0}),await this.client.core.pairing.activate({topic:o.pairingTopic}),{session:A}},this.rejectSessionAuthenticate=async r=>{await this.isInitialized();const{id:n,reason:i}=r,o=this.getPendingAuthRequest(n);if(!o)throw new Error(`Could not find pending auth request with id ${n}`);const c=o.requester.publicKey,l=await this.client.core.crypto.generateKeyPair(),f=Rl(c),h={type:ls,receiverPublicKey:c,senderPublicKey:l};await this.sendError({id:n,topic:f,error:i,encodeOpts:h}),await this.client.auth.requests.delete(n,{message:"rejected",code:0}),await this.client.proposal.delete(n,Ut("USER_DISCONNECTED"))},this.formatAuthMessage=r=>{this.isInitialized();const{request:n,iss:i}=r;return vm(n,i)},this.cleanupDuplicatePairings=async r=>{if(r.pairingTopic)try{const n=this.client.core.pairing.pairings.get(r.pairingTopic),i=this.client.core.pairing.pairings.getAll().filter(o=>{var c,l;return((c=o.peerMetadata)==null?void 0:c.url)&&((l=o.peerMetadata)==null?void 0:l.url)===r.peer.metadata.url&&o.topic&&o.topic!==n.topic});if(i.length===0)return;this.client.logger.info(`Cleaning up ${i.length} duplicate pairing(s)`),await Promise.all(i.map(o=>this.client.core.pairing.disconnect({topic:o.topic}))),this.client.logger.info("Duplicate pairings clean up finished")}catch(n){this.client.logger.error(n)}},this.deleteSession=async r=>{const{topic:n,expirerHasDeleted:i=!1,emitEvent:o=!0,id:c=0}=r,{self:l}=this.client.session.get(n);await this.client.core.relayer.unsubscribe(n),await this.client.session.delete(n,Ut("USER_DISCONNECTED")),this.addToRecentlyDeleted(n,"session"),this.client.core.crypto.keychain.has(l.publicKey)&&await this.client.core.crypto.deleteKeyPair(l.publicKey),this.client.core.crypto.keychain.has(n)&&await this.client.core.crypto.deleteSymKey(n),i||this.client.core.expirer.del(n),this.client.core.storage.removeItem(lw).catch(f=>this.client.logger.warn(f)),this.getPendingSessionRequests().forEach(f=>{f.topic===n&&this.deletePendingSessionRequest(f.id,Ut("USER_DISCONNECTED"))}),o&&this.client.events.emit("session_delete",{id:c,topic:n})},this.deleteProposal=async(r,n)=>{await Promise.all([this.client.proposal.delete(r,Ut("USER_DISCONNECTED")),n?Promise.resolve():this.client.core.expirer.del(r)]),this.addToRecentlyDeleted(r,"proposal")},this.deletePendingSessionRequest=async(r,n,i=!1)=>{await Promise.all([this.client.pendingRequest.delete(r,n),i?Promise.resolve():this.client.core.expirer.del(r)]),this.addToRecentlyDeleted(r,"request"),this.sessionRequestQueue.queue=this.sessionRequestQueue.queue.filter(o=>o.id!==r),i&&(this.sessionRequestQueue.state=zi.idle,this.client.events.emit("session_request_expire",{id:r}))},this.setExpiry=async(r,n)=>{this.client.session.keys.includes(r)&&await this.client.session.update(r,{expiry:n}),this.client.core.expirer.set(r,n)},this.setProposal=async(r,n)=>{await this.client.proposal.set(r,n),this.client.core.expirer.set(r,Nr(Nn.wc_sessionPropose.req.ttl))},this.setPendingSessionRequest=async r=>{const{id:n,topic:i,params:o,verifyContext:c}=r,l=o.request.expiryTimestamp||Nr(Nn.wc_sessionRequest.req.ttl);await this.client.pendingRequest.set(n,{id:n,topic:i,params:o,verifyContext:c}),l&&this.client.core.expirer.set(n,l)},this.sendRequest=async r=>{const{topic:n,method:i,params:o,expiry:c,relayRpcId:l,clientRpcId:f,throwOnFailedPublish:h}=r,g=ta(i,o,f);if(Fo()&&fD.includes(i)){const A=Ws(JSON.stringify(g));this.client.core.verify.register({attestationId:A})}let _;try{_=await this.client.core.crypto.encode(n,g)}catch(A){throw await this.cleanup(),this.client.logger.error(`sendRequest() -> core.crypto.encode() for topic ${n} failed`),A}const E=Nn[i].req;return c&&(E.ttl=c),l&&(E.id=l),this.client.core.history.set(n,g),h?(E.internal=sa(Er({},E.internal),{throwOnFailedPublish:!0}),await this.client.core.relayer.publish(n,_,E)):this.client.core.relayer.publish(n,_,E).catch(A=>this.client.logger.error(A)),g.id},this.sendResult=async r=>{const{id:n,topic:i,result:o,throwOnFailedPublish:c,encodeOpts:l}=r,f=Jl(n,o);let h;try{h=await this.client.core.crypto.encode(i,f,l)}catch(E){throw await this.cleanup(),this.client.logger.error(`sendResult() -> core.crypto.encode() for topic ${i} failed`),E}let g;try{g=await this.client.core.history.get(i,n)}catch(E){throw this.client.logger.error(`sendResult() -> history.get(${i}, ${n}) failed`),E}const _=Nn[g.request.method].res;c?(_.internal=sa(Er({},_.internal),{throwOnFailedPublish:!0}),await this.client.core.relayer.publish(i,h,_)):this.client.core.relayer.publish(i,h,_).catch(E=>this.client.logger.error(E)),await this.client.core.history.resolve(f)},this.sendError=async r=>{const{id:n,topic:i,error:o,encodeOpts:c}=r,l=Ql(n,o);let f;try{f=await this.client.core.crypto.encode(i,l,c)}catch(_){throw await this.cleanup(),this.client.logger.error(`sendError() -> core.crypto.encode() for topic ${i} failed`),_}let h;try{h=await this.client.core.history.get(i,n)}catch(_){throw this.client.logger.error(`sendError() -> history.get(${i}, ${n}) failed`),_}const g=Nn[h.request.method].res;this.client.core.relayer.publish(i,f,g),await this.client.core.history.resolve(l)},this.cleanup=async()=>{const r=[],n=[];this.client.session.getAll().forEach(i=>{let o=!1;ss(i.expiry)&&(o=!0),this.client.core.crypto.keychain.has(i.topic)||(o=!0),o&&r.push(i.topic)}),this.client.proposal.getAll().forEach(i=>{ss(i.expiryTimestamp)&&n.push(i.id)}),await Promise.all([...r.map(i=>this.deleteSession({topic:i})),...n.map(i=>this.deleteProposal(i))])},this.onRelayEventRequest=async r=>{this.requestQueue.queue.push(r),await this.processRequestsQueue()},this.processRequestsQueue=async()=>{if(this.requestQueue.state===zi.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=zi.active;const r=this.requestQueue.queue.shift();if(r)try{this.processRequest(r),await new Promise(n=>setTimeout(n,300))}catch(n){this.client.logger.warn(n)}}this.requestQueue.state=zi.idle},this.processRequest=r=>{const{topic:n,payload:i}=r,o=i.method;if(!this.shouldIgnorePairingRequest({topic:n,requestMethod:o}))switch(o){case"wc_sessionPropose":return this.onSessionProposeRequest(n,i);case"wc_sessionSettle":return this.onSessionSettleRequest(n,i);case"wc_sessionUpdate":return this.onSessionUpdateRequest(n,i);case"wc_sessionExtend":return this.onSessionExtendRequest(n,i);case"wc_sessionPing":return this.onSessionPingRequest(n,i);case"wc_sessionDelete":return this.onSessionDeleteRequest(n,i);case"wc_sessionRequest":return this.onSessionRequest(n,i);case"wc_sessionEvent":return this.onSessionEventRequest(n,i);case"wc_sessionAuthenticate":return this.onSessionAuthenticateRequest(n,i);default:return this.client.logger.info(`Unsupported request method ${o}`)}},this.onRelayEventResponse=async r=>{const{topic:n,payload:i}=r,o=(await this.client.core.history.get(n,i.id)).request.method;switch(o){case"wc_sessionPropose":return this.onSessionProposeResponse(n,i);case"wc_sessionSettle":return this.onSessionSettleResponse(n,i);case"wc_sessionUpdate":return this.onSessionUpdateResponse(n,i);case"wc_sessionExtend":return this.onSessionExtendResponse(n,i);case"wc_sessionPing":return this.onSessionPingResponse(n,i);case"wc_sessionRequest":return this.onSessionRequestResponse(n,i);case"wc_sessionAuthenticate":return this.onSessionAuthenticateResponse(n,i);default:return this.client.logger.info(`Unsupported response method ${o}`)}},this.onRelayEventUnknownPayload=r=>{const{topic:n}=r,{message:i}=me("MISSING_OR_INVALID",`Decoded payload on topic ${n} is not identifiable as a JSON-RPC request or a response.`);throw new Error(i)},this.shouldIgnorePairingRequest=r=>{const{topic:n,requestMethod:i}=r,o=this.expectedPairingMethodMap.get(n);return!o||o.includes(i)?!1:!!(o.includes("wc_sessionAuthenticate")&&this.client.events.listenerCount("session_authenticate")>0)},this.onSessionProposeRequest=async(r,n)=>{const{params:i,id:o}=n;try{this.isValidConnect(Er({},n.params));const c=i.expiryTimestamp||Nr(Nn.wc_sessionPropose.req.ttl),l=Er({id:o,pairingTopic:r,expiryTimestamp:c},i);await this.setProposal(o,l);const f=Ws(JSON.stringify(n)),h=await this.getVerifyContext(f,l.proposer.metadata);this.client.events.emit("session_proposal",{id:o,params:l,verifyContext:h})}catch(c){await this.sendError({id:o,topic:r,error:c}),this.client.logger.error(c)}},this.onSessionProposeResponse=async(r,n)=>{const{id:i}=n;if(_i(n)){const{result:o}=n;this.client.logger.trace({type:"method",method:"onSessionProposeResponse",result:o});const c=this.client.proposal.get(i);this.client.logger.trace({type:"method",method:"onSessionProposeResponse",proposal:c});const l=c.proposer.publicKey;this.client.logger.trace({type:"method",method:"onSessionProposeResponse",selfPublicKey:l});const f=o.responderPublicKey;this.client.logger.trace({type:"method",method:"onSessionProposeResponse",peerPublicKey:f});const h=await this.client.core.crypto.generateSharedKey(l,f);this.client.logger.trace({type:"method",method:"onSessionProposeResponse",sessionTopic:h});const g=await this.client.core.relayer.subscribe(h);this.client.logger.trace({type:"method",method:"onSessionProposeResponse",subscriptionId:g}),await this.client.core.pairing.activate({topic:r})}else if(Mn(n)){await this.client.proposal.delete(i,Ut("USER_DISCONNECTED"));const o=wt("session_connect");if(this.events.listenerCount(o)===0)throw new Error(`emitting ${o} without any listeners, 954`);this.events.emit(wt("session_connect"),{error:n.error})}},this.onSessionSettleRequest=async(r,n)=>{const{id:i,params:o}=n;try{this.isValidSessionSettleRequest(o);const{relay:c,controller:l,expiry:f,namespaces:h,sessionProperties:g,pairingTopic:_,sessionConfig:E}=n.params,A=Er(Er({topic:r,relay:c,expiry:f,namespaces:h,acknowledged:!0,pairingTopic:_,requiredNamespaces:{},optionalNamespaces:{},controller:l.publicKey,self:{publicKey:"",metadata:this.client.metadata},peer:{publicKey:l.publicKey,metadata:l.metadata}},g&&{sessionProperties:g}),E&&{sessionConfig:E});await this.sendResult({id:n.id,topic:r,result:!0,throwOnFailedPublish:!0});const S=wt("session_connect");if(this.events.listenerCount(S)===0)throw new Error(`emitting ${S} without any listeners 997`);this.events.emit(wt("session_connect"),{session:A}),this.cleanupDuplicatePairings(A)}catch(c){await this.sendError({id:i,topic:r,error:c}),this.client.logger.error(c)}},this.onSessionSettleResponse=async(r,n)=>{const{id:i}=n;_i(n)?(await this.client.session.update(r,{acknowledged:!0}),this.events.emit(wt("session_approve",i),{})):Mn(n)&&(await this.client.session.delete(r,Ut("USER_DISCONNECTED")),this.events.emit(wt("session_approve",i),{error:n.error}))},this.onSessionUpdateRequest=async(r,n)=>{const{params:i,id:o}=n;try{const c=`${r}_session_update`,l=cc.get(c);if(l&&this.isRequestOutOfSync(l,o)){this.client.logger.info(`Discarding out of sync request - ${o}`),this.sendError({id:o,topic:r,error:Ut("INVALID_UPDATE_REQUEST")});return}this.isValidUpdate(Er({topic:r},i));try{cc.set(c,o),await this.client.session.update(r,{namespaces:i.namespaces}),await this.sendResult({id:o,topic:r,result:!0,throwOnFailedPublish:!0})}catch(f){throw cc.delete(c),f}this.client.events.emit("session_update",{id:o,topic:r,params:i})}catch(c){await this.sendError({id:o,topic:r,error:c}),this.client.logger.error(c)}},this.isRequestOutOfSync=(r,n)=>parseInt(n.toString().slice(0,-3))<=parseInt(r.toString().slice(0,-3)),this.onSessionUpdateResponse=(r,n)=>{const{id:i}=n,o=wt("session_update",i);if(this.events.listenerCount(o)===0)throw new Error(`emitting ${o} without any listeners`);_i(n)?this.events.emit(wt("session_update",i),{}):Mn(n)&&this.events.emit(wt("session_update",i),{error:n.error})},this.onSessionExtendRequest=async(r,n)=>{const{id:i}=n;try{this.isValidExtend({topic:r}),await this.setExpiry(r,Nr(ia)),await this.sendResult({id:i,topic:r,result:!0,throwOnFailedPublish:!0}),this.client.events.emit("session_extend",{id:i,topic:r})}catch(o){await this.sendError({id:i,topic:r,error:o}),this.client.logger.error(o)}},this.onSessionExtendResponse=(r,n)=>{const{id:i}=n,o=wt("session_extend",i);if(this.events.listenerCount(o)===0)throw new Error(`emitting ${o} without any listeners`);_i(n)?this.events.emit(wt("session_extend",i),{}):Mn(n)&&this.events.emit(wt("session_extend",i),{error:n.error})},this.onSessionPingRequest=async(r,n)=>{const{id:i}=n;try{this.isValidPing({topic:r}),await this.sendResult({id:i,topic:r,result:!0,throwOnFailedPublish:!0}),this.client.events.emit("session_ping",{id:i,topic:r})}catch(o){await this.sendError({id:i,topic:r,error:o}),this.client.logger.error(o)}},this.onSessionPingResponse=(r,n)=>{const{id:i}=n,o=wt("session_ping",i);if(this.events.listenerCount(o)===0)throw new Error(`emitting ${o} without any listeners`);setTimeout(()=>{_i(n)?this.events.emit(wt("session_ping",i),{}):Mn(n)&&this.events.emit(wt("session_ping",i),{error:n.error})},500)},this.onSessionDeleteRequest=async(r,n)=>{const{id:i}=n;try{this.isValidDisconnect({topic:r,reason:n.params}),await Promise.all([new Promise(o=>{this.client.core.relayer.once(wn.publish,async()=>{o(await this.deleteSession({topic:r,id:i}))})}),this.sendResult({id:i,topic:r,result:!0,throwOnFailedPublish:!0}),this.cleanupPendingSentRequestsForTopic({topic:r,error:Ut("USER_DISCONNECTED")})])}catch(o){this.client.logger.error(o)}},this.onSessionRequest=async(r,n)=>{const{id:i,params:o}=n;try{await this.isValidRequest(Er({topic:r},o));const c=Ws(JSON.stringify(ta("wc_sessionRequest",o,i))),l=this.client.session.get(r),f=await this.getVerifyContext(c,l.peer.metadata),h={id:i,topic:r,params:o,verifyContext:f};await this.setPendingSessionRequest(h),this.addSessionRequestToSessionRequestQueue(h),this.processSessionRequestQueue()}catch(c){await this.sendError({id:i,topic:r,error:c}),this.client.logger.error(c)}},this.onSessionRequestResponse=(r,n)=>{const{id:i}=n,o=wt("session_request",i);if(this.events.listenerCount(o)===0)throw new Error(`emitting ${o} without any listeners`);_i(n)?this.events.emit(wt("session_request",i),{result:n.result}):Mn(n)&&this.events.emit(wt("session_request",i),{error:n.error})},this.onSessionEventRequest=async(r,n)=>{const{id:i,params:o}=n;try{const c=`${r}_session_event_${o.event.name}`,l=cc.get(c);if(l&&this.isRequestOutOfSync(l,i)){this.client.logger.info(`Discarding out of sync request - ${i}`);return}this.isValidEmit(Er({topic:r},o)),this.client.events.emit("session_event",{id:i,topic:r,params:o}),cc.set(c,i)}catch(c){await this.sendError({id:i,topic:r,error:c}),this.client.logger.error(c)}},this.onSessionAuthenticateResponse=(r,n)=>{const{id:i}=n;this.client.logger.trace({type:"method",method:"onSessionAuthenticateResponse",topic:r,payload:n}),_i(n)?this.events.emit(wt("session_request",i),{result:n.result}):Mn(n)&&this.events.emit(wt("session_request",i),{error:n.error})},this.onSessionAuthenticateRequest=async(r,n)=>{const{requester:i,authPayload:o,expiryTimestamp:c}=n.params,l=Ws(JSON.stringify(n)),f=await this.getVerifyContext(l,this.client.metadata),h={requester:i,pairingTopic:r,id:n.id,authPayload:o,verifyContext:f,expiryTimestamp:c};await this.client.auth.requests.set(n.id,h),this.client.events.emit("session_authenticate",{topic:r,params:n.params,id:n.id})},this.addSessionRequestToSessionRequestQueue=r=>{this.sessionRequestQueue.queue.push(r)},this.cleanupAfterResponse=r=>{this.deletePendingSessionRequest(r.response.id,{message:"fulfilled",code:0}),setTimeout(()=>{this.sessionRequestQueue.state=zi.idle,this.processSessionRequestQueue()},_e.toMiliseconds(this.requestQueueDelay))},this.cleanupPendingSentRequestsForTopic=({topic:r,error:n})=>{const i=this.client.core.history.pending;i.length>0&&i.filter(o=>o.topic===r&&o.request.method==="wc_sessionRequest").forEach(o=>{const c=o.request.id,l=wt("session_request",c);if(this.events.listenerCount(l)===0)throw new Error(`emitting ${l} without any listeners`);this.events.emit(wt("session_request",o.request.id),{error:n})})},this.processSessionRequestQueue=()=>{if(this.sessionRequestQueue.state===zi.active){this.client.logger.info("session request queue is already active.");return}const r=this.sessionRequestQueue.queue[0];if(!r){this.client.logger.info("session request queue is empty.");return}try{this.sessionRequestQueue.state=zi.active,this.client.events.emit("session_request",r)}catch(n){this.client.logger.error(n)}},this.onPairingCreated=r=>{if(r.methods&&this.expectedPairingMethodMap.set(r.topic,r.methods),r.active)return;const n=this.client.proposal.getAll().find(i=>i.pairingTopic===r.topic);n&&this.onSessionProposeRequest(r.topic,ta("wc_sessionPropose",{requiredNamespaces:n.requiredNamespaces,optionalNamespaces:n.optionalNamespaces,relays:n.relays,proposer:n.proposer,sessionProperties:n.sessionProperties},n.id))},this.isValidConnect=async r=>{if(!rn(r)){const{message:f}=me("MISSING_OR_INVALID",`connect() params: ${JSON.stringify(r)}`);throw new Error(f)}const{pairingTopic:n,requiredNamespaces:i,optionalNamespaces:o,sessionProperties:c,relays:l}=r;if(Hr(n)||await this.isValidPairingTopic(n),!bA(l,!0)){const{message:f}=me("MISSING_OR_INVALID",`connect() relays: ${l}`);throw new Error(f)}!Hr(i)&&ac(i)!==0&&this.validateNamespaces(i,"requiredNamespaces"),!Hr(o)&&ac(o)!==0&&this.validateNamespaces(o,"optionalNamespaces"),Hr(c)||this.validateSessionProps(c,"sessionProperties")},this.validateNamespaces=(r,n)=>{const i=yA(r,"connect()",n);if(i)throw new Error(i.message)},this.isValidApprove=async r=>{if(!rn(r))throw new Error(me("MISSING_OR_INVALID",`approve() params: ${r}`).message);const{id:n,namespaces:i,relayProtocol:o,sessionProperties:c}=r;this.checkRecentlyDeleted(n),await this.isValidProposalId(n);const l=this.client.proposal.get(n),f=kf(i,"approve()");if(f)throw new Error(f.message);const h=Rm(l.requiredNamespaces,i,"approve()");if(h)throw new Error(h.message);if(!ur(o,!0)){const{message:g}=me("MISSING_OR_INVALID",`approve() relayProtocol: ${o}`);throw new Error(g)}Hr(c)||this.validateSessionProps(c,"sessionProperties")},this.isValidReject=async r=>{if(!rn(r)){const{message:o}=me("MISSING_OR_INVALID",`reject() params: ${r}`);throw new Error(o)}const{id:n,reason:i}=r;if(this.checkRecentlyDeleted(n),await this.isValidProposalId(n),!EA(i)){const{message:o}=me("MISSING_OR_INVALID",`reject() reason: ${JSON.stringify(i)}`);throw new Error(o)}},this.isValidSessionSettleRequest=r=>{if(!rn(r)){const{message:h}=me("MISSING_OR_INVALID",`onSessionSettleRequest() params: ${r}`);throw new Error(h)}const{relay:n,controller:i,namespaces:o,expiry:c}=r;if(!$m(n)){const{message:h}=me("MISSING_OR_INVALID","onSessionSettleRequest() relay protocol should be a string");throw new Error(h)}const l=dA(i,"onSessionSettleRequest()");if(l)throw new Error(l.message);const f=kf(o,"onSessionSettleRequest()");if(f)throw new Error(f.message);if(ss(c)){const{message:h}=me("EXPIRED","onSessionSettleRequest()");throw new Error(h)}},this.isValidUpdate=async r=>{if(!rn(r)){const{message:f}=me("MISSING_OR_INVALID",`update() params: ${r}`);throw new Error(f)}const{topic:n,namespaces:i}=r;this.checkRecentlyDeleted(n),await this.isValidSessionTopic(n);const o=this.client.session.get(n),c=kf(i,"update()");if(c)throw new Error(c.message);const l=Rm(o.requiredNamespaces,i,"update()");if(l)throw new Error(l.message)},this.isValidExtend=async r=>{if(!rn(r)){const{message:i}=me("MISSING_OR_INVALID",`extend() params: ${r}`);throw new Error(i)}const{topic:n}=r;this.checkRecentlyDeleted(n),await this.isValidSessionTopic(n)},this.isValidRequest=async r=>{if(!rn(r)){const{message:f}=me("MISSING_OR_INVALID",`request() params: ${r}`);throw new Error(f)}const{topic:n,request:i,chainId:o,expiry:c}=r;this.checkRecentlyDeleted(n),await this.isValidSessionTopic(n);const{namespaces:l}=this.client.session.get(n);if(!Nm(l,o)){const{message:f}=me("MISSING_OR_INVALID",`request() chainId: ${o}`);throw new Error(f)}if(!AA(i)){const{message:f}=me("MISSING_OR_INVALID",`request() ${JSON.stringify(i)}`);throw new Error(f)}if(!SA(l,o,i.method)){const{message:f}=me("MISSING_OR_INVALID",`request() method: ${i.method}`);throw new Error(f)}if(c&&!PA(c,v0)){const{message:f}=me("MISSING_OR_INVALID",`request() expiry: ${c}. Expiry must be a number (in seconds) between ${v0.min} and ${v0.max}`);throw new Error(f)}},this.isValidRespond=async r=>{var n;if(!rn(r)){const{message:c}=me("MISSING_OR_INVALID",`respond() params: ${r}`);throw new Error(c)}const{topic:i,response:o}=r;try{await this.isValidSessionTopic(i)}catch(c){throw(n=r?.response)!=null&&n.id&&this.cleanupAfterResponse(r),c}if(!xA(o)){const{message:c}=me("MISSING_OR_INVALID",`respond() response: ${JSON.stringify(o)}`);throw new Error(c)}},this.isValidPing=async r=>{if(!rn(r)){const{message:i}=me("MISSING_OR_INVALID",`ping() params: ${r}`);throw new Error(i)}const{topic:n}=r;await this.isValidSessionOrPairingTopic(n)},this.isValidEmit=async r=>{if(!rn(r)){const{message:l}=me("MISSING_OR_INVALID",`emit() params: ${r}`);throw new Error(l)}const{topic:n,event:i,chainId:o}=r;await this.isValidSessionTopic(n);const{namespaces:c}=this.client.session.get(n);if(!Nm(c,o)){const{message:l}=me("MISSING_OR_INVALID",`emit() chainId: ${o}`);throw new Error(l)}if(!IA(i)){const{message:l}=me("MISSING_OR_INVALID",`emit() event: ${JSON.stringify(i)}`);throw new Error(l)}if(!DA(c,o,i.name)){const{message:l}=me("MISSING_OR_INVALID",`emit() event: ${JSON.stringify(i)}`);throw new Error(l)}},this.isValidDisconnect=async r=>{if(!rn(r)){const{message:i}=me("MISSING_OR_INVALID",`disconnect() params: ${r}`);throw new Error(i)}const{topic:n}=r;await this.isValidSessionOrPairingTopic(n)},this.isValidAuthenticate=r=>{const{chains:n,uri:i,domain:o,nonce:c}=r;if(!Array.isArray(n)||n.length===0)throw new Error("chains is required and must be a non-empty array");if(!ur(i,!1))throw new Error("uri is required parameter");if(!ur(o,!1))throw new Error("domain is required parameter");if(!ur(c,!1))throw new Error("nonce is required parameter");if([...new Set(n.map(f=>wl(f).namespace))].length>1)throw new Error("Multi-namespace requests are not supported. Please request single namespace only.");const{namespace:l}=wl(n[0]);if(l!=="eip155")throw new Error("Only eip155 namespace is supported for authenticated sessions. Please use .connect() for non-eip155 chains.")},this.getVerifyContext=async(r,n)=>{const i={verified:{verifyUrl:n.verifyUrl||na,validation:"UNKNOWN",origin:n.url||""}};try{const o=await this.client.core.verify.resolve({attestationId:r,verifyUrl:n.verifyUrl});o&&(i.verified.origin=o.origin,i.verified.isScam=o.isScam,i.verified.validation=o.origin===new URL(n.url).origin?"VALID":"INVALID")}catch(o){this.client.logger.info(o)}return this.client.logger.info(`Verify context: ${JSON.stringify(i)}`),i},this.validateSessionProps=(r,n)=>{Object.values(r).forEach(i=>{if(!ur(i,!1)){const{message:o}=me("MISSING_OR_INVALID",`${n} must be in Record<string, string> format. Received: ${JSON.stringify(i)}`);throw new Error(o)}})},this.getPendingAuthRequest=r=>{const n=this.client.auth.requests.get(r);return typeof n=="object"?n:void 0},this.addToRecentlyDeleted=(r,n)=>{if(this.recentlyDeletedMap.set(r,n),this.recentlyDeletedMap.size>=this.recentlyDeletedLimit){let i=0;const o=this.recentlyDeletedLimit/2;for(const c of this.recentlyDeletedMap.keys()){if(i++>=o)break;this.recentlyDeletedMap.delete(c)}}},this.checkRecentlyDeleted=r=>{const n=this.recentlyDeletedMap.get(r);if(n){const{message:i}=me("MISSING_OR_INVALID",`Record was recently deleted - ${n}: ${r}`);throw new Error(i)}}}async isInitialized(){if(!this.initialized){const{message:e}=me("NOT_INITIALIZED",this.name);throw new Error(e)}await this.client.core.relayer.confirmOnlineStateOrThrow()}registerRelayerEvents(){this.client.core.relayer.on(wn.message,async e=>{const{topic:r,message:n}=e,{publicKey:i}=this.client.auth.authKeys.keys.includes(tu)?this.client.auth.authKeys.get(tu):{responseTopic:void 0,publicKey:void 0},o=await this.client.core.crypto.decode(r,n,{receiverPublicKey:i});try{s0(o)?(this.client.core.history.set(r,o),this.onRelayEventRequest({topic:r,payload:o})):Zl(o)?(await this.client.core.history.resolve(o),await this.onRelayEventResponse({topic:r,payload:o}),this.client.core.history.delete(r,o.id)):this.onRelayEventUnknownPayload({topic:r,payload:o})}catch(c){this.client.logger.error(c)}})}registerExpirerEvents(){this.client.core.expirer.on($n.expired,async e=>{const{topic:r,id:n}=cg(e.target);if(n&&this.client.pendingRequest.keys.includes(n))return await this.deletePendingSessionRequest(n,me("EXPIRED"),!0);r?this.client.session.keys.includes(r)&&(await this.deleteSession({topic:r,expirerHasDeleted:!0}),this.client.events.emit("session_expire",{topic:r})):n&&(await this.deleteProposal(n,!0),this.client.events.emit("proposal_expire",{id:n}))})}registerPairingEvents(){this.client.core.pairing.events.on(ra.create,e=>this.onPairingCreated(e)),this.client.core.pairing.events.on(ra.delete,e=>{this.addToRecentlyDeleted(e.topic,"pairing")})}isValidPairingTopic(e){if(!ur(e,!1)){const{message:r}=me("MISSING_OR_INVALID",`pairing topic should be a string: ${e}`);throw new Error(r)}if(!this.client.core.pairing.pairings.keys.includes(e)){const{message:r}=me("NO_MATCHING_KEY",`pairing topic doesn't exist: ${e}`);throw new Error(r)}if(ss(this.client.core.pairing.pairings.get(e).expiry)){const{message:r}=me("EXPIRED",`pairing topic: ${e}`);throw new Error(r)}}async isValidSessionTopic(e){if(!ur(e,!1)){const{message:r}=me("MISSING_OR_INVALID",`session topic should be a string: ${e}`);throw new Error(r)}if(this.checkRecentlyDeleted(e),!this.client.session.keys.includes(e)){const{message:r}=me("NO_MATCHING_KEY",`session topic doesn't exist: ${e}`);throw new Error(r)}if(ss(this.client.session.get(e).expiry)){await this.deleteSession({topic:e});const{message:r}=me("EXPIRED",`session topic: ${e}`);throw new Error(r)}if(!this.client.core.crypto.keychain.has(e)){const{message:r}=me("MISSING_OR_INVALID",`session topic does not exist in keychain: ${e}`);throw await this.deleteSession({topic:e}),new Error(r)}}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(ur(e,!1)){const{message:r}=me("NO_MATCHING_KEY",`session or pairing topic doesn't exist: ${e}`);throw new Error(r)}else{const{message:r}=me("MISSING_OR_INVALID",`session or pairing topic should be a string: ${e}`);throw new Error(r)}}async isValidProposalId(e){if(!_A(e)){const{message:r}=me("MISSING_OR_INVALID",`proposal id should be a number: ${e}`);throw new Error(r)}if(!this.client.proposal.keys.includes(e)){const{message:r}=me("NO_MATCHING_KEY",`proposal id doesn't exist: ${e}`);throw new Error(r)}if(ss(this.client.proposal.get(e).expiryTimestamp)){await this.deleteProposal(e);const{message:r}=me("EXPIRED",`proposal id: ${e}`);throw new Error(r)}}}class xD extends Qs{constructor(e,r){super(e,r,cD,g0),this.core=e,this.logger=r}}class ID extends Qs{constructor(e,r){super(e,r,lD,g0),this.core=e,this.logger=r}}class SD extends Qs{constructor(e,r){super(e,r,hD,g0,n=>n.id),this.core=e,this.logger=r}}class DD extends Qs{constructor(e,r){super(e,r,gD,eu,()=>tu),this.core=e,this.logger=r}}class CD extends Qs{constructor(e,r){super(e,r,mD,eu),this.core=e,this.logger=r}}class OD extends Qs{constructor(e,r){super(e,r,vD,eu,n=>n.id),this.core=e,this.logger=r}}class PD{constructor(e,r){this.core=e,this.logger=r,this.authKeys=new DD(this.core,this.logger),this.pairingTopics=new CD(this.core,this.logger),this.requests=new OD(this.core,this.logger)}async init(){await this.authKeys.init(),await this.pairingTopics.init(),await this.requests.init()}}class w0 extends xx{constructor(e){super(e),this.protocol=ow,this.version=aw,this.name=m0.name,this.events=new Dr.exports.EventEmitter,this.on=(n,i)=>this.events.on(n,i),this.once=(n,i)=>this.events.once(n,i),this.off=(n,i)=>this.events.off(n,i),this.removeListener=(n,i)=>this.events.removeListener(n,i),this.removeAllListeners=n=>this.events.removeAllListeners(n),this.connect=async n=>{try{return await this.engine.connect(n)}catch(i){throw this.logger.error(i.message),i}},this.pair=async n=>{try{return await this.engine.pair(n)}catch(i){throw this.logger.error(i.message),i}},this.approve=async n=>{try{return await this.engine.approve(n)}catch(i){throw this.logger.error(i.message),i}},this.reject=async n=>{try{return await this.engine.reject(n)}catch(i){throw this.logger.error(i.message),i}},this.update=async n=>{try{return await this.engine.update(n)}catch(i){throw this.logger.error(i.message),i}},this.extend=async n=>{try{return await this.engine.extend(n)}catch(i){throw this.logger.error(i.message),i}},this.request=async n=>{try{return await this.engine.request(n)}catch(i){throw this.logger.error(i.message),i}},this.respond=async n=>{try{return await this.engine.respond(n)}catch(i){throw this.logger.error(i.message),i}},this.ping=async n=>{try{return await this.engine.ping(n)}catch(i){throw this.logger.error(i.message),i}},this.emit=async n=>{try{return await this.engine.emit(n)}catch(i){throw this.logger.error(i.message),i}},this.disconnect=async n=>{try{return await this.engine.disconnect(n)}catch(i){throw this.logger.error(i.message),i}},this.find=n=>{try{return this.engine.find(n)}catch(i){throw this.logger.error(i.message),i}},this.getPendingSessionRequests=()=>{try{return this.engine.getPendingSessionRequests()}catch(n){throw this.logger.error(n.message),n}},this.authenticate=async n=>{try{return await this.engine.authenticate(n)}catch(i){throw this.logger.error(i.message),i}},this.formatAuthMessage=n=>{try{return this.engine.formatAuthMessage(n)}catch(i){throw this.logger.error(i.message),i}},this.approveSessionAuthenticate=async n=>{try{return await this.engine.approveSessionAuthenticate(n)}catch(i){throw this.logger.error(i.message),i}},this.rejectSessionAuthenticate=async n=>{try{return await this.engine.rejectSessionAuthenticate(n)}catch(i){throw this.logger.error(i.message),i}},this.name=e?.name||m0.name,this.metadata=e?.metadata||O_();const r=typeof e?.logger<"u"&&typeof e?.logger!="string"?e.logger:yi(Gl({level:e?.logger||m0.logger}));this.core=e?.core||new aD(e),this.logger=on(r,this.name),this.session=new ID(this.core,this.logger),this.proposal=new xD(this.core,this.logger),this.pendingRequest=new SD(this.core,this.logger),this.engine=new AD(this),this.auth=new PD(this.core,this.logger)}static async init(e){const r=new w0(e);return await r.initialize(),r}get context(){return sn(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 y0={exports:{}};(function(t,e){var r=typeof self<"u"?self:Fr,n=function(){function o(){this.fetch=!1,this.DOMException=r.DOMException}return o.prototype=r,new o}();(function(o){(function(c){var l={searchParams:"URLSearchParams"in o,iterable:"Symbol"in o&&"iterator"in Symbol,blob:"FileReader"in o&&"Blob"in o&&function(){try{return new Blob,!0}catch{return!1}}(),formData:"FormData"in o,arrayBuffer:"ArrayBuffer"in o};function f(p){return p&&DataView.prototype.isPrototypeOf(p)}if(l.arrayBuffer)var h=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],g=ArrayBuffer.isView||function(p){return p&&h.indexOf(Object.prototype.toString.call(p))>-1};function _(p){if(typeof p!="string"&&(p=String(p)),/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(p))throw new TypeError("Invalid character in header field name");return p.toLowerCase()}function E(p){return typeof p!="string"&&(p=String(p)),p}function A(p){var b={next:function(){var D=p.shift();return{done:D===void 0,value:D}}};return l.iterable&&(b[Symbol.iterator]=function(){return b}),b}function S(p){this.map={},p instanceof S?p.forEach(function(b,D){this.append(D,b)},this):Array.isArray(p)?p.forEach(function(b){this.append(b[0],b[1])},this):p&&Object.getOwnPropertyNames(p).forEach(function(b){this.append(b,p[b])},this)}S.prototype.append=function(p,b){p=_(p),b=E(b);var D=this.map[p];this.map[p]=D?D+", "+b:b},S.prototype.delete=function(p){delete this.map[_(p)]},S.prototype.get=function(p){return p=_(p),this.has(p)?this.map[p]:null},S.prototype.has=function(p){return this.map.hasOwnProperty(_(p))},S.prototype.set=function(p,b){this.map[_(p)]=E(b)},S.prototype.forEach=function(p,b){for(var D in this.map)this.map.hasOwnProperty(D)&&p.call(b,this.map[D],D,this)},S.prototype.keys=function(){var p=[];return this.forEach(function(b,D){p.push(D)}),A(p)},S.prototype.values=function(){var p=[];return this.forEach(function(b){p.push(b)}),A(p)},S.prototype.entries=function(){var p=[];return this.forEach(function(b,D){p.push([D,b])}),A(p)},l.iterable&&(S.prototype[Symbol.iterator]=S.prototype.entries);function U(p){if(p.bodyUsed)return Promise.reject(new TypeError("Already read"));p.bodyUsed=!0}function W(p){return new Promise(function(b,D){p.onload=function(){b(p.result)},p.onerror=function(){D(p.error)}})}function Y(p){var b=new FileReader,D=W(b);return b.readAsArrayBuffer(p),D}function B(p){var b=new FileReader,D=W(b);return b.readAsText(p),D}function z(p){for(var b=new Uint8Array(p),D=new Array(b.length),O=0;O<b.length;O++)D[O]=String.fromCharCode(b[O]);return D.join("")}function P(p){if(p.slice)return p.slice(0);var b=new Uint8Array(p.byteLength);return b.set(new Uint8Array(p)),b.buffer}function F(){return this.bodyUsed=!1,this._initBody=function(p){this._bodyInit=p,p?typeof p=="string"?this._bodyText=p:l.blob&&Blob.prototype.isPrototypeOf(p)?this._bodyBlob=p:l.formData&&FormData.prototype.isPrototypeOf(p)?this._bodyFormData=p:l.searchParams&&URLSearchParams.prototype.isPrototypeOf(p)?this._bodyText=p.toString():l.arrayBuffer&&l.blob&&f(p)?(this._bodyArrayBuffer=P(p.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):l.arrayBuffer&&(ArrayBuffer.prototype.isPrototypeOf(p)||g(p))?this._bodyArrayBuffer=P(p):this._bodyText=p=Object.prototype.toString.call(p):this._bodyText="",this.headers.get("content-type")||(typeof p=="string"?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):l.searchParams&&URLSearchParams.prototype.isPrototypeOf(p)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},l.blob&&(this.blob=function(){var p=U(this);if(p)return p;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?U(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(Y)}),this.text=function(){var p=U(this);if(p)return p;if(this._bodyBlob)return B(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(z(this._bodyArrayBuffer));if(this._bodyFormData)throw new Error("could not read FormData body as text");return Promise.resolve(this._bodyText)},l.formData&&(this.formData=function(){return this.text().then(te)}),this.json=function(){return this.text().then(JSON.parse)},this}var j=["DELETE","GET","HEAD","OPTIONS","POST","PUT"];function m(p){var b=p.toUpperCase();return j.indexOf(b)>-1?b:p}function T(p,b){b=b||{};var D=b.body;if(p instanceof T){if(p.bodyUsed)throw new TypeError("Already read");this.url=p.url,this.credentials=p.credentials,b.headers||(this.headers=new S(p.headers)),this.method=p.method,this.mode=p.mode,this.signal=p.signal,!D&&p._bodyInit!=null&&(D=p._bodyInit,p.bodyUsed=!0)}else this.url=String(p);if(this.credentials=b.credentials||this.credentials||"same-origin",(b.headers||!this.headers)&&(this.headers=new S(b.headers)),this.method=m(b.method||this.method||"GET"),this.mode=b.mode||this.mode||null,this.signal=b.signal||this.signal,this.referrer=null,(this.method==="GET"||this.method==="HEAD")&&D)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(D)}T.prototype.clone=function(){return new T(this,{body:this._bodyInit})};function te(p){var b=new FormData;return p.trim().split("&").forEach(function(D){if(D){var O=D.split("="),$=O.shift().replace(/\+/g," "),L=O.join("=").replace(/\+/g," ");b.append(decodeURIComponent($),decodeURIComponent(L))}}),b}function ee(p){var b=new S,D=p.replace(/\r?\n[\t ]+/g," ");return D.split(/\r?\n/).forEach(function(O){var $=O.split(":"),L=$.shift().trim();if(L){var C=$.join(":").trim();b.append(L,C)}}),b}F.call(T.prototype);function ne(p,b){b||(b={}),this.type="default",this.status=b.status===void 0?200:b.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in b?b.statusText:"OK",this.headers=new S(b.headers),this.url=b.url||"",this._initBody(p)}F.call(ne.prototype),ne.prototype.clone=function(){return new ne(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new S(this.headers),url:this.url})},ne.error=function(){var p=new ne(null,{status:0,statusText:""});return p.type="error",p};var fe=[301,302,303,307,308];ne.redirect=function(p,b){if(fe.indexOf(b)===-1)throw new RangeError("Invalid status code");return new ne(null,{status:b,headers:{location:p}})},c.DOMException=o.DOMException;try{new c.DOMException}catch{c.DOMException=function(b,D){this.message=b,this.name=D;var O=Error(b);this.stack=O.stack},c.DOMException.prototype=Object.create(Error.prototype),c.DOMException.prototype.constructor=c.DOMException}function d(p,b){return new Promise(function(D,O){var $=new T(p,b);if($.signal&&$.signal.aborted)return O(new c.DOMException("Aborted","AbortError"));var L=new XMLHttpRequest;function C(){L.abort()}L.onload=function(){var v={status:L.status,statusText:L.statusText,headers:ee(L.getAllResponseHeaders()||"")};v.url="responseURL"in L?L.responseURL:v.headers.get("X-Request-URL");var N="response"in L?L.response:L.responseText;D(new ne(N,v))},L.onerror=function(){O(new TypeError("Network request failed"))},L.ontimeout=function(){O(new TypeError("Network request failed"))},L.onabort=function(){O(new c.DOMException("Aborted","AbortError"))},L.open($.method,$.url,!0),$.credentials==="include"?L.withCredentials=!0:$.credentials==="omit"&&(L.withCredentials=!1),"responseType"in L&&l.blob&&(L.responseType="blob"),$.headers.forEach(function(v,N){L.setRequestHeader(N,v)}),$.signal&&($.signal.addEventListener("abort",C),L.onreadystatechange=function(){L.readyState===4&&$.signal.removeEventListener("abort",C)}),L.send(typeof $._bodyInit>"u"?null:$._bodyInit)})}return d.polyfill=!0,o.fetch||(o.fetch=d,o.Headers=S,o.Request=T,o.Response=ne),c.Headers=S,c.Request=T,c.Response=ne,c.fetch=d,Object.defineProperty(c,"__esModule",{value:!0}),c})({})})(n),n.fetch.ponyfill=!0,delete n.fetch.polyfill;var i=n;e=i.fetch,e.default=i.fetch,e.fetch=i.fetch,e.Headers=i.Headers,e.Request=i.Request,e.Response=i.Response,t.exports=e})(y0,y0.exports);var dw=e3(y0.exports);const pw={headers:{Accept:"application/json","Content-Type":"application/json"},method:"POST"},gw=10;class fs{constructor(e,r=!1){if(this.url=e,this.disableProviderPing=r,this.events=new Dr.exports.EventEmitter,this.isAvailable=!1,this.registering=!1,!bv(e))throw new Error(`Provided URL is not compatible with HTTP connection: ${e}`);this.url=e,this.disableProviderPing=r}get connected(){return this.isAvailable}get connecting(){return this.registering}on(e,r){this.events.on(e,r)}once(e,r){this.events.once(e,r)}off(e,r){this.events.off(e,r)}removeListener(e,r){this.events.removeListener(e,r)}async open(e=this.url){await this.register(e)}async close(){if(!this.isAvailable)throw new Error("Connection already closed");this.onClose()}async send(e,r){this.isAvailable||await this.register();try{const n=Fi(e),o=await(await dw(this.url,Object.assign(Object.assign({},pw),{body:n}))).json();this.onPayload({data:o})}catch(n){this.onError(e.id,n)}}async register(e=this.url){if(!bv(e))throw new Error(`Provided URL is not compatible with HTTP connection: ${e}`);if(this.registering){const r=this.events.getMaxListeners();return(this.events.listenerCount("register_error")>=r||this.events.listenerCount("open")>=r)&&this.events.setMaxListeners(r+1),new Promise((n,i)=>{this.events.once("register_error",o=>{this.resetMaxListeners(),i(o)}),this.events.once("open",()=>{if(this.resetMaxListeners(),typeof this.isAvailable>"u")return i(new Error("HTTP connection is missing or invalid"));n()})})}this.url=e,this.registering=!0;try{if(!this.disableProviderPing){const r=Fi({id:1,jsonrpc:"2.0",method:"test",params:[]});await dw(e,Object.assign(Object.assign({},pw),{body:r}))}this.onOpen()}catch(r){const n=this.parseError(r);throw this.events.emit("register_error",n),this.onClose(),n}}onOpen(){this.isAvailable=!0,this.registering=!1,this.events.emit("open")}onClose(){this.isAvailable=!1,this.registering=!1,this.events.emit("close")}onPayload(e){if(typeof e.data>"u")return;const r=typeof e.data=="string"?uc(e.data):e.data;this.events.emit("payload",r)}onError(e,r){const n=this.parseError(r),i=n.message||n.toString(),o=Ql(e,i);this.events.emit("payload",o)}parseError(e,r=this.url){return pv(e,r,"HTTP")}resetMaxListeners(){this.events.getMaxListeners()>gw&&this.events.setMaxListeners(gw)}}const mw="error",MD="wss://relay.walletconnect.com",TD="wc",$D="universal_provider",vw=`${TD}@2:${$D}:`,ND="https://rpc.walletconnect.com/v1/",Hi={DEFAULT_CHAIN_CHANGED:"default_chain_changed"};var Ec=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},b0={exports:{}};/**
57
57
  * @license
58
58
  * Lodash <https://lodash.com/>
59
59
  * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>