@reown/walletkit 1.1.1-canary-ca-5 → 1.1.1-canary-ca-6

Sign up to get free protection for your applications and to get access to all the features.
package/dist/index.umd.js CHANGED
@@ -40,5 +40,5 @@
40
40
  LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
41
41
  OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
42
42
  PERFORMANCE OF THIS SOFTWARE.
43
- ***************************************************************************** */var cf=function(r,e){return cf=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,i){t.__proto__=i}||function(t,i){for(var n in i)i.hasOwnProperty(n)&&(t[n]=i[n])},cf(r,e)};function r6(r,e){cf(r,e);function t(){this.constructor=r}r.prototype=e===null?Object.create(e):(t.prototype=e.prototype,new t)}var hf=function(){return hf=Object.assign||function(e){for(var t,i=1,n=arguments.length;i<n;i++){t=arguments[i];for(var s in t)Object.prototype.hasOwnProperty.call(t,s)&&(e[s]=t[s])}return e},hf.apply(this,arguments)};function i6(r,e){var t={};for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&e.indexOf(i)<0&&(t[i]=r[i]);if(r!=null&&typeof Object.getOwnPropertySymbols=="function")for(var n=0,i=Object.getOwnPropertySymbols(r);n<i.length;n++)e.indexOf(i[n])<0&&Object.prototype.propertyIsEnumerable.call(r,i[n])&&(t[i[n]]=r[i[n]]);return t}function n6(r,e,t,i){var n=arguments.length,s=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(r,e,t,i);else for(var f=r.length-1;f>=0;f--)(o=r[f])&&(s=(n<3?o(s):n>3?o(e,t,s):o(e,t))||s);return n>3&&s&&Object.defineProperty(e,t,s),s}function s6(r,e){return function(t,i){e(t,i,r)}}function a6(r,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(r,e)}function o6(r,e,t,i){function n(s){return s instanceof t?s:new t(function(o){o(s)})}return new(t||(t=Promise))(function(s,o){function f(g){try{h(i.next(g))}catch(y){o(y)}}function u(g){try{h(i.throw(g))}catch(y){o(y)}}function h(g){g.done?s(g.value):n(g.value).then(f,u)}h((i=i.apply(r,e||[])).next())})}function f6(r,e){var t={label:0,sent:function(){if(s[0]&1)throw s[1];return s[1]},trys:[],ops:[]},i,n,s,o;return o={next:f(0),throw:f(1),return:f(2)},typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function f(h){return function(g){return u([h,g])}}function u(h){if(i)throw new TypeError("Generator is already executing.");for(;t;)try{if(i=1,n&&(s=h[0]&2?n.return:h[0]?n.throw||((s=n.return)&&s.call(n),0):n.next)&&!(s=s.call(n,h[1])).done)return s;switch(n=0,s&&(h=[h[0]&2,s.value]),h[0]){case 0:case 1:s=h;break;case 4:return t.label++,{value:h[1],done:!1};case 5:t.label++,n=h[1],h=[0];continue;case 7:h=t.ops.pop(),t.trys.pop();continue;default:if(s=t.trys,!(s=s.length>0&&s[s.length-1])&&(h[0]===6||h[0]===2)){t=0;continue}if(h[0]===3&&(!s||h[1]>s[0]&&h[1]<s[3])){t.label=h[1];break}if(h[0]===6&&t.label<s[1]){t.label=s[1],s=h;break}if(s&&t.label<s[2]){t.label=s[2],t.ops.push(h);break}s[2]&&t.ops.pop(),t.trys.pop();continue}h=e.call(r,t)}catch(g){h=[6,g],n=0}finally{i=s=0}if(h[0]&5)throw h[1];return{value:h[0]?h[1]:void 0,done:!0}}}function c6(r,e,t,i){i===void 0&&(i=t),r[i]=e[t]}function h6(r,e){for(var t in r)t!=="default"&&!e.hasOwnProperty(t)&&(e[t]=r[t])}function uf(r){var e=typeof Symbol=="function"&&Symbol.iterator,t=e&&r[e],i=0;if(t)return t.call(r);if(r&&typeof r.length=="number")return{next:function(){return r&&i>=r.length&&(r=void 0),{value:r&&r[i++],done:!r}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function v0(r,e){var t=typeof Symbol=="function"&&r[Symbol.iterator];if(!t)return r;var i=t.call(r),n,s=[],o;try{for(;(e===void 0||e-- >0)&&!(n=i.next()).done;)s.push(n.value)}catch(f){o={error:f}}finally{try{n&&!n.done&&(t=i.return)&&t.call(i)}finally{if(o)throw o.error}}return s}function u6(){for(var r=[],e=0;e<arguments.length;e++)r=r.concat(v0(arguments[e]));return r}function d6(){for(var r=0,e=0,t=arguments.length;e<t;e++)r+=arguments[e].length;for(var i=Array(r),n=0,e=0;e<t;e++)for(var s=arguments[e],o=0,f=s.length;o<f;o++,n++)i[n]=s[o];return i}function ps(r){return this instanceof ps?(this.v=r,this):new ps(r)}function l6(r,e,t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var i=t.apply(r,e||[]),n,s=[];return n={},o("next"),o("throw"),o("return"),n[Symbol.asyncIterator]=function(){return this},n;function o(I){i[I]&&(n[I]=function(M){return new Promise(function(D,N){s.push([I,M,D,N])>1||f(I,M)})})}function f(I,M){try{u(i[I](M))}catch(D){y(s[0][3],D)}}function u(I){I.value instanceof ps?Promise.resolve(I.value.v).then(h,g):y(s[0][2],I)}function h(I){f("next",I)}function g(I){f("throw",I)}function y(I,M){I(M),s.shift(),s.length&&f(s[0][0],s[0][1])}}function p6(r){var e,t;return e={},i("next"),i("throw",function(n){throw n}),i("return"),e[Symbol.iterator]=function(){return this},e;function i(n,s){e[n]=r[n]?function(o){return(t=!t)?{value:ps(r[n](o)),done:n==="return"}:s?s(o):o}:s}}function g6(r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=r[Symbol.asyncIterator],t;return e?e.call(r):(r=typeof uf=="function"?uf(r):r[Symbol.iterator](),t={},i("next"),i("throw"),i("return"),t[Symbol.asyncIterator]=function(){return this},t);function i(s){t[s]=r[s]&&function(o){return new Promise(function(f,u){o=r[s](o),n(f,u,o.done,o.value)})}}function n(s,o,f,u){Promise.resolve(u).then(function(h){s({value:h,done:f})},o)}}function b6(r,e){return Object.defineProperty?Object.defineProperty(r,"raw",{value:e}):r.raw=e,r}function v6(r){if(r&&r.__esModule)return r;var e={};if(r!=null)for(var t in r)Object.hasOwnProperty.call(r,t)&&(e[t]=r[t]);return e.default=r,e}function m6(r){return r&&r.__esModule?r:{default:r}}function y6(r,e){if(!e.has(r))throw new TypeError("attempted to get private field on non-instance");return e.get(r)}function w6(r,e,t){if(!e.has(r))throw new TypeError("attempted to set private field on non-instance");return e.set(r,t),t}var _6=Object.freeze({__proto__:null,__extends:r6,get __assign(){return hf},__rest:i6,__decorate:n6,__param:s6,__metadata:a6,__awaiter:o6,__generator:f6,__createBinding:c6,__exportStar:h6,__values:uf,__read:v0,__spread:u6,__spreadArrays:d6,__await:ps,__asyncGenerator:l6,__asyncDelegator:p6,__asyncValues:g6,__makeTemplateObject:b6,__importStar:v6,__importDefault:m6,__classPrivateFieldGet:y6,__classPrivateFieldSet:w6}),x6=Ua(_6),fi={},m0;function A6(){if(m0)return fi;m0=1,Object.defineProperty(fi,"__esModule",{value:!0}),fi.isBrowserCryptoAvailable=fi.getSubtleCrypto=fi.getBrowerCrypto=void 0;function r(){return Nt?.crypto||Nt?.msCrypto||{}}fi.getBrowerCrypto=r;function e(){const i=r();return i.subtle||i.webkitSubtle}fi.getSubtleCrypto=e;function t(){return!!r()&&!!e()}return fi.isBrowserCryptoAvailable=t,fi}var ci={},y0;function E6(){if(y0)return ci;y0=1,Object.defineProperty(ci,"__esModule",{value:!0}),ci.isBrowser=ci.isNode=ci.isReactNative=void 0;function r(){return typeof document>"u"&&typeof navigator<"u"&&navigator.product==="ReactNative"}ci.isReactNative=r;function e(){return typeof process<"u"&&typeof process.versions<"u"&&typeof process.versions.node<"u"}ci.isNode=e;function t(){return!r()&&!e()}return ci.isBrowser=t,ci}(function(r){Object.defineProperty(r,"__esModule",{value:!0});const e=x6;e.__exportStar(A6(),r),e.__exportStar(E6(),r)})(b0);function hi(r=3){const e=Date.now()*Math.pow(10,r),t=Math.floor(Math.random()*Math.pow(10,r));return e+t}function tn(r=6){return BigInt(hi(r))}function rn(r,e,t){return{id:t||hi(),jsonrpc:"2.0",method:r,params:e}}function df(r,e){return{id:r,jsonrpc:"2.0",result:e}}function lf(r,e,t){return{id:r,jsonrpc:"2.0",error:S6(e,t)}}function S6(r,e){return typeof r>"u"?g0(l0):(typeof r=="string"&&(r=Object.assign(Object.assign({},g0(ff)),{message:r})),typeof e<"u"&&(r.data=e),Zy(r.code)&&(r=e6(r.code)),r)}class M6{}class I6 extends M6{constructor(){super()}}class D6 extends I6{constructor(e){super()}}const O6="^wss?:";function R6(r){const e=r.match(new RegExp(/^\w+:/,"gi"));if(!(!e||!e.length))return e[0]}function P6(r,e){const t=R6(r);return typeof t>"u"?!1:new RegExp(e).test(t)}function w0(r){return P6(r,O6)}function N6(r){return new RegExp("wss?://localhost(:d{2,5})?").test(r)}function _0(r){return typeof r=="object"&&"id"in r&&"jsonrpc"in r&&r.jsonrpc==="2.0"}function pf(r){return _0(r)&&"method"in r}function Oa(r){return _0(r)&&(Yr(r)||_r(r))}function Yr(r){return"result"in r}function _r(r){return"error"in r}class C6 extends D6{constructor(e){super(e),this.events=new Ut.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,t){this.events.on(e,t)}once(e,t){this.events.once(e,t)}off(e,t){this.events.off(e,t)}removeListener(e,t){this.events.removeListener(e,t)}async request(e,t){return this.requestStrict(rn(e.method,e.params||[],e.id||tn().toString()),t)}async requestStrict(e,t){return new Promise(async(i,n)=>{if(!this.connection.connected)try{await this.open()}catch(s){n(s)}this.events.on(`${e.id}`,s=>{_r(s)?n(s.error):i(s.result)});try{await this.connection.send(e,t)}catch(s){n(s)}})}setConnection(e=this.connection){return e}onPayload(e){this.events.emit("payload",e),Oa(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 T6=()=>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"),F6=()=>typeof WebSocket<"u"||typeof global<"u"&&typeof global.WebSocket<"u"||typeof window<"u"&&typeof window.WebSocket<"u"||typeof self<"u"&&typeof self.WebSocket<"u",x0=r=>r.split("?")[0],A0=10,B6=T6();class L6{constructor(e){if(this.url=e,this.events=new Ut.exports.EventEmitter,this.registering=!1,!w0(e))throw new Error(`Provided URL is not compatible with WebSocket connection: ${e}`);this.url=e}get connected(){return typeof this.socket<"u"}get connecting(){return this.registering}on(e,t){this.events.on(e,t)}once(e,t){this.events.once(e,t)}off(e,t){this.events.off(e,t)}removeListener(e,t){this.events.removeListener(e,t)}async open(e=this.url){await this.register(e)}async close(){return new Promise((e,t)=>{if(typeof this.socket>"u"){t(new Error("Connection already closed"));return}this.socket.onclose=i=>{this.onClose(i),e()},this.socket.close()})}async send(e){typeof this.socket>"u"&&(this.socket=await this.register());try{this.socket.send(ki(e))}catch(t){this.onError(e.id,t)}}register(e=this.url){if(!w0(e))throw new Error(`Provided URL is not compatible with WebSocket connection: ${e}`);if(this.registering){const t=this.events.getMaxListeners();return(this.events.listenerCount("register_error")>=t||this.events.listenerCount("open")>=t)&&this.events.setMaxListeners(t+1),new Promise((i,n)=>{this.events.once("register_error",s=>{this.resetMaxListeners(),n(s)}),this.events.once("open",()=>{if(this.resetMaxListeners(),typeof this.socket>"u")return n(new Error("WebSocket connection is missing or invalid"));i(this.socket)})})}return this.url=e,this.registering=!0,new Promise((t,i)=>{const n=b0.isReactNative()?void 0:{rejectUnauthorized:!N6(e)},s=new B6(e,[],n);F6()?s.onerror=o=>{const f=o;i(this.emitError(f.error))}:s.on("error",o=>{i(this.emitError(o))}),s.onopen=()=>{this.onOpen(s),t(s)}})}onOpen(e){e.onmessage=t=>this.onPayload(t),e.onclose=t=>this.onClose(t),this.socket=e,this.registering=!1,this.events.emit("open")}onClose(e){this.socket=void 0,this.registering=!1,this.events.emit("close",e)}onPayload(e){if(typeof e.data>"u")return;const t=typeof e.data=="string"?ln(e.data):e.data;this.events.emit("payload",t)}onError(e,t){const i=this.parseError(t),n=i.message||i.toString(),s=lf(e,n);this.events.emit("payload",s)}parseError(e,t=this.url){return t6(e,x0(t),"WS")}resetMaxListeners(){this.events.getMaxListeners()>A0&&this.events.setMaxListeners(A0)}emitError(e){const t=this.parseError(new Error(e?.message||`WebSocket connection failed for host: ${x0(this.url)}`));return this.events.emit("register_error",t),t}}var gf={exports:{}};(function(r,e){var t=200,i="__lodash_hash_undefined__",n=1,s=2,o=9007199254740991,f="[object Arguments]",u="[object Array]",h="[object AsyncFunction]",g="[object Boolean]",y="[object Date]",I="[object Error]",M="[object Function]",D="[object GeneratorFunction]",N="[object Map]",k="[object Number]",K="[object Null]",C="[object Object]",j="[object Promise]",F="[object Proxy]",U="[object RegExp]",z="[object Set]",_="[object String]",R="[object Symbol]",J="[object Undefined]",Q="[object WeakMap]",P="[object ArrayBuffer]",p="[object DataView]",l="[object Float32Array]",a="[object Float64Array]",c="[object Int8Array]",b="[object Int16Array]",A="[object Int32Array]",E="[object Uint8Array]",x="[object Uint8ClampedArray]",d="[object Uint16Array]",w="[object Uint32Array]",v=/[\\^$.*+?()[\]{}|]/g,O=/^\[object .+?Constructor\]$/,W=/^(?:0|[1-9]\d*)$/,S={};S[l]=S[a]=S[c]=S[b]=S[A]=S[E]=S[x]=S[d]=S[w]=!0,S[f]=S[u]=S[P]=S[g]=S[p]=S[y]=S[I]=S[M]=S[N]=S[k]=S[C]=S[U]=S[z]=S[_]=S[Q]=!1;var H=typeof Nt=="object"&&Nt&&Nt.Object===Object&&Nt,T=typeof self=="object"&&self&&self.Object===Object&&self,q=H||T||Function("return this")(),B=e&&!e.nodeType&&e,m=B&&!0&&r&&!r.nodeType&&r,L=m&&m.exports===B,G=L&&H.process,Y=function(){try{return G&&G.binding&&G.binding("util")}catch{}}(),X=Y&&Y.isTypedArray;function ee($,V){for(var Z=-1,be=$==null?0:$.length,ut=0,Ge=[];++Z<be;){var bt=$[Z];V(bt,Z,$)&&(Ge[ut++]=bt)}return Ge}function we($,V){for(var Z=-1,be=V.length,ut=$.length;++Z<be;)$[ut+Z]=V[Z];return $}function Se($,V){for(var Z=-1,be=$==null?0:$.length;++Z<be;)if(V($[Z],Z,$))return!0;return!1}function he($,V){for(var Z=-1,be=Array($);++Z<$;)be[Z]=V(Z);return be}function Pe($){return function(V){return $(V)}}function xe($,V){return $.has(V)}function ae($,V){return $?.[V]}function ve($){var V=-1,Z=Array($.size);return $.forEach(function(be,ut){Z[++V]=[ut,be]}),Z}function le($,V){return function(Z){return $(V(Z))}}function ne($){var V=-1,Z=Array($.size);return $.forEach(function(be){Z[++V]=be}),Z}var ue=Array.prototype,fe=Function.prototype,te=Object.prototype,pe=q["__core-js_shared__"],_e=fe.toString,re=te.hasOwnProperty,Ae=function(){var $=/[^.]+$/.exec(pe&&pe.keys&&pe.keys.IE_PROTO||"");return $?"Symbol(src)_1."+$:""}(),Ee=te.toString,oe=RegExp("^"+_e.call(re).replace(v,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),De=L?q.Buffer:void 0,Me=q.Symbol,Oe=q.Uint8Array,We=te.propertyIsEnumerable,Qe=ue.splice,Ie=Me?Me.toStringTag:void 0,et=Object.getOwnPropertySymbols,tt=De?De.isBuffer:void 0,Ne=le(Object.keys,Object),Te=Bn(q,"DataView"),Ce=Bn(q,"Map"),de=Bn(q,"Promise"),Fe=Bn(q,"Set"),Be=Bn(q,"WeakMap"),ce=Bn(Object,"create"),Ue=fn(Te),$e=fn(Ce),me=fn(de),ze=fn(Fe),ke=fn(Be),ge=Me?Me.prototype:void 0,Le=ge?ge.valueOf:void 0;function Re($){var V=-1,Z=$==null?0:$.length;for(this.clear();++V<Z;){var be=$[V];this.set(be[0],be[1])}}function ye(){this.__data__=ce?ce(null):{},this.size=0}function Ke($){var V=this.has($)&&delete this.__data__[$];return this.size-=V?1:0,V}function it($){var V=this.__data__;if(ce){var Z=V[$];return Z===i?void 0:Z}return re.call(V,$)?V[$]:void 0}function qe($){var V=this.__data__;return ce?V[$]!==void 0:re.call(V,$)}function nt($,V){var Z=this.__data__;return this.size+=this.has($)?0:1,Z[$]=ce&&V===void 0?i:V,this}Re.prototype.clear=ye,Re.prototype.delete=Ke,Re.prototype.get=it,Re.prototype.has=qe,Re.prototype.set=nt;function Je($){var V=-1,Z=$==null?0:$.length;for(this.clear();++V<Z;){var be=$[V];this.set(be[0],be[1])}}function rt(){this.__data__=[],this.size=0}function ir($){var V=this.__data__,Z=Ta(V,$);if(Z<0)return!1;var be=V.length-1;return Z==be?V.pop():Qe.call(V,Z,1),--this.size,!0}function nr($){var V=this.__data__,Z=Ta(V,$);return Z<0?void 0:V[Z][1]}function sr($){return Ta(this.__data__,$)>-1}function ar($,V){var Z=this.__data__,be=Ta(Z,$);return be<0?(++this.size,Z.push([$,V])):Z[be][1]=V,this}Je.prototype.clear=rt,Je.prototype.delete=ir,Je.prototype.get=nr,Je.prototype.has=sr,Je.prototype.set=ar;function yt($){var V=-1,Z=$==null?0:$.length;for(this.clear();++V<Z;){var be=$[V];this.set(be[0],be[1])}}function di(){this.size=0,this.__data__={hash:new Re,map:new(Ce||Je),string:new Re}}function li($){var V=Fa(this,$).delete($);return this.size-=V?1:0,V}function pi($){return Fa(this,$).get($)}function gi($){return Fa(this,$).has($)}function bi($,V){var Z=Fa(this,$),be=Z.size;return Z.set($,V),this.size+=Z.size==be?0:1,this}yt.prototype.clear=di,yt.prototype.delete=li,yt.prototype.get=pi,yt.prototype.has=gi,yt.prototype.set=bi;function Er($){var V=-1,Z=$==null?0:$.length;for(this.__data__=new yt;++V<Z;)this.add($[V])}function vi($){return this.__data__.set($,i),this}function mi($){return this.__data__.has($)}Er.prototype.add=Er.prototype.push=vi,Er.prototype.has=mi;function jt($){var V=this.__data__=new Je($);this.size=V.size}function yi(){this.__data__=new Je,this.size=0}function wi($){var V=this.__data__,Z=V.delete($);return this.size=V.size,Z}function _i($){return this.__data__.get($)}function _s($){return this.__data__.has($)}function xs($,V){var Z=this.__data__;if(Z instanceof Je){var be=Z.__data__;if(!Ce||be.length<t-1)return be.push([$,V]),this.size=++Z.size,this;Z=this.__data__=new yt(be)}return Z.set($,V),this.size=Z.size,this}jt.prototype.clear=yi,jt.prototype.delete=wi,jt.prototype.get=_i,jt.prototype.has=_s,jt.prototype.set=xs;function h4($,V){var Z=Ba($),be=!Z&&S4($),ut=!Z&&!be&&Rf($),Ge=!Z&&!be&&!ut&&Td($),bt=Z||be||ut||Ge,Pt=bt?he($.length,String):[],qt=Pt.length;for(var dt in $)(V||re.call($,dt))&&!(bt&&(dt=="length"||ut&&(dt=="offset"||dt=="parent")||Ge&&(dt=="buffer"||dt=="byteLength"||dt=="byteOffset")||w4(dt,qt)))&&Pt.push(dt);return Pt}function Ta($,V){for(var Z=$.length;Z--;)if(Rd($[Z][0],V))return Z;return-1}function u4($,V,Z){var be=V($);return Ba($)?be:we(be,Z($))}function As($){return $==null?$===void 0?J:K:Ie&&Ie in Object($)?m4($):E4($)}function Md($){return Es($)&&As($)==f}function Id($,V,Z,be,ut){return $===V?!0:$==null||V==null||!Es($)&&!Es(V)?$!==$&&V!==V:d4($,V,Z,be,Id,ut)}function d4($,V,Z,be,ut,Ge){var bt=Ba($),Pt=Ba(V),qt=bt?u:Fi($),dt=Pt?u:Fi(V);qt=qt==f?C:qt,dt=dt==f?C:dt;var lr=qt==C,Br=dt==C,Ht=qt==dt;if(Ht&&Rf($)){if(!Rf(V))return!1;bt=!0,lr=!1}if(Ht&&!lr)return Ge||(Ge=new jt),bt||Td($)?Dd($,V,Z,be,ut,Ge):b4($,V,qt,Z,be,ut,Ge);if(!(Z&n)){var Sr=lr&&re.call($,"__wrapped__"),Mr=Br&&re.call(V,"__wrapped__");if(Sr||Mr){var Bi=Sr?$.value():$,xi=Mr?V.value():V;return Ge||(Ge=new jt),ut(Bi,xi,Z,be,Ge)}}return Ht?(Ge||(Ge=new jt),v4($,V,Z,be,ut,Ge)):!1}function l4($){if(!Cd($)||x4($))return!1;var V=Pd($)?oe:O;return V.test(fn($))}function p4($){return Es($)&&Nd($.length)&&!!S[As($)]}function g4($){if(!A4($))return Ne($);var V=[];for(var Z in Object($))re.call($,Z)&&Z!="constructor"&&V.push(Z);return V}function Dd($,V,Z,be,ut,Ge){var bt=Z&n,Pt=$.length,qt=V.length;if(Pt!=qt&&!(bt&&qt>Pt))return!1;var dt=Ge.get($);if(dt&&Ge.get(V))return dt==V;var lr=-1,Br=!0,Ht=Z&s?new Er:void 0;for(Ge.set($,V),Ge.set(V,$);++lr<Pt;){var Sr=$[lr],Mr=V[lr];if(be)var Bi=bt?be(Mr,Sr,lr,V,$,Ge):be(Sr,Mr,lr,$,V,Ge);if(Bi!==void 0){if(Bi)continue;Br=!1;break}if(Ht){if(!Se(V,function(xi,cn){if(!xe(Ht,cn)&&(Sr===xi||ut(Sr,xi,Z,be,Ge)))return Ht.push(cn)})){Br=!1;break}}else if(!(Sr===Mr||ut(Sr,Mr,Z,be,Ge))){Br=!1;break}}return Ge.delete($),Ge.delete(V),Br}function b4($,V,Z,be,ut,Ge,bt){switch(Z){case p:if($.byteLength!=V.byteLength||$.byteOffset!=V.byteOffset)return!1;$=$.buffer,V=V.buffer;case P:return!($.byteLength!=V.byteLength||!Ge(new Oe($),new Oe(V)));case g:case y:case k:return Rd(+$,+V);case I:return $.name==V.name&&$.message==V.message;case U:case _:return $==V+"";case N:var Pt=ve;case z:var qt=be&n;if(Pt||(Pt=ne),$.size!=V.size&&!qt)return!1;var dt=bt.get($);if(dt)return dt==V;be|=s,bt.set($,V);var lr=Dd(Pt($),Pt(V),be,ut,Ge,bt);return bt.delete($),lr;case R:if(Le)return Le.call($)==Le.call(V)}return!1}function v4($,V,Z,be,ut,Ge){var bt=Z&n,Pt=Od($),qt=Pt.length,dt=Od(V),lr=dt.length;if(qt!=lr&&!bt)return!1;for(var Br=qt;Br--;){var Ht=Pt[Br];if(!(bt?Ht in V:re.call(V,Ht)))return!1}var Sr=Ge.get($);if(Sr&&Ge.get(V))return Sr==V;var Mr=!0;Ge.set($,V),Ge.set(V,$);for(var Bi=bt;++Br<qt;){Ht=Pt[Br];var xi=$[Ht],cn=V[Ht];if(be)var Fd=bt?be(cn,xi,Ht,V,$,Ge):be(xi,cn,Ht,$,V,Ge);if(!(Fd===void 0?xi===cn||ut(xi,cn,Z,be,Ge):Fd)){Mr=!1;break}Bi||(Bi=Ht=="constructor")}if(Mr&&!Bi){var La=$.constructor,qa=V.constructor;La!=qa&&"constructor"in $&&"constructor"in V&&!(typeof La=="function"&&La instanceof La&&typeof qa=="function"&&qa instanceof qa)&&(Mr=!1)}return Ge.delete($),Ge.delete(V),Mr}function Od($){return u4($,D4,y4)}function Fa($,V){var Z=$.__data__;return _4(V)?Z[typeof V=="string"?"string":"hash"]:Z.map}function Bn($,V){var Z=ae($,V);return l4(Z)?Z:void 0}function m4($){var V=re.call($,Ie),Z=$[Ie];try{$[Ie]=void 0;var be=!0}catch{}var ut=Ee.call($);return be&&(V?$[Ie]=Z:delete $[Ie]),ut}var y4=et?function($){return $==null?[]:($=Object($),ee(et($),function(V){return We.call($,V)}))}:O4,Fi=As;(Te&&Fi(new Te(new ArrayBuffer(1)))!=p||Ce&&Fi(new Ce)!=N||de&&Fi(de.resolve())!=j||Fe&&Fi(new Fe)!=z||Be&&Fi(new Be)!=Q)&&(Fi=function($){var V=As($),Z=V==C?$.constructor:void 0,be=Z?fn(Z):"";if(be)switch(be){case Ue:return p;case $e:return N;case me:return j;case ze:return z;case ke:return Q}return V});function w4($,V){return V=V??o,!!V&&(typeof $=="number"||W.test($))&&$>-1&&$%1==0&&$<V}function _4($){var V=typeof $;return V=="string"||V=="number"||V=="symbol"||V=="boolean"?$!=="__proto__":$===null}function x4($){return!!Ae&&Ae in $}function A4($){var V=$&&$.constructor,Z=typeof V=="function"&&V.prototype||te;return $===Z}function E4($){return Ee.call($)}function fn($){if($!=null){try{return _e.call($)}catch{}try{return $+""}catch{}}return""}function Rd($,V){return $===V||$!==$&&V!==V}var S4=Md(function(){return arguments}())?Md:function($){return Es($)&&re.call($,"callee")&&!We.call($,"callee")},Ba=Array.isArray;function M4($){return $!=null&&Nd($.length)&&!Pd($)}var Rf=tt||R4;function I4($,V){return Id($,V)}function Pd($){if(!Cd($))return!1;var V=As($);return V==M||V==D||V==h||V==F}function Nd($){return typeof $=="number"&&$>-1&&$%1==0&&$<=o}function Cd($){var V=typeof $;return $!=null&&(V=="object"||V=="function")}function Es($){return $!=null&&typeof $=="object"}var Td=X?Pe(X):p4;function D4($){return M4($)?h4($):g4($)}function O4(){return[]}function R4(){return!1}r.exports=I4})(gf,gf.exports);var q6=gf.exports;const E0="wc",S0=2,Ra="core",Qr=`${E0}@2:${Ra}:`,U6={name:Ra,logger:"error"},$6={database:":memory:"},z6="crypto",M0="client_ed25519_seed",k6=ie.ONE_DAY,K6="keychain",j6="0.3",H6="messages",V6="0.3",I0=ie.SIX_HOURS,G6="publisher",D0="irn",W6="error",O0="wss://relay.walletconnect.org",J6="relayer",Ot={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"},Y6="_subscription",xr={payload:"payload",connect:"connect",disconnect:"disconnect",error:"error"},Q6=.1,bf="2.17.3",ht={link_mode:"link_mode",relay:"relay"},X6="0.3",Z6="WALLETCONNECT_CLIENT_ID",R0="WALLETCONNECT_LINK_MODE_APPS",dr={created:"subscription_created",deleted:"subscription_deleted",expired:"subscription_expired",disabled:"subscription_disabled",sync:"subscription_sync",resubscribed:"subscription_resubscribed"},ew="subscription",tw="0.3",rw=ie.FIVE_SECONDS*1e3,iw="pairing",nw="0.3",gs={wc_pairingDelete:{req:{ttl:ie.ONE_DAY,prompt:!1,tag:1e3},res:{ttl:ie.ONE_DAY,prompt:!1,tag:1001}},wc_pairingPing:{req:{ttl:ie.THIRTY_SECONDS,prompt:!1,tag:1002},res:{ttl:ie.THIRTY_SECONDS,prompt:!1,tag:1003}},unregistered_method:{req:{ttl:ie.ONE_DAY,prompt:!1,tag:0},res:{ttl:ie.ONE_DAY,prompt:!1,tag:0}}},nn={create:"pairing_create",expire:"pairing_expire",delete:"pairing_delete",ping:"pairing_ping"},Cr={created:"history_created",updated:"history_updated",deleted:"history_deleted",sync:"history_sync"},sw="history",aw="0.3",ow="expirer",Ar={created:"expirer_created",deleted:"expirer_deleted",expired:"expirer_expired",sync:"expirer_sync"},fw="0.3",cw="verify-api",hw="https://verify.walletconnect.com",P0="https://verify.walletconnect.org",bs=P0,uw=`${bs}/v3`,dw=[hw,P0],lw="echo",pw="https://echo.walletconnect.com",Xr={pairing_started:"pairing_started",pairing_uri_validation_success:"pairing_uri_validation_success",pairing_uri_not_expired:"pairing_uri_not_expired",store_new_pairing:"store_new_pairing",subscribing_pairing_topic:"subscribing_pairing_topic",subscribe_pairing_topic_success:"subscribe_pairing_topic_success",existing_pairing:"existing_pairing",pairing_not_expired:"pairing_not_expired",emit_inactive_pairing:"emit_inactive_pairing",emit_session_proposal:"emit_session_proposal",subscribing_to_pairing_topic:"subscribing_to_pairing_topic"},ui={no_wss_connection:"no_wss_connection",no_internet_connection:"no_internet_connection",malformed_pairing_uri:"malformed_pairing_uri",active_pairing_already_exists:"active_pairing_already_exists",subscribe_pairing_topic_failure:"subscribe_pairing_topic_failure",pairing_expired:"pairing_expired",proposal_expired:"proposal_expired",proposal_listener_not_found:"proposal_listener_not_found"},Tr={session_approve_started:"session_approve_started",proposal_not_expired:"proposal_not_expired",session_namespaces_validation_success:"session_namespaces_validation_success",create_session_topic:"create_session_topic",subscribing_session_topic:"subscribing_session_topic",subscribe_session_topic_success:"subscribe_session_topic_success",publishing_session_approve:"publishing_session_approve",session_approve_publish_success:"session_approve_publish_success",store_session:"store_session",publishing_session_settle:"publishing_session_settle",session_settle_publish_success:"session_settle_publish_success"},sn={no_internet_connection:"no_internet_connection",no_wss_connection:"no_wss_connection",proposal_expired:"proposal_expired",subscribe_session_topic_failure:"subscribe_session_topic_failure",session_approve_publish_failure:"session_approve_publish_failure",session_settle_publish_failure:"session_settle_publish_failure",session_approve_namespace_validation_failure:"session_approve_namespace_validation_failure",proposal_not_found:"proposal_not_found"},an={authenticated_session_approve_started:"authenticated_session_approve_started",authenticated_session_not_expired:"authenticated_session_not_expired",chains_caip2_compliant:"chains_caip2_compliant",chains_evm_compliant:"chains_evm_compliant",create_authenticated_session_topic:"create_authenticated_session_topic",cacaos_verified:"cacaos_verified",store_authenticated_session:"store_authenticated_session",subscribing_authenticated_session_topic:"subscribing_authenticated_session_topic",subscribe_authenticated_session_topic_success:"subscribe_authenticated_session_topic_success",publishing_authenticated_session_approve:"publishing_authenticated_session_approve",authenticated_session_approve_publish_success:"authenticated_session_approve_publish_success"},vs={no_internet_connection:"no_internet_connection",no_wss_connection:"no_wss_connection",missing_session_authenticate_request:"missing_session_authenticate_request",session_authenticate_request_expired:"session_authenticate_request_expired",chains_caip2_compliant_failure:"chains_caip2_compliant_failure",chains_evm_compliant_failure:"chains_evm_compliant_failure",invalid_cacao:"invalid_cacao",subscribe_authenticated_session_topic_failure:"subscribe_authenticated_session_topic_failure",authenticated_session_approve_publish_failure:"authenticated_session_approve_publish_failure",authenticated_session_pending_request_not_found:"authenticated_session_pending_request_not_found"},gw=.1,bw="event-client",vw=86400,mw="https://pulse.walletconnect.org/batch";function yw(r,e){if(r.length>=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),i=0;i<t.length;i++)t[i]=255;for(var n=0;n<r.length;n++){var s=r.charAt(n),o=s.charCodeAt(0);if(t[o]!==255)throw new TypeError(s+" is ambiguous");t[o]=n}var f=r.length,u=r.charAt(0),h=Math.log(f)/Math.log(256),g=Math.log(256)/Math.log(f);function y(D){if(D instanceof Uint8Array||(ArrayBuffer.isView(D)?D=new Uint8Array(D.buffer,D.byteOffset,D.byteLength):Array.isArray(D)&&(D=Uint8Array.from(D))),!(D instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(D.length===0)return"";for(var N=0,k=0,K=0,C=D.length;K!==C&&D[K]===0;)K++,N++;for(var j=(C-K)*g+1>>>0,F=new Uint8Array(j);K!==C;){for(var U=D[K],z=0,_=j-1;(U!==0||z<k)&&_!==-1;_--,z++)U+=256*F[_]>>>0,F[_]=U%f>>>0,U=U/f>>>0;if(U!==0)throw new Error("Non-zero carry");k=z,K++}for(var R=j-k;R!==j&&F[R]===0;)R++;for(var J=u.repeat(N);R<j;++R)J+=r.charAt(F[R]);return J}function I(D){if(typeof D!="string")throw new TypeError("Expected String");if(D.length===0)return new Uint8Array;var N=0;if(D[N]!==" "){for(var k=0,K=0;D[N]===u;)k++,N++;for(var C=(D.length-N)*h+1>>>0,j=new Uint8Array(C);D[N];){var F=t[D.charCodeAt(N)];if(F===255)return;for(var U=0,z=C-1;(F!==0||U<K)&&z!==-1;z--,U++)F+=f*j[z]>>>0,j[z]=F%256>>>0,F=F/256>>>0;if(F!==0)throw new Error("Non-zero carry");K=U,N++}if(D[N]!==" "){for(var _=C-K;_!==C&&j[_]===0;)_++;for(var R=new Uint8Array(k+(C-_)),J=k;_!==C;)R[J++]=j[_++];return R}}}function M(D){var N=I(D);if(N)return N;throw new Error(`Non-${e} character`)}return{encode:y,decodeUnsafe:I,decode:M}}var ww=yw,_w=ww;const N0=r=>{if(r instanceof Uint8Array&&r.constructor.name==="Uint8Array")return r;if(r instanceof ArrayBuffer)return new Uint8Array(r);if(ArrayBuffer.isView(r))return new Uint8Array(r.buffer,r.byteOffset,r.byteLength);throw new Error("Unknown type, must be binary type")},xw=r=>new TextEncoder().encode(r),Aw=r=>new TextDecoder().decode(r);class Ew{constructor(e,t,i){this.name=e,this.prefix=t,this.baseEncode=i}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}}class Sw{constructor(e,t,i){if(this.name=e,this.prefix=t,t.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=t.codePointAt(0),this.baseDecode=i}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return C0(this,e)}}class Mw{constructor(e){this.decoders=e}or(e){return C0(this,e)}decode(e){const t=e[0],i=this.decoders[t];if(i)return i.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}}const C0=(r,e)=>new Mw({...r.decoders||{[r.prefix]:r},...e.decoders||{[e.prefix]:e}});class Iw{constructor(e,t,i,n){this.name=e,this.prefix=t,this.baseEncode=i,this.baseDecode=n,this.encoder=new Ew(e,t,i),this.decoder=new Sw(e,t,n)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}}const Pa=({name:r,prefix:e,encode:t,decode:i})=>new Iw(r,e,t,i),ms=({prefix:r,name:e,alphabet:t})=>{const{encode:i,decode:n}=_w(t,e);return Pa({prefix:r,name:e,encode:i,decode:s=>N0(n(s))})},Dw=(r,e,t,i)=>{const n={};for(let g=0;g<e.length;++g)n[e[g]]=g;let s=r.length;for(;r[s-1]==="=";)--s;const o=new Uint8Array(s*t/8|0);let f=0,u=0,h=0;for(let g=0;g<s;++g){const y=n[r[g]];if(y===void 0)throw new SyntaxError(`Non-${i} character`);u=u<<t|y,f+=t,f>=8&&(f-=8,o[h++]=255&u>>f)}if(f>=t||255&u<<8-f)throw new SyntaxError("Unexpected end of data");return o},Ow=(r,e,t)=>{const i=e[e.length-1]==="=",n=(1<<t)-1;let s="",o=0,f=0;for(let u=0;u<r.length;++u)for(f=f<<8|r[u],o+=8;o>t;)o-=t,s+=e[n&f>>o];if(o&&(s+=e[n&f<<t-o]),i)for(;s.length*t&7;)s+="=";return s},Lt=({name:r,prefix:e,bitsPerChar:t,alphabet:i})=>Pa({prefix:e,name:r,encode(n){return Ow(n,i,t)},decode(n){return Dw(n,i,t,r)}}),Rw=Pa({prefix:"\0",name:"identity",encode:r=>Aw(r),decode:r=>xw(r)});var Pw=Object.freeze({__proto__:null,identity:Rw});const Nw=Lt({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var Cw=Object.freeze({__proto__:null,base2:Nw});const Tw=Lt({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var Fw=Object.freeze({__proto__:null,base8:Tw});const Bw=ms({prefix:"9",name:"base10",alphabet:"0123456789"});var Lw=Object.freeze({__proto__:null,base10:Bw});const qw=Lt({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),Uw=Lt({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var $w=Object.freeze({__proto__:null,base16:qw,base16upper:Uw});const zw=Lt({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),kw=Lt({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),Kw=Lt({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),jw=Lt({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),Hw=Lt({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),Vw=Lt({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),Gw=Lt({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),Ww=Lt({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),Jw=Lt({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var Yw=Object.freeze({__proto__:null,base32:zw,base32upper:kw,base32pad:Kw,base32padupper:jw,base32hex:Hw,base32hexupper:Vw,base32hexpad:Gw,base32hexpadupper:Ww,base32z:Jw});const Qw=ms({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),Xw=ms({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var Zw=Object.freeze({__proto__:null,base36:Qw,base36upper:Xw});const e5=ms({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),t5=ms({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var r5=Object.freeze({__proto__:null,base58btc:e5,base58flickr:t5});const i5=Lt({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),n5=Lt({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),s5=Lt({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),a5=Lt({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var o5=Object.freeze({__proto__:null,base64:i5,base64pad:n5,base64url:s5,base64urlpad:a5});const T0=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}"),f5=T0.reduce((r,e,t)=>(r[t]=e,r),[]),c5=T0.reduce((r,e,t)=>(r[e.codePointAt(0)]=t,r),[]);function h5(r){return r.reduce((e,t)=>(e+=f5[t],e),"")}function u5(r){const e=[];for(const t of r){const i=c5[t.codePointAt(0)];if(i===void 0)throw new Error(`Non-base256emoji character: ${t}`);e.push(i)}return new Uint8Array(e)}const d5=Pa({prefix:"\u{1F680}",name:"base256emoji",encode:h5,decode:u5});var l5=Object.freeze({__proto__:null,base256emoji:d5}),p5=B0,F0=128,g5=127,b5=~g5,v5=Math.pow(2,31);function B0(r,e,t){e=e||[],t=t||0;for(var i=t;r>=v5;)e[t++]=r&255|F0,r/=128;for(;r&b5;)e[t++]=r&255|F0,r>>>=7;return e[t]=r|0,B0.bytes=t-i+1,e}var m5=vf,y5=128,L0=127;function vf(r,i){var t=0,i=i||0,n=0,s=i,o,f=r.length;do{if(s>=f)throw vf.bytes=0,new RangeError("Could not decode varint");o=r[s++],t+=n<28?(o&L0)<<n:(o&L0)*Math.pow(2,n),n+=7}while(o>=y5);return vf.bytes=s-i,t}var w5=Math.pow(2,7),_5=Math.pow(2,14),x5=Math.pow(2,21),A5=Math.pow(2,28),E5=Math.pow(2,35),S5=Math.pow(2,42),M5=Math.pow(2,49),I5=Math.pow(2,56),D5=Math.pow(2,63),O5=function(r){return r<w5?1:r<_5?2:r<x5?3:r<A5?4:r<E5?5:r<S5?6:r<M5?7:r<I5?8:r<D5?9:10},R5={encode:p5,decode:m5,encodingLength:O5},q0=R5;const U0=(r,e,t=0)=>(q0.encode(r,e,t),e),$0=r=>q0.encodingLength(r),mf=(r,e)=>{const t=e.byteLength,i=$0(r),n=i+$0(t),s=new Uint8Array(n+t);return U0(r,s,0),U0(t,s,i),s.set(e,n),new P5(r,t,e,s)};class P5{constructor(e,t,i,n){this.code=e,this.size=t,this.digest=i,this.bytes=n}}const z0=({name:r,code:e,encode:t})=>new N5(r,e,t);class N5{constructor(e,t,i){this.name=e,this.code=t,this.encode=i}digest(e){if(e instanceof Uint8Array){const t=this.encode(e);return t instanceof Uint8Array?mf(this.code,t):t.then(i=>mf(this.code,i))}else throw Error("Unknown type, must be binary type")}}const k0=r=>async e=>new Uint8Array(await crypto.subtle.digest(r,e)),C5=z0({name:"sha2-256",code:18,encode:k0("SHA-256")}),T5=z0({name:"sha2-512",code:19,encode:k0("SHA-512")});var F5=Object.freeze({__proto__:null,sha256:C5,sha512:T5});const K0=0,B5="identity",j0=N0;var L5=Object.freeze({__proto__:null,identity:{code:K0,name:B5,encode:j0,digest:r=>mf(K0,j0(r))}});new TextEncoder,new TextDecoder;const H0={...Pw,...Cw,...Fw,...Lw,...$w,...Yw,...Zw,...r5,...o5,...l5};({...F5,...L5});function q5(r=0){return globalThis.Buffer!=null&&globalThis.Buffer.allocUnsafe!=null?globalThis.Buffer.allocUnsafe(r):new Uint8Array(r)}function V0(r,e,t,i){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:i}}}const G0=V0("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),yf=V0("ascii","a",r=>{let e="a";for(let t=0;t<r.length;t++)e+=String.fromCharCode(r[t]);return e},r=>{r=r.substring(1);const e=q5(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),U5={utf8:G0,"utf-8":G0,hex:H0.base16,latin1:yf,ascii:yf,binary:yf,...H0};function $5(r,e="utf8"){const t=U5[e];if(!t)throw new Error(`Unsupported encoding "${e}"`);return(e==="utf8"||e==="utf-8")&&globalThis.Buffer!=null&&globalThis.Buffer.from!=null?globalThis.Buffer.from(r,"utf8"):t.decoder.decode(`${t.prefix}${r}`)}class z5{constructor(e,t){this.core=e,this.logger=t,this.keychain=new Map,this.name=K6,this.version=j6,this.initialized=!1,this.storagePrefix=Qr,this.init=async()=>{if(!this.initialized){const i=await this.getKeyChain();typeof i<"u"&&(this.keychain=i),this.initialized=!0}},this.has=i=>(this.isInitialized(),this.keychain.has(i)),this.set=async(i,n)=>{this.isInitialized(),this.keychain.set(i,n),await this.persist()},this.get=i=>{this.isInitialized();const n=this.keychain.get(i);if(typeof n>"u"){const{message:s}=se("NO_MATCHING_KEY",`${this.name}: ${i}`);throw new Error(s)}return n},this.del=async i=>{this.isInitialized(),this.keychain.delete(i),await this.persist()},this.core=e,this.logger=Vt(t,this.name)}get context(){return Xt(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}async setKeyChain(e){await this.core.storage.setItem(this.storageKey,Nu(e))}async getKeyChain(){const e=await this.core.storage.getItem(this.storageKey);return typeof e<"u"?Cu(e):void 0}async persist(){await this.setKeyChain(this.keychain)}isInitialized(){if(!this.initialized){const{message:e}=se("NOT_INITIALIZED",this.name);throw new Error(e)}}}class k5{constructor(e,t,i){this.core=e,this.logger=t,this.name=z6,this.randomSessionIdentifier=nf(),this.initialized=!1,this.init=async()=>{this.initialized||(await this.keychain.init(),this.initialized=!0)},this.hasKeys=n=>(this.isInitialized(),this.keychain.has(n)),this.getClientId=async()=>{this.isInitialized();const n=await this.getClientSeed(),s=Hc(n);return jc(s.publicKey)},this.generateKeyPair=()=>{this.isInitialized();const n=Vm();return this.setPrivateKey(n.publicKey,n.privateKey)},this.signJWT=async n=>{this.isInitialized();const s=await this.getClientSeed(),o=Hc(s),f=this.randomSessionIdentifier;return await Gg(f,n,k6,o)},this.generateSharedKey=(n,s,o)=>{this.isInitialized();const f=this.getPrivateKey(n),u=Gm(f,s);return this.setSymKey(u,o)},this.setSymKey=async(n,s)=>{this.isInitialized();const o=s||Aa(n);return await this.keychain.set(o,n),o},this.deleteKeyPair=async n=>{this.isInitialized(),await this.keychain.del(n)},this.deleteSymKey=async n=>{this.isInitialized(),await this.keychain.del(n)},this.encode=async(n,s,o)=>{this.isInitialized();const f=Qu(o),u=ki(s);if(Zu(f))return Jm(u,o?.encoding);if(Xu(f)){const I=f.senderPublicKey,M=f.receiverPublicKey;n=await this.generateSharedKey(I,M)}const h=this.getSymKey(n),{type:g,senderPublicKey:y}=f;return Wm({type:g,symKey:h,message:u,senderPublicKey:y,encoding:o?.encoding})},this.decode=async(n,s,o)=>{this.isInitialized();const f=Xm(s,o);if(Zu(f)){const u=Qm(s,o?.encoding);return ln(u)}if(Xu(f)){const u=f.receiverPublicKey,h=f.senderPublicKey;n=await this.generateSharedKey(u,h)}try{const u=this.getSymKey(n),h=Ym({symKey:u,encoded:s,encoding:o?.encoding});return ln(h)}catch(u){this.logger.error(`Failed to decode message from topic: '${n}', clientId: '${await this.getClientId()}'`),this.logger.error(u)}},this.getPayloadType=(n,s=Ti)=>{const o=hs({encoded:n,encoding:s});return en(o.type)},this.getPayloadSenderPublicKey=(n,s=Ti)=>{const o=hs({encoded:n,encoding:s});return o.senderPublicKey?At(o.senderPublicKey,Jt):void 0},this.core=e,this.logger=Vt(t,this.name),this.keychain=i||new z5(this.core,this.logger)}get context(){return Xt(this.logger)}async setPrivateKey(e,t){return await this.keychain.set(e,t),e}getPrivateKey(e){return this.keychain.get(e)}async getClientSeed(){let e="";try{e=this.keychain.get(M0)}catch{e=nf(),await this.keychain.set(M0,e)}return $5(e,"base16")}getSymKey(e){return this.keychain.get(e)}isInitialized(){if(!this.initialized){const{message:e}=se("NOT_INITIALIZED",this.name);throw new Error(e)}}}class K5 extends Op{constructor(e,t){super(e,t),this.logger=e,this.core=t,this.messages=new Map,this.name=H6,this.version=V6,this.initialized=!1,this.storagePrefix=Qr,this.init=async()=>{if(!this.initialized){this.logger.trace("Initialized");try{const i=await this.getRelayerMessages();typeof i<"u"&&(this.messages=i),this.logger.debug(`Successfully Restored records for ${this.name}`),this.logger.trace({type:"method",method:"restore",size:this.messages.size})}catch(i){this.logger.debug(`Failed to Restore records for ${this.name}`),this.logger.error(i)}finally{this.initialized=!0}}},this.set=async(i,n)=>{this.isInitialized();const s=oi(n);let o=this.messages.get(i);return typeof o>"u"&&(o={}),typeof o[s]<"u"||(o[s]=n,this.messages.set(i,o),await this.persist()),s},this.get=i=>{this.isInitialized();let n=this.messages.get(i);return typeof n>"u"&&(n={}),n},this.has=(i,n)=>{this.isInitialized();const s=this.get(i),o=oi(n);return typeof s[o]<"u"},this.del=async i=>{this.isInitialized(),this.messages.delete(i),await this.persist()},this.logger=Vt(e,this.name),this.core=t}get context(){return Xt(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}async setRelayerMessages(e){await this.core.storage.setItem(this.storageKey,Nu(e))}async getRelayerMessages(){const e=await this.core.storage.getItem(this.storageKey);return typeof e<"u"?Cu(e):void 0}async persist(){await this.setRelayerMessages(this.messages)}isInitialized(){if(!this.initialized){const{message:e}=se("NOT_INITIALIZED",this.name);throw new Error(e)}}}var j5=Object.defineProperty,H5=Object.defineProperties,V5=Object.getOwnPropertyDescriptors,W0=Object.getOwnPropertySymbols,G5=Object.prototype.hasOwnProperty,W5=Object.prototype.propertyIsEnumerable,J0=(r,e,t)=>e in r?j5(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Y0=(r,e)=>{for(var t in e||(e={}))G5.call(e,t)&&J0(r,t,e[t]);if(W0)for(var t of W0(e))W5.call(e,t)&&J0(r,t,e[t]);return r},Q0=(r,e)=>H5(r,V5(e));class J5 extends Rp{constructor(e,t){super(e,t),this.relayer=e,this.logger=t,this.events=new Ut.exports.EventEmitter,this.name=G6,this.queue=new Map,this.publishTimeout=ie.toMiliseconds(ie.ONE_MINUTE),this.initialPublishTimeout=ie.toMiliseconds(ie.ONE_SECOND*15),this.needsTransportRestart=!1,this.publish=async(i,n,s)=>{var o;this.logger.debug("Publishing Payload"),this.logger.trace({type:"method",method:"publish",params:{topic:i,message:n,opts:s}});const f=s?.ttl||I0,u=Ea(s),h=s?.prompt||!1,g=s?.tag||0,y=s?.id||tn().toString(),I={topic:i,message:n,opts:{ttl:f,relay:u,prompt:h,tag:g,id:y,attestation:s?.attestation}},M=`Failed to publish payload, please try again. id:${y} tag:${g}`;try{const D=new Promise(async N=>{const k=({id:C})=>{I.opts.id===C&&(this.removeRequestFromQueue(C),this.relayer.events.removeListener(Ot.publish,k),N(I))};this.relayer.events.on(Ot.publish,k);const K=Ni(new Promise((C,j)=>{this.rpcPublish({topic:i,message:n,ttl:f,prompt:h,tag:g,id:y,attestation:s?.attestation}).then(C).catch(F=>{this.logger.warn(F,F?.message),j(F)})}),this.initialPublishTimeout,`Failed initial publish, retrying.... id:${y} tag:${g}`);try{await K,this.events.removeListener(Ot.publish,k)}catch(C){this.queue.set(y,Q0(Y0({},I),{attempt:1})),this.logger.warn(C,C?.message)}});this.logger.trace({type:"method",method:"publish",params:{id:y,topic:i,message:n,opts:s}}),await Ni(D,this.publishTimeout,M)}catch(D){if(this.logger.debug("Failed to Publish Payload"),this.logger.error(D),(o=s?.internal)!=null&&o.throwOnFailedPublish)throw D}finally{this.queue.delete(y)}},this.on=(i,n)=>{this.events.on(i,n)},this.once=(i,n)=>{this.events.once(i,n)},this.off=(i,n)=>{this.events.off(i,n)},this.removeListener=(i,n)=>{this.events.removeListener(i,n)},this.relayer=e,this.logger=Vt(t,this.name),this.registerEventListeners()}get context(){return Xt(this.logger)}async rpcPublish(e){var t,i,n,s;const{topic:o,message:f,ttl:u=I0,prompt:h,tag:g,id:y,attestation:I}=e,M={method:us(Ea().protocol).publish,params:{topic:o,message:f,ttl:u,prompt:h,tag:g,attestation:I},id:y};Yt((t=M.params)==null?void 0:t.prompt)&&((i=M.params)==null||delete i.prompt),Yt((n=M.params)==null?void 0:n.tag)&&((s=M.params)==null||delete s.tag),this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"message",direction:"outgoing",request:M});const D=await this.relayer.request(M);return this.relayer.events.emit(Ot.publish,e),this.logger.debug("Successfully Published Payload"),D}removeRequestFromQueue(e){this.queue.delete(e)}checkQueue(){this.queue.forEach(async(e,t)=>{const i=e.attempt+1;this.queue.set(t,Q0(Y0({},e),{attempt:i}));const{topic:n,message:s,opts:o,attestation:f}=e;this.logger.warn({},`Publisher: queue->publishing: ${e.opts.id}, tag: ${e.opts.tag}, attempt: ${i}`),await this.rpcPublish({topic:n,message:s,ttl:o.ttl,prompt:o.prompt,tag:o.tag,id:o.id,attestation:f}),this.logger.warn({},`Publisher: queue->published: ${e.opts.id}`)})}registerEventListeners(){this.relayer.core.heartbeat.on(dn.pulse,()=>{if(this.needsTransportRestart){this.needsTransportRestart=!1,this.relayer.events.emit(Ot.connection_stalled);return}this.checkQueue()}),this.relayer.on(Ot.message_ack,e=>{this.removeRequestFromQueue(e.id.toString())})}}class Y5{constructor(){this.map=new Map,this.set=(e,t)=>{const i=this.get(e);this.exists(e,t)||this.map.set(e,[...i,t])},this.get=e=>this.map.get(e)||[],this.exists=(e,t)=>this.get(e).includes(t),this.delete=(e,t)=>{if(typeof t>"u"){this.map.delete(e);return}if(!this.map.has(e))return;const i=this.get(e);if(!this.exists(e,t))return;const n=i.filter(s=>s!==t);if(!n.length){this.map.delete(e);return}this.map.set(e,n)},this.clear=()=>{this.map.clear()}}get topics(){return Array.from(this.map.keys())}}var Q5=Object.defineProperty,X5=Object.defineProperties,Z5=Object.getOwnPropertyDescriptors,X0=Object.getOwnPropertySymbols,e8=Object.prototype.hasOwnProperty,t8=Object.prototype.propertyIsEnumerable,Z0=(r,e,t)=>e in r?Q5(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,ys=(r,e)=>{for(var t in e||(e={}))e8.call(e,t)&&Z0(r,t,e[t]);if(X0)for(var t of X0(e))t8.call(e,t)&&Z0(r,t,e[t]);return r},wf=(r,e)=>X5(r,Z5(e));class r8 extends Cp{constructor(e,t){super(e,t),this.relayer=e,this.logger=t,this.subscriptions=new Map,this.topicMap=new Y5,this.events=new Ut.exports.EventEmitter,this.name=ew,this.version=tw,this.pending=new Map,this.cached=[],this.initialized=!1,this.pendingSubscriptionWatchLabel="pending_sub_watch_label",this.pollingInterval=20,this.storagePrefix=Qr,this.subscribeTimeout=ie.toMiliseconds(ie.ONE_MINUTE),this.initialSubscribeTimeout=ie.toMiliseconds(ie.ONE_SECOND*15),this.batchSubscribeTopicsLimit=500,this.init=async()=>{this.initialized||(this.logger.trace("Initialized"),this.registerEventListeners(),this.clientId=await this.relayer.core.crypto.getClientId(),await this.restore()),this.initialized=!0},this.subscribe=async(i,n)=>{this.isInitialized(),this.logger.debug("Subscribing Topic"),this.logger.trace({type:"method",method:"subscribe",params:{topic:i,opts:n}});try{const s=Ea(n),o={topic:i,relay:s,transportType:n?.transportType};this.pending.set(i,o);const f=await this.rpcSubscribe(i,s,n);return typeof f=="string"&&(this.onSubscribe(f,o),this.logger.debug("Successfully Subscribed Topic"),this.logger.trace({type:"method",method:"subscribe",params:{topic:i,opts:n}})),f}catch(s){throw this.logger.debug("Failed to Subscribe Topic"),this.logger.error(s),s}},this.unsubscribe=async(i,n)=>{await this.restartToComplete(),this.isInitialized(),typeof n?.id<"u"?await this.unsubscribeById(i,n.id,n):await this.unsubscribeByTopic(i,n)},this.isSubscribed=async i=>{if(this.topics.includes(i))return!0;const n=`${this.pendingSubscriptionWatchLabel}_${i}`;return await new Promise((s,o)=>{const f=new ie.Watch;f.start(n);const u=setInterval(()=>{(!this.pending.has(i)&&this.topics.includes(i)||this.cached.some(h=>h.topic===i))&&(clearInterval(u),f.stop(n),s(!0)),f.elapsed(n)>=rw&&(clearInterval(u),f.stop(n),o(new Error("Subscription resolution timeout")))},this.pollingInterval)}).catch(()=>!1)},this.on=(i,n)=>{this.events.on(i,n)},this.once=(i,n)=>{this.events.once(i,n)},this.off=(i,n)=>{this.events.off(i,n)},this.removeListener=(i,n)=>{this.events.removeListener(i,n)},this.start=async()=>{await this.onConnect()},this.stop=async()=>{await this.onDisconnect()},this.restart=async()=>{await this.restore(),await this.onRestart()},this.checkPending=async()=>{if(this.pending.size===0&&(!this.initialized||!this.relayer.connected))return;const i=[];this.pending.forEach(n=>{i.push(n)}),await this.batchSubscribe(i)},this.registerEventListeners=()=>{this.relayer.core.heartbeat.on(dn.pulse,async()=>{await this.checkPending()}),this.events.on(dr.created,async i=>{const n=dr.created;this.logger.info(`Emitting ${n}`),this.logger.debug({type:"event",event:n,data:i}),await this.persist()}),this.events.on(dr.deleted,async i=>{const n=dr.deleted;this.logger.info(`Emitting ${n}`),this.logger.debug({type:"event",event:n,data:i}),await this.persist()})},this.relayer=e,this.logger=Vt(t,this.name),this.clientId=""}get context(){return Xt(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.relayer.core.customStoragePrefix+"//"+this.name}get length(){return this.subscriptions.size}get ids(){return Array.from(this.subscriptions.keys())}get values(){return Array.from(this.subscriptions.values())}get topics(){return this.topicMap.topics}hasSubscription(e,t){let i=!1;try{i=this.getSubscription(e).topic===t}catch{}return i}reset(){this.cached=[],this.initialized=!0}onDisable(){this.cached=this.values,this.subscriptions.clear(),this.topicMap.clear()}async unsubscribeByTopic(e,t){const i=this.topicMap.get(e);await Promise.all(i.map(async n=>await this.unsubscribeById(e,n,t)))}async unsubscribeById(e,t,i){this.logger.debug("Unsubscribing Topic"),this.logger.trace({type:"method",method:"unsubscribe",params:{topic:e,id:t,opts:i}});try{const n=Ea(i);await this.rpcUnsubscribe(e,t,n);const s=ct("USER_DISCONNECTED",`${this.name}, ${e}`);await this.onUnsubscribe(e,t,s),this.logger.debug("Successfully Unsubscribed Topic"),this.logger.trace({type:"method",method:"unsubscribe",params:{topic:e,id:t,opts:i}})}catch(n){throw this.logger.debug("Failed to Unsubscribe Topic"),this.logger.error(n),n}}async rpcSubscribe(e,t,i){var n;i?.transportType===ht.relay&&await this.restartToComplete();const s={method:us(t.protocol).subscribe,params:{topic:e}};this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"payload",direction:"outgoing",request:s});const o=(n=i?.internal)==null?void 0:n.throwOnFailedPublish;try{const f=this.getSubscriptionId(e);if(i?.transportType===ht.link_mode)return setTimeout(()=>{(this.relayer.connected||this.relayer.connecting)&&this.relayer.request(s).catch(g=>this.logger.warn(g))},ie.toMiliseconds(ie.ONE_SECOND)),f;const u=new Promise(async g=>{const y=I=>{I.topic===e&&(this.events.removeListener(dr.created,y),g(I.id))};this.events.on(dr.created,y);try{const I=await Ni(new Promise((M,D)=>{this.relayer.request(s).catch(N=>{this.logger.warn(N,N?.message),D(N)}).then(M)}),this.initialSubscribeTimeout,`Subscribing to ${e} failed, please try again`);this.events.removeListener(dr.created,y),g(I)}catch{}}),h=await Ni(u,this.subscribeTimeout,`Subscribing to ${e} failed, please try again`);if(!h&&o)throw new Error(`Subscribing to ${e} failed, please try again`);return h?f:null}catch(f){if(this.logger.debug("Outgoing Relay Subscribe Payload stalled"),this.relayer.events.emit(Ot.connection_stalled),o)throw f}return null}async rpcBatchSubscribe(e){if(!e.length)return;const t=e[0].relay,i={method:us(t.protocol).batchSubscribe,params:{topics:e.map(n=>n.topic)}};this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"payload",direction:"outgoing",request:i});try{await await Ni(new Promise(n=>{this.relayer.request(i).catch(s=>this.logger.warn(s)).then(n)}),this.subscribeTimeout,"rpcBatchSubscribe failed, please try again")}catch{this.relayer.events.emit(Ot.connection_stalled)}}async rpcBatchFetchMessages(e){if(!e.length)return;const t=e[0].relay,i={method:us(t.protocol).batchFetchMessages,params:{topics:e.map(s=>s.topic)}};this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"payload",direction:"outgoing",request:i});let n;try{n=await await Ni(new Promise((s,o)=>{this.relayer.request(i).catch(f=>{this.logger.warn(f),o(f)}).then(s)}),this.subscribeTimeout,"rpcBatchFetchMessages failed, please try again")}catch{this.relayer.events.emit(Ot.connection_stalled)}return n}rpcUnsubscribe(e,t,i){const n={method:us(i.protocol).unsubscribe,params:{topic:e,id:t}};return this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"payload",direction:"outgoing",request:n}),this.relayer.request(n)}onSubscribe(e,t){this.setSubscription(e,wf(ys({},t),{id:e})),this.pending.delete(t.topic)}onBatchSubscribe(e){e.length&&e.forEach(t=>{this.setSubscription(t.id,ys({},t)),this.pending.delete(t.topic)})}async onUnsubscribe(e,t,i){this.events.removeAllListeners(t),this.hasSubscription(t,e)&&this.deleteSubscription(t,i),await this.relayer.messages.del(e)}async setRelayerSubscriptions(e){await this.relayer.core.storage.setItem(this.storageKey,e)}async getRelayerSubscriptions(){return await this.relayer.core.storage.getItem(this.storageKey)}setSubscription(e,t){this.logger.debug("Setting subscription"),this.logger.trace({type:"method",method:"setSubscription",id:e,subscription:t}),this.addSubscription(e,t)}addSubscription(e,t){this.subscriptions.set(e,ys({},t)),this.topicMap.set(t.topic,e),this.events.emit(dr.created,t)}getSubscription(e){this.logger.debug("Getting subscription"),this.logger.trace({type:"method",method:"getSubscription",id:e});const t=this.subscriptions.get(e);if(!t){const{message:i}=se("NO_MATCHING_KEY",`${this.name}: ${e}`);throw new Error(i)}return t}deleteSubscription(e,t){this.logger.debug("Deleting subscription"),this.logger.trace({type:"method",method:"deleteSubscription",id:e,reason:t});const i=this.getSubscription(e);this.subscriptions.delete(e),this.topicMap.delete(i.topic,e),this.events.emit(dr.deleted,wf(ys({},i),{reason:t}))}async persist(){await this.setRelayerSubscriptions(this.values),this.events.emit(dr.sync)}async onRestart(){if(this.cached.length){const e=[...this.cached],t=Math.ceil(this.cached.length/this.batchSubscribeTopicsLimit);for(let i=0;i<t;i++){const n=e.splice(0,this.batchSubscribeTopicsLimit);await this.batchSubscribe(n)}}this.events.emit(dr.resubscribed)}async restore(){try{const e=await this.getRelayerSubscriptions();if(typeof e>"u"||!e.length)return;if(this.subscriptions.size){const{message:t}=se("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(t),this.logger.error(`${this.name}: ${JSON.stringify(this.values)}`),new Error(t)}this.cached=e,this.logger.debug(`Successfully Restored subscriptions for ${this.name}`),this.logger.trace({type:"method",method:"restore",subscriptions:this.values})}catch(e){this.logger.debug(`Failed to Restore subscriptions for ${this.name}`),this.logger.error(e)}}async batchSubscribe(e){e.length&&(await this.rpcBatchSubscribe(e),this.onBatchSubscribe(e.map(t=>wf(ys({},t),{id:this.getSubscriptionId(t.topic)}))))}async batchFetchMessages(e){if(!e.length)return;this.logger.trace(`Fetching batch messages for ${e.length} subscriptions`);const t=await this.rpcBatchFetchMessages(e);t&&t.messages&&(await _m(ie.toMiliseconds(ie.ONE_SECOND)),await this.relayer.handleBatchMessageEvents(t.messages))}async onConnect(){await this.restart(),this.reset()}onDisconnect(){this.onDisable()}isInitialized(){if(!this.initialized){const{message:e}=se("NOT_INITIALIZED",this.name);throw new Error(e)}}async restartToComplete(){!this.relayer.connected&&!this.relayer.connecting&&await this.relayer.transportOpen()}getSubscriptionId(e){return oi(e+this.clientId)}}var i8=Object.defineProperty,ed=Object.getOwnPropertySymbols,n8=Object.prototype.hasOwnProperty,s8=Object.prototype.propertyIsEnumerable,td=(r,e,t)=>e in r?i8(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,rd=(r,e)=>{for(var t in e||(e={}))n8.call(e,t)&&td(r,t,e[t]);if(ed)for(var t of ed(e))s8.call(e,t)&&td(r,t,e[t]);return r};class a8 extends Pp{constructor(e){super(e),this.protocol="wc",this.version=2,this.events=new Ut.exports.EventEmitter,this.name=J6,this.transportExplicitlyClosed=!1,this.initialized=!1,this.connectionAttemptInProgress=!1,this.hasExperiencedNetworkDisruption=!1,this.heartBeatTimeout=ie.toMiliseconds(ie.THIRTY_SECONDS+ie.FIVE_SECONDS),this.requestsInFlight=[],this.connectTimeout=ie.toMiliseconds(ie.ONE_SECOND*15),this.request=async t=>{var i,n;this.logger.debug("Publishing Request Payload");const s=t.id||tn().toString();await this.toEstablishConnection();try{this.logger.trace({id:s,method:t.method,topic:(i=t.params)==null?void 0:i.topic},"relayer.request - publishing...");const o=`${s}:${((n=t.params)==null?void 0:n.tag)||""}`;this.requestsInFlight.push(o);const f=await this.provider.request(t);return this.requestsInFlight=this.requestsInFlight.filter(u=>u!==o),f}catch(o){throw this.logger.debug(`Failed to Publish Request: ${s}`),o}},this.resetPingTimeout=()=>{if(wa())try{clearTimeout(this.pingTimeout),this.pingTimeout=setTimeout(()=>{var t,i,n;this.logger.debug({},"pingTimeout: Connection stalled, terminating..."),(n=(i=(t=this.provider)==null?void 0:t.connection)==null?void 0:i.socket)==null||n.terminate()},this.heartBeatTimeout)}catch(t){this.logger.warn(t,t?.message)}},this.onPayloadHandler=t=>{this.onProviderPayload(t),this.resetPingTimeout()},this.onConnectHandler=()=>{this.logger.warn({},"Relayer connected \u{1F6DC}"),this.startPingTimeout(),this.events.emit(Ot.connect)},this.onDisconnectHandler=()=>{this.logger.warn({},"Relayer disconnected \u{1F6D1}"),this.requestsInFlight=[],this.onProviderDisconnect()},this.onProviderErrorHandler=t=>{this.logger.fatal(t,`Fatal socket error: ${t?.message}`),this.events.emit(Ot.error,t),this.logger.fatal("Fatal socket error received, closing transport"),this.transportClose()},this.registerProviderListeners=()=>{this.provider.on(xr.payload,this.onPayloadHandler),this.provider.on(xr.connect,this.onConnectHandler),this.provider.on(xr.disconnect,this.onDisconnectHandler),this.provider.on(xr.error,this.onProviderErrorHandler)},this.core=e.core,this.logger=typeof e.logger<"u"&&typeof e.logger!="string"?Vt(e.logger,this.name):ei(to({level:e.logger||W6})),this.messages=new K5(this.logger,e.core),this.subscriber=new r8(this,this.logger),this.publisher=new J5(this,this.logger),this.relayUrl=e?.relayUrl||O0,this.projectId=e.projectId,om()?this.packageName=Ou():fm()&&(this.bundleId=Ou()),this.provider={}}async init(){if(this.logger.trace("Initialized"),this.registerEventListeners(),await Promise.all([this.messages.init(),this.subscriber.init()]),this.initialized=!0,this.subscriber.cached.length>0)try{await this.transportOpen()}catch(e){this.logger.warn(e,e?.message)}}get context(){return Xt(this.logger)}get connected(){var e,t,i;return((i=(t=(e=this.provider)==null?void 0:e.connection)==null?void 0:t.socket)==null?void 0:i.readyState)===1}get connecting(){var e,t,i;return((i=(t=(e=this.provider)==null?void 0:e.connection)==null?void 0:t.socket)==null?void 0:i.readyState)===0}async publish(e,t,i){this.isInitialized(),await this.publisher.publish(e,t,i),await this.recordMessageEvent({topic:e,message:t,publishedAt:Date.now(),transportType:ht.relay})}async subscribe(e,t){var i,n,s;this.isInitialized(),(!(t!=null&&t.transportType)||t?.transportType==="relay")&&await this.toEstablishConnection();const o=typeof((i=t?.internal)==null?void 0:i.throwOnFailedPublish)>"u"?!0:(n=t?.internal)==null?void 0:n.throwOnFailedPublish;let f=((s=this.subscriber.topicMap.get(e))==null?void 0:s[0])||"",u;const h=g=>{g.topic===e&&(this.subscriber.off(dr.created,h),u())};return await Promise.all([new Promise(g=>{u=g,this.subscriber.on(dr.created,h)}),new Promise(async(g,y)=>{f=await this.subscriber.subscribe(e,rd({internal:{throwOnFailedPublish:o}},t)).catch(I=>{o&&y(I)})||f,g()})]),f}async unsubscribe(e,t){this.isInitialized(),await this.subscriber.unsubscribe(e,t)}on(e,t){this.events.on(e,t)}once(e,t){this.events.once(e,t)}off(e,t){this.events.off(e,t)}removeListener(e,t){this.events.removeListener(e,t)}async transportDisconnect(){this.provider.disconnect&&(this.hasExperiencedNetworkDisruption||this.connected)?await Ni(this.provider.disconnect(),2e3,"provider.disconnect()").catch(()=>this.onProviderDisconnect()):this.onProviderDisconnect()}async transportClose(){this.transportExplicitlyClosed=!0,await this.transportDisconnect()}async transportOpen(e){if(this.connectPromise?(this.logger.debug({},"Waiting for existing connection attempt to resolve..."),await this.connectPromise,this.logger.debug({},"Existing connection attempt resolved")):(this.connectPromise=new Promise(async(t,i)=>{await this.connect(e).then(t).catch(i).finally(()=>{this.connectPromise=void 0})}),await this.connectPromise),!this.connected)throw new Error(`Couldn't establish socket connection to the relay server: ${this.relayUrl}`)}async restartTransport(e){this.logger.debug({},"Restarting transport..."),!this.connectionAttemptInProgress&&(this.relayUrl=e||this.relayUrl,await this.confirmOnlineStateOrThrow(),await this.transportClose(),await this.transportOpen())}async confirmOnlineStateOrThrow(){if(!await d0())throw new Error("No internet connection detected. Please restart your network and try again.")}async handleBatchMessageEvents(e){if(e?.length===0){this.logger.trace("Batch message events is empty. Ignoring...");return}const t=e.sort((i,n)=>i.publishedAt-n.publishedAt);this.logger.debug(`Batch of ${t.length} message events sorted`);for(const i of t)try{await this.onMessageEvent(i)}catch(n){this.logger.warn(n,"Error while processing batch message event: "+n?.message)}this.logger.trace(`Batch of ${t.length} message events processed`)}async onLinkMessageEvent(e,t){const{topic:i}=e;if(!t.sessionExists){const n=_t(ie.FIVE_MINUTES),s={topic:i,expiry:n,relay:{protocol:"irn"},active:!1};await this.core.pairing.pairings.set(i,s)}this.events.emit(Ot.message,e),await this.recordMessageEvent(e)}async connect(e){await this.confirmOnlineStateOrThrow(),e&&e!==this.relayUrl&&(this.relayUrl=e,await this.transportDisconnect()),this.connectionAttemptInProgress=!0,this.transportExplicitlyClosed=!1;let t=1;for(;t<6;){try{this.logger.debug({},`Connecting to ${this.relayUrl}, attempt: ${t}...`),await this.createProvider(),await new Promise(async(i,n)=>{const s=()=>{n(new Error("Connection interrupted while trying to subscribe"))};this.provider.once(xr.disconnect,s),await Ni(new Promise((o,f)=>{this.provider.connect().then(o).catch(f)}),this.connectTimeout,`Socket stalled when trying to connect to ${this.relayUrl}`).catch(o=>{n(o)}).finally(()=>{this.provider.off(xr.disconnect,s),clearTimeout(this.reconnectTimeout),this.reconnectTimeout=void 0}),await new Promise(async(o,f)=>{const u=()=>{f(new Error("Connection interrupted while trying to subscribe"))};this.provider.once(xr.disconnect,u),await this.subscriber.start().then(o).catch(f).finally(()=>{this.provider.off(xr.disconnect,u)})}),this.hasExperiencedNetworkDisruption=!1,i()})}catch(i){await this.subscriber.stop();const n=i;this.logger.warn({},n.message),this.hasExperiencedNetworkDisruption=!0}finally{this.connectionAttemptInProgress=!1}if(this.connected){this.logger.debug({},`Connected to ${this.relayUrl} successfully on attempt: ${t}`);break}await new Promise(i=>setTimeout(i,ie.toMiliseconds(t*1))),t++}}startPingTimeout(){var e,t,i,n,s;if(wa())try{(t=(e=this.provider)==null?void 0:e.connection)!=null&&t.socket&&((s=(n=(i=this.provider)==null?void 0:i.connection)==null?void 0:n.socket)==null||s.on("ping",()=>{this.resetPingTimeout()})),this.resetPingTimeout()}catch(o){this.logger.warn(o,o?.message)}}async createProvider(){this.provider.connection&&this.unregisterProviderListeners();const e=await this.core.crypto.signJWT(this.relayUrl);this.provider=new C6(new L6(dm({sdkVersion:bf,protocol:this.protocol,version:this.version,relayUrl:this.relayUrl,projectId:this.projectId,auth:e,useOnCloseEvent:!0,bundleId:this.bundleId,packageName:this.packageName}))),this.registerProviderListeners()}async recordMessageEvent(e){const{topic:t,message:i}=e;await this.messages.set(t,i)}async shouldIgnoreMessageEvent(e){const{topic:t,message:i}=e;if(!i||i.length===0)return this.logger.warn(`Ignoring invalid/empty message: ${i}`),!0;if(!await this.subscriber.isSubscribed(t))return this.logger.warn(`Ignoring message for non-subscribed topic ${t}`),!0;const n=this.messages.has(t,i);return n&&this.logger.warn(`Ignoring duplicate message: ${i}`),n}async onProviderPayload(e){if(this.logger.debug("Incoming Relay Payload"),this.logger.trace({type:"payload",direction:"incoming",payload:e}),pf(e)){if(!e.method.endsWith(Y6))return;const t=e.params,{topic:i,message:n,publishedAt:s,attestation:o}=t.data,f={topic:i,message:n,publishedAt:s,transportType:ht.relay,attestation:o};this.logger.debug("Emitting Relayer Payload"),this.logger.trace(rd({type:"event",event:t.id},f)),this.events.emit(t.id,f),await this.acknowledgePayload(e),await this.onMessageEvent(f)}else Oa(e)&&this.events.emit(Ot.message_ack,e)}async onMessageEvent(e){await this.shouldIgnoreMessageEvent(e)||(this.events.emit(Ot.message,e),await this.recordMessageEvent(e))}async acknowledgePayload(e){const t=df(e.id,!0);await this.provider.connection.send(t)}unregisterProviderListeners(){this.provider.off(xr.payload,this.onPayloadHandler),this.provider.off(xr.connect,this.onConnectHandler),this.provider.off(xr.disconnect,this.onDisconnectHandler),this.provider.off(xr.error,this.onProviderErrorHandler),clearTimeout(this.pingTimeout)}async registerEventListeners(){let e=await d0();Hy(async t=>{e!==t&&(e=t,t?await this.transportOpen().catch(i=>this.logger.error(i,i?.message)):(this.hasExperiencedNetworkDisruption=!0,await this.transportDisconnect(),this.transportExplicitlyClosed=!1))})}async onProviderDisconnect(){await this.subscriber.stop(),clearTimeout(this.pingTimeout),this.events.emit(Ot.disconnect),this.connectionAttemptInProgress=!1,!this.transportExplicitlyClosed&&(this.reconnectTimeout||this.connectPromise||(this.reconnectTimeout=setTimeout(async()=>{clearTimeout(this.reconnectTimeout),await this.transportOpen().catch(e=>this.logger.error(e,e?.message))},ie.toMiliseconds(Q6))))}isInitialized(){if(!this.initialized){const{message:e}=se("NOT_INITIALIZED",this.name);throw new Error(e)}}async toEstablishConnection(){await this.confirmOnlineStateOrThrow(),!this.connected&&await this.transportOpen()}}var o8=Object.defineProperty,id=Object.getOwnPropertySymbols,f8=Object.prototype.hasOwnProperty,c8=Object.prototype.propertyIsEnumerable,nd=(r,e,t)=>e in r?o8(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,sd=(r,e)=>{for(var t in e||(e={}))f8.call(e,t)&&nd(r,t,e[t]);if(id)for(var t of id(e))c8.call(e,t)&&nd(r,t,e[t]);return r};class on extends Np{constructor(e,t,i,n=Qr,s=void 0){super(e,t,i,n),this.core=e,this.logger=t,this.name=i,this.map=new Map,this.version=X6,this.cached=[],this.initialized=!1,this.storagePrefix=Qr,this.recentlyDeleted=[],this.recentlyDeletedLimit=200,this.init=async()=>{this.initialized||(this.logger.trace("Initialized"),await this.restore(),this.cached.forEach(o=>{this.getKey&&o!==null&&!Yt(o)?this.map.set(this.getKey(o),o):xy(o)?this.map.set(o.id,o):Ay(o)&&this.map.set(o.topic,o)}),this.cached=[],this.initialized=!0)},this.set=async(o,f)=>{this.isInitialized(),this.map.has(o)?await this.update(o,f):(this.logger.debug("Setting value"),this.logger.trace({type:"method",method:"set",key:o,value:f}),this.map.set(o,f),await this.persist())},this.get=o=>(this.isInitialized(),this.logger.debug("Getting value"),this.logger.trace({type:"method",method:"get",key:o}),this.getData(o)),this.getAll=o=>(this.isInitialized(),o?this.values.filter(f=>Object.keys(o).every(u=>q6(f[u],o[u]))):this.values),this.update=async(o,f)=>{this.isInitialized(),this.logger.debug("Updating value"),this.logger.trace({type:"method",method:"update",key:o,update:f});const u=sd(sd({},this.getData(o)),f);this.map.set(o,u),await this.persist()},this.delete=async(o,f)=>{this.isInitialized(),this.map.has(o)&&(this.logger.debug("Deleting value"),this.logger.trace({type:"method",method:"delete",key:o,reason:f}),this.map.delete(o),this.addToRecentlyDeleted(o),await this.persist())},this.logger=Vt(t,this.name),this.storagePrefix=n,this.getKey=s}get context(){return Xt(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}get length(){return this.map.size}get keys(){return Array.from(this.map.keys())}get values(){return Array.from(this.map.values())}addToRecentlyDeleted(e){this.recentlyDeleted.push(e),this.recentlyDeleted.length>=this.recentlyDeletedLimit&&this.recentlyDeleted.splice(0,this.recentlyDeletedLimit/2)}async setDataStore(e){await this.core.storage.setItem(this.storageKey,e)}async getDataStore(){return await this.core.storage.getItem(this.storageKey)}getData(e){const t=this.map.get(e);if(!t){if(this.recentlyDeleted.includes(e)){const{message:n}=se("MISSING_OR_INVALID",`Record was recently deleted - ${this.name}: ${e}`);throw this.logger.error(n),new Error(n)}const{message:i}=se("NO_MATCHING_KEY",`${this.name}: ${e}`);throw this.logger.error(i),new Error(i)}return t}async persist(){await this.setDataStore(this.values)}async restore(){try{const e=await this.getDataStore();if(typeof e>"u"||!e.length)return;if(this.map.size){const{message:t}=se("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(t),new Error(t)}this.cached=e,this.logger.debug(`Successfully Restored value for ${this.name}`),this.logger.trace({type:"method",method:"restore",value:this.values})}catch(e){this.logger.debug(`Failed to Restore value for ${this.name}`),this.logger.error(e)}}isInitialized(){if(!this.initialized){const{message:e}=se("NOT_INITIALIZED",this.name);throw new Error(e)}}}class h8{constructor(e,t){this.core=e,this.logger=t,this.name=iw,this.version=nw,this.events=new Ut.exports,this.initialized=!1,this.storagePrefix=Qr,this.ignoredPayloadTypes=[ai],this.registeredMethods=[],this.init=async()=>{this.initialized||(await this.pairings.init(),await this.cleanup(),this.registerRelayerEvents(),this.registerExpirerEvents(),this.initialized=!0,this.logger.trace("Initialized"))},this.register=({methods:i})=>{this.isInitialized(),this.registeredMethods=[...new Set([...this.registeredMethods,...i])]},this.create=async i=>{this.isInitialized();const n=nf(),s=await this.core.crypto.setSymKey(n),o=_t(ie.FIVE_MINUTES),f={protocol:D0},u={topic:s,expiry:o,relay:f,active:!1,methods:i?.methods},h=n0({protocol:this.core.protocol,version:this.core.version,topic:s,symKey:n,relay:f,expiryTimestamp:o,methods:i?.methods});return this.events.emit(nn.create,u),this.core.expirer.set(s,o),await this.pairings.set(s,u),await this.core.relayer.subscribe(s,{transportType:i?.transportType}),{topic:s,uri:h}},this.pair=async i=>{this.isInitialized();const n=this.core.eventClient.createEvent({properties:{topic:i?.uri,trace:[Xr.pairing_started]}});this.isValidPair(i,n);const{topic:s,symKey:o,relay:f,expiryTimestamp:u,methods:h}=i0(i.uri);n.props.properties.topic=s,n.addTrace(Xr.pairing_uri_validation_success),n.addTrace(Xr.pairing_uri_not_expired);let g;if(this.pairings.keys.includes(s)){if(g=this.pairings.get(s),n.addTrace(Xr.existing_pairing),g.active)throw n.setError(ui.active_pairing_already_exists),new Error(`Pairing already exists: ${s}. Please try again with a new connection URI.`);n.addTrace(Xr.pairing_not_expired)}const y=u||_t(ie.FIVE_MINUTES),I={topic:s,relay:f,expiry:y,active:!1,methods:h};this.core.expirer.set(s,y),await this.pairings.set(s,I),n.addTrace(Xr.store_new_pairing),i.activatePairing&&await this.activate({topic:s}),this.events.emit(nn.create,I),n.addTrace(Xr.emit_inactive_pairing),this.core.crypto.keychain.has(s)||await this.core.crypto.setSymKey(o,s),n.addTrace(Xr.subscribing_pairing_topic);try{await this.core.relayer.confirmOnlineStateOrThrow()}catch{n.setError(ui.no_internet_connection)}try{await this.core.relayer.subscribe(s,{relay:f})}catch(M){throw n.setError(ui.subscribe_pairing_topic_failure),M}return n.addTrace(Xr.subscribe_pairing_topic_success),I},this.activate=async({topic:i})=>{this.isInitialized();const n=_t(ie.THIRTY_DAYS);this.core.expirer.set(i,n),await this.pairings.update(i,{active:!0,expiry:n})},this.ping=async i=>{this.isInitialized(),await this.isValidPing(i);const{topic:n}=i;if(this.pairings.keys.includes(n)){const s=await this.sendRequest(n,"wc_pairingPing",{}),{done:o,resolve:f,reject:u}=Xi();this.events.once(Ye("pairing_ping",s),({error:h})=>{h?u(h):f()}),await o()}},this.updateExpiry=async({topic:i,expiry:n})=>{this.isInitialized(),await this.pairings.update(i,{expiry:n})},this.updateMetadata=async({topic:i,metadata:n})=>{this.isInitialized(),await this.pairings.update(i,{peerMetadata:n})},this.getPairings=()=>(this.isInitialized(),this.pairings.values),this.disconnect=async i=>{this.isInitialized(),await this.isValidDisconnect(i);const{topic:n}=i;this.pairings.keys.includes(n)&&(await this.sendRequest(n,"wc_pairingDelete",ct("USER_DISCONNECTED")),await this.deletePairing(n))},this.formatUriFromPairing=i=>{this.isInitialized();const{topic:n,relay:s,expiry:o,methods:f}=i,u=this.core.crypto.keychain.get(n);return n0({protocol:this.core.protocol,version:this.core.version,topic:n,symKey:u,relay:s,expiryTimestamp:o,methods:f})},this.sendRequest=async(i,n,s)=>{const o=rn(n,s),f=await this.core.crypto.encode(i,o),u=gs[n].req;return this.core.history.set(i,o),this.core.relayer.publish(i,f,u),o.id},this.sendResult=async(i,n,s)=>{const o=df(i,s),f=await this.core.crypto.encode(n,o),u=await this.core.history.get(n,i),h=gs[u.request.method].res;await this.core.relayer.publish(n,f,h),await this.core.history.resolve(o)},this.sendError=async(i,n,s)=>{const o=lf(i,s),f=await this.core.crypto.encode(n,o),u=await this.core.history.get(n,i),h=gs[u.request.method]?gs[u.request.method].res:gs.unregistered_method.res;await this.core.relayer.publish(n,f,h),await this.core.history.resolve(o)},this.deletePairing=async(i,n)=>{await this.core.relayer.unsubscribe(i),await Promise.all([this.pairings.delete(i,ct("USER_DISCONNECTED")),this.core.crypto.deleteSymKey(i),n?Promise.resolve():this.core.expirer.del(i)])},this.cleanup=async()=>{const i=this.pairings.getAll().filter(n=>Ci(n.expiry));await Promise.all(i.map(n=>this.deletePairing(n.topic)))},this.onRelayEventRequest=i=>{const{topic:n,payload:s}=i;switch(s.method){case"wc_pairingPing":return this.onPairingPingRequest(n,s);case"wc_pairingDelete":return this.onPairingDeleteRequest(n,s);default:return this.onUnknownRpcMethodRequest(n,s)}},this.onRelayEventResponse=async i=>{const{topic:n,payload:s}=i,o=(await this.core.history.get(n,s.id)).request.method;switch(o){case"wc_pairingPing":return this.onPairingPingResponse(n,s);default:return this.onUnknownRpcMethodResponse(o)}},this.onPairingPingRequest=async(i,n)=>{const{id:s}=n;try{this.isValidPing({topic:i}),await this.sendResult(s,i,!0),this.events.emit(nn.ping,{id:s,topic:i})}catch(o){await this.sendError(s,i,o),this.logger.error(o)}},this.onPairingPingResponse=(i,n)=>{const{id:s}=n;setTimeout(()=>{Yr(n)?this.events.emit(Ye("pairing_ping",s),{}):_r(n)&&this.events.emit(Ye("pairing_ping",s),{error:n.error})},500)},this.onPairingDeleteRequest=async(i,n)=>{const{id:s}=n;try{this.isValidDisconnect({topic:i}),await this.deletePairing(i),this.events.emit(nn.delete,{id:s,topic:i})}catch(o){await this.sendError(s,i,o),this.logger.error(o)}},this.onUnknownRpcMethodRequest=async(i,n)=>{const{id:s,method:o}=n;try{if(this.registeredMethods.includes(o))return;const f=ct("WC_METHOD_UNSUPPORTED",o);await this.sendError(s,i,f),this.logger.error(f)}catch(f){await this.sendError(s,i,f),this.logger.error(f)}},this.onUnknownRpcMethodResponse=i=>{this.registeredMethods.includes(i)||this.logger.error(ct("WC_METHOD_UNSUPPORTED",i))},this.isValidPair=(i,n)=>{var s;if(!rr(i)){const{message:f}=se("MISSING_OR_INVALID",`pair() params: ${i}`);throw n.setError(ui.malformed_pairing_uri),new Error(f)}if(!_y(i.uri)){const{message:f}=se("MISSING_OR_INVALID",`pair() uri: ${i.uri}`);throw n.setError(ui.malformed_pairing_uri),new Error(f)}const o=i0(i?.uri);if(!((s=o?.relay)!=null&&s.protocol)){const{message:f}=se("MISSING_OR_INVALID","pair() uri#relay-protocol");throw n.setError(ui.malformed_pairing_uri),new Error(f)}if(!(o!=null&&o.symKey)){const{message:f}=se("MISSING_OR_INVALID","pair() uri#symKey");throw n.setError(ui.malformed_pairing_uri),new Error(f)}if(o!=null&&o.expiryTimestamp&&ie.toMiliseconds(o?.expiryTimestamp)<Date.now()){n.setError(ui.pairing_expired);const{message:f}=se("EXPIRED","pair() URI has expired. Please try again with a new connection URI.");throw new Error(f)}},this.isValidPing=async i=>{if(!rr(i)){const{message:s}=se("MISSING_OR_INVALID",`ping() params: ${i}`);throw new Error(s)}const{topic:n}=i;await this.isValidPairingTopic(n)},this.isValidDisconnect=async i=>{if(!rr(i)){const{message:s}=se("MISSING_OR_INVALID",`disconnect() params: ${i}`);throw new Error(s)}const{topic:n}=i;await this.isValidPairingTopic(n)},this.isValidPairingTopic=async i=>{if(!mt(i,!1)){const{message:n}=se("MISSING_OR_INVALID",`pairing topic should be a string: ${i}`);throw new Error(n)}if(!this.pairings.keys.includes(i)){const{message:n}=se("NO_MATCHING_KEY",`pairing topic doesn't exist: ${i}`);throw new Error(n)}if(Ci(this.pairings.get(i).expiry)){await this.deletePairing(i);const{message:n}=se("EXPIRED",`pairing topic: ${i}`);throw new Error(n)}},this.core=e,this.logger=Vt(t,this.name),this.pairings=new on(this.core,this.logger,this.name,this.storagePrefix)}get context(){return Xt(this.logger)}isInitialized(){if(!this.initialized){const{message:e}=se("NOT_INITIALIZED",this.name);throw new Error(e)}}registerRelayerEvents(){this.core.relayer.on(Ot.message,async e=>{const{topic:t,message:i,transportType:n}=e;if(!this.pairings.keys.includes(t)||n===ht.link_mode||this.ignoredPayloadTypes.includes(this.core.crypto.getPayloadType(i)))return;const s=await this.core.crypto.decode(t,i);try{pf(s)?(this.core.history.set(t,s),this.onRelayEventRequest({topic:t,payload:s})):Oa(s)&&(await this.core.history.resolve(s),await this.onRelayEventResponse({topic:t,payload:s}),this.core.history.delete(t,s.id))}catch(o){this.logger.error(o)}})}registerExpirerEvents(){this.core.expirer.on(Ar.expired,async e=>{const{topic:t}=Fu(e.target);t&&this.pairings.keys.includes(t)&&(await this.deletePairing(t,!0),this.events.emit(nn.expire,{topic:t}))})}}class u8 extends Dp{constructor(e,t){super(e,t),this.core=e,this.logger=t,this.records=new Map,this.events=new Ut.exports.EventEmitter,this.name=sw,this.version=aw,this.cached=[],this.initialized=!1,this.storagePrefix=Qr,this.init=async()=>{this.initialized||(this.logger.trace("Initialized"),await this.restore(),this.cached.forEach(i=>this.records.set(i.id,i)),this.cached=[],this.registerEventListeners(),this.initialized=!0)},this.set=(i,n,s)=>{if(this.isInitialized(),this.logger.debug("Setting JSON-RPC request history record"),this.logger.trace({type:"method",method:"set",topic:i,request:n,chainId:s}),this.records.has(n.id))return;const o={id:n.id,topic:i,request:{method:n.method,params:n.params||null},chainId:s,expiry:_t(ie.THIRTY_DAYS)};this.records.set(o.id,o),this.persist(),this.events.emit(Cr.created,o)},this.resolve=async i=>{if(this.isInitialized(),this.logger.debug("Updating JSON-RPC response history record"),this.logger.trace({type:"method",method:"update",response:i}),!this.records.has(i.id))return;const n=await this.getRecord(i.id);typeof n.response>"u"&&(n.response=_r(i)?{error:i.error}:{result:i.result},this.records.set(n.id,n),this.persist(),this.events.emit(Cr.updated,n))},this.get=async(i,n)=>(this.isInitialized(),this.logger.debug("Getting record"),this.logger.trace({type:"method",method:"get",topic:i,id:n}),await this.getRecord(n)),this.delete=(i,n)=>{this.isInitialized(),this.logger.debug("Deleting record"),this.logger.trace({type:"method",method:"delete",id:n}),this.values.forEach(s=>{if(s.topic===i){if(typeof n<"u"&&s.id!==n)return;this.records.delete(s.id),this.events.emit(Cr.deleted,s)}}),this.persist()},this.exists=async(i,n)=>(this.isInitialized(),this.records.has(n)?(await this.getRecord(n)).topic===i:!1),this.on=(i,n)=>{this.events.on(i,n)},this.once=(i,n)=>{this.events.once(i,n)},this.off=(i,n)=>{this.events.off(i,n)},this.removeListener=(i,n)=>{this.events.removeListener(i,n)},this.logger=Vt(t,this.name)}get context(){return Xt(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}get size(){return this.records.size}get keys(){return Array.from(this.records.keys())}get values(){return Array.from(this.records.values())}get pending(){const e=[];return this.values.forEach(t=>{if(typeof t.response<"u")return;const i={topic:t.topic,request:rn(t.request.method,t.request.params,t.id),chainId:t.chainId};return e.push(i)}),e}async setJsonRpcRecords(e){await this.core.storage.setItem(this.storageKey,e)}async getJsonRpcRecords(){return await this.core.storage.getItem(this.storageKey)}getRecord(e){this.isInitialized();const t=this.records.get(e);if(!t){const{message:i}=se("NO_MATCHING_KEY",`${this.name}: ${e}`);throw new Error(i)}return t}async persist(){await this.setJsonRpcRecords(this.values),this.events.emit(Cr.sync)}async restore(){try{const e=await this.getJsonRpcRecords();if(typeof e>"u"||!e.length)return;if(this.records.size){const{message:t}=se("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(t),new Error(t)}this.cached=e,this.logger.debug(`Successfully Restored records for ${this.name}`),this.logger.trace({type:"method",method:"restore",records:this.values})}catch(e){this.logger.debug(`Failed to Restore records for ${this.name}`),this.logger.error(e)}}registerEventListeners(){this.events.on(Cr.created,e=>{const t=Cr.created;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,record:e})}),this.events.on(Cr.updated,e=>{const t=Cr.updated;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,record:e})}),this.events.on(Cr.deleted,e=>{const t=Cr.deleted;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,record:e})}),this.core.heartbeat.on(dn.pulse,()=>{this.cleanup()})}cleanup(){try{this.isInitialized();let e=!1;this.records.forEach(t=>{ie.toMiliseconds(t.expiry||0)-Date.now()<=0&&(this.logger.info(`Deleting expired history log: ${t.id}`),this.records.delete(t.id),this.events.emit(Cr.deleted,t,!1),e=!0)}),e&&this.persist()}catch(e){this.logger.warn(e)}}isInitialized(){if(!this.initialized){const{message:e}=se("NOT_INITIALIZED",this.name);throw new Error(e)}}}class d8 extends Tp{constructor(e,t){super(e,t),this.core=e,this.logger=t,this.expirations=new Map,this.events=new Ut.exports.EventEmitter,this.name=ow,this.version=fw,this.cached=[],this.initialized=!1,this.storagePrefix=Qr,this.init=async()=>{this.initialized||(this.logger.trace("Initialized"),await this.restore(),this.cached.forEach(i=>this.expirations.set(i.target,i)),this.cached=[],this.registerEventListeners(),this.initialized=!0)},this.has=i=>{try{const n=this.formatTarget(i);return typeof this.getExpiration(n)<"u"}catch{return!1}},this.set=(i,n)=>{this.isInitialized();const s=this.formatTarget(i),o={target:s,expiry:n};this.expirations.set(s,o),this.checkExpiry(s,o),this.events.emit(Ar.created,{target:s,expiration:o})},this.get=i=>{this.isInitialized();const n=this.formatTarget(i);return this.getExpiration(n)},this.del=i=>{if(this.isInitialized(),this.has(i)){const n=this.formatTarget(i),s=this.getExpiration(n);this.expirations.delete(n),this.events.emit(Ar.deleted,{target:n,expiration:s})}},this.on=(i,n)=>{this.events.on(i,n)},this.once=(i,n)=>{this.events.once(i,n)},this.off=(i,n)=>{this.events.off(i,n)},this.removeListener=(i,n)=>{this.events.removeListener(i,n)},this.logger=Vt(t,this.name)}get context(){return Xt(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 lm(e);if(typeof e=="number")return pm(e);const{message:t}=se("UNKNOWN_TYPE",`Target type: ${typeof e}`);throw new Error(t)}async setExpirations(e){await this.core.storage.setItem(this.storageKey,e)}async getExpirations(){return await this.core.storage.getItem(this.storageKey)}async persist(){await this.setExpirations(this.values),this.events.emit(Ar.sync)}async restore(){try{const e=await this.getExpirations();if(typeof e>"u"||!e.length)return;if(this.expirations.size){const{message:t}=se("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(t),new Error(t)}this.cached=e,this.logger.debug(`Successfully Restored expirations for ${this.name}`),this.logger.trace({type:"method",method:"restore",expirations:this.values})}catch(e){this.logger.debug(`Failed to Restore expirations for ${this.name}`),this.logger.error(e)}}getExpiration(e){const t=this.expirations.get(e);if(!t){const{message:i}=se("NO_MATCHING_KEY",`${this.name}: ${e}`);throw this.logger.warn(i),new Error(i)}return t}checkExpiry(e,t){const{expiry:i}=t;ie.toMiliseconds(i)-Date.now()<=0&&this.expire(e,t)}expire(e,t){this.expirations.delete(e),this.events.emit(Ar.expired,{target:e,expiration:t})}checkExpirations(){this.core.relayer.connected&&this.expirations.forEach((e,t)=>this.checkExpiry(t,e))}registerEventListeners(){this.core.heartbeat.on(dn.pulse,()=>this.checkExpirations()),this.events.on(Ar.created,e=>{const t=Ar.created;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,data:e}),this.persist()}),this.events.on(Ar.expired,e=>{const t=Ar.expired;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,data:e}),this.persist()}),this.events.on(Ar.deleted,e=>{const t=Ar.deleted;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,data:e}),this.persist()})}isInitialized(){if(!this.initialized){const{message:e}=se("NOT_INITIALIZED",this.name);throw new Error(e)}}}class l8 extends Fp{constructor(e,t,i){super(e,t,i),this.core=e,this.logger=t,this.store=i,this.name=cw,this.verifyUrlV3=uw,this.storagePrefix=Qr,this.version=S0,this.init=async()=>{var n;this.isDevEnv||(this.publicKey=await this.store.getItem(this.storeKey),this.publicKey&&ie.toMiliseconds((n=this.publicKey)==null?void 0:n.expiresAt)<Date.now()&&(this.logger.debug("verify v2 public key expired"),await this.removePublicKey()))},this.register=async n=>{if(!ns()||this.isDevEnv)return;const s=window.location.origin,{id:o,decryptedId:f}=n,u=`${this.verifyUrlV3}/attestation?projectId=${this.core.projectId}&origin=${s}&id=${o}&decryptedId=${f}`;try{const h=Hn(),g=this.startAbortTimer(ie.ONE_SECOND*5),y=await new Promise((I,M)=>{const D=()=>{window.removeEventListener("message",k),h.body.removeChild(N),M("attestation aborted")};this.abortController.signal.addEventListener("abort",D);const N=h.createElement("iframe");N.src=u,N.style.display="none",N.addEventListener("error",D,{signal:this.abortController.signal});const k=K=>{if(K.data&&typeof K.data=="string")try{const C=JSON.parse(K.data);if(C.type==="verify_attestation"){if(ho(C.attestation).payload.id!==o)return;clearInterval(g),h.body.removeChild(N),this.abortController.signal.removeEventListener("abort",D),window.removeEventListener("message",k),I(C.attestation===null?"":C.attestation)}}catch(C){this.logger.warn(C)}};h.body.appendChild(N),window.addEventListener("message",k,{signal:this.abortController.signal})});return this.logger.debug("jwt attestation",y),y}catch(h){this.logger.warn(h)}return""},this.resolve=async n=>{if(this.isDevEnv)return"";const{attestationId:s,hash:o,encryptedId:f}=n;if(s===""){this.logger.debug("resolve: attestationId is empty, skipping");return}if(s){if(ho(s).payload.id!==f)return;const h=await this.isValidJwtAttestation(s);if(h){if(!h.isVerified){this.logger.warn("resolve: jwt attestation: origin url not verified");return}return h}}if(!o)return;const u=this.getVerifyUrl(n?.verifyUrl);return this.fetchAttestation(o,u)},this.fetchAttestation=async(n,s)=>{this.logger.debug(`resolving attestation: ${n} from url: ${s}`);const o=this.startAbortTimer(ie.ONE_SECOND*5),f=await fetch(`${s}/attestation/${n}?v2Supported=true`,{signal:this.abortController.signal});return clearTimeout(o),f.status===200?await f.json():void 0},this.getVerifyUrl=n=>{let s=n||bs;return dw.includes(s)||(this.logger.info(`verify url: ${s}, not included in trusted list, assigning default: ${bs}`),s=bs),s},this.fetchPublicKey=async()=>{try{this.logger.debug(`fetching public key from: ${this.verifyUrlV3}`);const n=this.startAbortTimer(ie.FIVE_SECONDS),s=await fetch(`${this.verifyUrlV3}/public-key`,{signal:this.abortController.signal});return clearTimeout(n),await s.json()}catch(n){this.logger.warn(n)}},this.persistPublicKey=async n=>{this.logger.debug("persisting public key to local storage",n),await this.store.setItem(this.storeKey,n),this.publicKey=n},this.removePublicKey=async()=>{this.logger.debug("removing verify v2 public key from storage"),await this.store.removeItem(this.storeKey),this.publicKey=void 0},this.isValidJwtAttestation=async n=>{const s=await this.getPublicKey();try{if(s)return this.validateAttestation(n,s)}catch(f){this.logger.error(f),this.logger.warn("error validating attestation")}const o=await this.fetchAndPersistPublicKey();try{if(o)return this.validateAttestation(n,o)}catch(f){this.logger.error(f),this.logger.warn("error validating attestation")}},this.getPublicKey=async()=>this.publicKey?this.publicKey:await this.fetchAndPersistPublicKey(),this.fetchAndPersistPublicKey=async()=>{if(this.fetchPromise)return await this.fetchPromise,this.publicKey;this.fetchPromise=new Promise(async s=>{const o=await this.fetchPublicKey();o&&(await this.persistPublicKey(o),s(o))});const n=await this.fetchPromise;return this.fetchPromise=void 0,n},this.validateAttestation=(n,s)=>{const o=ry(n,s.publicKey),f={hasExpired:ie.toMiliseconds(o.exp)<Date.now(),payload:o};if(f.hasExpired)throw this.logger.warn("resolve: jwt attestation expired"),new Error("JWT attestation expired");return{origin:f.payload.origin,isScam:f.payload.isScam,isVerified:f.payload.isVerified}},this.logger=Vt(t,this.name),this.abortController=new AbortController,this.isDevEnv=Zo(),this.init()}get storeKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//verify:public:key"}get context(){return Xt(this.logger)}startAbortTimer(e){return this.abortController=new AbortController,setTimeout(()=>this.abortController.abort(),ie.toMiliseconds(e))}}class p8 extends Bp{constructor(e,t){super(e,t),this.projectId=e,this.logger=t,this.context=lw,this.registerDeviceToken=async i=>{const{clientId:n,token:s,notificationType:o,enableEncrypted:f=!1}=i,u=`${pw}/${this.projectId}/clients`;await fetch(u,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({client_id:n,type:o,token:s,always_raw:f})})},this.logger=Vt(t,this.context)}}var g8=Object.defineProperty,ad=Object.getOwnPropertySymbols,b8=Object.prototype.hasOwnProperty,v8=Object.prototype.propertyIsEnumerable,od=(r,e,t)=>e in r?g8(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,ws=(r,e)=>{for(var t in e||(e={}))b8.call(e,t)&&od(r,t,e[t]);if(ad)for(var t of ad(e))v8.call(e,t)&&od(r,t,e[t]);return r};class m8 extends Lp{constructor(e,t,i=!0){super(e,t,i),this.core=e,this.logger=t,this.context=bw,this.storagePrefix=Qr,this.storageVersion=gw,this.events=new Map,this.shouldPersist=!1,this.init=async()=>{if(!Zo())try{const n={eventId:Lu(),timestamp:Date.now(),domain:this.getAppDomain(),props:{event:"INIT",type:"",properties:{client_id:await this.core.crypto.getClientId(),user_agent:Pu(this.core.relayer.protocol,this.core.relayer.version,bf)}}};await this.sendEvent([n])}catch(n){this.logger.warn(n)}},this.createEvent=n=>{const{event:s="ERROR",type:o="",properties:{topic:f,trace:u}}=n,h=Lu(),g=this.core.projectId||"",y=Date.now(),I=ws({eventId:h,timestamp:y,props:{event:s,type:o,properties:{topic:f,trace:u}},bundleId:g,domain:this.getAppDomain()},this.setMethods(h));return this.telemetryEnabled&&(this.events.set(h,I),this.shouldPersist=!0),I},this.getEvent=n=>{const{eventId:s,topic:o}=n;if(s)return this.events.get(s);const f=Array.from(this.events.values()).find(u=>u.props.properties.topic===o);if(f)return ws(ws({},f),this.setMethods(f.eventId))},this.deleteEvent=n=>{const{eventId:s}=n;this.events.delete(s),this.shouldPersist=!0},this.setEventListeners=()=>{this.core.heartbeat.on(dn.pulse,async()=>{this.shouldPersist&&await this.persist(),this.events.forEach(n=>{ie.fromMiliseconds(Date.now())-ie.fromMiliseconds(n.timestamp)>vw&&(this.events.delete(n.eventId),this.shouldPersist=!0)})})},this.setMethods=n=>({addTrace:s=>this.addTrace(n,s),setError:s=>this.setError(n,s)}),this.addTrace=(n,s)=>{const o=this.events.get(n);o&&(o.props.properties.trace.push(s),this.events.set(n,o),this.shouldPersist=!0)},this.setError=(n,s)=>{const o=this.events.get(n);o&&(o.props.type=s,o.timestamp=Date.now(),this.events.set(n,o),this.shouldPersist=!0)},this.persist=async()=>{await this.core.storage.setItem(this.storageKey,Array.from(this.events.values())),this.shouldPersist=!1},this.restore=async()=>{try{const n=await this.core.storage.getItem(this.storageKey)||[];if(!n.length)return;n.forEach(s=>{this.events.set(s.eventId,ws(ws({},s),this.setMethods(s.eventId)))})}catch(n){this.logger.warn(n)}},this.submit=async()=>{if(!this.telemetryEnabled||this.events.size===0)return;const n=[];for(const[s,o]of this.events)o.props.type&&n.push(o);if(n.length!==0)try{if((await this.sendEvent(n)).ok)for(const s of n)this.events.delete(s.eventId),this.shouldPersist=!0}catch(s){this.logger.warn(s)}},this.sendEvent=async n=>{const s=this.getAppDomain()?"":"&sp=desktop";return await fetch(`${mw}?projectId=${this.core.projectId}&st=events_sdk&sv=js-${bf}${s}`,{method:"POST",body:JSON.stringify(n)})},this.getAppDomain=()=>Ru().url,this.logger=Vt(t,this.context),this.telemetryEnabled=i,i?this.restore().then(async()=>{await this.submit(),this.setEventListeners()}):this.persist()}get storageKey(){return this.storagePrefix+this.storageVersion+this.core.customStoragePrefix+"//"+this.context}}var y8=Object.defineProperty,fd=Object.getOwnPropertySymbols,w8=Object.prototype.hasOwnProperty,_8=Object.prototype.propertyIsEnumerable,cd=(r,e,t)=>e in r?y8(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,hd=(r,e)=>{for(var t in e||(e={}))w8.call(e,t)&&cd(r,t,e[t]);if(fd)for(var t of fd(e))_8.call(e,t)&&cd(r,t,e[t]);return r};class _f extends Ip{constructor(e){var t;super(e),this.protocol=E0,this.version=S0,this.name=Ra,this.events=new Ut.exports.EventEmitter,this.initialized=!1,this.on=(o,f)=>this.events.on(o,f),this.once=(o,f)=>this.events.once(o,f),this.off=(o,f)=>this.events.off(o,f),this.removeListener=(o,f)=>this.events.removeListener(o,f),this.dispatchEnvelope=({topic:o,message:f,sessionExists:u})=>{if(!o||!f)return;const h={topic:o,message:f,publishedAt:Date.now(),transportType:ht.link_mode};this.relayer.onLinkMessageEvent(h,{sessionExists:u})},this.projectId=e?.projectId,this.relayUrl=e?.relayUrl||O0,this.customStoragePrefix=e!=null&&e.customStoragePrefix?`:${e.customStoragePrefix}`:"";const i=to({level:typeof e?.logger=="string"&&e.logger?e.logger:U6.logger,name:Ra}),{logger:n,chunkLoggerController:s}=Mp({opts:i,maxSizeInBytes:e?.maxLogBlobSizeInBytes,loggerOverride:e?.logger});this.logChunkController=s,(t=this.logChunkController)!=null&&t.downloadLogsBlobInBrowser&&(window.downloadLogsBlobInBrowser=async()=>{var o,f;(o=this.logChunkController)!=null&&o.downloadLogsBlobInBrowser&&((f=this.logChunkController)==null||f.downloadLogsBlobInBrowser({clientId:await this.crypto.getClientId()}))}),this.logger=Vt(n,this.name),this.heartbeat=new Wa,this.crypto=new k5(this,this.logger,e?.keychain),this.history=new u8(this,this.logger),this.expirer=new d8(this,this.logger),this.storage=e!=null&&e.storage?e.storage:new Xl(hd(hd({},$6),e?.storageOptions)),this.relayer=new a8({core:this,logger:this.logger,relayUrl:this.relayUrl,projectId:this.projectId}),this.pairing=new h8(this,this.logger),this.verify=new l8(this,this.logger,this.storage),this.echoClient=new p8(this.projectId||"",this.logger),this.linkModeSupportedApps=[],this.eventClient=new m8(this,this.logger,e?.telemetryEnabled)}static async init(e){const t=new _f(e);await t.initialize();const i=await t.crypto.getClientId();return await t.storage.setItem(Z6,i),t}get context(){return Xt(this.logger)}async start(){this.initialized||await this.initialize()}async getLogsBlob(){var e;return(e=this.logChunkController)==null?void 0:e.logsToBlob({clientId:await this.crypto.getClientId()})}async addLinkModeSupportedApp(e){this.linkModeSupportedApps.includes(e)||(this.linkModeSupportedApps.push(e),await this.storage.setItem(R0,this.linkModeSupportedApps))}async initialize(){this.logger.trace("Initialized");try{await this.crypto.init(),await this.history.init(),await this.expirer.init(),await this.relayer.init(),await this.heartbeat.init(),await this.pairing.init(),this.eventClient.init(),this.linkModeSupportedApps=await this.storage.getItem(R0)||[],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 xf=_f,ud="wc",dd=2,ld="client",Af=`${ud}@${dd}:${ld}:`,Ef={name:ld,logger:"error",controller:!1,relayUrl:"wss://relay.walletconnect.org"},pd="WALLETCONNECT_DEEPLINK_CHOICE",x8="proposal",A8="Proposal expired",E8="session",Fn=ie.SEVEN_DAYS,S8="engine",Rt={wc_sessionPropose:{req:{ttl:ie.FIVE_MINUTES,prompt:!0,tag:1100},res:{ttl:ie.FIVE_MINUTES,prompt:!1,tag:1101},reject:{ttl:ie.FIVE_MINUTES,prompt:!1,tag:1120},autoReject:{ttl:ie.FIVE_MINUTES,prompt:!1,tag:1121}},wc_sessionSettle:{req:{ttl:ie.FIVE_MINUTES,prompt:!1,tag:1102},res:{ttl:ie.FIVE_MINUTES,prompt:!1,tag:1103}},wc_sessionUpdate:{req:{ttl:ie.ONE_DAY,prompt:!1,tag:1104},res:{ttl:ie.ONE_DAY,prompt:!1,tag:1105}},wc_sessionExtend:{req:{ttl:ie.ONE_DAY,prompt:!1,tag:1106},res:{ttl:ie.ONE_DAY,prompt:!1,tag:1107}},wc_sessionRequest:{req:{ttl:ie.FIVE_MINUTES,prompt:!0,tag:1108},res:{ttl:ie.FIVE_MINUTES,prompt:!1,tag:1109}},wc_sessionEvent:{req:{ttl:ie.FIVE_MINUTES,prompt:!0,tag:1110},res:{ttl:ie.FIVE_MINUTES,prompt:!1,tag:1111}},wc_sessionDelete:{req:{ttl:ie.ONE_DAY,prompt:!1,tag:1112},res:{ttl:ie.ONE_DAY,prompt:!1,tag:1113}},wc_sessionPing:{req:{ttl:ie.ONE_DAY,prompt:!1,tag:1114},res:{ttl:ie.ONE_DAY,prompt:!1,tag:1115}},wc_sessionAuthenticate:{req:{ttl:ie.ONE_HOUR,prompt:!0,tag:1116},res:{ttl:ie.ONE_HOUR,prompt:!1,tag:1117},reject:{ttl:ie.FIVE_MINUTES,prompt:!1,tag:1118},autoReject:{ttl:ie.FIVE_MINUTES,prompt:!1,tag:1119}}},Sf={min:ie.FIVE_MINUTES,max:ie.SEVEN_DAYS},Zr={idle:"IDLE",active:"ACTIVE"},M8="request",I8=["wc_sessionPropose","wc_sessionRequest","wc_authRequest","wc_sessionAuthenticate"],D8="wc",O8="auth",R8="authKeys",P8="pairingTopics",N8="requests",Na=`${D8}@${1.5}:${O8}:`,Ca=`${Na}:PUB_KEY`;var C8=Object.defineProperty,T8=Object.defineProperties,F8=Object.getOwnPropertyDescriptors,gd=Object.getOwnPropertySymbols,B8=Object.prototype.hasOwnProperty,L8=Object.prototype.propertyIsEnumerable,bd=(r,e,t)=>e in r?C8(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,gt=(r,e)=>{for(var t in e||(e={}))B8.call(e,t)&&bd(r,t,e[t]);if(gd)for(var t of gd(e))L8.call(e,t)&&bd(r,t,e[t]);return r},Fr=(r,e)=>T8(r,F8(e));class q8 extends Up{constructor(e){super(e),this.name=S8,this.events=new Ut.exports,this.initialized=!1,this.requestQueue={state:Zr.idle,queue:[]},this.sessionRequestQueue={state:Zr.idle,queue:[]},this.requestQueueDelay=ie.ONE_SECOND,this.expectedPairingMethodMap=new Map,this.recentlyDeletedMap=new Map,this.recentlyDeletedLimit=200,this.relayMessageCache=[],this.init=async()=>{this.initialized||(await this.cleanup(),this.registerRelayerEvents(),this.registerExpirerEvents(),this.registerPairingEvents(),await this.registerLinkModeListeners(),this.client.core.pairing.register({methods:Object.keys(Rt)}),this.initialized=!0,setTimeout(()=>{this.sessionRequestQueue.queue=this.getPendingSessionRequests(),this.processSessionRequestQueue()},ie.toMiliseconds(this.requestQueueDelay)))},this.connect=async t=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();const i=Fr(gt({},t),{requiredNamespaces:t.requiredNamespaces||{},optionalNamespaces:t.optionalNamespaces||{}});await this.isValidConnect(i);const{pairingTopic:n,requiredNamespaces:s,optionalNamespaces:o,sessionProperties:f,relays:u}=i;let h=n,g,y=!1;try{h&&(y=this.client.core.pairing.pairings.get(h).active)}catch(F){throw this.client.logger.error(`connect() -> pairing.get(${h}) failed`),F}if(!h||!y){const{topic:F,uri:U}=await this.client.core.pairing.create();h=F,g=U}if(!h){const{message:F}=se("NO_MATCHING_KEY",`connect() pairing topic: ${h}`);throw new Error(F)}const I=await this.client.core.crypto.generateKeyPair(),M=Rt.wc_sessionPropose.req.ttl||ie.FIVE_MINUTES,D=_t(M),N=gt({requiredNamespaces:s,optionalNamespaces:o,relays:u??[{protocol:D0}],proposer:{publicKey:I,metadata:this.client.metadata},expiryTimestamp:D,pairingTopic:h},f&&{sessionProperties:f}),{reject:k,resolve:K,done:C}=Xi(M,A8);this.events.once(Ye("session_connect"),async({error:F,session:U})=>{if(F)k(F);else if(U){U.self.publicKey=I;const z=Fr(gt({},U),{pairingTopic:N.pairingTopic,requiredNamespaces:N.requiredNamespaces,optionalNamespaces:N.optionalNamespaces,transportType:ht.relay});await this.client.session.set(U.topic,z),await this.setExpiry(U.topic,U.expiry),h&&await this.client.core.pairing.updateMetadata({topic:h,metadata:U.peer.metadata}),this.cleanupDuplicatePairings(z),K(z)}});const j=await this.sendRequest({topic:h,method:"wc_sessionPropose",params:N,throwOnFailedPublish:!0});return await this.setProposal(j,gt({id:j},N)),{uri:g,approval:C}},this.pair=async t=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{return await this.client.core.pairing.pair(t)}catch(i){throw this.client.logger.error("pair() failed"),i}},this.approve=async t=>{var i,n,s;const o=this.client.core.eventClient.createEvent({properties:{topic:(i=t?.id)==null?void 0:i.toString(),trace:[Tr.session_approve_started]}});try{this.isInitialized(),await this.confirmOnlineStateOrThrow()}catch(R){throw o.setError(sn.no_internet_connection),R}try{await this.isValidProposalId(t?.id)}catch(R){throw this.client.logger.error(`approve() -> proposal.get(${t?.id}) failed`),o.setError(sn.proposal_not_found),R}try{await this.isValidApprove(t)}catch(R){throw this.client.logger.error("approve() -> isValidApprove() failed"),o.setError(sn.session_approve_namespace_validation_failure),R}const{id:f,relayProtocol:u,namespaces:h,sessionProperties:g,sessionConfig:y}=t,I=this.client.proposal.get(f);this.client.core.eventClient.deleteEvent({eventId:o.eventId});const{pairingTopic:M,proposer:D,requiredNamespaces:N,optionalNamespaces:k}=I;let K=(n=this.client.core.eventClient)==null?void 0:n.getEvent({topic:M});K||(K=(s=this.client.core.eventClient)==null?void 0:s.createEvent({type:Tr.session_approve_started,properties:{topic:M,trace:[Tr.session_approve_started,Tr.session_namespaces_validation_success]}}));const C=await this.client.core.crypto.generateKeyPair(),j=D.publicKey,F=await this.client.core.crypto.generateSharedKey(C,j),U=gt(gt({relay:{protocol:u??"irn"},namespaces:h,controller:{publicKey:C,metadata:this.client.metadata},expiry:_t(Fn)},g&&{sessionProperties:g}),y&&{sessionConfig:y}),z=ht.relay;K.addTrace(Tr.subscribing_session_topic);try{await this.client.core.relayer.subscribe(F,{transportType:z})}catch(R){throw K.setError(sn.subscribe_session_topic_failure),R}K.addTrace(Tr.subscribe_session_topic_success);const _=Fr(gt({},U),{topic:F,requiredNamespaces:N,optionalNamespaces:k,pairingTopic:M,acknowledged:!1,self:U.controller,peer:{publicKey:D.publicKey,metadata:D.metadata},controller:C,transportType:ht.relay});await this.client.session.set(F,_),K.addTrace(Tr.store_session);try{K.addTrace(Tr.publishing_session_settle),await this.sendRequest({topic:F,method:"wc_sessionSettle",params:U,throwOnFailedPublish:!0}).catch(R=>{throw K?.setError(sn.session_settle_publish_failure),R}),K.addTrace(Tr.session_settle_publish_success),K.addTrace(Tr.publishing_session_approve),await this.sendResult({id:f,topic:M,result:{relay:{protocol:u??"irn"},responderPublicKey:C},throwOnFailedPublish:!0}).catch(R=>{throw K?.setError(sn.session_approve_publish_failure),R}),K.addTrace(Tr.session_approve_publish_success)}catch(R){throw this.client.logger.error(R),this.client.session.delete(F,ct("USER_DISCONNECTED")),await this.client.core.relayer.unsubscribe(F),R}return this.client.core.eventClient.deleteEvent({eventId:K.eventId}),await this.client.core.pairing.updateMetadata({topic:M,metadata:D.metadata}),await this.client.proposal.delete(f,ct("USER_DISCONNECTED")),await this.client.core.pairing.activate({topic:M}),await this.setExpiry(F,_t(Fn)),{topic:F,acknowledged:()=>Promise.resolve(this.client.session.get(F))}},this.reject=async t=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{await this.isValidReject(t)}catch(o){throw this.client.logger.error("reject() -> isValidReject() failed"),o}const{id:i,reason:n}=t;let s;try{s=this.client.proposal.get(i).pairingTopic}catch(o){throw this.client.logger.error(`reject() -> proposal.get(${i}) failed`),o}s&&(await this.sendError({id:i,topic:s,error:n,rpcOpts:Rt.wc_sessionPropose.reject}),await this.client.proposal.delete(i,ct("USER_DISCONNECTED")))},this.update=async t=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{await this.isValidUpdate(t)}catch(y){throw this.client.logger.error("update() -> isValidUpdate() failed"),y}const{topic:i,namespaces:n}=t,{done:s,resolve:o,reject:f}=Xi(),u=hi(),h=tn().toString(),g=this.client.session.get(i).namespaces;return this.events.once(Ye("session_update",u),({error:y})=>{y?f(y):o()}),await this.client.session.update(i,{namespaces:n}),await this.sendRequest({topic:i,method:"wc_sessionUpdate",params:{namespaces:n},throwOnFailedPublish:!0,clientRpcId:u,relayRpcId:h}).catch(y=>{this.client.logger.error(y),this.client.session.update(i,{namespaces:g}),f(y)}),{acknowledged:s}},this.extend=async t=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{await this.isValidExtend(t)}catch(u){throw this.client.logger.error("extend() -> isValidExtend() failed"),u}const{topic:i}=t,n=hi(),{done:s,resolve:o,reject:f}=Xi();return this.events.once(Ye("session_extend",n),({error:u})=>{u?f(u):o()}),await this.setExpiry(i,_t(Fn)),this.sendRequest({topic:i,method:"wc_sessionExtend",params:{},clientRpcId:n,throwOnFailedPublish:!0}).catch(u=>{f(u)}),{acknowledged:s}},this.request=async t=>{this.isInitialized();try{await this.isValidRequest(t)}catch(D){throw this.client.logger.error("request() -> isValidRequest() failed"),D}const{chainId:i,request:n,topic:s,expiry:o=Rt.wc_sessionRequest.req.ttl}=t,f=this.client.session.get(s);f?.transportType===ht.relay&&await this.confirmOnlineStateOrThrow();const u=hi(),h=tn().toString(),{done:g,resolve:y,reject:I}=Xi(o,"Request expired. Please try again.");this.events.once(Ye("session_request",u),({error:D,result:N})=>{D?I(D):y(N)});const M=this.getAppLinkIfEnabled(f.peer.metadata,f.transportType);return M?(await this.sendRequest({clientRpcId:u,relayRpcId:h,topic:s,method:"wc_sessionRequest",params:{request:Fr(gt({},n),{expiryTimestamp:_t(o)}),chainId:i},expiry:o,throwOnFailedPublish:!0,appLink:M}).catch(D=>I(D)),this.client.events.emit("session_request_sent",{topic:s,request:n,chainId:i,id:u}),await g()):await Promise.all([new Promise(async D=>{await this.sendRequest({clientRpcId:u,relayRpcId:h,topic:s,method:"wc_sessionRequest",params:{request:Fr(gt({},n),{expiryTimestamp:_t(o)}),chainId:i},expiry:o,throwOnFailedPublish:!0}).catch(N=>I(N)),this.client.events.emit("session_request_sent",{topic:s,request:n,chainId:i,id:u}),D()}),new Promise(async D=>{var N;if(!((N=f.sessionConfig)!=null&&N.disableDeepLink)){const k=await mm(this.client.core.storage,pd);await bm({id:u,topic:s,wcDeepLink:k})}D()}),g()]).then(D=>D[2])},this.respond=async t=>{this.isInitialized(),await this.isValidRespond(t);const{topic:i,response:n}=t,{id:s}=n,o=this.client.session.get(i);o.transportType===ht.relay&&await this.confirmOnlineStateOrThrow();const f=this.getAppLinkIfEnabled(o.peer.metadata,o.transportType);Yr(n)?await this.sendResult({id:s,topic:i,result:n.result,throwOnFailedPublish:!0,appLink:f}):_r(n)&&await this.sendError({id:s,topic:i,error:n.error,appLink:f}),this.cleanupAfterResponse(t)},this.ping=async t=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{await this.isValidPing(t)}catch(n){throw this.client.logger.error("ping() -> isValidPing() failed"),n}const{topic:i}=t;if(this.client.session.keys.includes(i)){const n=hi(),s=tn().toString(),{done:o,resolve:f,reject:u}=Xi();this.events.once(Ye("session_ping",n),({error:h})=>{h?u(h):f()}),await Promise.all([this.sendRequest({topic:i,method:"wc_sessionPing",params:{},throwOnFailedPublish:!0,clientRpcId:n,relayRpcId:s}),o()])}else this.client.core.pairing.pairings.keys.includes(i)&&await this.client.core.pairing.ping({topic:i})},this.emit=async t=>{this.isInitialized(),await this.confirmOnlineStateOrThrow(),await this.isValidEmit(t);const{topic:i,event:n,chainId:s}=t,o=tn().toString(),f=hi();await this.sendRequest({topic:i,method:"wc_sessionEvent",params:{event:n,chainId:s},throwOnFailedPublish:!0,relayRpcId:o,clientRpcId:f})},this.disconnect=async t=>{this.isInitialized(),await this.confirmOnlineStateOrThrow(),await this.isValidDisconnect(t);const{topic:i}=t;if(this.client.session.keys.includes(i))await this.sendRequest({topic:i,method:"wc_sessionDelete",params:ct("USER_DISCONNECTED"),throwOnFailedPublish:!0}),await this.deleteSession({topic:i,emitEvent:!1});else if(this.client.core.pairing.pairings.keys.includes(i))await this.client.core.pairing.disconnect({topic:i});else{const{message:n}=se("MISMATCHED_TOPIC",`Session or pairing topic not found: ${i}`);throw new Error(n)}},this.find=t=>(this.isInitialized(),this.client.session.getAll().filter(i=>yy(i,t))),this.getPendingSessionRequests=()=>this.client.pendingRequest.getAll(),this.authenticate=async(t,i)=>{var n;this.isInitialized(),this.isValidAuthenticate(t);const s=i&&this.client.core.linkModeSupportedApps.includes(i)&&((n=this.client.metadata.redirect)==null?void 0:n.linkMode),o=s?ht.link_mode:ht.relay;o===ht.relay&&await this.confirmOnlineStateOrThrow();const{chains:f,statement:u="",uri:h,domain:g,nonce:y,type:I,exp:M,nbf:D,methods:N=[],expiry:k}=t,K=[...t.resources||[]],{topic:C,uri:j}=await this.client.core.pairing.create({methods:["wc_sessionAuthenticate"],transportType:o});this.client.logger.info({message:"Generated new pairing",pairing:{topic:C,uri:j}});const F=await this.client.core.crypto.generateKeyPair(),U=Aa(F);if(await Promise.all([this.client.auth.authKeys.set(Ca,{responseTopic:U,publicKey:F}),this.client.auth.pairingTopics.set(U,{topic:U,pairingTopic:C})]),await this.client.core.relayer.subscribe(U,{transportType:o}),this.client.logger.info(`sending request to new pairing topic: ${C}`),N.length>0){const{namespace:E}=ya(f[0]);let x=$m(E,"request",N);xa(K)&&(x=km(x,K.pop())),K.push(x)}const z=k&&k>Rt.wc_sessionAuthenticate.req.ttl?k:Rt.wc_sessionAuthenticate.req.ttl,_={authPayload:{type:I??"caip122",chains:f,statement:u,aud:h,domain:g,version:"1",nonce:y,iat:new Date().toISOString(),exp:M,nbf:D,resources:K},requester:{publicKey:F,metadata:this.client.metadata},expiryTimestamp:_t(z)},R={eip155:{chains:f,methods:[...new Set(["personal_sign",...N])],events:["chainChanged","accountsChanged"]}},J={requiredNamespaces:{},optionalNamespaces:R,relays:[{protocol:"irn"}],pairingTopic:C,proposer:{publicKey:F,metadata:this.client.metadata},expiryTimestamp:_t(Rt.wc_sessionPropose.req.ttl)},{done:Q,resolve:P,reject:p}=Xi(z,"Request expired"),l=async({error:E,session:x})=>{if(this.events.off(Ye("session_request",c),a),E)p(E);else if(x){x.self.publicKey=F,await this.client.session.set(x.topic,x),await this.setExpiry(x.topic,x.expiry),C&&await this.client.core.pairing.updateMetadata({topic:C,metadata:x.peer.metadata});const d=this.client.session.get(x.topic);await this.deleteProposal(b),P({session:d})}},a=async E=>{var x,d,w;if(await this.deletePendingAuthRequest(c,{message:"fulfilled",code:0}),E.error){const q=ct("WC_METHOD_UNSUPPORTED","wc_sessionAuthenticate");return E.error.code===q.code?void 0:(this.events.off(Ye("session_connect"),l),p(E.error.message))}await this.deleteProposal(b),this.events.off(Ye("session_connect"),l);const{cacaos:v,responder:O}=E.result,W=[],S=[];for(const q of v){await zu({cacao:q,projectId:this.client.core.projectId})||(this.client.logger.error(q,"Signature verification failed"),p(ct("SESSION_SETTLEMENT_FAILED","Signature verification failed")));const{p:B}=q,m=xa(B.resources),L=[tf(B.iss)],G=_a(B.iss);if(m){const Y=ju(m),X=Hu(m);W.push(...Y),L.push(...X)}for(const Y of L)S.push(`${Y}:${G}`)}const H=await this.client.core.crypto.generateSharedKey(F,O.publicKey);let T;W.length>0&&(T={topic:H,acknowledged:!0,self:{publicKey:F,metadata:this.client.metadata},peer:O,controller:O.publicKey,expiry:_t(Fn),requiredNamespaces:{},optionalNamespaces:{},relay:{protocol:"irn"},pairingTopic:C,namespaces:s0([...new Set(W)],[...new Set(S)]),transportType:o},await this.client.core.relayer.subscribe(H,{transportType:o}),await this.client.session.set(H,T),C&&await this.client.core.pairing.updateMetadata({topic:C,metadata:O.metadata}),T=this.client.session.get(H)),(x=this.client.metadata.redirect)!=null&&x.linkMode&&(d=O.metadata.redirect)!=null&&d.linkMode&&(w=O.metadata.redirect)!=null&&w.universal&&i&&(this.client.core.addLinkModeSupportedApp(O.metadata.redirect.universal),this.client.session.update(H,{transportType:ht.link_mode})),P({auths:v,session:T})},c=hi(),b=hi();this.events.once(Ye("session_connect"),l),this.events.once(Ye("session_request",c),a);let A;try{if(s){const E=rn("wc_sessionAuthenticate",_,c);this.client.core.history.set(C,E);const x=await this.client.core.crypto.encode("",E,{type:fs,encoding:as});A=Sa(i,C,x)}else await Promise.all([this.sendRequest({topic:C,method:"wc_sessionAuthenticate",params:_,expiry:t.expiry,throwOnFailedPublish:!0,clientRpcId:c}),this.sendRequest({topic:C,method:"wc_sessionPropose",params:J,expiry:Rt.wc_sessionPropose.req.ttl,throwOnFailedPublish:!0,clientRpcId:b})])}catch(E){throw this.events.off(Ye("session_connect"),l),this.events.off(Ye("session_request",c),a),E}return await this.setProposal(b,gt({id:b},J)),await this.setAuthRequest(c,{request:Fr(gt({},_),{verifyContext:{}}),pairingTopic:C,transportType:o}),{uri:A??j,response:Q}},this.approveSessionAuthenticate=async t=>{const{id:i,auths:n}=t,s=this.client.core.eventClient.createEvent({properties:{topic:i.toString(),trace:[an.authenticated_session_approve_started]}});try{this.isInitialized()}catch(k){throw s.setError(vs.no_internet_connection),k}const o=this.getPendingAuthRequest(i);if(!o)throw s.setError(vs.authenticated_session_pending_request_not_found),new Error(`Could not find pending auth request with id ${i}`);const f=o.transportType||ht.relay;f===ht.relay&&await this.confirmOnlineStateOrThrow();const u=o.requester.publicKey,h=await this.client.core.crypto.generateKeyPair(),g=Aa(u),y={type:ai,receiverPublicKey:u,senderPublicKey:h},I=[],M=[];for(const k of n){if(!await zu({cacao:k,projectId:this.client.core.projectId})){s.setError(vs.invalid_cacao);const U=ct("SESSION_SETTLEMENT_FAILED","Signature verification failed");throw await this.sendError({id:i,topic:g,error:U,encodeOpts:y}),new Error(U.message)}s.addTrace(an.cacaos_verified);const{p:K}=k,C=xa(K.resources),j=[tf(K.iss)],F=_a(K.iss);if(C){const U=ju(C),z=Hu(C);I.push(...U),j.push(...z)}for(const U of j)M.push(`${U}:${F}`)}const D=await this.client.core.crypto.generateSharedKey(h,u);s.addTrace(an.create_authenticated_session_topic);let N;if(I?.length>0){N={topic:D,acknowledged:!0,self:{publicKey:h,metadata:this.client.metadata},peer:{publicKey:u,metadata:o.requester.metadata},controller:u,expiry:_t(Fn),authentication:n,requiredNamespaces:{},optionalNamespaces:{},relay:{protocol:"irn"},pairingTopic:o.pairingTopic,namespaces:s0([...new Set(I)],[...new Set(M)]),transportType:f},s.addTrace(an.subscribing_authenticated_session_topic);try{await this.client.core.relayer.subscribe(D,{transportType:f})}catch(k){throw s.setError(vs.subscribe_authenticated_session_topic_failure),k}s.addTrace(an.subscribe_authenticated_session_topic_success),await this.client.session.set(D,N),s.addTrace(an.store_authenticated_session),await this.client.core.pairing.updateMetadata({topic:o.pairingTopic,metadata:o.requester.metadata})}s.addTrace(an.publishing_authenticated_session_approve);try{await this.sendResult({topic:g,id:i,result:{cacaos:n,responder:{publicKey:h,metadata:this.client.metadata}},encodeOpts:y,throwOnFailedPublish:!0,appLink:this.getAppLinkIfEnabled(o.requester.metadata,f)})}catch(k){throw s.setError(vs.authenticated_session_approve_publish_failure),k}return await this.client.auth.requests.delete(i,{message:"fulfilled",code:0}),await this.client.core.pairing.activate({topic:o.pairingTopic}),this.client.core.eventClient.deleteEvent({eventId:s.eventId}),{session:N}},this.rejectSessionAuthenticate=async t=>{this.isInitialized();const{id:i,reason:n}=t,s=this.getPendingAuthRequest(i);if(!s)throw new Error(`Could not find pending auth request with id ${i}`);s.transportType===ht.relay&&await this.confirmOnlineStateOrThrow();const o=s.requester.publicKey,f=await this.client.core.crypto.generateKeyPair(),u=Aa(o),h={type:ai,receiverPublicKey:o,senderPublicKey:f};await this.sendError({id:i,topic:u,error:n,encodeOpts:h,rpcOpts:Rt.wc_sessionAuthenticate.reject,appLink:this.getAppLinkIfEnabled(s.requester.metadata,s.transportType)}),await this.client.auth.requests.delete(i,{message:"rejected",code:0}),await this.client.proposal.delete(i,ct("USER_DISCONNECTED"))},this.formatAuthMessage=t=>{this.isInitialized();const{request:i,iss:n}=t;return ku(i,n)},this.processRelayMessageCache=()=>{setTimeout(async()=>{if(this.relayMessageCache.length!==0)for(;this.relayMessageCache.length>0;)try{const t=this.relayMessageCache.shift();t&&await this.onRelayMessage(t)}catch(t){this.client.logger.error(t)}},50)},this.cleanupDuplicatePairings=async t=>{if(t.pairingTopic)try{const i=this.client.core.pairing.pairings.get(t.pairingTopic),n=this.client.core.pairing.pairings.getAll().filter(s=>{var o,f;return((o=s.peerMetadata)==null?void 0:o.url)&&((f=s.peerMetadata)==null?void 0:f.url)===t.peer.metadata.url&&s.topic&&s.topic!==i.topic});if(n.length===0)return;this.client.logger.info(`Cleaning up ${n.length} duplicate pairing(s)`),await Promise.all(n.map(s=>this.client.core.pairing.disconnect({topic:s.topic}))),this.client.logger.info("Duplicate pairings clean up finished")}catch(i){this.client.logger.error(i)}},this.deleteSession=async t=>{var i;const{topic:n,expirerHasDeleted:s=!1,emitEvent:o=!0,id:f=0}=t,{self:u}=this.client.session.get(n);await this.client.core.relayer.unsubscribe(n),await this.client.session.delete(n,ct("USER_DISCONNECTED")),this.addToRecentlyDeleted(n,"session"),this.client.core.crypto.keychain.has(u.publicKey)&&await this.client.core.crypto.deleteKeyPair(u.publicKey),this.client.core.crypto.keychain.has(n)&&await this.client.core.crypto.deleteSymKey(n),s||this.client.core.expirer.del(n),this.client.core.storage.removeItem(pd).catch(h=>this.client.logger.warn(h)),this.getPendingSessionRequests().forEach(h=>{h.topic===n&&this.deletePendingSessionRequest(h.id,ct("USER_DISCONNECTED"))}),n===((i=this.sessionRequestQueue.queue[0])==null?void 0:i.topic)&&(this.sessionRequestQueue.state=Zr.idle),o&&this.client.events.emit("session_delete",{id:f,topic:n})},this.deleteProposal=async(t,i)=>{if(i)try{const n=this.client.proposal.get(t);this.client.core.eventClient.getEvent({topic:n.pairingTopic})?.setError(sn.proposal_expired)}catch{}await Promise.all([this.client.proposal.delete(t,ct("USER_DISCONNECTED")),i?Promise.resolve():this.client.core.expirer.del(t)]),this.addToRecentlyDeleted(t,"proposal")},this.deletePendingSessionRequest=async(t,i,n=!1)=>{await Promise.all([this.client.pendingRequest.delete(t,i),n?Promise.resolve():this.client.core.expirer.del(t)]),this.addToRecentlyDeleted(t,"request"),this.sessionRequestQueue.queue=this.sessionRequestQueue.queue.filter(s=>s.id!==t),n&&(this.sessionRequestQueue.state=Zr.idle,this.client.events.emit("session_request_expire",{id:t}))},this.deletePendingAuthRequest=async(t,i,n=!1)=>{await Promise.all([this.client.auth.requests.delete(t,i),n?Promise.resolve():this.client.core.expirer.del(t)])},this.setExpiry=async(t,i)=>{this.client.session.keys.includes(t)&&(this.client.core.expirer.set(t,i),await this.client.session.update(t,{expiry:i}))},this.setProposal=async(t,i)=>{this.client.core.expirer.set(t,_t(Rt.wc_sessionPropose.req.ttl)),await this.client.proposal.set(t,i)},this.setAuthRequest=async(t,i)=>{const{request:n,pairingTopic:s,transportType:o=ht.relay}=i;this.client.core.expirer.set(t,n.expiryTimestamp),await this.client.auth.requests.set(t,{authPayload:n.authPayload,requester:n.requester,expiryTimestamp:n.expiryTimestamp,id:t,pairingTopic:s,verifyContext:n.verifyContext,transportType:o})},this.setPendingSessionRequest=async t=>{const{id:i,topic:n,params:s,verifyContext:o}=t,f=s.request.expiryTimestamp||_t(Rt.wc_sessionRequest.req.ttl);this.client.core.expirer.set(i,f),await this.client.pendingRequest.set(i,{id:i,topic:n,params:s,verifyContext:o})},this.sendRequest=async t=>{const{topic:i,method:n,params:s,expiry:o,relayRpcId:f,clientRpcId:u,throwOnFailedPublish:h,appLink:g}=t,y=rn(n,s,u);let I;const M=!!g;try{const k=M?as:Ti;I=await this.client.core.crypto.encode(i,y,{encoding:k})}catch(k){throw await this.cleanup(),this.client.logger.error(`sendRequest() -> core.crypto.encode() for topic ${i} failed`),k}let D;if(I8.includes(n)){const k=oi(JSON.stringify(y)),K=oi(I);D=await this.client.core.verify.register({id:K,decryptedId:k})}const N=Rt[n].req;if(N.attestation=D,o&&(N.ttl=o),f&&(N.id=f),this.client.core.history.set(i,y),M){const k=Sa(g,i,I);await global.Linking.openURL(k,this.client.name)}else{const k=Rt[n].req;o&&(k.ttl=o),f&&(k.id=f),h?(k.internal=Fr(gt({},k.internal),{throwOnFailedPublish:!0}),await this.client.core.relayer.publish(i,I,k)):this.client.core.relayer.publish(i,I,k).catch(K=>this.client.logger.error(K))}return y.id},this.sendResult=async t=>{const{id:i,topic:n,result:s,throwOnFailedPublish:o,encodeOpts:f,appLink:u}=t,h=df(i,s);let g;const y=u&&typeof(global==null?void 0:global.Linking)<"u";try{const M=y?as:Ti;g=await this.client.core.crypto.encode(n,h,Fr(gt({},f||{}),{encoding:M}))}catch(M){throw await this.cleanup(),this.client.logger.error(`sendResult() -> core.crypto.encode() for topic ${n} failed`),M}let I;try{I=await this.client.core.history.get(n,i)}catch(M){throw this.client.logger.error(`sendResult() -> history.get(${n}, ${i}) failed`),M}if(y){const M=Sa(u,n,g);await global.Linking.openURL(M,this.client.name)}else{const M=Rt[I.request.method].res;o?(M.internal=Fr(gt({},M.internal),{throwOnFailedPublish:!0}),await this.client.core.relayer.publish(n,g,M)):this.client.core.relayer.publish(n,g,M).catch(D=>this.client.logger.error(D))}await this.client.core.history.resolve(h)},this.sendError=async t=>{const{id:i,topic:n,error:s,encodeOpts:o,rpcOpts:f,appLink:u}=t,h=lf(i,s);let g;const y=u&&typeof(global==null?void 0:global.Linking)<"u";try{const M=y?as:Ti;g=await this.client.core.crypto.encode(n,h,Fr(gt({},o||{}),{encoding:M}))}catch(M){throw await this.cleanup(),this.client.logger.error(`sendError() -> core.crypto.encode() for topic ${n} failed`),M}let I;try{I=await this.client.core.history.get(n,i)}catch(M){throw this.client.logger.error(`sendError() -> history.get(${n}, ${i}) failed`),M}if(y){const M=Sa(u,n,g);await global.Linking.openURL(M,this.client.name)}else{const M=f||Rt[I.request.method].res;this.client.core.relayer.publish(n,g,M)}await this.client.core.history.resolve(h)},this.cleanup=async()=>{const t=[],i=[];this.client.session.getAll().forEach(n=>{let s=!1;Ci(n.expiry)&&(s=!0),this.client.core.crypto.keychain.has(n.topic)||(s=!0),s&&t.push(n.topic)}),this.client.proposal.getAll().forEach(n=>{Ci(n.expiryTimestamp)&&i.push(n.id)}),await Promise.all([...t.map(n=>this.deleteSession({topic:n})),...i.map(n=>this.deleteProposal(n))])},this.onRelayEventRequest=async t=>{this.requestQueue.queue.push(t),await this.processRequestsQueue()},this.processRequestsQueue=async()=>{if(this.requestQueue.state===Zr.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=Zr.active;const t=this.requestQueue.queue.shift();if(t)try{await this.processRequest(t)}catch(i){this.client.logger.warn(i)}}this.requestQueue.state=Zr.idle},this.processRequest=async t=>{const{topic:i,payload:n,attestation:s,transportType:o,encryptedId:f}=t,u=n.method;if(!this.shouldIgnorePairingRequest({topic:i,requestMethod:u}))switch(u){case"wc_sessionPropose":return await this.onSessionProposeRequest({topic:i,payload:n,attestation:s,encryptedId:f});case"wc_sessionSettle":return await this.onSessionSettleRequest(i,n);case"wc_sessionUpdate":return await this.onSessionUpdateRequest(i,n);case"wc_sessionExtend":return await this.onSessionExtendRequest(i,n);case"wc_sessionPing":return await this.onSessionPingRequest(i,n);case"wc_sessionDelete":return await this.onSessionDeleteRequest(i,n);case"wc_sessionRequest":return await this.onSessionRequest({topic:i,payload:n,attestation:s,encryptedId:f,transportType:o});case"wc_sessionEvent":return await this.onSessionEventRequest(i,n);case"wc_sessionAuthenticate":return await this.onSessionAuthenticateRequest({topic:i,payload:n,attestation:s,encryptedId:f,transportType:o});default:return this.client.logger.info(`Unsupported request method ${u}`)}},this.onRelayEventResponse=async t=>{const{topic:i,payload:n,transportType:s}=t,o=(await this.client.core.history.get(i,n.id)).request.method;switch(o){case"wc_sessionPropose":return this.onSessionProposeResponse(i,n,s);case"wc_sessionSettle":return this.onSessionSettleResponse(i,n);case"wc_sessionUpdate":return this.onSessionUpdateResponse(i,n);case"wc_sessionExtend":return this.onSessionExtendResponse(i,n);case"wc_sessionPing":return this.onSessionPingResponse(i,n);case"wc_sessionRequest":return this.onSessionRequestResponse(i,n);case"wc_sessionAuthenticate":return this.onSessionAuthenticateResponse(i,n);default:return this.client.logger.info(`Unsupported response method ${o}`)}},this.onRelayEventUnknownPayload=t=>{const{topic:i}=t,{message:n}=se("MISSING_OR_INVALID",`Decoded payload on topic ${i} is not identifiable as a JSON-RPC request or a response.`);throw new Error(n)},this.shouldIgnorePairingRequest=t=>{const{topic:i,requestMethod:n}=t,s=this.expectedPairingMethodMap.get(i);return!s||s.includes(n)?!1:!!(s.includes("wc_sessionAuthenticate")&&this.client.events.listenerCount("session_authenticate")>0)},this.onSessionProposeRequest=async t=>{const{topic:i,payload:n,attestation:s,encryptedId:o}=t,{params:f,id:u}=n;try{const h=this.client.core.eventClient.getEvent({topic:i});this.client.events.listenerCount("session_proposal")===0&&(console.warn("No listener for session_proposal event"),h?.setError(ui.proposal_listener_not_found)),this.isValidConnect(gt({},n.params));const g=f.expiryTimestamp||_t(Rt.wc_sessionPropose.req.ttl),y=gt({id:u,pairingTopic:i,expiryTimestamp:g},f);await this.setProposal(u,y);const I=await this.getVerifyContext({attestationId:s,hash:oi(JSON.stringify(n)),encryptedId:o,metadata:y.proposer.metadata});h?.addTrace(Xr.emit_session_proposal),this.client.events.emit("session_proposal",{id:u,params:y,verifyContext:I})}catch(h){await this.sendError({id:u,topic:i,error:h,rpcOpts:Rt.wc_sessionPropose.autoReject}),this.client.logger.error(h)}},this.onSessionProposeResponse=async(t,i,n)=>{const{id:s}=i;if(Yr(i)){const{result:o}=i;this.client.logger.trace({type:"method",method:"onSessionProposeResponse",result:o});const f=this.client.proposal.get(s);this.client.logger.trace({type:"method",method:"onSessionProposeResponse",proposal:f});const u=f.proposer.publicKey;this.client.logger.trace({type:"method",method:"onSessionProposeResponse",selfPublicKey:u});const h=o.responderPublicKey;this.client.logger.trace({type:"method",method:"onSessionProposeResponse",peerPublicKey:h});const g=await this.client.core.crypto.generateSharedKey(u,h);this.client.logger.trace({type:"method",method:"onSessionProposeResponse",sessionTopic:g});const y=await this.client.core.relayer.subscribe(g,{transportType:n});this.client.logger.trace({type:"method",method:"onSessionProposeResponse",subscriptionId:y}),await this.client.core.pairing.activate({topic:t})}else if(_r(i)){await this.client.proposal.delete(s,ct("USER_DISCONNECTED"));const o=Ye("session_connect");if(this.events.listenerCount(o)===0)throw new Error(`emitting ${o} without any listeners, 954`);this.events.emit(Ye("session_connect"),{error:i.error})}},this.onSessionSettleRequest=async(t,i)=>{const{id:n,params:s}=i;try{this.isValidSessionSettleRequest(s);const{relay:o,controller:f,expiry:u,namespaces:h,sessionProperties:g,sessionConfig:y}=i.params,I=Fr(gt(gt({topic:t,relay:o,expiry:u,namespaces:h,acknowledged:!0,pairingTopic:"",requiredNamespaces:{},optionalNamespaces:{},controller:f.publicKey,self:{publicKey:"",metadata:this.client.metadata},peer:{publicKey:f.publicKey,metadata:f.metadata}},g&&{sessionProperties:g}),y&&{sessionConfig:y}),{transportType:ht.relay}),M=Ye("session_connect");if(this.events.listenerCount(M)===0)throw new Error(`emitting ${M} without any listeners 997`);this.events.emit(Ye("session_connect"),{session:I}),await this.sendResult({id:i.id,topic:t,result:!0,throwOnFailedPublish:!0})}catch(o){await this.sendError({id:n,topic:t,error:o}),this.client.logger.error(o)}},this.onSessionSettleResponse=async(t,i)=>{const{id:n}=i;Yr(i)?(await this.client.session.update(t,{acknowledged:!0}),this.events.emit(Ye("session_approve",n),{})):_r(i)&&(await this.client.session.delete(t,ct("USER_DISCONNECTED")),this.events.emit(Ye("session_approve",n),{error:i.error}))},this.onSessionUpdateRequest=async(t,i)=>{const{params:n,id:s}=i;try{const o=`${t}_session_update`,f=ds.get(o);if(f&&this.isRequestOutOfSync(f,s)){this.client.logger.warn(`Discarding out of sync request - ${s}`),this.sendError({id:s,topic:t,error:ct("INVALID_UPDATE_REQUEST")});return}this.isValidUpdate(gt({topic:t},n));try{ds.set(o,s),await this.client.session.update(t,{namespaces:n.namespaces}),await this.sendResult({id:s,topic:t,result:!0,throwOnFailedPublish:!0})}catch(u){throw ds.delete(o),u}this.client.events.emit("session_update",{id:s,topic:t,params:n})}catch(o){await this.sendError({id:s,topic:t,error:o}),this.client.logger.error(o)}},this.isRequestOutOfSync=(t,i)=>i.toString().slice(0,-3)<t.toString().slice(0,-3),this.onSessionUpdateResponse=(t,i)=>{const{id:n}=i,s=Ye("session_update",n);if(this.events.listenerCount(s)===0)throw new Error(`emitting ${s} without any listeners`);Yr(i)?this.events.emit(Ye("session_update",n),{}):_r(i)&&this.events.emit(Ye("session_update",n),{error:i.error})},this.onSessionExtendRequest=async(t,i)=>{const{id:n}=i;try{this.isValidExtend({topic:t}),await this.setExpiry(t,_t(Fn)),await this.sendResult({id:n,topic:t,result:!0,throwOnFailedPublish:!0}),this.client.events.emit("session_extend",{id:n,topic:t})}catch(s){await this.sendError({id:n,topic:t,error:s}),this.client.logger.error(s)}},this.onSessionExtendResponse=(t,i)=>{const{id:n}=i,s=Ye("session_extend",n);if(this.events.listenerCount(s)===0)throw new Error(`emitting ${s} without any listeners`);Yr(i)?this.events.emit(Ye("session_extend",n),{}):_r(i)&&this.events.emit(Ye("session_extend",n),{error:i.error})},this.onSessionPingRequest=async(t,i)=>{const{id:n}=i;try{this.isValidPing({topic:t}),await this.sendResult({id:n,topic:t,result:!0,throwOnFailedPublish:!0}),this.client.events.emit("session_ping",{id:n,topic:t})}catch(s){await this.sendError({id:n,topic:t,error:s}),this.client.logger.error(s)}},this.onSessionPingResponse=(t,i)=>{const{id:n}=i,s=Ye("session_ping",n);if(this.events.listenerCount(s)===0)throw new Error(`emitting ${s} without any listeners`);setTimeout(()=>{Yr(i)?this.events.emit(Ye("session_ping",n),{}):_r(i)&&this.events.emit(Ye("session_ping",n),{error:i.error})},500)},this.onSessionDeleteRequest=async(t,i)=>{const{id:n}=i;try{this.isValidDisconnect({topic:t,reason:i.params}),Promise.all([new Promise(s=>{this.client.core.relayer.once(Ot.publish,async()=>{s(await this.deleteSession({topic:t,id:n}))})}),this.sendResult({id:n,topic:t,result:!0,throwOnFailedPublish:!0}),this.cleanupPendingSentRequestsForTopic({topic:t,error:ct("USER_DISCONNECTED")})]).catch(s=>this.client.logger.error(s))}catch(s){this.client.logger.error(s)}},this.onSessionRequest=async t=>{var i,n,s;const{topic:o,payload:f,attestation:u,encryptedId:h,transportType:g}=t,{id:y,params:I}=f;try{await this.isValidRequest(gt({topic:o},I));const M=this.client.session.get(o),D=await this.getVerifyContext({attestationId:u,hash:oi(JSON.stringify(rn("wc_sessionRequest",I,y))),encryptedId:h,metadata:M.peer.metadata,transportType:g}),N={id:y,topic:o,params:I,verifyContext:D};await this.setPendingSessionRequest(N),g===ht.link_mode&&(i=M.peer.metadata.redirect)!=null&&i.universal&&this.client.core.addLinkModeSupportedApp((n=M.peer.metadata.redirect)==null?void 0:n.universal),(s=this.client.signConfig)!=null&&s.disableRequestQueue?this.emitSessionRequest(N):(this.addSessionRequestToSessionRequestQueue(N),this.processSessionRequestQueue())}catch(M){await this.sendError({id:y,topic:o,error:M}),this.client.logger.error(M)}},this.onSessionRequestResponse=(t,i)=>{const{id:n}=i,s=Ye("session_request",n);if(this.events.listenerCount(s)===0)throw new Error(`emitting ${s} without any listeners`);Yr(i)?this.events.emit(Ye("session_request",n),{result:i.result}):_r(i)&&this.events.emit(Ye("session_request",n),{error:i.error})},this.onSessionEventRequest=async(t,i)=>{const{id:n,params:s}=i;try{const o=`${t}_session_event_${s.event.name}`,f=ds.get(o);if(f&&this.isRequestOutOfSync(f,n)){this.client.logger.info(`Discarding out of sync request - ${n}`);return}this.isValidEmit(gt({topic:t},s)),this.client.events.emit("session_event",{id:n,topic:t,params:s}),ds.set(o,n)}catch(o){await this.sendError({id:n,topic:t,error:o}),this.client.logger.error(o)}},this.onSessionAuthenticateResponse=(t,i)=>{const{id:n}=i;this.client.logger.trace({type:"method",method:"onSessionAuthenticateResponse",topic:t,payload:i}),Yr(i)?this.events.emit(Ye("session_request",n),{result:i.result}):_r(i)&&this.events.emit(Ye("session_request",n),{error:i.error})},this.onSessionAuthenticateRequest=async t=>{var i;const{topic:n,payload:s,attestation:o,encryptedId:f,transportType:u}=t;try{const{requester:h,authPayload:g,expiryTimestamp:y}=s.params,I=await this.getVerifyContext({attestationId:o,hash:oi(JSON.stringify(s)),encryptedId:f,metadata:h.metadata,transportType:u}),M={requester:h,pairingTopic:n,id:s.id,authPayload:g,verifyContext:I,expiryTimestamp:y};await this.setAuthRequest(s.id,{request:M,pairingTopic:n,transportType:u}),u===ht.link_mode&&(i=h.metadata.redirect)!=null&&i.universal&&this.client.core.addLinkModeSupportedApp(h.metadata.redirect.universal),this.client.events.emit("session_authenticate",{topic:n,params:s.params,id:s.id,verifyContext:I})}catch(h){this.client.logger.error(h);const g=s.params.requester.publicKey,y=await this.client.core.crypto.generateKeyPair(),I=this.getAppLinkIfEnabled(s.params.requester.metadata,u),M={type:ai,receiverPublicKey:g,senderPublicKey:y};await this.sendError({id:s.id,topic:n,error:h,encodeOpts:M,rpcOpts:Rt.wc_sessionAuthenticate.autoReject,appLink:I})}},this.addSessionRequestToSessionRequestQueue=t=>{this.sessionRequestQueue.queue.push(t)},this.cleanupAfterResponse=t=>{this.deletePendingSessionRequest(t.response.id,{message:"fulfilled",code:0}),setTimeout(()=>{this.sessionRequestQueue.state=Zr.idle,this.processSessionRequestQueue()},ie.toMiliseconds(this.requestQueueDelay))},this.cleanupPendingSentRequestsForTopic=({topic:t,error:i})=>{const n=this.client.core.history.pending;n.length>0&&n.filter(s=>s.topic===t&&s.request.method==="wc_sessionRequest").forEach(s=>{const o=s.request.id,f=Ye("session_request",o);if(this.events.listenerCount(f)===0)throw new Error(`emitting ${f} without any listeners`);this.events.emit(Ye("session_request",s.request.id),{error:i})})},this.processSessionRequestQueue=()=>{if(this.sessionRequestQueue.state===Zr.active){this.client.logger.info("session request queue is already active.");return}const t=this.sessionRequestQueue.queue[0];if(!t){this.client.logger.info("session request queue is empty.");return}try{this.sessionRequestQueue.state=Zr.active,this.emitSessionRequest(t)}catch(i){this.client.logger.error(i)}},this.emitSessionRequest=t=>{this.client.events.emit("session_request",t)},this.onPairingCreated=t=>{if(t.methods&&this.expectedPairingMethodMap.set(t.topic,t.methods),t.active)return;const i=this.client.proposal.getAll().find(n=>n.pairingTopic===t.topic);i&&this.onSessionProposeRequest({topic:t.topic,payload:rn("wc_sessionPropose",{requiredNamespaces:i.requiredNamespaces,optionalNamespaces:i.optionalNamespaces,relays:i.relays,proposer:i.proposer,sessionProperties:i.sessionProperties},i.id)})},this.isValidConnect=async t=>{if(!rr(t)){const{message:u}=se("MISSING_OR_INVALID",`connect() params: ${JSON.stringify(t)}`);throw new Error(u)}const{pairingTopic:i,requiredNamespaces:n,optionalNamespaces:s,sessionProperties:o,relays:f}=t;if(Yt(i)||await this.isValidPairingTopic(i),!Py(f,!0)){const{message:u}=se("MISSING_OR_INVALID",`connect() relays: ${f}`);throw new Error(u)}!Yt(n)&&Ia(n)!==0&&this.validateNamespaces(n,"requiredNamespaces"),!Yt(s)&&Ia(s)!==0&&this.validateNamespaces(s,"optionalNamespaces"),Yt(o)||this.validateSessionProps(o,"sessionProperties")},this.validateNamespaces=(t,i)=>{const n=Ry(t,"connect()",i);if(n)throw new Error(n.message)},this.isValidApprove=async t=>{if(!rr(t))throw new Error(se("MISSING_OR_INVALID",`approve() params: ${t}`).message);const{id:i,namespaces:n,relayProtocol:s,sessionProperties:o}=t;this.checkRecentlyDeleted(i),await this.isValidProposalId(i);const f=this.client.proposal.get(i),u=af(n,"approve()");if(u)throw new Error(u.message);const h=h0(f.requiredNamespaces,n,"approve()");if(h)throw new Error(h.message);if(!mt(s,!0)){const{message:g}=se("MISSING_OR_INVALID",`approve() relayProtocol: ${s}`);throw new Error(g)}Yt(o)||this.validateSessionProps(o,"sessionProperties")},this.isValidReject=async t=>{if(!rr(t)){const{message:s}=se("MISSING_OR_INVALID",`reject() params: ${t}`);throw new Error(s)}const{id:i,reason:n}=t;if(this.checkRecentlyDeleted(i),await this.isValidProposalId(i),!Cy(n)){const{message:s}=se("MISSING_OR_INVALID",`reject() reason: ${JSON.stringify(n)}`);throw new Error(s)}},this.isValidSessionSettleRequest=t=>{if(!rr(t)){const{message:h}=se("MISSING_OR_INVALID",`onSessionSettleRequest() params: ${t}`);throw new Error(h)}const{relay:i,controller:n,namespaces:s,expiry:o}=t;if(!f0(i)){const{message:h}=se("MISSING_OR_INVALID","onSessionSettleRequest() relay protocol should be a string");throw new Error(h)}const f=Ey(n,"onSessionSettleRequest()");if(f)throw new Error(f.message);const u=af(s,"onSessionSettleRequest()");if(u)throw new Error(u.message);if(Ci(o)){const{message:h}=se("EXPIRED","onSessionSettleRequest()");throw new Error(h)}},this.isValidUpdate=async t=>{if(!rr(t)){const{message:u}=se("MISSING_OR_INVALID",`update() params: ${t}`);throw new Error(u)}const{topic:i,namespaces:n}=t;this.checkRecentlyDeleted(i),await this.isValidSessionTopic(i);const s=this.client.session.get(i),o=af(n,"update()");if(o)throw new Error(o.message);const f=h0(s.requiredNamespaces,n,"update()");if(f)throw new Error(f.message)},this.isValidExtend=async t=>{if(!rr(t)){const{message:n}=se("MISSING_OR_INVALID",`extend() params: ${t}`);throw new Error(n)}const{topic:i}=t;this.checkRecentlyDeleted(i),await this.isValidSessionTopic(i)},this.isValidRequest=async t=>{if(!rr(t)){const{message:u}=se("MISSING_OR_INVALID",`request() params: ${t}`);throw new Error(u)}const{topic:i,request:n,chainId:s,expiry:o}=t;this.checkRecentlyDeleted(i),await this.isValidSessionTopic(i);const{namespaces:f}=this.client.session.get(i);if(!c0(f,s)){const{message:u}=se("MISSING_OR_INVALID",`request() chainId: ${s}`);throw new Error(u)}if(!Ty(n)){const{message:u}=se("MISSING_OR_INVALID",`request() ${JSON.stringify(n)}`);throw new Error(u)}if(!Ly(f,s,n.method)){const{message:u}=se("MISSING_OR_INVALID",`request() method: ${n.method}`);throw new Error(u)}if(o&&!zy(o,Sf)){const{message:u}=se("MISSING_OR_INVALID",`request() expiry: ${o}. Expiry must be a number (in seconds) between ${Sf.min} and ${Sf.max}`);throw new Error(u)}},this.isValidRespond=async t=>{var i;if(!rr(t)){const{message:o}=se("MISSING_OR_INVALID",`respond() params: ${t}`);throw new Error(o)}const{topic:n,response:s}=t;try{await this.isValidSessionTopic(n)}catch(o){throw(i=t?.response)!=null&&i.id&&this.cleanupAfterResponse(t),o}if(!Fy(s)){const{message:o}=se("MISSING_OR_INVALID",`respond() response: ${JSON.stringify(s)}`);throw new Error(o)}},this.isValidPing=async t=>{if(!rr(t)){const{message:n}=se("MISSING_OR_INVALID",`ping() params: ${t}`);throw new Error(n)}const{topic:i}=t;await this.isValidSessionOrPairingTopic(i)},this.isValidEmit=async t=>{if(!rr(t)){const{message:f}=se("MISSING_OR_INVALID",`emit() params: ${t}`);throw new Error(f)}const{topic:i,event:n,chainId:s}=t;await this.isValidSessionTopic(i);const{namespaces:o}=this.client.session.get(i);if(!c0(o,s)){const{message:f}=se("MISSING_OR_INVALID",`emit() chainId: ${s}`);throw new Error(f)}if(!By(n)){const{message:f}=se("MISSING_OR_INVALID",`emit() event: ${JSON.stringify(n)}`);throw new Error(f)}if(!qy(o,s,n.name)){const{message:f}=se("MISSING_OR_INVALID",`emit() event: ${JSON.stringify(n)}`);throw new Error(f)}},this.isValidDisconnect=async t=>{if(!rr(t)){const{message:n}=se("MISSING_OR_INVALID",`disconnect() params: ${t}`);throw new Error(n)}const{topic:i}=t;await this.isValidSessionOrPairingTopic(i)},this.isValidAuthenticate=t=>{const{chains:i,uri:n,domain:s,nonce:o}=t;if(!Array.isArray(i)||i.length===0)throw new Error("chains is required and must be a non-empty array");if(!mt(n,!1))throw new Error("uri is required parameter");if(!mt(s,!1))throw new Error("domain is required parameter");if(!mt(o,!1))throw new Error("nonce is required parameter");if([...new Set(i.map(u=>ya(u).namespace))].length>1)throw new Error("Multi-namespace requests are not supported. Please request single namespace only.");const{namespace:f}=ya(i[0]);if(f!=="eip155")throw new Error("Only eip155 namespace is supported for authenticated sessions. Please use .connect() for non-eip155 chains.")},this.getVerifyContext=async t=>{const{attestationId:i,hash:n,encryptedId:s,metadata:o,transportType:f}=t,u={verified:{verifyUrl:o.verifyUrl||bs,validation:"UNKNOWN",origin:o.url||""}};try{if(f===ht.link_mode){const g=this.getAppLinkIfEnabled(o,f);return u.verified.validation=g&&new URL(g).origin===new URL(o.url).origin?"VALID":"INVALID",u}const h=await this.client.core.verify.resolve({attestationId:i,hash:n,encryptedId:s,verifyUrl:o.verifyUrl});h&&(u.verified.origin=h.origin,u.verified.isScam=h.isScam,u.verified.validation=h.origin===new URL(o.url).origin?"VALID":"INVALID")}catch(h){this.client.logger.warn(h)}return this.client.logger.debug(`Verify context: ${JSON.stringify(u)}`),u},this.validateSessionProps=(t,i)=>{Object.values(t).forEach(n=>{if(!mt(n,!1)){const{message:s}=se("MISSING_OR_INVALID",`${i} must be in Record<string, string> format. Received: ${JSON.stringify(n)}`);throw new Error(s)}})},this.getPendingAuthRequest=t=>{const i=this.client.auth.requests.get(t);return typeof i=="object"?i:void 0},this.addToRecentlyDeleted=(t,i)=>{if(this.recentlyDeletedMap.set(t,i),this.recentlyDeletedMap.size>=this.recentlyDeletedLimit){let n=0;const s=this.recentlyDeletedLimit/2;for(const o of this.recentlyDeletedMap.keys()){if(n++>=s)break;this.recentlyDeletedMap.delete(o)}}},this.checkRecentlyDeleted=t=>{const i=this.recentlyDeletedMap.get(t);if(i){const{message:n}=se("MISSING_OR_INVALID",`Record was recently deleted - ${i}: ${t}`);throw new Error(n)}},this.isLinkModeEnabled=(t,i)=>{var n,s,o,f,u,h,g,y,I;return!t||i!==ht.link_mode?!1:((s=(n=this.client.metadata)==null?void 0:n.redirect)==null?void 0:s.linkMode)===!0&&((f=(o=this.client.metadata)==null?void 0:o.redirect)==null?void 0:f.universal)!==void 0&&((h=(u=this.client.metadata)==null?void 0:u.redirect)==null?void 0:h.universal)!==""&&((g=t?.redirect)==null?void 0:g.universal)!==void 0&&((y=t?.redirect)==null?void 0:y.universal)!==""&&((I=t?.redirect)==null?void 0:I.linkMode)===!0&&this.client.core.linkModeSupportedApps.includes(t.redirect.universal)&&typeof(global==null?void 0:global.Linking)<"u"},this.getAppLinkIfEnabled=(t,i)=>{var n;return this.isLinkModeEnabled(t,i)?(n=t?.redirect)==null?void 0:n.universal:void 0},this.handleLinkModeMessage=({url:t})=>{if(!t||!t.includes("wc_ev")||!t.includes("topic"))return;const i=Bu(t,"topic")||"",n=decodeURIComponent(Bu(t,"wc_ev")||""),s=this.client.session.keys.includes(i);s&&this.client.session.update(i,{transportType:ht.link_mode}),this.client.core.dispatchEnvelope({topic:i,message:n,sessionExists:s})},this.registerLinkModeListeners=async()=>{var t;if(Zo()||Pi()&&(t=this.client.metadata.redirect)!=null&&t.linkMode){const i=global==null?void 0:global.Linking;if(typeof i<"u"){i.addEventListener("url",this.handleLinkModeMessage,this.client.name);const n=await i.getInitialURL();n&&setTimeout(()=>{this.handleLinkModeMessage({url:n})},50)}}}}isInitialized(){if(!this.initialized){const{message:e}=se("NOT_INITIALIZED",this.name);throw new Error(e)}}async confirmOnlineStateOrThrow(){await this.client.core.relayer.confirmOnlineStateOrThrow()}registerRelayerEvents(){this.client.core.relayer.on(Ot.message,e=>{!this.initialized||this.relayMessageCache.length>0?this.relayMessageCache.push(e):this.onRelayMessage(e)})}async onRelayMessage(e){const{topic:t,message:i,attestation:n,transportType:s}=e,{publicKey:o}=this.client.auth.authKeys.keys.includes(Ca)?this.client.auth.authKeys.get(Ca):{responseTopic:void 0,publicKey:void 0},f=await this.client.core.crypto.decode(t,i,{receiverPublicKey:o,encoding:s===ht.link_mode?as:Ti});try{pf(f)?(this.client.core.history.set(t,f),this.onRelayEventRequest({topic:t,payload:f,attestation:n,transportType:s,encryptedId:oi(i)})):Oa(f)?(await this.client.core.history.resolve(f),await this.onRelayEventResponse({topic:t,payload:f,transportType:s}),this.client.core.history.delete(t,f.id)):this.onRelayEventUnknownPayload({topic:t,payload:f,transportType:s})}catch(u){this.client.logger.error(u)}}registerExpirerEvents(){this.client.core.expirer.on(Ar.expired,async e=>{const{topic:t,id:i}=Fu(e.target);if(i&&this.client.pendingRequest.keys.includes(i))return await this.deletePendingSessionRequest(i,se("EXPIRED"),!0);if(i&&this.client.auth.requests.keys.includes(i))return await this.deletePendingAuthRequest(i,se("EXPIRED"),!0);t?this.client.session.keys.includes(t)&&(await this.deleteSession({topic:t,expirerHasDeleted:!0}),this.client.events.emit("session_expire",{topic:t})):i&&(await this.deleteProposal(i,!0),this.client.events.emit("proposal_expire",{id:i}))})}registerPairingEvents(){this.client.core.pairing.events.on(nn.create,e=>this.onPairingCreated(e)),this.client.core.pairing.events.on(nn.delete,e=>{this.addToRecentlyDeleted(e.topic,"pairing")})}isValidPairingTopic(e){if(!mt(e,!1)){const{message:t}=se("MISSING_OR_INVALID",`pairing topic should be a string: ${e}`);throw new Error(t)}if(!this.client.core.pairing.pairings.keys.includes(e)){const{message:t}=se("NO_MATCHING_KEY",`pairing topic doesn't exist: ${e}`);throw new Error(t)}if(Ci(this.client.core.pairing.pairings.get(e).expiry)){const{message:t}=se("EXPIRED",`pairing topic: ${e}`);throw new Error(t)}}async isValidSessionTopic(e){if(!mt(e,!1)){const{message:t}=se("MISSING_OR_INVALID",`session topic should be a string: ${e}`);throw new Error(t)}if(this.checkRecentlyDeleted(e),!this.client.session.keys.includes(e)){const{message:t}=se("NO_MATCHING_KEY",`session topic doesn't exist: ${e}`);throw new Error(t)}if(Ci(this.client.session.get(e).expiry)){await this.deleteSession({topic:e});const{message:t}=se("EXPIRED",`session topic: ${e}`);throw new Error(t)}if(!this.client.core.crypto.keychain.has(e)){const{message:t}=se("MISSING_OR_INVALID",`session topic does not exist in keychain: ${e}`);throw await this.deleteSession({topic:e}),new Error(t)}}async isValidSessionOrPairingTopic(e){if(this.checkRecentlyDeleted(e),this.client.session.keys.includes(e))await this.isValidSessionTopic(e);else if(this.client.core.pairing.pairings.keys.includes(e))this.isValidPairingTopic(e);else if(mt(e,!1)){const{message:t}=se("NO_MATCHING_KEY",`session or pairing topic doesn't exist: ${e}`);throw new Error(t)}else{const{message:t}=se("MISSING_OR_INVALID",`session or pairing topic should be a string: ${e}`);throw new Error(t)}}async isValidProposalId(e){if(!Ny(e)){const{message:t}=se("MISSING_OR_INVALID",`proposal id should be a number: ${e}`);throw new Error(t)}if(!this.client.proposal.keys.includes(e)){const{message:t}=se("NO_MATCHING_KEY",`proposal id doesn't exist: ${e}`);throw new Error(t)}if(Ci(this.client.proposal.get(e).expiryTimestamp)){await this.deleteProposal(e);const{message:t}=se("EXPIRED",`proposal id: ${e}`);throw new Error(t)}}}class U8 extends on{constructor(e,t){super(e,t,x8,Af),this.core=e,this.logger=t}}class vd extends on{constructor(e,t){super(e,t,E8,Af),this.core=e,this.logger=t}}class $8 extends on{constructor(e,t){super(e,t,M8,Af,i=>i.id),this.core=e,this.logger=t}}class z8 extends on{constructor(e,t){super(e,t,R8,Na,()=>Ca),this.core=e,this.logger=t}}class k8 extends on{constructor(e,t){super(e,t,P8,Na),this.core=e,this.logger=t}}class K8 extends on{constructor(e,t){super(e,t,N8,Na,i=>i.id),this.core=e,this.logger=t}}class j8{constructor(e,t){this.core=e,this.logger=t,this.authKeys=new z8(this.core,this.logger),this.pairingTopics=new k8(this.core,this.logger),this.requests=new K8(this.core,this.logger)}async init(){await this.authKeys.init(),await this.pairingTopics.init(),await this.requests.init()}}class Mf extends qp{constructor(e){super(e),this.protocol=ud,this.version=dd,this.name=Ef.name,this.events=new Ut.exports.EventEmitter,this.on=(i,n)=>this.events.on(i,n),this.once=(i,n)=>this.events.once(i,n),this.off=(i,n)=>this.events.off(i,n),this.removeListener=(i,n)=>this.events.removeListener(i,n),this.removeAllListeners=i=>this.events.removeAllListeners(i),this.connect=async i=>{try{return await this.engine.connect(i)}catch(n){throw this.logger.error(n.message),n}},this.pair=async i=>{try{return await this.engine.pair(i)}catch(n){throw this.logger.error(n.message),n}},this.approve=async i=>{try{return await this.engine.approve(i)}catch(n){throw this.logger.error(n.message),n}},this.reject=async i=>{try{return await this.engine.reject(i)}catch(n){throw this.logger.error(n.message),n}},this.update=async i=>{try{return await this.engine.update(i)}catch(n){throw this.logger.error(n.message),n}},this.extend=async i=>{try{return await this.engine.extend(i)}catch(n){throw this.logger.error(n.message),n}},this.request=async i=>{try{return await this.engine.request(i)}catch(n){throw this.logger.error(n.message),n}},this.respond=async i=>{try{return await this.engine.respond(i)}catch(n){throw this.logger.error(n.message),n}},this.ping=async i=>{try{return await this.engine.ping(i)}catch(n){throw this.logger.error(n.message),n}},this.emit=async i=>{try{return await this.engine.emit(i)}catch(n){throw this.logger.error(n.message),n}},this.disconnect=async i=>{try{return await this.engine.disconnect(i)}catch(n){throw this.logger.error(n.message),n}},this.find=i=>{try{return this.engine.find(i)}catch(n){throw this.logger.error(n.message),n}},this.getPendingSessionRequests=()=>{try{return this.engine.getPendingSessionRequests()}catch(i){throw this.logger.error(i.message),i}},this.authenticate=async(i,n)=>{try{return await this.engine.authenticate(i,n)}catch(s){throw this.logger.error(s.message),s}},this.formatAuthMessage=i=>{try{return this.engine.formatAuthMessage(i)}catch(n){throw this.logger.error(n.message),n}},this.approveSessionAuthenticate=async i=>{try{return await this.engine.approveSessionAuthenticate(i)}catch(n){throw this.logger.error(n.message),n}},this.rejectSessionAuthenticate=async i=>{try{return await this.engine.rejectSessionAuthenticate(i)}catch(n){throw this.logger.error(n.message),n}},this.name=e?.name||Ef.name,this.metadata=e?.metadata||Ru(),this.signConfig=e?.signConfig;const t=typeof e?.logger<"u"&&typeof e?.logger!="string"?e.logger:ei(to({level:e?.logger||Ef.logger}));this.core=e?.core||new xf(e),this.logger=Vt(t,this.name),this.session=new vd(this.core,this.logger),this.proposal=new U8(this.core,this.logger),this.pendingRequest=new $8(this.core,this.logger),this.engine=new q8(this),this.auth=new j8(this.core,this.logger)}static async init(e){const t=new Mf(e);return await t.initialize(),t}get context(){return Xt(this.logger)}get pairing(){return this.core.pairing.pairings}async initialize(){this.logger.trace("Initialized");try{await this.core.start(),await this.session.init(),await this.proposal.init(),await this.pendingRequest.init(),await this.auth.init(),await this.engine.init(),this.logger.info("SignClient Initialization Success"),setTimeout(()=>{this.engine.processRelayMessageCache()},ie.toMiliseconds(ie.ONE_SECOND))}catch(e){throw this.logger.info("SignClient Initialization Failure"),this.logger.error(e.message),e}}}const H8=vd,V8=Mf;class G8 extends Ut.exports{constructor(){super()}}class md{constructor(e){this.opts=e}}class yd{constructor(e){this.client=e}}class wd{constructor(e){this.engine=e}}var W8=Object.defineProperty,J8=Object.defineProperties,Y8=Object.getOwnPropertyDescriptors,_d=Object.getOwnPropertySymbols,Q8=Object.prototype.hasOwnProperty,X8=Object.prototype.propertyIsEnumerable,xd=(r,e,t)=>e in r?W8(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,If=(r,e)=>{for(var t in e||(e={}))Q8.call(e,t)&&xd(r,t,e[t]);if(_d)for(var t of _d(e))X8.call(e,t)&&xd(r,t,e[t]);return r},Df=(r,e)=>J8(r,Y8(e));class Z8 extends wd{constructor(e){super(e),this.engine=e,this.prepareFulfilment=async t=>{if(console.log("prepareFulfilment",t),!this.prepareFulfilmentHandler)throw new Error(`prepareFulfilmentHandler not found for environment: '${Nr()}'`);const{transaction:i}=t,n=await this.prepareFulfilmentHandler({transaction:i,projectId:this.projectId});switch(console.log("prepareFulfilment processing result..",n),n.status){case Li.error:return{status:Li.error,reason:n.reason};case Li.not_required:return{status:Li.not_required};case Li.available:const s=n.data;return{status:Li.available,data:{fulfilmentId:s.orchestrationId,checkIn:s.checkIn,transactions:s.transactions,funding:s.metadata.fundingFrom,initialTransaction:s.initialTransaction,initialTransactionMetadata:s.metadata.initialTransaction}};default:throw new Error(`Invalid prepareFulfilment status: ${JSON.stringify(n)}`)}},this.fulfilmentStatus=async t=>{if(!this.fulfilmentStatusHandler)throw new Error(`fulfilmentStatusHandler not found for environment: '${Nr()}'`);const{fulfilmentId:i}=t;console.log("fulfilmentStatus",t);const n=await this.fulfilmentStatusHandler({orchestrationId:i,projectId:this.projectId});if(n.status===kf.error)throw new Error(n.reason);return console.log("fulfilmentStatus result",n),n},this.estimateFees=async t=>{if(!this.estimateFeesHandler)throw new Error(`estimateFeesHandler not found for environment: '${Nr()}'`);const i=await this.estimateFeesHandler(Df(If({},t),{projectId:this.projectId}));return console.log("estimateFees result",i),i},this.getERC20Balance=async t=>{if(!this.getERC20BalanceHandler)throw new Error(`getERC20BalanceHandler not found for environment: '${Nr()}'`);const i=await this.getERC20BalanceHandler(Df(If({},t),{projectId:this.projectId}));return console.log("getERC20Balance result",i),i},this.getFulfilmentDetails=async t=>{if(!this.getFulfilmentDetailsHandler)throw new Error(`getFulfilmentDetailsHandler not found for environment: '${Nr()}'`);const i=await this.getFulfilmentDetailsHandler(Df(If({},t),{projectId:this.projectId}));console.log("getFulfilmentDetails handler result",i);const n=[];for(const u of i.bridge)n.push({fee:u.fee,localFee:u.localFee});const s=[];for(const u of i.route)s.push({transaction:u.transaction,eip1559:u.estimate,transactionFee:u.fee});const o={transaction:i.initial.transaction,eip1559:i.initial.estimate,transactionFee:i.initial.fee},f=i.localTotal;return console.log("getFulfilmentDetails parsed result",{routeDetails:s,initialTransactionDetails:o,bridgeDetails:n,totalFee:f}),{routeDetails:s,initialTransactionDetails:o,bridgeDetails:n,totalFee:f}},this.loadHandlers=()=>{switch(Nr()){case Kt.reactNative:return this.ReactNative();case Kt.browser:return this.Browser();case Kt.node:return this.Node()}},this.ReactNative=()=>{const t=global==null?void 0:global.yttrium;if(!t){console.warn("React Native Yttrium not found in global scope");return}this.prepareFulfilmentHandler=t.prepapre,this.fulfilmentStatusHandler=t.status,this.estimateFeesHandler=t.estimateFees,this.getERC20BalanceHandler=t.getERC20Balance,this.getFulfilmentDetailsHandler=t.getBridgeDetails},this.Browser=()=>{console.warn("Yttrium not available in browser environment")},this.Node=()=>{const t=global==null?void 0:global.yttrium;t||console.warn("Yttrium not available in node environment"),this.prepareFulfilmentHandler=t.prepapre,this.fulfilmentStatusHandler=t.status,this.estimateFeesHandler=t.estimateFees,this.getERC20BalanceHandler=t.getERC20Balance,this.getFulfilmentDetailsHandler=t.getBridgeDetails},this.loadHandlers(),this.projectId=this.engine.client.core.projectId||""}}var e4=Object.defineProperty,t4=Object.defineProperties,r4=Object.getOwnPropertyDescriptors,Ad=Object.getOwnPropertySymbols,i4=Object.prototype.hasOwnProperty,n4=Object.prototype.propertyIsEnumerable,Ed=(r,e,t)=>e in r?e4(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,s4=(r,e)=>{for(var t in e||(e={}))i4.call(e,t)&&Ed(r,t,e[t]);if(Ad)for(var t of Ad(e))n4.call(e,t)&&Ed(r,t,e[t]);return r},a4=(r,e)=>t4(r,r4(e));class o4 extends yd{constructor(e){super(e),this.init=async()=>{this.signClient=await V8.init({core:this.client.core,metadata:this.client.metadata,signConfig:this.client.signConfig})},this.pair=async t=>{await this.client.core.pairing.pair(t)},this.approveSession=async t=>{const{topic:i,acknowledged:n}=await this.signClient.approve(a4(s4({},t),{id:t.id,namespaces:t.namespaces,sessionProperties:t.sessionProperties,sessionConfig:t.sessionConfig}));return await n(),this.signClient.session.get(i)},this.rejectSession=async t=>await this.signClient.reject(t),this.updateSession=async t=>await this.signClient.update(t),this.extendSession=async t=>await this.signClient.extend(t),this.respondSessionRequest=async t=>await this.signClient.respond(t),this.disconnectSession=async t=>await this.signClient.disconnect(t),this.emitSessionEvent=async t=>await this.signClient.emit(t),this.getActiveSessions=()=>this.signClient.session.getAll().reduce((t,i)=>(t[i.topic]=i,t),{}),this.getPendingSessionProposals=()=>this.signClient.proposal.getAll(),this.getPendingSessionRequests=()=>this.signClient.getPendingSessionRequests(),this.approveSessionAuthenticate=async t=>await this.signClient.approveSessionAuthenticate(t),this.rejectSessionAuthenticate=async t=>await this.signClient.rejectSessionAuthenticate(t),this.formatAuthMessage=t=>this.signClient.formatAuthMessage(t),this.registerDeviceToken=t=>this.client.core.echoClient.registerDeviceToken(t),this.on=(t,i)=>(this.setEvent(t,"off"),this.setEvent(t,"on"),this.client.events.on(t,i)),this.once=(t,i)=>(this.setEvent(t,"off"),this.setEvent(t,"once"),this.client.events.once(t,i)),this.off=(t,i)=>(this.setEvent(t,"off"),this.client.events.off(t,i)),this.removeListener=(t,i)=>(this.setEvent(t,"removeListener"),this.client.events.removeListener(t,i)),this.prepareFulfilment=async t=>await this.chainAbstraction.prepareFulfilment(t),this.fulfilmentStatus=async t=>await this.chainAbstraction.fulfilmentStatus(t),this.estimateFees=async t=>await this.chainAbstraction.estimateFees(t),this.getERC20Balance=async t=>await this.chainAbstraction.getERC20Balance(t),this.getFulfilmentDetails=async t=>await this.chainAbstraction.getFulfilmentDetails(t),this.onSessionRequest=t=>{this.client.events.emit("session_request",t)},this.onSessionProposal=t=>{this.client.events.emit("session_proposal",t)},this.onSessionDelete=t=>{this.client.events.emit("session_delete",t)},this.onProposalExpire=t=>{this.client.events.emit("proposal_expire",t)},this.onSessionRequestExpire=t=>{this.client.events.emit("session_request_expire",t)},this.onSessionRequestAuthenticate=t=>{this.client.events.emit("session_authenticate",t)},this.setEvent=(t,i)=>{switch(t){case"session_request":this.signClient.events[i]("session_request",this.onSessionRequest);break;case"session_proposal":this.signClient.events[i]("session_proposal",this.onSessionProposal);break;case"session_delete":this.signClient.events[i]("session_delete",this.onSessionDelete);break;case"proposal_expire":this.signClient.events[i]("proposal_expire",this.onProposalExpire);break;case"session_request_expire":this.signClient.events[i]("session_request_expire",this.onSessionRequestExpire);break;case"session_authenticate":this.signClient.events[i]("session_authenticate",this.onSessionRequestAuthenticate);break}},this.signClient={},this.chainAbstraction=new Z8(this)}}const f4={decryptMessage:async r=>{const e={core:new xf({storageOptions:r.storageOptions,storage:r.storage})};await e.core.crypto.init();const t=e.core.crypto.decode(r.topic,r.encryptedMessage);return e.core=null,t},getMetadata:async r=>{const e={core:new xf({storageOptions:r.storageOptions,storage:r.storage}),sessionStore:null};e.sessionStore=new H8(e.core,e.core.logger),await e.sessionStore.init();const t=e.sessionStore.get(r.topic),i=t?.peer.metadata;return e.core=null,e.sessionStore=null,i}},Sd=class extends md{constructor(r){super(r),this.events=new Ut.exports,this.on=(e,t)=>this.engine.on(e,t),this.once=(e,t)=>this.engine.once(e,t),this.off=(e,t)=>this.engine.off(e,t),this.removeListener=(e,t)=>this.engine.removeListener(e,t),this.pair=async e=>{try{return await this.engine.pair(e)}catch(t){throw this.logger.error(t.message),t}},this.approveSession=async e=>{try{return await this.engine.approveSession(e)}catch(t){throw this.logger.error(t.message),t}},this.rejectSession=async e=>{try{return await this.engine.rejectSession(e)}catch(t){throw this.logger.error(t.message),t}},this.updateSession=async e=>{try{return await this.engine.updateSession(e)}catch(t){throw this.logger.error(t.message),t}},this.extendSession=async e=>{try{return await this.engine.extendSession(e)}catch(t){throw this.logger.error(t.message),t}},this.respondSessionRequest=async e=>{try{return await this.engine.respondSessionRequest(e)}catch(t){throw this.logger.error(t.message),t}},this.disconnectSession=async e=>{try{return await this.engine.disconnectSession(e)}catch(t){throw this.logger.error(t.message),t}},this.emitSessionEvent=async e=>{try{return await this.engine.emitSessionEvent(e)}catch(t){throw this.logger.error(t.message),t}},this.getActiveSessions=()=>{try{return this.engine.getActiveSessions()}catch(e){throw this.logger.error(e.message),e}},this.getPendingSessionProposals=()=>{try{return this.engine.getPendingSessionProposals()}catch(e){throw this.logger.error(e.message),e}},this.getPendingSessionRequests=()=>{try{return this.engine.getPendingSessionRequests()}catch(e){throw this.logger.error(e.message),e}},this.registerDeviceToken=e=>{try{return this.engine.registerDeviceToken(e)}catch(t){throw this.logger.error(t.message),t}},this.approveSessionAuthenticate=e=>{try{return this.engine.approveSessionAuthenticate(e)}catch(t){throw this.logger.error(t.message),t}},this.rejectSessionAuthenticate=e=>{try{return this.engine.rejectSessionAuthenticate(e)}catch(t){throw this.logger.error(t.message),t}},this.formatAuthMessage=e=>{try{return this.engine.formatAuthMessage(e)}catch(t){throw this.logger.error(t.message),t}},this.prepareFulfilment=async e=>{try{return await this.engine.prepareFulfilment(e)}catch(t){throw this.logger.error(t.message),t}},this.fulfilmentStatus=async e=>{try{return await this.engine.fulfilmentStatus(e)}catch(t){throw this.logger.error(t.message),t}},this.estimateFees=async e=>{try{return await this.engine.estimateFees(e)}catch(t){throw this.logger.error(t.message),t}},this.getERC20Balance=async e=>{try{return await this.engine.getERC20Balance(e)}catch(t){throw this.logger.error(t.message),t}},this.getFulfilmentDetails=async e=>{try{return await this.engine.getFulfilmentDetails(e)}catch(t){throw this.logger.error(t.message),t}},this.metadata=r.metadata,this.name=r.name||$a,this.signConfig=r.signConfig,this.core=r.core,this.logger=this.core.logger,this.engine=new o4(this)}static async init(r){const e=new Sd(r);return await e.initialize(),e}async initialize(){this.logger.trace("Initialized");try{await this.engine.init(),this.logger.info("WalletKit Initialization Success")}catch(r){throw this.logger.info("WalletKit Initialization Failure"),this.logger.error(r.message),r}}};let Of=Sd;Of.notifications=f4;const c4=Of;wt.CAN_FULFIL_STATUS=Li,wt.CLIENT_CONTEXT=$a,wt.CLIENT_STORAGE_OPTIONS=jd,wt.CLIENT_STORAGE_PREFIX=Kd,wt.FULFILMENT_STATUS=kf,wt.IChainAbstraction=wd,wt.IWalletKit=md,wt.IWalletKitEngine=yd,wt.IWalletKitEvents=G8,wt.PROTOCOL=zf,wt.PROTOCOL_VERSION=kd,wt.REQUEST_CONTEXT=Hd,wt.WalletKit=c4,wt.default=Of,Object.defineProperty(wt,"__esModule",{value:!0})});
43
+ ***************************************************************************** */var cf=function(r,e){return cf=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,i){t.__proto__=i}||function(t,i){for(var n in i)i.hasOwnProperty(n)&&(t[n]=i[n])},cf(r,e)};function r6(r,e){cf(r,e);function t(){this.constructor=r}r.prototype=e===null?Object.create(e):(t.prototype=e.prototype,new t)}var hf=function(){return hf=Object.assign||function(e){for(var t,i=1,n=arguments.length;i<n;i++){t=arguments[i];for(var s in t)Object.prototype.hasOwnProperty.call(t,s)&&(e[s]=t[s])}return e},hf.apply(this,arguments)};function i6(r,e){var t={};for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&e.indexOf(i)<0&&(t[i]=r[i]);if(r!=null&&typeof Object.getOwnPropertySymbols=="function")for(var n=0,i=Object.getOwnPropertySymbols(r);n<i.length;n++)e.indexOf(i[n])<0&&Object.prototype.propertyIsEnumerable.call(r,i[n])&&(t[i[n]]=r[i[n]]);return t}function n6(r,e,t,i){var n=arguments.length,s=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,t):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(r,e,t,i);else for(var f=r.length-1;f>=0;f--)(o=r[f])&&(s=(n<3?o(s):n>3?o(e,t,s):o(e,t))||s);return n>3&&s&&Object.defineProperty(e,t,s),s}function s6(r,e){return function(t,i){e(t,i,r)}}function a6(r,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(r,e)}function o6(r,e,t,i){function n(s){return s instanceof t?s:new t(function(o){o(s)})}return new(t||(t=Promise))(function(s,o){function f(g){try{h(i.next(g))}catch(y){o(y)}}function u(g){try{h(i.throw(g))}catch(y){o(y)}}function h(g){g.done?s(g.value):n(g.value).then(f,u)}h((i=i.apply(r,e||[])).next())})}function f6(r,e){var t={label:0,sent:function(){if(s[0]&1)throw s[1];return s[1]},trys:[],ops:[]},i,n,s,o;return o={next:f(0),throw:f(1),return:f(2)},typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function f(h){return function(g){return u([h,g])}}function u(h){if(i)throw new TypeError("Generator is already executing.");for(;t;)try{if(i=1,n&&(s=h[0]&2?n.return:h[0]?n.throw||((s=n.return)&&s.call(n),0):n.next)&&!(s=s.call(n,h[1])).done)return s;switch(n=0,s&&(h=[h[0]&2,s.value]),h[0]){case 0:case 1:s=h;break;case 4:return t.label++,{value:h[1],done:!1};case 5:t.label++,n=h[1],h=[0];continue;case 7:h=t.ops.pop(),t.trys.pop();continue;default:if(s=t.trys,!(s=s.length>0&&s[s.length-1])&&(h[0]===6||h[0]===2)){t=0;continue}if(h[0]===3&&(!s||h[1]>s[0]&&h[1]<s[3])){t.label=h[1];break}if(h[0]===6&&t.label<s[1]){t.label=s[1],s=h;break}if(s&&t.label<s[2]){t.label=s[2],t.ops.push(h);break}s[2]&&t.ops.pop(),t.trys.pop();continue}h=e.call(r,t)}catch(g){h=[6,g],n=0}finally{i=s=0}if(h[0]&5)throw h[1];return{value:h[0]?h[1]:void 0,done:!0}}}function c6(r,e,t,i){i===void 0&&(i=t),r[i]=e[t]}function h6(r,e){for(var t in r)t!=="default"&&!e.hasOwnProperty(t)&&(e[t]=r[t])}function uf(r){var e=typeof Symbol=="function"&&Symbol.iterator,t=e&&r[e],i=0;if(t)return t.call(r);if(r&&typeof r.length=="number")return{next:function(){return r&&i>=r.length&&(r=void 0),{value:r&&r[i++],done:!r}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function v0(r,e){var t=typeof Symbol=="function"&&r[Symbol.iterator];if(!t)return r;var i=t.call(r),n,s=[],o;try{for(;(e===void 0||e-- >0)&&!(n=i.next()).done;)s.push(n.value)}catch(f){o={error:f}}finally{try{n&&!n.done&&(t=i.return)&&t.call(i)}finally{if(o)throw o.error}}return s}function u6(){for(var r=[],e=0;e<arguments.length;e++)r=r.concat(v0(arguments[e]));return r}function d6(){for(var r=0,e=0,t=arguments.length;e<t;e++)r+=arguments[e].length;for(var i=Array(r),n=0,e=0;e<t;e++)for(var s=arguments[e],o=0,f=s.length;o<f;o++,n++)i[n]=s[o];return i}function ps(r){return this instanceof ps?(this.v=r,this):new ps(r)}function l6(r,e,t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var i=t.apply(r,e||[]),n,s=[];return n={},o("next"),o("throw"),o("return"),n[Symbol.asyncIterator]=function(){return this},n;function o(I){i[I]&&(n[I]=function(M){return new Promise(function(D,N){s.push([I,M,D,N])>1||f(I,M)})})}function f(I,M){try{u(i[I](M))}catch(D){y(s[0][3],D)}}function u(I){I.value instanceof ps?Promise.resolve(I.value.v).then(h,g):y(s[0][2],I)}function h(I){f("next",I)}function g(I){f("throw",I)}function y(I,M){I(M),s.shift(),s.length&&f(s[0][0],s[0][1])}}function p6(r){var e,t;return e={},i("next"),i("throw",function(n){throw n}),i("return"),e[Symbol.iterator]=function(){return this},e;function i(n,s){e[n]=r[n]?function(o){return(t=!t)?{value:ps(r[n](o)),done:n==="return"}:s?s(o):o}:s}}function g6(r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=r[Symbol.asyncIterator],t;return e?e.call(r):(r=typeof uf=="function"?uf(r):r[Symbol.iterator](),t={},i("next"),i("throw"),i("return"),t[Symbol.asyncIterator]=function(){return this},t);function i(s){t[s]=r[s]&&function(o){return new Promise(function(f,u){o=r[s](o),n(f,u,o.done,o.value)})}}function n(s,o,f,u){Promise.resolve(u).then(function(h){s({value:h,done:f})},o)}}function b6(r,e){return Object.defineProperty?Object.defineProperty(r,"raw",{value:e}):r.raw=e,r}function v6(r){if(r&&r.__esModule)return r;var e={};if(r!=null)for(var t in r)Object.hasOwnProperty.call(r,t)&&(e[t]=r[t]);return e.default=r,e}function m6(r){return r&&r.__esModule?r:{default:r}}function y6(r,e){if(!e.has(r))throw new TypeError("attempted to get private field on non-instance");return e.get(r)}function w6(r,e,t){if(!e.has(r))throw new TypeError("attempted to set private field on non-instance");return e.set(r,t),t}var _6=Object.freeze({__proto__:null,__extends:r6,get __assign(){return hf},__rest:i6,__decorate:n6,__param:s6,__metadata:a6,__awaiter:o6,__generator:f6,__createBinding:c6,__exportStar:h6,__values:uf,__read:v0,__spread:u6,__spreadArrays:d6,__await:ps,__asyncGenerator:l6,__asyncDelegator:p6,__asyncValues:g6,__makeTemplateObject:b6,__importStar:v6,__importDefault:m6,__classPrivateFieldGet:y6,__classPrivateFieldSet:w6}),x6=Ua(_6),fi={},m0;function A6(){if(m0)return fi;m0=1,Object.defineProperty(fi,"__esModule",{value:!0}),fi.isBrowserCryptoAvailable=fi.getSubtleCrypto=fi.getBrowerCrypto=void 0;function r(){return Nt?.crypto||Nt?.msCrypto||{}}fi.getBrowerCrypto=r;function e(){const i=r();return i.subtle||i.webkitSubtle}fi.getSubtleCrypto=e;function t(){return!!r()&&!!e()}return fi.isBrowserCryptoAvailable=t,fi}var ci={},y0;function E6(){if(y0)return ci;y0=1,Object.defineProperty(ci,"__esModule",{value:!0}),ci.isBrowser=ci.isNode=ci.isReactNative=void 0;function r(){return typeof document>"u"&&typeof navigator<"u"&&navigator.product==="ReactNative"}ci.isReactNative=r;function e(){return typeof process<"u"&&typeof process.versions<"u"&&typeof process.versions.node<"u"}ci.isNode=e;function t(){return!r()&&!e()}return ci.isBrowser=t,ci}(function(r){Object.defineProperty(r,"__esModule",{value:!0});const e=x6;e.__exportStar(A6(),r),e.__exportStar(E6(),r)})(b0);function hi(r=3){const e=Date.now()*Math.pow(10,r),t=Math.floor(Math.random()*Math.pow(10,r));return e+t}function tn(r=6){return BigInt(hi(r))}function rn(r,e,t){return{id:t||hi(),jsonrpc:"2.0",method:r,params:e}}function df(r,e){return{id:r,jsonrpc:"2.0",result:e}}function lf(r,e,t){return{id:r,jsonrpc:"2.0",error:S6(e,t)}}function S6(r,e){return typeof r>"u"?g0(l0):(typeof r=="string"&&(r=Object.assign(Object.assign({},g0(ff)),{message:r})),typeof e<"u"&&(r.data=e),Zy(r.code)&&(r=e6(r.code)),r)}class M6{}class I6 extends M6{constructor(){super()}}class D6 extends I6{constructor(e){super()}}const O6="^wss?:";function R6(r){const e=r.match(new RegExp(/^\w+:/,"gi"));if(!(!e||!e.length))return e[0]}function P6(r,e){const t=R6(r);return typeof t>"u"?!1:new RegExp(e).test(t)}function w0(r){return P6(r,O6)}function N6(r){return new RegExp("wss?://localhost(:d{2,5})?").test(r)}function _0(r){return typeof r=="object"&&"id"in r&&"jsonrpc"in r&&r.jsonrpc==="2.0"}function pf(r){return _0(r)&&"method"in r}function Oa(r){return _0(r)&&(Yr(r)||_r(r))}function Yr(r){return"result"in r}function _r(r){return"error"in r}class C6 extends D6{constructor(e){super(e),this.events=new Ut.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,t){this.events.on(e,t)}once(e,t){this.events.once(e,t)}off(e,t){this.events.off(e,t)}removeListener(e,t){this.events.removeListener(e,t)}async request(e,t){return this.requestStrict(rn(e.method,e.params||[],e.id||tn().toString()),t)}async requestStrict(e,t){return new Promise(async(i,n)=>{if(!this.connection.connected)try{await this.open()}catch(s){n(s)}this.events.on(`${e.id}`,s=>{_r(s)?n(s.error):i(s.result)});try{await this.connection.send(e,t)}catch(s){n(s)}})}setConnection(e=this.connection){return e}onPayload(e){this.events.emit("payload",e),Oa(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 T6=()=>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"),F6=()=>typeof WebSocket<"u"||typeof global<"u"&&typeof global.WebSocket<"u"||typeof window<"u"&&typeof window.WebSocket<"u"||typeof self<"u"&&typeof self.WebSocket<"u",x0=r=>r.split("?")[0],A0=10,B6=T6();class L6{constructor(e){if(this.url=e,this.events=new Ut.exports.EventEmitter,this.registering=!1,!w0(e))throw new Error(`Provided URL is not compatible with WebSocket connection: ${e}`);this.url=e}get connected(){return typeof this.socket<"u"}get connecting(){return this.registering}on(e,t){this.events.on(e,t)}once(e,t){this.events.once(e,t)}off(e,t){this.events.off(e,t)}removeListener(e,t){this.events.removeListener(e,t)}async open(e=this.url){await this.register(e)}async close(){return new Promise((e,t)=>{if(typeof this.socket>"u"){t(new Error("Connection already closed"));return}this.socket.onclose=i=>{this.onClose(i),e()},this.socket.close()})}async send(e){typeof this.socket>"u"&&(this.socket=await this.register());try{this.socket.send(ki(e))}catch(t){this.onError(e.id,t)}}register(e=this.url){if(!w0(e))throw new Error(`Provided URL is not compatible with WebSocket connection: ${e}`);if(this.registering){const t=this.events.getMaxListeners();return(this.events.listenerCount("register_error")>=t||this.events.listenerCount("open")>=t)&&this.events.setMaxListeners(t+1),new Promise((i,n)=>{this.events.once("register_error",s=>{this.resetMaxListeners(),n(s)}),this.events.once("open",()=>{if(this.resetMaxListeners(),typeof this.socket>"u")return n(new Error("WebSocket connection is missing or invalid"));i(this.socket)})})}return this.url=e,this.registering=!0,new Promise((t,i)=>{const n=b0.isReactNative()?void 0:{rejectUnauthorized:!N6(e)},s=new B6(e,[],n);F6()?s.onerror=o=>{const f=o;i(this.emitError(f.error))}:s.on("error",o=>{i(this.emitError(o))}),s.onopen=()=>{this.onOpen(s),t(s)}})}onOpen(e){e.onmessage=t=>this.onPayload(t),e.onclose=t=>this.onClose(t),this.socket=e,this.registering=!1,this.events.emit("open")}onClose(e){this.socket=void 0,this.registering=!1,this.events.emit("close",e)}onPayload(e){if(typeof e.data>"u")return;const t=typeof e.data=="string"?ln(e.data):e.data;this.events.emit("payload",t)}onError(e,t){const i=this.parseError(t),n=i.message||i.toString(),s=lf(e,n);this.events.emit("payload",s)}parseError(e,t=this.url){return t6(e,x0(t),"WS")}resetMaxListeners(){this.events.getMaxListeners()>A0&&this.events.setMaxListeners(A0)}emitError(e){const t=this.parseError(new Error(e?.message||`WebSocket connection failed for host: ${x0(this.url)}`));return this.events.emit("register_error",t),t}}var gf={exports:{}};(function(r,e){var t=200,i="__lodash_hash_undefined__",n=1,s=2,o=9007199254740991,f="[object Arguments]",u="[object Array]",h="[object AsyncFunction]",g="[object Boolean]",y="[object Date]",I="[object Error]",M="[object Function]",D="[object GeneratorFunction]",N="[object Map]",k="[object Number]",K="[object Null]",C="[object Object]",j="[object Promise]",F="[object Proxy]",U="[object RegExp]",z="[object Set]",_="[object String]",R="[object Symbol]",J="[object Undefined]",Q="[object WeakMap]",P="[object ArrayBuffer]",p="[object DataView]",l="[object Float32Array]",a="[object Float64Array]",c="[object Int8Array]",b="[object Int16Array]",A="[object Int32Array]",E="[object Uint8Array]",x="[object Uint8ClampedArray]",d="[object Uint16Array]",w="[object Uint32Array]",v=/[\\^$.*+?()[\]{}|]/g,O=/^\[object .+?Constructor\]$/,W=/^(?:0|[1-9]\d*)$/,S={};S[l]=S[a]=S[c]=S[b]=S[A]=S[E]=S[x]=S[d]=S[w]=!0,S[f]=S[u]=S[P]=S[g]=S[p]=S[y]=S[I]=S[M]=S[N]=S[k]=S[C]=S[U]=S[z]=S[_]=S[Q]=!1;var H=typeof Nt=="object"&&Nt&&Nt.Object===Object&&Nt,T=typeof self=="object"&&self&&self.Object===Object&&self,q=H||T||Function("return this")(),B=e&&!e.nodeType&&e,m=B&&!0&&r&&!r.nodeType&&r,L=m&&m.exports===B,G=L&&H.process,Y=function(){try{return G&&G.binding&&G.binding("util")}catch{}}(),X=Y&&Y.isTypedArray;function ee($,V){for(var Z=-1,be=$==null?0:$.length,ut=0,Ge=[];++Z<be;){var bt=$[Z];V(bt,Z,$)&&(Ge[ut++]=bt)}return Ge}function we($,V){for(var Z=-1,be=V.length,ut=$.length;++Z<be;)$[ut+Z]=V[Z];return $}function Se($,V){for(var Z=-1,be=$==null?0:$.length;++Z<be;)if(V($[Z],Z,$))return!0;return!1}function he($,V){for(var Z=-1,be=Array($);++Z<$;)be[Z]=V(Z);return be}function Pe($){return function(V){return $(V)}}function xe($,V){return $.has(V)}function ae($,V){return $?.[V]}function ve($){var V=-1,Z=Array($.size);return $.forEach(function(be,ut){Z[++V]=[ut,be]}),Z}function le($,V){return function(Z){return $(V(Z))}}function ne($){var V=-1,Z=Array($.size);return $.forEach(function(be){Z[++V]=be}),Z}var ue=Array.prototype,fe=Function.prototype,te=Object.prototype,pe=q["__core-js_shared__"],_e=fe.toString,re=te.hasOwnProperty,Ae=function(){var $=/[^.]+$/.exec(pe&&pe.keys&&pe.keys.IE_PROTO||"");return $?"Symbol(src)_1."+$:""}(),Ee=te.toString,oe=RegExp("^"+_e.call(re).replace(v,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),De=L?q.Buffer:void 0,Me=q.Symbol,Oe=q.Uint8Array,We=te.propertyIsEnumerable,Qe=ue.splice,Ie=Me?Me.toStringTag:void 0,et=Object.getOwnPropertySymbols,tt=De?De.isBuffer:void 0,Ne=le(Object.keys,Object),Te=Bn(q,"DataView"),Ce=Bn(q,"Map"),de=Bn(q,"Promise"),Fe=Bn(q,"Set"),Be=Bn(q,"WeakMap"),ce=Bn(Object,"create"),Ue=fn(Te),$e=fn(Ce),me=fn(de),ze=fn(Fe),ke=fn(Be),ge=Me?Me.prototype:void 0,Le=ge?ge.valueOf:void 0;function Re($){var V=-1,Z=$==null?0:$.length;for(this.clear();++V<Z;){var be=$[V];this.set(be[0],be[1])}}function ye(){this.__data__=ce?ce(null):{},this.size=0}function Ke($){var V=this.has($)&&delete this.__data__[$];return this.size-=V?1:0,V}function it($){var V=this.__data__;if(ce){var Z=V[$];return Z===i?void 0:Z}return re.call(V,$)?V[$]:void 0}function qe($){var V=this.__data__;return ce?V[$]!==void 0:re.call(V,$)}function nt($,V){var Z=this.__data__;return this.size+=this.has($)?0:1,Z[$]=ce&&V===void 0?i:V,this}Re.prototype.clear=ye,Re.prototype.delete=Ke,Re.prototype.get=it,Re.prototype.has=qe,Re.prototype.set=nt;function Je($){var V=-1,Z=$==null?0:$.length;for(this.clear();++V<Z;){var be=$[V];this.set(be[0],be[1])}}function rt(){this.__data__=[],this.size=0}function ir($){var V=this.__data__,Z=Ta(V,$);if(Z<0)return!1;var be=V.length-1;return Z==be?V.pop():Qe.call(V,Z,1),--this.size,!0}function nr($){var V=this.__data__,Z=Ta(V,$);return Z<0?void 0:V[Z][1]}function sr($){return Ta(this.__data__,$)>-1}function ar($,V){var Z=this.__data__,be=Ta(Z,$);return be<0?(++this.size,Z.push([$,V])):Z[be][1]=V,this}Je.prototype.clear=rt,Je.prototype.delete=ir,Je.prototype.get=nr,Je.prototype.has=sr,Je.prototype.set=ar;function yt($){var V=-1,Z=$==null?0:$.length;for(this.clear();++V<Z;){var be=$[V];this.set(be[0],be[1])}}function di(){this.size=0,this.__data__={hash:new Re,map:new(Ce||Je),string:new Re}}function li($){var V=Fa(this,$).delete($);return this.size-=V?1:0,V}function pi($){return Fa(this,$).get($)}function gi($){return Fa(this,$).has($)}function bi($,V){var Z=Fa(this,$),be=Z.size;return Z.set($,V),this.size+=Z.size==be?0:1,this}yt.prototype.clear=di,yt.prototype.delete=li,yt.prototype.get=pi,yt.prototype.has=gi,yt.prototype.set=bi;function Er($){var V=-1,Z=$==null?0:$.length;for(this.__data__=new yt;++V<Z;)this.add($[V])}function vi($){return this.__data__.set($,i),this}function mi($){return this.__data__.has($)}Er.prototype.add=Er.prototype.push=vi,Er.prototype.has=mi;function jt($){var V=this.__data__=new Je($);this.size=V.size}function yi(){this.__data__=new Je,this.size=0}function wi($){var V=this.__data__,Z=V.delete($);return this.size=V.size,Z}function _i($){return this.__data__.get($)}function _s($){return this.__data__.has($)}function xs($,V){var Z=this.__data__;if(Z instanceof Je){var be=Z.__data__;if(!Ce||be.length<t-1)return be.push([$,V]),this.size=++Z.size,this;Z=this.__data__=new yt(be)}return Z.set($,V),this.size=Z.size,this}jt.prototype.clear=yi,jt.prototype.delete=wi,jt.prototype.get=_i,jt.prototype.has=_s,jt.prototype.set=xs;function h4($,V){var Z=Ba($),be=!Z&&S4($),ut=!Z&&!be&&Rf($),Ge=!Z&&!be&&!ut&&Td($),bt=Z||be||ut||Ge,Pt=bt?he($.length,String):[],qt=Pt.length;for(var dt in $)(V||re.call($,dt))&&!(bt&&(dt=="length"||ut&&(dt=="offset"||dt=="parent")||Ge&&(dt=="buffer"||dt=="byteLength"||dt=="byteOffset")||w4(dt,qt)))&&Pt.push(dt);return Pt}function Ta($,V){for(var Z=$.length;Z--;)if(Rd($[Z][0],V))return Z;return-1}function u4($,V,Z){var be=V($);return Ba($)?be:we(be,Z($))}function As($){return $==null?$===void 0?J:K:Ie&&Ie in Object($)?m4($):E4($)}function Md($){return Es($)&&As($)==f}function Id($,V,Z,be,ut){return $===V?!0:$==null||V==null||!Es($)&&!Es(V)?$!==$&&V!==V:d4($,V,Z,be,Id,ut)}function d4($,V,Z,be,ut,Ge){var bt=Ba($),Pt=Ba(V),qt=bt?u:Fi($),dt=Pt?u:Fi(V);qt=qt==f?C:qt,dt=dt==f?C:dt;var lr=qt==C,Br=dt==C,Ht=qt==dt;if(Ht&&Rf($)){if(!Rf(V))return!1;bt=!0,lr=!1}if(Ht&&!lr)return Ge||(Ge=new jt),bt||Td($)?Dd($,V,Z,be,ut,Ge):b4($,V,qt,Z,be,ut,Ge);if(!(Z&n)){var Sr=lr&&re.call($,"__wrapped__"),Mr=Br&&re.call(V,"__wrapped__");if(Sr||Mr){var Bi=Sr?$.value():$,xi=Mr?V.value():V;return Ge||(Ge=new jt),ut(Bi,xi,Z,be,Ge)}}return Ht?(Ge||(Ge=new jt),v4($,V,Z,be,ut,Ge)):!1}function l4($){if(!Cd($)||x4($))return!1;var V=Pd($)?oe:O;return V.test(fn($))}function p4($){return Es($)&&Nd($.length)&&!!S[As($)]}function g4($){if(!A4($))return Ne($);var V=[];for(var Z in Object($))re.call($,Z)&&Z!="constructor"&&V.push(Z);return V}function Dd($,V,Z,be,ut,Ge){var bt=Z&n,Pt=$.length,qt=V.length;if(Pt!=qt&&!(bt&&qt>Pt))return!1;var dt=Ge.get($);if(dt&&Ge.get(V))return dt==V;var lr=-1,Br=!0,Ht=Z&s?new Er:void 0;for(Ge.set($,V),Ge.set(V,$);++lr<Pt;){var Sr=$[lr],Mr=V[lr];if(be)var Bi=bt?be(Mr,Sr,lr,V,$,Ge):be(Sr,Mr,lr,$,V,Ge);if(Bi!==void 0){if(Bi)continue;Br=!1;break}if(Ht){if(!Se(V,function(xi,cn){if(!xe(Ht,cn)&&(Sr===xi||ut(Sr,xi,Z,be,Ge)))return Ht.push(cn)})){Br=!1;break}}else if(!(Sr===Mr||ut(Sr,Mr,Z,be,Ge))){Br=!1;break}}return Ge.delete($),Ge.delete(V),Br}function b4($,V,Z,be,ut,Ge,bt){switch(Z){case p:if($.byteLength!=V.byteLength||$.byteOffset!=V.byteOffset)return!1;$=$.buffer,V=V.buffer;case P:return!($.byteLength!=V.byteLength||!Ge(new Oe($),new Oe(V)));case g:case y:case k:return Rd(+$,+V);case I:return $.name==V.name&&$.message==V.message;case U:case _:return $==V+"";case N:var Pt=ve;case z:var qt=be&n;if(Pt||(Pt=ne),$.size!=V.size&&!qt)return!1;var dt=bt.get($);if(dt)return dt==V;be|=s,bt.set($,V);var lr=Dd(Pt($),Pt(V),be,ut,Ge,bt);return bt.delete($),lr;case R:if(Le)return Le.call($)==Le.call(V)}return!1}function v4($,V,Z,be,ut,Ge){var bt=Z&n,Pt=Od($),qt=Pt.length,dt=Od(V),lr=dt.length;if(qt!=lr&&!bt)return!1;for(var Br=qt;Br--;){var Ht=Pt[Br];if(!(bt?Ht in V:re.call(V,Ht)))return!1}var Sr=Ge.get($);if(Sr&&Ge.get(V))return Sr==V;var Mr=!0;Ge.set($,V),Ge.set(V,$);for(var Bi=bt;++Br<qt;){Ht=Pt[Br];var xi=$[Ht],cn=V[Ht];if(be)var Fd=bt?be(cn,xi,Ht,V,$,Ge):be(xi,cn,Ht,$,V,Ge);if(!(Fd===void 0?xi===cn||ut(xi,cn,Z,be,Ge):Fd)){Mr=!1;break}Bi||(Bi=Ht=="constructor")}if(Mr&&!Bi){var La=$.constructor,qa=V.constructor;La!=qa&&"constructor"in $&&"constructor"in V&&!(typeof La=="function"&&La instanceof La&&typeof qa=="function"&&qa instanceof qa)&&(Mr=!1)}return Ge.delete($),Ge.delete(V),Mr}function Od($){return u4($,D4,y4)}function Fa($,V){var Z=$.__data__;return _4(V)?Z[typeof V=="string"?"string":"hash"]:Z.map}function Bn($,V){var Z=ae($,V);return l4(Z)?Z:void 0}function m4($){var V=re.call($,Ie),Z=$[Ie];try{$[Ie]=void 0;var be=!0}catch{}var ut=Ee.call($);return be&&(V?$[Ie]=Z:delete $[Ie]),ut}var y4=et?function($){return $==null?[]:($=Object($),ee(et($),function(V){return We.call($,V)}))}:O4,Fi=As;(Te&&Fi(new Te(new ArrayBuffer(1)))!=p||Ce&&Fi(new Ce)!=N||de&&Fi(de.resolve())!=j||Fe&&Fi(new Fe)!=z||Be&&Fi(new Be)!=Q)&&(Fi=function($){var V=As($),Z=V==C?$.constructor:void 0,be=Z?fn(Z):"";if(be)switch(be){case Ue:return p;case $e:return N;case me:return j;case ze:return z;case ke:return Q}return V});function w4($,V){return V=V??o,!!V&&(typeof $=="number"||W.test($))&&$>-1&&$%1==0&&$<V}function _4($){var V=typeof $;return V=="string"||V=="number"||V=="symbol"||V=="boolean"?$!=="__proto__":$===null}function x4($){return!!Ae&&Ae in $}function A4($){var V=$&&$.constructor,Z=typeof V=="function"&&V.prototype||te;return $===Z}function E4($){return Ee.call($)}function fn($){if($!=null){try{return _e.call($)}catch{}try{return $+""}catch{}}return""}function Rd($,V){return $===V||$!==$&&V!==V}var S4=Md(function(){return arguments}())?Md:function($){return Es($)&&re.call($,"callee")&&!We.call($,"callee")},Ba=Array.isArray;function M4($){return $!=null&&Nd($.length)&&!Pd($)}var Rf=tt||R4;function I4($,V){return Id($,V)}function Pd($){if(!Cd($))return!1;var V=As($);return V==M||V==D||V==h||V==F}function Nd($){return typeof $=="number"&&$>-1&&$%1==0&&$<=o}function Cd($){var V=typeof $;return $!=null&&(V=="object"||V=="function")}function Es($){return $!=null&&typeof $=="object"}var Td=X?Pe(X):p4;function D4($){return M4($)?h4($):g4($)}function O4(){return[]}function R4(){return!1}r.exports=I4})(gf,gf.exports);var q6=gf.exports;const E0="wc",S0=2,Ra="core",Qr=`${E0}@2:${Ra}:`,U6={name:Ra,logger:"error"},$6={database:":memory:"},z6="crypto",M0="client_ed25519_seed",k6=ie.ONE_DAY,K6="keychain",j6="0.3",H6="messages",V6="0.3",I0=ie.SIX_HOURS,G6="publisher",D0="irn",W6="error",O0="wss://relay.walletconnect.org",J6="relayer",Ot={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"},Y6="_subscription",xr={payload:"payload",connect:"connect",disconnect:"disconnect",error:"error"},Q6=.1,bf="2.17.3",ht={link_mode:"link_mode",relay:"relay"},X6="0.3",Z6="WALLETCONNECT_CLIENT_ID",R0="WALLETCONNECT_LINK_MODE_APPS",dr={created:"subscription_created",deleted:"subscription_deleted",expired:"subscription_expired",disabled:"subscription_disabled",sync:"subscription_sync",resubscribed:"subscription_resubscribed"},ew="subscription",tw="0.3",rw=ie.FIVE_SECONDS*1e3,iw="pairing",nw="0.3",gs={wc_pairingDelete:{req:{ttl:ie.ONE_DAY,prompt:!1,tag:1e3},res:{ttl:ie.ONE_DAY,prompt:!1,tag:1001}},wc_pairingPing:{req:{ttl:ie.THIRTY_SECONDS,prompt:!1,tag:1002},res:{ttl:ie.THIRTY_SECONDS,prompt:!1,tag:1003}},unregistered_method:{req:{ttl:ie.ONE_DAY,prompt:!1,tag:0},res:{ttl:ie.ONE_DAY,prompt:!1,tag:0}}},nn={create:"pairing_create",expire:"pairing_expire",delete:"pairing_delete",ping:"pairing_ping"},Cr={created:"history_created",updated:"history_updated",deleted:"history_deleted",sync:"history_sync"},sw="history",aw="0.3",ow="expirer",Ar={created:"expirer_created",deleted:"expirer_deleted",expired:"expirer_expired",sync:"expirer_sync"},fw="0.3",cw="verify-api",hw="https://verify.walletconnect.com",P0="https://verify.walletconnect.org",bs=P0,uw=`${bs}/v3`,dw=[hw,P0],lw="echo",pw="https://echo.walletconnect.com",Xr={pairing_started:"pairing_started",pairing_uri_validation_success:"pairing_uri_validation_success",pairing_uri_not_expired:"pairing_uri_not_expired",store_new_pairing:"store_new_pairing",subscribing_pairing_topic:"subscribing_pairing_topic",subscribe_pairing_topic_success:"subscribe_pairing_topic_success",existing_pairing:"existing_pairing",pairing_not_expired:"pairing_not_expired",emit_inactive_pairing:"emit_inactive_pairing",emit_session_proposal:"emit_session_proposal",subscribing_to_pairing_topic:"subscribing_to_pairing_topic"},ui={no_wss_connection:"no_wss_connection",no_internet_connection:"no_internet_connection",malformed_pairing_uri:"malformed_pairing_uri",active_pairing_already_exists:"active_pairing_already_exists",subscribe_pairing_topic_failure:"subscribe_pairing_topic_failure",pairing_expired:"pairing_expired",proposal_expired:"proposal_expired",proposal_listener_not_found:"proposal_listener_not_found"},Tr={session_approve_started:"session_approve_started",proposal_not_expired:"proposal_not_expired",session_namespaces_validation_success:"session_namespaces_validation_success",create_session_topic:"create_session_topic",subscribing_session_topic:"subscribing_session_topic",subscribe_session_topic_success:"subscribe_session_topic_success",publishing_session_approve:"publishing_session_approve",session_approve_publish_success:"session_approve_publish_success",store_session:"store_session",publishing_session_settle:"publishing_session_settle",session_settle_publish_success:"session_settle_publish_success"},sn={no_internet_connection:"no_internet_connection",no_wss_connection:"no_wss_connection",proposal_expired:"proposal_expired",subscribe_session_topic_failure:"subscribe_session_topic_failure",session_approve_publish_failure:"session_approve_publish_failure",session_settle_publish_failure:"session_settle_publish_failure",session_approve_namespace_validation_failure:"session_approve_namespace_validation_failure",proposal_not_found:"proposal_not_found"},an={authenticated_session_approve_started:"authenticated_session_approve_started",authenticated_session_not_expired:"authenticated_session_not_expired",chains_caip2_compliant:"chains_caip2_compliant",chains_evm_compliant:"chains_evm_compliant",create_authenticated_session_topic:"create_authenticated_session_topic",cacaos_verified:"cacaos_verified",store_authenticated_session:"store_authenticated_session",subscribing_authenticated_session_topic:"subscribing_authenticated_session_topic",subscribe_authenticated_session_topic_success:"subscribe_authenticated_session_topic_success",publishing_authenticated_session_approve:"publishing_authenticated_session_approve",authenticated_session_approve_publish_success:"authenticated_session_approve_publish_success"},vs={no_internet_connection:"no_internet_connection",no_wss_connection:"no_wss_connection",missing_session_authenticate_request:"missing_session_authenticate_request",session_authenticate_request_expired:"session_authenticate_request_expired",chains_caip2_compliant_failure:"chains_caip2_compliant_failure",chains_evm_compliant_failure:"chains_evm_compliant_failure",invalid_cacao:"invalid_cacao",subscribe_authenticated_session_topic_failure:"subscribe_authenticated_session_topic_failure",authenticated_session_approve_publish_failure:"authenticated_session_approve_publish_failure",authenticated_session_pending_request_not_found:"authenticated_session_pending_request_not_found"},gw=.1,bw="event-client",vw=86400,mw="https://pulse.walletconnect.org/batch";function yw(r,e){if(r.length>=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),i=0;i<t.length;i++)t[i]=255;for(var n=0;n<r.length;n++){var s=r.charAt(n),o=s.charCodeAt(0);if(t[o]!==255)throw new TypeError(s+" is ambiguous");t[o]=n}var f=r.length,u=r.charAt(0),h=Math.log(f)/Math.log(256),g=Math.log(256)/Math.log(f);function y(D){if(D instanceof Uint8Array||(ArrayBuffer.isView(D)?D=new Uint8Array(D.buffer,D.byteOffset,D.byteLength):Array.isArray(D)&&(D=Uint8Array.from(D))),!(D instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(D.length===0)return"";for(var N=0,k=0,K=0,C=D.length;K!==C&&D[K]===0;)K++,N++;for(var j=(C-K)*g+1>>>0,F=new Uint8Array(j);K!==C;){for(var U=D[K],z=0,_=j-1;(U!==0||z<k)&&_!==-1;_--,z++)U+=256*F[_]>>>0,F[_]=U%f>>>0,U=U/f>>>0;if(U!==0)throw new Error("Non-zero carry");k=z,K++}for(var R=j-k;R!==j&&F[R]===0;)R++;for(var J=u.repeat(N);R<j;++R)J+=r.charAt(F[R]);return J}function I(D){if(typeof D!="string")throw new TypeError("Expected String");if(D.length===0)return new Uint8Array;var N=0;if(D[N]!==" "){for(var k=0,K=0;D[N]===u;)k++,N++;for(var C=(D.length-N)*h+1>>>0,j=new Uint8Array(C);D[N];){var F=t[D.charCodeAt(N)];if(F===255)return;for(var U=0,z=C-1;(F!==0||U<K)&&z!==-1;z--,U++)F+=f*j[z]>>>0,j[z]=F%256>>>0,F=F/256>>>0;if(F!==0)throw new Error("Non-zero carry");K=U,N++}if(D[N]!==" "){for(var _=C-K;_!==C&&j[_]===0;)_++;for(var R=new Uint8Array(k+(C-_)),J=k;_!==C;)R[J++]=j[_++];return R}}}function M(D){var N=I(D);if(N)return N;throw new Error(`Non-${e} character`)}return{encode:y,decodeUnsafe:I,decode:M}}var ww=yw,_w=ww;const N0=r=>{if(r instanceof Uint8Array&&r.constructor.name==="Uint8Array")return r;if(r instanceof ArrayBuffer)return new Uint8Array(r);if(ArrayBuffer.isView(r))return new Uint8Array(r.buffer,r.byteOffset,r.byteLength);throw new Error("Unknown type, must be binary type")},xw=r=>new TextEncoder().encode(r),Aw=r=>new TextDecoder().decode(r);class Ew{constructor(e,t,i){this.name=e,this.prefix=t,this.baseEncode=i}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}}class Sw{constructor(e,t,i){if(this.name=e,this.prefix=t,t.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=t.codePointAt(0),this.baseDecode=i}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return C0(this,e)}}class Mw{constructor(e){this.decoders=e}or(e){return C0(this,e)}decode(e){const t=e[0],i=this.decoders[t];if(i)return i.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}}const C0=(r,e)=>new Mw({...r.decoders||{[r.prefix]:r},...e.decoders||{[e.prefix]:e}});class Iw{constructor(e,t,i,n){this.name=e,this.prefix=t,this.baseEncode=i,this.baseDecode=n,this.encoder=new Ew(e,t,i),this.decoder=new Sw(e,t,n)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}}const Pa=({name:r,prefix:e,encode:t,decode:i})=>new Iw(r,e,t,i),ms=({prefix:r,name:e,alphabet:t})=>{const{encode:i,decode:n}=_w(t,e);return Pa({prefix:r,name:e,encode:i,decode:s=>N0(n(s))})},Dw=(r,e,t,i)=>{const n={};for(let g=0;g<e.length;++g)n[e[g]]=g;let s=r.length;for(;r[s-1]==="=";)--s;const o=new Uint8Array(s*t/8|0);let f=0,u=0,h=0;for(let g=0;g<s;++g){const y=n[r[g]];if(y===void 0)throw new SyntaxError(`Non-${i} character`);u=u<<t|y,f+=t,f>=8&&(f-=8,o[h++]=255&u>>f)}if(f>=t||255&u<<8-f)throw new SyntaxError("Unexpected end of data");return o},Ow=(r,e,t)=>{const i=e[e.length-1]==="=",n=(1<<t)-1;let s="",o=0,f=0;for(let u=0;u<r.length;++u)for(f=f<<8|r[u],o+=8;o>t;)o-=t,s+=e[n&f>>o];if(o&&(s+=e[n&f<<t-o]),i)for(;s.length*t&7;)s+="=";return s},Lt=({name:r,prefix:e,bitsPerChar:t,alphabet:i})=>Pa({prefix:e,name:r,encode(n){return Ow(n,i,t)},decode(n){return Dw(n,i,t,r)}}),Rw=Pa({prefix:"\0",name:"identity",encode:r=>Aw(r),decode:r=>xw(r)});var Pw=Object.freeze({__proto__:null,identity:Rw});const Nw=Lt({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var Cw=Object.freeze({__proto__:null,base2:Nw});const Tw=Lt({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var Fw=Object.freeze({__proto__:null,base8:Tw});const Bw=ms({prefix:"9",name:"base10",alphabet:"0123456789"});var Lw=Object.freeze({__proto__:null,base10:Bw});const qw=Lt({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),Uw=Lt({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var $w=Object.freeze({__proto__:null,base16:qw,base16upper:Uw});const zw=Lt({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),kw=Lt({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),Kw=Lt({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),jw=Lt({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),Hw=Lt({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),Vw=Lt({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),Gw=Lt({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),Ww=Lt({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),Jw=Lt({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var Yw=Object.freeze({__proto__:null,base32:zw,base32upper:kw,base32pad:Kw,base32padupper:jw,base32hex:Hw,base32hexupper:Vw,base32hexpad:Gw,base32hexpadupper:Ww,base32z:Jw});const Qw=ms({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),Xw=ms({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var Zw=Object.freeze({__proto__:null,base36:Qw,base36upper:Xw});const e5=ms({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),t5=ms({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var r5=Object.freeze({__proto__:null,base58btc:e5,base58flickr:t5});const i5=Lt({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),n5=Lt({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),s5=Lt({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),a5=Lt({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var o5=Object.freeze({__proto__:null,base64:i5,base64pad:n5,base64url:s5,base64urlpad:a5});const T0=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}"),f5=T0.reduce((r,e,t)=>(r[t]=e,r),[]),c5=T0.reduce((r,e,t)=>(r[e.codePointAt(0)]=t,r),[]);function h5(r){return r.reduce((e,t)=>(e+=f5[t],e),"")}function u5(r){const e=[];for(const t of r){const i=c5[t.codePointAt(0)];if(i===void 0)throw new Error(`Non-base256emoji character: ${t}`);e.push(i)}return new Uint8Array(e)}const d5=Pa({prefix:"\u{1F680}",name:"base256emoji",encode:h5,decode:u5});var l5=Object.freeze({__proto__:null,base256emoji:d5}),p5=B0,F0=128,g5=127,b5=~g5,v5=Math.pow(2,31);function B0(r,e,t){e=e||[],t=t||0;for(var i=t;r>=v5;)e[t++]=r&255|F0,r/=128;for(;r&b5;)e[t++]=r&255|F0,r>>>=7;return e[t]=r|0,B0.bytes=t-i+1,e}var m5=vf,y5=128,L0=127;function vf(r,i){var t=0,i=i||0,n=0,s=i,o,f=r.length;do{if(s>=f)throw vf.bytes=0,new RangeError("Could not decode varint");o=r[s++],t+=n<28?(o&L0)<<n:(o&L0)*Math.pow(2,n),n+=7}while(o>=y5);return vf.bytes=s-i,t}var w5=Math.pow(2,7),_5=Math.pow(2,14),x5=Math.pow(2,21),A5=Math.pow(2,28),E5=Math.pow(2,35),S5=Math.pow(2,42),M5=Math.pow(2,49),I5=Math.pow(2,56),D5=Math.pow(2,63),O5=function(r){return r<w5?1:r<_5?2:r<x5?3:r<A5?4:r<E5?5:r<S5?6:r<M5?7:r<I5?8:r<D5?9:10},R5={encode:p5,decode:m5,encodingLength:O5},q0=R5;const U0=(r,e,t=0)=>(q0.encode(r,e,t),e),$0=r=>q0.encodingLength(r),mf=(r,e)=>{const t=e.byteLength,i=$0(r),n=i+$0(t),s=new Uint8Array(n+t);return U0(r,s,0),U0(t,s,i),s.set(e,n),new P5(r,t,e,s)};class P5{constructor(e,t,i,n){this.code=e,this.size=t,this.digest=i,this.bytes=n}}const z0=({name:r,code:e,encode:t})=>new N5(r,e,t);class N5{constructor(e,t,i){this.name=e,this.code=t,this.encode=i}digest(e){if(e instanceof Uint8Array){const t=this.encode(e);return t instanceof Uint8Array?mf(this.code,t):t.then(i=>mf(this.code,i))}else throw Error("Unknown type, must be binary type")}}const k0=r=>async e=>new Uint8Array(await crypto.subtle.digest(r,e)),C5=z0({name:"sha2-256",code:18,encode:k0("SHA-256")}),T5=z0({name:"sha2-512",code:19,encode:k0("SHA-512")});var F5=Object.freeze({__proto__:null,sha256:C5,sha512:T5});const K0=0,B5="identity",j0=N0;var L5=Object.freeze({__proto__:null,identity:{code:K0,name:B5,encode:j0,digest:r=>mf(K0,j0(r))}});new TextEncoder,new TextDecoder;const H0={...Pw,...Cw,...Fw,...Lw,...$w,...Yw,...Zw,...r5,...o5,...l5};({...F5,...L5});function q5(r=0){return globalThis.Buffer!=null&&globalThis.Buffer.allocUnsafe!=null?globalThis.Buffer.allocUnsafe(r):new Uint8Array(r)}function V0(r,e,t,i){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:i}}}const G0=V0("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),yf=V0("ascii","a",r=>{let e="a";for(let t=0;t<r.length;t++)e+=String.fromCharCode(r[t]);return e},r=>{r=r.substring(1);const e=q5(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),U5={utf8:G0,"utf-8":G0,hex:H0.base16,latin1:yf,ascii:yf,binary:yf,...H0};function $5(r,e="utf8"){const t=U5[e];if(!t)throw new Error(`Unsupported encoding "${e}"`);return(e==="utf8"||e==="utf-8")&&globalThis.Buffer!=null&&globalThis.Buffer.from!=null?globalThis.Buffer.from(r,"utf8"):t.decoder.decode(`${t.prefix}${r}`)}class z5{constructor(e,t){this.core=e,this.logger=t,this.keychain=new Map,this.name=K6,this.version=j6,this.initialized=!1,this.storagePrefix=Qr,this.init=async()=>{if(!this.initialized){const i=await this.getKeyChain();typeof i<"u"&&(this.keychain=i),this.initialized=!0}},this.has=i=>(this.isInitialized(),this.keychain.has(i)),this.set=async(i,n)=>{this.isInitialized(),this.keychain.set(i,n),await this.persist()},this.get=i=>{this.isInitialized();const n=this.keychain.get(i);if(typeof n>"u"){const{message:s}=se("NO_MATCHING_KEY",`${this.name}: ${i}`);throw new Error(s)}return n},this.del=async i=>{this.isInitialized(),this.keychain.delete(i),await this.persist()},this.core=e,this.logger=Vt(t,this.name)}get context(){return Xt(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}async setKeyChain(e){await this.core.storage.setItem(this.storageKey,Nu(e))}async getKeyChain(){const e=await this.core.storage.getItem(this.storageKey);return typeof e<"u"?Cu(e):void 0}async persist(){await this.setKeyChain(this.keychain)}isInitialized(){if(!this.initialized){const{message:e}=se("NOT_INITIALIZED",this.name);throw new Error(e)}}}class k5{constructor(e,t,i){this.core=e,this.logger=t,this.name=z6,this.randomSessionIdentifier=nf(),this.initialized=!1,this.init=async()=>{this.initialized||(await this.keychain.init(),this.initialized=!0)},this.hasKeys=n=>(this.isInitialized(),this.keychain.has(n)),this.getClientId=async()=>{this.isInitialized();const n=await this.getClientSeed(),s=Hc(n);return jc(s.publicKey)},this.generateKeyPair=()=>{this.isInitialized();const n=Vm();return this.setPrivateKey(n.publicKey,n.privateKey)},this.signJWT=async n=>{this.isInitialized();const s=await this.getClientSeed(),o=Hc(s),f=this.randomSessionIdentifier;return await Gg(f,n,k6,o)},this.generateSharedKey=(n,s,o)=>{this.isInitialized();const f=this.getPrivateKey(n),u=Gm(f,s);return this.setSymKey(u,o)},this.setSymKey=async(n,s)=>{this.isInitialized();const o=s||Aa(n);return await this.keychain.set(o,n),o},this.deleteKeyPair=async n=>{this.isInitialized(),await this.keychain.del(n)},this.deleteSymKey=async n=>{this.isInitialized(),await this.keychain.del(n)},this.encode=async(n,s,o)=>{this.isInitialized();const f=Qu(o),u=ki(s);if(Zu(f))return Jm(u,o?.encoding);if(Xu(f)){const I=f.senderPublicKey,M=f.receiverPublicKey;n=await this.generateSharedKey(I,M)}const h=this.getSymKey(n),{type:g,senderPublicKey:y}=f;return Wm({type:g,symKey:h,message:u,senderPublicKey:y,encoding:o?.encoding})},this.decode=async(n,s,o)=>{this.isInitialized();const f=Xm(s,o);if(Zu(f)){const u=Qm(s,o?.encoding);return ln(u)}if(Xu(f)){const u=f.receiverPublicKey,h=f.senderPublicKey;n=await this.generateSharedKey(u,h)}try{const u=this.getSymKey(n),h=Ym({symKey:u,encoded:s,encoding:o?.encoding});return ln(h)}catch(u){this.logger.error(`Failed to decode message from topic: '${n}', clientId: '${await this.getClientId()}'`),this.logger.error(u)}},this.getPayloadType=(n,s=Ti)=>{const o=hs({encoded:n,encoding:s});return en(o.type)},this.getPayloadSenderPublicKey=(n,s=Ti)=>{const o=hs({encoded:n,encoding:s});return o.senderPublicKey?At(o.senderPublicKey,Jt):void 0},this.core=e,this.logger=Vt(t,this.name),this.keychain=i||new z5(this.core,this.logger)}get context(){return Xt(this.logger)}async setPrivateKey(e,t){return await this.keychain.set(e,t),e}getPrivateKey(e){return this.keychain.get(e)}async getClientSeed(){let e="";try{e=this.keychain.get(M0)}catch{e=nf(),await this.keychain.set(M0,e)}return $5(e,"base16")}getSymKey(e){return this.keychain.get(e)}isInitialized(){if(!this.initialized){const{message:e}=se("NOT_INITIALIZED",this.name);throw new Error(e)}}}class K5 extends Op{constructor(e,t){super(e,t),this.logger=e,this.core=t,this.messages=new Map,this.name=H6,this.version=V6,this.initialized=!1,this.storagePrefix=Qr,this.init=async()=>{if(!this.initialized){this.logger.trace("Initialized");try{const i=await this.getRelayerMessages();typeof i<"u"&&(this.messages=i),this.logger.debug(`Successfully Restored records for ${this.name}`),this.logger.trace({type:"method",method:"restore",size:this.messages.size})}catch(i){this.logger.debug(`Failed to Restore records for ${this.name}`),this.logger.error(i)}finally{this.initialized=!0}}},this.set=async(i,n)=>{this.isInitialized();const s=oi(n);let o=this.messages.get(i);return typeof o>"u"&&(o={}),typeof o[s]<"u"||(o[s]=n,this.messages.set(i,o),await this.persist()),s},this.get=i=>{this.isInitialized();let n=this.messages.get(i);return typeof n>"u"&&(n={}),n},this.has=(i,n)=>{this.isInitialized();const s=this.get(i),o=oi(n);return typeof s[o]<"u"},this.del=async i=>{this.isInitialized(),this.messages.delete(i),await this.persist()},this.logger=Vt(e,this.name),this.core=t}get context(){return Xt(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}async setRelayerMessages(e){await this.core.storage.setItem(this.storageKey,Nu(e))}async getRelayerMessages(){const e=await this.core.storage.getItem(this.storageKey);return typeof e<"u"?Cu(e):void 0}async persist(){await this.setRelayerMessages(this.messages)}isInitialized(){if(!this.initialized){const{message:e}=se("NOT_INITIALIZED",this.name);throw new Error(e)}}}var j5=Object.defineProperty,H5=Object.defineProperties,V5=Object.getOwnPropertyDescriptors,W0=Object.getOwnPropertySymbols,G5=Object.prototype.hasOwnProperty,W5=Object.prototype.propertyIsEnumerable,J0=(r,e,t)=>e in r?j5(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Y0=(r,e)=>{for(var t in e||(e={}))G5.call(e,t)&&J0(r,t,e[t]);if(W0)for(var t of W0(e))W5.call(e,t)&&J0(r,t,e[t]);return r},Q0=(r,e)=>H5(r,V5(e));class J5 extends Rp{constructor(e,t){super(e,t),this.relayer=e,this.logger=t,this.events=new Ut.exports.EventEmitter,this.name=G6,this.queue=new Map,this.publishTimeout=ie.toMiliseconds(ie.ONE_MINUTE),this.initialPublishTimeout=ie.toMiliseconds(ie.ONE_SECOND*15),this.needsTransportRestart=!1,this.publish=async(i,n,s)=>{var o;this.logger.debug("Publishing Payload"),this.logger.trace({type:"method",method:"publish",params:{topic:i,message:n,opts:s}});const f=s?.ttl||I0,u=Ea(s),h=s?.prompt||!1,g=s?.tag||0,y=s?.id||tn().toString(),I={topic:i,message:n,opts:{ttl:f,relay:u,prompt:h,tag:g,id:y,attestation:s?.attestation}},M=`Failed to publish payload, please try again. id:${y} tag:${g}`;try{const D=new Promise(async N=>{const k=({id:C})=>{I.opts.id===C&&(this.removeRequestFromQueue(C),this.relayer.events.removeListener(Ot.publish,k),N(I))};this.relayer.events.on(Ot.publish,k);const K=Ni(new Promise((C,j)=>{this.rpcPublish({topic:i,message:n,ttl:f,prompt:h,tag:g,id:y,attestation:s?.attestation}).then(C).catch(F=>{this.logger.warn(F,F?.message),j(F)})}),this.initialPublishTimeout,`Failed initial publish, retrying.... id:${y} tag:${g}`);try{await K,this.events.removeListener(Ot.publish,k)}catch(C){this.queue.set(y,Q0(Y0({},I),{attempt:1})),this.logger.warn(C,C?.message)}});this.logger.trace({type:"method",method:"publish",params:{id:y,topic:i,message:n,opts:s}}),await Ni(D,this.publishTimeout,M)}catch(D){if(this.logger.debug("Failed to Publish Payload"),this.logger.error(D),(o=s?.internal)!=null&&o.throwOnFailedPublish)throw D}finally{this.queue.delete(y)}},this.on=(i,n)=>{this.events.on(i,n)},this.once=(i,n)=>{this.events.once(i,n)},this.off=(i,n)=>{this.events.off(i,n)},this.removeListener=(i,n)=>{this.events.removeListener(i,n)},this.relayer=e,this.logger=Vt(t,this.name),this.registerEventListeners()}get context(){return Xt(this.logger)}async rpcPublish(e){var t,i,n,s;const{topic:o,message:f,ttl:u=I0,prompt:h,tag:g,id:y,attestation:I}=e,M={method:us(Ea().protocol).publish,params:{topic:o,message:f,ttl:u,prompt:h,tag:g,attestation:I},id:y};Yt((t=M.params)==null?void 0:t.prompt)&&((i=M.params)==null||delete i.prompt),Yt((n=M.params)==null?void 0:n.tag)&&((s=M.params)==null||delete s.tag),this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"message",direction:"outgoing",request:M});const D=await this.relayer.request(M);return this.relayer.events.emit(Ot.publish,e),this.logger.debug("Successfully Published Payload"),D}removeRequestFromQueue(e){this.queue.delete(e)}checkQueue(){this.queue.forEach(async(e,t)=>{const i=e.attempt+1;this.queue.set(t,Q0(Y0({},e),{attempt:i}));const{topic:n,message:s,opts:o,attestation:f}=e;this.logger.warn({},`Publisher: queue->publishing: ${e.opts.id}, tag: ${e.opts.tag}, attempt: ${i}`),await this.rpcPublish({topic:n,message:s,ttl:o.ttl,prompt:o.prompt,tag:o.tag,id:o.id,attestation:f}),this.logger.warn({},`Publisher: queue->published: ${e.opts.id}`)})}registerEventListeners(){this.relayer.core.heartbeat.on(dn.pulse,()=>{if(this.needsTransportRestart){this.needsTransportRestart=!1,this.relayer.events.emit(Ot.connection_stalled);return}this.checkQueue()}),this.relayer.on(Ot.message_ack,e=>{this.removeRequestFromQueue(e.id.toString())})}}class Y5{constructor(){this.map=new Map,this.set=(e,t)=>{const i=this.get(e);this.exists(e,t)||this.map.set(e,[...i,t])},this.get=e=>this.map.get(e)||[],this.exists=(e,t)=>this.get(e).includes(t),this.delete=(e,t)=>{if(typeof t>"u"){this.map.delete(e);return}if(!this.map.has(e))return;const i=this.get(e);if(!this.exists(e,t))return;const n=i.filter(s=>s!==t);if(!n.length){this.map.delete(e);return}this.map.set(e,n)},this.clear=()=>{this.map.clear()}}get topics(){return Array.from(this.map.keys())}}var Q5=Object.defineProperty,X5=Object.defineProperties,Z5=Object.getOwnPropertyDescriptors,X0=Object.getOwnPropertySymbols,e8=Object.prototype.hasOwnProperty,t8=Object.prototype.propertyIsEnumerable,Z0=(r,e,t)=>e in r?Q5(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,ys=(r,e)=>{for(var t in e||(e={}))e8.call(e,t)&&Z0(r,t,e[t]);if(X0)for(var t of X0(e))t8.call(e,t)&&Z0(r,t,e[t]);return r},wf=(r,e)=>X5(r,Z5(e));class r8 extends Cp{constructor(e,t){super(e,t),this.relayer=e,this.logger=t,this.subscriptions=new Map,this.topicMap=new Y5,this.events=new Ut.exports.EventEmitter,this.name=ew,this.version=tw,this.pending=new Map,this.cached=[],this.initialized=!1,this.pendingSubscriptionWatchLabel="pending_sub_watch_label",this.pollingInterval=20,this.storagePrefix=Qr,this.subscribeTimeout=ie.toMiliseconds(ie.ONE_MINUTE),this.initialSubscribeTimeout=ie.toMiliseconds(ie.ONE_SECOND*15),this.batchSubscribeTopicsLimit=500,this.init=async()=>{this.initialized||(this.logger.trace("Initialized"),this.registerEventListeners(),this.clientId=await this.relayer.core.crypto.getClientId(),await this.restore()),this.initialized=!0},this.subscribe=async(i,n)=>{this.isInitialized(),this.logger.debug("Subscribing Topic"),this.logger.trace({type:"method",method:"subscribe",params:{topic:i,opts:n}});try{const s=Ea(n),o={topic:i,relay:s,transportType:n?.transportType};this.pending.set(i,o);const f=await this.rpcSubscribe(i,s,n);return typeof f=="string"&&(this.onSubscribe(f,o),this.logger.debug("Successfully Subscribed Topic"),this.logger.trace({type:"method",method:"subscribe",params:{topic:i,opts:n}})),f}catch(s){throw this.logger.debug("Failed to Subscribe Topic"),this.logger.error(s),s}},this.unsubscribe=async(i,n)=>{await this.restartToComplete(),this.isInitialized(),typeof n?.id<"u"?await this.unsubscribeById(i,n.id,n):await this.unsubscribeByTopic(i,n)},this.isSubscribed=async i=>{if(this.topics.includes(i))return!0;const n=`${this.pendingSubscriptionWatchLabel}_${i}`;return await new Promise((s,o)=>{const f=new ie.Watch;f.start(n);const u=setInterval(()=>{(!this.pending.has(i)&&this.topics.includes(i)||this.cached.some(h=>h.topic===i))&&(clearInterval(u),f.stop(n),s(!0)),f.elapsed(n)>=rw&&(clearInterval(u),f.stop(n),o(new Error("Subscription resolution timeout")))},this.pollingInterval)}).catch(()=>!1)},this.on=(i,n)=>{this.events.on(i,n)},this.once=(i,n)=>{this.events.once(i,n)},this.off=(i,n)=>{this.events.off(i,n)},this.removeListener=(i,n)=>{this.events.removeListener(i,n)},this.start=async()=>{await this.onConnect()},this.stop=async()=>{await this.onDisconnect()},this.restart=async()=>{await this.restore(),await this.onRestart()},this.checkPending=async()=>{if(this.pending.size===0&&(!this.initialized||!this.relayer.connected))return;const i=[];this.pending.forEach(n=>{i.push(n)}),await this.batchSubscribe(i)},this.registerEventListeners=()=>{this.relayer.core.heartbeat.on(dn.pulse,async()=>{await this.checkPending()}),this.events.on(dr.created,async i=>{const n=dr.created;this.logger.info(`Emitting ${n}`),this.logger.debug({type:"event",event:n,data:i}),await this.persist()}),this.events.on(dr.deleted,async i=>{const n=dr.deleted;this.logger.info(`Emitting ${n}`),this.logger.debug({type:"event",event:n,data:i}),await this.persist()})},this.relayer=e,this.logger=Vt(t,this.name),this.clientId=""}get context(){return Xt(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.relayer.core.customStoragePrefix+"//"+this.name}get length(){return this.subscriptions.size}get ids(){return Array.from(this.subscriptions.keys())}get values(){return Array.from(this.subscriptions.values())}get topics(){return this.topicMap.topics}hasSubscription(e,t){let i=!1;try{i=this.getSubscription(e).topic===t}catch{}return i}reset(){this.cached=[],this.initialized=!0}onDisable(){this.cached=this.values,this.subscriptions.clear(),this.topicMap.clear()}async unsubscribeByTopic(e,t){const i=this.topicMap.get(e);await Promise.all(i.map(async n=>await this.unsubscribeById(e,n,t)))}async unsubscribeById(e,t,i){this.logger.debug("Unsubscribing Topic"),this.logger.trace({type:"method",method:"unsubscribe",params:{topic:e,id:t,opts:i}});try{const n=Ea(i);await this.rpcUnsubscribe(e,t,n);const s=ct("USER_DISCONNECTED",`${this.name}, ${e}`);await this.onUnsubscribe(e,t,s),this.logger.debug("Successfully Unsubscribed Topic"),this.logger.trace({type:"method",method:"unsubscribe",params:{topic:e,id:t,opts:i}})}catch(n){throw this.logger.debug("Failed to Unsubscribe Topic"),this.logger.error(n),n}}async rpcSubscribe(e,t,i){var n;i?.transportType===ht.relay&&await this.restartToComplete();const s={method:us(t.protocol).subscribe,params:{topic:e}};this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"payload",direction:"outgoing",request:s});const o=(n=i?.internal)==null?void 0:n.throwOnFailedPublish;try{const f=this.getSubscriptionId(e);if(i?.transportType===ht.link_mode)return setTimeout(()=>{(this.relayer.connected||this.relayer.connecting)&&this.relayer.request(s).catch(g=>this.logger.warn(g))},ie.toMiliseconds(ie.ONE_SECOND)),f;const u=new Promise(async g=>{const y=I=>{I.topic===e&&(this.events.removeListener(dr.created,y),g(I.id))};this.events.on(dr.created,y);try{const I=await Ni(new Promise((M,D)=>{this.relayer.request(s).catch(N=>{this.logger.warn(N,N?.message),D(N)}).then(M)}),this.initialSubscribeTimeout,`Subscribing to ${e} failed, please try again`);this.events.removeListener(dr.created,y),g(I)}catch{}}),h=await Ni(u,this.subscribeTimeout,`Subscribing to ${e} failed, please try again`);if(!h&&o)throw new Error(`Subscribing to ${e} failed, please try again`);return h?f:null}catch(f){if(this.logger.debug("Outgoing Relay Subscribe Payload stalled"),this.relayer.events.emit(Ot.connection_stalled),o)throw f}return null}async rpcBatchSubscribe(e){if(!e.length)return;const t=e[0].relay,i={method:us(t.protocol).batchSubscribe,params:{topics:e.map(n=>n.topic)}};this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"payload",direction:"outgoing",request:i});try{await await Ni(new Promise(n=>{this.relayer.request(i).catch(s=>this.logger.warn(s)).then(n)}),this.subscribeTimeout,"rpcBatchSubscribe failed, please try again")}catch{this.relayer.events.emit(Ot.connection_stalled)}}async rpcBatchFetchMessages(e){if(!e.length)return;const t=e[0].relay,i={method:us(t.protocol).batchFetchMessages,params:{topics:e.map(s=>s.topic)}};this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"payload",direction:"outgoing",request:i});let n;try{n=await await Ni(new Promise((s,o)=>{this.relayer.request(i).catch(f=>{this.logger.warn(f),o(f)}).then(s)}),this.subscribeTimeout,"rpcBatchFetchMessages failed, please try again")}catch{this.relayer.events.emit(Ot.connection_stalled)}return n}rpcUnsubscribe(e,t,i){const n={method:us(i.protocol).unsubscribe,params:{topic:e,id:t}};return this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"payload",direction:"outgoing",request:n}),this.relayer.request(n)}onSubscribe(e,t){this.setSubscription(e,wf(ys({},t),{id:e})),this.pending.delete(t.topic)}onBatchSubscribe(e){e.length&&e.forEach(t=>{this.setSubscription(t.id,ys({},t)),this.pending.delete(t.topic)})}async onUnsubscribe(e,t,i){this.events.removeAllListeners(t),this.hasSubscription(t,e)&&this.deleteSubscription(t,i),await this.relayer.messages.del(e)}async setRelayerSubscriptions(e){await this.relayer.core.storage.setItem(this.storageKey,e)}async getRelayerSubscriptions(){return await this.relayer.core.storage.getItem(this.storageKey)}setSubscription(e,t){this.logger.debug("Setting subscription"),this.logger.trace({type:"method",method:"setSubscription",id:e,subscription:t}),this.addSubscription(e,t)}addSubscription(e,t){this.subscriptions.set(e,ys({},t)),this.topicMap.set(t.topic,e),this.events.emit(dr.created,t)}getSubscription(e){this.logger.debug("Getting subscription"),this.logger.trace({type:"method",method:"getSubscription",id:e});const t=this.subscriptions.get(e);if(!t){const{message:i}=se("NO_MATCHING_KEY",`${this.name}: ${e}`);throw new Error(i)}return t}deleteSubscription(e,t){this.logger.debug("Deleting subscription"),this.logger.trace({type:"method",method:"deleteSubscription",id:e,reason:t});const i=this.getSubscription(e);this.subscriptions.delete(e),this.topicMap.delete(i.topic,e),this.events.emit(dr.deleted,wf(ys({},i),{reason:t}))}async persist(){await this.setRelayerSubscriptions(this.values),this.events.emit(dr.sync)}async onRestart(){if(this.cached.length){const e=[...this.cached],t=Math.ceil(this.cached.length/this.batchSubscribeTopicsLimit);for(let i=0;i<t;i++){const n=e.splice(0,this.batchSubscribeTopicsLimit);await this.batchSubscribe(n)}}this.events.emit(dr.resubscribed)}async restore(){try{const e=await this.getRelayerSubscriptions();if(typeof e>"u"||!e.length)return;if(this.subscriptions.size){const{message:t}=se("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(t),this.logger.error(`${this.name}: ${JSON.stringify(this.values)}`),new Error(t)}this.cached=e,this.logger.debug(`Successfully Restored subscriptions for ${this.name}`),this.logger.trace({type:"method",method:"restore",subscriptions:this.values})}catch(e){this.logger.debug(`Failed to Restore subscriptions for ${this.name}`),this.logger.error(e)}}async batchSubscribe(e){e.length&&(await this.rpcBatchSubscribe(e),this.onBatchSubscribe(e.map(t=>wf(ys({},t),{id:this.getSubscriptionId(t.topic)}))))}async batchFetchMessages(e){if(!e.length)return;this.logger.trace(`Fetching batch messages for ${e.length} subscriptions`);const t=await this.rpcBatchFetchMessages(e);t&&t.messages&&(await _m(ie.toMiliseconds(ie.ONE_SECOND)),await this.relayer.handleBatchMessageEvents(t.messages))}async onConnect(){await this.restart(),this.reset()}onDisconnect(){this.onDisable()}isInitialized(){if(!this.initialized){const{message:e}=se("NOT_INITIALIZED",this.name);throw new Error(e)}}async restartToComplete(){!this.relayer.connected&&!this.relayer.connecting&&await this.relayer.transportOpen()}getSubscriptionId(e){return oi(e+this.clientId)}}var i8=Object.defineProperty,ed=Object.getOwnPropertySymbols,n8=Object.prototype.hasOwnProperty,s8=Object.prototype.propertyIsEnumerable,td=(r,e,t)=>e in r?i8(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,rd=(r,e)=>{for(var t in e||(e={}))n8.call(e,t)&&td(r,t,e[t]);if(ed)for(var t of ed(e))s8.call(e,t)&&td(r,t,e[t]);return r};class a8 extends Pp{constructor(e){super(e),this.protocol="wc",this.version=2,this.events=new Ut.exports.EventEmitter,this.name=J6,this.transportExplicitlyClosed=!1,this.initialized=!1,this.connectionAttemptInProgress=!1,this.hasExperiencedNetworkDisruption=!1,this.heartBeatTimeout=ie.toMiliseconds(ie.THIRTY_SECONDS+ie.FIVE_SECONDS),this.requestsInFlight=[],this.connectTimeout=ie.toMiliseconds(ie.ONE_SECOND*15),this.request=async t=>{var i,n;this.logger.debug("Publishing Request Payload");const s=t.id||tn().toString();await this.toEstablishConnection();try{this.logger.trace({id:s,method:t.method,topic:(i=t.params)==null?void 0:i.topic},"relayer.request - publishing...");const o=`${s}:${((n=t.params)==null?void 0:n.tag)||""}`;this.requestsInFlight.push(o);const f=await this.provider.request(t);return this.requestsInFlight=this.requestsInFlight.filter(u=>u!==o),f}catch(o){throw this.logger.debug(`Failed to Publish Request: ${s}`),o}},this.resetPingTimeout=()=>{if(wa())try{clearTimeout(this.pingTimeout),this.pingTimeout=setTimeout(()=>{var t,i,n;this.logger.debug({},"pingTimeout: Connection stalled, terminating..."),(n=(i=(t=this.provider)==null?void 0:t.connection)==null?void 0:i.socket)==null||n.terminate()},this.heartBeatTimeout)}catch(t){this.logger.warn(t,t?.message)}},this.onPayloadHandler=t=>{this.onProviderPayload(t),this.resetPingTimeout()},this.onConnectHandler=()=>{this.logger.warn({},"Relayer connected \u{1F6DC}"),this.startPingTimeout(),this.events.emit(Ot.connect)},this.onDisconnectHandler=()=>{this.logger.warn({},"Relayer disconnected \u{1F6D1}"),this.requestsInFlight=[],this.onProviderDisconnect()},this.onProviderErrorHandler=t=>{this.logger.fatal(t,`Fatal socket error: ${t?.message}`),this.events.emit(Ot.error,t),this.logger.fatal("Fatal socket error received, closing transport"),this.transportClose()},this.registerProviderListeners=()=>{this.provider.on(xr.payload,this.onPayloadHandler),this.provider.on(xr.connect,this.onConnectHandler),this.provider.on(xr.disconnect,this.onDisconnectHandler),this.provider.on(xr.error,this.onProviderErrorHandler)},this.core=e.core,this.logger=typeof e.logger<"u"&&typeof e.logger!="string"?Vt(e.logger,this.name):ei(to({level:e.logger||W6})),this.messages=new K5(this.logger,e.core),this.subscriber=new r8(this,this.logger),this.publisher=new J5(this,this.logger),this.relayUrl=e?.relayUrl||O0,this.projectId=e.projectId,om()?this.packageName=Ou():fm()&&(this.bundleId=Ou()),this.provider={}}async init(){if(this.logger.trace("Initialized"),this.registerEventListeners(),await Promise.all([this.messages.init(),this.subscriber.init()]),this.initialized=!0,this.subscriber.cached.length>0)try{await this.transportOpen()}catch(e){this.logger.warn(e,e?.message)}}get context(){return Xt(this.logger)}get connected(){var e,t,i;return((i=(t=(e=this.provider)==null?void 0:e.connection)==null?void 0:t.socket)==null?void 0:i.readyState)===1}get connecting(){var e,t,i;return((i=(t=(e=this.provider)==null?void 0:e.connection)==null?void 0:t.socket)==null?void 0:i.readyState)===0}async publish(e,t,i){this.isInitialized(),await this.publisher.publish(e,t,i),await this.recordMessageEvent({topic:e,message:t,publishedAt:Date.now(),transportType:ht.relay})}async subscribe(e,t){var i,n,s;this.isInitialized(),(!(t!=null&&t.transportType)||t?.transportType==="relay")&&await this.toEstablishConnection();const o=typeof((i=t?.internal)==null?void 0:i.throwOnFailedPublish)>"u"?!0:(n=t?.internal)==null?void 0:n.throwOnFailedPublish;let f=((s=this.subscriber.topicMap.get(e))==null?void 0:s[0])||"",u;const h=g=>{g.topic===e&&(this.subscriber.off(dr.created,h),u())};return await Promise.all([new Promise(g=>{u=g,this.subscriber.on(dr.created,h)}),new Promise(async(g,y)=>{f=await this.subscriber.subscribe(e,rd({internal:{throwOnFailedPublish:o}},t)).catch(I=>{o&&y(I)})||f,g()})]),f}async unsubscribe(e,t){this.isInitialized(),await this.subscriber.unsubscribe(e,t)}on(e,t){this.events.on(e,t)}once(e,t){this.events.once(e,t)}off(e,t){this.events.off(e,t)}removeListener(e,t){this.events.removeListener(e,t)}async transportDisconnect(){this.provider.disconnect&&(this.hasExperiencedNetworkDisruption||this.connected)?await Ni(this.provider.disconnect(),2e3,"provider.disconnect()").catch(()=>this.onProviderDisconnect()):this.onProviderDisconnect()}async transportClose(){this.transportExplicitlyClosed=!0,await this.transportDisconnect()}async transportOpen(e){if(this.connectPromise?(this.logger.debug({},"Waiting for existing connection attempt to resolve..."),await this.connectPromise,this.logger.debug({},"Existing connection attempt resolved")):(this.connectPromise=new Promise(async(t,i)=>{await this.connect(e).then(t).catch(i).finally(()=>{this.connectPromise=void 0})}),await this.connectPromise),!this.connected)throw new Error(`Couldn't establish socket connection to the relay server: ${this.relayUrl}`)}async restartTransport(e){this.logger.debug({},"Restarting transport..."),!this.connectionAttemptInProgress&&(this.relayUrl=e||this.relayUrl,await this.confirmOnlineStateOrThrow(),await this.transportClose(),await this.transportOpen())}async confirmOnlineStateOrThrow(){if(!await d0())throw new Error("No internet connection detected. Please restart your network and try again.")}async handleBatchMessageEvents(e){if(e?.length===0){this.logger.trace("Batch message events is empty. Ignoring...");return}const t=e.sort((i,n)=>i.publishedAt-n.publishedAt);this.logger.debug(`Batch of ${t.length} message events sorted`);for(const i of t)try{await this.onMessageEvent(i)}catch(n){this.logger.warn(n,"Error while processing batch message event: "+n?.message)}this.logger.trace(`Batch of ${t.length} message events processed`)}async onLinkMessageEvent(e,t){const{topic:i}=e;if(!t.sessionExists){const n=_t(ie.FIVE_MINUTES),s={topic:i,expiry:n,relay:{protocol:"irn"},active:!1};await this.core.pairing.pairings.set(i,s)}this.events.emit(Ot.message,e),await this.recordMessageEvent(e)}async connect(e){await this.confirmOnlineStateOrThrow(),e&&e!==this.relayUrl&&(this.relayUrl=e,await this.transportDisconnect()),this.connectionAttemptInProgress=!0,this.transportExplicitlyClosed=!1;let t=1;for(;t<6;){try{this.logger.debug({},`Connecting to ${this.relayUrl}, attempt: ${t}...`),await this.createProvider(),await new Promise(async(i,n)=>{const s=()=>{n(new Error("Connection interrupted while trying to subscribe"))};this.provider.once(xr.disconnect,s),await Ni(new Promise((o,f)=>{this.provider.connect().then(o).catch(f)}),this.connectTimeout,`Socket stalled when trying to connect to ${this.relayUrl}`).catch(o=>{n(o)}).finally(()=>{this.provider.off(xr.disconnect,s),clearTimeout(this.reconnectTimeout),this.reconnectTimeout=void 0}),await new Promise(async(o,f)=>{const u=()=>{f(new Error("Connection interrupted while trying to subscribe"))};this.provider.once(xr.disconnect,u),await this.subscriber.start().then(o).catch(f).finally(()=>{this.provider.off(xr.disconnect,u)})}),this.hasExperiencedNetworkDisruption=!1,i()})}catch(i){await this.subscriber.stop();const n=i;this.logger.warn({},n.message),this.hasExperiencedNetworkDisruption=!0}finally{this.connectionAttemptInProgress=!1}if(this.connected){this.logger.debug({},`Connected to ${this.relayUrl} successfully on attempt: ${t}`);break}await new Promise(i=>setTimeout(i,ie.toMiliseconds(t*1))),t++}}startPingTimeout(){var e,t,i,n,s;if(wa())try{(t=(e=this.provider)==null?void 0:e.connection)!=null&&t.socket&&((s=(n=(i=this.provider)==null?void 0:i.connection)==null?void 0:n.socket)==null||s.on("ping",()=>{this.resetPingTimeout()})),this.resetPingTimeout()}catch(o){this.logger.warn(o,o?.message)}}async createProvider(){this.provider.connection&&this.unregisterProviderListeners();const e=await this.core.crypto.signJWT(this.relayUrl);this.provider=new C6(new L6(dm({sdkVersion:bf,protocol:this.protocol,version:this.version,relayUrl:this.relayUrl,projectId:this.projectId,auth:e,useOnCloseEvent:!0,bundleId:this.bundleId,packageName:this.packageName}))),this.registerProviderListeners()}async recordMessageEvent(e){const{topic:t,message:i}=e;await this.messages.set(t,i)}async shouldIgnoreMessageEvent(e){const{topic:t,message:i}=e;if(!i||i.length===0)return this.logger.warn(`Ignoring invalid/empty message: ${i}`),!0;if(!await this.subscriber.isSubscribed(t))return this.logger.warn(`Ignoring message for non-subscribed topic ${t}`),!0;const n=this.messages.has(t,i);return n&&this.logger.warn(`Ignoring duplicate message: ${i}`),n}async onProviderPayload(e){if(this.logger.debug("Incoming Relay Payload"),this.logger.trace({type:"payload",direction:"incoming",payload:e}),pf(e)){if(!e.method.endsWith(Y6))return;const t=e.params,{topic:i,message:n,publishedAt:s,attestation:o}=t.data,f={topic:i,message:n,publishedAt:s,transportType:ht.relay,attestation:o};this.logger.debug("Emitting Relayer Payload"),this.logger.trace(rd({type:"event",event:t.id},f)),this.events.emit(t.id,f),await this.acknowledgePayload(e),await this.onMessageEvent(f)}else Oa(e)&&this.events.emit(Ot.message_ack,e)}async onMessageEvent(e){await this.shouldIgnoreMessageEvent(e)||(this.events.emit(Ot.message,e),await this.recordMessageEvent(e))}async acknowledgePayload(e){const t=df(e.id,!0);await this.provider.connection.send(t)}unregisterProviderListeners(){this.provider.off(xr.payload,this.onPayloadHandler),this.provider.off(xr.connect,this.onConnectHandler),this.provider.off(xr.disconnect,this.onDisconnectHandler),this.provider.off(xr.error,this.onProviderErrorHandler),clearTimeout(this.pingTimeout)}async registerEventListeners(){let e=await d0();Hy(async t=>{e!==t&&(e=t,t?await this.transportOpen().catch(i=>this.logger.error(i,i?.message)):(this.hasExperiencedNetworkDisruption=!0,await this.transportDisconnect(),this.transportExplicitlyClosed=!1))})}async onProviderDisconnect(){await this.subscriber.stop(),clearTimeout(this.pingTimeout),this.events.emit(Ot.disconnect),this.connectionAttemptInProgress=!1,!this.transportExplicitlyClosed&&(this.reconnectTimeout||this.connectPromise||(this.reconnectTimeout=setTimeout(async()=>{clearTimeout(this.reconnectTimeout),await this.transportOpen().catch(e=>this.logger.error(e,e?.message))},ie.toMiliseconds(Q6))))}isInitialized(){if(!this.initialized){const{message:e}=se("NOT_INITIALIZED",this.name);throw new Error(e)}}async toEstablishConnection(){await this.confirmOnlineStateOrThrow(),!this.connected&&await this.transportOpen()}}var o8=Object.defineProperty,id=Object.getOwnPropertySymbols,f8=Object.prototype.hasOwnProperty,c8=Object.prototype.propertyIsEnumerable,nd=(r,e,t)=>e in r?o8(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,sd=(r,e)=>{for(var t in e||(e={}))f8.call(e,t)&&nd(r,t,e[t]);if(id)for(var t of id(e))c8.call(e,t)&&nd(r,t,e[t]);return r};class on extends Np{constructor(e,t,i,n=Qr,s=void 0){super(e,t,i,n),this.core=e,this.logger=t,this.name=i,this.map=new Map,this.version=X6,this.cached=[],this.initialized=!1,this.storagePrefix=Qr,this.recentlyDeleted=[],this.recentlyDeletedLimit=200,this.init=async()=>{this.initialized||(this.logger.trace("Initialized"),await this.restore(),this.cached.forEach(o=>{this.getKey&&o!==null&&!Yt(o)?this.map.set(this.getKey(o),o):xy(o)?this.map.set(o.id,o):Ay(o)&&this.map.set(o.topic,o)}),this.cached=[],this.initialized=!0)},this.set=async(o,f)=>{this.isInitialized(),this.map.has(o)?await this.update(o,f):(this.logger.debug("Setting value"),this.logger.trace({type:"method",method:"set",key:o,value:f}),this.map.set(o,f),await this.persist())},this.get=o=>(this.isInitialized(),this.logger.debug("Getting value"),this.logger.trace({type:"method",method:"get",key:o}),this.getData(o)),this.getAll=o=>(this.isInitialized(),o?this.values.filter(f=>Object.keys(o).every(u=>q6(f[u],o[u]))):this.values),this.update=async(o,f)=>{this.isInitialized(),this.logger.debug("Updating value"),this.logger.trace({type:"method",method:"update",key:o,update:f});const u=sd(sd({},this.getData(o)),f);this.map.set(o,u),await this.persist()},this.delete=async(o,f)=>{this.isInitialized(),this.map.has(o)&&(this.logger.debug("Deleting value"),this.logger.trace({type:"method",method:"delete",key:o,reason:f}),this.map.delete(o),this.addToRecentlyDeleted(o),await this.persist())},this.logger=Vt(t,this.name),this.storagePrefix=n,this.getKey=s}get context(){return Xt(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}get length(){return this.map.size}get keys(){return Array.from(this.map.keys())}get values(){return Array.from(this.map.values())}addToRecentlyDeleted(e){this.recentlyDeleted.push(e),this.recentlyDeleted.length>=this.recentlyDeletedLimit&&this.recentlyDeleted.splice(0,this.recentlyDeletedLimit/2)}async setDataStore(e){await this.core.storage.setItem(this.storageKey,e)}async getDataStore(){return await this.core.storage.getItem(this.storageKey)}getData(e){const t=this.map.get(e);if(!t){if(this.recentlyDeleted.includes(e)){const{message:n}=se("MISSING_OR_INVALID",`Record was recently deleted - ${this.name}: ${e}`);throw this.logger.error(n),new Error(n)}const{message:i}=se("NO_MATCHING_KEY",`${this.name}: ${e}`);throw this.logger.error(i),new Error(i)}return t}async persist(){await this.setDataStore(this.values)}async restore(){try{const e=await this.getDataStore();if(typeof e>"u"||!e.length)return;if(this.map.size){const{message:t}=se("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(t),new Error(t)}this.cached=e,this.logger.debug(`Successfully Restored value for ${this.name}`),this.logger.trace({type:"method",method:"restore",value:this.values})}catch(e){this.logger.debug(`Failed to Restore value for ${this.name}`),this.logger.error(e)}}isInitialized(){if(!this.initialized){const{message:e}=se("NOT_INITIALIZED",this.name);throw new Error(e)}}}class h8{constructor(e,t){this.core=e,this.logger=t,this.name=iw,this.version=nw,this.events=new Ut.exports,this.initialized=!1,this.storagePrefix=Qr,this.ignoredPayloadTypes=[ai],this.registeredMethods=[],this.init=async()=>{this.initialized||(await this.pairings.init(),await this.cleanup(),this.registerRelayerEvents(),this.registerExpirerEvents(),this.initialized=!0,this.logger.trace("Initialized"))},this.register=({methods:i})=>{this.isInitialized(),this.registeredMethods=[...new Set([...this.registeredMethods,...i])]},this.create=async i=>{this.isInitialized();const n=nf(),s=await this.core.crypto.setSymKey(n),o=_t(ie.FIVE_MINUTES),f={protocol:D0},u={topic:s,expiry:o,relay:f,active:!1,methods:i?.methods},h=n0({protocol:this.core.protocol,version:this.core.version,topic:s,symKey:n,relay:f,expiryTimestamp:o,methods:i?.methods});return this.events.emit(nn.create,u),this.core.expirer.set(s,o),await this.pairings.set(s,u),await this.core.relayer.subscribe(s,{transportType:i?.transportType}),{topic:s,uri:h}},this.pair=async i=>{this.isInitialized();const n=this.core.eventClient.createEvent({properties:{topic:i?.uri,trace:[Xr.pairing_started]}});this.isValidPair(i,n);const{topic:s,symKey:o,relay:f,expiryTimestamp:u,methods:h}=i0(i.uri);n.props.properties.topic=s,n.addTrace(Xr.pairing_uri_validation_success),n.addTrace(Xr.pairing_uri_not_expired);let g;if(this.pairings.keys.includes(s)){if(g=this.pairings.get(s),n.addTrace(Xr.existing_pairing),g.active)throw n.setError(ui.active_pairing_already_exists),new Error(`Pairing already exists: ${s}. Please try again with a new connection URI.`);n.addTrace(Xr.pairing_not_expired)}const y=u||_t(ie.FIVE_MINUTES),I={topic:s,relay:f,expiry:y,active:!1,methods:h};this.core.expirer.set(s,y),await this.pairings.set(s,I),n.addTrace(Xr.store_new_pairing),i.activatePairing&&await this.activate({topic:s}),this.events.emit(nn.create,I),n.addTrace(Xr.emit_inactive_pairing),this.core.crypto.keychain.has(s)||await this.core.crypto.setSymKey(o,s),n.addTrace(Xr.subscribing_pairing_topic);try{await this.core.relayer.confirmOnlineStateOrThrow()}catch{n.setError(ui.no_internet_connection)}try{await this.core.relayer.subscribe(s,{relay:f})}catch(M){throw n.setError(ui.subscribe_pairing_topic_failure),M}return n.addTrace(Xr.subscribe_pairing_topic_success),I},this.activate=async({topic:i})=>{this.isInitialized();const n=_t(ie.THIRTY_DAYS);this.core.expirer.set(i,n),await this.pairings.update(i,{active:!0,expiry:n})},this.ping=async i=>{this.isInitialized(),await this.isValidPing(i);const{topic:n}=i;if(this.pairings.keys.includes(n)){const s=await this.sendRequest(n,"wc_pairingPing",{}),{done:o,resolve:f,reject:u}=Xi();this.events.once(Ye("pairing_ping",s),({error:h})=>{h?u(h):f()}),await o()}},this.updateExpiry=async({topic:i,expiry:n})=>{this.isInitialized(),await this.pairings.update(i,{expiry:n})},this.updateMetadata=async({topic:i,metadata:n})=>{this.isInitialized(),await this.pairings.update(i,{peerMetadata:n})},this.getPairings=()=>(this.isInitialized(),this.pairings.values),this.disconnect=async i=>{this.isInitialized(),await this.isValidDisconnect(i);const{topic:n}=i;this.pairings.keys.includes(n)&&(await this.sendRequest(n,"wc_pairingDelete",ct("USER_DISCONNECTED")),await this.deletePairing(n))},this.formatUriFromPairing=i=>{this.isInitialized();const{topic:n,relay:s,expiry:o,methods:f}=i,u=this.core.crypto.keychain.get(n);return n0({protocol:this.core.protocol,version:this.core.version,topic:n,symKey:u,relay:s,expiryTimestamp:o,methods:f})},this.sendRequest=async(i,n,s)=>{const o=rn(n,s),f=await this.core.crypto.encode(i,o),u=gs[n].req;return this.core.history.set(i,o),this.core.relayer.publish(i,f,u),o.id},this.sendResult=async(i,n,s)=>{const o=df(i,s),f=await this.core.crypto.encode(n,o),u=await this.core.history.get(n,i),h=gs[u.request.method].res;await this.core.relayer.publish(n,f,h),await this.core.history.resolve(o)},this.sendError=async(i,n,s)=>{const o=lf(i,s),f=await this.core.crypto.encode(n,o),u=await this.core.history.get(n,i),h=gs[u.request.method]?gs[u.request.method].res:gs.unregistered_method.res;await this.core.relayer.publish(n,f,h),await this.core.history.resolve(o)},this.deletePairing=async(i,n)=>{await this.core.relayer.unsubscribe(i),await Promise.all([this.pairings.delete(i,ct("USER_DISCONNECTED")),this.core.crypto.deleteSymKey(i),n?Promise.resolve():this.core.expirer.del(i)])},this.cleanup=async()=>{const i=this.pairings.getAll().filter(n=>Ci(n.expiry));await Promise.all(i.map(n=>this.deletePairing(n.topic)))},this.onRelayEventRequest=i=>{const{topic:n,payload:s}=i;switch(s.method){case"wc_pairingPing":return this.onPairingPingRequest(n,s);case"wc_pairingDelete":return this.onPairingDeleteRequest(n,s);default:return this.onUnknownRpcMethodRequest(n,s)}},this.onRelayEventResponse=async i=>{const{topic:n,payload:s}=i,o=(await this.core.history.get(n,s.id)).request.method;switch(o){case"wc_pairingPing":return this.onPairingPingResponse(n,s);default:return this.onUnknownRpcMethodResponse(o)}},this.onPairingPingRequest=async(i,n)=>{const{id:s}=n;try{this.isValidPing({topic:i}),await this.sendResult(s,i,!0),this.events.emit(nn.ping,{id:s,topic:i})}catch(o){await this.sendError(s,i,o),this.logger.error(o)}},this.onPairingPingResponse=(i,n)=>{const{id:s}=n;setTimeout(()=>{Yr(n)?this.events.emit(Ye("pairing_ping",s),{}):_r(n)&&this.events.emit(Ye("pairing_ping",s),{error:n.error})},500)},this.onPairingDeleteRequest=async(i,n)=>{const{id:s}=n;try{this.isValidDisconnect({topic:i}),await this.deletePairing(i),this.events.emit(nn.delete,{id:s,topic:i})}catch(o){await this.sendError(s,i,o),this.logger.error(o)}},this.onUnknownRpcMethodRequest=async(i,n)=>{const{id:s,method:o}=n;try{if(this.registeredMethods.includes(o))return;const f=ct("WC_METHOD_UNSUPPORTED",o);await this.sendError(s,i,f),this.logger.error(f)}catch(f){await this.sendError(s,i,f),this.logger.error(f)}},this.onUnknownRpcMethodResponse=i=>{this.registeredMethods.includes(i)||this.logger.error(ct("WC_METHOD_UNSUPPORTED",i))},this.isValidPair=(i,n)=>{var s;if(!rr(i)){const{message:f}=se("MISSING_OR_INVALID",`pair() params: ${i}`);throw n.setError(ui.malformed_pairing_uri),new Error(f)}if(!_y(i.uri)){const{message:f}=se("MISSING_OR_INVALID",`pair() uri: ${i.uri}`);throw n.setError(ui.malformed_pairing_uri),new Error(f)}const o=i0(i?.uri);if(!((s=o?.relay)!=null&&s.protocol)){const{message:f}=se("MISSING_OR_INVALID","pair() uri#relay-protocol");throw n.setError(ui.malformed_pairing_uri),new Error(f)}if(!(o!=null&&o.symKey)){const{message:f}=se("MISSING_OR_INVALID","pair() uri#symKey");throw n.setError(ui.malformed_pairing_uri),new Error(f)}if(o!=null&&o.expiryTimestamp&&ie.toMiliseconds(o?.expiryTimestamp)<Date.now()){n.setError(ui.pairing_expired);const{message:f}=se("EXPIRED","pair() URI has expired. Please try again with a new connection URI.");throw new Error(f)}},this.isValidPing=async i=>{if(!rr(i)){const{message:s}=se("MISSING_OR_INVALID",`ping() params: ${i}`);throw new Error(s)}const{topic:n}=i;await this.isValidPairingTopic(n)},this.isValidDisconnect=async i=>{if(!rr(i)){const{message:s}=se("MISSING_OR_INVALID",`disconnect() params: ${i}`);throw new Error(s)}const{topic:n}=i;await this.isValidPairingTopic(n)},this.isValidPairingTopic=async i=>{if(!mt(i,!1)){const{message:n}=se("MISSING_OR_INVALID",`pairing topic should be a string: ${i}`);throw new Error(n)}if(!this.pairings.keys.includes(i)){const{message:n}=se("NO_MATCHING_KEY",`pairing topic doesn't exist: ${i}`);throw new Error(n)}if(Ci(this.pairings.get(i).expiry)){await this.deletePairing(i);const{message:n}=se("EXPIRED",`pairing topic: ${i}`);throw new Error(n)}},this.core=e,this.logger=Vt(t,this.name),this.pairings=new on(this.core,this.logger,this.name,this.storagePrefix)}get context(){return Xt(this.logger)}isInitialized(){if(!this.initialized){const{message:e}=se("NOT_INITIALIZED",this.name);throw new Error(e)}}registerRelayerEvents(){this.core.relayer.on(Ot.message,async e=>{const{topic:t,message:i,transportType:n}=e;if(!this.pairings.keys.includes(t)||n===ht.link_mode||this.ignoredPayloadTypes.includes(this.core.crypto.getPayloadType(i)))return;const s=await this.core.crypto.decode(t,i);try{pf(s)?(this.core.history.set(t,s),this.onRelayEventRequest({topic:t,payload:s})):Oa(s)&&(await this.core.history.resolve(s),await this.onRelayEventResponse({topic:t,payload:s}),this.core.history.delete(t,s.id))}catch(o){this.logger.error(o)}})}registerExpirerEvents(){this.core.expirer.on(Ar.expired,async e=>{const{topic:t}=Fu(e.target);t&&this.pairings.keys.includes(t)&&(await this.deletePairing(t,!0),this.events.emit(nn.expire,{topic:t}))})}}class u8 extends Dp{constructor(e,t){super(e,t),this.core=e,this.logger=t,this.records=new Map,this.events=new Ut.exports.EventEmitter,this.name=sw,this.version=aw,this.cached=[],this.initialized=!1,this.storagePrefix=Qr,this.init=async()=>{this.initialized||(this.logger.trace("Initialized"),await this.restore(),this.cached.forEach(i=>this.records.set(i.id,i)),this.cached=[],this.registerEventListeners(),this.initialized=!0)},this.set=(i,n,s)=>{if(this.isInitialized(),this.logger.debug("Setting JSON-RPC request history record"),this.logger.trace({type:"method",method:"set",topic:i,request:n,chainId:s}),this.records.has(n.id))return;const o={id:n.id,topic:i,request:{method:n.method,params:n.params||null},chainId:s,expiry:_t(ie.THIRTY_DAYS)};this.records.set(o.id,o),this.persist(),this.events.emit(Cr.created,o)},this.resolve=async i=>{if(this.isInitialized(),this.logger.debug("Updating JSON-RPC response history record"),this.logger.trace({type:"method",method:"update",response:i}),!this.records.has(i.id))return;const n=await this.getRecord(i.id);typeof n.response>"u"&&(n.response=_r(i)?{error:i.error}:{result:i.result},this.records.set(n.id,n),this.persist(),this.events.emit(Cr.updated,n))},this.get=async(i,n)=>(this.isInitialized(),this.logger.debug("Getting record"),this.logger.trace({type:"method",method:"get",topic:i,id:n}),await this.getRecord(n)),this.delete=(i,n)=>{this.isInitialized(),this.logger.debug("Deleting record"),this.logger.trace({type:"method",method:"delete",id:n}),this.values.forEach(s=>{if(s.topic===i){if(typeof n<"u"&&s.id!==n)return;this.records.delete(s.id),this.events.emit(Cr.deleted,s)}}),this.persist()},this.exists=async(i,n)=>(this.isInitialized(),this.records.has(n)?(await this.getRecord(n)).topic===i:!1),this.on=(i,n)=>{this.events.on(i,n)},this.once=(i,n)=>{this.events.once(i,n)},this.off=(i,n)=>{this.events.off(i,n)},this.removeListener=(i,n)=>{this.events.removeListener(i,n)},this.logger=Vt(t,this.name)}get context(){return Xt(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}get size(){return this.records.size}get keys(){return Array.from(this.records.keys())}get values(){return Array.from(this.records.values())}get pending(){const e=[];return this.values.forEach(t=>{if(typeof t.response<"u")return;const i={topic:t.topic,request:rn(t.request.method,t.request.params,t.id),chainId:t.chainId};return e.push(i)}),e}async setJsonRpcRecords(e){await this.core.storage.setItem(this.storageKey,e)}async getJsonRpcRecords(){return await this.core.storage.getItem(this.storageKey)}getRecord(e){this.isInitialized();const t=this.records.get(e);if(!t){const{message:i}=se("NO_MATCHING_KEY",`${this.name}: ${e}`);throw new Error(i)}return t}async persist(){await this.setJsonRpcRecords(this.values),this.events.emit(Cr.sync)}async restore(){try{const e=await this.getJsonRpcRecords();if(typeof e>"u"||!e.length)return;if(this.records.size){const{message:t}=se("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(t),new Error(t)}this.cached=e,this.logger.debug(`Successfully Restored records for ${this.name}`),this.logger.trace({type:"method",method:"restore",records:this.values})}catch(e){this.logger.debug(`Failed to Restore records for ${this.name}`),this.logger.error(e)}}registerEventListeners(){this.events.on(Cr.created,e=>{const t=Cr.created;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,record:e})}),this.events.on(Cr.updated,e=>{const t=Cr.updated;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,record:e})}),this.events.on(Cr.deleted,e=>{const t=Cr.deleted;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,record:e})}),this.core.heartbeat.on(dn.pulse,()=>{this.cleanup()})}cleanup(){try{this.isInitialized();let e=!1;this.records.forEach(t=>{ie.toMiliseconds(t.expiry||0)-Date.now()<=0&&(this.logger.info(`Deleting expired history log: ${t.id}`),this.records.delete(t.id),this.events.emit(Cr.deleted,t,!1),e=!0)}),e&&this.persist()}catch(e){this.logger.warn(e)}}isInitialized(){if(!this.initialized){const{message:e}=se("NOT_INITIALIZED",this.name);throw new Error(e)}}}class d8 extends Tp{constructor(e,t){super(e,t),this.core=e,this.logger=t,this.expirations=new Map,this.events=new Ut.exports.EventEmitter,this.name=ow,this.version=fw,this.cached=[],this.initialized=!1,this.storagePrefix=Qr,this.init=async()=>{this.initialized||(this.logger.trace("Initialized"),await this.restore(),this.cached.forEach(i=>this.expirations.set(i.target,i)),this.cached=[],this.registerEventListeners(),this.initialized=!0)},this.has=i=>{try{const n=this.formatTarget(i);return typeof this.getExpiration(n)<"u"}catch{return!1}},this.set=(i,n)=>{this.isInitialized();const s=this.formatTarget(i),o={target:s,expiry:n};this.expirations.set(s,o),this.checkExpiry(s,o),this.events.emit(Ar.created,{target:s,expiration:o})},this.get=i=>{this.isInitialized();const n=this.formatTarget(i);return this.getExpiration(n)},this.del=i=>{if(this.isInitialized(),this.has(i)){const n=this.formatTarget(i),s=this.getExpiration(n);this.expirations.delete(n),this.events.emit(Ar.deleted,{target:n,expiration:s})}},this.on=(i,n)=>{this.events.on(i,n)},this.once=(i,n)=>{this.events.once(i,n)},this.off=(i,n)=>{this.events.off(i,n)},this.removeListener=(i,n)=>{this.events.removeListener(i,n)},this.logger=Vt(t,this.name)}get context(){return Xt(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 lm(e);if(typeof e=="number")return pm(e);const{message:t}=se("UNKNOWN_TYPE",`Target type: ${typeof e}`);throw new Error(t)}async setExpirations(e){await this.core.storage.setItem(this.storageKey,e)}async getExpirations(){return await this.core.storage.getItem(this.storageKey)}async persist(){await this.setExpirations(this.values),this.events.emit(Ar.sync)}async restore(){try{const e=await this.getExpirations();if(typeof e>"u"||!e.length)return;if(this.expirations.size){const{message:t}=se("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(t),new Error(t)}this.cached=e,this.logger.debug(`Successfully Restored expirations for ${this.name}`),this.logger.trace({type:"method",method:"restore",expirations:this.values})}catch(e){this.logger.debug(`Failed to Restore expirations for ${this.name}`),this.logger.error(e)}}getExpiration(e){const t=this.expirations.get(e);if(!t){const{message:i}=se("NO_MATCHING_KEY",`${this.name}: ${e}`);throw this.logger.warn(i),new Error(i)}return t}checkExpiry(e,t){const{expiry:i}=t;ie.toMiliseconds(i)-Date.now()<=0&&this.expire(e,t)}expire(e,t){this.expirations.delete(e),this.events.emit(Ar.expired,{target:e,expiration:t})}checkExpirations(){this.core.relayer.connected&&this.expirations.forEach((e,t)=>this.checkExpiry(t,e))}registerEventListeners(){this.core.heartbeat.on(dn.pulse,()=>this.checkExpirations()),this.events.on(Ar.created,e=>{const t=Ar.created;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,data:e}),this.persist()}),this.events.on(Ar.expired,e=>{const t=Ar.expired;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,data:e}),this.persist()}),this.events.on(Ar.deleted,e=>{const t=Ar.deleted;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,data:e}),this.persist()})}isInitialized(){if(!this.initialized){const{message:e}=se("NOT_INITIALIZED",this.name);throw new Error(e)}}}class l8 extends Fp{constructor(e,t,i){super(e,t,i),this.core=e,this.logger=t,this.store=i,this.name=cw,this.verifyUrlV3=uw,this.storagePrefix=Qr,this.version=S0,this.init=async()=>{var n;this.isDevEnv||(this.publicKey=await this.store.getItem(this.storeKey),this.publicKey&&ie.toMiliseconds((n=this.publicKey)==null?void 0:n.expiresAt)<Date.now()&&(this.logger.debug("verify v2 public key expired"),await this.removePublicKey()))},this.register=async n=>{if(!ns()||this.isDevEnv)return;const s=window.location.origin,{id:o,decryptedId:f}=n,u=`${this.verifyUrlV3}/attestation?projectId=${this.core.projectId}&origin=${s}&id=${o}&decryptedId=${f}`;try{const h=Hn(),g=this.startAbortTimer(ie.ONE_SECOND*5),y=await new Promise((I,M)=>{const D=()=>{window.removeEventListener("message",k),h.body.removeChild(N),M("attestation aborted")};this.abortController.signal.addEventListener("abort",D);const N=h.createElement("iframe");N.src=u,N.style.display="none",N.addEventListener("error",D,{signal:this.abortController.signal});const k=K=>{if(K.data&&typeof K.data=="string")try{const C=JSON.parse(K.data);if(C.type==="verify_attestation"){if(ho(C.attestation).payload.id!==o)return;clearInterval(g),h.body.removeChild(N),this.abortController.signal.removeEventListener("abort",D),window.removeEventListener("message",k),I(C.attestation===null?"":C.attestation)}}catch(C){this.logger.warn(C)}};h.body.appendChild(N),window.addEventListener("message",k,{signal:this.abortController.signal})});return this.logger.debug("jwt attestation",y),y}catch(h){this.logger.warn(h)}return""},this.resolve=async n=>{if(this.isDevEnv)return"";const{attestationId:s,hash:o,encryptedId:f}=n;if(s===""){this.logger.debug("resolve: attestationId is empty, skipping");return}if(s){if(ho(s).payload.id!==f)return;const h=await this.isValidJwtAttestation(s);if(h){if(!h.isVerified){this.logger.warn("resolve: jwt attestation: origin url not verified");return}return h}}if(!o)return;const u=this.getVerifyUrl(n?.verifyUrl);return this.fetchAttestation(o,u)},this.fetchAttestation=async(n,s)=>{this.logger.debug(`resolving attestation: ${n} from url: ${s}`);const o=this.startAbortTimer(ie.ONE_SECOND*5),f=await fetch(`${s}/attestation/${n}?v2Supported=true`,{signal:this.abortController.signal});return clearTimeout(o),f.status===200?await f.json():void 0},this.getVerifyUrl=n=>{let s=n||bs;return dw.includes(s)||(this.logger.info(`verify url: ${s}, not included in trusted list, assigning default: ${bs}`),s=bs),s},this.fetchPublicKey=async()=>{try{this.logger.debug(`fetching public key from: ${this.verifyUrlV3}`);const n=this.startAbortTimer(ie.FIVE_SECONDS),s=await fetch(`${this.verifyUrlV3}/public-key`,{signal:this.abortController.signal});return clearTimeout(n),await s.json()}catch(n){this.logger.warn(n)}},this.persistPublicKey=async n=>{this.logger.debug("persisting public key to local storage",n),await this.store.setItem(this.storeKey,n),this.publicKey=n},this.removePublicKey=async()=>{this.logger.debug("removing verify v2 public key from storage"),await this.store.removeItem(this.storeKey),this.publicKey=void 0},this.isValidJwtAttestation=async n=>{const s=await this.getPublicKey();try{if(s)return this.validateAttestation(n,s)}catch(f){this.logger.error(f),this.logger.warn("error validating attestation")}const o=await this.fetchAndPersistPublicKey();try{if(o)return this.validateAttestation(n,o)}catch(f){this.logger.error(f),this.logger.warn("error validating attestation")}},this.getPublicKey=async()=>this.publicKey?this.publicKey:await this.fetchAndPersistPublicKey(),this.fetchAndPersistPublicKey=async()=>{if(this.fetchPromise)return await this.fetchPromise,this.publicKey;this.fetchPromise=new Promise(async s=>{const o=await this.fetchPublicKey();o&&(await this.persistPublicKey(o),s(o))});const n=await this.fetchPromise;return this.fetchPromise=void 0,n},this.validateAttestation=(n,s)=>{const o=ry(n,s.publicKey),f={hasExpired:ie.toMiliseconds(o.exp)<Date.now(),payload:o};if(f.hasExpired)throw this.logger.warn("resolve: jwt attestation expired"),new Error("JWT attestation expired");return{origin:f.payload.origin,isScam:f.payload.isScam,isVerified:f.payload.isVerified}},this.logger=Vt(t,this.name),this.abortController=new AbortController,this.isDevEnv=Zo(),this.init()}get storeKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//verify:public:key"}get context(){return Xt(this.logger)}startAbortTimer(e){return this.abortController=new AbortController,setTimeout(()=>this.abortController.abort(),ie.toMiliseconds(e))}}class p8 extends Bp{constructor(e,t){super(e,t),this.projectId=e,this.logger=t,this.context=lw,this.registerDeviceToken=async i=>{const{clientId:n,token:s,notificationType:o,enableEncrypted:f=!1}=i,u=`${pw}/${this.projectId}/clients`;await fetch(u,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({client_id:n,type:o,token:s,always_raw:f})})},this.logger=Vt(t,this.context)}}var g8=Object.defineProperty,ad=Object.getOwnPropertySymbols,b8=Object.prototype.hasOwnProperty,v8=Object.prototype.propertyIsEnumerable,od=(r,e,t)=>e in r?g8(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,ws=(r,e)=>{for(var t in e||(e={}))b8.call(e,t)&&od(r,t,e[t]);if(ad)for(var t of ad(e))v8.call(e,t)&&od(r,t,e[t]);return r};class m8 extends Lp{constructor(e,t,i=!0){super(e,t,i),this.core=e,this.logger=t,this.context=bw,this.storagePrefix=Qr,this.storageVersion=gw,this.events=new Map,this.shouldPersist=!1,this.init=async()=>{if(!Zo())try{const n={eventId:Lu(),timestamp:Date.now(),domain:this.getAppDomain(),props:{event:"INIT",type:"",properties:{client_id:await this.core.crypto.getClientId(),user_agent:Pu(this.core.relayer.protocol,this.core.relayer.version,bf)}}};await this.sendEvent([n])}catch(n){this.logger.warn(n)}},this.createEvent=n=>{const{event:s="ERROR",type:o="",properties:{topic:f,trace:u}}=n,h=Lu(),g=this.core.projectId||"",y=Date.now(),I=ws({eventId:h,timestamp:y,props:{event:s,type:o,properties:{topic:f,trace:u}},bundleId:g,domain:this.getAppDomain()},this.setMethods(h));return this.telemetryEnabled&&(this.events.set(h,I),this.shouldPersist=!0),I},this.getEvent=n=>{const{eventId:s,topic:o}=n;if(s)return this.events.get(s);const f=Array.from(this.events.values()).find(u=>u.props.properties.topic===o);if(f)return ws(ws({},f),this.setMethods(f.eventId))},this.deleteEvent=n=>{const{eventId:s}=n;this.events.delete(s),this.shouldPersist=!0},this.setEventListeners=()=>{this.core.heartbeat.on(dn.pulse,async()=>{this.shouldPersist&&await this.persist(),this.events.forEach(n=>{ie.fromMiliseconds(Date.now())-ie.fromMiliseconds(n.timestamp)>vw&&(this.events.delete(n.eventId),this.shouldPersist=!0)})})},this.setMethods=n=>({addTrace:s=>this.addTrace(n,s),setError:s=>this.setError(n,s)}),this.addTrace=(n,s)=>{const o=this.events.get(n);o&&(o.props.properties.trace.push(s),this.events.set(n,o),this.shouldPersist=!0)},this.setError=(n,s)=>{const o=this.events.get(n);o&&(o.props.type=s,o.timestamp=Date.now(),this.events.set(n,o),this.shouldPersist=!0)},this.persist=async()=>{await this.core.storage.setItem(this.storageKey,Array.from(this.events.values())),this.shouldPersist=!1},this.restore=async()=>{try{const n=await this.core.storage.getItem(this.storageKey)||[];if(!n.length)return;n.forEach(s=>{this.events.set(s.eventId,ws(ws({},s),this.setMethods(s.eventId)))})}catch(n){this.logger.warn(n)}},this.submit=async()=>{if(!this.telemetryEnabled||this.events.size===0)return;const n=[];for(const[s,o]of this.events)o.props.type&&n.push(o);if(n.length!==0)try{if((await this.sendEvent(n)).ok)for(const s of n)this.events.delete(s.eventId),this.shouldPersist=!0}catch(s){this.logger.warn(s)}},this.sendEvent=async n=>{const s=this.getAppDomain()?"":"&sp=desktop";return await fetch(`${mw}?projectId=${this.core.projectId}&st=events_sdk&sv=js-${bf}${s}`,{method:"POST",body:JSON.stringify(n)})},this.getAppDomain=()=>Ru().url,this.logger=Vt(t,this.context),this.telemetryEnabled=i,i?this.restore().then(async()=>{await this.submit(),this.setEventListeners()}):this.persist()}get storageKey(){return this.storagePrefix+this.storageVersion+this.core.customStoragePrefix+"//"+this.context}}var y8=Object.defineProperty,fd=Object.getOwnPropertySymbols,w8=Object.prototype.hasOwnProperty,_8=Object.prototype.propertyIsEnumerable,cd=(r,e,t)=>e in r?y8(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,hd=(r,e)=>{for(var t in e||(e={}))w8.call(e,t)&&cd(r,t,e[t]);if(fd)for(var t of fd(e))_8.call(e,t)&&cd(r,t,e[t]);return r};class _f extends Ip{constructor(e){var t;super(e),this.protocol=E0,this.version=S0,this.name=Ra,this.events=new Ut.exports.EventEmitter,this.initialized=!1,this.on=(o,f)=>this.events.on(o,f),this.once=(o,f)=>this.events.once(o,f),this.off=(o,f)=>this.events.off(o,f),this.removeListener=(o,f)=>this.events.removeListener(o,f),this.dispatchEnvelope=({topic:o,message:f,sessionExists:u})=>{if(!o||!f)return;const h={topic:o,message:f,publishedAt:Date.now(),transportType:ht.link_mode};this.relayer.onLinkMessageEvent(h,{sessionExists:u})},this.projectId=e?.projectId,this.relayUrl=e?.relayUrl||O0,this.customStoragePrefix=e!=null&&e.customStoragePrefix?`:${e.customStoragePrefix}`:"";const i=to({level:typeof e?.logger=="string"&&e.logger?e.logger:U6.logger,name:Ra}),{logger:n,chunkLoggerController:s}=Mp({opts:i,maxSizeInBytes:e?.maxLogBlobSizeInBytes,loggerOverride:e?.logger});this.logChunkController=s,(t=this.logChunkController)!=null&&t.downloadLogsBlobInBrowser&&(window.downloadLogsBlobInBrowser=async()=>{var o,f;(o=this.logChunkController)!=null&&o.downloadLogsBlobInBrowser&&((f=this.logChunkController)==null||f.downloadLogsBlobInBrowser({clientId:await this.crypto.getClientId()}))}),this.logger=Vt(n,this.name),this.heartbeat=new Wa,this.crypto=new k5(this,this.logger,e?.keychain),this.history=new u8(this,this.logger),this.expirer=new d8(this,this.logger),this.storage=e!=null&&e.storage?e.storage:new Xl(hd(hd({},$6),e?.storageOptions)),this.relayer=new a8({core:this,logger:this.logger,relayUrl:this.relayUrl,projectId:this.projectId}),this.pairing=new h8(this,this.logger),this.verify=new l8(this,this.logger,this.storage),this.echoClient=new p8(this.projectId||"",this.logger),this.linkModeSupportedApps=[],this.eventClient=new m8(this,this.logger,e?.telemetryEnabled)}static async init(e){const t=new _f(e);await t.initialize();const i=await t.crypto.getClientId();return await t.storage.setItem(Z6,i),t}get context(){return Xt(this.logger)}async start(){this.initialized||await this.initialize()}async getLogsBlob(){var e;return(e=this.logChunkController)==null?void 0:e.logsToBlob({clientId:await this.crypto.getClientId()})}async addLinkModeSupportedApp(e){this.linkModeSupportedApps.includes(e)||(this.linkModeSupportedApps.push(e),await this.storage.setItem(R0,this.linkModeSupportedApps))}async initialize(){this.logger.trace("Initialized");try{await this.crypto.init(),await this.history.init(),await this.expirer.init(),await this.relayer.init(),await this.heartbeat.init(),await this.pairing.init(),this.eventClient.init(),this.linkModeSupportedApps=await this.storage.getItem(R0)||[],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 xf=_f,ud="wc",dd=2,ld="client",Af=`${ud}@${dd}:${ld}:`,Ef={name:ld,logger:"error",controller:!1,relayUrl:"wss://relay.walletconnect.org"},pd="WALLETCONNECT_DEEPLINK_CHOICE",x8="proposal",A8="Proposal expired",E8="session",Fn=ie.SEVEN_DAYS,S8="engine",Rt={wc_sessionPropose:{req:{ttl:ie.FIVE_MINUTES,prompt:!0,tag:1100},res:{ttl:ie.FIVE_MINUTES,prompt:!1,tag:1101},reject:{ttl:ie.FIVE_MINUTES,prompt:!1,tag:1120},autoReject:{ttl:ie.FIVE_MINUTES,prompt:!1,tag:1121}},wc_sessionSettle:{req:{ttl:ie.FIVE_MINUTES,prompt:!1,tag:1102},res:{ttl:ie.FIVE_MINUTES,prompt:!1,tag:1103}},wc_sessionUpdate:{req:{ttl:ie.ONE_DAY,prompt:!1,tag:1104},res:{ttl:ie.ONE_DAY,prompt:!1,tag:1105}},wc_sessionExtend:{req:{ttl:ie.ONE_DAY,prompt:!1,tag:1106},res:{ttl:ie.ONE_DAY,prompt:!1,tag:1107}},wc_sessionRequest:{req:{ttl:ie.FIVE_MINUTES,prompt:!0,tag:1108},res:{ttl:ie.FIVE_MINUTES,prompt:!1,tag:1109}},wc_sessionEvent:{req:{ttl:ie.FIVE_MINUTES,prompt:!0,tag:1110},res:{ttl:ie.FIVE_MINUTES,prompt:!1,tag:1111}},wc_sessionDelete:{req:{ttl:ie.ONE_DAY,prompt:!1,tag:1112},res:{ttl:ie.ONE_DAY,prompt:!1,tag:1113}},wc_sessionPing:{req:{ttl:ie.ONE_DAY,prompt:!1,tag:1114},res:{ttl:ie.ONE_DAY,prompt:!1,tag:1115}},wc_sessionAuthenticate:{req:{ttl:ie.ONE_HOUR,prompt:!0,tag:1116},res:{ttl:ie.ONE_HOUR,prompt:!1,tag:1117},reject:{ttl:ie.FIVE_MINUTES,prompt:!1,tag:1118},autoReject:{ttl:ie.FIVE_MINUTES,prompt:!1,tag:1119}}},Sf={min:ie.FIVE_MINUTES,max:ie.SEVEN_DAYS},Zr={idle:"IDLE",active:"ACTIVE"},M8="request",I8=["wc_sessionPropose","wc_sessionRequest","wc_authRequest","wc_sessionAuthenticate"],D8="wc",O8="auth",R8="authKeys",P8="pairingTopics",N8="requests",Na=`${D8}@${1.5}:${O8}:`,Ca=`${Na}:PUB_KEY`;var C8=Object.defineProperty,T8=Object.defineProperties,F8=Object.getOwnPropertyDescriptors,gd=Object.getOwnPropertySymbols,B8=Object.prototype.hasOwnProperty,L8=Object.prototype.propertyIsEnumerable,bd=(r,e,t)=>e in r?C8(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,gt=(r,e)=>{for(var t in e||(e={}))B8.call(e,t)&&bd(r,t,e[t]);if(gd)for(var t of gd(e))L8.call(e,t)&&bd(r,t,e[t]);return r},Fr=(r,e)=>T8(r,F8(e));class q8 extends Up{constructor(e){super(e),this.name=S8,this.events=new Ut.exports,this.initialized=!1,this.requestQueue={state:Zr.idle,queue:[]},this.sessionRequestQueue={state:Zr.idle,queue:[]},this.requestQueueDelay=ie.ONE_SECOND,this.expectedPairingMethodMap=new Map,this.recentlyDeletedMap=new Map,this.recentlyDeletedLimit=200,this.relayMessageCache=[],this.init=async()=>{this.initialized||(await this.cleanup(),this.registerRelayerEvents(),this.registerExpirerEvents(),this.registerPairingEvents(),await this.registerLinkModeListeners(),this.client.core.pairing.register({methods:Object.keys(Rt)}),this.initialized=!0,setTimeout(()=>{this.sessionRequestQueue.queue=this.getPendingSessionRequests(),this.processSessionRequestQueue()},ie.toMiliseconds(this.requestQueueDelay)))},this.connect=async t=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();const i=Fr(gt({},t),{requiredNamespaces:t.requiredNamespaces||{},optionalNamespaces:t.optionalNamespaces||{}});await this.isValidConnect(i);const{pairingTopic:n,requiredNamespaces:s,optionalNamespaces:o,sessionProperties:f,relays:u}=i;let h=n,g,y=!1;try{h&&(y=this.client.core.pairing.pairings.get(h).active)}catch(F){throw this.client.logger.error(`connect() -> pairing.get(${h}) failed`),F}if(!h||!y){const{topic:F,uri:U}=await this.client.core.pairing.create();h=F,g=U}if(!h){const{message:F}=se("NO_MATCHING_KEY",`connect() pairing topic: ${h}`);throw new Error(F)}const I=await this.client.core.crypto.generateKeyPair(),M=Rt.wc_sessionPropose.req.ttl||ie.FIVE_MINUTES,D=_t(M),N=gt({requiredNamespaces:s,optionalNamespaces:o,relays:u??[{protocol:D0}],proposer:{publicKey:I,metadata:this.client.metadata},expiryTimestamp:D,pairingTopic:h},f&&{sessionProperties:f}),{reject:k,resolve:K,done:C}=Xi(M,A8);this.events.once(Ye("session_connect"),async({error:F,session:U})=>{if(F)k(F);else if(U){U.self.publicKey=I;const z=Fr(gt({},U),{pairingTopic:N.pairingTopic,requiredNamespaces:N.requiredNamespaces,optionalNamespaces:N.optionalNamespaces,transportType:ht.relay});await this.client.session.set(U.topic,z),await this.setExpiry(U.topic,U.expiry),h&&await this.client.core.pairing.updateMetadata({topic:h,metadata:U.peer.metadata}),this.cleanupDuplicatePairings(z),K(z)}});const j=await this.sendRequest({topic:h,method:"wc_sessionPropose",params:N,throwOnFailedPublish:!0});return await this.setProposal(j,gt({id:j},N)),{uri:g,approval:C}},this.pair=async t=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{return await this.client.core.pairing.pair(t)}catch(i){throw this.client.logger.error("pair() failed"),i}},this.approve=async t=>{var i,n,s;const o=this.client.core.eventClient.createEvent({properties:{topic:(i=t?.id)==null?void 0:i.toString(),trace:[Tr.session_approve_started]}});try{this.isInitialized(),await this.confirmOnlineStateOrThrow()}catch(R){throw o.setError(sn.no_internet_connection),R}try{await this.isValidProposalId(t?.id)}catch(R){throw this.client.logger.error(`approve() -> proposal.get(${t?.id}) failed`),o.setError(sn.proposal_not_found),R}try{await this.isValidApprove(t)}catch(R){throw this.client.logger.error("approve() -> isValidApprove() failed"),o.setError(sn.session_approve_namespace_validation_failure),R}const{id:f,relayProtocol:u,namespaces:h,sessionProperties:g,sessionConfig:y}=t,I=this.client.proposal.get(f);this.client.core.eventClient.deleteEvent({eventId:o.eventId});const{pairingTopic:M,proposer:D,requiredNamespaces:N,optionalNamespaces:k}=I;let K=(n=this.client.core.eventClient)==null?void 0:n.getEvent({topic:M});K||(K=(s=this.client.core.eventClient)==null?void 0:s.createEvent({type:Tr.session_approve_started,properties:{topic:M,trace:[Tr.session_approve_started,Tr.session_namespaces_validation_success]}}));const C=await this.client.core.crypto.generateKeyPair(),j=D.publicKey,F=await this.client.core.crypto.generateSharedKey(C,j),U=gt(gt({relay:{protocol:u??"irn"},namespaces:h,controller:{publicKey:C,metadata:this.client.metadata},expiry:_t(Fn)},g&&{sessionProperties:g}),y&&{sessionConfig:y}),z=ht.relay;K.addTrace(Tr.subscribing_session_topic);try{await this.client.core.relayer.subscribe(F,{transportType:z})}catch(R){throw K.setError(sn.subscribe_session_topic_failure),R}K.addTrace(Tr.subscribe_session_topic_success);const _=Fr(gt({},U),{topic:F,requiredNamespaces:N,optionalNamespaces:k,pairingTopic:M,acknowledged:!1,self:U.controller,peer:{publicKey:D.publicKey,metadata:D.metadata},controller:C,transportType:ht.relay});await this.client.session.set(F,_),K.addTrace(Tr.store_session);try{K.addTrace(Tr.publishing_session_settle),await this.sendRequest({topic:F,method:"wc_sessionSettle",params:U,throwOnFailedPublish:!0}).catch(R=>{throw K?.setError(sn.session_settle_publish_failure),R}),K.addTrace(Tr.session_settle_publish_success),K.addTrace(Tr.publishing_session_approve),await this.sendResult({id:f,topic:M,result:{relay:{protocol:u??"irn"},responderPublicKey:C},throwOnFailedPublish:!0}).catch(R=>{throw K?.setError(sn.session_approve_publish_failure),R}),K.addTrace(Tr.session_approve_publish_success)}catch(R){throw this.client.logger.error(R),this.client.session.delete(F,ct("USER_DISCONNECTED")),await this.client.core.relayer.unsubscribe(F),R}return this.client.core.eventClient.deleteEvent({eventId:K.eventId}),await this.client.core.pairing.updateMetadata({topic:M,metadata:D.metadata}),await this.client.proposal.delete(f,ct("USER_DISCONNECTED")),await this.client.core.pairing.activate({topic:M}),await this.setExpiry(F,_t(Fn)),{topic:F,acknowledged:()=>Promise.resolve(this.client.session.get(F))}},this.reject=async t=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{await this.isValidReject(t)}catch(o){throw this.client.logger.error("reject() -> isValidReject() failed"),o}const{id:i,reason:n}=t;let s;try{s=this.client.proposal.get(i).pairingTopic}catch(o){throw this.client.logger.error(`reject() -> proposal.get(${i}) failed`),o}s&&(await this.sendError({id:i,topic:s,error:n,rpcOpts:Rt.wc_sessionPropose.reject}),await this.client.proposal.delete(i,ct("USER_DISCONNECTED")))},this.update=async t=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{await this.isValidUpdate(t)}catch(y){throw this.client.logger.error("update() -> isValidUpdate() failed"),y}const{topic:i,namespaces:n}=t,{done:s,resolve:o,reject:f}=Xi(),u=hi(),h=tn().toString(),g=this.client.session.get(i).namespaces;return this.events.once(Ye("session_update",u),({error:y})=>{y?f(y):o()}),await this.client.session.update(i,{namespaces:n}),await this.sendRequest({topic:i,method:"wc_sessionUpdate",params:{namespaces:n},throwOnFailedPublish:!0,clientRpcId:u,relayRpcId:h}).catch(y=>{this.client.logger.error(y),this.client.session.update(i,{namespaces:g}),f(y)}),{acknowledged:s}},this.extend=async t=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{await this.isValidExtend(t)}catch(u){throw this.client.logger.error("extend() -> isValidExtend() failed"),u}const{topic:i}=t,n=hi(),{done:s,resolve:o,reject:f}=Xi();return this.events.once(Ye("session_extend",n),({error:u})=>{u?f(u):o()}),await this.setExpiry(i,_t(Fn)),this.sendRequest({topic:i,method:"wc_sessionExtend",params:{},clientRpcId:n,throwOnFailedPublish:!0}).catch(u=>{f(u)}),{acknowledged:s}},this.request=async t=>{this.isInitialized();try{await this.isValidRequest(t)}catch(D){throw this.client.logger.error("request() -> isValidRequest() failed"),D}const{chainId:i,request:n,topic:s,expiry:o=Rt.wc_sessionRequest.req.ttl}=t,f=this.client.session.get(s);f?.transportType===ht.relay&&await this.confirmOnlineStateOrThrow();const u=hi(),h=tn().toString(),{done:g,resolve:y,reject:I}=Xi(o,"Request expired. Please try again.");this.events.once(Ye("session_request",u),({error:D,result:N})=>{D?I(D):y(N)});const M=this.getAppLinkIfEnabled(f.peer.metadata,f.transportType);return M?(await this.sendRequest({clientRpcId:u,relayRpcId:h,topic:s,method:"wc_sessionRequest",params:{request:Fr(gt({},n),{expiryTimestamp:_t(o)}),chainId:i},expiry:o,throwOnFailedPublish:!0,appLink:M}).catch(D=>I(D)),this.client.events.emit("session_request_sent",{topic:s,request:n,chainId:i,id:u}),await g()):await Promise.all([new Promise(async D=>{await this.sendRequest({clientRpcId:u,relayRpcId:h,topic:s,method:"wc_sessionRequest",params:{request:Fr(gt({},n),{expiryTimestamp:_t(o)}),chainId:i},expiry:o,throwOnFailedPublish:!0}).catch(N=>I(N)),this.client.events.emit("session_request_sent",{topic:s,request:n,chainId:i,id:u}),D()}),new Promise(async D=>{var N;if(!((N=f.sessionConfig)!=null&&N.disableDeepLink)){const k=await mm(this.client.core.storage,pd);await bm({id:u,topic:s,wcDeepLink:k})}D()}),g()]).then(D=>D[2])},this.respond=async t=>{this.isInitialized(),await this.isValidRespond(t);const{topic:i,response:n}=t,{id:s}=n,o=this.client.session.get(i);o.transportType===ht.relay&&await this.confirmOnlineStateOrThrow();const f=this.getAppLinkIfEnabled(o.peer.metadata,o.transportType);Yr(n)?await this.sendResult({id:s,topic:i,result:n.result,throwOnFailedPublish:!0,appLink:f}):_r(n)&&await this.sendError({id:s,topic:i,error:n.error,appLink:f}),this.cleanupAfterResponse(t)},this.ping=async t=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{await this.isValidPing(t)}catch(n){throw this.client.logger.error("ping() -> isValidPing() failed"),n}const{topic:i}=t;if(this.client.session.keys.includes(i)){const n=hi(),s=tn().toString(),{done:o,resolve:f,reject:u}=Xi();this.events.once(Ye("session_ping",n),({error:h})=>{h?u(h):f()}),await Promise.all([this.sendRequest({topic:i,method:"wc_sessionPing",params:{},throwOnFailedPublish:!0,clientRpcId:n,relayRpcId:s}),o()])}else this.client.core.pairing.pairings.keys.includes(i)&&await this.client.core.pairing.ping({topic:i})},this.emit=async t=>{this.isInitialized(),await this.confirmOnlineStateOrThrow(),await this.isValidEmit(t);const{topic:i,event:n,chainId:s}=t,o=tn().toString(),f=hi();await this.sendRequest({topic:i,method:"wc_sessionEvent",params:{event:n,chainId:s},throwOnFailedPublish:!0,relayRpcId:o,clientRpcId:f})},this.disconnect=async t=>{this.isInitialized(),await this.confirmOnlineStateOrThrow(),await this.isValidDisconnect(t);const{topic:i}=t;if(this.client.session.keys.includes(i))await this.sendRequest({topic:i,method:"wc_sessionDelete",params:ct("USER_DISCONNECTED"),throwOnFailedPublish:!0}),await this.deleteSession({topic:i,emitEvent:!1});else if(this.client.core.pairing.pairings.keys.includes(i))await this.client.core.pairing.disconnect({topic:i});else{const{message:n}=se("MISMATCHED_TOPIC",`Session or pairing topic not found: ${i}`);throw new Error(n)}},this.find=t=>(this.isInitialized(),this.client.session.getAll().filter(i=>yy(i,t))),this.getPendingSessionRequests=()=>this.client.pendingRequest.getAll(),this.authenticate=async(t,i)=>{var n;this.isInitialized(),this.isValidAuthenticate(t);const s=i&&this.client.core.linkModeSupportedApps.includes(i)&&((n=this.client.metadata.redirect)==null?void 0:n.linkMode),o=s?ht.link_mode:ht.relay;o===ht.relay&&await this.confirmOnlineStateOrThrow();const{chains:f,statement:u="",uri:h,domain:g,nonce:y,type:I,exp:M,nbf:D,methods:N=[],expiry:k}=t,K=[...t.resources||[]],{topic:C,uri:j}=await this.client.core.pairing.create({methods:["wc_sessionAuthenticate"],transportType:o});this.client.logger.info({message:"Generated new pairing",pairing:{topic:C,uri:j}});const F=await this.client.core.crypto.generateKeyPair(),U=Aa(F);if(await Promise.all([this.client.auth.authKeys.set(Ca,{responseTopic:U,publicKey:F}),this.client.auth.pairingTopics.set(U,{topic:U,pairingTopic:C})]),await this.client.core.relayer.subscribe(U,{transportType:o}),this.client.logger.info(`sending request to new pairing topic: ${C}`),N.length>0){const{namespace:E}=ya(f[0]);let x=$m(E,"request",N);xa(K)&&(x=km(x,K.pop())),K.push(x)}const z=k&&k>Rt.wc_sessionAuthenticate.req.ttl?k:Rt.wc_sessionAuthenticate.req.ttl,_={authPayload:{type:I??"caip122",chains:f,statement:u,aud:h,domain:g,version:"1",nonce:y,iat:new Date().toISOString(),exp:M,nbf:D,resources:K},requester:{publicKey:F,metadata:this.client.metadata},expiryTimestamp:_t(z)},R={eip155:{chains:f,methods:[...new Set(["personal_sign",...N])],events:["chainChanged","accountsChanged"]}},J={requiredNamespaces:{},optionalNamespaces:R,relays:[{protocol:"irn"}],pairingTopic:C,proposer:{publicKey:F,metadata:this.client.metadata},expiryTimestamp:_t(Rt.wc_sessionPropose.req.ttl)},{done:Q,resolve:P,reject:p}=Xi(z,"Request expired"),l=async({error:E,session:x})=>{if(this.events.off(Ye("session_request",c),a),E)p(E);else if(x){x.self.publicKey=F,await this.client.session.set(x.topic,x),await this.setExpiry(x.topic,x.expiry),C&&await this.client.core.pairing.updateMetadata({topic:C,metadata:x.peer.metadata});const d=this.client.session.get(x.topic);await this.deleteProposal(b),P({session:d})}},a=async E=>{var x,d,w;if(await this.deletePendingAuthRequest(c,{message:"fulfilled",code:0}),E.error){const q=ct("WC_METHOD_UNSUPPORTED","wc_sessionAuthenticate");return E.error.code===q.code?void 0:(this.events.off(Ye("session_connect"),l),p(E.error.message))}await this.deleteProposal(b),this.events.off(Ye("session_connect"),l);const{cacaos:v,responder:O}=E.result,W=[],S=[];for(const q of v){await zu({cacao:q,projectId:this.client.core.projectId})||(this.client.logger.error(q,"Signature verification failed"),p(ct("SESSION_SETTLEMENT_FAILED","Signature verification failed")));const{p:B}=q,m=xa(B.resources),L=[tf(B.iss)],G=_a(B.iss);if(m){const Y=ju(m),X=Hu(m);W.push(...Y),L.push(...X)}for(const Y of L)S.push(`${Y}:${G}`)}const H=await this.client.core.crypto.generateSharedKey(F,O.publicKey);let T;W.length>0&&(T={topic:H,acknowledged:!0,self:{publicKey:F,metadata:this.client.metadata},peer:O,controller:O.publicKey,expiry:_t(Fn),requiredNamespaces:{},optionalNamespaces:{},relay:{protocol:"irn"},pairingTopic:C,namespaces:s0([...new Set(W)],[...new Set(S)]),transportType:o},await this.client.core.relayer.subscribe(H,{transportType:o}),await this.client.session.set(H,T),C&&await this.client.core.pairing.updateMetadata({topic:C,metadata:O.metadata}),T=this.client.session.get(H)),(x=this.client.metadata.redirect)!=null&&x.linkMode&&(d=O.metadata.redirect)!=null&&d.linkMode&&(w=O.metadata.redirect)!=null&&w.universal&&i&&(this.client.core.addLinkModeSupportedApp(O.metadata.redirect.universal),this.client.session.update(H,{transportType:ht.link_mode})),P({auths:v,session:T})},c=hi(),b=hi();this.events.once(Ye("session_connect"),l),this.events.once(Ye("session_request",c),a);let A;try{if(s){const E=rn("wc_sessionAuthenticate",_,c);this.client.core.history.set(C,E);const x=await this.client.core.crypto.encode("",E,{type:fs,encoding:as});A=Sa(i,C,x)}else await Promise.all([this.sendRequest({topic:C,method:"wc_sessionAuthenticate",params:_,expiry:t.expiry,throwOnFailedPublish:!0,clientRpcId:c}),this.sendRequest({topic:C,method:"wc_sessionPropose",params:J,expiry:Rt.wc_sessionPropose.req.ttl,throwOnFailedPublish:!0,clientRpcId:b})])}catch(E){throw this.events.off(Ye("session_connect"),l),this.events.off(Ye("session_request",c),a),E}return await this.setProposal(b,gt({id:b},J)),await this.setAuthRequest(c,{request:Fr(gt({},_),{verifyContext:{}}),pairingTopic:C,transportType:o}),{uri:A??j,response:Q}},this.approveSessionAuthenticate=async t=>{const{id:i,auths:n}=t,s=this.client.core.eventClient.createEvent({properties:{topic:i.toString(),trace:[an.authenticated_session_approve_started]}});try{this.isInitialized()}catch(k){throw s.setError(vs.no_internet_connection),k}const o=this.getPendingAuthRequest(i);if(!o)throw s.setError(vs.authenticated_session_pending_request_not_found),new Error(`Could not find pending auth request with id ${i}`);const f=o.transportType||ht.relay;f===ht.relay&&await this.confirmOnlineStateOrThrow();const u=o.requester.publicKey,h=await this.client.core.crypto.generateKeyPair(),g=Aa(u),y={type:ai,receiverPublicKey:u,senderPublicKey:h},I=[],M=[];for(const k of n){if(!await zu({cacao:k,projectId:this.client.core.projectId})){s.setError(vs.invalid_cacao);const U=ct("SESSION_SETTLEMENT_FAILED","Signature verification failed");throw await this.sendError({id:i,topic:g,error:U,encodeOpts:y}),new Error(U.message)}s.addTrace(an.cacaos_verified);const{p:K}=k,C=xa(K.resources),j=[tf(K.iss)],F=_a(K.iss);if(C){const U=ju(C),z=Hu(C);I.push(...U),j.push(...z)}for(const U of j)M.push(`${U}:${F}`)}const D=await this.client.core.crypto.generateSharedKey(h,u);s.addTrace(an.create_authenticated_session_topic);let N;if(I?.length>0){N={topic:D,acknowledged:!0,self:{publicKey:h,metadata:this.client.metadata},peer:{publicKey:u,metadata:o.requester.metadata},controller:u,expiry:_t(Fn),authentication:n,requiredNamespaces:{},optionalNamespaces:{},relay:{protocol:"irn"},pairingTopic:o.pairingTopic,namespaces:s0([...new Set(I)],[...new Set(M)]),transportType:f},s.addTrace(an.subscribing_authenticated_session_topic);try{await this.client.core.relayer.subscribe(D,{transportType:f})}catch(k){throw s.setError(vs.subscribe_authenticated_session_topic_failure),k}s.addTrace(an.subscribe_authenticated_session_topic_success),await this.client.session.set(D,N),s.addTrace(an.store_authenticated_session),await this.client.core.pairing.updateMetadata({topic:o.pairingTopic,metadata:o.requester.metadata})}s.addTrace(an.publishing_authenticated_session_approve);try{await this.sendResult({topic:g,id:i,result:{cacaos:n,responder:{publicKey:h,metadata:this.client.metadata}},encodeOpts:y,throwOnFailedPublish:!0,appLink:this.getAppLinkIfEnabled(o.requester.metadata,f)})}catch(k){throw s.setError(vs.authenticated_session_approve_publish_failure),k}return await this.client.auth.requests.delete(i,{message:"fulfilled",code:0}),await this.client.core.pairing.activate({topic:o.pairingTopic}),this.client.core.eventClient.deleteEvent({eventId:s.eventId}),{session:N}},this.rejectSessionAuthenticate=async t=>{this.isInitialized();const{id:i,reason:n}=t,s=this.getPendingAuthRequest(i);if(!s)throw new Error(`Could not find pending auth request with id ${i}`);s.transportType===ht.relay&&await this.confirmOnlineStateOrThrow();const o=s.requester.publicKey,f=await this.client.core.crypto.generateKeyPair(),u=Aa(o),h={type:ai,receiverPublicKey:o,senderPublicKey:f};await this.sendError({id:i,topic:u,error:n,encodeOpts:h,rpcOpts:Rt.wc_sessionAuthenticate.reject,appLink:this.getAppLinkIfEnabled(s.requester.metadata,s.transportType)}),await this.client.auth.requests.delete(i,{message:"rejected",code:0}),await this.client.proposal.delete(i,ct("USER_DISCONNECTED"))},this.formatAuthMessage=t=>{this.isInitialized();const{request:i,iss:n}=t;return ku(i,n)},this.processRelayMessageCache=()=>{setTimeout(async()=>{if(this.relayMessageCache.length!==0)for(;this.relayMessageCache.length>0;)try{const t=this.relayMessageCache.shift();t&&await this.onRelayMessage(t)}catch(t){this.client.logger.error(t)}},50)},this.cleanupDuplicatePairings=async t=>{if(t.pairingTopic)try{const i=this.client.core.pairing.pairings.get(t.pairingTopic),n=this.client.core.pairing.pairings.getAll().filter(s=>{var o,f;return((o=s.peerMetadata)==null?void 0:o.url)&&((f=s.peerMetadata)==null?void 0:f.url)===t.peer.metadata.url&&s.topic&&s.topic!==i.topic});if(n.length===0)return;this.client.logger.info(`Cleaning up ${n.length} duplicate pairing(s)`),await Promise.all(n.map(s=>this.client.core.pairing.disconnect({topic:s.topic}))),this.client.logger.info("Duplicate pairings clean up finished")}catch(i){this.client.logger.error(i)}},this.deleteSession=async t=>{var i;const{topic:n,expirerHasDeleted:s=!1,emitEvent:o=!0,id:f=0}=t,{self:u}=this.client.session.get(n);await this.client.core.relayer.unsubscribe(n),await this.client.session.delete(n,ct("USER_DISCONNECTED")),this.addToRecentlyDeleted(n,"session"),this.client.core.crypto.keychain.has(u.publicKey)&&await this.client.core.crypto.deleteKeyPair(u.publicKey),this.client.core.crypto.keychain.has(n)&&await this.client.core.crypto.deleteSymKey(n),s||this.client.core.expirer.del(n),this.client.core.storage.removeItem(pd).catch(h=>this.client.logger.warn(h)),this.getPendingSessionRequests().forEach(h=>{h.topic===n&&this.deletePendingSessionRequest(h.id,ct("USER_DISCONNECTED"))}),n===((i=this.sessionRequestQueue.queue[0])==null?void 0:i.topic)&&(this.sessionRequestQueue.state=Zr.idle),o&&this.client.events.emit("session_delete",{id:f,topic:n})},this.deleteProposal=async(t,i)=>{if(i)try{const n=this.client.proposal.get(t);this.client.core.eventClient.getEvent({topic:n.pairingTopic})?.setError(sn.proposal_expired)}catch{}await Promise.all([this.client.proposal.delete(t,ct("USER_DISCONNECTED")),i?Promise.resolve():this.client.core.expirer.del(t)]),this.addToRecentlyDeleted(t,"proposal")},this.deletePendingSessionRequest=async(t,i,n=!1)=>{await Promise.all([this.client.pendingRequest.delete(t,i),n?Promise.resolve():this.client.core.expirer.del(t)]),this.addToRecentlyDeleted(t,"request"),this.sessionRequestQueue.queue=this.sessionRequestQueue.queue.filter(s=>s.id!==t),n&&(this.sessionRequestQueue.state=Zr.idle,this.client.events.emit("session_request_expire",{id:t}))},this.deletePendingAuthRequest=async(t,i,n=!1)=>{await Promise.all([this.client.auth.requests.delete(t,i),n?Promise.resolve():this.client.core.expirer.del(t)])},this.setExpiry=async(t,i)=>{this.client.session.keys.includes(t)&&(this.client.core.expirer.set(t,i),await this.client.session.update(t,{expiry:i}))},this.setProposal=async(t,i)=>{this.client.core.expirer.set(t,_t(Rt.wc_sessionPropose.req.ttl)),await this.client.proposal.set(t,i)},this.setAuthRequest=async(t,i)=>{const{request:n,pairingTopic:s,transportType:o=ht.relay}=i;this.client.core.expirer.set(t,n.expiryTimestamp),await this.client.auth.requests.set(t,{authPayload:n.authPayload,requester:n.requester,expiryTimestamp:n.expiryTimestamp,id:t,pairingTopic:s,verifyContext:n.verifyContext,transportType:o})},this.setPendingSessionRequest=async t=>{const{id:i,topic:n,params:s,verifyContext:o}=t,f=s.request.expiryTimestamp||_t(Rt.wc_sessionRequest.req.ttl);this.client.core.expirer.set(i,f),await this.client.pendingRequest.set(i,{id:i,topic:n,params:s,verifyContext:o})},this.sendRequest=async t=>{const{topic:i,method:n,params:s,expiry:o,relayRpcId:f,clientRpcId:u,throwOnFailedPublish:h,appLink:g}=t,y=rn(n,s,u);let I;const M=!!g;try{const k=M?as:Ti;I=await this.client.core.crypto.encode(i,y,{encoding:k})}catch(k){throw await this.cleanup(),this.client.logger.error(`sendRequest() -> core.crypto.encode() for topic ${i} failed`),k}let D;if(I8.includes(n)){const k=oi(JSON.stringify(y)),K=oi(I);D=await this.client.core.verify.register({id:K,decryptedId:k})}const N=Rt[n].req;if(N.attestation=D,o&&(N.ttl=o),f&&(N.id=f),this.client.core.history.set(i,y),M){const k=Sa(g,i,I);await global.Linking.openURL(k,this.client.name)}else{const k=Rt[n].req;o&&(k.ttl=o),f&&(k.id=f),h?(k.internal=Fr(gt({},k.internal),{throwOnFailedPublish:!0}),await this.client.core.relayer.publish(i,I,k)):this.client.core.relayer.publish(i,I,k).catch(K=>this.client.logger.error(K))}return y.id},this.sendResult=async t=>{const{id:i,topic:n,result:s,throwOnFailedPublish:o,encodeOpts:f,appLink:u}=t,h=df(i,s);let g;const y=u&&typeof(global==null?void 0:global.Linking)<"u";try{const M=y?as:Ti;g=await this.client.core.crypto.encode(n,h,Fr(gt({},f||{}),{encoding:M}))}catch(M){throw await this.cleanup(),this.client.logger.error(`sendResult() -> core.crypto.encode() for topic ${n} failed`),M}let I;try{I=await this.client.core.history.get(n,i)}catch(M){throw this.client.logger.error(`sendResult() -> history.get(${n}, ${i}) failed`),M}if(y){const M=Sa(u,n,g);await global.Linking.openURL(M,this.client.name)}else{const M=Rt[I.request.method].res;o?(M.internal=Fr(gt({},M.internal),{throwOnFailedPublish:!0}),await this.client.core.relayer.publish(n,g,M)):this.client.core.relayer.publish(n,g,M).catch(D=>this.client.logger.error(D))}await this.client.core.history.resolve(h)},this.sendError=async t=>{const{id:i,topic:n,error:s,encodeOpts:o,rpcOpts:f,appLink:u}=t,h=lf(i,s);let g;const y=u&&typeof(global==null?void 0:global.Linking)<"u";try{const M=y?as:Ti;g=await this.client.core.crypto.encode(n,h,Fr(gt({},o||{}),{encoding:M}))}catch(M){throw await this.cleanup(),this.client.logger.error(`sendError() -> core.crypto.encode() for topic ${n} failed`),M}let I;try{I=await this.client.core.history.get(n,i)}catch(M){throw this.client.logger.error(`sendError() -> history.get(${n}, ${i}) failed`),M}if(y){const M=Sa(u,n,g);await global.Linking.openURL(M,this.client.name)}else{const M=f||Rt[I.request.method].res;this.client.core.relayer.publish(n,g,M)}await this.client.core.history.resolve(h)},this.cleanup=async()=>{const t=[],i=[];this.client.session.getAll().forEach(n=>{let s=!1;Ci(n.expiry)&&(s=!0),this.client.core.crypto.keychain.has(n.topic)||(s=!0),s&&t.push(n.topic)}),this.client.proposal.getAll().forEach(n=>{Ci(n.expiryTimestamp)&&i.push(n.id)}),await Promise.all([...t.map(n=>this.deleteSession({topic:n})),...i.map(n=>this.deleteProposal(n))])},this.onRelayEventRequest=async t=>{this.requestQueue.queue.push(t),await this.processRequestsQueue()},this.processRequestsQueue=async()=>{if(this.requestQueue.state===Zr.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=Zr.active;const t=this.requestQueue.queue.shift();if(t)try{await this.processRequest(t)}catch(i){this.client.logger.warn(i)}}this.requestQueue.state=Zr.idle},this.processRequest=async t=>{const{topic:i,payload:n,attestation:s,transportType:o,encryptedId:f}=t,u=n.method;if(!this.shouldIgnorePairingRequest({topic:i,requestMethod:u}))switch(u){case"wc_sessionPropose":return await this.onSessionProposeRequest({topic:i,payload:n,attestation:s,encryptedId:f});case"wc_sessionSettle":return await this.onSessionSettleRequest(i,n);case"wc_sessionUpdate":return await this.onSessionUpdateRequest(i,n);case"wc_sessionExtend":return await this.onSessionExtendRequest(i,n);case"wc_sessionPing":return await this.onSessionPingRequest(i,n);case"wc_sessionDelete":return await this.onSessionDeleteRequest(i,n);case"wc_sessionRequest":return await this.onSessionRequest({topic:i,payload:n,attestation:s,encryptedId:f,transportType:o});case"wc_sessionEvent":return await this.onSessionEventRequest(i,n);case"wc_sessionAuthenticate":return await this.onSessionAuthenticateRequest({topic:i,payload:n,attestation:s,encryptedId:f,transportType:o});default:return this.client.logger.info(`Unsupported request method ${u}`)}},this.onRelayEventResponse=async t=>{const{topic:i,payload:n,transportType:s}=t,o=(await this.client.core.history.get(i,n.id)).request.method;switch(o){case"wc_sessionPropose":return this.onSessionProposeResponse(i,n,s);case"wc_sessionSettle":return this.onSessionSettleResponse(i,n);case"wc_sessionUpdate":return this.onSessionUpdateResponse(i,n);case"wc_sessionExtend":return this.onSessionExtendResponse(i,n);case"wc_sessionPing":return this.onSessionPingResponse(i,n);case"wc_sessionRequest":return this.onSessionRequestResponse(i,n);case"wc_sessionAuthenticate":return this.onSessionAuthenticateResponse(i,n);default:return this.client.logger.info(`Unsupported response method ${o}`)}},this.onRelayEventUnknownPayload=t=>{const{topic:i}=t,{message:n}=se("MISSING_OR_INVALID",`Decoded payload on topic ${i} is not identifiable as a JSON-RPC request or a response.`);throw new Error(n)},this.shouldIgnorePairingRequest=t=>{const{topic:i,requestMethod:n}=t,s=this.expectedPairingMethodMap.get(i);return!s||s.includes(n)?!1:!!(s.includes("wc_sessionAuthenticate")&&this.client.events.listenerCount("session_authenticate")>0)},this.onSessionProposeRequest=async t=>{const{topic:i,payload:n,attestation:s,encryptedId:o}=t,{params:f,id:u}=n;try{const h=this.client.core.eventClient.getEvent({topic:i});this.client.events.listenerCount("session_proposal")===0&&(console.warn("No listener for session_proposal event"),h?.setError(ui.proposal_listener_not_found)),this.isValidConnect(gt({},n.params));const g=f.expiryTimestamp||_t(Rt.wc_sessionPropose.req.ttl),y=gt({id:u,pairingTopic:i,expiryTimestamp:g},f);await this.setProposal(u,y);const I=await this.getVerifyContext({attestationId:s,hash:oi(JSON.stringify(n)),encryptedId:o,metadata:y.proposer.metadata});h?.addTrace(Xr.emit_session_proposal),this.client.events.emit("session_proposal",{id:u,params:y,verifyContext:I})}catch(h){await this.sendError({id:u,topic:i,error:h,rpcOpts:Rt.wc_sessionPropose.autoReject}),this.client.logger.error(h)}},this.onSessionProposeResponse=async(t,i,n)=>{const{id:s}=i;if(Yr(i)){const{result:o}=i;this.client.logger.trace({type:"method",method:"onSessionProposeResponse",result:o});const f=this.client.proposal.get(s);this.client.logger.trace({type:"method",method:"onSessionProposeResponse",proposal:f});const u=f.proposer.publicKey;this.client.logger.trace({type:"method",method:"onSessionProposeResponse",selfPublicKey:u});const h=o.responderPublicKey;this.client.logger.trace({type:"method",method:"onSessionProposeResponse",peerPublicKey:h});const g=await this.client.core.crypto.generateSharedKey(u,h);this.client.logger.trace({type:"method",method:"onSessionProposeResponse",sessionTopic:g});const y=await this.client.core.relayer.subscribe(g,{transportType:n});this.client.logger.trace({type:"method",method:"onSessionProposeResponse",subscriptionId:y}),await this.client.core.pairing.activate({topic:t})}else if(_r(i)){await this.client.proposal.delete(s,ct("USER_DISCONNECTED"));const o=Ye("session_connect");if(this.events.listenerCount(o)===0)throw new Error(`emitting ${o} without any listeners, 954`);this.events.emit(Ye("session_connect"),{error:i.error})}},this.onSessionSettleRequest=async(t,i)=>{const{id:n,params:s}=i;try{this.isValidSessionSettleRequest(s);const{relay:o,controller:f,expiry:u,namespaces:h,sessionProperties:g,sessionConfig:y}=i.params,I=Fr(gt(gt({topic:t,relay:o,expiry:u,namespaces:h,acknowledged:!0,pairingTopic:"",requiredNamespaces:{},optionalNamespaces:{},controller:f.publicKey,self:{publicKey:"",metadata:this.client.metadata},peer:{publicKey:f.publicKey,metadata:f.metadata}},g&&{sessionProperties:g}),y&&{sessionConfig:y}),{transportType:ht.relay}),M=Ye("session_connect");if(this.events.listenerCount(M)===0)throw new Error(`emitting ${M} without any listeners 997`);this.events.emit(Ye("session_connect"),{session:I}),await this.sendResult({id:i.id,topic:t,result:!0,throwOnFailedPublish:!0})}catch(o){await this.sendError({id:n,topic:t,error:o}),this.client.logger.error(o)}},this.onSessionSettleResponse=async(t,i)=>{const{id:n}=i;Yr(i)?(await this.client.session.update(t,{acknowledged:!0}),this.events.emit(Ye("session_approve",n),{})):_r(i)&&(await this.client.session.delete(t,ct("USER_DISCONNECTED")),this.events.emit(Ye("session_approve",n),{error:i.error}))},this.onSessionUpdateRequest=async(t,i)=>{const{params:n,id:s}=i;try{const o=`${t}_session_update`,f=ds.get(o);if(f&&this.isRequestOutOfSync(f,s)){this.client.logger.warn(`Discarding out of sync request - ${s}`),this.sendError({id:s,topic:t,error:ct("INVALID_UPDATE_REQUEST")});return}this.isValidUpdate(gt({topic:t},n));try{ds.set(o,s),await this.client.session.update(t,{namespaces:n.namespaces}),await this.sendResult({id:s,topic:t,result:!0,throwOnFailedPublish:!0})}catch(u){throw ds.delete(o),u}this.client.events.emit("session_update",{id:s,topic:t,params:n})}catch(o){await this.sendError({id:s,topic:t,error:o}),this.client.logger.error(o)}},this.isRequestOutOfSync=(t,i)=>i.toString().slice(0,-3)<t.toString().slice(0,-3),this.onSessionUpdateResponse=(t,i)=>{const{id:n}=i,s=Ye("session_update",n);if(this.events.listenerCount(s)===0)throw new Error(`emitting ${s} without any listeners`);Yr(i)?this.events.emit(Ye("session_update",n),{}):_r(i)&&this.events.emit(Ye("session_update",n),{error:i.error})},this.onSessionExtendRequest=async(t,i)=>{const{id:n}=i;try{this.isValidExtend({topic:t}),await this.setExpiry(t,_t(Fn)),await this.sendResult({id:n,topic:t,result:!0,throwOnFailedPublish:!0}),this.client.events.emit("session_extend",{id:n,topic:t})}catch(s){await this.sendError({id:n,topic:t,error:s}),this.client.logger.error(s)}},this.onSessionExtendResponse=(t,i)=>{const{id:n}=i,s=Ye("session_extend",n);if(this.events.listenerCount(s)===0)throw new Error(`emitting ${s} without any listeners`);Yr(i)?this.events.emit(Ye("session_extend",n),{}):_r(i)&&this.events.emit(Ye("session_extend",n),{error:i.error})},this.onSessionPingRequest=async(t,i)=>{const{id:n}=i;try{this.isValidPing({topic:t}),await this.sendResult({id:n,topic:t,result:!0,throwOnFailedPublish:!0}),this.client.events.emit("session_ping",{id:n,topic:t})}catch(s){await this.sendError({id:n,topic:t,error:s}),this.client.logger.error(s)}},this.onSessionPingResponse=(t,i)=>{const{id:n}=i,s=Ye("session_ping",n);if(this.events.listenerCount(s)===0)throw new Error(`emitting ${s} without any listeners`);setTimeout(()=>{Yr(i)?this.events.emit(Ye("session_ping",n),{}):_r(i)&&this.events.emit(Ye("session_ping",n),{error:i.error})},500)},this.onSessionDeleteRequest=async(t,i)=>{const{id:n}=i;try{this.isValidDisconnect({topic:t,reason:i.params}),Promise.all([new Promise(s=>{this.client.core.relayer.once(Ot.publish,async()=>{s(await this.deleteSession({topic:t,id:n}))})}),this.sendResult({id:n,topic:t,result:!0,throwOnFailedPublish:!0}),this.cleanupPendingSentRequestsForTopic({topic:t,error:ct("USER_DISCONNECTED")})]).catch(s=>this.client.logger.error(s))}catch(s){this.client.logger.error(s)}},this.onSessionRequest=async t=>{var i,n,s;const{topic:o,payload:f,attestation:u,encryptedId:h,transportType:g}=t,{id:y,params:I}=f;try{await this.isValidRequest(gt({topic:o},I));const M=this.client.session.get(o),D=await this.getVerifyContext({attestationId:u,hash:oi(JSON.stringify(rn("wc_sessionRequest",I,y))),encryptedId:h,metadata:M.peer.metadata,transportType:g}),N={id:y,topic:o,params:I,verifyContext:D};await this.setPendingSessionRequest(N),g===ht.link_mode&&(i=M.peer.metadata.redirect)!=null&&i.universal&&this.client.core.addLinkModeSupportedApp((n=M.peer.metadata.redirect)==null?void 0:n.universal),(s=this.client.signConfig)!=null&&s.disableRequestQueue?this.emitSessionRequest(N):(this.addSessionRequestToSessionRequestQueue(N),this.processSessionRequestQueue())}catch(M){await this.sendError({id:y,topic:o,error:M}),this.client.logger.error(M)}},this.onSessionRequestResponse=(t,i)=>{const{id:n}=i,s=Ye("session_request",n);if(this.events.listenerCount(s)===0)throw new Error(`emitting ${s} without any listeners`);Yr(i)?this.events.emit(Ye("session_request",n),{result:i.result}):_r(i)&&this.events.emit(Ye("session_request",n),{error:i.error})},this.onSessionEventRequest=async(t,i)=>{const{id:n,params:s}=i;try{const o=`${t}_session_event_${s.event.name}`,f=ds.get(o);if(f&&this.isRequestOutOfSync(f,n)){this.client.logger.info(`Discarding out of sync request - ${n}`);return}this.isValidEmit(gt({topic:t},s)),this.client.events.emit("session_event",{id:n,topic:t,params:s}),ds.set(o,n)}catch(o){await this.sendError({id:n,topic:t,error:o}),this.client.logger.error(o)}},this.onSessionAuthenticateResponse=(t,i)=>{const{id:n}=i;this.client.logger.trace({type:"method",method:"onSessionAuthenticateResponse",topic:t,payload:i}),Yr(i)?this.events.emit(Ye("session_request",n),{result:i.result}):_r(i)&&this.events.emit(Ye("session_request",n),{error:i.error})},this.onSessionAuthenticateRequest=async t=>{var i;const{topic:n,payload:s,attestation:o,encryptedId:f,transportType:u}=t;try{const{requester:h,authPayload:g,expiryTimestamp:y}=s.params,I=await this.getVerifyContext({attestationId:o,hash:oi(JSON.stringify(s)),encryptedId:f,metadata:h.metadata,transportType:u}),M={requester:h,pairingTopic:n,id:s.id,authPayload:g,verifyContext:I,expiryTimestamp:y};await this.setAuthRequest(s.id,{request:M,pairingTopic:n,transportType:u}),u===ht.link_mode&&(i=h.metadata.redirect)!=null&&i.universal&&this.client.core.addLinkModeSupportedApp(h.metadata.redirect.universal),this.client.events.emit("session_authenticate",{topic:n,params:s.params,id:s.id,verifyContext:I})}catch(h){this.client.logger.error(h);const g=s.params.requester.publicKey,y=await this.client.core.crypto.generateKeyPair(),I=this.getAppLinkIfEnabled(s.params.requester.metadata,u),M={type:ai,receiverPublicKey:g,senderPublicKey:y};await this.sendError({id:s.id,topic:n,error:h,encodeOpts:M,rpcOpts:Rt.wc_sessionAuthenticate.autoReject,appLink:I})}},this.addSessionRequestToSessionRequestQueue=t=>{this.sessionRequestQueue.queue.push(t)},this.cleanupAfterResponse=t=>{this.deletePendingSessionRequest(t.response.id,{message:"fulfilled",code:0}),setTimeout(()=>{this.sessionRequestQueue.state=Zr.idle,this.processSessionRequestQueue()},ie.toMiliseconds(this.requestQueueDelay))},this.cleanupPendingSentRequestsForTopic=({topic:t,error:i})=>{const n=this.client.core.history.pending;n.length>0&&n.filter(s=>s.topic===t&&s.request.method==="wc_sessionRequest").forEach(s=>{const o=s.request.id,f=Ye("session_request",o);if(this.events.listenerCount(f)===0)throw new Error(`emitting ${f} without any listeners`);this.events.emit(Ye("session_request",s.request.id),{error:i})})},this.processSessionRequestQueue=()=>{if(this.sessionRequestQueue.state===Zr.active){this.client.logger.info("session request queue is already active.");return}const t=this.sessionRequestQueue.queue[0];if(!t){this.client.logger.info("session request queue is empty.");return}try{this.sessionRequestQueue.state=Zr.active,this.emitSessionRequest(t)}catch(i){this.client.logger.error(i)}},this.emitSessionRequest=t=>{this.client.events.emit("session_request",t)},this.onPairingCreated=t=>{if(t.methods&&this.expectedPairingMethodMap.set(t.topic,t.methods),t.active)return;const i=this.client.proposal.getAll().find(n=>n.pairingTopic===t.topic);i&&this.onSessionProposeRequest({topic:t.topic,payload:rn("wc_sessionPropose",{requiredNamespaces:i.requiredNamespaces,optionalNamespaces:i.optionalNamespaces,relays:i.relays,proposer:i.proposer,sessionProperties:i.sessionProperties},i.id)})},this.isValidConnect=async t=>{if(!rr(t)){const{message:u}=se("MISSING_OR_INVALID",`connect() params: ${JSON.stringify(t)}`);throw new Error(u)}const{pairingTopic:i,requiredNamespaces:n,optionalNamespaces:s,sessionProperties:o,relays:f}=t;if(Yt(i)||await this.isValidPairingTopic(i),!Py(f,!0)){const{message:u}=se("MISSING_OR_INVALID",`connect() relays: ${f}`);throw new Error(u)}!Yt(n)&&Ia(n)!==0&&this.validateNamespaces(n,"requiredNamespaces"),!Yt(s)&&Ia(s)!==0&&this.validateNamespaces(s,"optionalNamespaces"),Yt(o)||this.validateSessionProps(o,"sessionProperties")},this.validateNamespaces=(t,i)=>{const n=Ry(t,"connect()",i);if(n)throw new Error(n.message)},this.isValidApprove=async t=>{if(!rr(t))throw new Error(se("MISSING_OR_INVALID",`approve() params: ${t}`).message);const{id:i,namespaces:n,relayProtocol:s,sessionProperties:o}=t;this.checkRecentlyDeleted(i),await this.isValidProposalId(i);const f=this.client.proposal.get(i),u=af(n,"approve()");if(u)throw new Error(u.message);const h=h0(f.requiredNamespaces,n,"approve()");if(h)throw new Error(h.message);if(!mt(s,!0)){const{message:g}=se("MISSING_OR_INVALID",`approve() relayProtocol: ${s}`);throw new Error(g)}Yt(o)||this.validateSessionProps(o,"sessionProperties")},this.isValidReject=async t=>{if(!rr(t)){const{message:s}=se("MISSING_OR_INVALID",`reject() params: ${t}`);throw new Error(s)}const{id:i,reason:n}=t;if(this.checkRecentlyDeleted(i),await this.isValidProposalId(i),!Cy(n)){const{message:s}=se("MISSING_OR_INVALID",`reject() reason: ${JSON.stringify(n)}`);throw new Error(s)}},this.isValidSessionSettleRequest=t=>{if(!rr(t)){const{message:h}=se("MISSING_OR_INVALID",`onSessionSettleRequest() params: ${t}`);throw new Error(h)}const{relay:i,controller:n,namespaces:s,expiry:o}=t;if(!f0(i)){const{message:h}=se("MISSING_OR_INVALID","onSessionSettleRequest() relay protocol should be a string");throw new Error(h)}const f=Ey(n,"onSessionSettleRequest()");if(f)throw new Error(f.message);const u=af(s,"onSessionSettleRequest()");if(u)throw new Error(u.message);if(Ci(o)){const{message:h}=se("EXPIRED","onSessionSettleRequest()");throw new Error(h)}},this.isValidUpdate=async t=>{if(!rr(t)){const{message:u}=se("MISSING_OR_INVALID",`update() params: ${t}`);throw new Error(u)}const{topic:i,namespaces:n}=t;this.checkRecentlyDeleted(i),await this.isValidSessionTopic(i);const s=this.client.session.get(i),o=af(n,"update()");if(o)throw new Error(o.message);const f=h0(s.requiredNamespaces,n,"update()");if(f)throw new Error(f.message)},this.isValidExtend=async t=>{if(!rr(t)){const{message:n}=se("MISSING_OR_INVALID",`extend() params: ${t}`);throw new Error(n)}const{topic:i}=t;this.checkRecentlyDeleted(i),await this.isValidSessionTopic(i)},this.isValidRequest=async t=>{if(!rr(t)){const{message:u}=se("MISSING_OR_INVALID",`request() params: ${t}`);throw new Error(u)}const{topic:i,request:n,chainId:s,expiry:o}=t;this.checkRecentlyDeleted(i),await this.isValidSessionTopic(i);const{namespaces:f}=this.client.session.get(i);if(!c0(f,s)){const{message:u}=se("MISSING_OR_INVALID",`request() chainId: ${s}`);throw new Error(u)}if(!Ty(n)){const{message:u}=se("MISSING_OR_INVALID",`request() ${JSON.stringify(n)}`);throw new Error(u)}if(!Ly(f,s,n.method)){const{message:u}=se("MISSING_OR_INVALID",`request() method: ${n.method}`);throw new Error(u)}if(o&&!zy(o,Sf)){const{message:u}=se("MISSING_OR_INVALID",`request() expiry: ${o}. Expiry must be a number (in seconds) between ${Sf.min} and ${Sf.max}`);throw new Error(u)}},this.isValidRespond=async t=>{var i;if(!rr(t)){const{message:o}=se("MISSING_OR_INVALID",`respond() params: ${t}`);throw new Error(o)}const{topic:n,response:s}=t;try{await this.isValidSessionTopic(n)}catch(o){throw(i=t?.response)!=null&&i.id&&this.cleanupAfterResponse(t),o}if(!Fy(s)){const{message:o}=se("MISSING_OR_INVALID",`respond() response: ${JSON.stringify(s)}`);throw new Error(o)}},this.isValidPing=async t=>{if(!rr(t)){const{message:n}=se("MISSING_OR_INVALID",`ping() params: ${t}`);throw new Error(n)}const{topic:i}=t;await this.isValidSessionOrPairingTopic(i)},this.isValidEmit=async t=>{if(!rr(t)){const{message:f}=se("MISSING_OR_INVALID",`emit() params: ${t}`);throw new Error(f)}const{topic:i,event:n,chainId:s}=t;await this.isValidSessionTopic(i);const{namespaces:o}=this.client.session.get(i);if(!c0(o,s)){const{message:f}=se("MISSING_OR_INVALID",`emit() chainId: ${s}`);throw new Error(f)}if(!By(n)){const{message:f}=se("MISSING_OR_INVALID",`emit() event: ${JSON.stringify(n)}`);throw new Error(f)}if(!qy(o,s,n.name)){const{message:f}=se("MISSING_OR_INVALID",`emit() event: ${JSON.stringify(n)}`);throw new Error(f)}},this.isValidDisconnect=async t=>{if(!rr(t)){const{message:n}=se("MISSING_OR_INVALID",`disconnect() params: ${t}`);throw new Error(n)}const{topic:i}=t;await this.isValidSessionOrPairingTopic(i)},this.isValidAuthenticate=t=>{const{chains:i,uri:n,domain:s,nonce:o}=t;if(!Array.isArray(i)||i.length===0)throw new Error("chains is required and must be a non-empty array");if(!mt(n,!1))throw new Error("uri is required parameter");if(!mt(s,!1))throw new Error("domain is required parameter");if(!mt(o,!1))throw new Error("nonce is required parameter");if([...new Set(i.map(u=>ya(u).namespace))].length>1)throw new Error("Multi-namespace requests are not supported. Please request single namespace only.");const{namespace:f}=ya(i[0]);if(f!=="eip155")throw new Error("Only eip155 namespace is supported for authenticated sessions. Please use .connect() for non-eip155 chains.")},this.getVerifyContext=async t=>{const{attestationId:i,hash:n,encryptedId:s,metadata:o,transportType:f}=t,u={verified:{verifyUrl:o.verifyUrl||bs,validation:"UNKNOWN",origin:o.url||""}};try{if(f===ht.link_mode){const g=this.getAppLinkIfEnabled(o,f);return u.verified.validation=g&&new URL(g).origin===new URL(o.url).origin?"VALID":"INVALID",u}const h=await this.client.core.verify.resolve({attestationId:i,hash:n,encryptedId:s,verifyUrl:o.verifyUrl});h&&(u.verified.origin=h.origin,u.verified.isScam=h.isScam,u.verified.validation=h.origin===new URL(o.url).origin?"VALID":"INVALID")}catch(h){this.client.logger.warn(h)}return this.client.logger.debug(`Verify context: ${JSON.stringify(u)}`),u},this.validateSessionProps=(t,i)=>{Object.values(t).forEach(n=>{if(!mt(n,!1)){const{message:s}=se("MISSING_OR_INVALID",`${i} must be in Record<string, string> format. Received: ${JSON.stringify(n)}`);throw new Error(s)}})},this.getPendingAuthRequest=t=>{const i=this.client.auth.requests.get(t);return typeof i=="object"?i:void 0},this.addToRecentlyDeleted=(t,i)=>{if(this.recentlyDeletedMap.set(t,i),this.recentlyDeletedMap.size>=this.recentlyDeletedLimit){let n=0;const s=this.recentlyDeletedLimit/2;for(const o of this.recentlyDeletedMap.keys()){if(n++>=s)break;this.recentlyDeletedMap.delete(o)}}},this.checkRecentlyDeleted=t=>{const i=this.recentlyDeletedMap.get(t);if(i){const{message:n}=se("MISSING_OR_INVALID",`Record was recently deleted - ${i}: ${t}`);throw new Error(n)}},this.isLinkModeEnabled=(t,i)=>{var n,s,o,f,u,h,g,y,I;return!t||i!==ht.link_mode?!1:((s=(n=this.client.metadata)==null?void 0:n.redirect)==null?void 0:s.linkMode)===!0&&((f=(o=this.client.metadata)==null?void 0:o.redirect)==null?void 0:f.universal)!==void 0&&((h=(u=this.client.metadata)==null?void 0:u.redirect)==null?void 0:h.universal)!==""&&((g=t?.redirect)==null?void 0:g.universal)!==void 0&&((y=t?.redirect)==null?void 0:y.universal)!==""&&((I=t?.redirect)==null?void 0:I.linkMode)===!0&&this.client.core.linkModeSupportedApps.includes(t.redirect.universal)&&typeof(global==null?void 0:global.Linking)<"u"},this.getAppLinkIfEnabled=(t,i)=>{var n;return this.isLinkModeEnabled(t,i)?(n=t?.redirect)==null?void 0:n.universal:void 0},this.handleLinkModeMessage=({url:t})=>{if(!t||!t.includes("wc_ev")||!t.includes("topic"))return;const i=Bu(t,"topic")||"",n=decodeURIComponent(Bu(t,"wc_ev")||""),s=this.client.session.keys.includes(i);s&&this.client.session.update(i,{transportType:ht.link_mode}),this.client.core.dispatchEnvelope({topic:i,message:n,sessionExists:s})},this.registerLinkModeListeners=async()=>{var t;if(Zo()||Pi()&&(t=this.client.metadata.redirect)!=null&&t.linkMode){const i=global==null?void 0:global.Linking;if(typeof i<"u"){i.addEventListener("url",this.handleLinkModeMessage,this.client.name);const n=await i.getInitialURL();n&&setTimeout(()=>{this.handleLinkModeMessage({url:n})},50)}}}}isInitialized(){if(!this.initialized){const{message:e}=se("NOT_INITIALIZED",this.name);throw new Error(e)}}async confirmOnlineStateOrThrow(){await this.client.core.relayer.confirmOnlineStateOrThrow()}registerRelayerEvents(){this.client.core.relayer.on(Ot.message,e=>{!this.initialized||this.relayMessageCache.length>0?this.relayMessageCache.push(e):this.onRelayMessage(e)})}async onRelayMessage(e){const{topic:t,message:i,attestation:n,transportType:s}=e,{publicKey:o}=this.client.auth.authKeys.keys.includes(Ca)?this.client.auth.authKeys.get(Ca):{responseTopic:void 0,publicKey:void 0},f=await this.client.core.crypto.decode(t,i,{receiverPublicKey:o,encoding:s===ht.link_mode?as:Ti});try{pf(f)?(this.client.core.history.set(t,f),this.onRelayEventRequest({topic:t,payload:f,attestation:n,transportType:s,encryptedId:oi(i)})):Oa(f)?(await this.client.core.history.resolve(f),await this.onRelayEventResponse({topic:t,payload:f,transportType:s}),this.client.core.history.delete(t,f.id)):this.onRelayEventUnknownPayload({topic:t,payload:f,transportType:s})}catch(u){this.client.logger.error(u)}}registerExpirerEvents(){this.client.core.expirer.on(Ar.expired,async e=>{const{topic:t,id:i}=Fu(e.target);if(i&&this.client.pendingRequest.keys.includes(i))return await this.deletePendingSessionRequest(i,se("EXPIRED"),!0);if(i&&this.client.auth.requests.keys.includes(i))return await this.deletePendingAuthRequest(i,se("EXPIRED"),!0);t?this.client.session.keys.includes(t)&&(await this.deleteSession({topic:t,expirerHasDeleted:!0}),this.client.events.emit("session_expire",{topic:t})):i&&(await this.deleteProposal(i,!0),this.client.events.emit("proposal_expire",{id:i}))})}registerPairingEvents(){this.client.core.pairing.events.on(nn.create,e=>this.onPairingCreated(e)),this.client.core.pairing.events.on(nn.delete,e=>{this.addToRecentlyDeleted(e.topic,"pairing")})}isValidPairingTopic(e){if(!mt(e,!1)){const{message:t}=se("MISSING_OR_INVALID",`pairing topic should be a string: ${e}`);throw new Error(t)}if(!this.client.core.pairing.pairings.keys.includes(e)){const{message:t}=se("NO_MATCHING_KEY",`pairing topic doesn't exist: ${e}`);throw new Error(t)}if(Ci(this.client.core.pairing.pairings.get(e).expiry)){const{message:t}=se("EXPIRED",`pairing topic: ${e}`);throw new Error(t)}}async isValidSessionTopic(e){if(!mt(e,!1)){const{message:t}=se("MISSING_OR_INVALID",`session topic should be a string: ${e}`);throw new Error(t)}if(this.checkRecentlyDeleted(e),!this.client.session.keys.includes(e)){const{message:t}=se("NO_MATCHING_KEY",`session topic doesn't exist: ${e}`);throw new Error(t)}if(Ci(this.client.session.get(e).expiry)){await this.deleteSession({topic:e});const{message:t}=se("EXPIRED",`session topic: ${e}`);throw new Error(t)}if(!this.client.core.crypto.keychain.has(e)){const{message:t}=se("MISSING_OR_INVALID",`session topic does not exist in keychain: ${e}`);throw await this.deleteSession({topic:e}),new Error(t)}}async isValidSessionOrPairingTopic(e){if(this.checkRecentlyDeleted(e),this.client.session.keys.includes(e))await this.isValidSessionTopic(e);else if(this.client.core.pairing.pairings.keys.includes(e))this.isValidPairingTopic(e);else if(mt(e,!1)){const{message:t}=se("NO_MATCHING_KEY",`session or pairing topic doesn't exist: ${e}`);throw new Error(t)}else{const{message:t}=se("MISSING_OR_INVALID",`session or pairing topic should be a string: ${e}`);throw new Error(t)}}async isValidProposalId(e){if(!Ny(e)){const{message:t}=se("MISSING_OR_INVALID",`proposal id should be a number: ${e}`);throw new Error(t)}if(!this.client.proposal.keys.includes(e)){const{message:t}=se("NO_MATCHING_KEY",`proposal id doesn't exist: ${e}`);throw new Error(t)}if(Ci(this.client.proposal.get(e).expiryTimestamp)){await this.deleteProposal(e);const{message:t}=se("EXPIRED",`proposal id: ${e}`);throw new Error(t)}}}class U8 extends on{constructor(e,t){super(e,t,x8,Af),this.core=e,this.logger=t}}class vd extends on{constructor(e,t){super(e,t,E8,Af),this.core=e,this.logger=t}}class $8 extends on{constructor(e,t){super(e,t,M8,Af,i=>i.id),this.core=e,this.logger=t}}class z8 extends on{constructor(e,t){super(e,t,R8,Na,()=>Ca),this.core=e,this.logger=t}}class k8 extends on{constructor(e,t){super(e,t,P8,Na),this.core=e,this.logger=t}}class K8 extends on{constructor(e,t){super(e,t,N8,Na,i=>i.id),this.core=e,this.logger=t}}class j8{constructor(e,t){this.core=e,this.logger=t,this.authKeys=new z8(this.core,this.logger),this.pairingTopics=new k8(this.core,this.logger),this.requests=new K8(this.core,this.logger)}async init(){await this.authKeys.init(),await this.pairingTopics.init(),await this.requests.init()}}class Mf extends qp{constructor(e){super(e),this.protocol=ud,this.version=dd,this.name=Ef.name,this.events=new Ut.exports.EventEmitter,this.on=(i,n)=>this.events.on(i,n),this.once=(i,n)=>this.events.once(i,n),this.off=(i,n)=>this.events.off(i,n),this.removeListener=(i,n)=>this.events.removeListener(i,n),this.removeAllListeners=i=>this.events.removeAllListeners(i),this.connect=async i=>{try{return await this.engine.connect(i)}catch(n){throw this.logger.error(n.message),n}},this.pair=async i=>{try{return await this.engine.pair(i)}catch(n){throw this.logger.error(n.message),n}},this.approve=async i=>{try{return await this.engine.approve(i)}catch(n){throw this.logger.error(n.message),n}},this.reject=async i=>{try{return await this.engine.reject(i)}catch(n){throw this.logger.error(n.message),n}},this.update=async i=>{try{return await this.engine.update(i)}catch(n){throw this.logger.error(n.message),n}},this.extend=async i=>{try{return await this.engine.extend(i)}catch(n){throw this.logger.error(n.message),n}},this.request=async i=>{try{return await this.engine.request(i)}catch(n){throw this.logger.error(n.message),n}},this.respond=async i=>{try{return await this.engine.respond(i)}catch(n){throw this.logger.error(n.message),n}},this.ping=async i=>{try{return await this.engine.ping(i)}catch(n){throw this.logger.error(n.message),n}},this.emit=async i=>{try{return await this.engine.emit(i)}catch(n){throw this.logger.error(n.message),n}},this.disconnect=async i=>{try{return await this.engine.disconnect(i)}catch(n){throw this.logger.error(n.message),n}},this.find=i=>{try{return this.engine.find(i)}catch(n){throw this.logger.error(n.message),n}},this.getPendingSessionRequests=()=>{try{return this.engine.getPendingSessionRequests()}catch(i){throw this.logger.error(i.message),i}},this.authenticate=async(i,n)=>{try{return await this.engine.authenticate(i,n)}catch(s){throw this.logger.error(s.message),s}},this.formatAuthMessage=i=>{try{return this.engine.formatAuthMessage(i)}catch(n){throw this.logger.error(n.message),n}},this.approveSessionAuthenticate=async i=>{try{return await this.engine.approveSessionAuthenticate(i)}catch(n){throw this.logger.error(n.message),n}},this.rejectSessionAuthenticate=async i=>{try{return await this.engine.rejectSessionAuthenticate(i)}catch(n){throw this.logger.error(n.message),n}},this.name=e?.name||Ef.name,this.metadata=e?.metadata||Ru(),this.signConfig=e?.signConfig;const t=typeof e?.logger<"u"&&typeof e?.logger!="string"?e.logger:ei(to({level:e?.logger||Ef.logger}));this.core=e?.core||new xf(e),this.logger=Vt(t,this.name),this.session=new vd(this.core,this.logger),this.proposal=new U8(this.core,this.logger),this.pendingRequest=new $8(this.core,this.logger),this.engine=new q8(this),this.auth=new j8(this.core,this.logger)}static async init(e){const t=new Mf(e);return await t.initialize(),t}get context(){return Xt(this.logger)}get pairing(){return this.core.pairing.pairings}async initialize(){this.logger.trace("Initialized");try{await this.core.start(),await this.session.init(),await this.proposal.init(),await this.pendingRequest.init(),await this.auth.init(),await this.engine.init(),this.logger.info("SignClient Initialization Success"),setTimeout(()=>{this.engine.processRelayMessageCache()},ie.toMiliseconds(ie.ONE_SECOND))}catch(e){throw this.logger.info("SignClient Initialization Failure"),this.logger.error(e.message),e}}}const H8=vd,V8=Mf;class G8 extends Ut.exports{constructor(){super()}}class md{constructor(e){this.opts=e}}class yd{constructor(e){this.client=e}}class wd{constructor(e){this.engine=e}}var W8=Object.defineProperty,J8=Object.defineProperties,Y8=Object.getOwnPropertyDescriptors,_d=Object.getOwnPropertySymbols,Q8=Object.prototype.hasOwnProperty,X8=Object.prototype.propertyIsEnumerable,xd=(r,e,t)=>e in r?W8(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,If=(r,e)=>{for(var t in e||(e={}))Q8.call(e,t)&&xd(r,t,e[t]);if(_d)for(var t of _d(e))X8.call(e,t)&&xd(r,t,e[t]);return r},Df=(r,e)=>J8(r,Y8(e));class Z8 extends wd{constructor(e){super(e),this.engine=e,this.prepareFulfilment=async t=>{if(console.log("prepareFulfilment",t),!this.prepareFulfilmentHandler)throw new Error(`prepareFulfilmentHandler not found for environment: '${Nr()}'`);const{transaction:i}=t,n=await this.prepareFulfilmentHandler({transaction:i,projectId:this.projectId});switch(console.log("prepareFulfilment processing result..",n),n.status){case Li.error:return{status:Li.error,reason:n.reason};case Li.not_required:return{status:Li.not_required};case Li.available:const s=n.data;return{status:Li.available,data:{fulfilmentId:s.orchestrationId,checkIn:s.checkIn,transactions:s.transactions,funding:s.metadata.fundingFrom,initialTransaction:s.initialTransaction,initialTransactionMetadata:s.metadata.initialTransaction}};default:throw new Error(`Invalid prepareFulfilment status: ${JSON.stringify(n)}`)}},this.fulfilmentStatus=async t=>{if(!this.fulfilmentStatusHandler)throw new Error(`fulfilmentStatusHandler not found for environment: '${Nr()}'`);const{fulfilmentId:i}=t;console.log("fulfilmentStatus",t);const n=await this.fulfilmentStatusHandler({orchestrationId:i,projectId:this.projectId});if(n.status===kf.error)throw new Error(n.reason);return console.log("fulfilmentStatus result",n),n},this.estimateFees=async t=>{if(!this.estimateFeesHandler)throw new Error(`estimateFeesHandler not found for environment: '${Nr()}'`);const i=await this.estimateFeesHandler(Df(If({},t),{projectId:this.projectId}));return console.log("estimateFees result",i),i},this.getERC20Balance=async t=>{if(!this.getERC20BalanceHandler)throw new Error(`getERC20BalanceHandler not found for environment: '${Nr()}'`);const i=await this.getERC20BalanceHandler(Df(If({},t),{projectId:this.projectId}));return console.log("getERC20Balance result",i),i},this.getFulfilmentDetails=async t=>{if(!this.getFulfilmentDetailsHandler)throw new Error(`getFulfilmentDetailsHandler not found for environment: '${Nr()}'`);const{fulfilmentId:i}=t,n=await this.getFulfilmentDetailsHandler(Df(If({},t),{orchestationId:i,projectId:this.projectId}));console.log("getFulfilmentDetails handler result",n);const s=[];for(const h of n.bridge)s.push({fee:h.fee,localFee:h.localFee});const o=[];for(const h of n.route)o.push({transaction:h.transaction,eip1559:h.estimate,transactionFee:h.fee});const f={transaction:n.initial.transaction,eip1559:n.initial.estimate,transactionFee:n.initial.fee},u=n.localTotal;return console.log("getFulfilmentDetails parsed result",{routeDetails:o,initialTransactionDetails:f,bridgeDetails:s,totalFee:u}),{routeDetails:o,initialTransactionDetails:f,bridgeDetails:s,totalFee:u}},this.loadHandlers=()=>{switch(Nr()){case Kt.reactNative:return this.ReactNative();case Kt.browser:return this.Browser();case Kt.node:return this.Node()}},this.ReactNative=()=>{const t=global==null?void 0:global.yttrium;if(!t){console.warn("React Native Yttrium not found in global scope");return}this.prepareFulfilmentHandler=t.prepapre,this.fulfilmentStatusHandler=t.status,this.estimateFeesHandler=t.estimateFees,this.getERC20BalanceHandler=t.getERC20Balance,this.getFulfilmentDetailsHandler=t.getBridgeDetails},this.Browser=()=>{console.warn("Yttrium not available in browser environment")},this.Node=()=>{const t=global==null?void 0:global.yttrium;t||console.warn("Yttrium not available in node environment"),this.prepareFulfilmentHandler=t.prepapre,this.fulfilmentStatusHandler=t.status,this.estimateFeesHandler=t.estimateFees,this.getERC20BalanceHandler=t.getERC20Balance,this.getFulfilmentDetailsHandler=t.getBridgeDetails},this.loadHandlers(),this.projectId=this.engine.client.core.projectId||""}}var e4=Object.defineProperty,t4=Object.defineProperties,r4=Object.getOwnPropertyDescriptors,Ad=Object.getOwnPropertySymbols,i4=Object.prototype.hasOwnProperty,n4=Object.prototype.propertyIsEnumerable,Ed=(r,e,t)=>e in r?e4(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,s4=(r,e)=>{for(var t in e||(e={}))i4.call(e,t)&&Ed(r,t,e[t]);if(Ad)for(var t of Ad(e))n4.call(e,t)&&Ed(r,t,e[t]);return r},a4=(r,e)=>t4(r,r4(e));class o4 extends yd{constructor(e){super(e),this.init=async()=>{this.signClient=await V8.init({core:this.client.core,metadata:this.client.metadata,signConfig:this.client.signConfig})},this.pair=async t=>{await this.client.core.pairing.pair(t)},this.approveSession=async t=>{const{topic:i,acknowledged:n}=await this.signClient.approve(a4(s4({},t),{id:t.id,namespaces:t.namespaces,sessionProperties:t.sessionProperties,sessionConfig:t.sessionConfig}));return await n(),this.signClient.session.get(i)},this.rejectSession=async t=>await this.signClient.reject(t),this.updateSession=async t=>await this.signClient.update(t),this.extendSession=async t=>await this.signClient.extend(t),this.respondSessionRequest=async t=>await this.signClient.respond(t),this.disconnectSession=async t=>await this.signClient.disconnect(t),this.emitSessionEvent=async t=>await this.signClient.emit(t),this.getActiveSessions=()=>this.signClient.session.getAll().reduce((t,i)=>(t[i.topic]=i,t),{}),this.getPendingSessionProposals=()=>this.signClient.proposal.getAll(),this.getPendingSessionRequests=()=>this.signClient.getPendingSessionRequests(),this.approveSessionAuthenticate=async t=>await this.signClient.approveSessionAuthenticate(t),this.rejectSessionAuthenticate=async t=>await this.signClient.rejectSessionAuthenticate(t),this.formatAuthMessage=t=>this.signClient.formatAuthMessage(t),this.registerDeviceToken=t=>this.client.core.echoClient.registerDeviceToken(t),this.on=(t,i)=>(this.setEvent(t,"off"),this.setEvent(t,"on"),this.client.events.on(t,i)),this.once=(t,i)=>(this.setEvent(t,"off"),this.setEvent(t,"once"),this.client.events.once(t,i)),this.off=(t,i)=>(this.setEvent(t,"off"),this.client.events.off(t,i)),this.removeListener=(t,i)=>(this.setEvent(t,"removeListener"),this.client.events.removeListener(t,i)),this.prepareFulfilment=async t=>await this.chainAbstraction.prepareFulfilment(t),this.fulfilmentStatus=async t=>await this.chainAbstraction.fulfilmentStatus(t),this.estimateFees=async t=>await this.chainAbstraction.estimateFees(t),this.getERC20Balance=async t=>await this.chainAbstraction.getERC20Balance(t),this.getFulfilmentDetails=async t=>await this.chainAbstraction.getFulfilmentDetails(t),this.onSessionRequest=t=>{this.client.events.emit("session_request",t)},this.onSessionProposal=t=>{this.client.events.emit("session_proposal",t)},this.onSessionDelete=t=>{this.client.events.emit("session_delete",t)},this.onProposalExpire=t=>{this.client.events.emit("proposal_expire",t)},this.onSessionRequestExpire=t=>{this.client.events.emit("session_request_expire",t)},this.onSessionRequestAuthenticate=t=>{this.client.events.emit("session_authenticate",t)},this.setEvent=(t,i)=>{switch(t){case"session_request":this.signClient.events[i]("session_request",this.onSessionRequest);break;case"session_proposal":this.signClient.events[i]("session_proposal",this.onSessionProposal);break;case"session_delete":this.signClient.events[i]("session_delete",this.onSessionDelete);break;case"proposal_expire":this.signClient.events[i]("proposal_expire",this.onProposalExpire);break;case"session_request_expire":this.signClient.events[i]("session_request_expire",this.onSessionRequestExpire);break;case"session_authenticate":this.signClient.events[i]("session_authenticate",this.onSessionRequestAuthenticate);break}},this.signClient={},this.chainAbstraction=new Z8(this)}}const f4={decryptMessage:async r=>{const e={core:new xf({storageOptions:r.storageOptions,storage:r.storage})};await e.core.crypto.init();const t=e.core.crypto.decode(r.topic,r.encryptedMessage);return e.core=null,t},getMetadata:async r=>{const e={core:new xf({storageOptions:r.storageOptions,storage:r.storage}),sessionStore:null};e.sessionStore=new H8(e.core,e.core.logger),await e.sessionStore.init();const t=e.sessionStore.get(r.topic),i=t?.peer.metadata;return e.core=null,e.sessionStore=null,i}},Sd=class extends md{constructor(r){super(r),this.events=new Ut.exports,this.on=(e,t)=>this.engine.on(e,t),this.once=(e,t)=>this.engine.once(e,t),this.off=(e,t)=>this.engine.off(e,t),this.removeListener=(e,t)=>this.engine.removeListener(e,t),this.pair=async e=>{try{return await this.engine.pair(e)}catch(t){throw this.logger.error(t.message),t}},this.approveSession=async e=>{try{return await this.engine.approveSession(e)}catch(t){throw this.logger.error(t.message),t}},this.rejectSession=async e=>{try{return await this.engine.rejectSession(e)}catch(t){throw this.logger.error(t.message),t}},this.updateSession=async e=>{try{return await this.engine.updateSession(e)}catch(t){throw this.logger.error(t.message),t}},this.extendSession=async e=>{try{return await this.engine.extendSession(e)}catch(t){throw this.logger.error(t.message),t}},this.respondSessionRequest=async e=>{try{return await this.engine.respondSessionRequest(e)}catch(t){throw this.logger.error(t.message),t}},this.disconnectSession=async e=>{try{return await this.engine.disconnectSession(e)}catch(t){throw this.logger.error(t.message),t}},this.emitSessionEvent=async e=>{try{return await this.engine.emitSessionEvent(e)}catch(t){throw this.logger.error(t.message),t}},this.getActiveSessions=()=>{try{return this.engine.getActiveSessions()}catch(e){throw this.logger.error(e.message),e}},this.getPendingSessionProposals=()=>{try{return this.engine.getPendingSessionProposals()}catch(e){throw this.logger.error(e.message),e}},this.getPendingSessionRequests=()=>{try{return this.engine.getPendingSessionRequests()}catch(e){throw this.logger.error(e.message),e}},this.registerDeviceToken=e=>{try{return this.engine.registerDeviceToken(e)}catch(t){throw this.logger.error(t.message),t}},this.approveSessionAuthenticate=e=>{try{return this.engine.approveSessionAuthenticate(e)}catch(t){throw this.logger.error(t.message),t}},this.rejectSessionAuthenticate=e=>{try{return this.engine.rejectSessionAuthenticate(e)}catch(t){throw this.logger.error(t.message),t}},this.formatAuthMessage=e=>{try{return this.engine.formatAuthMessage(e)}catch(t){throw this.logger.error(t.message),t}},this.prepareFulfilment=async e=>{try{return await this.engine.prepareFulfilment(e)}catch(t){throw this.logger.error(t.message),t}},this.fulfilmentStatus=async e=>{try{return await this.engine.fulfilmentStatus(e)}catch(t){throw this.logger.error(t.message),t}},this.estimateFees=async e=>{try{return await this.engine.estimateFees(e)}catch(t){throw this.logger.error(t.message),t}},this.getERC20Balance=async e=>{try{return await this.engine.getERC20Balance(e)}catch(t){throw this.logger.error(t.message),t}},this.getFulfilmentDetails=async e=>{try{return await this.engine.getFulfilmentDetails(e)}catch(t){throw this.logger.error(t.message),t}},this.metadata=r.metadata,this.name=r.name||$a,this.signConfig=r.signConfig,this.core=r.core,this.logger=this.core.logger,this.engine=new o4(this)}static async init(r){const e=new Sd(r);return await e.initialize(),e}async initialize(){this.logger.trace("Initialized");try{await this.engine.init(),this.logger.info("WalletKit Initialization Success")}catch(r){throw this.logger.info("WalletKit Initialization Failure"),this.logger.error(r.message),r}}};let Of=Sd;Of.notifications=f4;const c4=Of;wt.CAN_FULFIL_STATUS=Li,wt.CLIENT_CONTEXT=$a,wt.CLIENT_STORAGE_OPTIONS=jd,wt.CLIENT_STORAGE_PREFIX=Kd,wt.FULFILMENT_STATUS=kf,wt.IChainAbstraction=wd,wt.IWalletKit=md,wt.IWalletKitEngine=yd,wt.IWalletKitEvents=G8,wt.PROTOCOL=zf,wt.PROTOCOL_VERSION=kd,wt.REQUEST_CONTEXT=Hd,wt.WalletKit=c4,wt.default=Of,Object.defineProperty(wt,"__esModule",{value:!0})});
44
44
  //# sourceMappingURL=index.umd.js.map