@reown/walletkit 1.1.2-canary.0 → 1.2.0

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 @@ ${t.length}`,r=new TextEncoder().encode(e+t);return"0x"+Buffer.from(N6(r)).toStr
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 ic=function(t,e){return ic=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var n in i)i.hasOwnProperty(n)&&(r[n]=i[n])},ic(t,e)};function t5(t,e){ic(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}var nc=function(){return nc=Object.assign||function(e){for(var r,i=1,n=arguments.length;i<n;i++){r=arguments[i];for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(e[s]=r[s])}return e},nc.apply(this,arguments)};function r5(t,e){var r={};for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&e.indexOf(i)<0&&(r[i]=t[i]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var n=0,i=Object.getOwnPropertySymbols(t);n<i.length;n++)e.indexOf(i[n])<0&&Object.prototype.propertyIsEnumerable.call(t,i[n])&&(r[i[n]]=t[i[n]]);return r}function i5(t,e,r,i){var n=arguments.length,s=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,r):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(t,e,r,i);else for(var a=t.length-1;a>=0;a--)(o=t[a])&&(s=(n<3?o(s):n>3?o(e,r,s):o(e,r))||s);return n>3&&s&&Object.defineProperty(e,r,s),s}function n5(t,e){return function(r,i){e(r,i,t)}}function s5(t,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(t,e)}function o5(t,e,r,i){function n(s){return s instanceof r?s:new r(function(o){o(s)})}return new(r||(r=Promise))(function(s,o){function a(l){try{h(i.next(l))}catch(y){o(y)}}function c(l){try{h(i.throw(l))}catch(y){o(y)}}function h(l){l.done?s(l.value):n(l.value).then(a,c)}h((i=i.apply(t,e||[])).next())})}function a5(t,e){var r={label:0,sent:function(){if(s[0]&1)throw s[1];return s[1]},trys:[],ops:[]},i,n,s,o;return o={next:a(0),throw:a(1),return:a(2)},typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function a(h){return function(l){return c([h,l])}}function c(h){if(i)throw new TypeError("Generator is already executing.");for(;r;)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 r.label++,{value:h[1],done:!1};case 5:r.label++,n=h[1],h=[0];continue;case 7:h=r.ops.pop(),r.trys.pop();continue;default:if(s=r.trys,!(s=s.length>0&&s[s.length-1])&&(h[0]===6||h[0]===2)){r=0;continue}if(h[0]===3&&(!s||h[1]>s[0]&&h[1]<s[3])){r.label=h[1];break}if(h[0]===6&&r.label<s[1]){r.label=s[1],s=h;break}if(s&&r.label<s[2]){r.label=s[2],r.ops.push(h);break}s[2]&&r.ops.pop(),r.trys.pop();continue}h=e.call(t,r)}catch(l){h=[6,l],n=0}finally{i=s=0}if(h[0]&5)throw h[1];return{value:h[0]?h[1]:void 0,done:!0}}}function f5(t,e,r,i){i===void 0&&(i=r),t[i]=e[r]}function c5(t,e){for(var r in t)r!=="default"&&!e.hasOwnProperty(r)&&(e[r]=t[r])}function sc(t){var e=typeof Symbol=="function"&&Symbol.iterator,r=e&&t[e],i=0;if(r)return r.call(t);if(t&&typeof t.length=="number")return{next:function(){return t&&i>=t.length&&(t=void 0),{value:t&&t[i++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function Zl(t,e){var r=typeof Symbol=="function"&&t[Symbol.iterator];if(!r)return t;var i=r.call(t),n,s=[],o;try{for(;(e===void 0||e-- >0)&&!(n=i.next()).done;)s.push(n.value)}catch(a){o={error:a}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(o)throw o.error}}return s}function h5(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(Zl(arguments[e]));return t}function u5(){for(var t=0,e=0,r=arguments.length;e<r;e++)t+=arguments[e].length;for(var i=Array(t),n=0,e=0;e<r;e++)for(var s=arguments[e],o=0,a=s.length;o<a;o++,n++)i[n]=s[o];return i}function Ls(t){return this instanceof Ls?(this.v=t,this):new Ls(t)}function d5(t,e,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var i=r.apply(t,e||[]),n,s=[];return n={},o("next"),o("throw"),o("return"),n[Symbol.asyncIterator]=function(){return this},n;function o(M){i[M]&&(n[M]=function(I){return new Promise(function(S,D){s.push([M,I,S,D])>1||a(M,I)})})}function a(M,I){try{c(i[M](I))}catch(S){y(s[0][3],S)}}function c(M){M.value instanceof Ls?Promise.resolve(M.value.v).then(h,l):y(s[0][2],M)}function h(M){a("next",M)}function l(M){a("throw",M)}function y(M,I){M(I),s.shift(),s.length&&a(s[0][0],s[0][1])}}function l5(t){var e,r;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]=t[n]?function(o){return(r=!r)?{value:Ls(t[n](o)),done:n==="return"}:s?s(o):o}:s}}function p5(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=t[Symbol.asyncIterator],r;return e?e.call(t):(t=typeof sc=="function"?sc(t):t[Symbol.iterator](),r={},i("next"),i("throw"),i("return"),r[Symbol.asyncIterator]=function(){return this},r);function i(s){r[s]=t[s]&&function(o){return new Promise(function(a,c){o=t[s](o),n(a,c,o.done,o.value)})}}function n(s,o,a,c){Promise.resolve(c).then(function(h){s({value:h,done:a})},o)}}function g5(t,e){return Object.defineProperty?Object.defineProperty(t,"raw",{value:e}):t.raw=e,t}function b5(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)Object.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e}function v5(t){return t&&t.__esModule?t:{default:t}}function y5(t,e){if(!e.has(t))throw new TypeError("attempted to get private field on non-instance");return e.get(t)}function m5(t,e,r){if(!e.has(t))throw new TypeError("attempted to set private field on non-instance");return e.set(t,r),r}var w5=Object.freeze({__proto__:null,__extends:t5,get __assign(){return nc},__rest:r5,__decorate:i5,__param:n5,__metadata:s5,__awaiter:o5,__generator:a5,__createBinding:f5,__exportStar:c5,__values:sc,__read:Zl,__spread:h5,__spreadArrays:u5,__await:Ls,__asyncGenerator:d5,__asyncDelegator:l5,__asyncValues:p5,__makeTemplateObject:g5,__importStar:b5,__importDefault:v5,__classPrivateFieldGet:y5,__classPrivateFieldSet:m5}),_5=ha(w5),yi={},Ql;function x5(){if(Ql)return yi;Ql=1,Object.defineProperty(yi,"__esModule",{value:!0}),yi.isBrowserCryptoAvailable=yi.getSubtleCrypto=yi.getBrowerCrypto=void 0;function t(){return Nt?.crypto||Nt?.msCrypto||{}}yi.getBrowerCrypto=t;function e(){const i=t();return i.subtle||i.webkitSubtle}yi.getSubtleCrypto=e;function r(){return!!t()&&!!e()}return yi.isBrowserCryptoAvailable=r,yi}var mi={},e0;function E5(){if(e0)return mi;e0=1,Object.defineProperty(mi,"__esModule",{value:!0}),mi.isBrowser=mi.isNode=mi.isReactNative=void 0;function t(){return typeof document>"u"&&typeof navigator<"u"&&navigator.product==="ReactNative"}mi.isReactNative=t;function e(){return typeof process<"u"&&typeof process.versions<"u"&&typeof process.versions.node<"u"}mi.isNode=e;function r(){return!t()&&!e()}return mi.isBrowser=r,mi}(function(t){Object.defineProperty(t,"__esModule",{value:!0});const e=_5;e.__exportStar(x5(),t),e.__exportStar(E5(),t)})(Xl);function wi(t=3){const e=Date.now()*Math.pow(10,t),r=Math.floor(Math.random()*Math.pow(10,t));return e+r}function bn(t=6){return BigInt(wi(t))}function vn(t,e,r){return{id:r||wi(),jsonrpc:"2.0",method:t,params:e}}function oc(t,e){return{id:t,jsonrpc:"2.0",result:e}}function ac(t,e,r){return{id:t,jsonrpc:"2.0",error:S5(e,r)}}function S5(t,e){return typeof t>"u"?Yl(Gl):(typeof t=="string"&&(t=Object.assign(Object.assign({},Yl(rc)),{message:t})),typeof e<"u"&&(t.data=e),Z8(t.code)&&(t=Q8(t.code)),t)}class M5{}class I5 extends M5{constructor(){super()}}class A5 extends I5{constructor(e){super()}}const D5="^wss?:";function O5(t){const e=t.match(new RegExp(/^\w+:/,"gi"));if(!(!e||!e.length))return e[0]}function P5(t,e){const r=O5(t);return typeof r>"u"?!1:new RegExp(e).test(r)}function t0(t){return P5(t,D5)}function R5(t){return new RegExp("wss?://localhost(:d{2,5})?").test(t)}function r0(t){return typeof t=="object"&&"id"in t&&"jsonrpc"in t&&t.jsonrpc==="2.0"}function fc(t){return r0(t)&&"method"in t}function ea(t){return r0(t)&&(ii(t)||Ar(t))}function ii(t){return"result"in t}function Ar(t){return"error"in t}class $5 extends A5{constructor(e){super(e),this.events=new jt.exports.EventEmitter,this.hasRegisteredEventListeners=!1,this.connection=this.setConnection(e),this.connection.connected&&this.registerEventListeners()}async connect(e=this.connection){await this.open(e)}async disconnect(){await this.close()}on(e,r){this.events.on(e,r)}once(e,r){this.events.once(e,r)}off(e,r){this.events.off(e,r)}removeListener(e,r){this.events.removeListener(e,r)}async request(e,r){return this.requestStrict(vn(e.method,e.params||[],e.id||bn().toString()),r)}async requestStrict(e,r){return new Promise(async(i,n)=>{if(!this.connection.connected)try{await this.open()}catch(s){n(s)}this.events.on(`${e.id}`,s=>{Ar(s)?n(s.error):i(s.result)});try{await this.connection.send(e,r)}catch(s){n(s)}})}setConnection(e=this.connection){return e}onPayload(e){this.events.emit("payload",e),ea(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 N5=()=>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"),T5=()=>typeof WebSocket<"u"||typeof global<"u"&&typeof global.WebSocket<"u"||typeof window<"u"&&typeof window.WebSocket<"u"||typeof self<"u"&&typeof self.WebSocket<"u",i0=t=>t.split("?")[0],n0=10,F5=N5();class C5{constructor(e){if(this.url=e,this.events=new jt.exports.EventEmitter,this.registering=!1,!t0(e))throw new Error(`Provided URL is not compatible with WebSocket connection: ${e}`);this.url=e}get connected(){return typeof this.socket<"u"}get connecting(){return this.registering}on(e,r){this.events.on(e,r)}once(e,r){this.events.once(e,r)}off(e,r){this.events.off(e,r)}removeListener(e,r){this.events.removeListener(e,r)}async open(e=this.url){await this.register(e)}async close(){return new Promise((e,r)=>{if(typeof this.socket>"u"){r(new Error("Connection already closed"));return}this.socket.onclose=i=>{this.onClose(i),e()},this.socket.close()})}async send(e){typeof this.socket>"u"&&(this.socket=await this.register());try{this.socket.send(tn(e))}catch(r){this.onError(e.id,r)}}register(e=this.url){if(!t0(e))throw new Error(`Provided URL is not compatible with WebSocket connection: ${e}`);if(this.registering){const r=this.events.getMaxListeners();return(this.events.listenerCount("register_error")>=r||this.events.listenerCount("open")>=r)&&this.events.setMaxListeners(r+1),new Promise((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((r,i)=>{const n=Xl.isReactNative()?void 0:{rejectUnauthorized:!R5(e)},s=new F5(e,[],n);T5()?s.onerror=o=>{const a=o;i(this.emitError(a.error))}:s.on("error",o=>{i(this.emitError(o))}),s.onopen=()=>{this.onOpen(s),r(s)}})}onOpen(e){e.onmessage=r=>this.onPayload(r),e.onclose=r=>this.onClose(r),this.socket=e,this.registering=!1,this.events.emit("open")}onClose(e){this.socket=void 0,this.registering=!1,this.events.emit("close",e)}onPayload(e){if(typeof e.data>"u")return;const r=typeof e.data=="string"?An(e.data):e.data;this.events.emit("payload",r)}onError(e,r){const i=this.parseError(r),n=i.message||i.toString(),s=ac(e,n);this.events.emit("payload",s)}parseError(e,r=this.url){return e5(e,i0(r),"WS")}resetMaxListeners(){this.events.getMaxListeners()>n0&&this.events.setMaxListeners(n0)}emitError(e){const r=this.parseError(new Error(e?.message||`WebSocket connection failed for host: ${i0(this.url)}`));return this.events.emit("register_error",r),r}}var cc={exports:{}};(function(t,e){var r=200,i="__lodash_hash_undefined__",n=1,s=2,o=9007199254740991,a="[object Arguments]",c="[object Array]",h="[object AsyncFunction]",l="[object Boolean]",y="[object Date]",M="[object Error]",I="[object Function]",S="[object GeneratorFunction]",D="[object Map]",R="[object Number]",$="[object Null]",T="[object Object]",C="[object Promise]",L="[object Proxy]",k="[object RegExp]",j="[object Set]",G="[object String]",K="[object Symbol]",V="[object Undefined]",re="[object WeakMap]",O="[object ArrayBuffer]",g="[object DataView]",p="[object Float32Array]",f="[object Float64Array]",u="[object Int8Array]",b="[object Int16Array]",_="[object Int32Array]",E="[object Uint8Array]",w="[object Uint8ClampedArray]",d="[object Uint16Array]",m="[object Uint32Array]",v=/[\\^$.*+?()[\]{}|]/g,A=/^\[object .+?Constructor\]$/,U=/^(?:0|[1-9]\d*)$/,x={};x[p]=x[f]=x[u]=x[b]=x[_]=x[E]=x[w]=x[d]=x[m]=!0,x[a]=x[c]=x[O]=x[l]=x[g]=x[y]=x[M]=x[I]=x[D]=x[R]=x[T]=x[k]=x[j]=x[G]=x[re]=!1;var N=typeof Nt=="object"&&Nt&&Nt.Object===Object&&Nt,B=typeof self=="object"&&self&&self.Object===Object&&self,q=N||B||Function("return this")(),z=e&&!e.nodeType&&e,J=z&&!0&&t&&!t.nodeType&&t,X=J&&J.exports===z,W=X&&N.process,ne=function(){try{return W&&W.binding&&W.binding("util")}catch{}}(),Q=ne&&ne.isTypedArray;function ee(P,F){for(var H=-1,te=P==null?0:P.length,ut=0,we=[];++H<te;){var bt=P[H];F(bt,H,P)&&(we[ut++]=bt)}return we}function qe(P,F){for(var H=-1,te=F.length,ut=P.length;++H<te;)P[ut+H]=F[H];return P}function Ue(P,F){for(var H=-1,te=P==null?0:P.length;++H<te;)if(F(P[H],H,P))return!0;return!1}function he(P,F){for(var H=-1,te=Array(P);++H<P;)te[H]=F(H);return te}function Pe(P){return function(F){return P(F)}}function Re(P,F){return P.has(F)}function ae(P,F){return P?.[F]}function $e(P){var F=-1,H=Array(P.size);return P.forEach(function(te,ut){H[++F]=[ut,te]}),H}function Ne(P,F){return function(H){return P(F(H))}}function ce(P){var F=-1,H=Array(P.size);return P.forEach(function(te){H[++F]=te}),H}var Te=Array.prototype,Fe=Function.prototype,oe=Object.prototype,De=q["__core-js_shared__"],Ce=Fe.toString,ie=oe.hasOwnProperty,Ve=function(){var P=/[^.]+$/.exec(De&&De.keys&&De.keys.IE_PROTO||"");return P?"Symbol(src)_1."+P:""}(),He=oe.toString,pe=RegExp("^"+Ce.call(ie).replace(v,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),We=X?q.Buffer:void 0,Be=q.Symbol,de=q.Uint8Array,Ge=oe.propertyIsEnumerable,Xe=Te.splice,se=Be?Be.toStringTag:void 0,Je=Object.getOwnPropertySymbols,Ze=We?We.isBuffer:void 0,ge=Ne(Object.keys,Object),ze=rs(q,"DataView"),Oe=rs(q,"Map"),ue=rs(q,"Promise"),ke=rs(q,"Set"),je=rs(q,"WeakMap"),fe=rs(Object,"create"),Qe=xn(ze),et=xn(Oe),be=xn(ue),tt=xn(ke),rt=xn(je),le=Be?Be.prototype:void 0,Ke=le?le.valueOf:void 0;function Ae(P){var F=-1,H=P==null?0:P.length;for(this.clear();++F<H;){var te=P[F];this.set(te[0],te[1])}}function ve(){this.__data__=fe?fe(null):{},this.size=0}function it(P){var F=this.has(P)&&delete this.__data__[P];return this.size-=F?1:0,F}function nt(P){var F=this.__data__;if(fe){var H=F[P];return H===i?void 0:H}return ie.call(F,P)?F[P]:void 0}function ye(P){var F=this.__data__;return fe?F[P]!==void 0:ie.call(F,P)}function st(P,F){var H=this.__data__;return this.size+=this.has(P)?0:1,H[P]=fe&&F===void 0?i:F,this}Ae.prototype.clear=ve,Ae.prototype.delete=it,Ae.prototype.get=nt,Ae.prototype.has=ye,Ae.prototype.set=st;function xe(P){var F=-1,H=P==null?0:P.length;for(this.clear();++F<H;){var te=P[F];this.set(te[0],te[1])}}function Ye(){this.__data__=[],this.size=0}function ar(P){var F=this.__data__,H=sa(F,P);if(H<0)return!1;var te=F.length-1;return H==te?F.pop():Xe.call(F,H,1),--this.size,!0}function fr(P){var F=this.__data__,H=sa(F,P);return H<0?void 0:F[H][1]}function cr(P){return sa(this.__data__,P)>-1}function hr(P,F){var H=this.__data__,te=sa(H,P);return te<0?(++this.size,H.push([P,F])):H[te][1]=F,this}xe.prototype.clear=Ye,xe.prototype.delete=ar,xe.prototype.get=fr,xe.prototype.has=cr,xe.prototype.set=hr;function wt(P){var F=-1,H=P==null?0:P.length;for(this.clear();++F<H;){var te=P[F];this.set(te[0],te[1])}}function xi(){this.size=0,this.__data__={hash:new Ae,map:new(Oe||xe),string:new Ae}}function Ei(P){var F=oa(this,P).delete(P);return this.size-=F?1:0,F}function Si(P){return oa(this,P).get(P)}function Mi(P){return oa(this,P).has(P)}function Ii(P,F){var H=oa(this,P),te=H.size;return H.set(P,F),this.size+=H.size==te?0:1,this}wt.prototype.clear=xi,wt.prototype.delete=Ei,wt.prototype.get=Si,wt.prototype.has=Mi,wt.prototype.set=Ii;function Pr(P){var F=-1,H=P==null?0:P.length;for(this.__data__=new wt;++F<H;)this.add(P[F])}function Ai(P){return this.__data__.set(P,i),this}function Di(P){return this.__data__.has(P)}Pr.prototype.add=Pr.prototype.push=Ai,Pr.prototype.has=Di;function Wt(P){var F=this.__data__=new xe(P);this.size=F.size}function Oi(){this.__data__=new xe,this.size=0}function Pi(P){var F=this.__data__,H=F.delete(P);return this.size=F.size,H}function Ri(P){return this.__data__.get(P)}function Vs(P){return this.__data__.has(P)}function Hs(P,F){var H=this.__data__;if(H instanceof xe){var te=H.__data__;if(!Oe||te.length<r-1)return te.push([P,F]),this.size=++H.size,this;H=this.__data__=new wt(te)}return H.set(P,F),this.size=H.size,this}Wt.prototype.clear=Oi,Wt.prototype.delete=Pi,Wt.prototype.get=Ri,Wt.prototype.has=Vs,Wt.prototype.set=Hs;function ix(P,F){var H=aa(P),te=!H&&yx(P),ut=!H&&!te&&xc(P),we=!H&&!te&&!ut&&dp(P),bt=H||te||ut||we,$t=bt?he(P.length,String):[],zt=$t.length;for(var dt in P)(F||ie.call(P,dt))&&!(bt&&(dt=="length"||ut&&(dt=="offset"||dt=="parent")||we&&(dt=="buffer"||dt=="byteLength"||dt=="byteOffset")||lx(dt,zt)))&&$t.push(dt);return $t}function sa(P,F){for(var H=P.length;H--;)if(fp(P[H][0],F))return H;return-1}function nx(P,F,H){var te=F(P);return aa(P)?te:qe(te,H(P))}function Ws(P){return P==null?P===void 0?V:$:se&&se in Object(P)?ux(P):vx(P)}function np(P){return Gs(P)&&Ws(P)==a}function sp(P,F,H,te,ut){return P===F?!0:P==null||F==null||!Gs(P)&&!Gs(F)?P!==P&&F!==F:sx(P,F,H,te,sp,ut)}function sx(P,F,H,te,ut,we){var bt=aa(P),$t=aa(F),zt=bt?c:Ji(P),dt=$t?c:Ji(F);zt=zt==a?T:zt,dt=dt==a?T:dt;var yr=zt==T,jr=dt==T,Gt=zt==dt;if(Gt&&xc(P)){if(!xc(F))return!1;bt=!0,yr=!1}if(Gt&&!yr)return we||(we=new Wt),bt||dp(P)?op(P,F,H,te,ut,we):cx(P,F,zt,H,te,ut,we);if(!(H&n)){var Rr=yr&&ie.call(P,"__wrapped__"),$r=jr&&ie.call(F,"__wrapped__");if(Rr||$r){var Yi=Rr?P.value():P,$i=$r?F.value():F;return we||(we=new Wt),ut(Yi,$i,H,te,we)}}return Gt?(we||(we=new Wt),hx(P,F,H,te,ut,we)):!1}function ox(P){if(!up(P)||gx(P))return!1;var F=cp(P)?pe:A;return F.test(xn(P))}function ax(P){return Gs(P)&&hp(P.length)&&!!x[Ws(P)]}function fx(P){if(!bx(P))return ge(P);var F=[];for(var H in Object(P))ie.call(P,H)&&H!="constructor"&&F.push(H);return F}function op(P,F,H,te,ut,we){var bt=H&n,$t=P.length,zt=F.length;if($t!=zt&&!(bt&&zt>$t))return!1;var dt=we.get(P);if(dt&&we.get(F))return dt==F;var yr=-1,jr=!0,Gt=H&s?new Pr:void 0;for(we.set(P,F),we.set(F,P);++yr<$t;){var Rr=P[yr],$r=F[yr];if(te)var Yi=bt?te($r,Rr,yr,F,P,we):te(Rr,$r,yr,P,F,we);if(Yi!==void 0){if(Yi)continue;jr=!1;break}if(Gt){if(!Ue(F,function($i,En){if(!Re(Gt,En)&&(Rr===$i||ut(Rr,$i,H,te,we)))return Gt.push(En)})){jr=!1;break}}else if(!(Rr===$r||ut(Rr,$r,H,te,we))){jr=!1;break}}return we.delete(P),we.delete(F),jr}function cx(P,F,H,te,ut,we,bt){switch(H){case g:if(P.byteLength!=F.byteLength||P.byteOffset!=F.byteOffset)return!1;P=P.buffer,F=F.buffer;case O:return!(P.byteLength!=F.byteLength||!we(new de(P),new de(F)));case l:case y:case R:return fp(+P,+F);case M:return P.name==F.name&&P.message==F.message;case k:case G:return P==F+"";case D:var $t=$e;case j:var zt=te&n;if($t||($t=ce),P.size!=F.size&&!zt)return!1;var dt=bt.get(P);if(dt)return dt==F;te|=s,bt.set(P,F);var yr=op($t(P),$t(F),te,ut,we,bt);return bt.delete(P),yr;case K:if(Ke)return Ke.call(P)==Ke.call(F)}return!1}function hx(P,F,H,te,ut,we){var bt=H&n,$t=ap(P),zt=$t.length,dt=ap(F),yr=dt.length;if(zt!=yr&&!bt)return!1;for(var jr=zt;jr--;){var Gt=$t[jr];if(!(bt?Gt in F:ie.call(F,Gt)))return!1}var Rr=we.get(P);if(Rr&&we.get(F))return Rr==F;var $r=!0;we.set(P,F),we.set(F,P);for(var Yi=bt;++jr<zt;){Gt=$t[jr];var $i=P[Gt],En=F[Gt];if(te)var lp=bt?te(En,$i,Gt,F,P,we):te($i,En,Gt,P,F,we);if(!(lp===void 0?$i===En||ut($i,En,H,te,we):lp)){$r=!1;break}Yi||(Yi=Gt=="constructor")}if($r&&!Yi){var fa=P.constructor,ca=F.constructor;fa!=ca&&"constructor"in P&&"constructor"in F&&!(typeof fa=="function"&&fa instanceof fa&&typeof ca=="function"&&ca instanceof ca)&&($r=!1)}return we.delete(P),we.delete(F),$r}function ap(P){return nx(P,_x,dx)}function oa(P,F){var H=P.__data__;return px(F)?H[typeof F=="string"?"string":"hash"]:H.map}function rs(P,F){var H=ae(P,F);return ox(H)?H:void 0}function ux(P){var F=ie.call(P,se),H=P[se];try{P[se]=void 0;var te=!0}catch{}var ut=He.call(P);return te&&(F?P[se]=H:delete P[se]),ut}var dx=Je?function(P){return P==null?[]:(P=Object(P),ee(Je(P),function(F){return Ge.call(P,F)}))}:xx,Ji=Ws;(ze&&Ji(new ze(new ArrayBuffer(1)))!=g||Oe&&Ji(new Oe)!=D||ue&&Ji(ue.resolve())!=C||ke&&Ji(new ke)!=j||je&&Ji(new je)!=re)&&(Ji=function(P){var F=Ws(P),H=F==T?P.constructor:void 0,te=H?xn(H):"";if(te)switch(te){case Qe:return g;case et:return D;case be:return C;case tt:return j;case rt:return re}return F});function lx(P,F){return F=F??o,!!F&&(typeof P=="number"||U.test(P))&&P>-1&&P%1==0&&P<F}function px(P){var F=typeof P;return F=="string"||F=="number"||F=="symbol"||F=="boolean"?P!=="__proto__":P===null}function gx(P){return!!Ve&&Ve in P}function bx(P){var F=P&&P.constructor,H=typeof F=="function"&&F.prototype||oe;return P===H}function vx(P){return He.call(P)}function xn(P){if(P!=null){try{return Ce.call(P)}catch{}try{return P+""}catch{}}return""}function fp(P,F){return P===F||P!==P&&F!==F}var yx=np(function(){return arguments}())?np:function(P){return Gs(P)&&ie.call(P,"callee")&&!Ge.call(P,"callee")},aa=Array.isArray;function mx(P){return P!=null&&hp(P.length)&&!cp(P)}var xc=Ze||Ex;function wx(P,F){return sp(P,F)}function cp(P){if(!up(P))return!1;var F=Ws(P);return F==I||F==S||F==h||F==L}function hp(P){return typeof P=="number"&&P>-1&&P%1==0&&P<=o}function up(P){var F=typeof P;return P!=null&&(F=="object"||F=="function")}function Gs(P){return P!=null&&typeof P=="object"}var dp=Q?Pe(Q):ax;function _x(P){return mx(P)?ix(P):fx(P)}function xx(){return[]}function Ex(){return!1}t.exports=wx})(cc,cc.exports);var B5=cc.exports;const s0="wc",o0=2,ta="core",ni=`${s0}@2:${ta}:`,L5={name:ta,logger:"error"},q5={database:":memory:"},U5="crypto",a0="client_ed25519_seed",z5=Y.ONE_DAY,k5="keychain",j5="0.3",K5="messages",V5="0.3",f0=Y.SIX_HOURS,H5="publisher",c0="irn",W5="error",h0="wss://relay.walletconnect.org",G5="relayer",Pt={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"},J5="_subscription",Dr={payload:"payload",connect:"connect",disconnect:"disconnect",error:"error"},Y5=.1,hc="2.18.0-rc-1",ht={link_mode:"link_mode",relay:"relay"},X5="0.3",Z5="WALLETCONNECT_CLIENT_ID",u0="WALLETCONNECT_LINK_MODE_APPS",vr={created:"subscription_created",deleted:"subscription_deleted",expired:"subscription_expired",disabled:"subscription_disabled",sync:"subscription_sync",resubscribed:"subscription_resubscribed"},Q5="subscription",e9="0.3",t9=Y.FIVE_SECONDS*1e3,r9="pairing",i9="0.3",qs={wc_pairingDelete:{req:{ttl:Y.ONE_DAY,prompt:!1,tag:1e3},res:{ttl:Y.ONE_DAY,prompt:!1,tag:1001}},wc_pairingPing:{req:{ttl:Y.THIRTY_SECONDS,prompt:!1,tag:1002},res:{ttl:Y.THIRTY_SECONDS,prompt:!1,tag:1003}},unregistered_method:{req:{ttl:Y.ONE_DAY,prompt:!1,tag:0},res:{ttl:Y.ONE_DAY,prompt:!1,tag:0}}},yn={create:"pairing_create",expire:"pairing_expire",delete:"pairing_delete",ping:"pairing_ping"},Ur={created:"history_created",updated:"history_updated",deleted:"history_deleted",sync:"history_sync"},n9="history",s9="0.3",o9="expirer",Or={created:"expirer_created",deleted:"expirer_deleted",expired:"expirer_expired",sync:"expirer_sync"},a9="0.3",f9="verify-api",c9="https://verify.walletconnect.com",d0="https://verify.walletconnect.org",Us=d0,h9=`${Us}/v3`,u9=[c9,d0],d9="echo",l9="https://echo.walletconnect.com",si={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"},_i={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"},zr={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"},mn={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"},wn={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"},zs={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"},p9=.1,g9="event-client",b9=86400,v9="https://pulse.walletconnect.org/batch";function y9(t,e){if(t.length>=255)throw new TypeError("Alphabet too long");for(var r=new Uint8Array(256),i=0;i<r.length;i++)r[i]=255;for(var n=0;n<t.length;n++){var s=t.charAt(n),o=s.charCodeAt(0);if(r[o]!==255)throw new TypeError(s+" is ambiguous");r[o]=n}var a=t.length,c=t.charAt(0),h=Math.log(a)/Math.log(256),l=Math.log(256)/Math.log(a);function y(S){if(S instanceof Uint8Array||(ArrayBuffer.isView(S)?S=new Uint8Array(S.buffer,S.byteOffset,S.byteLength):Array.isArray(S)&&(S=Uint8Array.from(S))),!(S instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(S.length===0)return"";for(var D=0,R=0,$=0,T=S.length;$!==T&&S[$]===0;)$++,D++;for(var C=(T-$)*l+1>>>0,L=new Uint8Array(C);$!==T;){for(var k=S[$],j=0,G=C-1;(k!==0||j<R)&&G!==-1;G--,j++)k+=256*L[G]>>>0,L[G]=k%a>>>0,k=k/a>>>0;if(k!==0)throw new Error("Non-zero carry");R=j,$++}for(var K=C-R;K!==C&&L[K]===0;)K++;for(var V=c.repeat(D);K<C;++K)V+=t.charAt(L[K]);return V}function M(S){if(typeof S!="string")throw new TypeError("Expected String");if(S.length===0)return new Uint8Array;var D=0;if(S[D]!==" "){for(var R=0,$=0;S[D]===c;)R++,D++;for(var T=(S.length-D)*h+1>>>0,C=new Uint8Array(T);S[D];){var L=r[S.charCodeAt(D)];if(L===255)return;for(var k=0,j=T-1;(L!==0||k<$)&&j!==-1;j--,k++)L+=a*C[j]>>>0,C[j]=L%256>>>0,L=L/256>>>0;if(L!==0)throw new Error("Non-zero carry");$=k,D++}if(S[D]!==" "){for(var G=T-$;G!==T&&C[G]===0;)G++;for(var K=new Uint8Array(R+(T-G)),V=R;G!==T;)K[V++]=C[G++];return K}}}function I(S){var D=M(S);if(D)return D;throw new Error(`Non-${e} character`)}return{encode:y,decodeUnsafe:M,decode:I}}var m9=y9,w9=m9;const l0=t=>{if(t instanceof Uint8Array&&t.constructor.name==="Uint8Array")return t;if(t instanceof ArrayBuffer)return new Uint8Array(t);if(ArrayBuffer.isView(t))return new Uint8Array(t.buffer,t.byteOffset,t.byteLength);throw new Error("Unknown type, must be binary type")},_9=t=>new TextEncoder().encode(t),x9=t=>new TextDecoder().decode(t);class E9{constructor(e,r,i){this.name=e,this.prefix=r,this.baseEncode=i}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}}class S9{constructor(e,r,i){if(this.name=e,this.prefix=r,r.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=r.codePointAt(0),this.baseDecode=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 p0(this,e)}}class M9{constructor(e){this.decoders=e}or(e){return p0(this,e)}decode(e){const r=e[0],i=this.decoders[r];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 p0=(t,e)=>new M9({...t.decoders||{[t.prefix]:t},...e.decoders||{[e.prefix]:e}});class I9{constructor(e,r,i,n){this.name=e,this.prefix=r,this.baseEncode=i,this.baseDecode=n,this.encoder=new E9(e,r,i),this.decoder=new S9(e,r,n)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}}const ra=({name:t,prefix:e,encode:r,decode:i})=>new I9(t,e,r,i),ks=({prefix:t,name:e,alphabet:r})=>{const{encode:i,decode:n}=w9(r,e);return ra({prefix:t,name:e,encode:i,decode:s=>l0(n(s))})},A9=(t,e,r,i)=>{const n={};for(let l=0;l<e.length;++l)n[e[l]]=l;let s=t.length;for(;t[s-1]==="=";)--s;const o=new Uint8Array(s*r/8|0);let a=0,c=0,h=0;for(let l=0;l<s;++l){const y=n[t[l]];if(y===void 0)throw new SyntaxError(`Non-${i} character`);c=c<<r|y,a+=r,a>=8&&(a-=8,o[h++]=255&c>>a)}if(a>=r||255&c<<8-a)throw new SyntaxError("Unexpected end of data");return o},D9=(t,e,r)=>{const i=e[e.length-1]==="=",n=(1<<r)-1;let s="",o=0,a=0;for(let c=0;c<t.length;++c)for(a=a<<8|t[c],o+=8;o>r;)o-=r,s+=e[n&a>>o];if(o&&(s+=e[n&a<<r-o]),i)for(;s.length*r&7;)s+="=";return s},Ut=({name:t,prefix:e,bitsPerChar:r,alphabet:i})=>ra({prefix:e,name:t,encode(n){return D9(n,i,r)},decode(n){return A9(n,i,r,t)}}),O9=ra({prefix:"\0",name:"identity",encode:t=>x9(t),decode:t=>_9(t)});var P9=Object.freeze({__proto__:null,identity:O9});const R9=Ut({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var $9=Object.freeze({__proto__:null,base2:R9});const N9=Ut({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var T9=Object.freeze({__proto__:null,base8:N9});const F9=ks({prefix:"9",name:"base10",alphabet:"0123456789"});var C9=Object.freeze({__proto__:null,base10:F9});const B9=Ut({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),L9=Ut({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var q9=Object.freeze({__proto__:null,base16:B9,base16upper:L9});const U9=Ut({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),z9=Ut({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),k9=Ut({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),j9=Ut({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),K9=Ut({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),V9=Ut({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),H9=Ut({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),W9=Ut({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),G9=Ut({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var J9=Object.freeze({__proto__:null,base32:U9,base32upper:z9,base32pad:k9,base32padupper:j9,base32hex:K9,base32hexupper:V9,base32hexpad:H9,base32hexpadupper:W9,base32z:G9});const Y9=ks({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),X9=ks({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var Z9=Object.freeze({__proto__:null,base36:Y9,base36upper:X9});const Q9=ks({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),e7=ks({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var t7=Object.freeze({__proto__:null,base58btc:Q9,base58flickr:e7});const r7=Ut({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),i7=Ut({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),n7=Ut({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),s7=Ut({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var o7=Object.freeze({__proto__:null,base64:r7,base64pad:i7,base64url:n7,base64urlpad:s7});const g0=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}"),a7=g0.reduce((t,e,r)=>(t[r]=e,t),[]),f7=g0.reduce((t,e,r)=>(t[e.codePointAt(0)]=r,t),[]);function c7(t){return t.reduce((e,r)=>(e+=a7[r],e),"")}function h7(t){const e=[];for(const r of t){const i=f7[r.codePointAt(0)];if(i===void 0)throw new Error(`Non-base256emoji character: ${r}`);e.push(i)}return new Uint8Array(e)}const u7=ra({prefix:"\u{1F680}",name:"base256emoji",encode:c7,decode:h7});var d7=Object.freeze({__proto__:null,base256emoji:u7}),l7=v0,b0=128,p7=127,g7=~p7,b7=Math.pow(2,31);function v0(t,e,r){e=e||[],r=r||0;for(var i=r;t>=b7;)e[r++]=t&255|b0,t/=128;for(;t&g7;)e[r++]=t&255|b0,t>>>=7;return e[r]=t|0,v0.bytes=r-i+1,e}var v7=uc,y7=128,y0=127;function uc(t,i){var r=0,i=i||0,n=0,s=i,o,a=t.length;do{if(s>=a)throw uc.bytes=0,new RangeError("Could not decode varint");o=t[s++],r+=n<28?(o&y0)<<n:(o&y0)*Math.pow(2,n),n+=7}while(o>=y7);return uc.bytes=s-i,r}var m7=Math.pow(2,7),w7=Math.pow(2,14),_7=Math.pow(2,21),x7=Math.pow(2,28),E7=Math.pow(2,35),S7=Math.pow(2,42),M7=Math.pow(2,49),I7=Math.pow(2,56),A7=Math.pow(2,63),D7=function(t){return t<m7?1:t<w7?2:t<_7?3:t<x7?4:t<E7?5:t<S7?6:t<M7?7:t<I7?8:t<A7?9:10},O7={encode:l7,decode:v7,encodingLength:D7},m0=O7;const w0=(t,e,r=0)=>(m0.encode(t,e,r),e),_0=t=>m0.encodingLength(t),dc=(t,e)=>{const r=e.byteLength,i=_0(t),n=i+_0(r),s=new Uint8Array(n+r);return w0(t,s,0),w0(r,s,i),s.set(e,n),new P7(t,r,e,s)};class P7{constructor(e,r,i,n){this.code=e,this.size=r,this.digest=i,this.bytes=n}}const x0=({name:t,code:e,encode:r})=>new R7(t,e,r);class R7{constructor(e,r,i){this.name=e,this.code=r,this.encode=i}digest(e){if(e instanceof Uint8Array){const r=this.encode(e);return r instanceof Uint8Array?dc(this.code,r):r.then(i=>dc(this.code,i))}else throw Error("Unknown type, must be binary type")}}const E0=t=>async e=>new Uint8Array(await crypto.subtle.digest(t,e)),$7=x0({name:"sha2-256",code:18,encode:E0("SHA-256")}),N7=x0({name:"sha2-512",code:19,encode:E0("SHA-512")});var T7=Object.freeze({__proto__:null,sha256:$7,sha512:N7});const S0=0,F7="identity",M0=l0;var C7=Object.freeze({__proto__:null,identity:{code:S0,name:F7,encode:M0,digest:t=>dc(S0,M0(t))}});new TextEncoder,new TextDecoder;const I0={...P9,...$9,...T9,...C9,...q9,...J9,...Z9,...t7,...o7,...d7};({...T7,...C7});function B7(t=0){return globalThis.Buffer!=null&&globalThis.Buffer.allocUnsafe!=null?globalThis.Buffer.allocUnsafe(t):new Uint8Array(t)}function A0(t,e,r,i){return{name:t,prefix:e,encoder:{name:t,prefix:e,encode:r},decoder:{decode:i}}}const D0=A0("utf8","u",t=>"u"+new TextDecoder("utf8").decode(t),t=>new TextEncoder().encode(t.substring(1))),lc=A0("ascii","a",t=>{let e="a";for(let r=0;r<t.length;r++)e+=String.fromCharCode(t[r]);return e},t=>{t=t.substring(1);const e=B7(t.length);for(let r=0;r<t.length;r++)e[r]=t.charCodeAt(r);return e}),L7={utf8:D0,"utf-8":D0,hex:I0.base16,latin1:lc,ascii:lc,binary:lc,...I0};function q7(t,e="utf8"){const r=L7[e];if(!r)throw new Error(`Unsupported encoding "${e}"`);return(e==="utf8"||e==="utf-8")&&globalThis.Buffer!=null&&globalThis.Buffer.from!=null?globalThis.Buffer.from(t,"utf8"):r.decoder.decode(`${r.prefix}${t}`)}class U7{constructor(e,r){this.core=e,this.logger=r,this.keychain=new Map,this.name=k5,this.version=j5,this.initialized=!1,this.storagePrefix=ni,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}=Z("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=Jt(r,this.name)}get context(){return tr(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}async setKeyChain(e){await this.core.storage.setItem(this.storageKey,Bd(e))}async getKeyChain(){const e=await this.core.storage.getItem(this.storageKey);return typeof e<"u"?Ld(e):void 0}async persist(){await this.setKeyChain(this.keychain)}isInitialized(){if(!this.initialized){const{message:e}=Z("NOT_INITIALIZED",this.name);throw new Error(e)}}}class z7{constructor(e,r,i){this.core=e,this.logger=r,this.name=U5,this.randomSessionIdentifier=Zf(),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=Zh(n);return Xh(s.publicKey)},this.generateKeyPair=()=>{this.isInitialized();const n=X4();return this.setPrivateKey(n.publicKey,n.privateKey)},this.signJWT=async n=>{this.isInitialized();const s=await this.getClientSeed(),o=Zh(s),a=this.randomSessionIdentifier;return await oy(a,n,z5,o)},this.generateSharedKey=(n,s,o)=>{this.isInitialized();const a=this.getPrivateKey(n),c=Z4(a,s);return this.setSymKey(c,o)},this.setSymKey=async(n,s)=>{this.isInitialized();const o=s||Go(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 a=Fl(o),c=tn(s);if(Bl(a))return t8(c,o?.encoding);if(Cl(a)){const M=a.senderPublicKey,I=a.receiverPublicKey;n=await this.generateSharedKey(M,I)}const h=this.getSymKey(n),{type:l,senderPublicKey:y}=a;return Q4({type:l,symKey:h,message:c,senderPublicKey:y,encoding:o?.encoding})},this.decode=async(n,s,o)=>{this.isInitialized();const a=i8(s,o);if(Bl(a)){const c=r8(s,o?.encoding);return An(c)}if(Cl(a)){const c=a.receiverPublicKey,h=a.senderPublicKey;n=await this.generateSharedKey(c,h)}try{const c=this.getSymKey(n),h=e8({symKey:c,encoded:s,encoding:o?.encoding});return An(h)}catch(c){this.logger.error(`Failed to decode message from topic: '${n}', clientId: '${await this.getClientId()}'`),this.logger.error(c)}},this.getPayloadType=(n,s=Gi)=>{const o=Ts({encoded:n,encoding:s});return gn(o.type)},this.getPayloadSenderPublicKey=(n,s=Gi)=>{const o=Ts({encoded:n,encoding:s});return o.senderPublicKey?Zt(o.senderPublicKey,Ht):void 0},this.core=e,this.logger=Jt(r,this.name),this.keychain=i||new U7(this.core,this.logger)}get context(){return tr(this.logger)}async setPrivateKey(e,r){return await this.keychain.set(e,r),e}getPrivateKey(e){return this.keychain.get(e)}async getClientSeed(){let e="";try{e=this.keychain.get(a0)}catch{e=Zf(),await this.keychain.set(a0,e)}return q7(e,"base16")}getSymKey(e){return this.keychain.get(e)}isInitialized(){if(!this.initialized){const{message:e}=Z("NOT_INITIALIZED",this.name);throw new Error(e)}}}class k7 extends ag{constructor(e,r){super(e,r),this.logger=e,this.core=r,this.messages=new Map,this.name=K5,this.version=V5,this.initialized=!1,this.storagePrefix=ni,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=vi(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=vi(n);return typeof s[o]<"u"},this.del=async i=>{this.isInitialized(),this.messages.delete(i),await this.persist()},this.logger=Jt(e,this.name),this.core=r}get context(){return tr(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}async setRelayerMessages(e){await this.core.storage.setItem(this.storageKey,Bd(e))}async getRelayerMessages(){const e=await this.core.storage.getItem(this.storageKey);return typeof e<"u"?Ld(e):void 0}async persist(){await this.setRelayerMessages(this.messages)}isInitialized(){if(!this.initialized){const{message:e}=Z("NOT_INITIALIZED",this.name);throw new Error(e)}}}var j7=Object.defineProperty,K7=Object.defineProperties,V7=Object.getOwnPropertyDescriptors,O0=Object.getOwnPropertySymbols,H7=Object.prototype.hasOwnProperty,W7=Object.prototype.propertyIsEnumerable,P0=(t,e,r)=>e in t?j7(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,R0=(t,e)=>{for(var r in e||(e={}))H7.call(e,r)&&P0(t,r,e[r]);if(O0)for(var r of O0(e))W7.call(e,r)&&P0(t,r,e[r]);return t},$0=(t,e)=>K7(t,V7(e));class G7 extends fg{constructor(e,r){super(e,r),this.relayer=e,this.logger=r,this.events=new jt.exports.EventEmitter,this.name=H5,this.queue=new Map,this.publishTimeout=Y.toMiliseconds(Y.ONE_MINUTE),this.initialPublishTimeout=Y.toMiliseconds(Y.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 a=s?.ttl||f0,c=Jo(s),h=s?.prompt||!1,l=s?.tag||0,y=s?.id||bn().toString(),M={topic:i,message:n,opts:{ttl:a,relay:c,prompt:h,tag:l,id:y,attestation:s?.attestation}},I=`Failed to publish payload, please try again. id:${y} tag:${l}`;try{const S=new Promise(async D=>{const R=({id:T})=>{M.opts.id===T&&(this.removeRequestFromQueue(T),this.relayer.events.removeListener(Pt.publish,R),D(M))};this.relayer.events.on(Pt.publish,R);const $=ji(new Promise((T,C)=>{this.rpcPublish({topic:i,message:n,ttl:a,prompt:h,tag:l,id:y,attestation:s?.attestation}).then(T).catch(L=>{this.logger.warn(L,L?.message),C(L)})}),this.initialPublishTimeout,`Failed initial publish, retrying.... id:${y} tag:${l}`);try{await $,this.events.removeListener(Pt.publish,R)}catch(T){this.queue.set(y,$0(R0({},M),{attempt:1})),this.logger.warn(T,T?.message)}});this.logger.trace({type:"method",method:"publish",params:{id:y,topic:i,message:n,opts:s}}),await ji(S,this.publishTimeout,I)}catch(S){if(this.logger.debug("Failed to Publish Payload"),this.logger.error(S),(o=s?.internal)!=null&&o.throwOnFailedPublish)throw S}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=Jt(r,this.name),this.registerEventListeners()}get context(){return tr(this.logger)}async rpcPublish(e){var r,i,n,s;const{topic:o,message:a,ttl:c=f0,prompt:h,tag:l,id:y,attestation:M}=e,I={method:Fs(Jo().protocol).publish,params:{topic:o,message:a,ttl:c,prompt:h,tag:l,attestation:M},id:y};Qt((r=I.params)==null?void 0:r.prompt)&&((i=I.params)==null||delete i.prompt),Qt((n=I.params)==null?void 0:n.tag)&&((s=I.params)==null||delete s.tag),this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"message",direction:"outgoing",request:I});const S=await this.relayer.request(I);return this.relayer.events.emit(Pt.publish,e),this.logger.debug("Successfully Published Payload"),S}removeRequestFromQueue(e){this.queue.delete(e)}checkQueue(){this.queue.forEach(async(e,r)=>{const i=e.attempt+1;this.queue.set(r,$0(R0({},e),{attempt:i}));const{topic:n,message:s,opts:o,attestation:a}=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:a}),this.logger.warn({},`Publisher: queue->published: ${e.opts.id}`)})}registerEventListeners(){this.relayer.core.heartbeat.on(In.pulse,()=>{if(this.needsTransportRestart){this.needsTransportRestart=!1,this.relayer.events.emit(Pt.connection_stalled);return}this.checkQueue()}),this.relayer.on(Pt.message_ack,e=>{this.removeRequestFromQueue(e.id.toString())})}}class J7{constructor(){this.map=new Map,this.set=(e,r)=>{const i=this.get(e);this.exists(e,r)||this.map.set(e,[...i,r])},this.get=e=>this.map.get(e)||[],this.exists=(e,r)=>this.get(e).includes(r),this.delete=(e,r)=>{if(typeof r>"u"){this.map.delete(e);return}if(!this.map.has(e))return;const i=this.get(e);if(!this.exists(e,r))return;const n=i.filter(s=>s!==r);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 Y7=Object.defineProperty,X7=Object.defineProperties,Z7=Object.getOwnPropertyDescriptors,N0=Object.getOwnPropertySymbols,Q7=Object.prototype.hasOwnProperty,e_=Object.prototype.propertyIsEnumerable,T0=(t,e,r)=>e in t?Y7(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,js=(t,e)=>{for(var r in e||(e={}))Q7.call(e,r)&&T0(t,r,e[r]);if(N0)for(var r of N0(e))e_.call(e,r)&&T0(t,r,e[r]);return t},pc=(t,e)=>X7(t,Z7(e));class t_ extends ug{constructor(e,r){super(e,r),this.relayer=e,this.logger=r,this.subscriptions=new Map,this.topicMap=new J7,this.events=new jt.exports.EventEmitter,this.name=Q5,this.version=e9,this.pending=new Map,this.cached=[],this.initialized=!1,this.pendingSubscriptionWatchLabel="pending_sub_watch_label",this.pollingInterval=20,this.storagePrefix=ni,this.subscribeTimeout=Y.toMiliseconds(Y.ONE_MINUTE),this.initialSubscribeTimeout=Y.toMiliseconds(Y.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=Jo(n),o={topic:i,relay:s,transportType:n?.transportType};this.pending.set(i,o);const a=await this.rpcSubscribe(i,s,n);return typeof a=="string"&&(this.onSubscribe(a,o),this.logger.debug("Successfully Subscribed Topic"),this.logger.trace({type:"method",method:"subscribe",params:{topic:i,opts:n}})),a}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 a=new Y.Watch;a.start(n);const c=setInterval(()=>{(!this.pending.has(i)&&this.topics.includes(i)||this.cached.some(h=>h.topic===i))&&(clearInterval(c),a.stop(n),s(!0)),a.elapsed(n)>=t9&&(clearInterval(c),a.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(In.pulse,async()=>{await this.checkPending()}),this.events.on(vr.created,async i=>{const n=vr.created;this.logger.info(`Emitting ${n}`),this.logger.debug({type:"event",event:n,data:i}),await this.persist()}),this.events.on(vr.deleted,async i=>{const n=vr.deleted;this.logger.info(`Emitting ${n}`),this.logger.debug({type:"event",event:n,data:i}),await this.persist()})},this.relayer=e,this.logger=Jt(r,this.name),this.clientId=""}get context(){return tr(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.relayer.core.customStoragePrefix+"//"+this.name}get length(){return this.subscriptions.size}get ids(){return Array.from(this.subscriptions.keys())}get values(){return Array.from(this.subscriptions.values())}get topics(){return this.topicMap.topics}hasSubscription(e,r){let i=!1;try{i=this.getSubscription(e).topic===r}catch{}return i}reset(){this.cached=[],this.initialized=!0}onDisable(){this.cached=this.values,this.subscriptions.clear(),this.topicMap.clear()}async unsubscribeByTopic(e,r){const i=this.topicMap.get(e);await Promise.all(i.map(async n=>await this.unsubscribeById(e,n,r)))}async unsubscribeById(e,r,i){this.logger.debug("Unsubscribing Topic"),this.logger.trace({type:"method",method:"unsubscribe",params:{topic:e,id:r,opts:i}});try{const n=Jo(i);await this.rpcUnsubscribe(e,r,n);const s=ct("USER_DISCONNECTED",`${this.name}, ${e}`);await this.onUnsubscribe(e,r,s),this.logger.debug("Successfully Unsubscribed Topic"),this.logger.trace({type:"method",method:"unsubscribe",params:{topic:e,id:r,opts:i}})}catch(n){throw this.logger.debug("Failed to Unsubscribe Topic"),this.logger.error(n),n}}async rpcSubscribe(e,r,i){var n;i?.transportType===ht.relay&&await this.restartToComplete();const s={method:Fs(r.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 a=this.getSubscriptionId(e);if(i?.transportType===ht.link_mode)return setTimeout(()=>{(this.relayer.connected||this.relayer.connecting)&&this.relayer.request(s).catch(l=>this.logger.warn(l))},Y.toMiliseconds(Y.ONE_SECOND)),a;const c=new Promise(async l=>{const y=M=>{M.topic===e&&(this.events.removeListener(vr.created,y),l(M.id))};this.events.on(vr.created,y);try{const M=await ji(new Promise((I,S)=>{this.relayer.request(s).catch(D=>{this.logger.warn(D,D?.message),S(D)}).then(I)}),this.initialSubscribeTimeout,`Subscribing to ${e} failed, please try again`);this.events.removeListener(vr.created,y),l(M)}catch{}}),h=await ji(c,this.subscribeTimeout,`Subscribing to ${e} failed, please try again`);if(!h&&o)throw new Error(`Subscribing to ${e} failed, please try again`);return h?a:null}catch(a){if(this.logger.debug("Outgoing Relay Subscribe Payload stalled"),this.relayer.events.emit(Pt.connection_stalled),o)throw a}return null}async rpcBatchSubscribe(e){if(!e.length)return;const r=e[0].relay,i={method:Fs(r.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 ji(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(Pt.connection_stalled)}}async rpcBatchFetchMessages(e){if(!e.length)return;const r=e[0].relay,i={method:Fs(r.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 ji(new Promise((s,o)=>{this.relayer.request(i).catch(a=>{this.logger.warn(a),o(a)}).then(s)}),this.subscribeTimeout,"rpcBatchFetchMessages failed, please try again")}catch{this.relayer.events.emit(Pt.connection_stalled)}return n}rpcUnsubscribe(e,r,i){const n={method:Fs(i.protocol).unsubscribe,params:{topic:e,id:r}};return this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"payload",direction:"outgoing",request:n}),this.relayer.request(n)}onSubscribe(e,r){this.setSubscription(e,pc(js({},r),{id:e})),this.pending.delete(r.topic)}onBatchSubscribe(e){e.length&&e.forEach(r=>{this.setSubscription(r.id,js({},r)),this.pending.delete(r.topic)})}async onUnsubscribe(e,r,i){this.events.removeAllListeners(r),this.hasSubscription(r,e)&&this.deleteSubscription(r,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,r){this.logger.debug("Setting subscription"),this.logger.trace({type:"method",method:"setSubscription",id:e,subscription:r}),this.addSubscription(e,r)}addSubscription(e,r){this.subscriptions.set(e,js({},r)),this.topicMap.set(r.topic,e),this.events.emit(vr.created,r)}getSubscription(e){this.logger.debug("Getting subscription"),this.logger.trace({type:"method",method:"getSubscription",id:e});const r=this.subscriptions.get(e);if(!r){const{message:i}=Z("NO_MATCHING_KEY",`${this.name}: ${e}`);throw new Error(i)}return r}deleteSubscription(e,r){this.logger.debug("Deleting subscription"),this.logger.trace({type:"method",method:"deleteSubscription",id:e,reason:r});const i=this.getSubscription(e);this.subscriptions.delete(e),this.topicMap.delete(i.topic,e),this.events.emit(vr.deleted,pc(js({},i),{reason:r}))}async persist(){await this.setRelayerSubscriptions(this.values),this.events.emit(vr.sync)}async onRestart(){if(this.cached.length){const e=[...this.cached],r=Math.ceil(this.cached.length/this.batchSubscribeTopicsLimit);for(let i=0;i<r;i++){const n=e.splice(0,this.batchSubscribeTopicsLimit);await this.batchSubscribe(n)}}this.events.emit(vr.resubscribed)}async restore(){try{const e=await this.getRelayerSubscriptions();if(typeof e>"u"||!e.length)return;if(this.subscriptions.size){const{message:r}=Z("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(r),this.logger.error(`${this.name}: ${JSON.stringify(this.values)}`),new Error(r)}this.cached=e,this.logger.debug(`Successfully Restored subscriptions for ${this.name}`),this.logger.trace({type:"method",method:"restore",subscriptions:this.values})}catch(e){this.logger.debug(`Failed to Restore subscriptions for ${this.name}`),this.logger.error(e)}}async batchSubscribe(e){e.length&&(await this.rpcBatchSubscribe(e),this.onBatchSubscribe(e.map(r=>pc(js({},r),{id:this.getSubscriptionId(r.topic)}))))}async batchFetchMessages(e){if(!e.length)return;this.logger.trace(`Fetching batch messages for ${e.length} subscriptions`);const r=await this.rpcBatchFetchMessages(e);r&&r.messages&&(await l6(Y.toMiliseconds(Y.ONE_SECOND)),await this.relayer.handleBatchMessageEvents(r.messages))}async onConnect(){await this.restart(),this.reset()}onDisconnect(){this.onDisable()}isInitialized(){if(!this.initialized){const{message:e}=Z("NOT_INITIALIZED",this.name);throw new Error(e)}}async restartToComplete(){!this.relayer.connected&&!this.relayer.connecting&&await this.relayer.transportOpen()}getSubscriptionId(e){return vi(e+this.clientId)}}var r_=Object.defineProperty,F0=Object.getOwnPropertySymbols,i_=Object.prototype.hasOwnProperty,n_=Object.prototype.propertyIsEnumerable,C0=(t,e,r)=>e in t?r_(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,B0=(t,e)=>{for(var r in e||(e={}))i_.call(e,r)&&C0(t,r,e[r]);if(F0)for(var r of F0(e))n_.call(e,r)&&C0(t,r,e[r]);return t};class s_ extends cg{constructor(e){super(e),this.protocol="wc",this.version=2,this.events=new jt.exports.EventEmitter,this.name=G5,this.transportExplicitlyClosed=!1,this.initialized=!1,this.connectionAttemptInProgress=!1,this.hasExperiencedNetworkDisruption=!1,this.heartBeatTimeout=Y.toMiliseconds(Y.THIRTY_SECONDS+Y.FIVE_SECONDS),this.requestsInFlight=[],this.connectTimeout=Y.toMiliseconds(Y.ONE_SECOND*15),this.request=async r=>{var i,n;this.logger.debug("Publishing Request Payload");const s=r.id||bn().toString();await this.toEstablishConnection();try{this.logger.trace({id:s,method:r.method,topic:(i=r.params)==null?void 0:i.topic},"relayer.request - publishing...");const o=`${s}:${((n=r.params)==null?void 0:n.tag)||""}`;this.requestsInFlight.push(o);const a=await this.provider.request(r);return this.requestsInFlight=this.requestsInFlight.filter(c=>c!==o),a}catch(o){throw this.logger.debug(`Failed to Publish Request: ${s}`),o}},this.resetPingTimeout=()=>{if(Uo())try{clearTimeout(this.pingTimeout),this.pingTimeout=setTimeout(()=>{var r,i,n;this.logger.debug({},"pingTimeout: Connection stalled, terminating..."),(n=(i=(r=this.provider)==null?void 0:r.connection)==null?void 0:i.socket)==null||n.terminate()},this.heartBeatTimeout)}catch(r){this.logger.warn(r,r?.message)}},this.onPayloadHandler=r=>{this.onProviderPayload(r),this.resetPingTimeout()},this.onConnectHandler=()=>{this.logger.warn({},"Relayer connected \u{1F6DC}"),this.startPingTimeout(),this.events.emit(Pt.connect)},this.onDisconnectHandler=()=>{this.logger.warn({},"Relayer disconnected \u{1F6D1}"),this.requestsInFlight=[],this.onProviderDisconnect()},this.onProviderErrorHandler=r=>{this.logger.fatal(r,`Fatal socket error: ${r?.message}`),this.events.emit(Pt.error,r),this.logger.fatal("Fatal socket error received, closing transport"),this.transportClose()},this.registerProviderListeners=()=>{this.provider.on(Dr.payload,this.onPayloadHandler),this.provider.on(Dr.connect,this.onConnectHandler),this.provider.on(Dr.disconnect,this.onDisconnectHandler),this.provider.on(Dr.error,this.onProviderErrorHandler)},this.core=e.core,this.logger=typeof e.logger<"u"&&typeof e.logger!="string"?Jt(e.logger,this.name):ai(Ia({level:e.logger||W5})),this.messages=new k7(this.logger,e.core),this.subscriber=new t_(this,this.logger),this.publisher=new G7(this,this.logger),this.relayUrl=e?.relayUrl||h0,this.projectId=e.projectId,Xw()?this.packageName=Td():Zw()&&(this.bundleId=Td()),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 tr(this.logger)}get connected(){var e,r,i;return((i=(r=(e=this.provider)==null?void 0:e.connection)==null?void 0:r.socket)==null?void 0:i.readyState)===1}get connecting(){var e,r,i;return((i=(r=(e=this.provider)==null?void 0:e.connection)==null?void 0:r.socket)==null?void 0:i.readyState)===0}async publish(e,r,i){this.isInitialized(),await this.publisher.publish(e,r,i),await this.recordMessageEvent({topic:e,message:r,publishedAt:Date.now(),transportType:ht.relay})}async subscribe(e,r){var i,n,s;this.isInitialized(),(!(r!=null&&r.transportType)||r?.transportType==="relay")&&await this.toEstablishConnection();const o=typeof((i=r?.internal)==null?void 0:i.throwOnFailedPublish)>"u"?!0:(n=r?.internal)==null?void 0:n.throwOnFailedPublish;let a=((s=this.subscriber.topicMap.get(e))==null?void 0:s[0])||"",c;const h=l=>{l.topic===e&&(this.subscriber.off(vr.created,h),c())};return await Promise.all([new Promise(l=>{c=l,this.subscriber.on(vr.created,h)}),new Promise(async(l,y)=>{a=await this.subscriber.subscribe(e,B0({internal:{throwOnFailedPublish:o}},r)).catch(M=>{o&&y(M)})||a,l()})]),a}async unsubscribe(e,r){this.isInitialized(),await this.subscriber.unsubscribe(e,r)}on(e,r){this.events.on(e,r)}once(e,r){this.events.once(e,r)}off(e,r){this.events.off(e,r)}removeListener(e,r){this.events.removeListener(e,r)}async transportDisconnect(){this.provider.disconnect&&(this.hasExperiencedNetworkDisruption||this.connected)?await ji(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(r,i)=>{await this.connect(e).then(r).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 Wl())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 r=e.sort((i,n)=>i.publishedAt-n.publishedAt);this.logger.debug(`Batch of ${r.length} message events sorted`);for(const i of r)try{await this.onMessageEvent(i)}catch(n){this.logger.warn(n,"Error while processing batch message event: "+n?.message)}this.logger.trace(`Batch of ${r.length} message events processed`)}async onLinkMessageEvent(e,r){const{topic:i}=e;if(!r.sessionExists){const n=Et(Y.FIVE_MINUTES),s={topic:i,expiry:n,relay:{protocol:"irn"},active:!1};await this.core.pairing.pairings.set(i,s)}this.events.emit(Pt.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 r=1;for(;r<6;){try{this.logger.debug({},`Connecting to ${this.relayUrl}, attempt: ${r}...`),await this.createProvider(),await new Promise(async(i,n)=>{const s=()=>{n(new Error("Connection interrupted while trying to subscribe"))};this.provider.once(Dr.disconnect,s),await ji(new Promise((o,a)=>{this.provider.connect().then(o).catch(a)}),this.connectTimeout,`Socket stalled when trying to connect to ${this.relayUrl}`).catch(o=>{n(o)}).finally(()=>{this.provider.off(Dr.disconnect,s),clearTimeout(this.reconnectTimeout),this.reconnectTimeout=void 0}),await new Promise(async(o,a)=>{const c=()=>{a(new Error("Connection interrupted while trying to subscribe"))};this.provider.once(Dr.disconnect,c),await this.subscriber.start().then(o).catch(a).finally(()=>{this.provider.off(Dr.disconnect,c)})}),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: ${r}`);break}await new Promise(i=>setTimeout(i,Y.toMiliseconds(r*1))),r++}}startPingTimeout(){var e,r,i,n,s;if(Uo())try{(r=(e=this.provider)==null?void 0:e.connection)!=null&&r.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 $5(new C5(r6({sdkVersion:hc,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:r,message:i}=e;await this.messages.set(r,i)}async shouldIgnoreMessageEvent(e){const{topic:r,message:i}=e;if(!i||i.length===0)return this.logger.warn(`Ignoring invalid/empty message: ${i}`),!0;if(!await this.subscriber.isSubscribed(r))return this.logger.warn(`Ignoring message for non-subscribed topic ${r}`),!0;const n=this.messages.has(r,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}),fc(e)){if(!e.method.endsWith(J5))return;const r=e.params,{topic:i,message:n,publishedAt:s,attestation:o}=r.data,a={topic:i,message:n,publishedAt:s,transportType:ht.relay,attestation:o};this.logger.debug("Emitting Relayer Payload"),this.logger.trace(B0({type:"event",event:r.id},a)),this.events.emit(r.id,a),await this.acknowledgePayload(e),await this.onMessageEvent(a)}else ea(e)&&this.events.emit(Pt.message_ack,e)}async onMessageEvent(e){await this.shouldIgnoreMessageEvent(e)||(this.events.emit(Pt.message,e),await this.recordMessageEvent(e))}async acknowledgePayload(e){const r=oc(e.id,!0);await this.provider.connection.send(r)}unregisterProviderListeners(){this.provider.off(Dr.payload,this.onPayloadHandler),this.provider.off(Dr.connect,this.onConnectHandler),this.provider.off(Dr.disconnect,this.onDisconnectHandler),this.provider.off(Dr.error,this.onProviderErrorHandler),clearTimeout(this.pingTimeout)}async registerEventListeners(){let e=await Wl();K8(async r=>{e!==r&&(e=r,r?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(Pt.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))},Y.toMiliseconds(Y5))))}isInitialized(){if(!this.initialized){const{message:e}=Z("NOT_INITIALIZED",this.name);throw new Error(e)}}async toEstablishConnection(){await this.confirmOnlineStateOrThrow(),!this.connected&&await this.transportOpen()}}var o_=Object.defineProperty,L0=Object.getOwnPropertySymbols,a_=Object.prototype.hasOwnProperty,f_=Object.prototype.propertyIsEnumerable,q0=(t,e,r)=>e in t?o_(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,U0=(t,e)=>{for(var r in e||(e={}))a_.call(e,r)&&q0(t,r,e[r]);if(L0)for(var r of L0(e))f_.call(e,r)&&q0(t,r,e[r]);return t};class _n extends hg{constructor(e,r,i,n=ni,s=void 0){super(e,r,i,n),this.core=e,this.logger=r,this.name=i,this.map=new Map,this.version=X5,this.cached=[],this.initialized=!1,this.storagePrefix=ni,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&&!Qt(o)?this.map.set(this.getKey(o),o):_8(o)?this.map.set(o.id,o):x8(o)&&this.map.set(o.topic,o)}),this.cached=[],this.initialized=!0)},this.set=async(o,a)=>{this.isInitialized(),this.map.has(o)?await this.update(o,a):(this.logger.debug("Setting value"),this.logger.trace({type:"method",method:"set",key:o,value:a}),this.map.set(o,a),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(a=>Object.keys(o).every(c=>B5(a[c],o[c]))):this.values),this.update=async(o,a)=>{this.isInitialized(),this.logger.debug("Updating value"),this.logger.trace({type:"method",method:"update",key:o,update:a});const c=U0(U0({},this.getData(o)),a);this.map.set(o,c),await this.persist()},this.delete=async(o,a)=>{this.isInitialized(),this.map.has(o)&&(this.logger.debug("Deleting value"),this.logger.trace({type:"method",method:"delete",key:o,reason:a}),this.map.delete(o),this.addToRecentlyDeleted(o),await this.persist())},this.logger=Jt(r,this.name),this.storagePrefix=n,this.getKey=s}get context(){return tr(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}get length(){return this.map.size}get keys(){return Array.from(this.map.keys())}get values(){return Array.from(this.map.values())}addToRecentlyDeleted(e){this.recentlyDeleted.push(e),this.recentlyDeleted.length>=this.recentlyDeletedLimit&&this.recentlyDeleted.splice(0,this.recentlyDeletedLimit/2)}async setDataStore(e){await this.core.storage.setItem(this.storageKey,e)}async getDataStore(){return await this.core.storage.getItem(this.storageKey)}getData(e){const r=this.map.get(e);if(!r){if(this.recentlyDeleted.includes(e)){const{message:n}=Z("MISSING_OR_INVALID",`Record was recently deleted - ${this.name}: ${e}`);throw this.logger.error(n),new Error(n)}const{message:i}=Z("NO_MATCHING_KEY",`${this.name}: ${e}`);throw this.logger.error(i),new Error(i)}return r}async persist(){await this.setDataStore(this.values)}async restore(){try{const e=await this.getDataStore();if(typeof e>"u"||!e.length)return;if(this.map.size){const{message:r}=Z("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(r),new Error(r)}this.cached=e,this.logger.debug(`Successfully Restored value for ${this.name}`),this.logger.trace({type:"method",method:"restore",value:this.values})}catch(e){this.logger.debug(`Failed to Restore value for ${this.name}`),this.logger.error(e)}}isInitialized(){if(!this.initialized){const{message:e}=Z("NOT_INITIALIZED",this.name);throw new Error(e)}}}class c_{constructor(e,r){this.core=e,this.logger=r,this.name=r9,this.version=i9,this.events=new jt.exports,this.initialized=!1,this.storagePrefix=ni,this.ignoredPayloadTypes=[bi],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=Zf(),s=await this.core.crypto.setSymKey(n),o=Et(Y.FIVE_MINUTES),a={protocol:c0},c={topic:s,expiry:o,relay:a,active:!1,methods:i?.methods},h=ql({protocol:this.core.protocol,version:this.core.version,topic:s,symKey:n,relay:a,expiryTimestamp:o,methods:i?.methods});return this.events.emit(yn.create,c),this.core.expirer.set(s,o),await this.pairings.set(s,c),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:[si.pairing_started]}});this.isValidPair(i,n);const{topic:s,symKey:o,relay:a,expiryTimestamp:c,methods:h}=Ll(i.uri);n.props.properties.topic=s,n.addTrace(si.pairing_uri_validation_success),n.addTrace(si.pairing_uri_not_expired);let l;if(this.pairings.keys.includes(s)){if(l=this.pairings.get(s),n.addTrace(si.existing_pairing),l.active)throw n.setError(_i.active_pairing_already_exists),new Error(`Pairing already exists: ${s}. Please try again with a new connection URI.`);n.addTrace(si.pairing_not_expired)}const y=c||Et(Y.FIVE_MINUTES),M={topic:s,relay:a,expiry:y,active:!1,methods:h};this.core.expirer.set(s,y),await this.pairings.set(s,M),n.addTrace(si.store_new_pairing),i.activatePairing&&await this.activate({topic:s}),this.events.emit(yn.create,M),n.addTrace(si.emit_inactive_pairing),this.core.crypto.keychain.has(s)||await this.core.crypto.setSymKey(o,s),n.addTrace(si.subscribing_pairing_topic);try{await this.core.relayer.confirmOnlineStateOrThrow()}catch{n.setError(_i.no_internet_connection)}try{await this.core.relayer.subscribe(s,{relay:a})}catch(I){throw n.setError(_i.subscribe_pairing_topic_failure),I}return n.addTrace(si.subscribe_pairing_topic_success),M},this.activate=async({topic:i})=>{this.isInitialized();const n=Et(Y.FIVE_MINUTES);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),this.logger.warn("ping() is deprecated and will be removed in the next major release.");const{topic:n}=i;if(this.pairings.keys.includes(n)){const s=await this.sendRequest(n,"wc_pairingPing",{}),{done:o,resolve:a,reject:c}=ln();this.events.once(Se("pairing_ping",s),({error:h})=>{h?c(h):a()}),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:a}=i,c=this.core.crypto.keychain.get(n);return ql({protocol:this.core.protocol,version:this.core.version,topic:n,symKey:c,relay:s,expiryTimestamp:o,methods:a})},this.sendRequest=async(i,n,s)=>{const o=vn(n,s),a=await this.core.crypto.encode(i,o),c=qs[n].req;return this.core.history.set(i,o),this.core.relayer.publish(i,a,c),o.id},this.sendResult=async(i,n,s)=>{const o=oc(i,s),a=await this.core.crypto.encode(n,o),c=await this.core.history.get(n,i),h=qs[c.request.method].res;await this.core.relayer.publish(n,a,h),await this.core.history.resolve(o)},this.sendError=async(i,n,s)=>{const o=ac(i,s),a=await this.core.crypto.encode(n,o),c=await this.core.history.get(n,i),h=qs[c.request.method]?qs[c.request.method].res:qs.unregistered_method.res;await this.core.relayer.publish(n,a,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=>Ki(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(yn.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(()=>{ii(n)?this.events.emit(Se("pairing_ping",s),{}):Ar(n)&&this.events.emit(Se("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(yn.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 a=ct("WC_METHOD_UNSUPPORTED",o);await this.sendError(s,i,a),this.logger.error(a)}catch(a){await this.sendError(s,i,a),this.logger.error(a)}},this.onUnknownRpcMethodResponse=i=>{this.registeredMethods.includes(i)||this.logger.error(ct("WC_METHOD_UNSUPPORTED",i))},this.isValidPair=(i,n)=>{var s;if(!or(i)){const{message:a}=Z("MISSING_OR_INVALID",`pair() params: ${i}`);throw n.setError(_i.malformed_pairing_uri),new Error(a)}if(!w8(i.uri)){const{message:a}=Z("MISSING_OR_INVALID",`pair() uri: ${i.uri}`);throw n.setError(_i.malformed_pairing_uri),new Error(a)}const o=Ll(i?.uri);if(!((s=o?.relay)!=null&&s.protocol)){const{message:a}=Z("MISSING_OR_INVALID","pair() uri#relay-protocol");throw n.setError(_i.malformed_pairing_uri),new Error(a)}if(!(o!=null&&o.symKey)){const{message:a}=Z("MISSING_OR_INVALID","pair() uri#symKey");throw n.setError(_i.malformed_pairing_uri),new Error(a)}if(o!=null&&o.expiryTimestamp&&Y.toMiliseconds(o?.expiryTimestamp)<Date.now()){n.setError(_i.pairing_expired);const{message:a}=Z("EXPIRED","pair() URI has expired. Please try again with a new connection URI.");throw new Error(a)}},this.isValidPing=async i=>{if(!or(i)){const{message:s}=Z("MISSING_OR_INVALID",`ping() params: ${i}`);throw new Error(s)}const{topic:n}=i;await this.isValidPairingTopic(n)},this.isValidDisconnect=async i=>{if(!or(i)){const{message:s}=Z("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}=Z("MISSING_OR_INVALID",`pairing topic should be a string: ${i}`);throw new Error(n)}if(!this.pairings.keys.includes(i)){const{message:n}=Z("NO_MATCHING_KEY",`pairing topic doesn't exist: ${i}`);throw new Error(n)}if(Ki(this.pairings.get(i).expiry)){await this.deletePairing(i);const{message:n}=Z("EXPIRED",`pairing topic: ${i}`);throw new Error(n)}},this.core=e,this.logger=Jt(r,this.name),this.pairings=new _n(this.core,this.logger,this.name,this.storagePrefix)}get context(){return tr(this.logger)}isInitialized(){if(!this.initialized){const{message:e}=Z("NOT_INITIALIZED",this.name);throw new Error(e)}}registerRelayerEvents(){this.core.relayer.on(Pt.message,async e=>{const{topic:r,message:i,transportType:n}=e;if(!this.pairings.keys.includes(r)||n===ht.link_mode||this.ignoredPayloadTypes.includes(this.core.crypto.getPayloadType(i)))return;const s=await this.core.crypto.decode(r,i);try{fc(s)?(this.core.history.set(r,s),this.onRelayEventRequest({topic:r,payload:s})):ea(s)&&(await this.core.history.resolve(s),await this.onRelayEventResponse({topic:r,payload:s}),this.core.history.delete(r,s.id))}catch(o){this.logger.error(o)}})}registerExpirerEvents(){this.core.expirer.on(Or.expired,async e=>{const{topic:r}=Ud(e.target);r&&this.pairings.keys.includes(r)&&(await this.deletePairing(r,!0),this.events.emit(yn.expire,{topic:r}))})}}class h_ extends og{constructor(e,r){super(e,r),this.core=e,this.logger=r,this.records=new Map,this.events=new jt.exports.EventEmitter,this.name=n9,this.version=s9,this.cached=[],this.initialized=!1,this.storagePrefix=ni,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:Et(Y.THIRTY_DAYS)};this.records.set(o.id,o),this.persist(),this.events.emit(Ur.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=Ar(i)?{error:i.error}:{result:i.result},this.records.set(n.id,n),this.persist(),this.events.emit(Ur.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(Ur.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=Jt(r,this.name)}get context(){return tr(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}get size(){return this.records.size}get keys(){return Array.from(this.records.keys())}get values(){return Array.from(this.records.values())}get pending(){const e=[];return this.values.forEach(r=>{if(typeof r.response<"u")return;const i={topic:r.topic,request:vn(r.request.method,r.request.params,r.id),chainId:r.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 r=this.records.get(e);if(!r){const{message:i}=Z("NO_MATCHING_KEY",`${this.name}: ${e}`);throw new Error(i)}return r}async persist(){await this.setJsonRpcRecords(this.values),this.events.emit(Ur.sync)}async restore(){try{const e=await this.getJsonRpcRecords();if(typeof e>"u"||!e.length)return;if(this.records.size){const{message:r}=Z("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(r),new Error(r)}this.cached=e,this.logger.debug(`Successfully Restored records for ${this.name}`),this.logger.trace({type:"method",method:"restore",records:this.values})}catch(e){this.logger.debug(`Failed to Restore records for ${this.name}`),this.logger.error(e)}}registerEventListeners(){this.events.on(Ur.created,e=>{const r=Ur.created;this.logger.info(`Emitting ${r}`),this.logger.debug({type:"event",event:r,record:e})}),this.events.on(Ur.updated,e=>{const r=Ur.updated;this.logger.info(`Emitting ${r}`),this.logger.debug({type:"event",event:r,record:e})}),this.events.on(Ur.deleted,e=>{const r=Ur.deleted;this.logger.info(`Emitting ${r}`),this.logger.debug({type:"event",event:r,record:e})}),this.core.heartbeat.on(In.pulse,()=>{this.cleanup()})}cleanup(){try{this.isInitialized();let e=!1;this.records.forEach(r=>{Y.toMiliseconds(r.expiry||0)-Date.now()<=0&&(this.logger.info(`Deleting expired history log: ${r.id}`),this.records.delete(r.id),this.events.emit(Ur.deleted,r,!1),e=!0)}),e&&this.persist()}catch(e){this.logger.warn(e)}}isInitialized(){if(!this.initialized){const{message:e}=Z("NOT_INITIALIZED",this.name);throw new Error(e)}}}class u_ extends dg{constructor(e,r){super(e,r),this.core=e,this.logger=r,this.expirations=new Map,this.events=new jt.exports.EventEmitter,this.name=o9,this.version=a9,this.cached=[],this.initialized=!1,this.storagePrefix=ni,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(Or.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(Or.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=Jt(r,this.name)}get context(){return tr(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 i6(e);if(typeof e=="number")return n6(e);const{message:r}=Z("UNKNOWN_TYPE",`Target type: ${typeof e}`);throw new Error(r)}async setExpirations(e){await this.core.storage.setItem(this.storageKey,e)}async getExpirations(){return await this.core.storage.getItem(this.storageKey)}async persist(){await this.setExpirations(this.values),this.events.emit(Or.sync)}async restore(){try{const e=await this.getExpirations();if(typeof e>"u"||!e.length)return;if(this.expirations.size){const{message:r}=Z("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(r),new Error(r)}this.cached=e,this.logger.debug(`Successfully Restored expirations for ${this.name}`),this.logger.trace({type:"method",method:"restore",expirations:this.values})}catch(e){this.logger.debug(`Failed to Restore expirations for ${this.name}`),this.logger.error(e)}}getExpiration(e){const r=this.expirations.get(e);if(!r){const{message:i}=Z("NO_MATCHING_KEY",`${this.name}: ${e}`);throw this.logger.warn(i),new Error(i)}return r}checkExpiry(e,r){const{expiry:i}=r;Y.toMiliseconds(i)-Date.now()<=0&&this.expire(e,r)}expire(e,r){this.expirations.delete(e),this.events.emit(Or.expired,{target:e,expiration:r})}checkExpirations(){this.core.relayer.connected&&this.expirations.forEach((e,r)=>this.checkExpiry(r,e))}registerEventListeners(){this.core.heartbeat.on(In.pulse,()=>this.checkExpirations()),this.events.on(Or.created,e=>{const r=Or.created;this.logger.info(`Emitting ${r}`),this.logger.debug({type:"event",event:r,data:e}),this.persist()}),this.events.on(Or.expired,e=>{const r=Or.expired;this.logger.info(`Emitting ${r}`),this.logger.debug({type:"event",event:r,data:e}),this.persist()}),this.events.on(Or.deleted,e=>{const r=Or.deleted;this.logger.info(`Emitting ${r}`),this.logger.debug({type:"event",event:r,data:e}),this.persist()})}isInitialized(){if(!this.initialized){const{message:e}=Z("NOT_INITIALIZED",this.name);throw new Error(e)}}}class d_ extends lg{constructor(e,r,i){super(e,r,i),this.core=e,this.logger=r,this.store=i,this.name=f9,this.verifyUrlV3=h9,this.storagePrefix=ni,this.version=o0,this.init=async()=>{var n;this.isDevEnv||(this.publicKey=await this.store.getItem(this.storeKey),this.publicKey&&Y.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(!Ss()||this.isDevEnv)return;const s=window.location.origin,{id:o,decryptedId:a}=n,c=`${this.verifyUrlV3}/attestation?projectId=${this.core.projectId}&origin=${s}&id=${o}&decryptedId=${a}`;try{const h=ds(),l=this.startAbortTimer(Y.ONE_SECOND*5),y=await new Promise((M,I)=>{const S=()=>{window.removeEventListener("message",R),h.body.removeChild(D),I("attestation aborted")};this.abortController.signal.addEventListener("abort",S);const D=h.createElement("iframe");D.src=c,D.style.display="none",D.addEventListener("error",S,{signal:this.abortController.signal});const R=$=>{if($.data&&typeof $.data=="string")try{const T=JSON.parse($.data);if(T.type==="verify_attestation"){if(Wa(T.attestation).payload.id!==o)return;clearInterval(l),h.body.removeChild(D),this.abortController.signal.removeEventListener("abort",S),window.removeEventListener("message",R),M(T.attestation===null?"":T.attestation)}}catch(T){this.logger.warn(T)}};h.body.appendChild(D),window.addEventListener("message",R,{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:a}=n;if(s===""){this.logger.debug("resolve: attestationId is empty, skipping");return}if(s){if(Wa(s).payload.id!==a)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 c=this.getVerifyUrl(n?.verifyUrl);return this.fetchAttestation(o,c)},this.fetchAttestation=async(n,s)=>{this.logger.debug(`resolving attestation: ${n} from url: ${s}`);const o=this.startAbortTimer(Y.ONE_SECOND*5),a=await fetch(`${s}/attestation/${n}?v2Supported=true`,{signal:this.abortController.signal});return clearTimeout(o),a.status===200?await a.json():void 0},this.getVerifyUrl=n=>{let s=n||Us;return u9.includes(s)||(this.logger.info(`verify url: ${s}, not included in trusted list, assigning default: ${Us}`),s=Us),s},this.fetchPublicKey=async()=>{try{this.logger.debug(`fetching public key from: ${this.verifyUrlV3}`);const n=this.startAbortTimer(Y.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(a){this.logger.error(a),this.logger.warn("error validating attestation")}const o=await this.fetchAndPersistPublicKey();try{if(o)return this.validateAttestation(n,o)}catch(a){this.logger.error(a),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=a8(n,s.publicKey),a={hasExpired:Y.toMiliseconds(o.exp)<Date.now(),payload:o};if(a.hasExpired)throw this.logger.warn("resolve: jwt attestation expired"),new Error("JWT attestation expired");return{origin:a.payload.origin,isScam:a.payload.isScam,isVerified:a.payload.isVerified}},this.logger=Jt(r,this.name),this.abortController=new AbortController,this.isDevEnv=Nf(),this.init()}get storeKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//verify:public:key"}get context(){return tr(this.logger)}startAbortTimer(e){return this.abortController=new AbortController,setTimeout(()=>this.abortController.abort(),Y.toMiliseconds(e))}}class l_ extends pg{constructor(e,r){super(e,r),this.projectId=e,this.logger=r,this.context=d9,this.registerDeviceToken=async i=>{const{clientId:n,token:s,notificationType:o,enableEncrypted:a=!1}=i,c=`${l9}/${this.projectId}/clients`;await fetch(c,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({client_id:n,type:o,token:s,always_raw:a})})},this.logger=Jt(r,this.context)}}var p_=Object.defineProperty,z0=Object.getOwnPropertySymbols,g_=Object.prototype.hasOwnProperty,b_=Object.prototype.propertyIsEnumerable,k0=(t,e,r)=>e in t?p_(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,Ks=(t,e)=>{for(var r in e||(e={}))g_.call(e,r)&&k0(t,r,e[r]);if(z0)for(var r of z0(e))b_.call(e,r)&&k0(t,r,e[r]);return t};class v_ extends gg{constructor(e,r,i=!0){super(e,r,i),this.core=e,this.logger=r,this.context=g9,this.storagePrefix=ni,this.storageVersion=p9,this.events=new Map,this.shouldPersist=!1,this.init=async()=>{if(!Nf())try{const n={eventId:kd(),timestamp:Date.now(),domain:this.getAppDomain(),props:{event:"INIT",type:"",properties:{client_id:await this.core.crypto.getClientId(),user_agent:Cd(this.core.relayer.protocol,this.core.relayer.version,hc)}}};await this.sendEvent([n])}catch(n){this.logger.warn(n)}},this.createEvent=n=>{const{event:s="ERROR",type:o="",properties:{topic:a,trace:c}}=n,h=kd(),l=this.core.projectId||"",y=Date.now(),M=Ks({eventId:h,timestamp:y,props:{event:s,type:o,properties:{topic:a,trace:c}},bundleId:l,domain:this.getAppDomain()},this.setMethods(h));return this.telemetryEnabled&&(this.events.set(h,M),this.shouldPersist=!0),M},this.getEvent=n=>{const{eventId:s,topic:o}=n;if(s)return this.events.get(s);const a=Array.from(this.events.values()).find(c=>c.props.properties.topic===o);if(a)return Ks(Ks({},a),this.setMethods(a.eventId))},this.deleteEvent=n=>{const{eventId:s}=n;this.events.delete(s),this.shouldPersist=!0},this.setEventListeners=()=>{this.core.heartbeat.on(In.pulse,async()=>{this.shouldPersist&&await this.persist(),this.events.forEach(n=>{Y.fromMiliseconds(Date.now())-Y.fromMiliseconds(n.timestamp)>b9&&(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,Ks(Ks({},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(`${v9}?projectId=${this.core.projectId}&st=events_sdk&sv=js-${hc}${s}`,{method:"POST",body:JSON.stringify(n)})},this.getAppDomain=()=>Fd().url,this.logger=Jt(r,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 y_=Object.defineProperty,j0=Object.getOwnPropertySymbols,m_=Object.prototype.hasOwnProperty,w_=Object.prototype.propertyIsEnumerable,K0=(t,e,r)=>e in t?y_(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,V0=(t,e)=>{for(var r in e||(e={}))m_.call(e,r)&&K0(t,r,e[r]);if(j0)for(var r of j0(e))w_.call(e,r)&&K0(t,r,e[r]);return t};class gc extends sg{constructor(e){var r;super(e),this.protocol=s0,this.version=o0,this.name=ta,this.events=new jt.exports.EventEmitter,this.initialized=!1,this.on=(o,a)=>this.events.on(o,a),this.once=(o,a)=>this.events.once(o,a),this.off=(o,a)=>this.events.off(o,a),this.removeListener=(o,a)=>this.events.removeListener(o,a),this.dispatchEnvelope=({topic:o,message:a,sessionExists:c})=>{if(!o||!a)return;const h={topic:o,message:a,publishedAt:Date.now(),transportType:ht.link_mode};this.relayer.onLinkMessageEvent(h,{sessionExists:c})},this.projectId=e?.projectId,this.relayUrl=e?.relayUrl||h0,this.customStoragePrefix=e!=null&&e.customStoragePrefix?`:${e.customStoragePrefix}`:"";const i=Ia({level:typeof e?.logger=="string"&&e.logger?e.logger:L5.logger,name:ta}),{logger:n,chunkLoggerController:s}=ng({opts:i,maxSizeInBytes:e?.maxLogBlobSizeInBytes,loggerOverride:e?.logger});this.logChunkController=s,(r=this.logChunkController)!=null&&r.downloadLogsBlobInBrowser&&(window.downloadLogsBlobInBrowser=async()=>{var o,a;(o=this.logChunkController)!=null&&o.downloadLogsBlobInBrowser&&((a=this.logChunkController)==null||a.downloadLogsBlobInBrowser({clientId:await this.crypto.getClientId()}))}),this.logger=Jt(n,this.name),this.heartbeat=new ma,this.crypto=new z7(this,this.logger,e?.keychain),this.history=new h_(this,this.logger),this.expirer=new u_(this,this.logger),this.storage=e!=null&&e.storage?e.storage:new P1(V0(V0({},q5),e?.storageOptions)),this.relayer=new s_({core:this,logger:this.logger,relayUrl:this.relayUrl,projectId:this.projectId}),this.pairing=new c_(this,this.logger),this.verify=new d_(this,this.logger,this.storage),this.echoClient=new l_(this.projectId||"",this.logger),this.linkModeSupportedApps=[],this.eventClient=new v_(this,this.logger,e?.telemetryEnabled)}static async init(e){const r=new gc(e);await r.initialize();const i=await r.crypto.getClientId();return await r.storage.setItem(Z5,i),r}get context(){return tr(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(u0,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.linkModeSupportedApps=await this.storage.getItem(u0)||[],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 bc=gc,H0="wc",W0=2,G0="client",vc=`${H0}@${W0}:${G0}:`,yc={name:G0,logger:"error",controller:!1,relayUrl:"wss://relay.walletconnect.org"},J0="WALLETCONNECT_DEEPLINK_CHOICE",__="proposal",x_="Proposal expired",E_="session",ts=Y.SEVEN_DAYS,S_="engine",Rt={wc_sessionPropose:{req:{ttl:Y.FIVE_MINUTES,prompt:!0,tag:1100},res:{ttl:Y.FIVE_MINUTES,prompt:!1,tag:1101},reject:{ttl:Y.FIVE_MINUTES,prompt:!1,tag:1120},autoReject:{ttl:Y.FIVE_MINUTES,prompt:!1,tag:1121}},wc_sessionSettle:{req:{ttl:Y.FIVE_MINUTES,prompt:!1,tag:1102},res:{ttl:Y.FIVE_MINUTES,prompt:!1,tag:1103}},wc_sessionUpdate:{req:{ttl:Y.ONE_DAY,prompt:!1,tag:1104},res:{ttl:Y.ONE_DAY,prompt:!1,tag:1105}},wc_sessionExtend:{req:{ttl:Y.ONE_DAY,prompt:!1,tag:1106},res:{ttl:Y.ONE_DAY,prompt:!1,tag:1107}},wc_sessionRequest:{req:{ttl:Y.FIVE_MINUTES,prompt:!0,tag:1108},res:{ttl:Y.FIVE_MINUTES,prompt:!1,tag:1109}},wc_sessionEvent:{req:{ttl:Y.FIVE_MINUTES,prompt:!0,tag:1110},res:{ttl:Y.FIVE_MINUTES,prompt:!1,tag:1111}},wc_sessionDelete:{req:{ttl:Y.ONE_DAY,prompt:!1,tag:1112},res:{ttl:Y.ONE_DAY,prompt:!1,tag:1113}},wc_sessionPing:{req:{ttl:Y.ONE_DAY,prompt:!1,tag:1114},res:{ttl:Y.ONE_DAY,prompt:!1,tag:1115}},wc_sessionAuthenticate:{req:{ttl:Y.ONE_HOUR,prompt:!0,tag:1116},res:{ttl:Y.ONE_HOUR,prompt:!1,tag:1117},reject:{ttl:Y.FIVE_MINUTES,prompt:!1,tag:1118},autoReject:{ttl:Y.FIVE_MINUTES,prompt:!1,tag:1119}}},mc={min:Y.FIVE_MINUTES,max:Y.SEVEN_DAYS},oi={idle:"IDLE",active:"ACTIVE"},M_="request",I_=["wc_sessionPropose","wc_sessionRequest","wc_authRequest","wc_sessionAuthenticate"],A_="wc",D_="auth",O_="authKeys",P_="pairingTopics",R_="requests",ia=`${A_}@${1.5}:${D_}:`,na=`${ia}:PUB_KEY`;var $_=Object.defineProperty,N_=Object.defineProperties,T_=Object.getOwnPropertyDescriptors,Y0=Object.getOwnPropertySymbols,F_=Object.prototype.hasOwnProperty,C_=Object.prototype.propertyIsEnumerable,X0=(t,e,r)=>e in t?$_(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,gt=(t,e)=>{for(var r in e||(e={}))F_.call(e,r)&&X0(t,r,e[r]);if(Y0)for(var r of Y0(e))C_.call(e,r)&&X0(t,r,e[r]);return t},kr=(t,e)=>N_(t,T_(e));class B_ extends vg{constructor(e){super(e),this.name=S_,this.events=new jt.exports,this.initialized=!1,this.requestQueue={state:oi.idle,queue:[]},this.sessionRequestQueue={state:oi.idle,queue:[]},this.requestQueueDelay=Y.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()},Y.toMiliseconds(this.requestQueueDelay)))},this.connect=async r=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();const i=kr(gt({},r),{requiredNamespaces:r.requiredNamespaces||{},optionalNamespaces:r.optionalNamespaces||{}});await this.isValidConnect(i);const{pairingTopic:n,requiredNamespaces:s,optionalNamespaces:o,sessionProperties:a,relays:c}=i;let h=n,l,y=!1;try{if(h){const L=this.client.core.pairing.pairings.get(h);this.client.logger.warn("connect() with existing pairing topic is deprecated and will be removed in the next major release."),y=L.active}}catch(L){throw this.client.logger.error(`connect() -> pairing.get(${h}) failed`),L}if(!h||!y){const{topic:L,uri:k}=await this.client.core.pairing.create();h=L,l=k}if(!h){const{message:L}=Z("NO_MATCHING_KEY",`connect() pairing topic: ${h}`);throw new Error(L)}const M=await this.client.core.crypto.generateKeyPair(),I=Rt.wc_sessionPropose.req.ttl||Y.FIVE_MINUTES,S=Et(I),D=gt({requiredNamespaces:s,optionalNamespaces:o,relays:c??[{protocol:c0}],proposer:{publicKey:M,metadata:this.client.metadata},expiryTimestamp:S,pairingTopic:h},a&&{sessionProperties:a}),{reject:R,resolve:$,done:T}=ln(I,x_);this.events.once(Se("session_connect"),async({error:L,session:k})=>{if(L)R(L);else if(k){k.self.publicKey=M;const j=kr(gt({},k),{pairingTopic:D.pairingTopic,requiredNamespaces:D.requiredNamespaces,optionalNamespaces:D.optionalNamespaces,transportType:ht.relay});await this.client.session.set(k.topic,j),await this.setExpiry(k.topic,k.expiry),h&&await this.client.core.pairing.updateMetadata({topic:h,metadata:k.peer.metadata}),this.cleanupDuplicatePairings(j),$(j)}});const C=await this.sendRequest({topic:h,method:"wc_sessionPropose",params:D,throwOnFailedPublish:!0});return await this.setProposal(C,gt({id:C},D)),{uri:l,approval:T}},this.pair=async r=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{return await this.client.core.pairing.pair(r)}catch(i){throw this.client.logger.error("pair() failed"),i}},this.approve=async r=>{var i,n,s;const o=this.client.core.eventClient.createEvent({properties:{topic:(i=r?.id)==null?void 0:i.toString(),trace:[zr.session_approve_started]}});try{this.isInitialized(),await this.confirmOnlineStateOrThrow()}catch(K){throw o.setError(mn.no_internet_connection),K}try{await this.isValidProposalId(r?.id)}catch(K){throw this.client.logger.error(`approve() -> proposal.get(${r?.id}) failed`),o.setError(mn.proposal_not_found),K}try{await this.isValidApprove(r)}catch(K){throw this.client.logger.error("approve() -> isValidApprove() failed"),o.setError(mn.session_approve_namespace_validation_failure),K}const{id:a,relayProtocol:c,namespaces:h,sessionProperties:l,sessionConfig:y}=r,M=this.client.proposal.get(a);this.client.core.eventClient.deleteEvent({eventId:o.eventId});const{pairingTopic:I,proposer:S,requiredNamespaces:D,optionalNamespaces:R}=M;let $=(n=this.client.core.eventClient)==null?void 0:n.getEvent({topic:I});$||($=(s=this.client.core.eventClient)==null?void 0:s.createEvent({type:zr.session_approve_started,properties:{topic:I,trace:[zr.session_approve_started,zr.session_namespaces_validation_success]}}));const T=await this.client.core.crypto.generateKeyPair(),C=S.publicKey,L=await this.client.core.crypto.generateSharedKey(T,C),k=gt(gt({relay:{protocol:c??"irn"},namespaces:h,controller:{publicKey:T,metadata:this.client.metadata},expiry:Et(ts)},l&&{sessionProperties:l}),y&&{sessionConfig:y}),j=ht.relay;$.addTrace(zr.subscribing_session_topic);try{await this.client.core.relayer.subscribe(L,{transportType:j})}catch(K){throw $.setError(mn.subscribe_session_topic_failure),K}$.addTrace(zr.subscribe_session_topic_success);const G=kr(gt({},k),{topic:L,requiredNamespaces:D,optionalNamespaces:R,pairingTopic:I,acknowledged:!1,self:k.controller,peer:{publicKey:S.publicKey,metadata:S.metadata},controller:T,transportType:ht.relay});await this.client.session.set(L,G),$.addTrace(zr.store_session);try{$.addTrace(zr.publishing_session_settle),await this.sendRequest({topic:L,method:"wc_sessionSettle",params:k,throwOnFailedPublish:!0}).catch(K=>{throw $?.setError(mn.session_settle_publish_failure),K}),$.addTrace(zr.session_settle_publish_success),$.addTrace(zr.publishing_session_approve),await this.sendResult({id:a,topic:I,result:{relay:{protocol:c??"irn"},responderPublicKey:T},throwOnFailedPublish:!0}).catch(K=>{throw $?.setError(mn.session_approve_publish_failure),K}),$.addTrace(zr.session_approve_publish_success)}catch(K){throw this.client.logger.error(K),this.client.session.delete(L,ct("USER_DISCONNECTED")),await this.client.core.relayer.unsubscribe(L),K}return this.client.core.eventClient.deleteEvent({eventId:$.eventId}),await this.client.core.pairing.updateMetadata({topic:I,metadata:S.metadata}),await this.client.proposal.delete(a,ct("USER_DISCONNECTED")),await this.client.core.pairing.activate({topic:I}),await this.setExpiry(L,Et(ts)),{topic:L,acknowledged:()=>Promise.resolve(this.client.session.get(L))}},this.reject=async r=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{await this.isValidReject(r)}catch(o){throw this.client.logger.error("reject() -> isValidReject() failed"),o}const{id:i,reason:n}=r;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 r=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{await this.isValidUpdate(r)}catch(y){throw this.client.logger.error("update() -> isValidUpdate() failed"),y}const{topic:i,namespaces:n}=r,{done:s,resolve:o,reject:a}=ln(),c=wi(),h=bn().toString(),l=this.client.session.get(i).namespaces;return this.events.once(Se("session_update",c),({error:y})=>{y?a(y):o()}),await this.client.session.update(i,{namespaces:n}),await this.sendRequest({topic:i,method:"wc_sessionUpdate",params:{namespaces:n},throwOnFailedPublish:!0,clientRpcId:c,relayRpcId:h}).catch(y=>{this.client.logger.error(y),this.client.session.update(i,{namespaces:l}),a(y)}),{acknowledged:s}},this.extend=async r=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{await this.isValidExtend(r)}catch(c){throw this.client.logger.error("extend() -> isValidExtend() failed"),c}const{topic:i}=r,n=wi(),{done:s,resolve:o,reject:a}=ln();return this.events.once(Se("session_extend",n),({error:c})=>{c?a(c):o()}),await this.setExpiry(i,Et(ts)),this.sendRequest({topic:i,method:"wc_sessionExtend",params:{},clientRpcId:n,throwOnFailedPublish:!0}).catch(c=>{a(c)}),{acknowledged:s}},this.request=async r=>{this.isInitialized();try{await this.isValidRequest(r)}catch(S){throw this.client.logger.error("request() -> isValidRequest() failed"),S}const{chainId:i,request:n,topic:s,expiry:o=Rt.wc_sessionRequest.req.ttl}=r,a=this.client.session.get(s);a?.transportType===ht.relay&&await this.confirmOnlineStateOrThrow();const c=wi(),h=bn().toString(),{done:l,resolve:y,reject:M}=ln(o,"Request expired. Please try again.");this.events.once(Se("session_request",c),({error:S,result:D})=>{S?M(S):y(D)});const I=this.getAppLinkIfEnabled(a.peer.metadata,a.transportType);return I?(await this.sendRequest({clientRpcId:c,relayRpcId:h,topic:s,method:"wc_sessionRequest",params:{request:kr(gt({},n),{expiryTimestamp:Et(o)}),chainId:i},expiry:o,throwOnFailedPublish:!0,appLink:I}).catch(S=>M(S)),this.client.events.emit("session_request_sent",{topic:s,request:n,chainId:i,id:c}),await l()):await Promise.all([new Promise(async S=>{await this.sendRequest({clientRpcId:c,relayRpcId:h,topic:s,method:"wc_sessionRequest",params:{request:kr(gt({},n),{expiryTimestamp:Et(o)}),chainId:i},expiry:o,throwOnFailedPublish:!0}).catch(D=>M(D)),this.client.events.emit("session_request_sent",{topic:s,request:n,chainId:i,id:c}),S()}),new Promise(async S=>{var D;if(!((D=a.sessionConfig)!=null&&D.disableDeepLink)){const R=await c6(this.client.core.storage,J0);await o6({id:c,topic:s,wcDeepLink:R})}S()}),l()]).then(S=>S[2])},this.respond=async r=>{this.isInitialized(),await this.isValidRespond(r);const{topic:i,response:n}=r,{id:s}=n,o=this.client.session.get(i);o.transportType===ht.relay&&await this.confirmOnlineStateOrThrow();const a=this.getAppLinkIfEnabled(o.peer.metadata,o.transportType);ii(n)?await this.sendResult({id:s,topic:i,result:n.result,throwOnFailedPublish:!0,appLink:a}):Ar(n)&&await this.sendError({id:s,topic:i,error:n.error,appLink:a}),this.cleanupAfterResponse(r)},this.ping=async r=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{await this.isValidPing(r)}catch(n){throw this.client.logger.error("ping() -> isValidPing() failed"),n}const{topic:i}=r;if(this.client.session.keys.includes(i)){const n=wi(),s=bn().toString(),{done:o,resolve:a,reject:c}=ln();this.events.once(Se("session_ping",n),({error:h})=>{h?c(h):a()}),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)&&(this.client.logger.warn("ping() on pairing topic is deprecated and will be removed in the next major release."),await this.client.core.pairing.ping({topic:i}))},this.emit=async r=>{this.isInitialized(),await this.confirmOnlineStateOrThrow(),await this.isValidEmit(r);const{topic:i,event:n,chainId:s}=r,o=bn().toString(),a=wi();await this.sendRequest({topic:i,method:"wc_sessionEvent",params:{event:n,chainId:s},throwOnFailedPublish:!0,relayRpcId:o,clientRpcId:a})},this.disconnect=async r=>{this.isInitialized(),await this.confirmOnlineStateOrThrow(),await this.isValidDisconnect(r);const{topic:i}=r;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}=Z("MISMATCHED_TOPIC",`Session or pairing topic not found: ${i}`);throw new Error(n)}},this.find=r=>(this.isInitialized(),this.client.session.getAll().filter(i=>y8(i,r))),this.getPendingSessionRequests=()=>this.client.pendingRequest.getAll(),this.authenticate=async(r,i)=>{var n;this.isInitialized(),this.isValidAuthenticate(r);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:a,statement:c="",uri:h,domain:l,nonce:y,type:M,exp:I,nbf:S,methods:D=[],expiry:R}=r,$=[...r.resources||[]],{topic:T,uri:C}=await this.client.core.pairing.create({methods:["wc_sessionAuthenticate"],transportType:o});this.client.logger.info({message:"Generated new pairing",pairing:{topic:T,uri:C}});const L=await this.client.core.crypto.generateKeyPair(),k=Go(L);if(await Promise.all([this.client.auth.authKeys.set(na,{responseTopic:k,publicKey:L}),this.client.auth.pairingTopics.set(k,{topic:k,pairingTopic:T})]),await this.client.core.relayer.subscribe(k,{transportType:o}),this.client.logger.info(`sending request to new pairing topic: ${T}`),D.length>0){const{namespace:E}=qo(a[0]);let w=Z6(E,"request",D);Ko($)&&(w=e4(w,$.pop())),$.push(w)}const j=R&&R>Rt.wc_sessionAuthenticate.req.ttl?R:Rt.wc_sessionAuthenticate.req.ttl,G={authPayload:{type:M??"caip122",chains:a,statement:c,aud:h,domain:l,version:"1",nonce:y,iat:new Date().toISOString(),exp:I,nbf:S,resources:$},requester:{publicKey:L,metadata:this.client.metadata},expiryTimestamp:Et(j)},K={eip155:{chains:a,methods:[...new Set(["personal_sign",...D])],events:["chainChanged","accountsChanged"]}},V={requiredNamespaces:{},optionalNamespaces:K,relays:[{protocol:"irn"}],pairingTopic:T,proposer:{publicKey:L,metadata:this.client.metadata},expiryTimestamp:Et(Rt.wc_sessionPropose.req.ttl)},{done:re,resolve:O,reject:g}=ln(j,"Request expired"),p=async({error:E,session:w})=>{if(this.events.off(Se("session_request",u),f),E)g(E);else if(w){w.self.publicKey=L,await this.client.session.set(w.topic,w),await this.setExpiry(w.topic,w.expiry),T&&await this.client.core.pairing.updateMetadata({topic:T,metadata:w.peer.metadata});const d=this.client.session.get(w.topic);await this.deleteProposal(b),O({session:d})}},f=async E=>{var w,d,m;if(await this.deletePendingAuthRequest(u,{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(Se("session_connect"),p),g(E.error.message))}await this.deleteProposal(b),this.events.off(Se("session_connect"),p);const{cacaos:v,responder:A}=E.result,U=[],x=[];for(const q of v){await il({cacao:q,projectId:this.client.core.projectId})||(this.client.logger.error(q,"Signature verification failed"),g(ct("SESSION_SETTLEMENT_FAILED","Signature verification failed")));const{p:z}=q,J=Ko(z.resources),X=[qf(z.iss)],W=jo(z.iss);if(J){const ne=ol(J),Q=al(J);U.push(...ne),X.push(...Q)}for(const ne of X)x.push(`${ne}:${W}`)}const N=await this.client.core.crypto.generateSharedKey(L,A.publicKey);let B;U.length>0&&(B={topic:N,acknowledged:!0,self:{publicKey:L,metadata:this.client.metadata},peer:A,controller:A.publicKey,expiry:Et(ts),requiredNamespaces:{},optionalNamespaces:{},relay:{protocol:"irn"},pairingTopic:T,namespaces:Ul([...new Set(U)],[...new Set(x)]),transportType:o},await this.client.core.relayer.subscribe(N,{transportType:o}),await this.client.session.set(N,B),T&&await this.client.core.pairing.updateMetadata({topic:T,metadata:A.metadata}),B=this.client.session.get(N)),(w=this.client.metadata.redirect)!=null&&w.linkMode&&(d=A.metadata.redirect)!=null&&d.linkMode&&(m=A.metadata.redirect)!=null&&m.universal&&i&&(this.client.core.addLinkModeSupportedApp(A.metadata.redirect.universal),this.client.session.update(N,{transportType:ht.link_mode})),O({auths:v,session:B})},u=wi(),b=wi();this.events.once(Se("session_connect"),p),this.events.once(Se("session_request",u),f);let _;try{if(s){const E=vn("wc_sessionAuthenticate",G,u);this.client.core.history.set(T,E);const w=await this.client.core.crypto.encode("",E,{type:$s,encoding:Ps});_=Yo(i,T,w)}else await Promise.all([this.sendRequest({topic:T,method:"wc_sessionAuthenticate",params:G,expiry:r.expiry,throwOnFailedPublish:!0,clientRpcId:u}),this.sendRequest({topic:T,method:"wc_sessionPropose",params:V,expiry:Rt.wc_sessionPropose.req.ttl,throwOnFailedPublish:!0,clientRpcId:b})])}catch(E){throw this.events.off(Se("session_connect"),p),this.events.off(Se("session_request",u),f),E}return await this.setProposal(b,gt({id:b},V)),await this.setAuthRequest(u,{request:kr(gt({},G),{verifyContext:{}}),pairingTopic:T,transportType:o}),{uri:_??C,response:re}},this.approveSessionAuthenticate=async r=>{const{id:i,auths:n}=r,s=this.client.core.eventClient.createEvent({properties:{topic:i.toString(),trace:[wn.authenticated_session_approve_started]}});try{this.isInitialized()}catch(R){throw s.setError(zs.no_internet_connection),R}const o=this.getPendingAuthRequest(i);if(!o)throw s.setError(zs.authenticated_session_pending_request_not_found),new Error(`Could not find pending auth request with id ${i}`);const a=o.transportType||ht.relay;a===ht.relay&&await this.confirmOnlineStateOrThrow();const c=o.requester.publicKey,h=await this.client.core.crypto.generateKeyPair(),l=Go(c),y={type:bi,receiverPublicKey:c,senderPublicKey:h},M=[],I=[];for(const R of n){if(!await il({cacao:R,projectId:this.client.core.projectId})){s.setError(zs.invalid_cacao);const k=ct("SESSION_SETTLEMENT_FAILED","Signature verification failed");throw await this.sendError({id:i,topic:l,error:k,encodeOpts:y}),new Error(k.message)}s.addTrace(wn.cacaos_verified);const{p:$}=R,T=Ko($.resources),C=[qf($.iss)],L=jo($.iss);if(T){const k=ol(T),j=al(T);M.push(...k),C.push(...j)}for(const k of C)I.push(`${k}:${L}`)}const S=await this.client.core.crypto.generateSharedKey(h,c);s.addTrace(wn.create_authenticated_session_topic);let D;if(M?.length>0){D={topic:S,acknowledged:!0,self:{publicKey:h,metadata:this.client.metadata},peer:{publicKey:c,metadata:o.requester.metadata},controller:c,expiry:Et(ts),authentication:n,requiredNamespaces:{},optionalNamespaces:{},relay:{protocol:"irn"},pairingTopic:o.pairingTopic,namespaces:Ul([...new Set(M)],[...new Set(I)]),transportType:a},s.addTrace(wn.subscribing_authenticated_session_topic);try{await this.client.core.relayer.subscribe(S,{transportType:a})}catch(R){throw s.setError(zs.subscribe_authenticated_session_topic_failure),R}s.addTrace(wn.subscribe_authenticated_session_topic_success),await this.client.session.set(S,D),s.addTrace(wn.store_authenticated_session),await this.client.core.pairing.updateMetadata({topic:o.pairingTopic,metadata:o.requester.metadata})}s.addTrace(wn.publishing_authenticated_session_approve);try{await this.sendResult({topic:l,id:i,result:{cacaos:n,responder:{publicKey:h,metadata:this.client.metadata}},encodeOpts:y,throwOnFailedPublish:!0,appLink:this.getAppLinkIfEnabled(o.requester.metadata,a)})}catch(R){throw s.setError(zs.authenticated_session_approve_publish_failure),R}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:D}},this.rejectSessionAuthenticate=async r=>{this.isInitialized();const{id:i,reason:n}=r,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,a=await this.client.core.crypto.generateKeyPair(),c=Go(o),h={type:bi,receiverPublicKey:o,senderPublicKey:a};await this.sendError({id:i,topic:c,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=r=>{this.isInitialized();const{request:i,iss:n}=r;return nl(i,n)},this.processRelayMessageCache=()=>{setTimeout(async()=>{if(this.relayMessageCache.length!==0)for(;this.relayMessageCache.length>0;)try{const r=this.relayMessageCache.shift();r&&await this.onRelayMessage(r)}catch(r){this.client.logger.error(r)}},50)},this.cleanupDuplicatePairings=async r=>{if(r.pairingTopic)try{const i=this.client.core.pairing.pairings.get(r.pairingTopic),n=this.client.core.pairing.pairings.getAll().filter(s=>{var o,a;return((o=s.peerMetadata)==null?void 0:o.url)&&((a=s.peerMetadata)==null?void 0:a.url)===r.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 r=>{var i;const{topic:n,expirerHasDeleted:s=!1,emitEvent:o=!0,id:a=0}=r,{self:c}=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(c.publicKey)&&await this.client.core.crypto.deleteKeyPair(c.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(J0).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=oi.idle),o&&this.client.events.emit("session_delete",{id:a,topic:n})},this.deleteProposal=async(r,i)=>{if(i)try{const n=this.client.proposal.get(r);this.client.core.eventClient.getEvent({topic:n.pairingTopic})?.setError(mn.proposal_expired)}catch{}await Promise.all([this.client.proposal.delete(r,ct("USER_DISCONNECTED")),i?Promise.resolve():this.client.core.expirer.del(r)]),this.addToRecentlyDeleted(r,"proposal")},this.deletePendingSessionRequest=async(r,i,n=!1)=>{await Promise.all([this.client.pendingRequest.delete(r,i),n?Promise.resolve():this.client.core.expirer.del(r)]),this.addToRecentlyDeleted(r,"request"),this.sessionRequestQueue.queue=this.sessionRequestQueue.queue.filter(s=>s.id!==r),n&&(this.sessionRequestQueue.state=oi.idle,this.client.events.emit("session_request_expire",{id:r}))},this.deletePendingAuthRequest=async(r,i,n=!1)=>{await Promise.all([this.client.auth.requests.delete(r,i),n?Promise.resolve():this.client.core.expirer.del(r)])},this.setExpiry=async(r,i)=>{this.client.session.keys.includes(r)&&(this.client.core.expirer.set(r,i),await this.client.session.update(r,{expiry:i}))},this.setProposal=async(r,i)=>{this.client.core.expirer.set(r,Et(Rt.wc_sessionPropose.req.ttl)),await this.client.proposal.set(r,i)},this.setAuthRequest=async(r,i)=>{const{request:n,pairingTopic:s,transportType:o=ht.relay}=i;this.client.core.expirer.set(r,n.expiryTimestamp),await this.client.auth.requests.set(r,{authPayload:n.authPayload,requester:n.requester,expiryTimestamp:n.expiryTimestamp,id:r,pairingTopic:s,verifyContext:n.verifyContext,transportType:o})},this.setPendingSessionRequest=async r=>{const{id:i,topic:n,params:s,verifyContext:o}=r,a=s.request.expiryTimestamp||Et(Rt.wc_sessionRequest.req.ttl);this.client.core.expirer.set(i,a),await this.client.pendingRequest.set(i,{id:i,topic:n,params:s,verifyContext:o})},this.sendRequest=async r=>{const{topic:i,method:n,params:s,expiry:o,relayRpcId:a,clientRpcId:c,throwOnFailedPublish:h,appLink:l}=r,y=vn(n,s,c);let M;const I=!!l;try{const R=I?Ps:Gi;M=await this.client.core.crypto.encode(i,y,{encoding:R})}catch(R){throw await this.cleanup(),this.client.logger.error(`sendRequest() -> core.crypto.encode() for topic ${i} failed`),R}let S;if(I_.includes(n)){const R=vi(JSON.stringify(y)),$=vi(M);S=await this.client.core.verify.register({id:$,decryptedId:R})}const D=Rt[n].req;if(D.attestation=S,o&&(D.ttl=o),a&&(D.id=a),this.client.core.history.set(i,y),I){const R=Yo(l,i,M);await global.Linking.openURL(R,this.client.name)}else{const R=Rt[n].req;o&&(R.ttl=o),a&&(R.id=a),h?(R.internal=kr(gt({},R.internal),{throwOnFailedPublish:!0}),await this.client.core.relayer.publish(i,M,R)):this.client.core.relayer.publish(i,M,R).catch($=>this.client.logger.error($))}return y.id},this.sendResult=async r=>{const{id:i,topic:n,result:s,throwOnFailedPublish:o,encodeOpts:a,appLink:c}=r,h=oc(i,s);let l;const y=c&&typeof(global==null?void 0:global.Linking)<"u";try{const I=y?Ps:Gi;l=await this.client.core.crypto.encode(n,h,kr(gt({},a||{}),{encoding:I}))}catch(I){throw await this.cleanup(),this.client.logger.error(`sendResult() -> core.crypto.encode() for topic ${n} failed`),I}let M;try{M=await this.client.core.history.get(n,i)}catch(I){throw this.client.logger.error(`sendResult() -> history.get(${n}, ${i}) failed`),I}if(y){const I=Yo(c,n,l);await global.Linking.openURL(I,this.client.name)}else{const I=Rt[M.request.method].res;o?(I.internal=kr(gt({},I.internal),{throwOnFailedPublish:!0}),await this.client.core.relayer.publish(n,l,I)):this.client.core.relayer.publish(n,l,I).catch(S=>this.client.logger.error(S))}await this.client.core.history.resolve(h)},this.sendError=async r=>{const{id:i,topic:n,error:s,encodeOpts:o,rpcOpts:a,appLink:c}=r,h=ac(i,s);let l;const y=c&&typeof(global==null?void 0:global.Linking)<"u";try{const I=y?Ps:Gi;l=await this.client.core.crypto.encode(n,h,kr(gt({},o||{}),{encoding:I}))}catch(I){throw await this.cleanup(),this.client.logger.error(`sendError() -> core.crypto.encode() for topic ${n} failed`),I}let M;try{M=await this.client.core.history.get(n,i)}catch(I){throw this.client.logger.error(`sendError() -> history.get(${n}, ${i}) failed`),I}if(y){const I=Yo(c,n,l);await global.Linking.openURL(I,this.client.name)}else{const I=a||Rt[M.request.method].res;this.client.core.relayer.publish(n,l,I)}await this.client.core.history.resolve(h)},this.cleanup=async()=>{const r=[],i=[];this.client.session.getAll().forEach(n=>{let s=!1;Ki(n.expiry)&&(s=!0),this.client.core.crypto.keychain.has(n.topic)||(s=!0),s&&r.push(n.topic)}),this.client.proposal.getAll().forEach(n=>{Ki(n.expiryTimestamp)&&i.push(n.id)}),await Promise.all([...r.map(n=>this.deleteSession({topic:n})),...i.map(n=>this.deleteProposal(n))])},this.onRelayEventRequest=async r=>{this.requestQueue.queue.push(r),await this.processRequestsQueue()},this.processRequestsQueue=async()=>{if(this.requestQueue.state===oi.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=oi.active;const r=this.requestQueue.queue.shift();if(r)try{await this.processRequest(r)}catch(i){this.client.logger.warn(i)}}this.requestQueue.state=oi.idle},this.processRequest=async r=>{const{topic:i,payload:n,attestation:s,transportType:o,encryptedId:a}=r,c=n.method;if(!this.shouldIgnorePairingRequest({topic:i,requestMethod:c}))switch(c){case"wc_sessionPropose":return await this.onSessionProposeRequest({topic:i,payload:n,attestation:s,encryptedId:a});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:a,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:a,transportType:o});default:return this.client.logger.info(`Unsupported request method ${c}`)}},this.onRelayEventResponse=async r=>{const{topic:i,payload:n,transportType:s}=r,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=r=>{const{topic:i}=r,{message:n}=Z("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=r=>{const{topic:i,requestMethod:n}=r,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 r=>{const{topic:i,payload:n,attestation:s,encryptedId:o}=r,{params:a,id:c}=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(_i.proposal_listener_not_found)),this.isValidConnect(gt({},n.params));const l=a.expiryTimestamp||Et(Rt.wc_sessionPropose.req.ttl),y=gt({id:c,pairingTopic:i,expiryTimestamp:l},a);await this.setProposal(c,y);const M=await this.getVerifyContext({attestationId:s,hash:vi(JSON.stringify(n)),encryptedId:o,metadata:y.proposer.metadata});h?.addTrace(si.emit_session_proposal),this.client.events.emit("session_proposal",{id:c,params:y,verifyContext:M})}catch(h){await this.sendError({id:c,topic:i,error:h,rpcOpts:Rt.wc_sessionPropose.autoReject}),this.client.logger.error(h)}},this.onSessionProposeResponse=async(r,i,n)=>{const{id:s}=i;if(ii(i)){const{result:o}=i;this.client.logger.trace({type:"method",method:"onSessionProposeResponse",result:o});const a=this.client.proposal.get(s);this.client.logger.trace({type:"method",method:"onSessionProposeResponse",proposal:a});const c=a.proposer.publicKey;this.client.logger.trace({type:"method",method:"onSessionProposeResponse",selfPublicKey:c});const h=o.responderPublicKey;this.client.logger.trace({type:"method",method:"onSessionProposeResponse",peerPublicKey:h});const l=await this.client.core.crypto.generateSharedKey(c,h);this.client.logger.trace({type:"method",method:"onSessionProposeResponse",sessionTopic:l});const y=await this.client.core.relayer.subscribe(l,{transportType:n});this.client.logger.trace({type:"method",method:"onSessionProposeResponse",subscriptionId:y}),await this.client.core.pairing.activate({topic:r})}else if(Ar(i)){await this.client.proposal.delete(s,ct("USER_DISCONNECTED"));const o=Se("session_connect");if(this.events.listenerCount(o)===0)throw new Error(`emitting ${o} without any listeners, 954`);this.events.emit(Se("session_connect"),{error:i.error})}},this.onSessionSettleRequest=async(r,i)=>{const{id:n,params:s}=i;try{this.isValidSessionSettleRequest(s);const{relay:o,controller:a,expiry:c,namespaces:h,sessionProperties:l,sessionConfig:y}=i.params,M=kr(gt(gt({topic:r,relay:o,expiry:c,namespaces:h,acknowledged:!0,pairingTopic:"",requiredNamespaces:{},optionalNamespaces:{},controller:a.publicKey,self:{publicKey:"",metadata:this.client.metadata},peer:{publicKey:a.publicKey,metadata:a.metadata}},l&&{sessionProperties:l}),y&&{sessionConfig:y}),{transportType:ht.relay}),I=Se("session_connect");if(this.events.listenerCount(I)===0)throw new Error(`emitting ${I} without any listeners 997`);this.events.emit(Se("session_connect"),{session:M}),await this.sendResult({id:i.id,topic:r,result:!0,throwOnFailedPublish:!0})}catch(o){await this.sendError({id:n,topic:r,error:o}),this.client.logger.error(o)}},this.onSessionSettleResponse=async(r,i)=>{const{id:n}=i;ii(i)?(await this.client.session.update(r,{acknowledged:!0}),this.events.emit(Se("session_approve",n),{})):Ar(i)&&(await this.client.session.delete(r,ct("USER_DISCONNECTED")),this.events.emit(Se("session_approve",n),{error:i.error}))},this.onSessionUpdateRequest=async(r,i)=>{const{params:n,id:s}=i;try{const o=`${r}_session_update`,a=Cs.get(o);if(a&&this.isRequestOutOfSync(a,s)){this.client.logger.warn(`Discarding out of sync request - ${s}`),this.sendError({id:s,topic:r,error:ct("INVALID_UPDATE_REQUEST")});return}this.isValidUpdate(gt({topic:r},n));try{Cs.set(o,s),await this.client.session.update(r,{namespaces:n.namespaces}),await this.sendResult({id:s,topic:r,result:!0,throwOnFailedPublish:!0})}catch(c){throw Cs.delete(o),c}this.client.events.emit("session_update",{id:s,topic:r,params:n})}catch(o){await this.sendError({id:s,topic:r,error:o}),this.client.logger.error(o)}},this.isRequestOutOfSync=(r,i)=>i.toString().slice(0,-3)<r.toString().slice(0,-3),this.onSessionUpdateResponse=(r,i)=>{const{id:n}=i,s=Se("session_update",n);if(this.events.listenerCount(s)===0)throw new Error(`emitting ${s} without any listeners`);ii(i)?this.events.emit(Se("session_update",n),{}):Ar(i)&&this.events.emit(Se("session_update",n),{error:i.error})},this.onSessionExtendRequest=async(r,i)=>{const{id:n}=i;try{this.isValidExtend({topic:r}),await this.setExpiry(r,Et(ts)),await this.sendResult({id:n,topic:r,result:!0,throwOnFailedPublish:!0}),this.client.events.emit("session_extend",{id:n,topic:r})}catch(s){await this.sendError({id:n,topic:r,error:s}),this.client.logger.error(s)}},this.onSessionExtendResponse=(r,i)=>{const{id:n}=i,s=Se("session_extend",n);if(this.events.listenerCount(s)===0)throw new Error(`emitting ${s} without any listeners`);ii(i)?this.events.emit(Se("session_extend",n),{}):Ar(i)&&this.events.emit(Se("session_extend",n),{error:i.error})},this.onSessionPingRequest=async(r,i)=>{const{id:n}=i;try{this.isValidPing({topic:r}),await this.sendResult({id:n,topic:r,result:!0,throwOnFailedPublish:!0}),this.client.events.emit("session_ping",{id:n,topic:r})}catch(s){await this.sendError({id:n,topic:r,error:s}),this.client.logger.error(s)}},this.onSessionPingResponse=(r,i)=>{const{id:n}=i,s=Se("session_ping",n);if(this.events.listenerCount(s)===0)throw new Error(`emitting ${s} without any listeners`);setTimeout(()=>{ii(i)?this.events.emit(Se("session_ping",n),{}):Ar(i)&&this.events.emit(Se("session_ping",n),{error:i.error})},500)},this.onSessionDeleteRequest=async(r,i)=>{const{id:n}=i;try{this.isValidDisconnect({topic:r,reason:i.params}),Promise.all([new Promise(s=>{this.client.core.relayer.once(Pt.publish,async()=>{s(await this.deleteSession({topic:r,id:n}))})}),this.sendResult({id:n,topic:r,result:!0,throwOnFailedPublish:!0}),this.cleanupPendingSentRequestsForTopic({topic:r,error:ct("USER_DISCONNECTED")})]).catch(s=>this.client.logger.error(s))}catch(s){this.client.logger.error(s)}},this.onSessionRequest=async r=>{var i,n,s;const{topic:o,payload:a,attestation:c,encryptedId:h,transportType:l}=r,{id:y,params:M}=a;try{await this.isValidRequest(gt({topic:o},M));const I=this.client.session.get(o),S=await this.getVerifyContext({attestationId:c,hash:vi(JSON.stringify(vn("wc_sessionRequest",M,y))),encryptedId:h,metadata:I.peer.metadata,transportType:l}),D={id:y,topic:o,params:M,verifyContext:S};await this.setPendingSessionRequest(D),l===ht.link_mode&&(i=I.peer.metadata.redirect)!=null&&i.universal&&this.client.core.addLinkModeSupportedApp((n=I.peer.metadata.redirect)==null?void 0:n.universal),(s=this.client.signConfig)!=null&&s.disableRequestQueue?this.emitSessionRequest(D):(this.addSessionRequestToSessionRequestQueue(D),this.processSessionRequestQueue())}catch(I){await this.sendError({id:y,topic:o,error:I}),this.client.logger.error(I)}},this.onSessionRequestResponse=(r,i)=>{const{id:n}=i,s=Se("session_request",n);if(this.events.listenerCount(s)===0)throw new Error(`emitting ${s} without any listeners`);ii(i)?this.events.emit(Se("session_request",n),{result:i.result}):Ar(i)&&this.events.emit(Se("session_request",n),{error:i.error})},this.onSessionEventRequest=async(r,i)=>{const{id:n,params:s}=i;try{const o=`${r}_session_event_${s.event.name}`,a=Cs.get(o);if(a&&this.isRequestOutOfSync(a,n)){this.client.logger.info(`Discarding out of sync request - ${n}`);return}this.isValidEmit(gt({topic:r},s)),this.client.events.emit("session_event",{id:n,topic:r,params:s}),Cs.set(o,n)}catch(o){await this.sendError({id:n,topic:r,error:o}),this.client.logger.error(o)}},this.onSessionAuthenticateResponse=(r,i)=>{const{id:n}=i;this.client.logger.trace({type:"method",method:"onSessionAuthenticateResponse",topic:r,payload:i}),ii(i)?this.events.emit(Se("session_request",n),{result:i.result}):Ar(i)&&this.events.emit(Se("session_request",n),{error:i.error})},this.onSessionAuthenticateRequest=async r=>{var i;const{topic:n,payload:s,attestation:o,encryptedId:a,transportType:c}=r;try{const{requester:h,authPayload:l,expiryTimestamp:y}=s.params,M=await this.getVerifyContext({attestationId:o,hash:vi(JSON.stringify(s)),encryptedId:a,metadata:h.metadata,transportType:c}),I={requester:h,pairingTopic:n,id:s.id,authPayload:l,verifyContext:M,expiryTimestamp:y};await this.setAuthRequest(s.id,{request:I,pairingTopic:n,transportType:c}),c===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:M})}catch(h){this.client.logger.error(h);const l=s.params.requester.publicKey,y=await this.client.core.crypto.generateKeyPair(),M=this.getAppLinkIfEnabled(s.params.requester.metadata,c),I={type:bi,receiverPublicKey:l,senderPublicKey:y};await this.sendError({id:s.id,topic:n,error:h,encodeOpts:I,rpcOpts:Rt.wc_sessionAuthenticate.autoReject,appLink:M})}},this.addSessionRequestToSessionRequestQueue=r=>{this.sessionRequestQueue.queue.push(r)},this.cleanupAfterResponse=r=>{this.deletePendingSessionRequest(r.response.id,{message:"fulfilled",code:0}),setTimeout(()=>{this.sessionRequestQueue.state=oi.idle,this.processSessionRequestQueue()},Y.toMiliseconds(this.requestQueueDelay))},this.cleanupPendingSentRequestsForTopic=({topic:r,error:i})=>{const n=this.client.core.history.pending;n.length>0&&n.filter(s=>s.topic===r&&s.request.method==="wc_sessionRequest").forEach(s=>{const o=s.request.id,a=Se("session_request",o);if(this.events.listenerCount(a)===0)throw new Error(`emitting ${a} without any listeners`);this.events.emit(Se("session_request",s.request.id),{error:i})})},this.processSessionRequestQueue=()=>{if(this.sessionRequestQueue.state===oi.active){this.client.logger.info("session request queue is already active.");return}const r=this.sessionRequestQueue.queue[0];if(!r){this.client.logger.info("session request queue is empty.");return}try{this.sessionRequestQueue.state=oi.active,this.emitSessionRequest(r)}catch(i){this.client.logger.error(i)}},this.emitSessionRequest=r=>{this.client.events.emit("session_request",r)},this.onPairingCreated=r=>{if(r.methods&&this.expectedPairingMethodMap.set(r.topic,r.methods),r.active)return;const i=this.client.proposal.getAll().find(n=>n.pairingTopic===r.topic);i&&this.onSessionProposeRequest({topic:r.topic,payload:vn("wc_sessionPropose",{requiredNamespaces:i.requiredNamespaces,optionalNamespaces:i.optionalNamespaces,relays:i.relays,proposer:i.proposer,sessionProperties:i.sessionProperties},i.id)})},this.isValidConnect=async r=>{if(!or(r)){const{message:c}=Z("MISSING_OR_INVALID",`connect() params: ${JSON.stringify(r)}`);throw new Error(c)}const{pairingTopic:i,requiredNamespaces:n,optionalNamespaces:s,sessionProperties:o,relays:a}=r;if(Qt(i)||await this.isValidPairingTopic(i),!P8(a,!0)){const{message:c}=Z("MISSING_OR_INVALID",`connect() relays: ${a}`);throw new Error(c)}!Qt(n)&&Zo(n)!==0&&this.validateNamespaces(n,"requiredNamespaces"),!Qt(s)&&Zo(s)!==0&&this.validateNamespaces(s,"optionalNamespaces"),Qt(o)||this.validateSessionProps(o,"sessionProperties")},this.validateNamespaces=(r,i)=>{const n=O8(r,"connect()",i);if(n)throw new Error(n.message)},this.isValidApprove=async r=>{if(!or(r))throw new Error(Z("MISSING_OR_INVALID",`approve() params: ${r}`).message);const{id:i,namespaces:n,relayProtocol:s,sessionProperties:o}=r;this.checkRecentlyDeleted(i),await this.isValidProposalId(i);const a=this.client.proposal.get(i),c=ec(n,"approve()");if(c)throw new Error(c.message);const h=Vl(a.requiredNamespaces,n,"approve()");if(h)throw new Error(h.message);if(!mt(s,!0)){const{message:l}=Z("MISSING_OR_INVALID",`approve() relayProtocol: ${s}`);throw new Error(l)}Qt(o)||this.validateSessionProps(o,"sessionProperties")},this.isValidReject=async r=>{if(!or(r)){const{message:s}=Z("MISSING_OR_INVALID",`reject() params: ${r}`);throw new Error(s)}const{id:i,reason:n}=r;if(this.checkRecentlyDeleted(i),await this.isValidProposalId(i),!$8(n)){const{message:s}=Z("MISSING_OR_INVALID",`reject() reason: ${JSON.stringify(n)}`);throw new Error(s)}},this.isValidSessionSettleRequest=r=>{if(!or(r)){const{message:h}=Z("MISSING_OR_INVALID",`onSessionSettleRequest() params: ${r}`);throw new Error(h)}const{relay:i,controller:n,namespaces:s,expiry:o}=r;if(!jl(i)){const{message:h}=Z("MISSING_OR_INVALID","onSessionSettleRequest() relay protocol should be a string");throw new Error(h)}const a=E8(n,"onSessionSettleRequest()");if(a)throw new Error(a.message);const c=ec(s,"onSessionSettleRequest()");if(c)throw new Error(c.message);if(Ki(o)){const{message:h}=Z("EXPIRED","onSessionSettleRequest()");throw new Error(h)}},this.isValidUpdate=async r=>{if(!or(r)){const{message:c}=Z("MISSING_OR_INVALID",`update() params: ${r}`);throw new Error(c)}const{topic:i,namespaces:n}=r;this.checkRecentlyDeleted(i),await this.isValidSessionTopic(i);const s=this.client.session.get(i),o=ec(n,"update()");if(o)throw new Error(o.message);const a=Vl(s.requiredNamespaces,n,"update()");if(a)throw new Error(a.message)},this.isValidExtend=async r=>{if(!or(r)){const{message:n}=Z("MISSING_OR_INVALID",`extend() params: ${r}`);throw new Error(n)}const{topic:i}=r;this.checkRecentlyDeleted(i),await this.isValidSessionTopic(i)},this.isValidRequest=async r=>{if(!or(r)){const{message:c}=Z("MISSING_OR_INVALID",`request() params: ${r}`);throw new Error(c)}const{topic:i,request:n,chainId:s,expiry:o}=r;this.checkRecentlyDeleted(i),await this.isValidSessionTopic(i);const{namespaces:a}=this.client.session.get(i);if(!Kl(a,s)){const{message:c}=Z("MISSING_OR_INVALID",`request() chainId: ${s}`);throw new Error(c)}if(!N8(n)){const{message:c}=Z("MISSING_OR_INVALID",`request() ${JSON.stringify(n)}`);throw new Error(c)}if(!C8(a,s,n.method)){const{message:c}=Z("MISSING_OR_INVALID",`request() method: ${n.method}`);throw new Error(c)}if(o&&!U8(o,mc)){const{message:c}=Z("MISSING_OR_INVALID",`request() expiry: ${o}. Expiry must be a number (in seconds) between ${mc.min} and ${mc.max}`);throw new Error(c)}},this.isValidRespond=async r=>{var i;if(!or(r)){const{message:o}=Z("MISSING_OR_INVALID",`respond() params: ${r}`);throw new Error(o)}const{topic:n,response:s}=r;try{await this.isValidSessionTopic(n)}catch(o){throw(i=r?.response)!=null&&i.id&&this.cleanupAfterResponse(r),o}if(!T8(s)){const{message:o}=Z("MISSING_OR_INVALID",`respond() response: ${JSON.stringify(s)}`);throw new Error(o)}},this.isValidPing=async r=>{if(!or(r)){const{message:n}=Z("MISSING_OR_INVALID",`ping() params: ${r}`);throw new Error(n)}const{topic:i}=r;await this.isValidSessionOrPairingTopic(i)},this.isValidEmit=async r=>{if(!or(r)){const{message:a}=Z("MISSING_OR_INVALID",`emit() params: ${r}`);throw new Error(a)}const{topic:i,event:n,chainId:s}=r;await this.isValidSessionTopic(i);const{namespaces:o}=this.client.session.get(i);if(!Kl(o,s)){const{message:a}=Z("MISSING_OR_INVALID",`emit() chainId: ${s}`);throw new Error(a)}if(!F8(n)){const{message:a}=Z("MISSING_OR_INVALID",`emit() event: ${JSON.stringify(n)}`);throw new Error(a)}if(!B8(o,s,n.name)){const{message:a}=Z("MISSING_OR_INVALID",`emit() event: ${JSON.stringify(n)}`);throw new Error(a)}},this.isValidDisconnect=async r=>{if(!or(r)){const{message:n}=Z("MISSING_OR_INVALID",`disconnect() params: ${r}`);throw new Error(n)}const{topic:i}=r;await this.isValidSessionOrPairingTopic(i)},this.isValidAuthenticate=r=>{const{chains:i,uri:n,domain:s,nonce:o}=r;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(c=>qo(c).namespace))].length>1)throw new Error("Multi-namespace requests are not supported. Please request single namespace only.");const{namespace:a}=qo(i[0]);if(a!=="eip155")throw new Error("Only eip155 namespace is supported for authenticated sessions. Please use .connect() for non-eip155 chains.")},this.getVerifyContext=async r=>{const{attestationId:i,hash:n,encryptedId:s,metadata:o,transportType:a}=r,c={verified:{verifyUrl:o.verifyUrl||Us,validation:"UNKNOWN",origin:o.url||""}};try{if(a===ht.link_mode){const l=this.getAppLinkIfEnabled(o,a);return c.verified.validation=l&&new URL(l).origin===new URL(o.url).origin?"VALID":"INVALID",c}const h=await this.client.core.verify.resolve({attestationId:i,hash:n,encryptedId:s,verifyUrl:o.verifyUrl});h&&(c.verified.origin=h.origin,c.verified.isScam=h.isScam,c.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(c)}`),c},this.validateSessionProps=(r,i)=>{Object.values(r).forEach(n=>{if(!mt(n,!1)){const{message:s}=Z("MISSING_OR_INVALID",`${i} must be in Record<string, string> format. Received: ${JSON.stringify(n)}`);throw new Error(s)}})},this.getPendingAuthRequest=r=>{const i=this.client.auth.requests.get(r);return typeof i=="object"?i:void 0},this.addToRecentlyDeleted=(r,i)=>{if(this.recentlyDeletedMap.set(r,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=r=>{const i=this.recentlyDeletedMap.get(r);if(i){const{message:n}=Z("MISSING_OR_INVALID",`Record was recently deleted - ${i}: ${r}`);throw new Error(n)}},this.isLinkModeEnabled=(r,i)=>{var n,s,o,a,c,h,l,y,M;return!r||i!==ht.link_mode?!1:((s=(n=this.client.metadata)==null?void 0:n.redirect)==null?void 0:s.linkMode)===!0&&((a=(o=this.client.metadata)==null?void 0:o.redirect)==null?void 0:a.universal)!==void 0&&((h=(c=this.client.metadata)==null?void 0:c.redirect)==null?void 0:h.universal)!==""&&((l=r?.redirect)==null?void 0:l.universal)!==void 0&&((y=r?.redirect)==null?void 0:y.universal)!==""&&((M=r?.redirect)==null?void 0:M.linkMode)===!0&&this.client.core.linkModeSupportedApps.includes(r.redirect.universal)&&typeof(global==null?void 0:global.Linking)<"u"},this.getAppLinkIfEnabled=(r,i)=>{var n;return this.isLinkModeEnabled(r,i)?(n=r?.redirect)==null?void 0:n.universal:void 0},this.handleLinkModeMessage=({url:r})=>{if(!r||!r.includes("wc_ev")||!r.includes("topic"))return;const i=zd(r,"topic")||"",n=decodeURIComponent(zd(r,"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 r;if(Nf()||ki()&&(r=this.client.metadata.redirect)!=null&&r.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}=Z("NOT_INITIALIZED",this.name);throw new Error(e)}}async confirmOnlineStateOrThrow(){await this.client.core.relayer.confirmOnlineStateOrThrow()}registerRelayerEvents(){this.client.core.relayer.on(Pt.message,e=>{!this.initialized||this.relayMessageCache.length>0?this.relayMessageCache.push(e):this.onRelayMessage(e)})}async onRelayMessage(e){const{topic:r,message:i,attestation:n,transportType:s}=e,{publicKey:o}=this.client.auth.authKeys.keys.includes(na)?this.client.auth.authKeys.get(na):{responseTopic:void 0,publicKey:void 0},a=await this.client.core.crypto.decode(r,i,{receiverPublicKey:o,encoding:s===ht.link_mode?Ps:Gi});try{fc(a)?(this.client.core.history.set(r,a),this.onRelayEventRequest({topic:r,payload:a,attestation:n,transportType:s,encryptedId:vi(i)})):ea(a)?(await this.client.core.history.resolve(a),await this.onRelayEventResponse({topic:r,payload:a,transportType:s}),this.client.core.history.delete(r,a.id)):this.onRelayEventUnknownPayload({topic:r,payload:a,transportType:s})}catch(c){this.client.logger.error(c)}}registerExpirerEvents(){this.client.core.expirer.on(Or.expired,async e=>{const{topic:r,id:i}=Ud(e.target);if(i&&this.client.pendingRequest.keys.includes(i))return await this.deletePendingSessionRequest(i,Z("EXPIRED"),!0);if(i&&this.client.auth.requests.keys.includes(i))return await this.deletePendingAuthRequest(i,Z("EXPIRED"),!0);r?this.client.session.keys.includes(r)&&(await this.deleteSession({topic:r,expirerHasDeleted:!0}),this.client.events.emit("session_expire",{topic:r})):i&&(await this.deleteProposal(i,!0),this.client.events.emit("proposal_expire",{id:i}))})}registerPairingEvents(){this.client.core.pairing.events.on(yn.create,e=>this.onPairingCreated(e)),this.client.core.pairing.events.on(yn.delete,e=>{this.addToRecentlyDeleted(e.topic,"pairing")})}isValidPairingTopic(e){if(!mt(e,!1)){const{message:r}=Z("MISSING_OR_INVALID",`pairing topic should be a string: ${e}`);throw new Error(r)}if(!this.client.core.pairing.pairings.keys.includes(e)){const{message:r}=Z("NO_MATCHING_KEY",`pairing topic doesn't exist: ${e}`);throw new Error(r)}if(Ki(this.client.core.pairing.pairings.get(e).expiry)){const{message:r}=Z("EXPIRED",`pairing topic: ${e}`);throw new Error(r)}}async isValidSessionTopic(e){if(!mt(e,!1)){const{message:r}=Z("MISSING_OR_INVALID",`session topic should be a string: ${e}`);throw new Error(r)}if(this.checkRecentlyDeleted(e),!this.client.session.keys.includes(e)){const{message:r}=Z("NO_MATCHING_KEY",`session topic doesn't exist: ${e}`);throw new Error(r)}if(Ki(this.client.session.get(e).expiry)){await this.deleteSession({topic:e});const{message:r}=Z("EXPIRED",`session topic: ${e}`);throw new Error(r)}if(!this.client.core.crypto.keychain.has(e)){const{message:r}=Z("MISSING_OR_INVALID",`session topic does not exist in keychain: ${e}`);throw await this.deleteSession({topic:e}),new Error(r)}}async isValidSessionOrPairingTopic(e){if(this.checkRecentlyDeleted(e),this.client.session.keys.includes(e))await this.isValidSessionTopic(e);else if(this.client.core.pairing.pairings.keys.includes(e))this.isValidPairingTopic(e);else if(mt(e,!1)){const{message:r}=Z("NO_MATCHING_KEY",`session or pairing topic doesn't exist: ${e}`);throw new Error(r)}else{const{message:r}=Z("MISSING_OR_INVALID",`session or pairing topic should be a string: ${e}`);throw new Error(r)}}async isValidProposalId(e){if(!R8(e)){const{message:r}=Z("MISSING_OR_INVALID",`proposal id should be a number: ${e}`);throw new Error(r)}if(!this.client.proposal.keys.includes(e)){const{message:r}=Z("NO_MATCHING_KEY",`proposal id doesn't exist: ${e}`);throw new Error(r)}if(Ki(this.client.proposal.get(e).expiryTimestamp)){await this.deleteProposal(e);const{message:r}=Z("EXPIRED",`proposal id: ${e}`);throw new Error(r)}}}class L_ extends _n{constructor(e,r){super(e,r,__,vc),this.core=e,this.logger=r}}class Z0 extends _n{constructor(e,r){super(e,r,E_,vc),this.core=e,this.logger=r}}class q_ extends _n{constructor(e,r){super(e,r,M_,vc,i=>i.id),this.core=e,this.logger=r}}class U_ extends _n{constructor(e,r){super(e,r,O_,ia,()=>na),this.core=e,this.logger=r}}class z_ extends _n{constructor(e,r){super(e,r,P_,ia),this.core=e,this.logger=r}}class k_ extends _n{constructor(e,r){super(e,r,R_,ia,i=>i.id),this.core=e,this.logger=r}}class j_{constructor(e,r){this.core=e,this.logger=r,this.authKeys=new U_(this.core,this.logger),this.pairingTopics=new z_(this.core,this.logger),this.requests=new k_(this.core,this.logger)}async init(){await this.authKeys.init(),await this.pairingTopics.init(),await this.requests.init()}}class wc extends bg{constructor(e){super(e),this.protocol=H0,this.version=W0,this.name=yc.name,this.events=new jt.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||yc.name,this.metadata=e?.metadata||Fd(),this.signConfig=e?.signConfig;const r=typeof e?.logger<"u"&&typeof e?.logger!="string"?e.logger:ai(Ia({level:e?.logger||yc.logger}));this.core=e?.core||new bc(e),this.logger=Jt(r,this.name),this.session=new Z0(this.core,this.logger),this.proposal=new L_(this.core,this.logger),this.pendingRequest=new q_(this.core,this.logger),this.engine=new B_(this),this.auth=new j_(this.core,this.logger)}static async init(e){const r=new wc(e);return await r.initialize(),r}get context(){return tr(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()},Y.toMiliseconds(Y.ONE_SECOND))}catch(e){throw this.logger.info("SignClient Initialization Failure"),this.logger.error(e.message),e}}}const K_=Z0,V_=wc;class H_ extends jt.exports{constructor(){super()}}class Q0{constructor(e){this.opts=e}}class ep{constructor(e){this.client=e}}var W_=Object.defineProperty,G_=Object.defineProperties,J_=Object.getOwnPropertyDescriptors,tp=Object.getOwnPropertySymbols,Y_=Object.prototype.hasOwnProperty,X_=Object.prototype.propertyIsEnumerable,rp=(t,e,r)=>e in t?W_(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,Z_=(t,e)=>{for(var r in e||(e={}))Y_.call(e,r)&&rp(t,r,e[r]);if(tp)for(var r of tp(e))X_.call(e,r)&&rp(t,r,e[r]);return t},Q_=(t,e)=>G_(t,J_(e));class ex extends ep{constructor(e){super(e),this.init=async()=>{this.signClient=await V_.init({core:this.client.core,metadata:this.client.metadata,signConfig:this.client.signConfig})},this.pair=async r=>{await this.client.core.pairing.pair(r)},this.approveSession=async r=>{const{topic:i,acknowledged:n}=await this.signClient.approve(Q_(Z_({},r),{id:r.id,namespaces:r.namespaces,sessionProperties:r.sessionProperties,sessionConfig:r.sessionConfig}));return await n(),this.signClient.session.get(i)},this.rejectSession=async r=>await this.signClient.reject(r),this.updateSession=async r=>await this.signClient.update(r),this.extendSession=async r=>await this.signClient.extend(r),this.respondSessionRequest=async r=>await this.signClient.respond(r),this.disconnectSession=async r=>await this.signClient.disconnect(r),this.emitSessionEvent=async r=>await this.signClient.emit(r),this.getActiveSessions=()=>this.signClient.session.getAll().reduce((r,i)=>(r[i.topic]=i,r),{}),this.getPendingSessionProposals=()=>this.signClient.proposal.getAll(),this.getPendingSessionRequests=()=>this.signClient.getPendingSessionRequests(),this.approveSessionAuthenticate=async r=>await this.signClient.approveSessionAuthenticate(r),this.rejectSessionAuthenticate=async r=>await this.signClient.rejectSessionAuthenticate(r),this.formatAuthMessage=r=>this.signClient.formatAuthMessage(r),this.registerDeviceToken=r=>this.client.core.echoClient.registerDeviceToken(r),this.on=(r,i)=>(this.setEvent(r,"off"),this.setEvent(r,"on"),this.client.events.on(r,i)),this.once=(r,i)=>(this.setEvent(r,"off"),this.setEvent(r,"once"),this.client.events.once(r,i)),this.off=(r,i)=>(this.setEvent(r,"off"),this.client.events.off(r,i)),this.removeListener=(r,i)=>(this.setEvent(r,"removeListener"),this.client.events.removeListener(r,i)),this.onSessionRequest=r=>{this.client.events.emit("session_request",r)},this.onSessionProposal=r=>{this.client.events.emit("session_proposal",r)},this.onSessionDelete=r=>{this.client.events.emit("session_delete",r)},this.onProposalExpire=r=>{this.client.events.emit("proposal_expire",r)},this.onSessionRequestExpire=r=>{this.client.events.emit("session_request_expire",r)},this.onSessionRequestAuthenticate=r=>{this.client.events.emit("session_authenticate",r)},this.setEvent=(r,i)=>{switch(r){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={}}}const tx={decryptMessage:async t=>{const e={core:new bc({storageOptions:t.storageOptions,storage:t.storage})};await e.core.crypto.init();const r=e.core.crypto.decode(t.topic,t.encryptedMessage);return e.core=null,r},getMetadata:async t=>{const e={core:new bc({storageOptions:t.storageOptions,storage:t.storage}),sessionStore:null};e.sessionStore=new K_(e.core,e.core.logger),await e.sessionStore.init();const r=e.sessionStore.get(t.topic),i=r?.peer.metadata;return e.core=null,e.sessionStore=null,i}},ip=class extends Q0{constructor(t){super(t),this.events=new jt.exports,this.on=(e,r)=>this.engine.on(e,r),this.once=(e,r)=>this.engine.once(e,r),this.off=(e,r)=>this.engine.off(e,r),this.removeListener=(e,r)=>this.engine.removeListener(e,r),this.pair=async e=>{try{return await this.engine.pair(e)}catch(r){throw this.logger.error(r.message),r}},this.approveSession=async e=>{try{return await this.engine.approveSession(e)}catch(r){throw this.logger.error(r.message),r}},this.rejectSession=async e=>{try{return await this.engine.rejectSession(e)}catch(r){throw this.logger.error(r.message),r}},this.updateSession=async e=>{try{return await this.engine.updateSession(e)}catch(r){throw this.logger.error(r.message),r}},this.extendSession=async e=>{try{return await this.engine.extendSession(e)}catch(r){throw this.logger.error(r.message),r}},this.respondSessionRequest=async e=>{try{return await this.engine.respondSessionRequest(e)}catch(r){throw this.logger.error(r.message),r}},this.disconnectSession=async e=>{try{return await this.engine.disconnectSession(e)}catch(r){throw this.logger.error(r.message),r}},this.emitSessionEvent=async e=>{try{return await this.engine.emitSessionEvent(e)}catch(r){throw this.logger.error(r.message),r}},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(r){throw this.logger.error(r.message),r}},this.approveSessionAuthenticate=e=>{try{return this.engine.approveSessionAuthenticate(e)}catch(r){throw this.logger.error(r.message),r}},this.rejectSessionAuthenticate=e=>{try{return this.engine.rejectSessionAuthenticate(e)}catch(r){throw this.logger.error(r.message),r}},this.formatAuthMessage=e=>{try{return this.engine.formatAuthMessage(e)}catch(r){throw this.logger.error(r.message),r}},this.metadata=t.metadata,this.name=t.name||ua,this.signConfig=t.signConfig,this.core=t.core,this.logger=this.core.logger,this.engine=new ex(this)}static async init(t){const e=new ip(t);return await e.initialize(),e}async initialize(){this.logger.trace("Initialized");try{await this.engine.init(),this.logger.info("WalletKit Initialization Success")}catch(t){throw this.logger.info("WalletKit Initialization Failure"),this.logger.error(t.message),t}}};let _c=ip;_c.notifications=tx;const rx=_c;kt.CLIENT_CONTEXT=ua,kt.CLIENT_STORAGE_OPTIONS=xp,kt.CLIENT_STORAGE_PREFIX=_p,kt.IWalletKit=Q0,kt.IWalletKitEngine=ep,kt.IWalletKitEvents=H_,kt.PROTOCOL=Nc,kt.PROTOCOL_VERSION=wp,kt.REQUEST_CONTEXT=Ep,kt.WalletKit=rx,kt.default=_c,Object.defineProperty(kt,"__esModule",{value:!0})});
43
+ ***************************************************************************** */var ic=function(t,e){return ic=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,i){r.__proto__=i}||function(r,i){for(var n in i)i.hasOwnProperty(n)&&(r[n]=i[n])},ic(t,e)};function t5(t,e){ic(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}var nc=function(){return nc=Object.assign||function(e){for(var r,i=1,n=arguments.length;i<n;i++){r=arguments[i];for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(e[s]=r[s])}return e},nc.apply(this,arguments)};function r5(t,e){var r={};for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&e.indexOf(i)<0&&(r[i]=t[i]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var n=0,i=Object.getOwnPropertySymbols(t);n<i.length;n++)e.indexOf(i[n])<0&&Object.prototype.propertyIsEnumerable.call(t,i[n])&&(r[i[n]]=t[i[n]]);return r}function i5(t,e,r,i){var n=arguments.length,s=n<3?e:i===null?i=Object.getOwnPropertyDescriptor(e,r):i,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(t,e,r,i);else for(var a=t.length-1;a>=0;a--)(o=t[a])&&(s=(n<3?o(s):n>3?o(e,r,s):o(e,r))||s);return n>3&&s&&Object.defineProperty(e,r,s),s}function n5(t,e){return function(r,i){e(r,i,t)}}function s5(t,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(t,e)}function o5(t,e,r,i){function n(s){return s instanceof r?s:new r(function(o){o(s)})}return new(r||(r=Promise))(function(s,o){function a(l){try{h(i.next(l))}catch(y){o(y)}}function c(l){try{h(i.throw(l))}catch(y){o(y)}}function h(l){l.done?s(l.value):n(l.value).then(a,c)}h((i=i.apply(t,e||[])).next())})}function a5(t,e){var r={label:0,sent:function(){if(s[0]&1)throw s[1];return s[1]},trys:[],ops:[]},i,n,s,o;return o={next:a(0),throw:a(1),return:a(2)},typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function a(h){return function(l){return c([h,l])}}function c(h){if(i)throw new TypeError("Generator is already executing.");for(;r;)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 r.label++,{value:h[1],done:!1};case 5:r.label++,n=h[1],h=[0];continue;case 7:h=r.ops.pop(),r.trys.pop();continue;default:if(s=r.trys,!(s=s.length>0&&s[s.length-1])&&(h[0]===6||h[0]===2)){r=0;continue}if(h[0]===3&&(!s||h[1]>s[0]&&h[1]<s[3])){r.label=h[1];break}if(h[0]===6&&r.label<s[1]){r.label=s[1],s=h;break}if(s&&r.label<s[2]){r.label=s[2],r.ops.push(h);break}s[2]&&r.ops.pop(),r.trys.pop();continue}h=e.call(t,r)}catch(l){h=[6,l],n=0}finally{i=s=0}if(h[0]&5)throw h[1];return{value:h[0]?h[1]:void 0,done:!0}}}function f5(t,e,r,i){i===void 0&&(i=r),t[i]=e[r]}function c5(t,e){for(var r in t)r!=="default"&&!e.hasOwnProperty(r)&&(e[r]=t[r])}function sc(t){var e=typeof Symbol=="function"&&Symbol.iterator,r=e&&t[e],i=0;if(r)return r.call(t);if(t&&typeof t.length=="number")return{next:function(){return t&&i>=t.length&&(t=void 0),{value:t&&t[i++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function Zl(t,e){var r=typeof Symbol=="function"&&t[Symbol.iterator];if(!r)return t;var i=r.call(t),n,s=[],o;try{for(;(e===void 0||e-- >0)&&!(n=i.next()).done;)s.push(n.value)}catch(a){o={error:a}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(o)throw o.error}}return s}function h5(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(Zl(arguments[e]));return t}function u5(){for(var t=0,e=0,r=arguments.length;e<r;e++)t+=arguments[e].length;for(var i=Array(t),n=0,e=0;e<r;e++)for(var s=arguments[e],o=0,a=s.length;o<a;o++,n++)i[n]=s[o];return i}function Ls(t){return this instanceof Ls?(this.v=t,this):new Ls(t)}function d5(t,e,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var i=r.apply(t,e||[]),n,s=[];return n={},o("next"),o("throw"),o("return"),n[Symbol.asyncIterator]=function(){return this},n;function o(M){i[M]&&(n[M]=function(I){return new Promise(function(S,D){s.push([M,I,S,D])>1||a(M,I)})})}function a(M,I){try{c(i[M](I))}catch(S){y(s[0][3],S)}}function c(M){M.value instanceof Ls?Promise.resolve(M.value.v).then(h,l):y(s[0][2],M)}function h(M){a("next",M)}function l(M){a("throw",M)}function y(M,I){M(I),s.shift(),s.length&&a(s[0][0],s[0][1])}}function l5(t){var e,r;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]=t[n]?function(o){return(r=!r)?{value:Ls(t[n](o)),done:n==="return"}:s?s(o):o}:s}}function p5(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=t[Symbol.asyncIterator],r;return e?e.call(t):(t=typeof sc=="function"?sc(t):t[Symbol.iterator](),r={},i("next"),i("throw"),i("return"),r[Symbol.asyncIterator]=function(){return this},r);function i(s){r[s]=t[s]&&function(o){return new Promise(function(a,c){o=t[s](o),n(a,c,o.done,o.value)})}}function n(s,o,a,c){Promise.resolve(c).then(function(h){s({value:h,done:a})},o)}}function g5(t,e){return Object.defineProperty?Object.defineProperty(t,"raw",{value:e}):t.raw=e,t}function b5(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)Object.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e}function v5(t){return t&&t.__esModule?t:{default:t}}function y5(t,e){if(!e.has(t))throw new TypeError("attempted to get private field on non-instance");return e.get(t)}function m5(t,e,r){if(!e.has(t))throw new TypeError("attempted to set private field on non-instance");return e.set(t,r),r}var w5=Object.freeze({__proto__:null,__extends:t5,get __assign(){return nc},__rest:r5,__decorate:i5,__param:n5,__metadata:s5,__awaiter:o5,__generator:a5,__createBinding:f5,__exportStar:c5,__values:sc,__read:Zl,__spread:h5,__spreadArrays:u5,__await:Ls,__asyncGenerator:d5,__asyncDelegator:l5,__asyncValues:p5,__makeTemplateObject:g5,__importStar:b5,__importDefault:v5,__classPrivateFieldGet:y5,__classPrivateFieldSet:m5}),_5=ha(w5),yi={},Ql;function x5(){if(Ql)return yi;Ql=1,Object.defineProperty(yi,"__esModule",{value:!0}),yi.isBrowserCryptoAvailable=yi.getSubtleCrypto=yi.getBrowerCrypto=void 0;function t(){return Nt?.crypto||Nt?.msCrypto||{}}yi.getBrowerCrypto=t;function e(){const i=t();return i.subtle||i.webkitSubtle}yi.getSubtleCrypto=e;function r(){return!!t()&&!!e()}return yi.isBrowserCryptoAvailable=r,yi}var mi={},e0;function E5(){if(e0)return mi;e0=1,Object.defineProperty(mi,"__esModule",{value:!0}),mi.isBrowser=mi.isNode=mi.isReactNative=void 0;function t(){return typeof document>"u"&&typeof navigator<"u"&&navigator.product==="ReactNative"}mi.isReactNative=t;function e(){return typeof process<"u"&&typeof process.versions<"u"&&typeof process.versions.node<"u"}mi.isNode=e;function r(){return!t()&&!e()}return mi.isBrowser=r,mi}(function(t){Object.defineProperty(t,"__esModule",{value:!0});const e=_5;e.__exportStar(x5(),t),e.__exportStar(E5(),t)})(Xl);function wi(t=3){const e=Date.now()*Math.pow(10,t),r=Math.floor(Math.random()*Math.pow(10,t));return e+r}function bn(t=6){return BigInt(wi(t))}function vn(t,e,r){return{id:r||wi(),jsonrpc:"2.0",method:t,params:e}}function oc(t,e){return{id:t,jsonrpc:"2.0",result:e}}function ac(t,e,r){return{id:t,jsonrpc:"2.0",error:S5(e,r)}}function S5(t,e){return typeof t>"u"?Yl(Gl):(typeof t=="string"&&(t=Object.assign(Object.assign({},Yl(rc)),{message:t})),typeof e<"u"&&(t.data=e),Z8(t.code)&&(t=Q8(t.code)),t)}class M5{}class I5 extends M5{constructor(){super()}}class A5 extends I5{constructor(e){super()}}const D5="^wss?:";function O5(t){const e=t.match(new RegExp(/^\w+:/,"gi"));if(!(!e||!e.length))return e[0]}function P5(t,e){const r=O5(t);return typeof r>"u"?!1:new RegExp(e).test(r)}function t0(t){return P5(t,D5)}function R5(t){return new RegExp("wss?://localhost(:d{2,5})?").test(t)}function r0(t){return typeof t=="object"&&"id"in t&&"jsonrpc"in t&&t.jsonrpc==="2.0"}function fc(t){return r0(t)&&"method"in t}function ea(t){return r0(t)&&(ii(t)||Ar(t))}function ii(t){return"result"in t}function Ar(t){return"error"in t}class $5 extends A5{constructor(e){super(e),this.events=new jt.exports.EventEmitter,this.hasRegisteredEventListeners=!1,this.connection=this.setConnection(e),this.connection.connected&&this.registerEventListeners()}async connect(e=this.connection){await this.open(e)}async disconnect(){await this.close()}on(e,r){this.events.on(e,r)}once(e,r){this.events.once(e,r)}off(e,r){this.events.off(e,r)}removeListener(e,r){this.events.removeListener(e,r)}async request(e,r){return this.requestStrict(vn(e.method,e.params||[],e.id||bn().toString()),r)}async requestStrict(e,r){return new Promise(async(i,n)=>{if(!this.connection.connected)try{await this.open()}catch(s){n(s)}this.events.on(`${e.id}`,s=>{Ar(s)?n(s.error):i(s.result)});try{await this.connection.send(e,r)}catch(s){n(s)}})}setConnection(e=this.connection){return e}onPayload(e){this.events.emit("payload",e),ea(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 N5=()=>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"),T5=()=>typeof WebSocket<"u"||typeof global<"u"&&typeof global.WebSocket<"u"||typeof window<"u"&&typeof window.WebSocket<"u"||typeof self<"u"&&typeof self.WebSocket<"u",i0=t=>t.split("?")[0],n0=10,F5=N5();class C5{constructor(e){if(this.url=e,this.events=new jt.exports.EventEmitter,this.registering=!1,!t0(e))throw new Error(`Provided URL is not compatible with WebSocket connection: ${e}`);this.url=e}get connected(){return typeof this.socket<"u"}get connecting(){return this.registering}on(e,r){this.events.on(e,r)}once(e,r){this.events.once(e,r)}off(e,r){this.events.off(e,r)}removeListener(e,r){this.events.removeListener(e,r)}async open(e=this.url){await this.register(e)}async close(){return new Promise((e,r)=>{if(typeof this.socket>"u"){r(new Error("Connection already closed"));return}this.socket.onclose=i=>{this.onClose(i),e()},this.socket.close()})}async send(e){typeof this.socket>"u"&&(this.socket=await this.register());try{this.socket.send(tn(e))}catch(r){this.onError(e.id,r)}}register(e=this.url){if(!t0(e))throw new Error(`Provided URL is not compatible with WebSocket connection: ${e}`);if(this.registering){const r=this.events.getMaxListeners();return(this.events.listenerCount("register_error")>=r||this.events.listenerCount("open")>=r)&&this.events.setMaxListeners(r+1),new Promise((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((r,i)=>{const n=Xl.isReactNative()?void 0:{rejectUnauthorized:!R5(e)},s=new F5(e,[],n);T5()?s.onerror=o=>{const a=o;i(this.emitError(a.error))}:s.on("error",o=>{i(this.emitError(o))}),s.onopen=()=>{this.onOpen(s),r(s)}})}onOpen(e){e.onmessage=r=>this.onPayload(r),e.onclose=r=>this.onClose(r),this.socket=e,this.registering=!1,this.events.emit("open")}onClose(e){this.socket=void 0,this.registering=!1,this.events.emit("close",e)}onPayload(e){if(typeof e.data>"u")return;const r=typeof e.data=="string"?An(e.data):e.data;this.events.emit("payload",r)}onError(e,r){const i=this.parseError(r),n=i.message||i.toString(),s=ac(e,n);this.events.emit("payload",s)}parseError(e,r=this.url){return e5(e,i0(r),"WS")}resetMaxListeners(){this.events.getMaxListeners()>n0&&this.events.setMaxListeners(n0)}emitError(e){const r=this.parseError(new Error(e?.message||`WebSocket connection failed for host: ${i0(this.url)}`));return this.events.emit("register_error",r),r}}var cc={exports:{}};(function(t,e){var r=200,i="__lodash_hash_undefined__",n=1,s=2,o=9007199254740991,a="[object Arguments]",c="[object Array]",h="[object AsyncFunction]",l="[object Boolean]",y="[object Date]",M="[object Error]",I="[object Function]",S="[object GeneratorFunction]",D="[object Map]",R="[object Number]",$="[object Null]",T="[object Object]",C="[object Promise]",L="[object Proxy]",k="[object RegExp]",j="[object Set]",G="[object String]",K="[object Symbol]",V="[object Undefined]",re="[object WeakMap]",O="[object ArrayBuffer]",g="[object DataView]",p="[object Float32Array]",f="[object Float64Array]",u="[object Int8Array]",b="[object Int16Array]",_="[object Int32Array]",E="[object Uint8Array]",w="[object Uint8ClampedArray]",d="[object Uint16Array]",m="[object Uint32Array]",v=/[\\^$.*+?()[\]{}|]/g,A=/^\[object .+?Constructor\]$/,U=/^(?:0|[1-9]\d*)$/,x={};x[p]=x[f]=x[u]=x[b]=x[_]=x[E]=x[w]=x[d]=x[m]=!0,x[a]=x[c]=x[O]=x[l]=x[g]=x[y]=x[M]=x[I]=x[D]=x[R]=x[T]=x[k]=x[j]=x[G]=x[re]=!1;var N=typeof Nt=="object"&&Nt&&Nt.Object===Object&&Nt,B=typeof self=="object"&&self&&self.Object===Object&&self,q=N||B||Function("return this")(),z=e&&!e.nodeType&&e,J=z&&!0&&t&&!t.nodeType&&t,X=J&&J.exports===z,W=X&&N.process,ne=function(){try{return W&&W.binding&&W.binding("util")}catch{}}(),Q=ne&&ne.isTypedArray;function ee(P,F){for(var H=-1,te=P==null?0:P.length,ut=0,we=[];++H<te;){var bt=P[H];F(bt,H,P)&&(we[ut++]=bt)}return we}function qe(P,F){for(var H=-1,te=F.length,ut=P.length;++H<te;)P[ut+H]=F[H];return P}function Ue(P,F){for(var H=-1,te=P==null?0:P.length;++H<te;)if(F(P[H],H,P))return!0;return!1}function he(P,F){for(var H=-1,te=Array(P);++H<P;)te[H]=F(H);return te}function Pe(P){return function(F){return P(F)}}function Re(P,F){return P.has(F)}function ae(P,F){return P?.[F]}function $e(P){var F=-1,H=Array(P.size);return P.forEach(function(te,ut){H[++F]=[ut,te]}),H}function Ne(P,F){return function(H){return P(F(H))}}function ce(P){var F=-1,H=Array(P.size);return P.forEach(function(te){H[++F]=te}),H}var Te=Array.prototype,Fe=Function.prototype,oe=Object.prototype,De=q["__core-js_shared__"],Ce=Fe.toString,ie=oe.hasOwnProperty,Ve=function(){var P=/[^.]+$/.exec(De&&De.keys&&De.keys.IE_PROTO||"");return P?"Symbol(src)_1."+P:""}(),He=oe.toString,pe=RegExp("^"+Ce.call(ie).replace(v,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),We=X?q.Buffer:void 0,Be=q.Symbol,de=q.Uint8Array,Ge=oe.propertyIsEnumerable,Xe=Te.splice,se=Be?Be.toStringTag:void 0,Je=Object.getOwnPropertySymbols,Ze=We?We.isBuffer:void 0,ge=Ne(Object.keys,Object),ze=rs(q,"DataView"),Oe=rs(q,"Map"),ue=rs(q,"Promise"),ke=rs(q,"Set"),je=rs(q,"WeakMap"),fe=rs(Object,"create"),Qe=xn(ze),et=xn(Oe),be=xn(ue),tt=xn(ke),rt=xn(je),le=Be?Be.prototype:void 0,Ke=le?le.valueOf:void 0;function Ae(P){var F=-1,H=P==null?0:P.length;for(this.clear();++F<H;){var te=P[F];this.set(te[0],te[1])}}function ve(){this.__data__=fe?fe(null):{},this.size=0}function it(P){var F=this.has(P)&&delete this.__data__[P];return this.size-=F?1:0,F}function nt(P){var F=this.__data__;if(fe){var H=F[P];return H===i?void 0:H}return ie.call(F,P)?F[P]:void 0}function ye(P){var F=this.__data__;return fe?F[P]!==void 0:ie.call(F,P)}function st(P,F){var H=this.__data__;return this.size+=this.has(P)?0:1,H[P]=fe&&F===void 0?i:F,this}Ae.prototype.clear=ve,Ae.prototype.delete=it,Ae.prototype.get=nt,Ae.prototype.has=ye,Ae.prototype.set=st;function xe(P){var F=-1,H=P==null?0:P.length;for(this.clear();++F<H;){var te=P[F];this.set(te[0],te[1])}}function Ye(){this.__data__=[],this.size=0}function ar(P){var F=this.__data__,H=sa(F,P);if(H<0)return!1;var te=F.length-1;return H==te?F.pop():Xe.call(F,H,1),--this.size,!0}function fr(P){var F=this.__data__,H=sa(F,P);return H<0?void 0:F[H][1]}function cr(P){return sa(this.__data__,P)>-1}function hr(P,F){var H=this.__data__,te=sa(H,P);return te<0?(++this.size,H.push([P,F])):H[te][1]=F,this}xe.prototype.clear=Ye,xe.prototype.delete=ar,xe.prototype.get=fr,xe.prototype.has=cr,xe.prototype.set=hr;function wt(P){var F=-1,H=P==null?0:P.length;for(this.clear();++F<H;){var te=P[F];this.set(te[0],te[1])}}function xi(){this.size=0,this.__data__={hash:new Ae,map:new(Oe||xe),string:new Ae}}function Ei(P){var F=oa(this,P).delete(P);return this.size-=F?1:0,F}function Si(P){return oa(this,P).get(P)}function Mi(P){return oa(this,P).has(P)}function Ii(P,F){var H=oa(this,P),te=H.size;return H.set(P,F),this.size+=H.size==te?0:1,this}wt.prototype.clear=xi,wt.prototype.delete=Ei,wt.prototype.get=Si,wt.prototype.has=Mi,wt.prototype.set=Ii;function Pr(P){var F=-1,H=P==null?0:P.length;for(this.__data__=new wt;++F<H;)this.add(P[F])}function Ai(P){return this.__data__.set(P,i),this}function Di(P){return this.__data__.has(P)}Pr.prototype.add=Pr.prototype.push=Ai,Pr.prototype.has=Di;function Wt(P){var F=this.__data__=new xe(P);this.size=F.size}function Oi(){this.__data__=new xe,this.size=0}function Pi(P){var F=this.__data__,H=F.delete(P);return this.size=F.size,H}function Ri(P){return this.__data__.get(P)}function Vs(P){return this.__data__.has(P)}function Hs(P,F){var H=this.__data__;if(H instanceof xe){var te=H.__data__;if(!Oe||te.length<r-1)return te.push([P,F]),this.size=++H.size,this;H=this.__data__=new wt(te)}return H.set(P,F),this.size=H.size,this}Wt.prototype.clear=Oi,Wt.prototype.delete=Pi,Wt.prototype.get=Ri,Wt.prototype.has=Vs,Wt.prototype.set=Hs;function ix(P,F){var H=aa(P),te=!H&&yx(P),ut=!H&&!te&&xc(P),we=!H&&!te&&!ut&&dp(P),bt=H||te||ut||we,$t=bt?he(P.length,String):[],zt=$t.length;for(var dt in P)(F||ie.call(P,dt))&&!(bt&&(dt=="length"||ut&&(dt=="offset"||dt=="parent")||we&&(dt=="buffer"||dt=="byteLength"||dt=="byteOffset")||lx(dt,zt)))&&$t.push(dt);return $t}function sa(P,F){for(var H=P.length;H--;)if(fp(P[H][0],F))return H;return-1}function nx(P,F,H){var te=F(P);return aa(P)?te:qe(te,H(P))}function Ws(P){return P==null?P===void 0?V:$:se&&se in Object(P)?ux(P):vx(P)}function np(P){return Gs(P)&&Ws(P)==a}function sp(P,F,H,te,ut){return P===F?!0:P==null||F==null||!Gs(P)&&!Gs(F)?P!==P&&F!==F:sx(P,F,H,te,sp,ut)}function sx(P,F,H,te,ut,we){var bt=aa(P),$t=aa(F),zt=bt?c:Ji(P),dt=$t?c:Ji(F);zt=zt==a?T:zt,dt=dt==a?T:dt;var yr=zt==T,jr=dt==T,Gt=zt==dt;if(Gt&&xc(P)){if(!xc(F))return!1;bt=!0,yr=!1}if(Gt&&!yr)return we||(we=new Wt),bt||dp(P)?op(P,F,H,te,ut,we):cx(P,F,zt,H,te,ut,we);if(!(H&n)){var Rr=yr&&ie.call(P,"__wrapped__"),$r=jr&&ie.call(F,"__wrapped__");if(Rr||$r){var Yi=Rr?P.value():P,$i=$r?F.value():F;return we||(we=new Wt),ut(Yi,$i,H,te,we)}}return Gt?(we||(we=new Wt),hx(P,F,H,te,ut,we)):!1}function ox(P){if(!up(P)||gx(P))return!1;var F=cp(P)?pe:A;return F.test(xn(P))}function ax(P){return Gs(P)&&hp(P.length)&&!!x[Ws(P)]}function fx(P){if(!bx(P))return ge(P);var F=[];for(var H in Object(P))ie.call(P,H)&&H!="constructor"&&F.push(H);return F}function op(P,F,H,te,ut,we){var bt=H&n,$t=P.length,zt=F.length;if($t!=zt&&!(bt&&zt>$t))return!1;var dt=we.get(P);if(dt&&we.get(F))return dt==F;var yr=-1,jr=!0,Gt=H&s?new Pr:void 0;for(we.set(P,F),we.set(F,P);++yr<$t;){var Rr=P[yr],$r=F[yr];if(te)var Yi=bt?te($r,Rr,yr,F,P,we):te(Rr,$r,yr,P,F,we);if(Yi!==void 0){if(Yi)continue;jr=!1;break}if(Gt){if(!Ue(F,function($i,En){if(!Re(Gt,En)&&(Rr===$i||ut(Rr,$i,H,te,we)))return Gt.push(En)})){jr=!1;break}}else if(!(Rr===$r||ut(Rr,$r,H,te,we))){jr=!1;break}}return we.delete(P),we.delete(F),jr}function cx(P,F,H,te,ut,we,bt){switch(H){case g:if(P.byteLength!=F.byteLength||P.byteOffset!=F.byteOffset)return!1;P=P.buffer,F=F.buffer;case O:return!(P.byteLength!=F.byteLength||!we(new de(P),new de(F)));case l:case y:case R:return fp(+P,+F);case M:return P.name==F.name&&P.message==F.message;case k:case G:return P==F+"";case D:var $t=$e;case j:var zt=te&n;if($t||($t=ce),P.size!=F.size&&!zt)return!1;var dt=bt.get(P);if(dt)return dt==F;te|=s,bt.set(P,F);var yr=op($t(P),$t(F),te,ut,we,bt);return bt.delete(P),yr;case K:if(Ke)return Ke.call(P)==Ke.call(F)}return!1}function hx(P,F,H,te,ut,we){var bt=H&n,$t=ap(P),zt=$t.length,dt=ap(F),yr=dt.length;if(zt!=yr&&!bt)return!1;for(var jr=zt;jr--;){var Gt=$t[jr];if(!(bt?Gt in F:ie.call(F,Gt)))return!1}var Rr=we.get(P);if(Rr&&we.get(F))return Rr==F;var $r=!0;we.set(P,F),we.set(F,P);for(var Yi=bt;++jr<zt;){Gt=$t[jr];var $i=P[Gt],En=F[Gt];if(te)var lp=bt?te(En,$i,Gt,F,P,we):te($i,En,Gt,P,F,we);if(!(lp===void 0?$i===En||ut($i,En,H,te,we):lp)){$r=!1;break}Yi||(Yi=Gt=="constructor")}if($r&&!Yi){var fa=P.constructor,ca=F.constructor;fa!=ca&&"constructor"in P&&"constructor"in F&&!(typeof fa=="function"&&fa instanceof fa&&typeof ca=="function"&&ca instanceof ca)&&($r=!1)}return we.delete(P),we.delete(F),$r}function ap(P){return nx(P,_x,dx)}function oa(P,F){var H=P.__data__;return px(F)?H[typeof F=="string"?"string":"hash"]:H.map}function rs(P,F){var H=ae(P,F);return ox(H)?H:void 0}function ux(P){var F=ie.call(P,se),H=P[se];try{P[se]=void 0;var te=!0}catch{}var ut=He.call(P);return te&&(F?P[se]=H:delete P[se]),ut}var dx=Je?function(P){return P==null?[]:(P=Object(P),ee(Je(P),function(F){return Ge.call(P,F)}))}:xx,Ji=Ws;(ze&&Ji(new ze(new ArrayBuffer(1)))!=g||Oe&&Ji(new Oe)!=D||ue&&Ji(ue.resolve())!=C||ke&&Ji(new ke)!=j||je&&Ji(new je)!=re)&&(Ji=function(P){var F=Ws(P),H=F==T?P.constructor:void 0,te=H?xn(H):"";if(te)switch(te){case Qe:return g;case et:return D;case be:return C;case tt:return j;case rt:return re}return F});function lx(P,F){return F=F??o,!!F&&(typeof P=="number"||U.test(P))&&P>-1&&P%1==0&&P<F}function px(P){var F=typeof P;return F=="string"||F=="number"||F=="symbol"||F=="boolean"?P!=="__proto__":P===null}function gx(P){return!!Ve&&Ve in P}function bx(P){var F=P&&P.constructor,H=typeof F=="function"&&F.prototype||oe;return P===H}function vx(P){return He.call(P)}function xn(P){if(P!=null){try{return Ce.call(P)}catch{}try{return P+""}catch{}}return""}function fp(P,F){return P===F||P!==P&&F!==F}var yx=np(function(){return arguments}())?np:function(P){return Gs(P)&&ie.call(P,"callee")&&!Ge.call(P,"callee")},aa=Array.isArray;function mx(P){return P!=null&&hp(P.length)&&!cp(P)}var xc=Ze||Ex;function wx(P,F){return sp(P,F)}function cp(P){if(!up(P))return!1;var F=Ws(P);return F==I||F==S||F==h||F==L}function hp(P){return typeof P=="number"&&P>-1&&P%1==0&&P<=o}function up(P){var F=typeof P;return P!=null&&(F=="object"||F=="function")}function Gs(P){return P!=null&&typeof P=="object"}var dp=Q?Pe(Q):ax;function _x(P){return mx(P)?ix(P):fx(P)}function xx(){return[]}function Ex(){return!1}t.exports=wx})(cc,cc.exports);var B5=cc.exports;const s0="wc",o0=2,ta="core",ni=`${s0}@2:${ta}:`,L5={name:ta,logger:"error"},q5={database:":memory:"},U5="crypto",a0="client_ed25519_seed",z5=Y.ONE_DAY,k5="keychain",j5="0.3",K5="messages",V5="0.3",f0=Y.SIX_HOURS,H5="publisher",c0="irn",W5="error",h0="wss://relay.walletconnect.org",G5="relayer",Pt={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"},J5="_subscription",Dr={payload:"payload",connect:"connect",disconnect:"disconnect",error:"error"},Y5=.1,hc="2.18.0",ht={link_mode:"link_mode",relay:"relay"},X5="0.3",Z5="WALLETCONNECT_CLIENT_ID",u0="WALLETCONNECT_LINK_MODE_APPS",vr={created:"subscription_created",deleted:"subscription_deleted",expired:"subscription_expired",disabled:"subscription_disabled",sync:"subscription_sync",resubscribed:"subscription_resubscribed"},Q5="subscription",e9="0.3",t9=Y.FIVE_SECONDS*1e3,r9="pairing",i9="0.3",qs={wc_pairingDelete:{req:{ttl:Y.ONE_DAY,prompt:!1,tag:1e3},res:{ttl:Y.ONE_DAY,prompt:!1,tag:1001}},wc_pairingPing:{req:{ttl:Y.THIRTY_SECONDS,prompt:!1,tag:1002},res:{ttl:Y.THIRTY_SECONDS,prompt:!1,tag:1003}},unregistered_method:{req:{ttl:Y.ONE_DAY,prompt:!1,tag:0},res:{ttl:Y.ONE_DAY,prompt:!1,tag:0}}},yn={create:"pairing_create",expire:"pairing_expire",delete:"pairing_delete",ping:"pairing_ping"},Ur={created:"history_created",updated:"history_updated",deleted:"history_deleted",sync:"history_sync"},n9="history",s9="0.3",o9="expirer",Or={created:"expirer_created",deleted:"expirer_deleted",expired:"expirer_expired",sync:"expirer_sync"},a9="0.3",f9="verify-api",c9="https://verify.walletconnect.com",d0="https://verify.walletconnect.org",Us=d0,h9=`${Us}/v3`,u9=[c9,d0],d9="echo",l9="https://echo.walletconnect.com",si={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"},_i={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"},zr={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"},mn={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"},wn={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"},zs={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"},p9=.1,g9="event-client",b9=86400,v9="https://pulse.walletconnect.org/batch";function y9(t,e){if(t.length>=255)throw new TypeError("Alphabet too long");for(var r=new Uint8Array(256),i=0;i<r.length;i++)r[i]=255;for(var n=0;n<t.length;n++){var s=t.charAt(n),o=s.charCodeAt(0);if(r[o]!==255)throw new TypeError(s+" is ambiguous");r[o]=n}var a=t.length,c=t.charAt(0),h=Math.log(a)/Math.log(256),l=Math.log(256)/Math.log(a);function y(S){if(S instanceof Uint8Array||(ArrayBuffer.isView(S)?S=new Uint8Array(S.buffer,S.byteOffset,S.byteLength):Array.isArray(S)&&(S=Uint8Array.from(S))),!(S instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(S.length===0)return"";for(var D=0,R=0,$=0,T=S.length;$!==T&&S[$]===0;)$++,D++;for(var C=(T-$)*l+1>>>0,L=new Uint8Array(C);$!==T;){for(var k=S[$],j=0,G=C-1;(k!==0||j<R)&&G!==-1;G--,j++)k+=256*L[G]>>>0,L[G]=k%a>>>0,k=k/a>>>0;if(k!==0)throw new Error("Non-zero carry");R=j,$++}for(var K=C-R;K!==C&&L[K]===0;)K++;for(var V=c.repeat(D);K<C;++K)V+=t.charAt(L[K]);return V}function M(S){if(typeof S!="string")throw new TypeError("Expected String");if(S.length===0)return new Uint8Array;var D=0;if(S[D]!==" "){for(var R=0,$=0;S[D]===c;)R++,D++;for(var T=(S.length-D)*h+1>>>0,C=new Uint8Array(T);S[D];){var L=r[S.charCodeAt(D)];if(L===255)return;for(var k=0,j=T-1;(L!==0||k<$)&&j!==-1;j--,k++)L+=a*C[j]>>>0,C[j]=L%256>>>0,L=L/256>>>0;if(L!==0)throw new Error("Non-zero carry");$=k,D++}if(S[D]!==" "){for(var G=T-$;G!==T&&C[G]===0;)G++;for(var K=new Uint8Array(R+(T-G)),V=R;G!==T;)K[V++]=C[G++];return K}}}function I(S){var D=M(S);if(D)return D;throw new Error(`Non-${e} character`)}return{encode:y,decodeUnsafe:M,decode:I}}var m9=y9,w9=m9;const l0=t=>{if(t instanceof Uint8Array&&t.constructor.name==="Uint8Array")return t;if(t instanceof ArrayBuffer)return new Uint8Array(t);if(ArrayBuffer.isView(t))return new Uint8Array(t.buffer,t.byteOffset,t.byteLength);throw new Error("Unknown type, must be binary type")},_9=t=>new TextEncoder().encode(t),x9=t=>new TextDecoder().decode(t);class E9{constructor(e,r,i){this.name=e,this.prefix=r,this.baseEncode=i}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}}class S9{constructor(e,r,i){if(this.name=e,this.prefix=r,r.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=r.codePointAt(0),this.baseDecode=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 p0(this,e)}}class M9{constructor(e){this.decoders=e}or(e){return p0(this,e)}decode(e){const r=e[0],i=this.decoders[r];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 p0=(t,e)=>new M9({...t.decoders||{[t.prefix]:t},...e.decoders||{[e.prefix]:e}});class I9{constructor(e,r,i,n){this.name=e,this.prefix=r,this.baseEncode=i,this.baseDecode=n,this.encoder=new E9(e,r,i),this.decoder=new S9(e,r,n)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}}const ra=({name:t,prefix:e,encode:r,decode:i})=>new I9(t,e,r,i),ks=({prefix:t,name:e,alphabet:r})=>{const{encode:i,decode:n}=w9(r,e);return ra({prefix:t,name:e,encode:i,decode:s=>l0(n(s))})},A9=(t,e,r,i)=>{const n={};for(let l=0;l<e.length;++l)n[e[l]]=l;let s=t.length;for(;t[s-1]==="=";)--s;const o=new Uint8Array(s*r/8|0);let a=0,c=0,h=0;for(let l=0;l<s;++l){const y=n[t[l]];if(y===void 0)throw new SyntaxError(`Non-${i} character`);c=c<<r|y,a+=r,a>=8&&(a-=8,o[h++]=255&c>>a)}if(a>=r||255&c<<8-a)throw new SyntaxError("Unexpected end of data");return o},D9=(t,e,r)=>{const i=e[e.length-1]==="=",n=(1<<r)-1;let s="",o=0,a=0;for(let c=0;c<t.length;++c)for(a=a<<8|t[c],o+=8;o>r;)o-=r,s+=e[n&a>>o];if(o&&(s+=e[n&a<<r-o]),i)for(;s.length*r&7;)s+="=";return s},Ut=({name:t,prefix:e,bitsPerChar:r,alphabet:i})=>ra({prefix:e,name:t,encode(n){return D9(n,i,r)},decode(n){return A9(n,i,r,t)}}),O9=ra({prefix:"\0",name:"identity",encode:t=>x9(t),decode:t=>_9(t)});var P9=Object.freeze({__proto__:null,identity:O9});const R9=Ut({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var $9=Object.freeze({__proto__:null,base2:R9});const N9=Ut({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var T9=Object.freeze({__proto__:null,base8:N9});const F9=ks({prefix:"9",name:"base10",alphabet:"0123456789"});var C9=Object.freeze({__proto__:null,base10:F9});const B9=Ut({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),L9=Ut({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var q9=Object.freeze({__proto__:null,base16:B9,base16upper:L9});const U9=Ut({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),z9=Ut({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),k9=Ut({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),j9=Ut({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),K9=Ut({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),V9=Ut({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),H9=Ut({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),W9=Ut({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),G9=Ut({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var J9=Object.freeze({__proto__:null,base32:U9,base32upper:z9,base32pad:k9,base32padupper:j9,base32hex:K9,base32hexupper:V9,base32hexpad:H9,base32hexpadupper:W9,base32z:G9});const Y9=ks({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),X9=ks({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var Z9=Object.freeze({__proto__:null,base36:Y9,base36upper:X9});const Q9=ks({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),e7=ks({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var t7=Object.freeze({__proto__:null,base58btc:Q9,base58flickr:e7});const r7=Ut({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),i7=Ut({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),n7=Ut({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),s7=Ut({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var o7=Object.freeze({__proto__:null,base64:r7,base64pad:i7,base64url:n7,base64urlpad:s7});const g0=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}"),a7=g0.reduce((t,e,r)=>(t[r]=e,t),[]),f7=g0.reduce((t,e,r)=>(t[e.codePointAt(0)]=r,t),[]);function c7(t){return t.reduce((e,r)=>(e+=a7[r],e),"")}function h7(t){const e=[];for(const r of t){const i=f7[r.codePointAt(0)];if(i===void 0)throw new Error(`Non-base256emoji character: ${r}`);e.push(i)}return new Uint8Array(e)}const u7=ra({prefix:"\u{1F680}",name:"base256emoji",encode:c7,decode:h7});var d7=Object.freeze({__proto__:null,base256emoji:u7}),l7=v0,b0=128,p7=127,g7=~p7,b7=Math.pow(2,31);function v0(t,e,r){e=e||[],r=r||0;for(var i=r;t>=b7;)e[r++]=t&255|b0,t/=128;for(;t&g7;)e[r++]=t&255|b0,t>>>=7;return e[r]=t|0,v0.bytes=r-i+1,e}var v7=uc,y7=128,y0=127;function uc(t,i){var r=0,i=i||0,n=0,s=i,o,a=t.length;do{if(s>=a)throw uc.bytes=0,new RangeError("Could not decode varint");o=t[s++],r+=n<28?(o&y0)<<n:(o&y0)*Math.pow(2,n),n+=7}while(o>=y7);return uc.bytes=s-i,r}var m7=Math.pow(2,7),w7=Math.pow(2,14),_7=Math.pow(2,21),x7=Math.pow(2,28),E7=Math.pow(2,35),S7=Math.pow(2,42),M7=Math.pow(2,49),I7=Math.pow(2,56),A7=Math.pow(2,63),D7=function(t){return t<m7?1:t<w7?2:t<_7?3:t<x7?4:t<E7?5:t<S7?6:t<M7?7:t<I7?8:t<A7?9:10},O7={encode:l7,decode:v7,encodingLength:D7},m0=O7;const w0=(t,e,r=0)=>(m0.encode(t,e,r),e),_0=t=>m0.encodingLength(t),dc=(t,e)=>{const r=e.byteLength,i=_0(t),n=i+_0(r),s=new Uint8Array(n+r);return w0(t,s,0),w0(r,s,i),s.set(e,n),new P7(t,r,e,s)};class P7{constructor(e,r,i,n){this.code=e,this.size=r,this.digest=i,this.bytes=n}}const x0=({name:t,code:e,encode:r})=>new R7(t,e,r);class R7{constructor(e,r,i){this.name=e,this.code=r,this.encode=i}digest(e){if(e instanceof Uint8Array){const r=this.encode(e);return r instanceof Uint8Array?dc(this.code,r):r.then(i=>dc(this.code,i))}else throw Error("Unknown type, must be binary type")}}const E0=t=>async e=>new Uint8Array(await crypto.subtle.digest(t,e)),$7=x0({name:"sha2-256",code:18,encode:E0("SHA-256")}),N7=x0({name:"sha2-512",code:19,encode:E0("SHA-512")});var T7=Object.freeze({__proto__:null,sha256:$7,sha512:N7});const S0=0,F7="identity",M0=l0;var C7=Object.freeze({__proto__:null,identity:{code:S0,name:F7,encode:M0,digest:t=>dc(S0,M0(t))}});new TextEncoder,new TextDecoder;const I0={...P9,...$9,...T9,...C9,...q9,...J9,...Z9,...t7,...o7,...d7};({...T7,...C7});function B7(t=0){return globalThis.Buffer!=null&&globalThis.Buffer.allocUnsafe!=null?globalThis.Buffer.allocUnsafe(t):new Uint8Array(t)}function A0(t,e,r,i){return{name:t,prefix:e,encoder:{name:t,prefix:e,encode:r},decoder:{decode:i}}}const D0=A0("utf8","u",t=>"u"+new TextDecoder("utf8").decode(t),t=>new TextEncoder().encode(t.substring(1))),lc=A0("ascii","a",t=>{let e="a";for(let r=0;r<t.length;r++)e+=String.fromCharCode(t[r]);return e},t=>{t=t.substring(1);const e=B7(t.length);for(let r=0;r<t.length;r++)e[r]=t.charCodeAt(r);return e}),L7={utf8:D0,"utf-8":D0,hex:I0.base16,latin1:lc,ascii:lc,binary:lc,...I0};function q7(t,e="utf8"){const r=L7[e];if(!r)throw new Error(`Unsupported encoding "${e}"`);return(e==="utf8"||e==="utf-8")&&globalThis.Buffer!=null&&globalThis.Buffer.from!=null?globalThis.Buffer.from(t,"utf8"):r.decoder.decode(`${r.prefix}${t}`)}class U7{constructor(e,r){this.core=e,this.logger=r,this.keychain=new Map,this.name=k5,this.version=j5,this.initialized=!1,this.storagePrefix=ni,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}=Z("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=Jt(r,this.name)}get context(){return tr(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}async setKeyChain(e){await this.core.storage.setItem(this.storageKey,Bd(e))}async getKeyChain(){const e=await this.core.storage.getItem(this.storageKey);return typeof e<"u"?Ld(e):void 0}async persist(){await this.setKeyChain(this.keychain)}isInitialized(){if(!this.initialized){const{message:e}=Z("NOT_INITIALIZED",this.name);throw new Error(e)}}}class z7{constructor(e,r,i){this.core=e,this.logger=r,this.name=U5,this.randomSessionIdentifier=Zf(),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=Zh(n);return Xh(s.publicKey)},this.generateKeyPair=()=>{this.isInitialized();const n=X4();return this.setPrivateKey(n.publicKey,n.privateKey)},this.signJWT=async n=>{this.isInitialized();const s=await this.getClientSeed(),o=Zh(s),a=this.randomSessionIdentifier;return await oy(a,n,z5,o)},this.generateSharedKey=(n,s,o)=>{this.isInitialized();const a=this.getPrivateKey(n),c=Z4(a,s);return this.setSymKey(c,o)},this.setSymKey=async(n,s)=>{this.isInitialized();const o=s||Go(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 a=Fl(o),c=tn(s);if(Bl(a))return t8(c,o?.encoding);if(Cl(a)){const M=a.senderPublicKey,I=a.receiverPublicKey;n=await this.generateSharedKey(M,I)}const h=this.getSymKey(n),{type:l,senderPublicKey:y}=a;return Q4({type:l,symKey:h,message:c,senderPublicKey:y,encoding:o?.encoding})},this.decode=async(n,s,o)=>{this.isInitialized();const a=i8(s,o);if(Bl(a)){const c=r8(s,o?.encoding);return An(c)}if(Cl(a)){const c=a.receiverPublicKey,h=a.senderPublicKey;n=await this.generateSharedKey(c,h)}try{const c=this.getSymKey(n),h=e8({symKey:c,encoded:s,encoding:o?.encoding});return An(h)}catch(c){this.logger.error(`Failed to decode message from topic: '${n}', clientId: '${await this.getClientId()}'`),this.logger.error(c)}},this.getPayloadType=(n,s=Gi)=>{const o=Ts({encoded:n,encoding:s});return gn(o.type)},this.getPayloadSenderPublicKey=(n,s=Gi)=>{const o=Ts({encoded:n,encoding:s});return o.senderPublicKey?Zt(o.senderPublicKey,Ht):void 0},this.core=e,this.logger=Jt(r,this.name),this.keychain=i||new U7(this.core,this.logger)}get context(){return tr(this.logger)}async setPrivateKey(e,r){return await this.keychain.set(e,r),e}getPrivateKey(e){return this.keychain.get(e)}async getClientSeed(){let e="";try{e=this.keychain.get(a0)}catch{e=Zf(),await this.keychain.set(a0,e)}return q7(e,"base16")}getSymKey(e){return this.keychain.get(e)}isInitialized(){if(!this.initialized){const{message:e}=Z("NOT_INITIALIZED",this.name);throw new Error(e)}}}class k7 extends ag{constructor(e,r){super(e,r),this.logger=e,this.core=r,this.messages=new Map,this.name=K5,this.version=V5,this.initialized=!1,this.storagePrefix=ni,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=vi(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=vi(n);return typeof s[o]<"u"},this.del=async i=>{this.isInitialized(),this.messages.delete(i),await this.persist()},this.logger=Jt(e,this.name),this.core=r}get context(){return tr(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}async setRelayerMessages(e){await this.core.storage.setItem(this.storageKey,Bd(e))}async getRelayerMessages(){const e=await this.core.storage.getItem(this.storageKey);return typeof e<"u"?Ld(e):void 0}async persist(){await this.setRelayerMessages(this.messages)}isInitialized(){if(!this.initialized){const{message:e}=Z("NOT_INITIALIZED",this.name);throw new Error(e)}}}var j7=Object.defineProperty,K7=Object.defineProperties,V7=Object.getOwnPropertyDescriptors,O0=Object.getOwnPropertySymbols,H7=Object.prototype.hasOwnProperty,W7=Object.prototype.propertyIsEnumerable,P0=(t,e,r)=>e in t?j7(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,R0=(t,e)=>{for(var r in e||(e={}))H7.call(e,r)&&P0(t,r,e[r]);if(O0)for(var r of O0(e))W7.call(e,r)&&P0(t,r,e[r]);return t},$0=(t,e)=>K7(t,V7(e));class G7 extends fg{constructor(e,r){super(e,r),this.relayer=e,this.logger=r,this.events=new jt.exports.EventEmitter,this.name=H5,this.queue=new Map,this.publishTimeout=Y.toMiliseconds(Y.ONE_MINUTE),this.initialPublishTimeout=Y.toMiliseconds(Y.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 a=s?.ttl||f0,c=Jo(s),h=s?.prompt||!1,l=s?.tag||0,y=s?.id||bn().toString(),M={topic:i,message:n,opts:{ttl:a,relay:c,prompt:h,tag:l,id:y,attestation:s?.attestation}},I=`Failed to publish payload, please try again. id:${y} tag:${l}`;try{const S=new Promise(async D=>{const R=({id:T})=>{M.opts.id===T&&(this.removeRequestFromQueue(T),this.relayer.events.removeListener(Pt.publish,R),D(M))};this.relayer.events.on(Pt.publish,R);const $=ji(new Promise((T,C)=>{this.rpcPublish({topic:i,message:n,ttl:a,prompt:h,tag:l,id:y,attestation:s?.attestation}).then(T).catch(L=>{this.logger.warn(L,L?.message),C(L)})}),this.initialPublishTimeout,`Failed initial publish, retrying.... id:${y} tag:${l}`);try{await $,this.events.removeListener(Pt.publish,R)}catch(T){this.queue.set(y,$0(R0({},M),{attempt:1})),this.logger.warn(T,T?.message)}});this.logger.trace({type:"method",method:"publish",params:{id:y,topic:i,message:n,opts:s}}),await ji(S,this.publishTimeout,I)}catch(S){if(this.logger.debug("Failed to Publish Payload"),this.logger.error(S),(o=s?.internal)!=null&&o.throwOnFailedPublish)throw S}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=Jt(r,this.name),this.registerEventListeners()}get context(){return tr(this.logger)}async rpcPublish(e){var r,i,n,s;const{topic:o,message:a,ttl:c=f0,prompt:h,tag:l,id:y,attestation:M}=e,I={method:Fs(Jo().protocol).publish,params:{topic:o,message:a,ttl:c,prompt:h,tag:l,attestation:M},id:y};Qt((r=I.params)==null?void 0:r.prompt)&&((i=I.params)==null||delete i.prompt),Qt((n=I.params)==null?void 0:n.tag)&&((s=I.params)==null||delete s.tag),this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"message",direction:"outgoing",request:I});const S=await this.relayer.request(I);return this.relayer.events.emit(Pt.publish,e),this.logger.debug("Successfully Published Payload"),S}removeRequestFromQueue(e){this.queue.delete(e)}checkQueue(){this.queue.forEach(async(e,r)=>{const i=e.attempt+1;this.queue.set(r,$0(R0({},e),{attempt:i}));const{topic:n,message:s,opts:o,attestation:a}=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:a}),this.logger.warn({},`Publisher: queue->published: ${e.opts.id}`)})}registerEventListeners(){this.relayer.core.heartbeat.on(In.pulse,()=>{if(this.needsTransportRestart){this.needsTransportRestart=!1,this.relayer.events.emit(Pt.connection_stalled);return}this.checkQueue()}),this.relayer.on(Pt.message_ack,e=>{this.removeRequestFromQueue(e.id.toString())})}}class J7{constructor(){this.map=new Map,this.set=(e,r)=>{const i=this.get(e);this.exists(e,r)||this.map.set(e,[...i,r])},this.get=e=>this.map.get(e)||[],this.exists=(e,r)=>this.get(e).includes(r),this.delete=(e,r)=>{if(typeof r>"u"){this.map.delete(e);return}if(!this.map.has(e))return;const i=this.get(e);if(!this.exists(e,r))return;const n=i.filter(s=>s!==r);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 Y7=Object.defineProperty,X7=Object.defineProperties,Z7=Object.getOwnPropertyDescriptors,N0=Object.getOwnPropertySymbols,Q7=Object.prototype.hasOwnProperty,e_=Object.prototype.propertyIsEnumerable,T0=(t,e,r)=>e in t?Y7(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,js=(t,e)=>{for(var r in e||(e={}))Q7.call(e,r)&&T0(t,r,e[r]);if(N0)for(var r of N0(e))e_.call(e,r)&&T0(t,r,e[r]);return t},pc=(t,e)=>X7(t,Z7(e));class t_ extends ug{constructor(e,r){super(e,r),this.relayer=e,this.logger=r,this.subscriptions=new Map,this.topicMap=new J7,this.events=new jt.exports.EventEmitter,this.name=Q5,this.version=e9,this.pending=new Map,this.cached=[],this.initialized=!1,this.pendingSubscriptionWatchLabel="pending_sub_watch_label",this.pollingInterval=20,this.storagePrefix=ni,this.subscribeTimeout=Y.toMiliseconds(Y.ONE_MINUTE),this.initialSubscribeTimeout=Y.toMiliseconds(Y.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=Jo(n),o={topic:i,relay:s,transportType:n?.transportType};this.pending.set(i,o);const a=await this.rpcSubscribe(i,s,n);return typeof a=="string"&&(this.onSubscribe(a,o),this.logger.debug("Successfully Subscribed Topic"),this.logger.trace({type:"method",method:"subscribe",params:{topic:i,opts:n}})),a}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 a=new Y.Watch;a.start(n);const c=setInterval(()=>{(!this.pending.has(i)&&this.topics.includes(i)||this.cached.some(h=>h.topic===i))&&(clearInterval(c),a.stop(n),s(!0)),a.elapsed(n)>=t9&&(clearInterval(c),a.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(In.pulse,async()=>{await this.checkPending()}),this.events.on(vr.created,async i=>{const n=vr.created;this.logger.info(`Emitting ${n}`),this.logger.debug({type:"event",event:n,data:i}),await this.persist()}),this.events.on(vr.deleted,async i=>{const n=vr.deleted;this.logger.info(`Emitting ${n}`),this.logger.debug({type:"event",event:n,data:i}),await this.persist()})},this.relayer=e,this.logger=Jt(r,this.name),this.clientId=""}get context(){return tr(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.relayer.core.customStoragePrefix+"//"+this.name}get length(){return this.subscriptions.size}get ids(){return Array.from(this.subscriptions.keys())}get values(){return Array.from(this.subscriptions.values())}get topics(){return this.topicMap.topics}hasSubscription(e,r){let i=!1;try{i=this.getSubscription(e).topic===r}catch{}return i}reset(){this.cached=[],this.initialized=!0}onDisable(){this.cached=this.values,this.subscriptions.clear(),this.topicMap.clear()}async unsubscribeByTopic(e,r){const i=this.topicMap.get(e);await Promise.all(i.map(async n=>await this.unsubscribeById(e,n,r)))}async unsubscribeById(e,r,i){this.logger.debug("Unsubscribing Topic"),this.logger.trace({type:"method",method:"unsubscribe",params:{topic:e,id:r,opts:i}});try{const n=Jo(i);await this.rpcUnsubscribe(e,r,n);const s=ct("USER_DISCONNECTED",`${this.name}, ${e}`);await this.onUnsubscribe(e,r,s),this.logger.debug("Successfully Unsubscribed Topic"),this.logger.trace({type:"method",method:"unsubscribe",params:{topic:e,id:r,opts:i}})}catch(n){throw this.logger.debug("Failed to Unsubscribe Topic"),this.logger.error(n),n}}async rpcSubscribe(e,r,i){var n;i?.transportType===ht.relay&&await this.restartToComplete();const s={method:Fs(r.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 a=this.getSubscriptionId(e);if(i?.transportType===ht.link_mode)return setTimeout(()=>{(this.relayer.connected||this.relayer.connecting)&&this.relayer.request(s).catch(l=>this.logger.warn(l))},Y.toMiliseconds(Y.ONE_SECOND)),a;const c=new Promise(async l=>{const y=M=>{M.topic===e&&(this.events.removeListener(vr.created,y),l(M.id))};this.events.on(vr.created,y);try{const M=await ji(new Promise((I,S)=>{this.relayer.request(s).catch(D=>{this.logger.warn(D,D?.message),S(D)}).then(I)}),this.initialSubscribeTimeout,`Subscribing to ${e} failed, please try again`);this.events.removeListener(vr.created,y),l(M)}catch{}}),h=await ji(c,this.subscribeTimeout,`Subscribing to ${e} failed, please try again`);if(!h&&o)throw new Error(`Subscribing to ${e} failed, please try again`);return h?a:null}catch(a){if(this.logger.debug("Outgoing Relay Subscribe Payload stalled"),this.relayer.events.emit(Pt.connection_stalled),o)throw a}return null}async rpcBatchSubscribe(e){if(!e.length)return;const r=e[0].relay,i={method:Fs(r.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 ji(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(Pt.connection_stalled)}}async rpcBatchFetchMessages(e){if(!e.length)return;const r=e[0].relay,i={method:Fs(r.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 ji(new Promise((s,o)=>{this.relayer.request(i).catch(a=>{this.logger.warn(a),o(a)}).then(s)}),this.subscribeTimeout,"rpcBatchFetchMessages failed, please try again")}catch{this.relayer.events.emit(Pt.connection_stalled)}return n}rpcUnsubscribe(e,r,i){const n={method:Fs(i.protocol).unsubscribe,params:{topic:e,id:r}};return this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"payload",direction:"outgoing",request:n}),this.relayer.request(n)}onSubscribe(e,r){this.setSubscription(e,pc(js({},r),{id:e})),this.pending.delete(r.topic)}onBatchSubscribe(e){e.length&&e.forEach(r=>{this.setSubscription(r.id,js({},r)),this.pending.delete(r.topic)})}async onUnsubscribe(e,r,i){this.events.removeAllListeners(r),this.hasSubscription(r,e)&&this.deleteSubscription(r,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,r){this.logger.debug("Setting subscription"),this.logger.trace({type:"method",method:"setSubscription",id:e,subscription:r}),this.addSubscription(e,r)}addSubscription(e,r){this.subscriptions.set(e,js({},r)),this.topicMap.set(r.topic,e),this.events.emit(vr.created,r)}getSubscription(e){this.logger.debug("Getting subscription"),this.logger.trace({type:"method",method:"getSubscription",id:e});const r=this.subscriptions.get(e);if(!r){const{message:i}=Z("NO_MATCHING_KEY",`${this.name}: ${e}`);throw new Error(i)}return r}deleteSubscription(e,r){this.logger.debug("Deleting subscription"),this.logger.trace({type:"method",method:"deleteSubscription",id:e,reason:r});const i=this.getSubscription(e);this.subscriptions.delete(e),this.topicMap.delete(i.topic,e),this.events.emit(vr.deleted,pc(js({},i),{reason:r}))}async persist(){await this.setRelayerSubscriptions(this.values),this.events.emit(vr.sync)}async onRestart(){if(this.cached.length){const e=[...this.cached],r=Math.ceil(this.cached.length/this.batchSubscribeTopicsLimit);for(let i=0;i<r;i++){const n=e.splice(0,this.batchSubscribeTopicsLimit);await this.batchSubscribe(n)}}this.events.emit(vr.resubscribed)}async restore(){try{const e=await this.getRelayerSubscriptions();if(typeof e>"u"||!e.length)return;if(this.subscriptions.size){const{message:r}=Z("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(r),this.logger.error(`${this.name}: ${JSON.stringify(this.values)}`),new Error(r)}this.cached=e,this.logger.debug(`Successfully Restored subscriptions for ${this.name}`),this.logger.trace({type:"method",method:"restore",subscriptions:this.values})}catch(e){this.logger.debug(`Failed to Restore subscriptions for ${this.name}`),this.logger.error(e)}}async batchSubscribe(e){e.length&&(await this.rpcBatchSubscribe(e),this.onBatchSubscribe(e.map(r=>pc(js({},r),{id:this.getSubscriptionId(r.topic)}))))}async batchFetchMessages(e){if(!e.length)return;this.logger.trace(`Fetching batch messages for ${e.length} subscriptions`);const r=await this.rpcBatchFetchMessages(e);r&&r.messages&&(await l6(Y.toMiliseconds(Y.ONE_SECOND)),await this.relayer.handleBatchMessageEvents(r.messages))}async onConnect(){await this.restart(),this.reset()}onDisconnect(){this.onDisable()}isInitialized(){if(!this.initialized){const{message:e}=Z("NOT_INITIALIZED",this.name);throw new Error(e)}}async restartToComplete(){!this.relayer.connected&&!this.relayer.connecting&&await this.relayer.transportOpen()}getSubscriptionId(e){return vi(e+this.clientId)}}var r_=Object.defineProperty,F0=Object.getOwnPropertySymbols,i_=Object.prototype.hasOwnProperty,n_=Object.prototype.propertyIsEnumerable,C0=(t,e,r)=>e in t?r_(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,B0=(t,e)=>{for(var r in e||(e={}))i_.call(e,r)&&C0(t,r,e[r]);if(F0)for(var r of F0(e))n_.call(e,r)&&C0(t,r,e[r]);return t};class s_ extends cg{constructor(e){super(e),this.protocol="wc",this.version=2,this.events=new jt.exports.EventEmitter,this.name=G5,this.transportExplicitlyClosed=!1,this.initialized=!1,this.connectionAttemptInProgress=!1,this.hasExperiencedNetworkDisruption=!1,this.heartBeatTimeout=Y.toMiliseconds(Y.THIRTY_SECONDS+Y.FIVE_SECONDS),this.requestsInFlight=[],this.connectTimeout=Y.toMiliseconds(Y.ONE_SECOND*15),this.request=async r=>{var i,n;this.logger.debug("Publishing Request Payload");const s=r.id||bn().toString();await this.toEstablishConnection();try{this.logger.trace({id:s,method:r.method,topic:(i=r.params)==null?void 0:i.topic},"relayer.request - publishing...");const o=`${s}:${((n=r.params)==null?void 0:n.tag)||""}`;this.requestsInFlight.push(o);const a=await this.provider.request(r);return this.requestsInFlight=this.requestsInFlight.filter(c=>c!==o),a}catch(o){throw this.logger.debug(`Failed to Publish Request: ${s}`),o}},this.resetPingTimeout=()=>{if(Uo())try{clearTimeout(this.pingTimeout),this.pingTimeout=setTimeout(()=>{var r,i,n;this.logger.debug({},"pingTimeout: Connection stalled, terminating..."),(n=(i=(r=this.provider)==null?void 0:r.connection)==null?void 0:i.socket)==null||n.terminate()},this.heartBeatTimeout)}catch(r){this.logger.warn(r,r?.message)}},this.onPayloadHandler=r=>{this.onProviderPayload(r),this.resetPingTimeout()},this.onConnectHandler=()=>{this.logger.warn({},"Relayer connected \u{1F6DC}"),this.startPingTimeout(),this.events.emit(Pt.connect)},this.onDisconnectHandler=()=>{this.logger.warn({},"Relayer disconnected \u{1F6D1}"),this.requestsInFlight=[],this.onProviderDisconnect()},this.onProviderErrorHandler=r=>{this.logger.fatal(r,`Fatal socket error: ${r?.message}`),this.events.emit(Pt.error,r),this.logger.fatal("Fatal socket error received, closing transport"),this.transportClose()},this.registerProviderListeners=()=>{this.provider.on(Dr.payload,this.onPayloadHandler),this.provider.on(Dr.connect,this.onConnectHandler),this.provider.on(Dr.disconnect,this.onDisconnectHandler),this.provider.on(Dr.error,this.onProviderErrorHandler)},this.core=e.core,this.logger=typeof e.logger<"u"&&typeof e.logger!="string"?Jt(e.logger,this.name):ai(Ia({level:e.logger||W5})),this.messages=new k7(this.logger,e.core),this.subscriber=new t_(this,this.logger),this.publisher=new G7(this,this.logger),this.relayUrl=e?.relayUrl||h0,this.projectId=e.projectId,Xw()?this.packageName=Td():Zw()&&(this.bundleId=Td()),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 tr(this.logger)}get connected(){var e,r,i;return((i=(r=(e=this.provider)==null?void 0:e.connection)==null?void 0:r.socket)==null?void 0:i.readyState)===1}get connecting(){var e,r,i;return((i=(r=(e=this.provider)==null?void 0:e.connection)==null?void 0:r.socket)==null?void 0:i.readyState)===0}async publish(e,r,i){this.isInitialized(),await this.publisher.publish(e,r,i),await this.recordMessageEvent({topic:e,message:r,publishedAt:Date.now(),transportType:ht.relay})}async subscribe(e,r){var i,n,s;this.isInitialized(),(!(r!=null&&r.transportType)||r?.transportType==="relay")&&await this.toEstablishConnection();const o=typeof((i=r?.internal)==null?void 0:i.throwOnFailedPublish)>"u"?!0:(n=r?.internal)==null?void 0:n.throwOnFailedPublish;let a=((s=this.subscriber.topicMap.get(e))==null?void 0:s[0])||"",c;const h=l=>{l.topic===e&&(this.subscriber.off(vr.created,h),c())};return await Promise.all([new Promise(l=>{c=l,this.subscriber.on(vr.created,h)}),new Promise(async(l,y)=>{a=await this.subscriber.subscribe(e,B0({internal:{throwOnFailedPublish:o}},r)).catch(M=>{o&&y(M)})||a,l()})]),a}async unsubscribe(e,r){this.isInitialized(),await this.subscriber.unsubscribe(e,r)}on(e,r){this.events.on(e,r)}once(e,r){this.events.once(e,r)}off(e,r){this.events.off(e,r)}removeListener(e,r){this.events.removeListener(e,r)}async transportDisconnect(){this.provider.disconnect&&(this.hasExperiencedNetworkDisruption||this.connected)?await ji(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(r,i)=>{await this.connect(e).then(r).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 Wl())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 r=e.sort((i,n)=>i.publishedAt-n.publishedAt);this.logger.debug(`Batch of ${r.length} message events sorted`);for(const i of r)try{await this.onMessageEvent(i)}catch(n){this.logger.warn(n,"Error while processing batch message event: "+n?.message)}this.logger.trace(`Batch of ${r.length} message events processed`)}async onLinkMessageEvent(e,r){const{topic:i}=e;if(!r.sessionExists){const n=Et(Y.FIVE_MINUTES),s={topic:i,expiry:n,relay:{protocol:"irn"},active:!1};await this.core.pairing.pairings.set(i,s)}this.events.emit(Pt.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 r=1;for(;r<6;){try{this.logger.debug({},`Connecting to ${this.relayUrl}, attempt: ${r}...`),await this.createProvider(),await new Promise(async(i,n)=>{const s=()=>{n(new Error("Connection interrupted while trying to subscribe"))};this.provider.once(Dr.disconnect,s),await ji(new Promise((o,a)=>{this.provider.connect().then(o).catch(a)}),this.connectTimeout,`Socket stalled when trying to connect to ${this.relayUrl}`).catch(o=>{n(o)}).finally(()=>{this.provider.off(Dr.disconnect,s),clearTimeout(this.reconnectTimeout),this.reconnectTimeout=void 0}),await new Promise(async(o,a)=>{const c=()=>{a(new Error("Connection interrupted while trying to subscribe"))};this.provider.once(Dr.disconnect,c),await this.subscriber.start().then(o).catch(a).finally(()=>{this.provider.off(Dr.disconnect,c)})}),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: ${r}`);break}await new Promise(i=>setTimeout(i,Y.toMiliseconds(r*1))),r++}}startPingTimeout(){var e,r,i,n,s;if(Uo())try{(r=(e=this.provider)==null?void 0:e.connection)!=null&&r.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 $5(new C5(r6({sdkVersion:hc,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:r,message:i}=e;await this.messages.set(r,i)}async shouldIgnoreMessageEvent(e){const{topic:r,message:i}=e;if(!i||i.length===0)return this.logger.warn(`Ignoring invalid/empty message: ${i}`),!0;if(!await this.subscriber.isSubscribed(r))return this.logger.warn(`Ignoring message for non-subscribed topic ${r}`),!0;const n=this.messages.has(r,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}),fc(e)){if(!e.method.endsWith(J5))return;const r=e.params,{topic:i,message:n,publishedAt:s,attestation:o}=r.data,a={topic:i,message:n,publishedAt:s,transportType:ht.relay,attestation:o};this.logger.debug("Emitting Relayer Payload"),this.logger.trace(B0({type:"event",event:r.id},a)),this.events.emit(r.id,a),await this.acknowledgePayload(e),await this.onMessageEvent(a)}else ea(e)&&this.events.emit(Pt.message_ack,e)}async onMessageEvent(e){await this.shouldIgnoreMessageEvent(e)||(this.events.emit(Pt.message,e),await this.recordMessageEvent(e))}async acknowledgePayload(e){const r=oc(e.id,!0);await this.provider.connection.send(r)}unregisterProviderListeners(){this.provider.off(Dr.payload,this.onPayloadHandler),this.provider.off(Dr.connect,this.onConnectHandler),this.provider.off(Dr.disconnect,this.onDisconnectHandler),this.provider.off(Dr.error,this.onProviderErrorHandler),clearTimeout(this.pingTimeout)}async registerEventListeners(){let e=await Wl();K8(async r=>{e!==r&&(e=r,r?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(Pt.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))},Y.toMiliseconds(Y5))))}isInitialized(){if(!this.initialized){const{message:e}=Z("NOT_INITIALIZED",this.name);throw new Error(e)}}async toEstablishConnection(){await this.confirmOnlineStateOrThrow(),!this.connected&&await this.transportOpen()}}var o_=Object.defineProperty,L0=Object.getOwnPropertySymbols,a_=Object.prototype.hasOwnProperty,f_=Object.prototype.propertyIsEnumerable,q0=(t,e,r)=>e in t?o_(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,U0=(t,e)=>{for(var r in e||(e={}))a_.call(e,r)&&q0(t,r,e[r]);if(L0)for(var r of L0(e))f_.call(e,r)&&q0(t,r,e[r]);return t};class _n extends hg{constructor(e,r,i,n=ni,s=void 0){super(e,r,i,n),this.core=e,this.logger=r,this.name=i,this.map=new Map,this.version=X5,this.cached=[],this.initialized=!1,this.storagePrefix=ni,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&&!Qt(o)?this.map.set(this.getKey(o),o):_8(o)?this.map.set(o.id,o):x8(o)&&this.map.set(o.topic,o)}),this.cached=[],this.initialized=!0)},this.set=async(o,a)=>{this.isInitialized(),this.map.has(o)?await this.update(o,a):(this.logger.debug("Setting value"),this.logger.trace({type:"method",method:"set",key:o,value:a}),this.map.set(o,a),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(a=>Object.keys(o).every(c=>B5(a[c],o[c]))):this.values),this.update=async(o,a)=>{this.isInitialized(),this.logger.debug("Updating value"),this.logger.trace({type:"method",method:"update",key:o,update:a});const c=U0(U0({},this.getData(o)),a);this.map.set(o,c),await this.persist()},this.delete=async(o,a)=>{this.isInitialized(),this.map.has(o)&&(this.logger.debug("Deleting value"),this.logger.trace({type:"method",method:"delete",key:o,reason:a}),this.map.delete(o),this.addToRecentlyDeleted(o),await this.persist())},this.logger=Jt(r,this.name),this.storagePrefix=n,this.getKey=s}get context(){return tr(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}get length(){return this.map.size}get keys(){return Array.from(this.map.keys())}get values(){return Array.from(this.map.values())}addToRecentlyDeleted(e){this.recentlyDeleted.push(e),this.recentlyDeleted.length>=this.recentlyDeletedLimit&&this.recentlyDeleted.splice(0,this.recentlyDeletedLimit/2)}async setDataStore(e){await this.core.storage.setItem(this.storageKey,e)}async getDataStore(){return await this.core.storage.getItem(this.storageKey)}getData(e){const r=this.map.get(e);if(!r){if(this.recentlyDeleted.includes(e)){const{message:n}=Z("MISSING_OR_INVALID",`Record was recently deleted - ${this.name}: ${e}`);throw this.logger.error(n),new Error(n)}const{message:i}=Z("NO_MATCHING_KEY",`${this.name}: ${e}`);throw this.logger.error(i),new Error(i)}return r}async persist(){await this.setDataStore(this.values)}async restore(){try{const e=await this.getDataStore();if(typeof e>"u"||!e.length)return;if(this.map.size){const{message:r}=Z("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(r),new Error(r)}this.cached=e,this.logger.debug(`Successfully Restored value for ${this.name}`),this.logger.trace({type:"method",method:"restore",value:this.values})}catch(e){this.logger.debug(`Failed to Restore value for ${this.name}`),this.logger.error(e)}}isInitialized(){if(!this.initialized){const{message:e}=Z("NOT_INITIALIZED",this.name);throw new Error(e)}}}class c_{constructor(e,r){this.core=e,this.logger=r,this.name=r9,this.version=i9,this.events=new jt.exports,this.initialized=!1,this.storagePrefix=ni,this.ignoredPayloadTypes=[bi],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=Zf(),s=await this.core.crypto.setSymKey(n),o=Et(Y.FIVE_MINUTES),a={protocol:c0},c={topic:s,expiry:o,relay:a,active:!1,methods:i?.methods},h=ql({protocol:this.core.protocol,version:this.core.version,topic:s,symKey:n,relay:a,expiryTimestamp:o,methods:i?.methods});return this.events.emit(yn.create,c),this.core.expirer.set(s,o),await this.pairings.set(s,c),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:[si.pairing_started]}});this.isValidPair(i,n);const{topic:s,symKey:o,relay:a,expiryTimestamp:c,methods:h}=Ll(i.uri);n.props.properties.topic=s,n.addTrace(si.pairing_uri_validation_success),n.addTrace(si.pairing_uri_not_expired);let l;if(this.pairings.keys.includes(s)){if(l=this.pairings.get(s),n.addTrace(si.existing_pairing),l.active)throw n.setError(_i.active_pairing_already_exists),new Error(`Pairing already exists: ${s}. Please try again with a new connection URI.`);n.addTrace(si.pairing_not_expired)}const y=c||Et(Y.FIVE_MINUTES),M={topic:s,relay:a,expiry:y,active:!1,methods:h};this.core.expirer.set(s,y),await this.pairings.set(s,M),n.addTrace(si.store_new_pairing),i.activatePairing&&await this.activate({topic:s}),this.events.emit(yn.create,M),n.addTrace(si.emit_inactive_pairing),this.core.crypto.keychain.has(s)||await this.core.crypto.setSymKey(o,s),n.addTrace(si.subscribing_pairing_topic);try{await this.core.relayer.confirmOnlineStateOrThrow()}catch{n.setError(_i.no_internet_connection)}try{await this.core.relayer.subscribe(s,{relay:a})}catch(I){throw n.setError(_i.subscribe_pairing_topic_failure),I}return n.addTrace(si.subscribe_pairing_topic_success),M},this.activate=async({topic:i})=>{this.isInitialized();const n=Et(Y.FIVE_MINUTES);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),this.logger.warn("ping() is deprecated and will be removed in the next major release.");const{topic:n}=i;if(this.pairings.keys.includes(n)){const s=await this.sendRequest(n,"wc_pairingPing",{}),{done:o,resolve:a,reject:c}=ln();this.events.once(Se("pairing_ping",s),({error:h})=>{h?c(h):a()}),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:a}=i,c=this.core.crypto.keychain.get(n);return ql({protocol:this.core.protocol,version:this.core.version,topic:n,symKey:c,relay:s,expiryTimestamp:o,methods:a})},this.sendRequest=async(i,n,s)=>{const o=vn(n,s),a=await this.core.crypto.encode(i,o),c=qs[n].req;return this.core.history.set(i,o),this.core.relayer.publish(i,a,c),o.id},this.sendResult=async(i,n,s)=>{const o=oc(i,s),a=await this.core.crypto.encode(n,o),c=await this.core.history.get(n,i),h=qs[c.request.method].res;await this.core.relayer.publish(n,a,h),await this.core.history.resolve(o)},this.sendError=async(i,n,s)=>{const o=ac(i,s),a=await this.core.crypto.encode(n,o),c=await this.core.history.get(n,i),h=qs[c.request.method]?qs[c.request.method].res:qs.unregistered_method.res;await this.core.relayer.publish(n,a,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=>Ki(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(yn.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(()=>{ii(n)?this.events.emit(Se("pairing_ping",s),{}):Ar(n)&&this.events.emit(Se("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(yn.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 a=ct("WC_METHOD_UNSUPPORTED",o);await this.sendError(s,i,a),this.logger.error(a)}catch(a){await this.sendError(s,i,a),this.logger.error(a)}},this.onUnknownRpcMethodResponse=i=>{this.registeredMethods.includes(i)||this.logger.error(ct("WC_METHOD_UNSUPPORTED",i))},this.isValidPair=(i,n)=>{var s;if(!or(i)){const{message:a}=Z("MISSING_OR_INVALID",`pair() params: ${i}`);throw n.setError(_i.malformed_pairing_uri),new Error(a)}if(!w8(i.uri)){const{message:a}=Z("MISSING_OR_INVALID",`pair() uri: ${i.uri}`);throw n.setError(_i.malformed_pairing_uri),new Error(a)}const o=Ll(i?.uri);if(!((s=o?.relay)!=null&&s.protocol)){const{message:a}=Z("MISSING_OR_INVALID","pair() uri#relay-protocol");throw n.setError(_i.malformed_pairing_uri),new Error(a)}if(!(o!=null&&o.symKey)){const{message:a}=Z("MISSING_OR_INVALID","pair() uri#symKey");throw n.setError(_i.malformed_pairing_uri),new Error(a)}if(o!=null&&o.expiryTimestamp&&Y.toMiliseconds(o?.expiryTimestamp)<Date.now()){n.setError(_i.pairing_expired);const{message:a}=Z("EXPIRED","pair() URI has expired. Please try again with a new connection URI.");throw new Error(a)}},this.isValidPing=async i=>{if(!or(i)){const{message:s}=Z("MISSING_OR_INVALID",`ping() params: ${i}`);throw new Error(s)}const{topic:n}=i;await this.isValidPairingTopic(n)},this.isValidDisconnect=async i=>{if(!or(i)){const{message:s}=Z("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}=Z("MISSING_OR_INVALID",`pairing topic should be a string: ${i}`);throw new Error(n)}if(!this.pairings.keys.includes(i)){const{message:n}=Z("NO_MATCHING_KEY",`pairing topic doesn't exist: ${i}`);throw new Error(n)}if(Ki(this.pairings.get(i).expiry)){await this.deletePairing(i);const{message:n}=Z("EXPIRED",`pairing topic: ${i}`);throw new Error(n)}},this.core=e,this.logger=Jt(r,this.name),this.pairings=new _n(this.core,this.logger,this.name,this.storagePrefix)}get context(){return tr(this.logger)}isInitialized(){if(!this.initialized){const{message:e}=Z("NOT_INITIALIZED",this.name);throw new Error(e)}}registerRelayerEvents(){this.core.relayer.on(Pt.message,async e=>{const{topic:r,message:i,transportType:n}=e;if(!this.pairings.keys.includes(r)||n===ht.link_mode||this.ignoredPayloadTypes.includes(this.core.crypto.getPayloadType(i)))return;const s=await this.core.crypto.decode(r,i);try{fc(s)?(this.core.history.set(r,s),this.onRelayEventRequest({topic:r,payload:s})):ea(s)&&(await this.core.history.resolve(s),await this.onRelayEventResponse({topic:r,payload:s}),this.core.history.delete(r,s.id))}catch(o){this.logger.error(o)}})}registerExpirerEvents(){this.core.expirer.on(Or.expired,async e=>{const{topic:r}=Ud(e.target);r&&this.pairings.keys.includes(r)&&(await this.deletePairing(r,!0),this.events.emit(yn.expire,{topic:r}))})}}class h_ extends og{constructor(e,r){super(e,r),this.core=e,this.logger=r,this.records=new Map,this.events=new jt.exports.EventEmitter,this.name=n9,this.version=s9,this.cached=[],this.initialized=!1,this.storagePrefix=ni,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:Et(Y.THIRTY_DAYS)};this.records.set(o.id,o),this.persist(),this.events.emit(Ur.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=Ar(i)?{error:i.error}:{result:i.result},this.records.set(n.id,n),this.persist(),this.events.emit(Ur.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(Ur.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=Jt(r,this.name)}get context(){return tr(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}get size(){return this.records.size}get keys(){return Array.from(this.records.keys())}get values(){return Array.from(this.records.values())}get pending(){const e=[];return this.values.forEach(r=>{if(typeof r.response<"u")return;const i={topic:r.topic,request:vn(r.request.method,r.request.params,r.id),chainId:r.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 r=this.records.get(e);if(!r){const{message:i}=Z("NO_MATCHING_KEY",`${this.name}: ${e}`);throw new Error(i)}return r}async persist(){await this.setJsonRpcRecords(this.values),this.events.emit(Ur.sync)}async restore(){try{const e=await this.getJsonRpcRecords();if(typeof e>"u"||!e.length)return;if(this.records.size){const{message:r}=Z("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(r),new Error(r)}this.cached=e,this.logger.debug(`Successfully Restored records for ${this.name}`),this.logger.trace({type:"method",method:"restore",records:this.values})}catch(e){this.logger.debug(`Failed to Restore records for ${this.name}`),this.logger.error(e)}}registerEventListeners(){this.events.on(Ur.created,e=>{const r=Ur.created;this.logger.info(`Emitting ${r}`),this.logger.debug({type:"event",event:r,record:e})}),this.events.on(Ur.updated,e=>{const r=Ur.updated;this.logger.info(`Emitting ${r}`),this.logger.debug({type:"event",event:r,record:e})}),this.events.on(Ur.deleted,e=>{const r=Ur.deleted;this.logger.info(`Emitting ${r}`),this.logger.debug({type:"event",event:r,record:e})}),this.core.heartbeat.on(In.pulse,()=>{this.cleanup()})}cleanup(){try{this.isInitialized();let e=!1;this.records.forEach(r=>{Y.toMiliseconds(r.expiry||0)-Date.now()<=0&&(this.logger.info(`Deleting expired history log: ${r.id}`),this.records.delete(r.id),this.events.emit(Ur.deleted,r,!1),e=!0)}),e&&this.persist()}catch(e){this.logger.warn(e)}}isInitialized(){if(!this.initialized){const{message:e}=Z("NOT_INITIALIZED",this.name);throw new Error(e)}}}class u_ extends dg{constructor(e,r){super(e,r),this.core=e,this.logger=r,this.expirations=new Map,this.events=new jt.exports.EventEmitter,this.name=o9,this.version=a9,this.cached=[],this.initialized=!1,this.storagePrefix=ni,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(Or.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(Or.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=Jt(r,this.name)}get context(){return tr(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 i6(e);if(typeof e=="number")return n6(e);const{message:r}=Z("UNKNOWN_TYPE",`Target type: ${typeof e}`);throw new Error(r)}async setExpirations(e){await this.core.storage.setItem(this.storageKey,e)}async getExpirations(){return await this.core.storage.getItem(this.storageKey)}async persist(){await this.setExpirations(this.values),this.events.emit(Or.sync)}async restore(){try{const e=await this.getExpirations();if(typeof e>"u"||!e.length)return;if(this.expirations.size){const{message:r}=Z("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(r),new Error(r)}this.cached=e,this.logger.debug(`Successfully Restored expirations for ${this.name}`),this.logger.trace({type:"method",method:"restore",expirations:this.values})}catch(e){this.logger.debug(`Failed to Restore expirations for ${this.name}`),this.logger.error(e)}}getExpiration(e){const r=this.expirations.get(e);if(!r){const{message:i}=Z("NO_MATCHING_KEY",`${this.name}: ${e}`);throw this.logger.warn(i),new Error(i)}return r}checkExpiry(e,r){const{expiry:i}=r;Y.toMiliseconds(i)-Date.now()<=0&&this.expire(e,r)}expire(e,r){this.expirations.delete(e),this.events.emit(Or.expired,{target:e,expiration:r})}checkExpirations(){this.core.relayer.connected&&this.expirations.forEach((e,r)=>this.checkExpiry(r,e))}registerEventListeners(){this.core.heartbeat.on(In.pulse,()=>this.checkExpirations()),this.events.on(Or.created,e=>{const r=Or.created;this.logger.info(`Emitting ${r}`),this.logger.debug({type:"event",event:r,data:e}),this.persist()}),this.events.on(Or.expired,e=>{const r=Or.expired;this.logger.info(`Emitting ${r}`),this.logger.debug({type:"event",event:r,data:e}),this.persist()}),this.events.on(Or.deleted,e=>{const r=Or.deleted;this.logger.info(`Emitting ${r}`),this.logger.debug({type:"event",event:r,data:e}),this.persist()})}isInitialized(){if(!this.initialized){const{message:e}=Z("NOT_INITIALIZED",this.name);throw new Error(e)}}}class d_ extends lg{constructor(e,r,i){super(e,r,i),this.core=e,this.logger=r,this.store=i,this.name=f9,this.verifyUrlV3=h9,this.storagePrefix=ni,this.version=o0,this.init=async()=>{var n;this.isDevEnv||(this.publicKey=await this.store.getItem(this.storeKey),this.publicKey&&Y.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(!Ss()||this.isDevEnv)return;const s=window.location.origin,{id:o,decryptedId:a}=n,c=`${this.verifyUrlV3}/attestation?projectId=${this.core.projectId}&origin=${s}&id=${o}&decryptedId=${a}`;try{const h=ds(),l=this.startAbortTimer(Y.ONE_SECOND*5),y=await new Promise((M,I)=>{const S=()=>{window.removeEventListener("message",R),h.body.removeChild(D),I("attestation aborted")};this.abortController.signal.addEventListener("abort",S);const D=h.createElement("iframe");D.src=c,D.style.display="none",D.addEventListener("error",S,{signal:this.abortController.signal});const R=$=>{if($.data&&typeof $.data=="string")try{const T=JSON.parse($.data);if(T.type==="verify_attestation"){if(Wa(T.attestation).payload.id!==o)return;clearInterval(l),h.body.removeChild(D),this.abortController.signal.removeEventListener("abort",S),window.removeEventListener("message",R),M(T.attestation===null?"":T.attestation)}}catch(T){this.logger.warn(T)}};h.body.appendChild(D),window.addEventListener("message",R,{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:a}=n;if(s===""){this.logger.debug("resolve: attestationId is empty, skipping");return}if(s){if(Wa(s).payload.id!==a)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 c=this.getVerifyUrl(n?.verifyUrl);return this.fetchAttestation(o,c)},this.fetchAttestation=async(n,s)=>{this.logger.debug(`resolving attestation: ${n} from url: ${s}`);const o=this.startAbortTimer(Y.ONE_SECOND*5),a=await fetch(`${s}/attestation/${n}?v2Supported=true`,{signal:this.abortController.signal});return clearTimeout(o),a.status===200?await a.json():void 0},this.getVerifyUrl=n=>{let s=n||Us;return u9.includes(s)||(this.logger.info(`verify url: ${s}, not included in trusted list, assigning default: ${Us}`),s=Us),s},this.fetchPublicKey=async()=>{try{this.logger.debug(`fetching public key from: ${this.verifyUrlV3}`);const n=this.startAbortTimer(Y.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(a){this.logger.error(a),this.logger.warn("error validating attestation")}const o=await this.fetchAndPersistPublicKey();try{if(o)return this.validateAttestation(n,o)}catch(a){this.logger.error(a),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=a8(n,s.publicKey),a={hasExpired:Y.toMiliseconds(o.exp)<Date.now(),payload:o};if(a.hasExpired)throw this.logger.warn("resolve: jwt attestation expired"),new Error("JWT attestation expired");return{origin:a.payload.origin,isScam:a.payload.isScam,isVerified:a.payload.isVerified}},this.logger=Jt(r,this.name),this.abortController=new AbortController,this.isDevEnv=Nf(),this.init()}get storeKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//verify:public:key"}get context(){return tr(this.logger)}startAbortTimer(e){return this.abortController=new AbortController,setTimeout(()=>this.abortController.abort(),Y.toMiliseconds(e))}}class l_ extends pg{constructor(e,r){super(e,r),this.projectId=e,this.logger=r,this.context=d9,this.registerDeviceToken=async i=>{const{clientId:n,token:s,notificationType:o,enableEncrypted:a=!1}=i,c=`${l9}/${this.projectId}/clients`;await fetch(c,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({client_id:n,type:o,token:s,always_raw:a})})},this.logger=Jt(r,this.context)}}var p_=Object.defineProperty,z0=Object.getOwnPropertySymbols,g_=Object.prototype.hasOwnProperty,b_=Object.prototype.propertyIsEnumerable,k0=(t,e,r)=>e in t?p_(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,Ks=(t,e)=>{for(var r in e||(e={}))g_.call(e,r)&&k0(t,r,e[r]);if(z0)for(var r of z0(e))b_.call(e,r)&&k0(t,r,e[r]);return t};class v_ extends gg{constructor(e,r,i=!0){super(e,r,i),this.core=e,this.logger=r,this.context=g9,this.storagePrefix=ni,this.storageVersion=p9,this.events=new Map,this.shouldPersist=!1,this.init=async()=>{if(!Nf())try{const n={eventId:kd(),timestamp:Date.now(),domain:this.getAppDomain(),props:{event:"INIT",type:"",properties:{client_id:await this.core.crypto.getClientId(),user_agent:Cd(this.core.relayer.protocol,this.core.relayer.version,hc)}}};await this.sendEvent([n])}catch(n){this.logger.warn(n)}},this.createEvent=n=>{const{event:s="ERROR",type:o="",properties:{topic:a,trace:c}}=n,h=kd(),l=this.core.projectId||"",y=Date.now(),M=Ks({eventId:h,timestamp:y,props:{event:s,type:o,properties:{topic:a,trace:c}},bundleId:l,domain:this.getAppDomain()},this.setMethods(h));return this.telemetryEnabled&&(this.events.set(h,M),this.shouldPersist=!0),M},this.getEvent=n=>{const{eventId:s,topic:o}=n;if(s)return this.events.get(s);const a=Array.from(this.events.values()).find(c=>c.props.properties.topic===o);if(a)return Ks(Ks({},a),this.setMethods(a.eventId))},this.deleteEvent=n=>{const{eventId:s}=n;this.events.delete(s),this.shouldPersist=!0},this.setEventListeners=()=>{this.core.heartbeat.on(In.pulse,async()=>{this.shouldPersist&&await this.persist(),this.events.forEach(n=>{Y.fromMiliseconds(Date.now())-Y.fromMiliseconds(n.timestamp)>b9&&(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,Ks(Ks({},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(`${v9}?projectId=${this.core.projectId}&st=events_sdk&sv=js-${hc}${s}`,{method:"POST",body:JSON.stringify(n)})},this.getAppDomain=()=>Fd().url,this.logger=Jt(r,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 y_=Object.defineProperty,j0=Object.getOwnPropertySymbols,m_=Object.prototype.hasOwnProperty,w_=Object.prototype.propertyIsEnumerable,K0=(t,e,r)=>e in t?y_(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,V0=(t,e)=>{for(var r in e||(e={}))m_.call(e,r)&&K0(t,r,e[r]);if(j0)for(var r of j0(e))w_.call(e,r)&&K0(t,r,e[r]);return t};class gc extends sg{constructor(e){var r;super(e),this.protocol=s0,this.version=o0,this.name=ta,this.events=new jt.exports.EventEmitter,this.initialized=!1,this.on=(o,a)=>this.events.on(o,a),this.once=(o,a)=>this.events.once(o,a),this.off=(o,a)=>this.events.off(o,a),this.removeListener=(o,a)=>this.events.removeListener(o,a),this.dispatchEnvelope=({topic:o,message:a,sessionExists:c})=>{if(!o||!a)return;const h={topic:o,message:a,publishedAt:Date.now(),transportType:ht.link_mode};this.relayer.onLinkMessageEvent(h,{sessionExists:c})},this.projectId=e?.projectId,this.relayUrl=e?.relayUrl||h0,this.customStoragePrefix=e!=null&&e.customStoragePrefix?`:${e.customStoragePrefix}`:"";const i=Ia({level:typeof e?.logger=="string"&&e.logger?e.logger:L5.logger,name:ta}),{logger:n,chunkLoggerController:s}=ng({opts:i,maxSizeInBytes:e?.maxLogBlobSizeInBytes,loggerOverride:e?.logger});this.logChunkController=s,(r=this.logChunkController)!=null&&r.downloadLogsBlobInBrowser&&(window.downloadLogsBlobInBrowser=async()=>{var o,a;(o=this.logChunkController)!=null&&o.downloadLogsBlobInBrowser&&((a=this.logChunkController)==null||a.downloadLogsBlobInBrowser({clientId:await this.crypto.getClientId()}))}),this.logger=Jt(n,this.name),this.heartbeat=new ma,this.crypto=new z7(this,this.logger,e?.keychain),this.history=new h_(this,this.logger),this.expirer=new u_(this,this.logger),this.storage=e!=null&&e.storage?e.storage:new P1(V0(V0({},q5),e?.storageOptions)),this.relayer=new s_({core:this,logger:this.logger,relayUrl:this.relayUrl,projectId:this.projectId}),this.pairing=new c_(this,this.logger),this.verify=new d_(this,this.logger,this.storage),this.echoClient=new l_(this.projectId||"",this.logger),this.linkModeSupportedApps=[],this.eventClient=new v_(this,this.logger,e?.telemetryEnabled)}static async init(e){const r=new gc(e);await r.initialize();const i=await r.crypto.getClientId();return await r.storage.setItem(Z5,i),r}get context(){return tr(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(u0,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.linkModeSupportedApps=await this.storage.getItem(u0)||[],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 bc=gc,H0="wc",W0=2,G0="client",vc=`${H0}@${W0}:${G0}:`,yc={name:G0,logger:"error",controller:!1,relayUrl:"wss://relay.walletconnect.org"},J0="WALLETCONNECT_DEEPLINK_CHOICE",__="proposal",x_="Proposal expired",E_="session",ts=Y.SEVEN_DAYS,S_="engine",Rt={wc_sessionPropose:{req:{ttl:Y.FIVE_MINUTES,prompt:!0,tag:1100},res:{ttl:Y.FIVE_MINUTES,prompt:!1,tag:1101},reject:{ttl:Y.FIVE_MINUTES,prompt:!1,tag:1120},autoReject:{ttl:Y.FIVE_MINUTES,prompt:!1,tag:1121}},wc_sessionSettle:{req:{ttl:Y.FIVE_MINUTES,prompt:!1,tag:1102},res:{ttl:Y.FIVE_MINUTES,prompt:!1,tag:1103}},wc_sessionUpdate:{req:{ttl:Y.ONE_DAY,prompt:!1,tag:1104},res:{ttl:Y.ONE_DAY,prompt:!1,tag:1105}},wc_sessionExtend:{req:{ttl:Y.ONE_DAY,prompt:!1,tag:1106},res:{ttl:Y.ONE_DAY,prompt:!1,tag:1107}},wc_sessionRequest:{req:{ttl:Y.FIVE_MINUTES,prompt:!0,tag:1108},res:{ttl:Y.FIVE_MINUTES,prompt:!1,tag:1109}},wc_sessionEvent:{req:{ttl:Y.FIVE_MINUTES,prompt:!0,tag:1110},res:{ttl:Y.FIVE_MINUTES,prompt:!1,tag:1111}},wc_sessionDelete:{req:{ttl:Y.ONE_DAY,prompt:!1,tag:1112},res:{ttl:Y.ONE_DAY,prompt:!1,tag:1113}},wc_sessionPing:{req:{ttl:Y.ONE_DAY,prompt:!1,tag:1114},res:{ttl:Y.ONE_DAY,prompt:!1,tag:1115}},wc_sessionAuthenticate:{req:{ttl:Y.ONE_HOUR,prompt:!0,tag:1116},res:{ttl:Y.ONE_HOUR,prompt:!1,tag:1117},reject:{ttl:Y.FIVE_MINUTES,prompt:!1,tag:1118},autoReject:{ttl:Y.FIVE_MINUTES,prompt:!1,tag:1119}}},mc={min:Y.FIVE_MINUTES,max:Y.SEVEN_DAYS},oi={idle:"IDLE",active:"ACTIVE"},M_="request",I_=["wc_sessionPropose","wc_sessionRequest","wc_authRequest","wc_sessionAuthenticate"],A_="wc",D_="auth",O_="authKeys",P_="pairingTopics",R_="requests",ia=`${A_}@${1.5}:${D_}:`,na=`${ia}:PUB_KEY`;var $_=Object.defineProperty,N_=Object.defineProperties,T_=Object.getOwnPropertyDescriptors,Y0=Object.getOwnPropertySymbols,F_=Object.prototype.hasOwnProperty,C_=Object.prototype.propertyIsEnumerable,X0=(t,e,r)=>e in t?$_(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,gt=(t,e)=>{for(var r in e||(e={}))F_.call(e,r)&&X0(t,r,e[r]);if(Y0)for(var r of Y0(e))C_.call(e,r)&&X0(t,r,e[r]);return t},kr=(t,e)=>N_(t,T_(e));class B_ extends vg{constructor(e){super(e),this.name=S_,this.events=new jt.exports,this.initialized=!1,this.requestQueue={state:oi.idle,queue:[]},this.sessionRequestQueue={state:oi.idle,queue:[]},this.requestQueueDelay=Y.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()},Y.toMiliseconds(this.requestQueueDelay)))},this.connect=async r=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();const i=kr(gt({},r),{requiredNamespaces:r.requiredNamespaces||{},optionalNamespaces:r.optionalNamespaces||{}});await this.isValidConnect(i);const{pairingTopic:n,requiredNamespaces:s,optionalNamespaces:o,sessionProperties:a,relays:c}=i;let h=n,l,y=!1;try{if(h){const L=this.client.core.pairing.pairings.get(h);this.client.logger.warn("connect() with existing pairing topic is deprecated and will be removed in the next major release."),y=L.active}}catch(L){throw this.client.logger.error(`connect() -> pairing.get(${h}) failed`),L}if(!h||!y){const{topic:L,uri:k}=await this.client.core.pairing.create();h=L,l=k}if(!h){const{message:L}=Z("NO_MATCHING_KEY",`connect() pairing topic: ${h}`);throw new Error(L)}const M=await this.client.core.crypto.generateKeyPair(),I=Rt.wc_sessionPropose.req.ttl||Y.FIVE_MINUTES,S=Et(I),D=gt({requiredNamespaces:s,optionalNamespaces:o,relays:c??[{protocol:c0}],proposer:{publicKey:M,metadata:this.client.metadata},expiryTimestamp:S,pairingTopic:h},a&&{sessionProperties:a}),{reject:R,resolve:$,done:T}=ln(I,x_);this.events.once(Se("session_connect"),async({error:L,session:k})=>{if(L)R(L);else if(k){k.self.publicKey=M;const j=kr(gt({},k),{pairingTopic:D.pairingTopic,requiredNamespaces:D.requiredNamespaces,optionalNamespaces:D.optionalNamespaces,transportType:ht.relay});await this.client.session.set(k.topic,j),await this.setExpiry(k.topic,k.expiry),h&&await this.client.core.pairing.updateMetadata({topic:h,metadata:k.peer.metadata}),this.cleanupDuplicatePairings(j),$(j)}});const C=await this.sendRequest({topic:h,method:"wc_sessionPropose",params:D,throwOnFailedPublish:!0});return await this.setProposal(C,gt({id:C},D)),{uri:l,approval:T}},this.pair=async r=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{return await this.client.core.pairing.pair(r)}catch(i){throw this.client.logger.error("pair() failed"),i}},this.approve=async r=>{var i,n,s;const o=this.client.core.eventClient.createEvent({properties:{topic:(i=r?.id)==null?void 0:i.toString(),trace:[zr.session_approve_started]}});try{this.isInitialized(),await this.confirmOnlineStateOrThrow()}catch(K){throw o.setError(mn.no_internet_connection),K}try{await this.isValidProposalId(r?.id)}catch(K){throw this.client.logger.error(`approve() -> proposal.get(${r?.id}) failed`),o.setError(mn.proposal_not_found),K}try{await this.isValidApprove(r)}catch(K){throw this.client.logger.error("approve() -> isValidApprove() failed"),o.setError(mn.session_approve_namespace_validation_failure),K}const{id:a,relayProtocol:c,namespaces:h,sessionProperties:l,sessionConfig:y}=r,M=this.client.proposal.get(a);this.client.core.eventClient.deleteEvent({eventId:o.eventId});const{pairingTopic:I,proposer:S,requiredNamespaces:D,optionalNamespaces:R}=M;let $=(n=this.client.core.eventClient)==null?void 0:n.getEvent({topic:I});$||($=(s=this.client.core.eventClient)==null?void 0:s.createEvent({type:zr.session_approve_started,properties:{topic:I,trace:[zr.session_approve_started,zr.session_namespaces_validation_success]}}));const T=await this.client.core.crypto.generateKeyPair(),C=S.publicKey,L=await this.client.core.crypto.generateSharedKey(T,C),k=gt(gt({relay:{protocol:c??"irn"},namespaces:h,controller:{publicKey:T,metadata:this.client.metadata},expiry:Et(ts)},l&&{sessionProperties:l}),y&&{sessionConfig:y}),j=ht.relay;$.addTrace(zr.subscribing_session_topic);try{await this.client.core.relayer.subscribe(L,{transportType:j})}catch(K){throw $.setError(mn.subscribe_session_topic_failure),K}$.addTrace(zr.subscribe_session_topic_success);const G=kr(gt({},k),{topic:L,requiredNamespaces:D,optionalNamespaces:R,pairingTopic:I,acknowledged:!1,self:k.controller,peer:{publicKey:S.publicKey,metadata:S.metadata},controller:T,transportType:ht.relay});await this.client.session.set(L,G),$.addTrace(zr.store_session);try{$.addTrace(zr.publishing_session_settle),await this.sendRequest({topic:L,method:"wc_sessionSettle",params:k,throwOnFailedPublish:!0}).catch(K=>{throw $?.setError(mn.session_settle_publish_failure),K}),$.addTrace(zr.session_settle_publish_success),$.addTrace(zr.publishing_session_approve),await this.sendResult({id:a,topic:I,result:{relay:{protocol:c??"irn"},responderPublicKey:T},throwOnFailedPublish:!0}).catch(K=>{throw $?.setError(mn.session_approve_publish_failure),K}),$.addTrace(zr.session_approve_publish_success)}catch(K){throw this.client.logger.error(K),this.client.session.delete(L,ct("USER_DISCONNECTED")),await this.client.core.relayer.unsubscribe(L),K}return this.client.core.eventClient.deleteEvent({eventId:$.eventId}),await this.client.core.pairing.updateMetadata({topic:I,metadata:S.metadata}),await this.client.proposal.delete(a,ct("USER_DISCONNECTED")),await this.client.core.pairing.activate({topic:I}),await this.setExpiry(L,Et(ts)),{topic:L,acknowledged:()=>Promise.resolve(this.client.session.get(L))}},this.reject=async r=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{await this.isValidReject(r)}catch(o){throw this.client.logger.error("reject() -> isValidReject() failed"),o}const{id:i,reason:n}=r;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 r=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{await this.isValidUpdate(r)}catch(y){throw this.client.logger.error("update() -> isValidUpdate() failed"),y}const{topic:i,namespaces:n}=r,{done:s,resolve:o,reject:a}=ln(),c=wi(),h=bn().toString(),l=this.client.session.get(i).namespaces;return this.events.once(Se("session_update",c),({error:y})=>{y?a(y):o()}),await this.client.session.update(i,{namespaces:n}),await this.sendRequest({topic:i,method:"wc_sessionUpdate",params:{namespaces:n},throwOnFailedPublish:!0,clientRpcId:c,relayRpcId:h}).catch(y=>{this.client.logger.error(y),this.client.session.update(i,{namespaces:l}),a(y)}),{acknowledged:s}},this.extend=async r=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{await this.isValidExtend(r)}catch(c){throw this.client.logger.error("extend() -> isValidExtend() failed"),c}const{topic:i}=r,n=wi(),{done:s,resolve:o,reject:a}=ln();return this.events.once(Se("session_extend",n),({error:c})=>{c?a(c):o()}),await this.setExpiry(i,Et(ts)),this.sendRequest({topic:i,method:"wc_sessionExtend",params:{},clientRpcId:n,throwOnFailedPublish:!0}).catch(c=>{a(c)}),{acknowledged:s}},this.request=async r=>{this.isInitialized();try{await this.isValidRequest(r)}catch(S){throw this.client.logger.error("request() -> isValidRequest() failed"),S}const{chainId:i,request:n,topic:s,expiry:o=Rt.wc_sessionRequest.req.ttl}=r,a=this.client.session.get(s);a?.transportType===ht.relay&&await this.confirmOnlineStateOrThrow();const c=wi(),h=bn().toString(),{done:l,resolve:y,reject:M}=ln(o,"Request expired. Please try again.");this.events.once(Se("session_request",c),({error:S,result:D})=>{S?M(S):y(D)});const I=this.getAppLinkIfEnabled(a.peer.metadata,a.transportType);return I?(await this.sendRequest({clientRpcId:c,relayRpcId:h,topic:s,method:"wc_sessionRequest",params:{request:kr(gt({},n),{expiryTimestamp:Et(o)}),chainId:i},expiry:o,throwOnFailedPublish:!0,appLink:I}).catch(S=>M(S)),this.client.events.emit("session_request_sent",{topic:s,request:n,chainId:i,id:c}),await l()):await Promise.all([new Promise(async S=>{await this.sendRequest({clientRpcId:c,relayRpcId:h,topic:s,method:"wc_sessionRequest",params:{request:kr(gt({},n),{expiryTimestamp:Et(o)}),chainId:i},expiry:o,throwOnFailedPublish:!0}).catch(D=>M(D)),this.client.events.emit("session_request_sent",{topic:s,request:n,chainId:i,id:c}),S()}),new Promise(async S=>{var D;if(!((D=a.sessionConfig)!=null&&D.disableDeepLink)){const R=await c6(this.client.core.storage,J0);await o6({id:c,topic:s,wcDeepLink:R})}S()}),l()]).then(S=>S[2])},this.respond=async r=>{this.isInitialized(),await this.isValidRespond(r);const{topic:i,response:n}=r,{id:s}=n,o=this.client.session.get(i);o.transportType===ht.relay&&await this.confirmOnlineStateOrThrow();const a=this.getAppLinkIfEnabled(o.peer.metadata,o.transportType);ii(n)?await this.sendResult({id:s,topic:i,result:n.result,throwOnFailedPublish:!0,appLink:a}):Ar(n)&&await this.sendError({id:s,topic:i,error:n.error,appLink:a}),this.cleanupAfterResponse(r)},this.ping=async r=>{this.isInitialized(),await this.confirmOnlineStateOrThrow();try{await this.isValidPing(r)}catch(n){throw this.client.logger.error("ping() -> isValidPing() failed"),n}const{topic:i}=r;if(this.client.session.keys.includes(i)){const n=wi(),s=bn().toString(),{done:o,resolve:a,reject:c}=ln();this.events.once(Se("session_ping",n),({error:h})=>{h?c(h):a()}),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)&&(this.client.logger.warn("ping() on pairing topic is deprecated and will be removed in the next major release."),await this.client.core.pairing.ping({topic:i}))},this.emit=async r=>{this.isInitialized(),await this.confirmOnlineStateOrThrow(),await this.isValidEmit(r);const{topic:i,event:n,chainId:s}=r,o=bn().toString(),a=wi();await this.sendRequest({topic:i,method:"wc_sessionEvent",params:{event:n,chainId:s},throwOnFailedPublish:!0,relayRpcId:o,clientRpcId:a})},this.disconnect=async r=>{this.isInitialized(),await this.confirmOnlineStateOrThrow(),await this.isValidDisconnect(r);const{topic:i}=r;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}=Z("MISMATCHED_TOPIC",`Session or pairing topic not found: ${i}`);throw new Error(n)}},this.find=r=>(this.isInitialized(),this.client.session.getAll().filter(i=>y8(i,r))),this.getPendingSessionRequests=()=>this.client.pendingRequest.getAll(),this.authenticate=async(r,i)=>{var n;this.isInitialized(),this.isValidAuthenticate(r);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:a,statement:c="",uri:h,domain:l,nonce:y,type:M,exp:I,nbf:S,methods:D=[],expiry:R}=r,$=[...r.resources||[]],{topic:T,uri:C}=await this.client.core.pairing.create({methods:["wc_sessionAuthenticate"],transportType:o});this.client.logger.info({message:"Generated new pairing",pairing:{topic:T,uri:C}});const L=await this.client.core.crypto.generateKeyPair(),k=Go(L);if(await Promise.all([this.client.auth.authKeys.set(na,{responseTopic:k,publicKey:L}),this.client.auth.pairingTopics.set(k,{topic:k,pairingTopic:T})]),await this.client.core.relayer.subscribe(k,{transportType:o}),this.client.logger.info(`sending request to new pairing topic: ${T}`),D.length>0){const{namespace:E}=qo(a[0]);let w=Z6(E,"request",D);Ko($)&&(w=e4(w,$.pop())),$.push(w)}const j=R&&R>Rt.wc_sessionAuthenticate.req.ttl?R:Rt.wc_sessionAuthenticate.req.ttl,G={authPayload:{type:M??"caip122",chains:a,statement:c,aud:h,domain:l,version:"1",nonce:y,iat:new Date().toISOString(),exp:I,nbf:S,resources:$},requester:{publicKey:L,metadata:this.client.metadata},expiryTimestamp:Et(j)},K={eip155:{chains:a,methods:[...new Set(["personal_sign",...D])],events:["chainChanged","accountsChanged"]}},V={requiredNamespaces:{},optionalNamespaces:K,relays:[{protocol:"irn"}],pairingTopic:T,proposer:{publicKey:L,metadata:this.client.metadata},expiryTimestamp:Et(Rt.wc_sessionPropose.req.ttl)},{done:re,resolve:O,reject:g}=ln(j,"Request expired"),p=async({error:E,session:w})=>{if(this.events.off(Se("session_request",u),f),E)g(E);else if(w){w.self.publicKey=L,await this.client.session.set(w.topic,w),await this.setExpiry(w.topic,w.expiry),T&&await this.client.core.pairing.updateMetadata({topic:T,metadata:w.peer.metadata});const d=this.client.session.get(w.topic);await this.deleteProposal(b),O({session:d})}},f=async E=>{var w,d,m;if(await this.deletePendingAuthRequest(u,{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(Se("session_connect"),p),g(E.error.message))}await this.deleteProposal(b),this.events.off(Se("session_connect"),p);const{cacaos:v,responder:A}=E.result,U=[],x=[];for(const q of v){await il({cacao:q,projectId:this.client.core.projectId})||(this.client.logger.error(q,"Signature verification failed"),g(ct("SESSION_SETTLEMENT_FAILED","Signature verification failed")));const{p:z}=q,J=Ko(z.resources),X=[qf(z.iss)],W=jo(z.iss);if(J){const ne=ol(J),Q=al(J);U.push(...ne),X.push(...Q)}for(const ne of X)x.push(`${ne}:${W}`)}const N=await this.client.core.crypto.generateSharedKey(L,A.publicKey);let B;U.length>0&&(B={topic:N,acknowledged:!0,self:{publicKey:L,metadata:this.client.metadata},peer:A,controller:A.publicKey,expiry:Et(ts),requiredNamespaces:{},optionalNamespaces:{},relay:{protocol:"irn"},pairingTopic:T,namespaces:Ul([...new Set(U)],[...new Set(x)]),transportType:o},await this.client.core.relayer.subscribe(N,{transportType:o}),await this.client.session.set(N,B),T&&await this.client.core.pairing.updateMetadata({topic:T,metadata:A.metadata}),B=this.client.session.get(N)),(w=this.client.metadata.redirect)!=null&&w.linkMode&&(d=A.metadata.redirect)!=null&&d.linkMode&&(m=A.metadata.redirect)!=null&&m.universal&&i&&(this.client.core.addLinkModeSupportedApp(A.metadata.redirect.universal),this.client.session.update(N,{transportType:ht.link_mode})),O({auths:v,session:B})},u=wi(),b=wi();this.events.once(Se("session_connect"),p),this.events.once(Se("session_request",u),f);let _;try{if(s){const E=vn("wc_sessionAuthenticate",G,u);this.client.core.history.set(T,E);const w=await this.client.core.crypto.encode("",E,{type:$s,encoding:Ps});_=Yo(i,T,w)}else await Promise.all([this.sendRequest({topic:T,method:"wc_sessionAuthenticate",params:G,expiry:r.expiry,throwOnFailedPublish:!0,clientRpcId:u}),this.sendRequest({topic:T,method:"wc_sessionPropose",params:V,expiry:Rt.wc_sessionPropose.req.ttl,throwOnFailedPublish:!0,clientRpcId:b})])}catch(E){throw this.events.off(Se("session_connect"),p),this.events.off(Se("session_request",u),f),E}return await this.setProposal(b,gt({id:b},V)),await this.setAuthRequest(u,{request:kr(gt({},G),{verifyContext:{}}),pairingTopic:T,transportType:o}),{uri:_??C,response:re}},this.approveSessionAuthenticate=async r=>{const{id:i,auths:n}=r,s=this.client.core.eventClient.createEvent({properties:{topic:i.toString(),trace:[wn.authenticated_session_approve_started]}});try{this.isInitialized()}catch(R){throw s.setError(zs.no_internet_connection),R}const o=this.getPendingAuthRequest(i);if(!o)throw s.setError(zs.authenticated_session_pending_request_not_found),new Error(`Could not find pending auth request with id ${i}`);const a=o.transportType||ht.relay;a===ht.relay&&await this.confirmOnlineStateOrThrow();const c=o.requester.publicKey,h=await this.client.core.crypto.generateKeyPair(),l=Go(c),y={type:bi,receiverPublicKey:c,senderPublicKey:h},M=[],I=[];for(const R of n){if(!await il({cacao:R,projectId:this.client.core.projectId})){s.setError(zs.invalid_cacao);const k=ct("SESSION_SETTLEMENT_FAILED","Signature verification failed");throw await this.sendError({id:i,topic:l,error:k,encodeOpts:y}),new Error(k.message)}s.addTrace(wn.cacaos_verified);const{p:$}=R,T=Ko($.resources),C=[qf($.iss)],L=jo($.iss);if(T){const k=ol(T),j=al(T);M.push(...k),C.push(...j)}for(const k of C)I.push(`${k}:${L}`)}const S=await this.client.core.crypto.generateSharedKey(h,c);s.addTrace(wn.create_authenticated_session_topic);let D;if(M?.length>0){D={topic:S,acknowledged:!0,self:{publicKey:h,metadata:this.client.metadata},peer:{publicKey:c,metadata:o.requester.metadata},controller:c,expiry:Et(ts),authentication:n,requiredNamespaces:{},optionalNamespaces:{},relay:{protocol:"irn"},pairingTopic:o.pairingTopic,namespaces:Ul([...new Set(M)],[...new Set(I)]),transportType:a},s.addTrace(wn.subscribing_authenticated_session_topic);try{await this.client.core.relayer.subscribe(S,{transportType:a})}catch(R){throw s.setError(zs.subscribe_authenticated_session_topic_failure),R}s.addTrace(wn.subscribe_authenticated_session_topic_success),await this.client.session.set(S,D),s.addTrace(wn.store_authenticated_session),await this.client.core.pairing.updateMetadata({topic:o.pairingTopic,metadata:o.requester.metadata})}s.addTrace(wn.publishing_authenticated_session_approve);try{await this.sendResult({topic:l,id:i,result:{cacaos:n,responder:{publicKey:h,metadata:this.client.metadata}},encodeOpts:y,throwOnFailedPublish:!0,appLink:this.getAppLinkIfEnabled(o.requester.metadata,a)})}catch(R){throw s.setError(zs.authenticated_session_approve_publish_failure),R}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:D}},this.rejectSessionAuthenticate=async r=>{this.isInitialized();const{id:i,reason:n}=r,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,a=await this.client.core.crypto.generateKeyPair(),c=Go(o),h={type:bi,receiverPublicKey:o,senderPublicKey:a};await this.sendError({id:i,topic:c,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=r=>{this.isInitialized();const{request:i,iss:n}=r;return nl(i,n)},this.processRelayMessageCache=()=>{setTimeout(async()=>{if(this.relayMessageCache.length!==0)for(;this.relayMessageCache.length>0;)try{const r=this.relayMessageCache.shift();r&&await this.onRelayMessage(r)}catch(r){this.client.logger.error(r)}},50)},this.cleanupDuplicatePairings=async r=>{if(r.pairingTopic)try{const i=this.client.core.pairing.pairings.get(r.pairingTopic),n=this.client.core.pairing.pairings.getAll().filter(s=>{var o,a;return((o=s.peerMetadata)==null?void 0:o.url)&&((a=s.peerMetadata)==null?void 0:a.url)===r.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 r=>{var i;const{topic:n,expirerHasDeleted:s=!1,emitEvent:o=!0,id:a=0}=r,{self:c}=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(c.publicKey)&&await this.client.core.crypto.deleteKeyPair(c.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(J0).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=oi.idle),o&&this.client.events.emit("session_delete",{id:a,topic:n})},this.deleteProposal=async(r,i)=>{if(i)try{const n=this.client.proposal.get(r);this.client.core.eventClient.getEvent({topic:n.pairingTopic})?.setError(mn.proposal_expired)}catch{}await Promise.all([this.client.proposal.delete(r,ct("USER_DISCONNECTED")),i?Promise.resolve():this.client.core.expirer.del(r)]),this.addToRecentlyDeleted(r,"proposal")},this.deletePendingSessionRequest=async(r,i,n=!1)=>{await Promise.all([this.client.pendingRequest.delete(r,i),n?Promise.resolve():this.client.core.expirer.del(r)]),this.addToRecentlyDeleted(r,"request"),this.sessionRequestQueue.queue=this.sessionRequestQueue.queue.filter(s=>s.id!==r),n&&(this.sessionRequestQueue.state=oi.idle,this.client.events.emit("session_request_expire",{id:r}))},this.deletePendingAuthRequest=async(r,i,n=!1)=>{await Promise.all([this.client.auth.requests.delete(r,i),n?Promise.resolve():this.client.core.expirer.del(r)])},this.setExpiry=async(r,i)=>{this.client.session.keys.includes(r)&&(this.client.core.expirer.set(r,i),await this.client.session.update(r,{expiry:i}))},this.setProposal=async(r,i)=>{this.client.core.expirer.set(r,Et(Rt.wc_sessionPropose.req.ttl)),await this.client.proposal.set(r,i)},this.setAuthRequest=async(r,i)=>{const{request:n,pairingTopic:s,transportType:o=ht.relay}=i;this.client.core.expirer.set(r,n.expiryTimestamp),await this.client.auth.requests.set(r,{authPayload:n.authPayload,requester:n.requester,expiryTimestamp:n.expiryTimestamp,id:r,pairingTopic:s,verifyContext:n.verifyContext,transportType:o})},this.setPendingSessionRequest=async r=>{const{id:i,topic:n,params:s,verifyContext:o}=r,a=s.request.expiryTimestamp||Et(Rt.wc_sessionRequest.req.ttl);this.client.core.expirer.set(i,a),await this.client.pendingRequest.set(i,{id:i,topic:n,params:s,verifyContext:o})},this.sendRequest=async r=>{const{topic:i,method:n,params:s,expiry:o,relayRpcId:a,clientRpcId:c,throwOnFailedPublish:h,appLink:l}=r,y=vn(n,s,c);let M;const I=!!l;try{const R=I?Ps:Gi;M=await this.client.core.crypto.encode(i,y,{encoding:R})}catch(R){throw await this.cleanup(),this.client.logger.error(`sendRequest() -> core.crypto.encode() for topic ${i} failed`),R}let S;if(I_.includes(n)){const R=vi(JSON.stringify(y)),$=vi(M);S=await this.client.core.verify.register({id:$,decryptedId:R})}const D=Rt[n].req;if(D.attestation=S,o&&(D.ttl=o),a&&(D.id=a),this.client.core.history.set(i,y),I){const R=Yo(l,i,M);await global.Linking.openURL(R,this.client.name)}else{const R=Rt[n].req;o&&(R.ttl=o),a&&(R.id=a),h?(R.internal=kr(gt({},R.internal),{throwOnFailedPublish:!0}),await this.client.core.relayer.publish(i,M,R)):this.client.core.relayer.publish(i,M,R).catch($=>this.client.logger.error($))}return y.id},this.sendResult=async r=>{const{id:i,topic:n,result:s,throwOnFailedPublish:o,encodeOpts:a,appLink:c}=r,h=oc(i,s);let l;const y=c&&typeof(global==null?void 0:global.Linking)<"u";try{const I=y?Ps:Gi;l=await this.client.core.crypto.encode(n,h,kr(gt({},a||{}),{encoding:I}))}catch(I){throw await this.cleanup(),this.client.logger.error(`sendResult() -> core.crypto.encode() for topic ${n} failed`),I}let M;try{M=await this.client.core.history.get(n,i)}catch(I){throw this.client.logger.error(`sendResult() -> history.get(${n}, ${i}) failed`),I}if(y){const I=Yo(c,n,l);await global.Linking.openURL(I,this.client.name)}else{const I=Rt[M.request.method].res;o?(I.internal=kr(gt({},I.internal),{throwOnFailedPublish:!0}),await this.client.core.relayer.publish(n,l,I)):this.client.core.relayer.publish(n,l,I).catch(S=>this.client.logger.error(S))}await this.client.core.history.resolve(h)},this.sendError=async r=>{const{id:i,topic:n,error:s,encodeOpts:o,rpcOpts:a,appLink:c}=r,h=ac(i,s);let l;const y=c&&typeof(global==null?void 0:global.Linking)<"u";try{const I=y?Ps:Gi;l=await this.client.core.crypto.encode(n,h,kr(gt({},o||{}),{encoding:I}))}catch(I){throw await this.cleanup(),this.client.logger.error(`sendError() -> core.crypto.encode() for topic ${n} failed`),I}let M;try{M=await this.client.core.history.get(n,i)}catch(I){throw this.client.logger.error(`sendError() -> history.get(${n}, ${i}) failed`),I}if(y){const I=Yo(c,n,l);await global.Linking.openURL(I,this.client.name)}else{const I=a||Rt[M.request.method].res;this.client.core.relayer.publish(n,l,I)}await this.client.core.history.resolve(h)},this.cleanup=async()=>{const r=[],i=[];this.client.session.getAll().forEach(n=>{let s=!1;Ki(n.expiry)&&(s=!0),this.client.core.crypto.keychain.has(n.topic)||(s=!0),s&&r.push(n.topic)}),this.client.proposal.getAll().forEach(n=>{Ki(n.expiryTimestamp)&&i.push(n.id)}),await Promise.all([...r.map(n=>this.deleteSession({topic:n})),...i.map(n=>this.deleteProposal(n))])},this.onRelayEventRequest=async r=>{this.requestQueue.queue.push(r),await this.processRequestsQueue()},this.processRequestsQueue=async()=>{if(this.requestQueue.state===oi.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=oi.active;const r=this.requestQueue.queue.shift();if(r)try{await this.processRequest(r)}catch(i){this.client.logger.warn(i)}}this.requestQueue.state=oi.idle},this.processRequest=async r=>{const{topic:i,payload:n,attestation:s,transportType:o,encryptedId:a}=r,c=n.method;if(!this.shouldIgnorePairingRequest({topic:i,requestMethod:c}))switch(c){case"wc_sessionPropose":return await this.onSessionProposeRequest({topic:i,payload:n,attestation:s,encryptedId:a});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:a,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:a,transportType:o});default:return this.client.logger.info(`Unsupported request method ${c}`)}},this.onRelayEventResponse=async r=>{const{topic:i,payload:n,transportType:s}=r,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=r=>{const{topic:i}=r,{message:n}=Z("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=r=>{const{topic:i,requestMethod:n}=r,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 r=>{const{topic:i,payload:n,attestation:s,encryptedId:o}=r,{params:a,id:c}=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(_i.proposal_listener_not_found)),this.isValidConnect(gt({},n.params));const l=a.expiryTimestamp||Et(Rt.wc_sessionPropose.req.ttl),y=gt({id:c,pairingTopic:i,expiryTimestamp:l},a);await this.setProposal(c,y);const M=await this.getVerifyContext({attestationId:s,hash:vi(JSON.stringify(n)),encryptedId:o,metadata:y.proposer.metadata});h?.addTrace(si.emit_session_proposal),this.client.events.emit("session_proposal",{id:c,params:y,verifyContext:M})}catch(h){await this.sendError({id:c,topic:i,error:h,rpcOpts:Rt.wc_sessionPropose.autoReject}),this.client.logger.error(h)}},this.onSessionProposeResponse=async(r,i,n)=>{const{id:s}=i;if(ii(i)){const{result:o}=i;this.client.logger.trace({type:"method",method:"onSessionProposeResponse",result:o});const a=this.client.proposal.get(s);this.client.logger.trace({type:"method",method:"onSessionProposeResponse",proposal:a});const c=a.proposer.publicKey;this.client.logger.trace({type:"method",method:"onSessionProposeResponse",selfPublicKey:c});const h=o.responderPublicKey;this.client.logger.trace({type:"method",method:"onSessionProposeResponse",peerPublicKey:h});const l=await this.client.core.crypto.generateSharedKey(c,h);this.client.logger.trace({type:"method",method:"onSessionProposeResponse",sessionTopic:l});const y=await this.client.core.relayer.subscribe(l,{transportType:n});this.client.logger.trace({type:"method",method:"onSessionProposeResponse",subscriptionId:y}),await this.client.core.pairing.activate({topic:r})}else if(Ar(i)){await this.client.proposal.delete(s,ct("USER_DISCONNECTED"));const o=Se("session_connect");if(this.events.listenerCount(o)===0)throw new Error(`emitting ${o} without any listeners, 954`);this.events.emit(Se("session_connect"),{error:i.error})}},this.onSessionSettleRequest=async(r,i)=>{const{id:n,params:s}=i;try{this.isValidSessionSettleRequest(s);const{relay:o,controller:a,expiry:c,namespaces:h,sessionProperties:l,sessionConfig:y}=i.params,M=kr(gt(gt({topic:r,relay:o,expiry:c,namespaces:h,acknowledged:!0,pairingTopic:"",requiredNamespaces:{},optionalNamespaces:{},controller:a.publicKey,self:{publicKey:"",metadata:this.client.metadata},peer:{publicKey:a.publicKey,metadata:a.metadata}},l&&{sessionProperties:l}),y&&{sessionConfig:y}),{transportType:ht.relay}),I=Se("session_connect");if(this.events.listenerCount(I)===0)throw new Error(`emitting ${I} without any listeners 997`);this.events.emit(Se("session_connect"),{session:M}),await this.sendResult({id:i.id,topic:r,result:!0,throwOnFailedPublish:!0})}catch(o){await this.sendError({id:n,topic:r,error:o}),this.client.logger.error(o)}},this.onSessionSettleResponse=async(r,i)=>{const{id:n}=i;ii(i)?(await this.client.session.update(r,{acknowledged:!0}),this.events.emit(Se("session_approve",n),{})):Ar(i)&&(await this.client.session.delete(r,ct("USER_DISCONNECTED")),this.events.emit(Se("session_approve",n),{error:i.error}))},this.onSessionUpdateRequest=async(r,i)=>{const{params:n,id:s}=i;try{const o=`${r}_session_update`,a=Cs.get(o);if(a&&this.isRequestOutOfSync(a,s)){this.client.logger.warn(`Discarding out of sync request - ${s}`),this.sendError({id:s,topic:r,error:ct("INVALID_UPDATE_REQUEST")});return}this.isValidUpdate(gt({topic:r},n));try{Cs.set(o,s),await this.client.session.update(r,{namespaces:n.namespaces}),await this.sendResult({id:s,topic:r,result:!0,throwOnFailedPublish:!0})}catch(c){throw Cs.delete(o),c}this.client.events.emit("session_update",{id:s,topic:r,params:n})}catch(o){await this.sendError({id:s,topic:r,error:o}),this.client.logger.error(o)}},this.isRequestOutOfSync=(r,i)=>i.toString().slice(0,-3)<r.toString().slice(0,-3),this.onSessionUpdateResponse=(r,i)=>{const{id:n}=i,s=Se("session_update",n);if(this.events.listenerCount(s)===0)throw new Error(`emitting ${s} without any listeners`);ii(i)?this.events.emit(Se("session_update",n),{}):Ar(i)&&this.events.emit(Se("session_update",n),{error:i.error})},this.onSessionExtendRequest=async(r,i)=>{const{id:n}=i;try{this.isValidExtend({topic:r}),await this.setExpiry(r,Et(ts)),await this.sendResult({id:n,topic:r,result:!0,throwOnFailedPublish:!0}),this.client.events.emit("session_extend",{id:n,topic:r})}catch(s){await this.sendError({id:n,topic:r,error:s}),this.client.logger.error(s)}},this.onSessionExtendResponse=(r,i)=>{const{id:n}=i,s=Se("session_extend",n);if(this.events.listenerCount(s)===0)throw new Error(`emitting ${s} without any listeners`);ii(i)?this.events.emit(Se("session_extend",n),{}):Ar(i)&&this.events.emit(Se("session_extend",n),{error:i.error})},this.onSessionPingRequest=async(r,i)=>{const{id:n}=i;try{this.isValidPing({topic:r}),await this.sendResult({id:n,topic:r,result:!0,throwOnFailedPublish:!0}),this.client.events.emit("session_ping",{id:n,topic:r})}catch(s){await this.sendError({id:n,topic:r,error:s}),this.client.logger.error(s)}},this.onSessionPingResponse=(r,i)=>{const{id:n}=i,s=Se("session_ping",n);if(this.events.listenerCount(s)===0)throw new Error(`emitting ${s} without any listeners`);setTimeout(()=>{ii(i)?this.events.emit(Se("session_ping",n),{}):Ar(i)&&this.events.emit(Se("session_ping",n),{error:i.error})},500)},this.onSessionDeleteRequest=async(r,i)=>{const{id:n}=i;try{this.isValidDisconnect({topic:r,reason:i.params}),Promise.all([new Promise(s=>{this.client.core.relayer.once(Pt.publish,async()=>{s(await this.deleteSession({topic:r,id:n}))})}),this.sendResult({id:n,topic:r,result:!0,throwOnFailedPublish:!0}),this.cleanupPendingSentRequestsForTopic({topic:r,error:ct("USER_DISCONNECTED")})]).catch(s=>this.client.logger.error(s))}catch(s){this.client.logger.error(s)}},this.onSessionRequest=async r=>{var i,n,s;const{topic:o,payload:a,attestation:c,encryptedId:h,transportType:l}=r,{id:y,params:M}=a;try{await this.isValidRequest(gt({topic:o},M));const I=this.client.session.get(o),S=await this.getVerifyContext({attestationId:c,hash:vi(JSON.stringify(vn("wc_sessionRequest",M,y))),encryptedId:h,metadata:I.peer.metadata,transportType:l}),D={id:y,topic:o,params:M,verifyContext:S};await this.setPendingSessionRequest(D),l===ht.link_mode&&(i=I.peer.metadata.redirect)!=null&&i.universal&&this.client.core.addLinkModeSupportedApp((n=I.peer.metadata.redirect)==null?void 0:n.universal),(s=this.client.signConfig)!=null&&s.disableRequestQueue?this.emitSessionRequest(D):(this.addSessionRequestToSessionRequestQueue(D),this.processSessionRequestQueue())}catch(I){await this.sendError({id:y,topic:o,error:I}),this.client.logger.error(I)}},this.onSessionRequestResponse=(r,i)=>{const{id:n}=i,s=Se("session_request",n);if(this.events.listenerCount(s)===0)throw new Error(`emitting ${s} without any listeners`);ii(i)?this.events.emit(Se("session_request",n),{result:i.result}):Ar(i)&&this.events.emit(Se("session_request",n),{error:i.error})},this.onSessionEventRequest=async(r,i)=>{const{id:n,params:s}=i;try{const o=`${r}_session_event_${s.event.name}`,a=Cs.get(o);if(a&&this.isRequestOutOfSync(a,n)){this.client.logger.info(`Discarding out of sync request - ${n}`);return}this.isValidEmit(gt({topic:r},s)),this.client.events.emit("session_event",{id:n,topic:r,params:s}),Cs.set(o,n)}catch(o){await this.sendError({id:n,topic:r,error:o}),this.client.logger.error(o)}},this.onSessionAuthenticateResponse=(r,i)=>{const{id:n}=i;this.client.logger.trace({type:"method",method:"onSessionAuthenticateResponse",topic:r,payload:i}),ii(i)?this.events.emit(Se("session_request",n),{result:i.result}):Ar(i)&&this.events.emit(Se("session_request",n),{error:i.error})},this.onSessionAuthenticateRequest=async r=>{var i;const{topic:n,payload:s,attestation:o,encryptedId:a,transportType:c}=r;try{const{requester:h,authPayload:l,expiryTimestamp:y}=s.params,M=await this.getVerifyContext({attestationId:o,hash:vi(JSON.stringify(s)),encryptedId:a,metadata:h.metadata,transportType:c}),I={requester:h,pairingTopic:n,id:s.id,authPayload:l,verifyContext:M,expiryTimestamp:y};await this.setAuthRequest(s.id,{request:I,pairingTopic:n,transportType:c}),c===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:M})}catch(h){this.client.logger.error(h);const l=s.params.requester.publicKey,y=await this.client.core.crypto.generateKeyPair(),M=this.getAppLinkIfEnabled(s.params.requester.metadata,c),I={type:bi,receiverPublicKey:l,senderPublicKey:y};await this.sendError({id:s.id,topic:n,error:h,encodeOpts:I,rpcOpts:Rt.wc_sessionAuthenticate.autoReject,appLink:M})}},this.addSessionRequestToSessionRequestQueue=r=>{this.sessionRequestQueue.queue.push(r)},this.cleanupAfterResponse=r=>{this.deletePendingSessionRequest(r.response.id,{message:"fulfilled",code:0}),setTimeout(()=>{this.sessionRequestQueue.state=oi.idle,this.processSessionRequestQueue()},Y.toMiliseconds(this.requestQueueDelay))},this.cleanupPendingSentRequestsForTopic=({topic:r,error:i})=>{const n=this.client.core.history.pending;n.length>0&&n.filter(s=>s.topic===r&&s.request.method==="wc_sessionRequest").forEach(s=>{const o=s.request.id,a=Se("session_request",o);if(this.events.listenerCount(a)===0)throw new Error(`emitting ${a} without any listeners`);this.events.emit(Se("session_request",s.request.id),{error:i})})},this.processSessionRequestQueue=()=>{if(this.sessionRequestQueue.state===oi.active){this.client.logger.info("session request queue is already active.");return}const r=this.sessionRequestQueue.queue[0];if(!r){this.client.logger.info("session request queue is empty.");return}try{this.sessionRequestQueue.state=oi.active,this.emitSessionRequest(r)}catch(i){this.client.logger.error(i)}},this.emitSessionRequest=r=>{this.client.events.emit("session_request",r)},this.onPairingCreated=r=>{if(r.methods&&this.expectedPairingMethodMap.set(r.topic,r.methods),r.active)return;const i=this.client.proposal.getAll().find(n=>n.pairingTopic===r.topic);i&&this.onSessionProposeRequest({topic:r.topic,payload:vn("wc_sessionPropose",{requiredNamespaces:i.requiredNamespaces,optionalNamespaces:i.optionalNamespaces,relays:i.relays,proposer:i.proposer,sessionProperties:i.sessionProperties},i.id)})},this.isValidConnect=async r=>{if(!or(r)){const{message:c}=Z("MISSING_OR_INVALID",`connect() params: ${JSON.stringify(r)}`);throw new Error(c)}const{pairingTopic:i,requiredNamespaces:n,optionalNamespaces:s,sessionProperties:o,relays:a}=r;if(Qt(i)||await this.isValidPairingTopic(i),!P8(a,!0)){const{message:c}=Z("MISSING_OR_INVALID",`connect() relays: ${a}`);throw new Error(c)}!Qt(n)&&Zo(n)!==0&&this.validateNamespaces(n,"requiredNamespaces"),!Qt(s)&&Zo(s)!==0&&this.validateNamespaces(s,"optionalNamespaces"),Qt(o)||this.validateSessionProps(o,"sessionProperties")},this.validateNamespaces=(r,i)=>{const n=O8(r,"connect()",i);if(n)throw new Error(n.message)},this.isValidApprove=async r=>{if(!or(r))throw new Error(Z("MISSING_OR_INVALID",`approve() params: ${r}`).message);const{id:i,namespaces:n,relayProtocol:s,sessionProperties:o}=r;this.checkRecentlyDeleted(i),await this.isValidProposalId(i);const a=this.client.proposal.get(i),c=ec(n,"approve()");if(c)throw new Error(c.message);const h=Vl(a.requiredNamespaces,n,"approve()");if(h)throw new Error(h.message);if(!mt(s,!0)){const{message:l}=Z("MISSING_OR_INVALID",`approve() relayProtocol: ${s}`);throw new Error(l)}Qt(o)||this.validateSessionProps(o,"sessionProperties")},this.isValidReject=async r=>{if(!or(r)){const{message:s}=Z("MISSING_OR_INVALID",`reject() params: ${r}`);throw new Error(s)}const{id:i,reason:n}=r;if(this.checkRecentlyDeleted(i),await this.isValidProposalId(i),!$8(n)){const{message:s}=Z("MISSING_OR_INVALID",`reject() reason: ${JSON.stringify(n)}`);throw new Error(s)}},this.isValidSessionSettleRequest=r=>{if(!or(r)){const{message:h}=Z("MISSING_OR_INVALID",`onSessionSettleRequest() params: ${r}`);throw new Error(h)}const{relay:i,controller:n,namespaces:s,expiry:o}=r;if(!jl(i)){const{message:h}=Z("MISSING_OR_INVALID","onSessionSettleRequest() relay protocol should be a string");throw new Error(h)}const a=E8(n,"onSessionSettleRequest()");if(a)throw new Error(a.message);const c=ec(s,"onSessionSettleRequest()");if(c)throw new Error(c.message);if(Ki(o)){const{message:h}=Z("EXPIRED","onSessionSettleRequest()");throw new Error(h)}},this.isValidUpdate=async r=>{if(!or(r)){const{message:c}=Z("MISSING_OR_INVALID",`update() params: ${r}`);throw new Error(c)}const{topic:i,namespaces:n}=r;this.checkRecentlyDeleted(i),await this.isValidSessionTopic(i);const s=this.client.session.get(i),o=ec(n,"update()");if(o)throw new Error(o.message);const a=Vl(s.requiredNamespaces,n,"update()");if(a)throw new Error(a.message)},this.isValidExtend=async r=>{if(!or(r)){const{message:n}=Z("MISSING_OR_INVALID",`extend() params: ${r}`);throw new Error(n)}const{topic:i}=r;this.checkRecentlyDeleted(i),await this.isValidSessionTopic(i)},this.isValidRequest=async r=>{if(!or(r)){const{message:c}=Z("MISSING_OR_INVALID",`request() params: ${r}`);throw new Error(c)}const{topic:i,request:n,chainId:s,expiry:o}=r;this.checkRecentlyDeleted(i),await this.isValidSessionTopic(i);const{namespaces:a}=this.client.session.get(i);if(!Kl(a,s)){const{message:c}=Z("MISSING_OR_INVALID",`request() chainId: ${s}`);throw new Error(c)}if(!N8(n)){const{message:c}=Z("MISSING_OR_INVALID",`request() ${JSON.stringify(n)}`);throw new Error(c)}if(!C8(a,s,n.method)){const{message:c}=Z("MISSING_OR_INVALID",`request() method: ${n.method}`);throw new Error(c)}if(o&&!U8(o,mc)){const{message:c}=Z("MISSING_OR_INVALID",`request() expiry: ${o}. Expiry must be a number (in seconds) between ${mc.min} and ${mc.max}`);throw new Error(c)}},this.isValidRespond=async r=>{var i;if(!or(r)){const{message:o}=Z("MISSING_OR_INVALID",`respond() params: ${r}`);throw new Error(o)}const{topic:n,response:s}=r;try{await this.isValidSessionTopic(n)}catch(o){throw(i=r?.response)!=null&&i.id&&this.cleanupAfterResponse(r),o}if(!T8(s)){const{message:o}=Z("MISSING_OR_INVALID",`respond() response: ${JSON.stringify(s)}`);throw new Error(o)}},this.isValidPing=async r=>{if(!or(r)){const{message:n}=Z("MISSING_OR_INVALID",`ping() params: ${r}`);throw new Error(n)}const{topic:i}=r;await this.isValidSessionOrPairingTopic(i)},this.isValidEmit=async r=>{if(!or(r)){const{message:a}=Z("MISSING_OR_INVALID",`emit() params: ${r}`);throw new Error(a)}const{topic:i,event:n,chainId:s}=r;await this.isValidSessionTopic(i);const{namespaces:o}=this.client.session.get(i);if(!Kl(o,s)){const{message:a}=Z("MISSING_OR_INVALID",`emit() chainId: ${s}`);throw new Error(a)}if(!F8(n)){const{message:a}=Z("MISSING_OR_INVALID",`emit() event: ${JSON.stringify(n)}`);throw new Error(a)}if(!B8(o,s,n.name)){const{message:a}=Z("MISSING_OR_INVALID",`emit() event: ${JSON.stringify(n)}`);throw new Error(a)}},this.isValidDisconnect=async r=>{if(!or(r)){const{message:n}=Z("MISSING_OR_INVALID",`disconnect() params: ${r}`);throw new Error(n)}const{topic:i}=r;await this.isValidSessionOrPairingTopic(i)},this.isValidAuthenticate=r=>{const{chains:i,uri:n,domain:s,nonce:o}=r;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(c=>qo(c).namespace))].length>1)throw new Error("Multi-namespace requests are not supported. Please request single namespace only.");const{namespace:a}=qo(i[0]);if(a!=="eip155")throw new Error("Only eip155 namespace is supported for authenticated sessions. Please use .connect() for non-eip155 chains.")},this.getVerifyContext=async r=>{const{attestationId:i,hash:n,encryptedId:s,metadata:o,transportType:a}=r,c={verified:{verifyUrl:o.verifyUrl||Us,validation:"UNKNOWN",origin:o.url||""}};try{if(a===ht.link_mode){const l=this.getAppLinkIfEnabled(o,a);return c.verified.validation=l&&new URL(l).origin===new URL(o.url).origin?"VALID":"INVALID",c}const h=await this.client.core.verify.resolve({attestationId:i,hash:n,encryptedId:s,verifyUrl:o.verifyUrl});h&&(c.verified.origin=h.origin,c.verified.isScam=h.isScam,c.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(c)}`),c},this.validateSessionProps=(r,i)=>{Object.values(r).forEach(n=>{if(!mt(n,!1)){const{message:s}=Z("MISSING_OR_INVALID",`${i} must be in Record<string, string> format. Received: ${JSON.stringify(n)}`);throw new Error(s)}})},this.getPendingAuthRequest=r=>{const i=this.client.auth.requests.get(r);return typeof i=="object"?i:void 0},this.addToRecentlyDeleted=(r,i)=>{if(this.recentlyDeletedMap.set(r,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=r=>{const i=this.recentlyDeletedMap.get(r);if(i){const{message:n}=Z("MISSING_OR_INVALID",`Record was recently deleted - ${i}: ${r}`);throw new Error(n)}},this.isLinkModeEnabled=(r,i)=>{var n,s,o,a,c,h,l,y,M;return!r||i!==ht.link_mode?!1:((s=(n=this.client.metadata)==null?void 0:n.redirect)==null?void 0:s.linkMode)===!0&&((a=(o=this.client.metadata)==null?void 0:o.redirect)==null?void 0:a.universal)!==void 0&&((h=(c=this.client.metadata)==null?void 0:c.redirect)==null?void 0:h.universal)!==""&&((l=r?.redirect)==null?void 0:l.universal)!==void 0&&((y=r?.redirect)==null?void 0:y.universal)!==""&&((M=r?.redirect)==null?void 0:M.linkMode)===!0&&this.client.core.linkModeSupportedApps.includes(r.redirect.universal)&&typeof(global==null?void 0:global.Linking)<"u"},this.getAppLinkIfEnabled=(r,i)=>{var n;return this.isLinkModeEnabled(r,i)?(n=r?.redirect)==null?void 0:n.universal:void 0},this.handleLinkModeMessage=({url:r})=>{if(!r||!r.includes("wc_ev")||!r.includes("topic"))return;const i=zd(r,"topic")||"",n=decodeURIComponent(zd(r,"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 r;if(Nf()||ki()&&(r=this.client.metadata.redirect)!=null&&r.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}=Z("NOT_INITIALIZED",this.name);throw new Error(e)}}async confirmOnlineStateOrThrow(){await this.client.core.relayer.confirmOnlineStateOrThrow()}registerRelayerEvents(){this.client.core.relayer.on(Pt.message,e=>{!this.initialized||this.relayMessageCache.length>0?this.relayMessageCache.push(e):this.onRelayMessage(e)})}async onRelayMessage(e){const{topic:r,message:i,attestation:n,transportType:s}=e,{publicKey:o}=this.client.auth.authKeys.keys.includes(na)?this.client.auth.authKeys.get(na):{responseTopic:void 0,publicKey:void 0},a=await this.client.core.crypto.decode(r,i,{receiverPublicKey:o,encoding:s===ht.link_mode?Ps:Gi});try{fc(a)?(this.client.core.history.set(r,a),this.onRelayEventRequest({topic:r,payload:a,attestation:n,transportType:s,encryptedId:vi(i)})):ea(a)?(await this.client.core.history.resolve(a),await this.onRelayEventResponse({topic:r,payload:a,transportType:s}),this.client.core.history.delete(r,a.id)):this.onRelayEventUnknownPayload({topic:r,payload:a,transportType:s})}catch(c){this.client.logger.error(c)}}registerExpirerEvents(){this.client.core.expirer.on(Or.expired,async e=>{const{topic:r,id:i}=Ud(e.target);if(i&&this.client.pendingRequest.keys.includes(i))return await this.deletePendingSessionRequest(i,Z("EXPIRED"),!0);if(i&&this.client.auth.requests.keys.includes(i))return await this.deletePendingAuthRequest(i,Z("EXPIRED"),!0);r?this.client.session.keys.includes(r)&&(await this.deleteSession({topic:r,expirerHasDeleted:!0}),this.client.events.emit("session_expire",{topic:r})):i&&(await this.deleteProposal(i,!0),this.client.events.emit("proposal_expire",{id:i}))})}registerPairingEvents(){this.client.core.pairing.events.on(yn.create,e=>this.onPairingCreated(e)),this.client.core.pairing.events.on(yn.delete,e=>{this.addToRecentlyDeleted(e.topic,"pairing")})}isValidPairingTopic(e){if(!mt(e,!1)){const{message:r}=Z("MISSING_OR_INVALID",`pairing topic should be a string: ${e}`);throw new Error(r)}if(!this.client.core.pairing.pairings.keys.includes(e)){const{message:r}=Z("NO_MATCHING_KEY",`pairing topic doesn't exist: ${e}`);throw new Error(r)}if(Ki(this.client.core.pairing.pairings.get(e).expiry)){const{message:r}=Z("EXPIRED",`pairing topic: ${e}`);throw new Error(r)}}async isValidSessionTopic(e){if(!mt(e,!1)){const{message:r}=Z("MISSING_OR_INVALID",`session topic should be a string: ${e}`);throw new Error(r)}if(this.checkRecentlyDeleted(e),!this.client.session.keys.includes(e)){const{message:r}=Z("NO_MATCHING_KEY",`session topic doesn't exist: ${e}`);throw new Error(r)}if(Ki(this.client.session.get(e).expiry)){await this.deleteSession({topic:e});const{message:r}=Z("EXPIRED",`session topic: ${e}`);throw new Error(r)}if(!this.client.core.crypto.keychain.has(e)){const{message:r}=Z("MISSING_OR_INVALID",`session topic does not exist in keychain: ${e}`);throw await this.deleteSession({topic:e}),new Error(r)}}async isValidSessionOrPairingTopic(e){if(this.checkRecentlyDeleted(e),this.client.session.keys.includes(e))await this.isValidSessionTopic(e);else if(this.client.core.pairing.pairings.keys.includes(e))this.isValidPairingTopic(e);else if(mt(e,!1)){const{message:r}=Z("NO_MATCHING_KEY",`session or pairing topic doesn't exist: ${e}`);throw new Error(r)}else{const{message:r}=Z("MISSING_OR_INVALID",`session or pairing topic should be a string: ${e}`);throw new Error(r)}}async isValidProposalId(e){if(!R8(e)){const{message:r}=Z("MISSING_OR_INVALID",`proposal id should be a number: ${e}`);throw new Error(r)}if(!this.client.proposal.keys.includes(e)){const{message:r}=Z("NO_MATCHING_KEY",`proposal id doesn't exist: ${e}`);throw new Error(r)}if(Ki(this.client.proposal.get(e).expiryTimestamp)){await this.deleteProposal(e);const{message:r}=Z("EXPIRED",`proposal id: ${e}`);throw new Error(r)}}}class L_ extends _n{constructor(e,r){super(e,r,__,vc),this.core=e,this.logger=r}}class Z0 extends _n{constructor(e,r){super(e,r,E_,vc),this.core=e,this.logger=r}}class q_ extends _n{constructor(e,r){super(e,r,M_,vc,i=>i.id),this.core=e,this.logger=r}}class U_ extends _n{constructor(e,r){super(e,r,O_,ia,()=>na),this.core=e,this.logger=r}}class z_ extends _n{constructor(e,r){super(e,r,P_,ia),this.core=e,this.logger=r}}class k_ extends _n{constructor(e,r){super(e,r,R_,ia,i=>i.id),this.core=e,this.logger=r}}class j_{constructor(e,r){this.core=e,this.logger=r,this.authKeys=new U_(this.core,this.logger),this.pairingTopics=new z_(this.core,this.logger),this.requests=new k_(this.core,this.logger)}async init(){await this.authKeys.init(),await this.pairingTopics.init(),await this.requests.init()}}class wc extends bg{constructor(e){super(e),this.protocol=H0,this.version=W0,this.name=yc.name,this.events=new jt.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||yc.name,this.metadata=e?.metadata||Fd(),this.signConfig=e?.signConfig;const r=typeof e?.logger<"u"&&typeof e?.logger!="string"?e.logger:ai(Ia({level:e?.logger||yc.logger}));this.core=e?.core||new bc(e),this.logger=Jt(r,this.name),this.session=new Z0(this.core,this.logger),this.proposal=new L_(this.core,this.logger),this.pendingRequest=new q_(this.core,this.logger),this.engine=new B_(this),this.auth=new j_(this.core,this.logger)}static async init(e){const r=new wc(e);return await r.initialize(),r}get context(){return tr(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()},Y.toMiliseconds(Y.ONE_SECOND))}catch(e){throw this.logger.info("SignClient Initialization Failure"),this.logger.error(e.message),e}}}const K_=Z0,V_=wc;class H_ extends jt.exports{constructor(){super()}}class Q0{constructor(e){this.opts=e}}class ep{constructor(e){this.client=e}}var W_=Object.defineProperty,G_=Object.defineProperties,J_=Object.getOwnPropertyDescriptors,tp=Object.getOwnPropertySymbols,Y_=Object.prototype.hasOwnProperty,X_=Object.prototype.propertyIsEnumerable,rp=(t,e,r)=>e in t?W_(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,Z_=(t,e)=>{for(var r in e||(e={}))Y_.call(e,r)&&rp(t,r,e[r]);if(tp)for(var r of tp(e))X_.call(e,r)&&rp(t,r,e[r]);return t},Q_=(t,e)=>G_(t,J_(e));class ex extends ep{constructor(e){super(e),this.init=async()=>{this.signClient=await V_.init({core:this.client.core,metadata:this.client.metadata,signConfig:this.client.signConfig}),this.signClient.core.eventClient.init().catch(r=>{this.client.logger.warn(r)})},this.pair=async r=>{await this.client.core.pairing.pair(r)},this.approveSession=async r=>{const{topic:i,acknowledged:n}=await this.signClient.approve(Q_(Z_({},r),{id:r.id,namespaces:r.namespaces,sessionProperties:r.sessionProperties,sessionConfig:r.sessionConfig}));return await n(),this.signClient.session.get(i)},this.rejectSession=async r=>await this.signClient.reject(r),this.updateSession=async r=>await this.signClient.update(r),this.extendSession=async r=>await this.signClient.extend(r),this.respondSessionRequest=async r=>await this.signClient.respond(r),this.disconnectSession=async r=>await this.signClient.disconnect(r),this.emitSessionEvent=async r=>await this.signClient.emit(r),this.getActiveSessions=()=>this.signClient.session.getAll().reduce((r,i)=>(r[i.topic]=i,r),{}),this.getPendingSessionProposals=()=>this.signClient.proposal.getAll(),this.getPendingSessionRequests=()=>this.signClient.getPendingSessionRequests(),this.approveSessionAuthenticate=async r=>await this.signClient.approveSessionAuthenticate(r),this.rejectSessionAuthenticate=async r=>await this.signClient.rejectSessionAuthenticate(r),this.formatAuthMessage=r=>this.signClient.formatAuthMessage(r),this.registerDeviceToken=r=>this.client.core.echoClient.registerDeviceToken(r),this.on=(r,i)=>(this.setEvent(r,"off"),this.setEvent(r,"on"),this.client.events.on(r,i)),this.once=(r,i)=>(this.setEvent(r,"off"),this.setEvent(r,"once"),this.client.events.once(r,i)),this.off=(r,i)=>(this.setEvent(r,"off"),this.client.events.off(r,i)),this.removeListener=(r,i)=>(this.setEvent(r,"removeListener"),this.client.events.removeListener(r,i)),this.onSessionRequest=r=>{this.client.events.emit("session_request",r)},this.onSessionProposal=r=>{this.client.events.emit("session_proposal",r)},this.onSessionDelete=r=>{this.client.events.emit("session_delete",r)},this.onProposalExpire=r=>{this.client.events.emit("proposal_expire",r)},this.onSessionRequestExpire=r=>{this.client.events.emit("session_request_expire",r)},this.onSessionRequestAuthenticate=r=>{this.client.events.emit("session_authenticate",r)},this.setEvent=(r,i)=>{switch(r){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={}}}const tx={decryptMessage:async t=>{const e={core:new bc({storageOptions:t.storageOptions,storage:t.storage})};await e.core.crypto.init();const r=e.core.crypto.decode(t.topic,t.encryptedMessage);return e.core=null,r},getMetadata:async t=>{const e={core:new bc({storageOptions:t.storageOptions,storage:t.storage}),sessionStore:null};e.sessionStore=new K_(e.core,e.core.logger),await e.sessionStore.init();const r=e.sessionStore.get(t.topic),i=r?.peer.metadata;return e.core=null,e.sessionStore=null,i}},ip=class extends Q0{constructor(t){super(t),this.events=new jt.exports,this.on=(e,r)=>this.engine.on(e,r),this.once=(e,r)=>this.engine.once(e,r),this.off=(e,r)=>this.engine.off(e,r),this.removeListener=(e,r)=>this.engine.removeListener(e,r),this.pair=async e=>{try{return await this.engine.pair(e)}catch(r){throw this.logger.error(r.message),r}},this.approveSession=async e=>{try{return await this.engine.approveSession(e)}catch(r){throw this.logger.error(r.message),r}},this.rejectSession=async e=>{try{return await this.engine.rejectSession(e)}catch(r){throw this.logger.error(r.message),r}},this.updateSession=async e=>{try{return await this.engine.updateSession(e)}catch(r){throw this.logger.error(r.message),r}},this.extendSession=async e=>{try{return await this.engine.extendSession(e)}catch(r){throw this.logger.error(r.message),r}},this.respondSessionRequest=async e=>{try{return await this.engine.respondSessionRequest(e)}catch(r){throw this.logger.error(r.message),r}},this.disconnectSession=async e=>{try{return await this.engine.disconnectSession(e)}catch(r){throw this.logger.error(r.message),r}},this.emitSessionEvent=async e=>{try{return await this.engine.emitSessionEvent(e)}catch(r){throw this.logger.error(r.message),r}},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(r){throw this.logger.error(r.message),r}},this.approveSessionAuthenticate=e=>{try{return this.engine.approveSessionAuthenticate(e)}catch(r){throw this.logger.error(r.message),r}},this.rejectSessionAuthenticate=e=>{try{return this.engine.rejectSessionAuthenticate(e)}catch(r){throw this.logger.error(r.message),r}},this.formatAuthMessage=e=>{try{return this.engine.formatAuthMessage(e)}catch(r){throw this.logger.error(r.message),r}},this.metadata=t.metadata,this.name=t.name||ua,this.signConfig=t.signConfig,this.core=t.core,this.logger=this.core.logger,this.engine=new ex(this)}static async init(t){const e=new ip(t);return await e.initialize(),e}async initialize(){this.logger.trace("Initialized");try{await this.engine.init(),this.logger.info("WalletKit Initialization Success")}catch(t){throw this.logger.info("WalletKit Initialization Failure"),this.logger.error(t.message),t}}};let _c=ip;_c.notifications=tx;const rx=_c;kt.CLIENT_CONTEXT=ua,kt.CLIENT_STORAGE_OPTIONS=xp,kt.CLIENT_STORAGE_PREFIX=_p,kt.IWalletKit=Q0,kt.IWalletKitEngine=ep,kt.IWalletKitEvents=H_,kt.PROTOCOL=Nc,kt.PROTOCOL_VERSION=wp,kt.REQUEST_CONTEXT=Ep,kt.WalletKit=rx,kt.default=_c,Object.defineProperty(kt,"__esModule",{value:!0})});
44
44
  //# sourceMappingURL=index.umd.js.map