@reown/walletkit 1.1.1-canary-ca-2 → 1.1.1-canary-ca-3

Sign up to get free protection for your applications and to get access to all the features.
package/dist/index.umd.js CHANGED
@@ -40,5 +40,5 @@
40
40
  LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
41
41
  OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
42
42
  PERFORMANCE OF THIS SOFTWARE.
43
- ***************************************************************************** */var cf=function(r,e){return cf=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,i){t.__proto__=i}||function(t,i){for(var n in i)i.hasOwnProperty(n)&&(t[n]=i[n])},cf(r,e)};function Xy(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 Zy(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 e6(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 t6(r,e){return function(t,i){e(t,i,r)}}function r6(r,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(r,e)}function i6(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 n6(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 s6(r,e,t,i){i===void 0&&(i=t),r[i]=e[t]}function a6(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 g0(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 o6(){for(var r=[],e=0;e<arguments.length;e++)r=r.concat(g0(arguments[e]));return r}function f6(){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 c6(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,P){s.push([I,M,D,P])>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 h6(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 u6(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 d6(r,e){return Object.defineProperty?Object.defineProperty(r,"raw",{value:e}):r.raw=e,r}function l6(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 p6(r){return r&&r.__esModule?r:{default:r}}function g6(r,e){if(!e.has(r))throw new TypeError("attempted to get private field on non-instance");return e.get(r)}function b6(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 v6=Object.freeze({__proto__:null,__extends:Xy,get __assign(){return hf},__rest:Zy,__decorate:e6,__param:t6,__metadata:r6,__awaiter:i6,__generator:n6,__createBinding:s6,__exportStar:a6,__values:uf,__read:g0,__spread:o6,__spreadArrays:f6,__await:ps,__asyncGenerator:c6,__asyncDelegator:h6,__asyncValues:u6,__makeTemplateObject:d6,__importStar:l6,__importDefault:p6,__classPrivateFieldGet:g6,__classPrivateFieldSet:b6}),m6=Ua(v6),oi={},b0;function y6(){if(b0)return oi;b0=1,Object.defineProperty(oi,"__esModule",{value:!0}),oi.isBrowserCryptoAvailable=oi.getSubtleCrypto=oi.getBrowerCrypto=void 0;function r(){return Pt?.crypto||Pt?.msCrypto||{}}oi.getBrowerCrypto=r;function e(){const i=r();return i.subtle||i.webkitSubtle}oi.getSubtleCrypto=e;function t(){return!!r()&&!!e()}return oi.isBrowserCryptoAvailable=t,oi}var fi={},v0;function w6(){if(v0)return fi;v0=1,Object.defineProperty(fi,"__esModule",{value:!0}),fi.isBrowser=fi.isNode=fi.isReactNative=void 0;function r(){return typeof document>"u"&&typeof navigator<"u"&&navigator.product==="ReactNative"}fi.isReactNative=r;function e(){return typeof process<"u"&&typeof process.versions<"u"&&typeof process.versions.node<"u"}fi.isNode=e;function t(){return!r()&&!e()}return fi.isBrowser=t,fi}(function(r){Object.defineProperty(r,"__esModule",{value:!0});const e=m6;e.__exportStar(y6(),r),e.__exportStar(w6(),r)})(p0);function ci(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(ci(r))}function rn(r,e,t){return{id:t||ci(),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:_6(e,t)}}function _6(r,e){return typeof r>"u"?l0(u0):(typeof r=="string"&&(r=Object.assign(Object.assign({},l0(ff)),{message:r})),typeof e<"u"&&(r.data=e),Jy(r.code)&&(r=Yy(r.code)),r)}class x6{}class A6 extends x6{constructor(){super()}}class E6 extends A6{constructor(e){super()}}const S6="^wss?:";function M6(r){const e=r.match(new RegExp(/^\w+:/,"gi"));if(!(!e||!e.length))return e[0]}function I6(r,e){const t=M6(r);return typeof t>"u"?!1:new RegExp(e).test(t)}function m0(r){return I6(r,S6)}function D6(r){return new RegExp("wss?://localhost(:d{2,5})?").test(r)}function y0(r){return typeof r=="object"&&"id"in r&&"jsonrpc"in r&&r.jsonrpc==="2.0"}function pf(r){return y0(r)&&"method"in r}function Oa(r){return y0(r)&&(Jr(r)||_r(r))}function Jr(r){return"result"in r}function _r(r){return"error"in r}class O6 extends E6{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 R6=()=>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"),N6=()=>typeof WebSocket<"u"||typeof global<"u"&&typeof global.WebSocket<"u"||typeof window<"u"&&typeof window.WebSocket<"u"||typeof self<"u"&&typeof self.WebSocket<"u",w0=r=>r.split("?")[0],_0=10,P6=R6();class C6{constructor(e){if(this.url=e,this.events=new Ut.exports.EventEmitter,this.registering=!1,!m0(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(!m0(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=p0.isReactNative()?void 0:{rejectUnauthorized:!D6(e)},s=new P6(e,[],n);N6()?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 Qy(e,w0(t),"WS")}resetMaxListeners(){this.events.getMaxListeners()>_0&&this.events.setMaxListeners(_0)}emitError(e){const t=this.parseError(new Error(e?.message||`WebSocket connection failed for host: ${w0(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]",P="[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]",N="[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[N]=S[g]=S[p]=S[y]=S[I]=S[M]=S[P]=S[k]=S[C]=S[U]=S[z]=S[_]=S[Q]=!1;var H=typeof Pt=="object"&&Pt&&Pt.Object===Object&&Pt,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 Ne($){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,Pe=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 ui(){this.size=0,this.__data__={hash:new Re,map:new(Ce||Je),string:new Re}}function di($){var V=Fa(this,$).delete($);return this.size-=V?1:0,V}function li($){return Fa(this,$).get($)}function pi($){return Fa(this,$).has($)}function gi($,V){var Z=Fa(this,$),be=Z.size;return Z.set($,V),this.size+=Z.size==be?0:1,this}yt.prototype.clear=ui,yt.prototype.delete=di,yt.prototype.get=li,yt.prototype.has=pi,yt.prototype.set=gi;function Er($){var V=-1,Z=$==null?0:$.length;for(this.__data__=new yt;++V<Z;)this.add($[V])}function bi($){return this.__data__.set($,i),this}function vi($){return this.__data__.has($)}Er.prototype.add=Er.prototype.push=bi,Er.prototype.has=vi;function jt($){var V=this.__data__=new Je($);this.size=V.size}function mi(){this.__data__=new Je,this.size=0}function yi($){var V=this.__data__,Z=V.delete($);return this.size=V.size,Z}function wi($){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=mi,jt.prototype.delete=yi,jt.prototype.get=wi,jt.prototype.has=_s,jt.prototype.set=xs;function t4($,V){var Z=Ba($),be=!Z&&b4($),ut=!Z&&!be&&Df($),Ge=!Z&&!be&&!ut&&Rd($),bt=Z||be||ut||Ge,Nt=bt?he($.length,String):[],qt=Nt.length;for(var dt in $)(V||re.call($,dt))&&!(bt&&(dt=="length"||ut&&(dt=="offset"||dt=="parent")||Ge&&(dt=="buffer"||dt=="byteLength"||dt=="byteOffset")||u4(dt,qt)))&&Nt.push(dt);return Nt}function Ta($,V){for(var Z=$.length;Z--;)if(Md($[Z][0],V))return Z;return-1}function r4($,V,Z){var be=V($);return Ba($)?be:we(be,Z($))}function As($){return $==null?$===void 0?J:K:Ie&&Ie in Object($)?c4($):g4($)}function xd($){return Es($)&&As($)==f}function Ad($,V,Z,be,ut){return $===V?!0:$==null||V==null||!Es($)&&!Es(V)?$!==$&&V!==V:i4($,V,Z,be,Ad,ut)}function i4($,V,Z,be,ut,Ge){var bt=Ba($),Nt=Ba(V),qt=bt?u:Fi($),dt=Nt?u:Fi(V);qt=qt==f?C:qt,dt=dt==f?C:dt;var lr=qt==C,Fr=dt==C,Ht=qt==dt;if(Ht&&Df($)){if(!Df(V))return!1;bt=!0,lr=!1}if(Ht&&!lr)return Ge||(Ge=new jt),bt||Rd($)?Ed($,V,Z,be,ut,Ge):o4($,V,qt,Z,be,ut,Ge);if(!(Z&n)){var Sr=lr&&re.call($,"__wrapped__"),Mr=Fr&&re.call(V,"__wrapped__");if(Sr||Mr){var Bi=Sr?$.value():$,_i=Mr?V.value():V;return Ge||(Ge=new jt),ut(Bi,_i,Z,be,Ge)}}return Ht?(Ge||(Ge=new jt),f4($,V,Z,be,ut,Ge)):!1}function n4($){if(!Od($)||l4($))return!1;var V=Id($)?oe:O;return V.test(fn($))}function s4($){return Es($)&&Dd($.length)&&!!S[As($)]}function a4($){if(!p4($))return Pe($);var V=[];for(var Z in Object($))re.call($,Z)&&Z!="constructor"&&V.push(Z);return V}function Ed($,V,Z,be,ut,Ge){var bt=Z&n,Nt=$.length,qt=V.length;if(Nt!=qt&&!(bt&&qt>Nt))return!1;var dt=Ge.get($);if(dt&&Ge.get(V))return dt==V;var lr=-1,Fr=!0,Ht=Z&s?new Er:void 0;for(Ge.set($,V),Ge.set(V,$);++lr<Nt;){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;Fr=!1;break}if(Ht){if(!Se(V,function(_i,cn){if(!xe(Ht,cn)&&(Sr===_i||ut(Sr,_i,Z,be,Ge)))return Ht.push(cn)})){Fr=!1;break}}else if(!(Sr===Mr||ut(Sr,Mr,Z,be,Ge))){Fr=!1;break}}return Ge.delete($),Ge.delete(V),Fr}function o4($,V,Z,be,ut,Ge,bt){switch(Z){case p:if($.byteLength!=V.byteLength||$.byteOffset!=V.byteOffset)return!1;$=$.buffer,V=V.buffer;case N:return!($.byteLength!=V.byteLength||!Ge(new Oe($),new Oe(V)));case g:case y:case k:return Md(+$,+V);case I:return $.name==V.name&&$.message==V.message;case U:case _:return $==V+"";case P:var Nt=ve;case z:var qt=be&n;if(Nt||(Nt=ne),$.size!=V.size&&!qt)return!1;var dt=bt.get($);if(dt)return dt==V;be|=s,bt.set($,V);var lr=Ed(Nt($),Nt(V),be,ut,Ge,bt);return bt.delete($),lr;case R:if(Le)return Le.call($)==Le.call(V)}return!1}function f4($,V,Z,be,ut,Ge){var bt=Z&n,Nt=Sd($),qt=Nt.length,dt=Sd(V),lr=dt.length;if(qt!=lr&&!bt)return!1;for(var Fr=qt;Fr--;){var Ht=Nt[Fr];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;++Fr<qt;){Ht=Nt[Fr];var _i=$[Ht],cn=V[Ht];if(be)var Nd=bt?be(cn,_i,Ht,V,$,Ge):be(_i,cn,Ht,$,V,Ge);if(!(Nd===void 0?_i===cn||ut(_i,cn,Z,be,Ge):Nd)){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 Sd($){return r4($,y4,h4)}function Fa($,V){var Z=$.__data__;return d4(V)?Z[typeof V=="string"?"string":"hash"]:Z.map}function Bn($,V){var Z=ae($,V);return n4(Z)?Z:void 0}function c4($){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 h4=et?function($){return $==null?[]:($=Object($),ee(et($),function(V){return We.call($,V)}))}:w4,Fi=As;(Te&&Fi(new Te(new ArrayBuffer(1)))!=p||Ce&&Fi(new Ce)!=P||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 P;case me:return j;case ze:return z;case ke:return Q}return V});function u4($,V){return V=V??o,!!V&&(typeof $=="number"||W.test($))&&$>-1&&$%1==0&&$<V}function d4($){var V=typeof $;return V=="string"||V=="number"||V=="symbol"||V=="boolean"?$!=="__proto__":$===null}function l4($){return!!Ae&&Ae in $}function p4($){var V=$&&$.constructor,Z=typeof V=="function"&&V.prototype||te;return $===Z}function g4($){return Ee.call($)}function fn($){if($!=null){try{return _e.call($)}catch{}try{return $+""}catch{}}return""}function Md($,V){return $===V||$!==$&&V!==V}var b4=xd(function(){return arguments}())?xd:function($){return Es($)&&re.call($,"callee")&&!We.call($,"callee")},Ba=Array.isArray;function v4($){return $!=null&&Dd($.length)&&!Id($)}var Df=tt||_4;function m4($,V){return Ad($,V)}function Id($){if(!Od($))return!1;var V=As($);return V==M||V==D||V==h||V==F}function Dd($){return typeof $=="number"&&$>-1&&$%1==0&&$<=o}function Od($){var V=typeof $;return $!=null&&(V=="object"||V=="function")}function Es($){return $!=null&&typeof $=="object"}var Rd=X?Ne(X):s4;function y4($){return v4($)?t4($):a4($)}function w4(){return[]}function _4(){return!1}r.exports=m4})(gf,gf.exports);var T6=gf.exports;const x0="wc",A0=2,Ra="core",Yr=`${x0}@2:${Ra}:`,F6={name:Ra,logger:"error"},B6={database:":memory:"},L6="crypto",E0="client_ed25519_seed",q6=ie.ONE_DAY,U6="keychain",$6="0.3",z6="messages",k6="0.3",S0=ie.SIX_HOURS,K6="publisher",M0="irn",j6="error",I0="wss://relay.walletconnect.org",H6="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"},V6="_subscription",xr={payload:"payload",connect:"connect",disconnect:"disconnect",error:"error"},G6=.1,bf="2.17.3",ht={link_mode:"link_mode",relay:"relay"},W6="0.3",J6="WALLETCONNECT_CLIENT_ID",D0="WALLETCONNECT_LINK_MODE_APPS",dr={created:"subscription_created",deleted:"subscription_deleted",expired:"subscription_expired",disabled:"subscription_disabled",sync:"subscription_sync",resubscribed:"subscription_resubscribed"},Y6="subscription",Q6="0.3",X6=ie.FIVE_SECONDS*1e3,Z6="pairing",ew="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"},Pr={created:"history_created",updated:"history_updated",deleted:"history_deleted",sync:"history_sync"},tw="history",rw="0.3",iw="expirer",Ar={created:"expirer_created",deleted:"expirer_deleted",expired:"expirer_expired",sync:"expirer_sync"},nw="0.3",sw="verify-api",aw="https://verify.walletconnect.com",O0="https://verify.walletconnect.org",bs=O0,ow=`${bs}/v3`,fw=[aw,O0],cw="echo",hw="https://echo.walletconnect.com",Qr={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"},hi={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"},Cr={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"},uw=.1,dw="event-client",lw=86400,pw="https://pulse.walletconnect.org/batch";function gw(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 P=0,k=0,K=0,C=D.length;K!==C&&D[K]===0;)K++,P++;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(P);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 P=0;if(D[P]!==" "){for(var k=0,K=0;D[P]===u;)k++,P++;for(var C=(D.length-P)*h+1>>>0,j=new Uint8Array(C);D[P];){var F=t[D.charCodeAt(P)];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,P++}if(D[P]!==" "){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 P=I(D);if(P)return P;throw new Error(`Non-${e} character`)}return{encode:y,decodeUnsafe:I,decode:M}}var bw=gw,vw=bw;const R0=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")},mw=r=>new TextEncoder().encode(r),yw=r=>new TextDecoder().decode(r);class ww{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 _w{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 N0(this,e)}}class xw{constructor(e){this.decoders=e}or(e){return N0(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 N0=(r,e)=>new xw({...r.decoders||{[r.prefix]:r},...e.decoders||{[e.prefix]:e}});class Aw{constructor(e,t,i,n){this.name=e,this.prefix=t,this.baseEncode=i,this.baseDecode=n,this.encoder=new ww(e,t,i),this.decoder=new _w(e,t,n)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}}const Na=({name:r,prefix:e,encode:t,decode:i})=>new Aw(r,e,t,i),ms=({prefix:r,name:e,alphabet:t})=>{const{encode:i,decode:n}=vw(t,e);return Na({prefix:r,name:e,encode:i,decode:s=>R0(n(s))})},Ew=(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},Sw=(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})=>Na({prefix:e,name:r,encode(n){return Sw(n,i,t)},decode(n){return Ew(n,i,t,r)}}),Mw=Na({prefix:"\0",name:"identity",encode:r=>yw(r),decode:r=>mw(r)});var Iw=Object.freeze({__proto__:null,identity:Mw});const Dw=Lt({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var Ow=Object.freeze({__proto__:null,base2:Dw});const Rw=Lt({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var Nw=Object.freeze({__proto__:null,base8:Rw});const Pw=ms({prefix:"9",name:"base10",alphabet:"0123456789"});var Cw=Object.freeze({__proto__:null,base10:Pw});const Tw=Lt({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),Fw=Lt({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var Bw=Object.freeze({__proto__:null,base16:Tw,base16upper:Fw});const Lw=Lt({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),qw=Lt({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),Uw=Lt({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),$w=Lt({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),zw=Lt({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),kw=Lt({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),Kw=Lt({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),jw=Lt({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),Hw=Lt({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var Vw=Object.freeze({__proto__:null,base32:Lw,base32upper:qw,base32pad:Uw,base32padupper:$w,base32hex:zw,base32hexupper:kw,base32hexpad:Kw,base32hexpadupper:jw,base32z:Hw});const Gw=ms({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),Ww=ms({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var Jw=Object.freeze({__proto__:null,base36:Gw,base36upper:Ww});const Yw=ms({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),Qw=ms({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var Xw=Object.freeze({__proto__:null,base58btc:Yw,base58flickr:Qw});const Zw=Lt({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),e5=Lt({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),t5=Lt({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),r5=Lt({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var i5=Object.freeze({__proto__:null,base64:Zw,base64pad:e5,base64url:t5,base64urlpad:r5});const P0=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}"),n5=P0.reduce((r,e,t)=>(r[t]=e,r),[]),s5=P0.reduce((r,e,t)=>(r[e.codePointAt(0)]=t,r),[]);function a5(r){return r.reduce((e,t)=>(e+=n5[t],e),"")}function o5(r){const e=[];for(const t of r){const i=s5[t.codePointAt(0)];if(i===void 0)throw new Error(`Non-base256emoji character: ${t}`);e.push(i)}return new Uint8Array(e)}const f5=Na({prefix:"\u{1F680}",name:"base256emoji",encode:a5,decode:o5});var c5=Object.freeze({__proto__:null,base256emoji:f5}),h5=T0,C0=128,u5=127,d5=~u5,l5=Math.pow(2,31);function T0(r,e,t){e=e||[],t=t||0;for(var i=t;r>=l5;)e[t++]=r&255|C0,r/=128;for(;r&d5;)e[t++]=r&255|C0,r>>>=7;return e[t]=r|0,T0.bytes=t-i+1,e}var p5=vf,g5=128,F0=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&F0)<<n:(o&F0)*Math.pow(2,n),n+=7}while(o>=g5);return vf.bytes=s-i,t}var b5=Math.pow(2,7),v5=Math.pow(2,14),m5=Math.pow(2,21),y5=Math.pow(2,28),w5=Math.pow(2,35),_5=Math.pow(2,42),x5=Math.pow(2,49),A5=Math.pow(2,56),E5=Math.pow(2,63),S5=function(r){return r<b5?1:r<v5?2:r<m5?3:r<y5?4:r<w5?5:r<_5?6:r<x5?7:r<A5?8:r<E5?9:10},M5={encode:h5,decode:p5,encodingLength:S5},B0=M5;const L0=(r,e,t=0)=>(B0.encode(r,e,t),e),q0=r=>B0.encodingLength(r),mf=(r,e)=>{const t=e.byteLength,i=q0(r),n=i+q0(t),s=new Uint8Array(n+t);return L0(r,s,0),L0(t,s,i),s.set(e,n),new I5(r,t,e,s)};class I5{constructor(e,t,i,n){this.code=e,this.size=t,this.digest=i,this.bytes=n}}const U0=({name:r,code:e,encode:t})=>new D5(r,e,t);class D5{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 $0=r=>async e=>new Uint8Array(await crypto.subtle.digest(r,e)),O5=U0({name:"sha2-256",code:18,encode:$0("SHA-256")}),R5=U0({name:"sha2-512",code:19,encode:$0("SHA-512")});var N5=Object.freeze({__proto__:null,sha256:O5,sha512:R5});const z0=0,P5="identity",k0=R0;var C5=Object.freeze({__proto__:null,identity:{code:z0,name:P5,encode:k0,digest:r=>mf(z0,k0(r))}});new TextEncoder,new TextDecoder;const K0={...Iw,...Ow,...Nw,...Cw,...Bw,...Vw,...Jw,...Xw,...i5,...c5};({...N5,...C5});function T5(r=0){return globalThis.Buffer!=null&&globalThis.Buffer.allocUnsafe!=null?globalThis.Buffer.allocUnsafe(r):new Uint8Array(r)}function j0(r,e,t,i){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:i}}}const H0=j0("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),yf=j0("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=T5(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),F5={utf8:H0,"utf-8":H0,hex:K0.base16,latin1:yf,ascii:yf,binary:yf,...K0};function B5(r,e="utf8"){const t=F5[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 L5{constructor(e,t){this.core=e,this.logger=t,this.keychain=new Map,this.name=U6,this.version=$6,this.initialized=!1,this.storagePrefix=Yr,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,Ru(e))}async getKeyChain(){const e=await this.core.storage.getItem(this.storageKey);return typeof e<"u"?Nu(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 q5{constructor(e,t,i){this.core=e,this.logger=t,this.name=L6,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=Kc(n);return kc(s.publicKey)},this.generateKeyPair=()=>{this.isInitialized();const n=km();return this.setPrivateKey(n.publicKey,n.privateKey)},this.signJWT=async n=>{this.isInitialized();const s=await this.getClientSeed(),o=Kc(s),f=this.randomSessionIdentifier;return await Kg(f,n,q6,o)},this.generateSharedKey=(n,s,o)=>{this.isInitialized();const f=this.getPrivateKey(n),u=Km(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=Ju(o),u=ki(s);if(Qu(f))return Hm(u,o?.encoding);if(Yu(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 jm({type:g,symKey:h,message:u,senderPublicKey:y,encoding:o?.encoding})},this.decode=async(n,s,o)=>{this.isInitialized();const f=Wm(s,o);if(Qu(f)){const u=Gm(s,o?.encoding);return ln(u)}if(Yu(f)){const u=f.receiverPublicKey,h=f.senderPublicKey;n=await this.generateSharedKey(u,h)}try{const u=this.getSymKey(n),h=Vm({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 L5(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(E0)}catch{e=nf(),await this.keychain.set(E0,e)}return B5(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 U5 extends Sp{constructor(e,t){super(e,t),this.logger=e,this.core=t,this.messages=new Map,this.name=z6,this.version=k6,this.initialized=!1,this.storagePrefix=Yr,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=ai(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=ai(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,Ru(e))}async getRelayerMessages(){const e=await this.core.storage.getItem(this.storageKey);return typeof e<"u"?Nu(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 $5=Object.defineProperty,z5=Object.defineProperties,k5=Object.getOwnPropertyDescriptors,V0=Object.getOwnPropertySymbols,K5=Object.prototype.hasOwnProperty,j5=Object.prototype.propertyIsEnumerable,G0=(r,e,t)=>e in r?$5(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,W0=(r,e)=>{for(var t in e||(e={}))K5.call(e,t)&&G0(r,t,e[t]);if(V0)for(var t of V0(e))j5.call(e,t)&&G0(r,t,e[t]);return r},J0=(r,e)=>z5(r,k5(e));class H5 extends Mp{constructor(e,t){super(e,t),this.relayer=e,this.logger=t,this.events=new Ut.exports.EventEmitter,this.name=K6,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||S0,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 P=>{const k=({id:C})=>{I.opts.id===C&&(this.removeRequestFromQueue(C),this.relayer.events.removeListener(Ot.publish,k),P(I))};this.relayer.events.on(Ot.publish,k);const K=Pi(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,J0(W0({},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 Pi(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=S0,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,J0(W0({},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 V5{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 G5=Object.defineProperty,W5=Object.defineProperties,J5=Object.getOwnPropertyDescriptors,Y0=Object.getOwnPropertySymbols,Y5=Object.prototype.hasOwnProperty,Q5=Object.prototype.propertyIsEnumerable,Q0=(r,e,t)=>e in r?G5(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,ys=(r,e)=>{for(var t in e||(e={}))Y5.call(e,t)&&Q0(r,t,e[t]);if(Y0)for(var t of Y0(e))Q5.call(e,t)&&Q0(r,t,e[t]);return r},wf=(r,e)=>W5(r,J5(e));class X5 extends Op{constructor(e,t){super(e,t),this.relayer=e,this.logger=t,this.subscriptions=new Map,this.topicMap=new V5,this.events=new Ut.exports.EventEmitter,this.name=Y6,this.version=Q6,this.pending=new Map,this.cached=[],this.initialized=!1,this.pendingSubscriptionWatchLabel="pending_sub_watch_label",this.pollingInterval=20,this.storagePrefix=Yr,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)>=X6&&(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 Pi(new Promise((M,D)=>{this.relayer.request(s).catch(P=>{this.logger.warn(P,P?.message),D(P)}).then(M)}),this.initialSubscribeTimeout,`Subscribing to ${e} failed, please try again`);this.events.removeListener(dr.created,y),g(I)}catch{}}),h=await Pi(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 Pi(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 Pi(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 vm(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 ai(e+this.clientId)}}var Z5=Object.defineProperty,X0=Object.getOwnPropertySymbols,e8=Object.prototype.hasOwnProperty,t8=Object.prototype.propertyIsEnumerable,Z0=(r,e,t)=>e in r?Z5(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,ed=(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};class r8 extends Ip{constructor(e){super(e),this.protocol="wc",this.version=2,this.events=new Ut.exports.EventEmitter,this.name=H6,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):Zr(to({level:e.logger||j6})),this.messages=new U5(this.logger,e.core),this.subscriber=new X5(this,this.logger),this.publisher=new H5(this,this.logger),this.relayUrl=e?.relayUrl||I0,this.projectId=e.projectId,im()?this.packageName=Iu():nm()&&(this.bundleId=Iu()),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,ed({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 Pi(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 h0())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 Pi(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 O6(new C6(fm({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(V6))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(ed({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 h0();zy(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(G6))))}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 i8=Object.defineProperty,td=Object.getOwnPropertySymbols,n8=Object.prototype.hasOwnProperty,s8=Object.prototype.propertyIsEnumerable,rd=(r,e,t)=>e in r?i8(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,id=(r,e)=>{for(var t in e||(e={}))n8.call(e,t)&&rd(r,t,e[t]);if(td)for(var t of td(e))s8.call(e,t)&&rd(r,t,e[t]);return r};class on extends Dp{constructor(e,t,i,n=Yr,s=void 0){super(e,t,i,n),this.core=e,this.logger=t,this.name=i,this.map=new Map,this.version=W6,this.cached=[],this.initialized=!1,this.storagePrefix=Yr,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):my(o)?this.map.set(o.id,o):yy(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=>T6(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=id(id({},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 a8{constructor(e,t){this.core=e,this.logger=t,this.name=Z6,this.version=ew,this.events=new Ut.exports,this.initialized=!1,this.storagePrefix=Yr,this.ignoredPayloadTypes=[si],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:M0},u={topic:s,expiry:o,relay:f,active:!1,methods:i?.methods},h=r0({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:[Qr.pairing_started]}});this.isValidPair(i,n);const{topic:s,symKey:o,relay:f,expiryTimestamp:u,methods:h}=t0(i.uri);n.props.properties.topic=s,n.addTrace(Qr.pairing_uri_validation_success),n.addTrace(Qr.pairing_uri_not_expired);let g;if(this.pairings.keys.includes(s)){if(g=this.pairings.get(s),n.addTrace(Qr.existing_pairing),g.active)throw n.setError(hi.active_pairing_already_exists),new Error(`Pairing already exists: ${s}. Please try again with a new connection URI.`);n.addTrace(Qr.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(Qr.store_new_pairing),i.activatePairing&&await this.activate({topic:s}),this.events.emit(nn.create,I),n.addTrace(Qr.emit_inactive_pairing),this.core.crypto.keychain.has(s)||await this.core.crypto.setSymKey(o,s),n.addTrace(Qr.subscribing_pairing_topic);try{await this.core.relayer.confirmOnlineStateOrThrow()}catch{n.setError(hi.no_internet_connection)}try{await this.core.relayer.subscribe(s,{relay:f})}catch(M){throw n.setError(hi.subscribe_pairing_topic_failure),M}return n.addTrace(Qr.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 r0({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(()=>{Jr(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(hi.malformed_pairing_uri),new Error(f)}if(!vy(i.uri)){const{message:f}=se("MISSING_OR_INVALID",`pair() uri: ${i.uri}`);throw n.setError(hi.malformed_pairing_uri),new Error(f)}const o=t0(i?.uri);if(!((s=o?.relay)!=null&&s.protocol)){const{message:f}=se("MISSING_OR_INVALID","pair() uri#relay-protocol");throw n.setError(hi.malformed_pairing_uri),new Error(f)}if(!(o!=null&&o.symKey)){const{message:f}=se("MISSING_OR_INVALID","pair() uri#symKey");throw n.setError(hi.malformed_pairing_uri),new Error(f)}if(o!=null&&o.expiryTimestamp&&ie.toMiliseconds(o?.expiryTimestamp)<Date.now()){n.setError(hi.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}=Cu(e.target);t&&this.pairings.keys.includes(t)&&(await this.deletePairing(t,!0),this.events.emit(nn.expire,{topic:t}))})}}class o8 extends Ep{constructor(e,t){super(e,t),this.core=e,this.logger=t,this.records=new Map,this.events=new Ut.exports.EventEmitter,this.name=tw,this.version=rw,this.cached=[],this.initialized=!1,this.storagePrefix=Yr,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(Pr.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(Pr.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(Pr.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(Pr.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(Pr.created,e=>{const t=Pr.created;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,record:e})}),this.events.on(Pr.updated,e=>{const t=Pr.updated;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,record:e})}),this.events.on(Pr.deleted,e=>{const t=Pr.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(Pr.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 f8 extends Rp{constructor(e,t){super(e,t),this.core=e,this.logger=t,this.expirations=new Map,this.events=new Ut.exports.EventEmitter,this.name=iw,this.version=nw,this.cached=[],this.initialized=!1,this.storagePrefix=Yr,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 cm(e);if(typeof e=="number")return hm(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 c8 extends Np{constructor(e,t,i){super(e,t,i),this.core=e,this.logger=t,this.store=i,this.name=sw,this.verifyUrlV3=ow,this.storagePrefix=Yr,this.version=A0,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(P),M("attestation aborted")};this.abortController.signal.addEventListener("abort",D);const P=h.createElement("iframe");P.src=u,P.style.display="none",P.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(P),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(P),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 fw.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=Xm(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 h8 extends Pp{constructor(e,t){super(e,t),this.projectId=e,this.logger=t,this.context=cw,this.registerDeviceToken=async i=>{const{clientId:n,token:s,notificationType:o,enableEncrypted:f=!1}=i,u=`${hw}/${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 u8=Object.defineProperty,nd=Object.getOwnPropertySymbols,d8=Object.prototype.hasOwnProperty,l8=Object.prototype.propertyIsEnumerable,sd=(r,e,t)=>e in r?u8(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,ws=(r,e)=>{for(var t in e||(e={}))d8.call(e,t)&&sd(r,t,e[t]);if(nd)for(var t of nd(e))l8.call(e,t)&&sd(r,t,e[t]);return r};class p8 extends Cp{constructor(e,t,i=!0){super(e,t,i),this.core=e,this.logger=t,this.context=dw,this.storagePrefix=Yr,this.storageVersion=uw,this.events=new Map,this.shouldPersist=!1,this.init=async()=>{if(!Zo())try{const n={eventId:Fu(),timestamp:Date.now(),domain:this.getAppDomain(),props:{event:"INIT",type:"",properties:{client_id:await this.core.crypto.getClientId(),user_agent:Ou(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=Fu(),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)>lw&&(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(`${pw}?projectId=${this.core.projectId}&st=events_sdk&sv=js-${bf}${s}`,{method:"POST",body:JSON.stringify(n)})},this.getAppDomain=()=>Du().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 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,fd=(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 _f extends Ap{constructor(e){var t;super(e),this.protocol=x0,this.version=A0,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||I0,this.customStoragePrefix=e!=null&&e.customStoragePrefix?`:${e.customStoragePrefix}`:"";const i=to({level:typeof e?.logger=="string"&&e.logger?e.logger:F6.logger,name:Ra}),{logger:n,chunkLoggerController:s}=xp({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 q5(this,this.logger,e?.keychain),this.history=new o8(this,this.logger),this.expirer=new f8(this,this.logger),this.storage=e!=null&&e.storage?e.storage:new Wl(fd(fd({},B6),e?.storageOptions)),this.relayer=new r8({core:this,logger:this.logger,relayUrl:this.relayUrl,projectId:this.projectId}),this.pairing=new a8(this,this.logger),this.verify=new c8(this,this.logger,this.storage),this.echoClient=new h8(this.projectId||"",this.logger),this.linkModeSupportedApps=[],this.eventClient=new p8(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(J6,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(D0,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(D0)||[],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,cd="wc",hd=2,ud="client",Af=`${cd}@${hd}:${ud}:`,Ef={name:ud,logger:"error",controller:!1,relayUrl:"wss://relay.walletconnect.org"},dd="WALLETCONNECT_DEEPLINK_CHOICE",m8="proposal",y8="Proposal expired",w8="session",Fn=ie.SEVEN_DAYS,_8="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},Xr={idle:"IDLE",active:"ACTIVE"},x8="request",A8=["wc_sessionPropose","wc_sessionRequest","wc_authRequest","wc_sessionAuthenticate"],E8="wc",S8="auth",M8="authKeys",I8="pairingTopics",D8="requests",Pa=`${E8}@${1.5}:${S8}:`,Ca=`${Pa}:PUB_KEY`;var O8=Object.defineProperty,R8=Object.defineProperties,N8=Object.getOwnPropertyDescriptors,ld=Object.getOwnPropertySymbols,P8=Object.prototype.hasOwnProperty,C8=Object.prototype.propertyIsEnumerable,pd=(r,e,t)=>e in r?O8(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,gt=(r,e)=>{for(var t in e||(e={}))P8.call(e,t)&&pd(r,t,e[t]);if(ld)for(var t of ld(e))C8.call(e,t)&&pd(r,t,e[t]);return r},Tr=(r,e)=>R8(r,N8(e));class T8 extends Fp{constructor(e){super(e),this.name=_8,this.events=new Ut.exports,this.initialized=!1,this.requestQueue={state:Xr.idle,queue:[]},this.sessionRequestQueue={state:Xr.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=Tr(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),P=gt({requiredNamespaces:s,optionalNamespaces:o,relays:u??[{protocol:M0}],proposer:{publicKey:I,metadata:this.client.metadata},expiryTimestamp:D,pairingTopic:h},f&&{sessionProperties:f}),{reject:k,resolve:K,done:C}=Xi(M,y8);this.events.once(Ye("session_connect"),async({error:F,session:U})=>{if(F)k(F);else if(U){U.self.publicKey=I;const z=Tr(gt({},U),{pairingTopic:P.pairingTopic,requiredNamespaces:P.requiredNamespaces,optionalNamespaces:P.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:P,throwOnFailedPublish:!0});return await this.setProposal(j,gt({id:j},P)),{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:[Cr.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:P,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:Cr.session_approve_started,properties:{topic:M,trace:[Cr.session_approve_started,Cr.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(Cr.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(Cr.subscribe_session_topic_success);const _=Tr(gt({},U),{topic:F,requiredNamespaces:P,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(Cr.store_session);try{K.addTrace(Cr.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(Cr.session_settle_publish_success),K.addTrace(Cr.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(Cr.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=ci(),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=ci(),{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=ci(),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:P})=>{D?I(D):y(P)});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:Tr(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:Tr(gt({},n),{expiryTimestamp:_t(o)}),chainId:i},expiry:o,throwOnFailedPublish:!0}).catch(P=>I(P)),this.client.events.emit("session_request_sent",{topic:s,request:n,chainId:i,id:u}),D()}),new Promise(async D=>{var P;if(!((P=f.sessionConfig)!=null&&P.disableDeepLink)){const k=await pm(this.client.core.storage,dd);await dm({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);Jr(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=ci(),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=ci();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=>gy(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:P=[],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}`),P.length>0){const{namespace:E}=ya(f[0]);let x=Bm(E,"request",P);xa(K)&&(x=qm(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",...P])],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:N,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),N({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 Uu({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=ku(m),X=Ku(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:i0([...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})),N({auths:v,session:T})},c=ci(),b=ci();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:Tr(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:si,receiverPublicKey:u,senderPublicKey:h},I=[],M=[];for(const k of n){if(!await Uu({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=ku(C),z=Ku(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 P;if(I?.length>0){P={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:i0([...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,P),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:P}},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:si,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 $u(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(dd).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=Xr.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=Xr.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(A8.includes(n)){const k=ai(JSON.stringify(y)),K=ai(I);D=await this.client.core.verify.register({id:K,decryptedId:k})}const P=Rt[n].req;if(P.attestation=D,o&&(P.ttl=o),f&&(P.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=Tr(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,Tr(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=Tr(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,Tr(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===Xr.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=Xr.active;const t=this.requestQueue.queue.shift();if(t)try{await this.processRequest(t)}catch(i){this.client.logger.warn(i)}}this.requestQueue.state=Xr.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(hi.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:ai(JSON.stringify(n)),encryptedId:o,metadata:y.proposer.metadata});h?.addTrace(Qr.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(Jr(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=Tr(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;Jr(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`);Jr(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`);Jr(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(()=>{Jr(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:ai(JSON.stringify(rn("wc_sessionRequest",I,y))),encryptedId:h,metadata:M.peer.metadata,transportType:g}),P={id:y,topic:o,params:I,verifyContext:D};await this.setPendingSessionRequest(P),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(P):(this.addSessionRequestToSessionRequestQueue(P),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`);Jr(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}),Jr(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:ai(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:si,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=Xr.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===Xr.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=Xr.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),!Iy(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=My(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=f0(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),!Oy(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(!a0(i)){const{message:h}=se("MISSING_OR_INVALID","onSessionSettleRequest() relay protocol should be a string");throw new Error(h)}const f=wy(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=f0(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(!o0(f,s)){const{message:u}=se("MISSING_OR_INVALID",`request() chainId: ${s}`);throw new Error(u)}if(!Ry(n)){const{message:u}=se("MISSING_OR_INVALID",`request() ${JSON.stringify(n)}`);throw new Error(u)}if(!Cy(f,s,n.method)){const{message:u}=se("MISSING_OR_INVALID",`request() method: ${n.method}`);throw new Error(u)}if(o&&!Ly(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(!Ny(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(!o0(o,s)){const{message:f}=se("MISSING_OR_INVALID",`emit() chainId: ${s}`);throw new Error(f)}if(!Py(n)){const{message:f}=se("MISSING_OR_INVALID",`emit() event: ${JSON.stringify(n)}`);throw new Error(f)}if(!Ty(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=Tu(t,"topic")||"",n=decodeURIComponent(Tu(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()||Ri()&&(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:ai(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}=Cu(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(!Dy(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 F8 extends on{constructor(e,t){super(e,t,m8,Af),this.core=e,this.logger=t}}class gd extends on{constructor(e,t){super(e,t,w8,Af),this.core=e,this.logger=t}}class B8 extends on{constructor(e,t){super(e,t,x8,Af,i=>i.id),this.core=e,this.logger=t}}class L8 extends on{constructor(e,t){super(e,t,M8,Pa,()=>Ca),this.core=e,this.logger=t}}class q8 extends on{constructor(e,t){super(e,t,I8,Pa),this.core=e,this.logger=t}}class U8 extends on{constructor(e,t){super(e,t,D8,Pa,i=>i.id),this.core=e,this.logger=t}}class $8{constructor(e,t){this.core=e,this.logger=t,this.authKeys=new L8(this.core,this.logger),this.pairingTopics=new q8(this.core,this.logger),this.requests=new U8(this.core,this.logger)}async init(){await this.authKeys.init(),await this.pairingTopics.init(),await this.requests.init()}}class Mf extends Tp{constructor(e){super(e),this.protocol=cd,this.version=hd,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||Du(),this.signConfig=e?.signConfig;const t=typeof e?.logger<"u"&&typeof e?.logger!="string"?e.logger:Zr(to({level:e?.logger||Ef.logger}));this.core=e?.core||new xf(e),this.logger=Vt(t,this.name),this.session=new gd(this.core,this.logger),this.proposal=new F8(this.core,this.logger),this.pendingRequest=new B8(this.core,this.logger),this.engine=new T8(this),this.auth=new $8(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 z8=gd,k8=Mf;class K8 extends Ut.exports{constructor(){super()}}class bd{constructor(e){this.opts=e}}class vd{constructor(e){this.client=e}}class md{constructor(e){this.engine=e}}class j8 extends md{constructor(e){super(e),this.engine=e,this.canFulfil=async t=>{if(console.log("canFulfil",t),!this.canFulfilHandler)throw new Error(`canFulfilHandler not found for environment: '${Ni()}'`);const{transaction:i}=t,n=await this.canFulfilHandler({transaction:i,projectId:this.projectId});switch(console.log("canFulfil 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:return{status:Li.available,data:n.data};default:throw new Error(`Invalid canFulfil status: ${JSON.stringify(n)}`)}},this.fulfilmentStatus=async t=>{if(!this.fulfilmentStatusHandler)throw new Error(`fulfilmentStatusHandler not found for environment: '${Ni()}'`);const{fulfilmentId:i}=t;console.log("fulfilmentStatus",t);const n=await this.fulfilmentStatusHandler({orchestrationId:i,projectId:this.projectId});if(n.status===$f.error)throw new Error(n.reason);return console.log("fulfilmentStatus result",n),n},this.loadHandlers=()=>{switch(Ni()){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.canFulfilHandler=t.checkRoute,this.fulfilmentStatusHandler=t.checkStatus},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.canFulfilHandler=t.checkRoute,this.fulfilmentStatusHandler=t.checkStatus},this.loadHandlers(),this.projectId=this.engine.client.core.projectId||""}}var H8=Object.defineProperty,V8=Object.defineProperties,G8=Object.getOwnPropertyDescriptors,yd=Object.getOwnPropertySymbols,W8=Object.prototype.hasOwnProperty,J8=Object.prototype.propertyIsEnumerable,wd=(r,e,t)=>e in r?H8(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Y8=(r,e)=>{for(var t in e||(e={}))W8.call(e,t)&&wd(r,t,e[t]);if(yd)for(var t of yd(e))J8.call(e,t)&&wd(r,t,e[t]);return r},Q8=(r,e)=>V8(r,G8(e));class X8 extends vd{constructor(e){super(e),this.init=async()=>{this.signClient=await k8.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(Q8(Y8({},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.canFulfil=async t=>await this.chainAbstraction.canFulfil(t),this.fulfilmentStatus=async t=>await this.chainAbstraction.fulfilmentStatus(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 j8(this)}}const Z8={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 z8(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}},_d=class extends bd{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.canFulfil=async e=>{try{return await this.engine.canFulfil(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.metadata=r.metadata,this.name=r.name||$a,this.signConfig=r.signConfig,this.core=r.core,this.logger=this.core.logger,this.engine=new X8(this)}static async init(r){const e=new _d(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 If=_d;If.notifications=Z8;const e4=If;wt.CAN_FULFIL_STATUS=Li,wt.CLIENT_CONTEXT=$a,wt.CLIENT_STORAGE_OPTIONS=$d,wt.CLIENT_STORAGE_PREFIX=Ud,wt.FULFILMENT_STATUS=$f,wt.IChainAbstraction=md,wt.IWalletKit=bd,wt.IWalletKitEngine=vd,wt.IWalletKitEvents=K8,wt.PROTOCOL=Uf,wt.PROTOCOL_VERSION=qd,wt.REQUEST_CONTEXT=zd,wt.WalletKit=e4,wt.default=If,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 Xy(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 Zy(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 e6(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 t6(r,e){return function(t,i){e(t,i,r)}}function r6(r,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(r,e)}function i6(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 n6(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 s6(r,e,t,i){i===void 0&&(i=t),r[i]=e[t]}function a6(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 g0(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 o6(){for(var r=[],e=0;e<arguments.length;e++)r=r.concat(g0(arguments[e]));return r}function f6(){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 c6(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,P){s.push([I,M,D,P])>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 h6(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 u6(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 d6(r,e){return Object.defineProperty?Object.defineProperty(r,"raw",{value:e}):r.raw=e,r}function l6(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 p6(r){return r&&r.__esModule?r:{default:r}}function g6(r,e){if(!e.has(r))throw new TypeError("attempted to get private field on non-instance");return e.get(r)}function b6(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 v6=Object.freeze({__proto__:null,__extends:Xy,get __assign(){return hf},__rest:Zy,__decorate:e6,__param:t6,__metadata:r6,__awaiter:i6,__generator:n6,__createBinding:s6,__exportStar:a6,__values:uf,__read:g0,__spread:o6,__spreadArrays:f6,__await:ps,__asyncGenerator:c6,__asyncDelegator:h6,__asyncValues:u6,__makeTemplateObject:d6,__importStar:l6,__importDefault:p6,__classPrivateFieldGet:g6,__classPrivateFieldSet:b6}),m6=Ua(v6),oi={},b0;function y6(){if(b0)return oi;b0=1,Object.defineProperty(oi,"__esModule",{value:!0}),oi.isBrowserCryptoAvailable=oi.getSubtleCrypto=oi.getBrowerCrypto=void 0;function r(){return Pt?.crypto||Pt?.msCrypto||{}}oi.getBrowerCrypto=r;function e(){const i=r();return i.subtle||i.webkitSubtle}oi.getSubtleCrypto=e;function t(){return!!r()&&!!e()}return oi.isBrowserCryptoAvailable=t,oi}var fi={},v0;function w6(){if(v0)return fi;v0=1,Object.defineProperty(fi,"__esModule",{value:!0}),fi.isBrowser=fi.isNode=fi.isReactNative=void 0;function r(){return typeof document>"u"&&typeof navigator<"u"&&navigator.product==="ReactNative"}fi.isReactNative=r;function e(){return typeof process<"u"&&typeof process.versions<"u"&&typeof process.versions.node<"u"}fi.isNode=e;function t(){return!r()&&!e()}return fi.isBrowser=t,fi}(function(r){Object.defineProperty(r,"__esModule",{value:!0});const e=m6;e.__exportStar(y6(),r),e.__exportStar(w6(),r)})(p0);function ci(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(ci(r))}function rn(r,e,t){return{id:t||ci(),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:_6(e,t)}}function _6(r,e){return typeof r>"u"?l0(u0):(typeof r=="string"&&(r=Object.assign(Object.assign({},l0(ff)),{message:r})),typeof e<"u"&&(r.data=e),Jy(r.code)&&(r=Yy(r.code)),r)}class x6{}class A6 extends x6{constructor(){super()}}class E6 extends A6{constructor(e){super()}}const S6="^wss?:";function M6(r){const e=r.match(new RegExp(/^\w+:/,"gi"));if(!(!e||!e.length))return e[0]}function I6(r,e){const t=M6(r);return typeof t>"u"?!1:new RegExp(e).test(t)}function m0(r){return I6(r,S6)}function D6(r){return new RegExp("wss?://localhost(:d{2,5})?").test(r)}function y0(r){return typeof r=="object"&&"id"in r&&"jsonrpc"in r&&r.jsonrpc==="2.0"}function pf(r){return y0(r)&&"method"in r}function Oa(r){return y0(r)&&(Jr(r)||_r(r))}function Jr(r){return"result"in r}function _r(r){return"error"in r}class O6 extends E6{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 R6=()=>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"),N6=()=>typeof WebSocket<"u"||typeof global<"u"&&typeof global.WebSocket<"u"||typeof window<"u"&&typeof window.WebSocket<"u"||typeof self<"u"&&typeof self.WebSocket<"u",w0=r=>r.split("?")[0],_0=10,P6=R6();class C6{constructor(e){if(this.url=e,this.events=new Ut.exports.EventEmitter,this.registering=!1,!m0(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(!m0(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=p0.isReactNative()?void 0:{rejectUnauthorized:!D6(e)},s=new P6(e,[],n);N6()?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 Qy(e,w0(t),"WS")}resetMaxListeners(){this.events.getMaxListeners()>_0&&this.events.setMaxListeners(_0)}emitError(e){const t=this.parseError(new Error(e?.message||`WebSocket connection failed for host: ${w0(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]",P="[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]",N="[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[N]=S[g]=S[p]=S[y]=S[I]=S[M]=S[P]=S[k]=S[C]=S[U]=S[z]=S[_]=S[Q]=!1;var H=typeof Pt=="object"&&Pt&&Pt.Object===Object&&Pt,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 Ne($){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,Pe=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 ui(){this.size=0,this.__data__={hash:new Re,map:new(Ce||Je),string:new Re}}function di($){var V=Fa(this,$).delete($);return this.size-=V?1:0,V}function li($){return Fa(this,$).get($)}function pi($){return Fa(this,$).has($)}function gi($,V){var Z=Fa(this,$),be=Z.size;return Z.set($,V),this.size+=Z.size==be?0:1,this}yt.prototype.clear=ui,yt.prototype.delete=di,yt.prototype.get=li,yt.prototype.has=pi,yt.prototype.set=gi;function Er($){var V=-1,Z=$==null?0:$.length;for(this.__data__=new yt;++V<Z;)this.add($[V])}function bi($){return this.__data__.set($,i),this}function vi($){return this.__data__.has($)}Er.prototype.add=Er.prototype.push=bi,Er.prototype.has=vi;function jt($){var V=this.__data__=new Je($);this.size=V.size}function mi(){this.__data__=new Je,this.size=0}function yi($){var V=this.__data__,Z=V.delete($);return this.size=V.size,Z}function wi($){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=mi,jt.prototype.delete=yi,jt.prototype.get=wi,jt.prototype.has=_s,jt.prototype.set=xs;function t4($,V){var Z=Ba($),be=!Z&&b4($),ut=!Z&&!be&&Df($),Ge=!Z&&!be&&!ut&&Rd($),bt=Z||be||ut||Ge,Nt=bt?he($.length,String):[],qt=Nt.length;for(var dt in $)(V||re.call($,dt))&&!(bt&&(dt=="length"||ut&&(dt=="offset"||dt=="parent")||Ge&&(dt=="buffer"||dt=="byteLength"||dt=="byteOffset")||u4(dt,qt)))&&Nt.push(dt);return Nt}function Ta($,V){for(var Z=$.length;Z--;)if(Md($[Z][0],V))return Z;return-1}function r4($,V,Z){var be=V($);return Ba($)?be:we(be,Z($))}function As($){return $==null?$===void 0?J:K:Ie&&Ie in Object($)?c4($):g4($)}function xd($){return Es($)&&As($)==f}function Ad($,V,Z,be,ut){return $===V?!0:$==null||V==null||!Es($)&&!Es(V)?$!==$&&V!==V:i4($,V,Z,be,Ad,ut)}function i4($,V,Z,be,ut,Ge){var bt=Ba($),Nt=Ba(V),qt=bt?u:Fi($),dt=Nt?u:Fi(V);qt=qt==f?C:qt,dt=dt==f?C:dt;var lr=qt==C,Fr=dt==C,Ht=qt==dt;if(Ht&&Df($)){if(!Df(V))return!1;bt=!0,lr=!1}if(Ht&&!lr)return Ge||(Ge=new jt),bt||Rd($)?Ed($,V,Z,be,ut,Ge):o4($,V,qt,Z,be,ut,Ge);if(!(Z&n)){var Sr=lr&&re.call($,"__wrapped__"),Mr=Fr&&re.call(V,"__wrapped__");if(Sr||Mr){var Bi=Sr?$.value():$,_i=Mr?V.value():V;return Ge||(Ge=new jt),ut(Bi,_i,Z,be,Ge)}}return Ht?(Ge||(Ge=new jt),f4($,V,Z,be,ut,Ge)):!1}function n4($){if(!Od($)||l4($))return!1;var V=Id($)?oe:O;return V.test(fn($))}function s4($){return Es($)&&Dd($.length)&&!!S[As($)]}function a4($){if(!p4($))return Pe($);var V=[];for(var Z in Object($))re.call($,Z)&&Z!="constructor"&&V.push(Z);return V}function Ed($,V,Z,be,ut,Ge){var bt=Z&n,Nt=$.length,qt=V.length;if(Nt!=qt&&!(bt&&qt>Nt))return!1;var dt=Ge.get($);if(dt&&Ge.get(V))return dt==V;var lr=-1,Fr=!0,Ht=Z&s?new Er:void 0;for(Ge.set($,V),Ge.set(V,$);++lr<Nt;){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;Fr=!1;break}if(Ht){if(!Se(V,function(_i,cn){if(!xe(Ht,cn)&&(Sr===_i||ut(Sr,_i,Z,be,Ge)))return Ht.push(cn)})){Fr=!1;break}}else if(!(Sr===Mr||ut(Sr,Mr,Z,be,Ge))){Fr=!1;break}}return Ge.delete($),Ge.delete(V),Fr}function o4($,V,Z,be,ut,Ge,bt){switch(Z){case p:if($.byteLength!=V.byteLength||$.byteOffset!=V.byteOffset)return!1;$=$.buffer,V=V.buffer;case N:return!($.byteLength!=V.byteLength||!Ge(new Oe($),new Oe(V)));case g:case y:case k:return Md(+$,+V);case I:return $.name==V.name&&$.message==V.message;case U:case _:return $==V+"";case P:var Nt=ve;case z:var qt=be&n;if(Nt||(Nt=ne),$.size!=V.size&&!qt)return!1;var dt=bt.get($);if(dt)return dt==V;be|=s,bt.set($,V);var lr=Ed(Nt($),Nt(V),be,ut,Ge,bt);return bt.delete($),lr;case R:if(Le)return Le.call($)==Le.call(V)}return!1}function f4($,V,Z,be,ut,Ge){var bt=Z&n,Nt=Sd($),qt=Nt.length,dt=Sd(V),lr=dt.length;if(qt!=lr&&!bt)return!1;for(var Fr=qt;Fr--;){var Ht=Nt[Fr];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;++Fr<qt;){Ht=Nt[Fr];var _i=$[Ht],cn=V[Ht];if(be)var Nd=bt?be(cn,_i,Ht,V,$,Ge):be(_i,cn,Ht,$,V,Ge);if(!(Nd===void 0?_i===cn||ut(_i,cn,Z,be,Ge):Nd)){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 Sd($){return r4($,y4,h4)}function Fa($,V){var Z=$.__data__;return d4(V)?Z[typeof V=="string"?"string":"hash"]:Z.map}function Bn($,V){var Z=ae($,V);return n4(Z)?Z:void 0}function c4($){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 h4=et?function($){return $==null?[]:($=Object($),ee(et($),function(V){return We.call($,V)}))}:w4,Fi=As;(Te&&Fi(new Te(new ArrayBuffer(1)))!=p||Ce&&Fi(new Ce)!=P||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 P;case me:return j;case ze:return z;case ke:return Q}return V});function u4($,V){return V=V??o,!!V&&(typeof $=="number"||W.test($))&&$>-1&&$%1==0&&$<V}function d4($){var V=typeof $;return V=="string"||V=="number"||V=="symbol"||V=="boolean"?$!=="__proto__":$===null}function l4($){return!!Ae&&Ae in $}function p4($){var V=$&&$.constructor,Z=typeof V=="function"&&V.prototype||te;return $===Z}function g4($){return Ee.call($)}function fn($){if($!=null){try{return _e.call($)}catch{}try{return $+""}catch{}}return""}function Md($,V){return $===V||$!==$&&V!==V}var b4=xd(function(){return arguments}())?xd:function($){return Es($)&&re.call($,"callee")&&!We.call($,"callee")},Ba=Array.isArray;function v4($){return $!=null&&Dd($.length)&&!Id($)}var Df=tt||_4;function m4($,V){return Ad($,V)}function Id($){if(!Od($))return!1;var V=As($);return V==M||V==D||V==h||V==F}function Dd($){return typeof $=="number"&&$>-1&&$%1==0&&$<=o}function Od($){var V=typeof $;return $!=null&&(V=="object"||V=="function")}function Es($){return $!=null&&typeof $=="object"}var Rd=X?Ne(X):s4;function y4($){return v4($)?t4($):a4($)}function w4(){return[]}function _4(){return!1}r.exports=m4})(gf,gf.exports);var T6=gf.exports;const x0="wc",A0=2,Ra="core",Yr=`${x0}@2:${Ra}:`,F6={name:Ra,logger:"error"},B6={database:":memory:"},L6="crypto",E0="client_ed25519_seed",q6=ie.ONE_DAY,U6="keychain",$6="0.3",z6="messages",k6="0.3",S0=ie.SIX_HOURS,K6="publisher",M0="irn",j6="error",I0="wss://relay.walletconnect.org",H6="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"},V6="_subscription",xr={payload:"payload",connect:"connect",disconnect:"disconnect",error:"error"},G6=.1,bf="2.17.3",ht={link_mode:"link_mode",relay:"relay"},W6="0.3",J6="WALLETCONNECT_CLIENT_ID",D0="WALLETCONNECT_LINK_MODE_APPS",dr={created:"subscription_created",deleted:"subscription_deleted",expired:"subscription_expired",disabled:"subscription_disabled",sync:"subscription_sync",resubscribed:"subscription_resubscribed"},Y6="subscription",Q6="0.3",X6=ie.FIVE_SECONDS*1e3,Z6="pairing",ew="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"},Pr={created:"history_created",updated:"history_updated",deleted:"history_deleted",sync:"history_sync"},tw="history",rw="0.3",iw="expirer",Ar={created:"expirer_created",deleted:"expirer_deleted",expired:"expirer_expired",sync:"expirer_sync"},nw="0.3",sw="verify-api",aw="https://verify.walletconnect.com",O0="https://verify.walletconnect.org",bs=O0,ow=`${bs}/v3`,fw=[aw,O0],cw="echo",hw="https://echo.walletconnect.com",Qr={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"},hi={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"},Cr={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"},uw=.1,dw="event-client",lw=86400,pw="https://pulse.walletconnect.org/batch";function gw(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 P=0,k=0,K=0,C=D.length;K!==C&&D[K]===0;)K++,P++;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(P);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 P=0;if(D[P]!==" "){for(var k=0,K=0;D[P]===u;)k++,P++;for(var C=(D.length-P)*h+1>>>0,j=new Uint8Array(C);D[P];){var F=t[D.charCodeAt(P)];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,P++}if(D[P]!==" "){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 P=I(D);if(P)return P;throw new Error(`Non-${e} character`)}return{encode:y,decodeUnsafe:I,decode:M}}var bw=gw,vw=bw;const R0=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")},mw=r=>new TextEncoder().encode(r),yw=r=>new TextDecoder().decode(r);class ww{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 _w{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 N0(this,e)}}class xw{constructor(e){this.decoders=e}or(e){return N0(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 N0=(r,e)=>new xw({...r.decoders||{[r.prefix]:r},...e.decoders||{[e.prefix]:e}});class Aw{constructor(e,t,i,n){this.name=e,this.prefix=t,this.baseEncode=i,this.baseDecode=n,this.encoder=new ww(e,t,i),this.decoder=new _w(e,t,n)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}}const Na=({name:r,prefix:e,encode:t,decode:i})=>new Aw(r,e,t,i),ms=({prefix:r,name:e,alphabet:t})=>{const{encode:i,decode:n}=vw(t,e);return Na({prefix:r,name:e,encode:i,decode:s=>R0(n(s))})},Ew=(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},Sw=(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})=>Na({prefix:e,name:r,encode(n){return Sw(n,i,t)},decode(n){return Ew(n,i,t,r)}}),Mw=Na({prefix:"\0",name:"identity",encode:r=>yw(r),decode:r=>mw(r)});var Iw=Object.freeze({__proto__:null,identity:Mw});const Dw=Lt({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var Ow=Object.freeze({__proto__:null,base2:Dw});const Rw=Lt({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var Nw=Object.freeze({__proto__:null,base8:Rw});const Pw=ms({prefix:"9",name:"base10",alphabet:"0123456789"});var Cw=Object.freeze({__proto__:null,base10:Pw});const Tw=Lt({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),Fw=Lt({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var Bw=Object.freeze({__proto__:null,base16:Tw,base16upper:Fw});const Lw=Lt({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),qw=Lt({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),Uw=Lt({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),$w=Lt({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),zw=Lt({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),kw=Lt({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),Kw=Lt({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),jw=Lt({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),Hw=Lt({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var Vw=Object.freeze({__proto__:null,base32:Lw,base32upper:qw,base32pad:Uw,base32padupper:$w,base32hex:zw,base32hexupper:kw,base32hexpad:Kw,base32hexpadupper:jw,base32z:Hw});const Gw=ms({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),Ww=ms({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var Jw=Object.freeze({__proto__:null,base36:Gw,base36upper:Ww});const Yw=ms({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),Qw=ms({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var Xw=Object.freeze({__proto__:null,base58btc:Yw,base58flickr:Qw});const Zw=Lt({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),e5=Lt({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),t5=Lt({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),r5=Lt({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var i5=Object.freeze({__proto__:null,base64:Zw,base64pad:e5,base64url:t5,base64urlpad:r5});const P0=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}"),n5=P0.reduce((r,e,t)=>(r[t]=e,r),[]),s5=P0.reduce((r,e,t)=>(r[e.codePointAt(0)]=t,r),[]);function a5(r){return r.reduce((e,t)=>(e+=n5[t],e),"")}function o5(r){const e=[];for(const t of r){const i=s5[t.codePointAt(0)];if(i===void 0)throw new Error(`Non-base256emoji character: ${t}`);e.push(i)}return new Uint8Array(e)}const f5=Na({prefix:"\u{1F680}",name:"base256emoji",encode:a5,decode:o5});var c5=Object.freeze({__proto__:null,base256emoji:f5}),h5=T0,C0=128,u5=127,d5=~u5,l5=Math.pow(2,31);function T0(r,e,t){e=e||[],t=t||0;for(var i=t;r>=l5;)e[t++]=r&255|C0,r/=128;for(;r&d5;)e[t++]=r&255|C0,r>>>=7;return e[t]=r|0,T0.bytes=t-i+1,e}var p5=vf,g5=128,F0=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&F0)<<n:(o&F0)*Math.pow(2,n),n+=7}while(o>=g5);return vf.bytes=s-i,t}var b5=Math.pow(2,7),v5=Math.pow(2,14),m5=Math.pow(2,21),y5=Math.pow(2,28),w5=Math.pow(2,35),_5=Math.pow(2,42),x5=Math.pow(2,49),A5=Math.pow(2,56),E5=Math.pow(2,63),S5=function(r){return r<b5?1:r<v5?2:r<m5?3:r<y5?4:r<w5?5:r<_5?6:r<x5?7:r<A5?8:r<E5?9:10},M5={encode:h5,decode:p5,encodingLength:S5},B0=M5;const L0=(r,e,t=0)=>(B0.encode(r,e,t),e),q0=r=>B0.encodingLength(r),mf=(r,e)=>{const t=e.byteLength,i=q0(r),n=i+q0(t),s=new Uint8Array(n+t);return L0(r,s,0),L0(t,s,i),s.set(e,n),new I5(r,t,e,s)};class I5{constructor(e,t,i,n){this.code=e,this.size=t,this.digest=i,this.bytes=n}}const U0=({name:r,code:e,encode:t})=>new D5(r,e,t);class D5{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 $0=r=>async e=>new Uint8Array(await crypto.subtle.digest(r,e)),O5=U0({name:"sha2-256",code:18,encode:$0("SHA-256")}),R5=U0({name:"sha2-512",code:19,encode:$0("SHA-512")});var N5=Object.freeze({__proto__:null,sha256:O5,sha512:R5});const z0=0,P5="identity",k0=R0;var C5=Object.freeze({__proto__:null,identity:{code:z0,name:P5,encode:k0,digest:r=>mf(z0,k0(r))}});new TextEncoder,new TextDecoder;const K0={...Iw,...Ow,...Nw,...Cw,...Bw,...Vw,...Jw,...Xw,...i5,...c5};({...N5,...C5});function T5(r=0){return globalThis.Buffer!=null&&globalThis.Buffer.allocUnsafe!=null?globalThis.Buffer.allocUnsafe(r):new Uint8Array(r)}function j0(r,e,t,i){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:i}}}const H0=j0("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),yf=j0("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=T5(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),F5={utf8:H0,"utf-8":H0,hex:K0.base16,latin1:yf,ascii:yf,binary:yf,...K0};function B5(r,e="utf8"){const t=F5[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 L5{constructor(e,t){this.core=e,this.logger=t,this.keychain=new Map,this.name=U6,this.version=$6,this.initialized=!1,this.storagePrefix=Yr,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,Ru(e))}async getKeyChain(){const e=await this.core.storage.getItem(this.storageKey);return typeof e<"u"?Nu(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 q5{constructor(e,t,i){this.core=e,this.logger=t,this.name=L6,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=Kc(n);return kc(s.publicKey)},this.generateKeyPair=()=>{this.isInitialized();const n=km();return this.setPrivateKey(n.publicKey,n.privateKey)},this.signJWT=async n=>{this.isInitialized();const s=await this.getClientSeed(),o=Kc(s),f=this.randomSessionIdentifier;return await Kg(f,n,q6,o)},this.generateSharedKey=(n,s,o)=>{this.isInitialized();const f=this.getPrivateKey(n),u=Km(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=Ju(o),u=ki(s);if(Qu(f))return Hm(u,o?.encoding);if(Yu(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 jm({type:g,symKey:h,message:u,senderPublicKey:y,encoding:o?.encoding})},this.decode=async(n,s,o)=>{this.isInitialized();const f=Wm(s,o);if(Qu(f)){const u=Gm(s,o?.encoding);return ln(u)}if(Yu(f)){const u=f.receiverPublicKey,h=f.senderPublicKey;n=await this.generateSharedKey(u,h)}try{const u=this.getSymKey(n),h=Vm({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 L5(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(E0)}catch{e=nf(),await this.keychain.set(E0,e)}return B5(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 U5 extends Sp{constructor(e,t){super(e,t),this.logger=e,this.core=t,this.messages=new Map,this.name=z6,this.version=k6,this.initialized=!1,this.storagePrefix=Yr,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=ai(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=ai(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,Ru(e))}async getRelayerMessages(){const e=await this.core.storage.getItem(this.storageKey);return typeof e<"u"?Nu(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 $5=Object.defineProperty,z5=Object.defineProperties,k5=Object.getOwnPropertyDescriptors,V0=Object.getOwnPropertySymbols,K5=Object.prototype.hasOwnProperty,j5=Object.prototype.propertyIsEnumerable,G0=(r,e,t)=>e in r?$5(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,W0=(r,e)=>{for(var t in e||(e={}))K5.call(e,t)&&G0(r,t,e[t]);if(V0)for(var t of V0(e))j5.call(e,t)&&G0(r,t,e[t]);return r},J0=(r,e)=>z5(r,k5(e));class H5 extends Mp{constructor(e,t){super(e,t),this.relayer=e,this.logger=t,this.events=new Ut.exports.EventEmitter,this.name=K6,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||S0,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 P=>{const k=({id:C})=>{I.opts.id===C&&(this.removeRequestFromQueue(C),this.relayer.events.removeListener(Ot.publish,k),P(I))};this.relayer.events.on(Ot.publish,k);const K=Pi(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,J0(W0({},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 Pi(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=S0,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,J0(W0({},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 V5{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 G5=Object.defineProperty,W5=Object.defineProperties,J5=Object.getOwnPropertyDescriptors,Y0=Object.getOwnPropertySymbols,Y5=Object.prototype.hasOwnProperty,Q5=Object.prototype.propertyIsEnumerable,Q0=(r,e,t)=>e in r?G5(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,ys=(r,e)=>{for(var t in e||(e={}))Y5.call(e,t)&&Q0(r,t,e[t]);if(Y0)for(var t of Y0(e))Q5.call(e,t)&&Q0(r,t,e[t]);return r},wf=(r,e)=>W5(r,J5(e));class X5 extends Op{constructor(e,t){super(e,t),this.relayer=e,this.logger=t,this.subscriptions=new Map,this.topicMap=new V5,this.events=new Ut.exports.EventEmitter,this.name=Y6,this.version=Q6,this.pending=new Map,this.cached=[],this.initialized=!1,this.pendingSubscriptionWatchLabel="pending_sub_watch_label",this.pollingInterval=20,this.storagePrefix=Yr,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)>=X6&&(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 Pi(new Promise((M,D)=>{this.relayer.request(s).catch(P=>{this.logger.warn(P,P?.message),D(P)}).then(M)}),this.initialSubscribeTimeout,`Subscribing to ${e} failed, please try again`);this.events.removeListener(dr.created,y),g(I)}catch{}}),h=await Pi(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 Pi(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 Pi(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 vm(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 ai(e+this.clientId)}}var Z5=Object.defineProperty,X0=Object.getOwnPropertySymbols,e8=Object.prototype.hasOwnProperty,t8=Object.prototype.propertyIsEnumerable,Z0=(r,e,t)=>e in r?Z5(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,ed=(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};class r8 extends Ip{constructor(e){super(e),this.protocol="wc",this.version=2,this.events=new Ut.exports.EventEmitter,this.name=H6,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):Zr(to({level:e.logger||j6})),this.messages=new U5(this.logger,e.core),this.subscriber=new X5(this,this.logger),this.publisher=new H5(this,this.logger),this.relayUrl=e?.relayUrl||I0,this.projectId=e.projectId,im()?this.packageName=Iu():nm()&&(this.bundleId=Iu()),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,ed({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 Pi(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 h0())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 Pi(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 O6(new C6(fm({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(V6))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(ed({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 h0();zy(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(G6))))}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 i8=Object.defineProperty,td=Object.getOwnPropertySymbols,n8=Object.prototype.hasOwnProperty,s8=Object.prototype.propertyIsEnumerable,rd=(r,e,t)=>e in r?i8(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,id=(r,e)=>{for(var t in e||(e={}))n8.call(e,t)&&rd(r,t,e[t]);if(td)for(var t of td(e))s8.call(e,t)&&rd(r,t,e[t]);return r};class on extends Dp{constructor(e,t,i,n=Yr,s=void 0){super(e,t,i,n),this.core=e,this.logger=t,this.name=i,this.map=new Map,this.version=W6,this.cached=[],this.initialized=!1,this.storagePrefix=Yr,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):my(o)?this.map.set(o.id,o):yy(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=>T6(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=id(id({},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 a8{constructor(e,t){this.core=e,this.logger=t,this.name=Z6,this.version=ew,this.events=new Ut.exports,this.initialized=!1,this.storagePrefix=Yr,this.ignoredPayloadTypes=[si],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:M0},u={topic:s,expiry:o,relay:f,active:!1,methods:i?.methods},h=r0({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:[Qr.pairing_started]}});this.isValidPair(i,n);const{topic:s,symKey:o,relay:f,expiryTimestamp:u,methods:h}=t0(i.uri);n.props.properties.topic=s,n.addTrace(Qr.pairing_uri_validation_success),n.addTrace(Qr.pairing_uri_not_expired);let g;if(this.pairings.keys.includes(s)){if(g=this.pairings.get(s),n.addTrace(Qr.existing_pairing),g.active)throw n.setError(hi.active_pairing_already_exists),new Error(`Pairing already exists: ${s}. Please try again with a new connection URI.`);n.addTrace(Qr.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(Qr.store_new_pairing),i.activatePairing&&await this.activate({topic:s}),this.events.emit(nn.create,I),n.addTrace(Qr.emit_inactive_pairing),this.core.crypto.keychain.has(s)||await this.core.crypto.setSymKey(o,s),n.addTrace(Qr.subscribing_pairing_topic);try{await this.core.relayer.confirmOnlineStateOrThrow()}catch{n.setError(hi.no_internet_connection)}try{await this.core.relayer.subscribe(s,{relay:f})}catch(M){throw n.setError(hi.subscribe_pairing_topic_failure),M}return n.addTrace(Qr.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 r0({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(()=>{Jr(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(hi.malformed_pairing_uri),new Error(f)}if(!vy(i.uri)){const{message:f}=se("MISSING_OR_INVALID",`pair() uri: ${i.uri}`);throw n.setError(hi.malformed_pairing_uri),new Error(f)}const o=t0(i?.uri);if(!((s=o?.relay)!=null&&s.protocol)){const{message:f}=se("MISSING_OR_INVALID","pair() uri#relay-protocol");throw n.setError(hi.malformed_pairing_uri),new Error(f)}if(!(o!=null&&o.symKey)){const{message:f}=se("MISSING_OR_INVALID","pair() uri#symKey");throw n.setError(hi.malformed_pairing_uri),new Error(f)}if(o!=null&&o.expiryTimestamp&&ie.toMiliseconds(o?.expiryTimestamp)<Date.now()){n.setError(hi.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}=Cu(e.target);t&&this.pairings.keys.includes(t)&&(await this.deletePairing(t,!0),this.events.emit(nn.expire,{topic:t}))})}}class o8 extends Ep{constructor(e,t){super(e,t),this.core=e,this.logger=t,this.records=new Map,this.events=new Ut.exports.EventEmitter,this.name=tw,this.version=rw,this.cached=[],this.initialized=!1,this.storagePrefix=Yr,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(Pr.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(Pr.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(Pr.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(Pr.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(Pr.created,e=>{const t=Pr.created;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,record:e})}),this.events.on(Pr.updated,e=>{const t=Pr.updated;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,record:e})}),this.events.on(Pr.deleted,e=>{const t=Pr.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(Pr.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 f8 extends Rp{constructor(e,t){super(e,t),this.core=e,this.logger=t,this.expirations=new Map,this.events=new Ut.exports.EventEmitter,this.name=iw,this.version=nw,this.cached=[],this.initialized=!1,this.storagePrefix=Yr,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 cm(e);if(typeof e=="number")return hm(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 c8 extends Np{constructor(e,t,i){super(e,t,i),this.core=e,this.logger=t,this.store=i,this.name=sw,this.verifyUrlV3=ow,this.storagePrefix=Yr,this.version=A0,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(P),M("attestation aborted")};this.abortController.signal.addEventListener("abort",D);const P=h.createElement("iframe");P.src=u,P.style.display="none",P.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(P),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(P),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 fw.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=Xm(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 h8 extends Pp{constructor(e,t){super(e,t),this.projectId=e,this.logger=t,this.context=cw,this.registerDeviceToken=async i=>{const{clientId:n,token:s,notificationType:o,enableEncrypted:f=!1}=i,u=`${hw}/${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 u8=Object.defineProperty,nd=Object.getOwnPropertySymbols,d8=Object.prototype.hasOwnProperty,l8=Object.prototype.propertyIsEnumerable,sd=(r,e,t)=>e in r?u8(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,ws=(r,e)=>{for(var t in e||(e={}))d8.call(e,t)&&sd(r,t,e[t]);if(nd)for(var t of nd(e))l8.call(e,t)&&sd(r,t,e[t]);return r};class p8 extends Cp{constructor(e,t,i=!0){super(e,t,i),this.core=e,this.logger=t,this.context=dw,this.storagePrefix=Yr,this.storageVersion=uw,this.events=new Map,this.shouldPersist=!1,this.init=async()=>{if(!Zo())try{const n={eventId:Fu(),timestamp:Date.now(),domain:this.getAppDomain(),props:{event:"INIT",type:"",properties:{client_id:await this.core.crypto.getClientId(),user_agent:Ou(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=Fu(),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)>lw&&(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(`${pw}?projectId=${this.core.projectId}&st=events_sdk&sv=js-${bf}${s}`,{method:"POST",body:JSON.stringify(n)})},this.getAppDomain=()=>Du().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 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,fd=(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 _f extends Ap{constructor(e){var t;super(e),this.protocol=x0,this.version=A0,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||I0,this.customStoragePrefix=e!=null&&e.customStoragePrefix?`:${e.customStoragePrefix}`:"";const i=to({level:typeof e?.logger=="string"&&e.logger?e.logger:F6.logger,name:Ra}),{logger:n,chunkLoggerController:s}=xp({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 q5(this,this.logger,e?.keychain),this.history=new o8(this,this.logger),this.expirer=new f8(this,this.logger),this.storage=e!=null&&e.storage?e.storage:new Wl(fd(fd({},B6),e?.storageOptions)),this.relayer=new r8({core:this,logger:this.logger,relayUrl:this.relayUrl,projectId:this.projectId}),this.pairing=new a8(this,this.logger),this.verify=new c8(this,this.logger,this.storage),this.echoClient=new h8(this.projectId||"",this.logger),this.linkModeSupportedApps=[],this.eventClient=new p8(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(J6,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(D0,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(D0)||[],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,cd="wc",hd=2,ud="client",Af=`${cd}@${hd}:${ud}:`,Ef={name:ud,logger:"error",controller:!1,relayUrl:"wss://relay.walletconnect.org"},dd="WALLETCONNECT_DEEPLINK_CHOICE",m8="proposal",y8="Proposal expired",w8="session",Fn=ie.SEVEN_DAYS,_8="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},Xr={idle:"IDLE",active:"ACTIVE"},x8="request",A8=["wc_sessionPropose","wc_sessionRequest","wc_authRequest","wc_sessionAuthenticate"],E8="wc",S8="auth",M8="authKeys",I8="pairingTopics",D8="requests",Pa=`${E8}@${1.5}:${S8}:`,Ca=`${Pa}:PUB_KEY`;var O8=Object.defineProperty,R8=Object.defineProperties,N8=Object.getOwnPropertyDescriptors,ld=Object.getOwnPropertySymbols,P8=Object.prototype.hasOwnProperty,C8=Object.prototype.propertyIsEnumerable,pd=(r,e,t)=>e in r?O8(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,gt=(r,e)=>{for(var t in e||(e={}))P8.call(e,t)&&pd(r,t,e[t]);if(ld)for(var t of ld(e))C8.call(e,t)&&pd(r,t,e[t]);return r},Tr=(r,e)=>R8(r,N8(e));class T8 extends Fp{constructor(e){super(e),this.name=_8,this.events=new Ut.exports,this.initialized=!1,this.requestQueue={state:Xr.idle,queue:[]},this.sessionRequestQueue={state:Xr.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=Tr(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),P=gt({requiredNamespaces:s,optionalNamespaces:o,relays:u??[{protocol:M0}],proposer:{publicKey:I,metadata:this.client.metadata},expiryTimestamp:D,pairingTopic:h},f&&{sessionProperties:f}),{reject:k,resolve:K,done:C}=Xi(M,y8);this.events.once(Ye("session_connect"),async({error:F,session:U})=>{if(F)k(F);else if(U){U.self.publicKey=I;const z=Tr(gt({},U),{pairingTopic:P.pairingTopic,requiredNamespaces:P.requiredNamespaces,optionalNamespaces:P.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:P,throwOnFailedPublish:!0});return await this.setProposal(j,gt({id:j},P)),{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:[Cr.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:P,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:Cr.session_approve_started,properties:{topic:M,trace:[Cr.session_approve_started,Cr.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(Cr.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(Cr.subscribe_session_topic_success);const _=Tr(gt({},U),{topic:F,requiredNamespaces:P,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(Cr.store_session);try{K.addTrace(Cr.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(Cr.session_settle_publish_success),K.addTrace(Cr.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(Cr.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=ci(),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=ci(),{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=ci(),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:P})=>{D?I(D):y(P)});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:Tr(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:Tr(gt({},n),{expiryTimestamp:_t(o)}),chainId:i},expiry:o,throwOnFailedPublish:!0}).catch(P=>I(P)),this.client.events.emit("session_request_sent",{topic:s,request:n,chainId:i,id:u}),D()}),new Promise(async D=>{var P;if(!((P=f.sessionConfig)!=null&&P.disableDeepLink)){const k=await pm(this.client.core.storage,dd);await dm({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);Jr(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=ci(),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=ci();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=>gy(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:P=[],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}`),P.length>0){const{namespace:E}=ya(f[0]);let x=Bm(E,"request",P);xa(K)&&(x=qm(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",...P])],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:N,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),N({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 Uu({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=ku(m),X=Ku(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:i0([...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})),N({auths:v,session:T})},c=ci(),b=ci();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:Tr(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:si,receiverPublicKey:u,senderPublicKey:h},I=[],M=[];for(const k of n){if(!await Uu({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=ku(C),z=Ku(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 P;if(I?.length>0){P={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:i0([...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,P),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:P}},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:si,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 $u(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(dd).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=Xr.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=Xr.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(A8.includes(n)){const k=ai(JSON.stringify(y)),K=ai(I);D=await this.client.core.verify.register({id:K,decryptedId:k})}const P=Rt[n].req;if(P.attestation=D,o&&(P.ttl=o),f&&(P.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=Tr(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,Tr(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=Tr(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,Tr(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===Xr.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=Xr.active;const t=this.requestQueue.queue.shift();if(t)try{await this.processRequest(t)}catch(i){this.client.logger.warn(i)}}this.requestQueue.state=Xr.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(hi.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:ai(JSON.stringify(n)),encryptedId:o,metadata:y.proposer.metadata});h?.addTrace(Qr.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(Jr(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=Tr(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;Jr(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`);Jr(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`);Jr(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(()=>{Jr(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:ai(JSON.stringify(rn("wc_sessionRequest",I,y))),encryptedId:h,metadata:M.peer.metadata,transportType:g}),P={id:y,topic:o,params:I,verifyContext:D};await this.setPendingSessionRequest(P),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(P):(this.addSessionRequestToSessionRequestQueue(P),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`);Jr(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}),Jr(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:ai(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:si,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=Xr.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===Xr.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=Xr.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),!Iy(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=My(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=f0(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),!Oy(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(!a0(i)){const{message:h}=se("MISSING_OR_INVALID","onSessionSettleRequest() relay protocol should be a string");throw new Error(h)}const f=wy(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=f0(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(!o0(f,s)){const{message:u}=se("MISSING_OR_INVALID",`request() chainId: ${s}`);throw new Error(u)}if(!Ry(n)){const{message:u}=se("MISSING_OR_INVALID",`request() ${JSON.stringify(n)}`);throw new Error(u)}if(!Cy(f,s,n.method)){const{message:u}=se("MISSING_OR_INVALID",`request() method: ${n.method}`);throw new Error(u)}if(o&&!Ly(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(!Ny(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(!o0(o,s)){const{message:f}=se("MISSING_OR_INVALID",`emit() chainId: ${s}`);throw new Error(f)}if(!Py(n)){const{message:f}=se("MISSING_OR_INVALID",`emit() event: ${JSON.stringify(n)}`);throw new Error(f)}if(!Ty(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=Tu(t,"topic")||"",n=decodeURIComponent(Tu(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()||Ri()&&(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:ai(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}=Cu(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(!Dy(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 F8 extends on{constructor(e,t){super(e,t,m8,Af),this.core=e,this.logger=t}}class gd extends on{constructor(e,t){super(e,t,w8,Af),this.core=e,this.logger=t}}class B8 extends on{constructor(e,t){super(e,t,x8,Af,i=>i.id),this.core=e,this.logger=t}}class L8 extends on{constructor(e,t){super(e,t,M8,Pa,()=>Ca),this.core=e,this.logger=t}}class q8 extends on{constructor(e,t){super(e,t,I8,Pa),this.core=e,this.logger=t}}class U8 extends on{constructor(e,t){super(e,t,D8,Pa,i=>i.id),this.core=e,this.logger=t}}class $8{constructor(e,t){this.core=e,this.logger=t,this.authKeys=new L8(this.core,this.logger),this.pairingTopics=new q8(this.core,this.logger),this.requests=new U8(this.core,this.logger)}async init(){await this.authKeys.init(),await this.pairingTopics.init(),await this.requests.init()}}class Mf extends Tp{constructor(e){super(e),this.protocol=cd,this.version=hd,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||Du(),this.signConfig=e?.signConfig;const t=typeof e?.logger<"u"&&typeof e?.logger!="string"?e.logger:Zr(to({level:e?.logger||Ef.logger}));this.core=e?.core||new xf(e),this.logger=Vt(t,this.name),this.session=new gd(this.core,this.logger),this.proposal=new F8(this.core,this.logger),this.pendingRequest=new B8(this.core,this.logger),this.engine=new T8(this),this.auth=new $8(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 z8=gd,k8=Mf;class K8 extends Ut.exports{constructor(){super()}}class bd{constructor(e){this.opts=e}}class vd{constructor(e){this.client=e}}class md{constructor(e){this.engine=e}}class j8 extends md{constructor(e){super(e),this.engine=e,this.canFulfil=async t=>{if(console.log("canFulfil",t),!this.canFulfilHandler)throw new Error(`canFulfilHandler not found for environment: '${Ni()}'`);const{transaction:i}=t,n=await this.canFulfilHandler({transaction:i,projectId:this.projectId});switch(console.log("canFulfil 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.routes,o=n.data.routesDetails;return{status:Li.available,data:{routes:{fulfilmentId:s.orchestrationId,checkIn:s.checkIn,transactions:s.transactions,funding:s.metadata.fundingFrom,initialTransaction:s.initialTransaction},routesDetails:{totalFees:o.localTotal}}};default:throw new Error(`Invalid canFulfil status: ${JSON.stringify(n)}`)}},this.fulfilmentStatus=async t=>{if(!this.fulfilmentStatusHandler)throw new Error(`fulfilmentStatusHandler not found for environment: '${Ni()}'`);const{fulfilmentId:i}=t;console.log("fulfilmentStatus",t);const n=await this.fulfilmentStatusHandler({orchestrationId:i,projectId:this.projectId});if(n.status===$f.error)throw new Error(n.reason);return console.log("fulfilmentStatus result",n),n},this.loadHandlers=()=>{switch(Ni()){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.canFulfilHandler=t.checkRoute,this.fulfilmentStatusHandler=t.checkStatus},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.canFulfilHandler=t.checkRoute,this.fulfilmentStatusHandler=t.checkStatus},this.loadHandlers(),this.projectId=this.engine.client.core.projectId||""}}var H8=Object.defineProperty,V8=Object.defineProperties,G8=Object.getOwnPropertyDescriptors,yd=Object.getOwnPropertySymbols,W8=Object.prototype.hasOwnProperty,J8=Object.prototype.propertyIsEnumerable,wd=(r,e,t)=>e in r?H8(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Y8=(r,e)=>{for(var t in e||(e={}))W8.call(e,t)&&wd(r,t,e[t]);if(yd)for(var t of yd(e))J8.call(e,t)&&wd(r,t,e[t]);return r},Q8=(r,e)=>V8(r,G8(e));class X8 extends vd{constructor(e){super(e),this.init=async()=>{this.signClient=await k8.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(Q8(Y8({},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.canFulfil=async t=>await this.chainAbstraction.canFulfil(t),this.fulfilmentStatus=async t=>await this.chainAbstraction.fulfilmentStatus(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 j8(this)}}const Z8={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 z8(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}},_d=class extends bd{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.canFulfil=async e=>{try{return await this.engine.canFulfil(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.metadata=r.metadata,this.name=r.name||$a,this.signConfig=r.signConfig,this.core=r.core,this.logger=this.core.logger,this.engine=new X8(this)}static async init(r){const e=new _d(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 If=_d;If.notifications=Z8;const e4=If;wt.CAN_FULFIL_STATUS=Li,wt.CLIENT_CONTEXT=$a,wt.CLIENT_STORAGE_OPTIONS=$d,wt.CLIENT_STORAGE_PREFIX=Ud,wt.FULFILMENT_STATUS=$f,wt.IChainAbstraction=md,wt.IWalletKit=bd,wt.IWalletKitEngine=vd,wt.IWalletKitEvents=K8,wt.PROTOCOL=Uf,wt.PROTOCOL_VERSION=qd,wt.REQUEST_CONTEXT=zd,wt.WalletKit=e4,wt.default=If,Object.defineProperty(wt,"__esModule",{value:!0})});
44
44
  //# sourceMappingURL=index.umd.js.map