@reown/walletkit 1.1.1-canary-ca-5 → 1.1.1-canary-ca-7
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/index.cjs.js +1 -1
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.es.js +1 -1
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +1 -1
- package/dist/index.umd.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/controllers/chainAbstraction.d.ts.map +1 -1
- package/dist/types/types/chainAbstraction.d.ts +1 -2
- package/dist/types/types/chainAbstraction.d.ts.map +1 -1
- package/package.json +1 -1
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.prepare,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.prepare,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
|