@reown/walletkit 1.1.1-canary-ca-8 → 1.1.1-canary-ca-10

Sign up to get free protection for your applications and to get access to all the features.
package/dist/index.cjs.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var S=require("@walletconnect/sign-client"),h=require("@walletconnect/utils"),_=require("@walletconnect/core"),p={exports:{}},g=typeof Reflect=="object"?Reflect:null,b=g&&typeof g.apply=="function"?g.apply:function(t,e,s){return Function.prototype.apply.call(t,e,s)},d;g&&typeof g.ownKeys=="function"?d=g.ownKeys:Object.getOwnPropertySymbols?d=function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:d=function(t){return Object.getOwnPropertyNames(t)};function $(n){console&&console.warn&&console.warn(n)}var L=Number.isNaN||function(t){return t!==t};function a(){a.init.call(this)}p.exports=a,p.exports.once=V,a.EventEmitter=a,a.prototype._events=void 0,a.prototype._eventsCount=0,a.prototype._maxListeners=void 0;var C=10;function v(n){if(typeof n!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof n)}Object.defineProperty(a,"defaultMaxListeners",{enumerable:!0,get:function(){return C},set:function(n){if(typeof n!="number"||n<0||L(n))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+n+".");C=n}}),a.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},a.prototype.setMaxListeners=function(t){if(typeof t!="number"||t<0||L(t))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+t+".");return this._maxListeners=t,this};function O(n){return n._maxListeners===void 0?a.defaultMaxListeners:n._maxListeners}a.prototype.getMaxListeners=function(){return O(this)},a.prototype.emit=function(t){for(var e=[],s=1;s<arguments.length;s++)e.push(arguments[s]);var i=t==="error",o=this._events;if(o!==void 0)i=i&&o.error===void 0;else if(!i)return!1;if(i){var r;if(e.length>0&&(r=e[0]),r instanceof Error)throw r;var l=new Error("Unhandled error."+(r?" ("+r.message+")":""));throw l.context=r,l}var u=o[t];if(u===void 0)return!1;if(typeof u=="function")b(u,this,e);else for(var c=u.length,k=A(u,c),s=0;s<c;++s)b(k[s],this,e);return!0};function R(n,t,e,s){var i,o,r;if(v(e),o=n._events,o===void 0?(o=n._events=Object.create(null),n._eventsCount=0):(o.newListener!==void 0&&(n.emit("newListener",t,e.listener?e.listener:e),o=n._events),r=o[t]),r===void 0)r=o[t]=e,++n._eventsCount;else if(typeof r=="function"?r=o[t]=s?[e,r]:[r,e]:s?r.unshift(e):r.push(e),i=O(n),i>0&&r.length>i&&!r.warned){r.warned=!0;var l=new Error("Possible EventEmitter memory leak detected. "+r.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");l.name="MaxListenersExceededWarning",l.emitter=n,l.type=t,l.count=r.length,$(l)}return n}a.prototype.addListener=function(t,e){return R(this,t,e,!1)},a.prototype.on=a.prototype.addListener,a.prototype.prependListener=function(t,e){return R(this,t,e,!0)};function U(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function F(n,t,e){var s={fired:!1,wrapFn:void 0,target:n,type:t,listener:e},i=U.bind(s);return i.listener=e,s.wrapFn=i,i}a.prototype.once=function(t,e){return v(e),this.on(t,F(this,t,e)),this},a.prototype.prependOnceListener=function(t,e){return v(e),this.prependListener(t,F(this,t,e)),this},a.prototype.removeListener=function(t,e){var s,i,o,r,l;if(v(e),i=this._events,i===void 0)return this;if(s=i[t],s===void 0)return this;if(s===e||s.listener===e)--this._eventsCount===0?this._events=Object.create(null):(delete i[t],i.removeListener&&this.emit("removeListener",t,s.listener||e));else if(typeof s!="function"){for(o=-1,r=s.length-1;r>=0;r--)if(s[r]===e||s[r].listener===e){l=s[r].listener,o=r;break}if(o<0)return this;o===0?s.shift():X(s,o),s.length===1&&(i[t]=s[0]),i.removeListener!==void 0&&this.emit("removeListener",t,l||e)}return this},a.prototype.off=a.prototype.removeListener,a.prototype.removeAllListeners=function(t){var e,s,i;if(s=this._events,s===void 0)return this;if(s.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):s[t]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete s[t]),this;if(arguments.length===0){var o=Object.keys(s),r;for(i=0;i<o.length;++i)r=o[i],r!=="removeListener"&&this.removeAllListeners(r);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if(e=s[t],typeof e=="function")this.removeListener(t,e);else if(e!==void 0)for(i=e.length-1;i>=0;i--)this.removeListener(t,e[i]);return this};function I(n,t,e){var s=n._events;if(s===void 0)return[];var i=s[t];return i===void 0?[]:typeof i=="function"?e?[i.listener||i]:[i]:e?z(i):A(i,i.length)}a.prototype.listeners=function(t){return I(this,t,!0)},a.prototype.rawListeners=function(t){return I(this,t,!1)},a.listenerCount=function(n,t){return typeof n.listenerCount=="function"?n.listenerCount(t):T.call(n,t)},a.prototype.listenerCount=T;function T(n){var t=this._events;if(t!==void 0){var e=t[n];if(typeof e=="function")return 1;if(e!==void 0)return e.length}return 0}a.prototype.eventNames=function(){return this._eventsCount>0?d(this._events):[]};function A(n,t){for(var e=new Array(t),s=0;s<t;++s)e[s]=n[s];return e}function X(n,t){for(;t+1<n.length;t++)n[t]=n[t+1];n.pop()}function z(n){for(var t=new Array(n.length),e=0;e<t.length;++e)t[e]=n[e].listener||n[e];return t}function V(n,t){return new Promise(function(e,s){function i(r){n.removeListener(t,o),s(r)}function o(){typeof n.removeListener=="function"&&n.removeListener("error",i),e([].slice.call(arguments))}j(n,t,o,{once:!0}),t!=="error"&&G(n,i,{once:!0})})}function G(n,t,e){typeof n.on=="function"&&j(n,"error",t,e)}function j(n,t,e,s){if(typeof n.on=="function")s.once?n.once(t,e):n.on(t,e);else if(typeof n.addEventListener=="function")n.addEventListener(t,function i(o){s.once&&n.removeEventListener(t,i),e(o)});else throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof n)}const P="wc",Y=2,m="WalletKit",J=`${P}@2:${m}:`,Q={database:":memory:"},Z="request",N={completed:"completed",pending:"pending",error:"error"},f={not_required:"not_required",available:"available",error:"error"};class ee extends p.exports{constructor(){super()}}class x{constructor(t){this.opts=t}}class H{constructor(t){this.client=t}}class D{constructor(t){this.engine=t}}var te=Object.defineProperty,ne=Object.defineProperties,se=Object.getOwnPropertyDescriptors,q=Object.getOwnPropertySymbols,ie=Object.prototype.hasOwnProperty,re=Object.prototype.propertyIsEnumerable,M=(n,t,e)=>t in n?te(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,y=(n,t)=>{for(var e in t||(t={}))ie.call(t,e)&&M(n,e,t[e]);if(q)for(var e of q(t))re.call(t,e)&&M(n,e,t[e]);return n},w=(n,t)=>ne(n,se(t));class oe extends D{constructor(t){super(t),this.engine=t,this.prepareFulfilment=async e=>{if(console.log("prepareFulfilment",e),!this.prepareFulfilmentHandler)throw new Error(`prepareFulfilmentHandler not found for environment: '${h.getEnvironment()}'`);const{transaction:s}=e,i=await this.prepareFulfilmentHandler({transaction:s,projectId:this.projectId});switch(console.log("prepareFulfilment processing result..",i),i.status){case f.error:return{status:f.error,reason:i.reason};case f.not_required:return{status:f.not_required};case f.available:const o=i.data;return{status:f.available,data:{fulfilmentId:o.orchestrationId,checkIn:o.checkIn,transactions:o.transactions,funding:o.metadata.fundingFrom,initialTransaction:o.initialTransaction,initialTransactionMetadata:o.metadata.initialTransaction}};default:throw new Error(`Invalid prepareFulfilment status: ${JSON.stringify(i)}`)}},this.fulfilmentStatus=async e=>{if(!this.fulfilmentStatusHandler)throw new Error(`fulfilmentStatusHandler not found for environment: '${h.getEnvironment()}'`);const{fulfilmentId:s}=e;console.log("fulfilmentStatus",e);const i=await this.fulfilmentStatusHandler({orchestrationId:s,projectId:this.projectId});if(i.status===N.error)throw new Error(i.reason);return console.log("fulfilmentStatus result",i),i},this.estimateFees=async e=>{if(!this.estimateFeesHandler)throw new Error(`estimateFeesHandler not found for environment: '${h.getEnvironment()}'`);const s=await this.estimateFeesHandler(w(y({},e),{projectId:this.projectId}));return console.log("estimateFees result",s),s},this.getERC20Balance=async e=>{if(!this.getERC20BalanceHandler)throw new Error(`getERC20BalanceHandler not found for environment: '${h.getEnvironment()}'`);const s=await this.getERC20BalanceHandler(w(y({},e),{projectId:this.projectId}));return console.log("getERC20Balance result",s),s},this.getFulfilmentDetails=async e=>{if(!this.getFulfilmentDetailsHandler)throw new Error(`getFulfilmentDetailsHandler not found for environment: '${h.getEnvironment()}'`);const{fulfilmentId:s}=e,i=await this.getFulfilmentDetailsHandler(w(y({},e),{orchestationId:s,projectId:this.projectId}));console.log("getFulfilmentDetails handler result",i);const o=[];for(const c of i.bridge)o.push({fee:c.fee,localFee:c.localFee});const r=[];for(const c of i.route)r.push({transaction:c.transaction,eip1559:c.estimate,transactionFee:c.fee});const l={transaction:i.initial.transaction,eip1559:i.initial.estimate,transactionFee:i.initial.fee},u=i.localTotal;return console.log("getFulfilmentDetails parsed result",{routeDetails:r,initialTransactionDetails:l,bridgeDetails:o,totalFee:u}),{routeDetails:r,initialTransactionDetails:l,bridgeDetails:o,totalFee:u}},this.loadHandlers=()=>{switch(h.getEnvironment()){case h.ENV_MAP.reactNative:return this.ReactNative();case h.ENV_MAP.browser:return this.Browser();case h.ENV_MAP.node:return this.Node()}},this.ReactNative=()=>{const e=global==null?void 0:global.yttrium;if(!e){console.warn("React Native Yttrium not found in global scope");return}this.prepareFulfilmentHandler=async s=>this.parseResult(await e.prepare(s)),this.fulfilmentStatusHandler=async s=>this.parseResult(await e.status(s)),this.estimateFeesHandler=async s=>this.parseResult(await e.estimateFees(s)),this.getERC20BalanceHandler=async s=>this.parseResult(await e.getERC20Balance(s)),this.getFulfilmentDetailsHandler=async s=>this.parseResult(await e.getBridgeDetails(s))},this.Browser=()=>{console.warn("Yttrium not available in browser environment")},this.Node=()=>{const e=global==null?void 0:global.yttrium;e||console.warn("Yttrium not available in node environment"),this.prepareFulfilmentHandler=async s=>this.parseResult(await e.prepare(s)),this.fulfilmentStatusHandler=async s=>this.parseResult(await e.status(s)),this.estimateFeesHandler=async s=>this.parseResult(await e.estimateFees(s)),this.getERC20BalanceHandler=async s=>this.parseResult(await e.getERC20Balance(s)),this.getFulfilmentDetailsHandler=async s=>this.parseResult(await e.getBridgeDetails(s))},this.parseResult=e=>{if(typeof e<"u"){if(typeof e=="string")try{return JSON.parse(e)}catch{}return e}},this.loadHandlers(),this.projectId=this.engine.client.core.projectId||""}}var ae=Object.defineProperty,le=Object.defineProperties,ce=Object.getOwnPropertyDescriptors,B=Object.getOwnPropertySymbols,he=Object.prototype.hasOwnProperty,ue=Object.prototype.propertyIsEnumerable,K=(n,t,e)=>t in n?ae(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,fe=(n,t)=>{for(var e in t||(t={}))he.call(t,e)&&K(n,e,t[e]);if(B)for(var e of B(t))ue.call(t,e)&&K(n,e,t[e]);return n},ge=(n,t)=>le(n,ce(t));class pe extends H{constructor(t){super(t),this.init=async()=>{this.signClient=await S.SignClient.init({core:this.client.core,metadata:this.client.metadata,signConfig:this.client.signConfig})},this.pair=async e=>{await this.client.core.pairing.pair(e)},this.approveSession=async e=>{const{topic:s,acknowledged:i}=await this.signClient.approve(ge(fe({},e),{id:e.id,namespaces:e.namespaces,sessionProperties:e.sessionProperties,sessionConfig:e.sessionConfig}));return await i(),this.signClient.session.get(s)},this.rejectSession=async e=>await this.signClient.reject(e),this.updateSession=async e=>await this.signClient.update(e),this.extendSession=async e=>await this.signClient.extend(e),this.respondSessionRequest=async e=>await this.signClient.respond(e),this.disconnectSession=async e=>await this.signClient.disconnect(e),this.emitSessionEvent=async e=>await this.signClient.emit(e),this.getActiveSessions=()=>this.signClient.session.getAll().reduce((e,s)=>(e[s.topic]=s,e),{}),this.getPendingSessionProposals=()=>this.signClient.proposal.getAll(),this.getPendingSessionRequests=()=>this.signClient.getPendingSessionRequests(),this.approveSessionAuthenticate=async e=>await this.signClient.approveSessionAuthenticate(e),this.rejectSessionAuthenticate=async e=>await this.signClient.rejectSessionAuthenticate(e),this.formatAuthMessage=e=>this.signClient.formatAuthMessage(e),this.registerDeviceToken=e=>this.client.core.echoClient.registerDeviceToken(e),this.on=(e,s)=>(this.setEvent(e,"off"),this.setEvent(e,"on"),this.client.events.on(e,s)),this.once=(e,s)=>(this.setEvent(e,"off"),this.setEvent(e,"once"),this.client.events.once(e,s)),this.off=(e,s)=>(this.setEvent(e,"off"),this.client.events.off(e,s)),this.removeListener=(e,s)=>(this.setEvent(e,"removeListener"),this.client.events.removeListener(e,s)),this.prepareFulfilment=async e=>await this.chainAbstraction.prepareFulfilment(e),this.fulfilmentStatus=async e=>await this.chainAbstraction.fulfilmentStatus(e),this.estimateFees=async e=>await this.chainAbstraction.estimateFees(e),this.getERC20Balance=async e=>await this.chainAbstraction.getERC20Balance(e),this.getFulfilmentDetails=async e=>await this.chainAbstraction.getFulfilmentDetails(e),this.onSessionRequest=e=>{this.client.events.emit("session_request",e)},this.onSessionProposal=e=>{this.client.events.emit("session_proposal",e)},this.onSessionDelete=e=>{this.client.events.emit("session_delete",e)},this.onProposalExpire=e=>{this.client.events.emit("proposal_expire",e)},this.onSessionRequestExpire=e=>{this.client.events.emit("session_request_expire",e)},this.onSessionRequestAuthenticate=e=>{this.client.events.emit("session_authenticate",e)},this.setEvent=(e,s)=>{switch(e){case"session_request":this.signClient.events[s]("session_request",this.onSessionRequest);break;case"session_proposal":this.signClient.events[s]("session_proposal",this.onSessionProposal);break;case"session_delete":this.signClient.events[s]("session_delete",this.onSessionDelete);break;case"proposal_expire":this.signClient.events[s]("proposal_expire",this.onProposalExpire);break;case"session_request_expire":this.signClient.events[s]("session_request_expire",this.onSessionRequestExpire);break;case"session_authenticate":this.signClient.events[s]("session_authenticate",this.onSessionRequestAuthenticate);break}},this.signClient={},this.chainAbstraction=new oe(this)}}const de={decryptMessage:async n=>{const t={core:new _.Core({storageOptions:n.storageOptions,storage:n.storage})};await t.core.crypto.init();const e=t.core.crypto.decode(n.topic,n.encryptedMessage);return t.core=null,e},getMetadata:async n=>{const t={core:new _.Core({storageOptions:n.storageOptions,storage:n.storage}),sessionStore:null};t.sessionStore=new S.SessionStore(t.core,t.core.logger),await t.sessionStore.init();const e=t.sessionStore.get(n.topic),s=e?.peer.metadata;return t.core=null,t.sessionStore=null,s}},W=class extends x{constructor(n){super(n),this.events=new p.exports,this.on=(t,e)=>this.engine.on(t,e),this.once=(t,e)=>this.engine.once(t,e),this.off=(t,e)=>this.engine.off(t,e),this.removeListener=(t,e)=>this.engine.removeListener(t,e),this.pair=async t=>{try{return await this.engine.pair(t)}catch(e){throw this.logger.error(e.message),e}},this.approveSession=async t=>{try{return await this.engine.approveSession(t)}catch(e){throw this.logger.error(e.message),e}},this.rejectSession=async t=>{try{return await this.engine.rejectSession(t)}catch(e){throw this.logger.error(e.message),e}},this.updateSession=async t=>{try{return await this.engine.updateSession(t)}catch(e){throw this.logger.error(e.message),e}},this.extendSession=async t=>{try{return await this.engine.extendSession(t)}catch(e){throw this.logger.error(e.message),e}},this.respondSessionRequest=async t=>{try{return await this.engine.respondSessionRequest(t)}catch(e){throw this.logger.error(e.message),e}},this.disconnectSession=async t=>{try{return await this.engine.disconnectSession(t)}catch(e){throw this.logger.error(e.message),e}},this.emitSessionEvent=async t=>{try{return await this.engine.emitSessionEvent(t)}catch(e){throw this.logger.error(e.message),e}},this.getActiveSessions=()=>{try{return this.engine.getActiveSessions()}catch(t){throw this.logger.error(t.message),t}},this.getPendingSessionProposals=()=>{try{return this.engine.getPendingSessionProposals()}catch(t){throw this.logger.error(t.message),t}},this.getPendingSessionRequests=()=>{try{return this.engine.getPendingSessionRequests()}catch(t){throw this.logger.error(t.message),t}},this.registerDeviceToken=t=>{try{return this.engine.registerDeviceToken(t)}catch(e){throw this.logger.error(e.message),e}},this.approveSessionAuthenticate=t=>{try{return this.engine.approveSessionAuthenticate(t)}catch(e){throw this.logger.error(e.message),e}},this.rejectSessionAuthenticate=t=>{try{return this.engine.rejectSessionAuthenticate(t)}catch(e){throw this.logger.error(e.message),e}},this.formatAuthMessage=t=>{try{return this.engine.formatAuthMessage(t)}catch(e){throw this.logger.error(e.message),e}},this.prepareFulfilment=async t=>{try{return await this.engine.prepareFulfilment(t)}catch(e){throw this.logger.error(e.message),e}},this.fulfilmentStatus=async t=>{try{return await this.engine.fulfilmentStatus(t)}catch(e){throw this.logger.error(e.message),e}},this.estimateFees=async t=>{try{return await this.engine.estimateFees(t)}catch(e){throw this.logger.error(e.message),e}},this.getERC20Balance=async t=>{try{return await this.engine.getERC20Balance(t)}catch(e){throw this.logger.error(e.message),e}},this.getFulfilmentDetails=async t=>{try{return await this.engine.getFulfilmentDetails(t)}catch(e){throw this.logger.error(e.message),e}},this.metadata=n.metadata,this.name=n.name||m,this.signConfig=n.signConfig,this.core=n.core,this.logger=this.core.logger,this.engine=new pe(this)}static async init(n){const t=new W(n);return await t.initialize(),t}async initialize(){this.logger.trace("Initialized");try{await this.engine.init(),this.logger.info("WalletKit Initialization Success")}catch(n){throw this.logger.info("WalletKit Initialization Failure"),this.logger.error(n.message),n}}};let E=W;E.notifications=de;const ve=E;exports.CAN_FULFIL_STATUS=f,exports.CLIENT_CONTEXT=m,exports.CLIENT_STORAGE_OPTIONS=Q,exports.CLIENT_STORAGE_PREFIX=J,exports.FULFILMENT_STATUS=N,exports.IChainAbstraction=D,exports.IWalletKit=x,exports.IWalletKitEngine=H,exports.IWalletKitEvents=ee,exports.PROTOCOL=P,exports.PROTOCOL_VERSION=Y,exports.REQUEST_CONTEXT=Z,exports.WalletKit=ve,exports.default=E;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var S=require("@walletconnect/sign-client"),h=require("@walletconnect/utils"),_=require("@walletconnect/core"),p={exports:{}},g=typeof Reflect=="object"?Reflect:null,b=g&&typeof g.apply=="function"?g.apply:function(t,e,s){return Function.prototype.apply.call(t,e,s)},d;g&&typeof g.ownKeys=="function"?d=g.ownKeys:Object.getOwnPropertySymbols?d=function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:d=function(t){return Object.getOwnPropertyNames(t)};function $(n){console&&console.warn&&console.warn(n)}var L=Number.isNaN||function(t){return t!==t};function a(){a.init.call(this)}p.exports=a,p.exports.once=V,a.EventEmitter=a,a.prototype._events=void 0,a.prototype._eventsCount=0,a.prototype._maxListeners=void 0;var C=10;function v(n){if(typeof n!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof n)}Object.defineProperty(a,"defaultMaxListeners",{enumerable:!0,get:function(){return C},set:function(n){if(typeof n!="number"||n<0||L(n))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+n+".");C=n}}),a.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},a.prototype.setMaxListeners=function(t){if(typeof t!="number"||t<0||L(t))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+t+".");return this._maxListeners=t,this};function O(n){return n._maxListeners===void 0?a.defaultMaxListeners:n._maxListeners}a.prototype.getMaxListeners=function(){return O(this)},a.prototype.emit=function(t){for(var e=[],s=1;s<arguments.length;s++)e.push(arguments[s]);var i=t==="error",o=this._events;if(o!==void 0)i=i&&o.error===void 0;else if(!i)return!1;if(i){var r;if(e.length>0&&(r=e[0]),r instanceof Error)throw r;var l=new Error("Unhandled error."+(r?" ("+r.message+")":""));throw l.context=r,l}var u=o[t];if(u===void 0)return!1;if(typeof u=="function")b(u,this,e);else for(var c=u.length,k=A(u,c),s=0;s<c;++s)b(k[s],this,e);return!0};function R(n,t,e,s){var i,o,r;if(v(e),o=n._events,o===void 0?(o=n._events=Object.create(null),n._eventsCount=0):(o.newListener!==void 0&&(n.emit("newListener",t,e.listener?e.listener:e),o=n._events),r=o[t]),r===void 0)r=o[t]=e,++n._eventsCount;else if(typeof r=="function"?r=o[t]=s?[e,r]:[r,e]:s?r.unshift(e):r.push(e),i=O(n),i>0&&r.length>i&&!r.warned){r.warned=!0;var l=new Error("Possible EventEmitter memory leak detected. "+r.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");l.name="MaxListenersExceededWarning",l.emitter=n,l.type=t,l.count=r.length,$(l)}return n}a.prototype.addListener=function(t,e){return R(this,t,e,!1)},a.prototype.on=a.prototype.addListener,a.prototype.prependListener=function(t,e){return R(this,t,e,!0)};function U(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function F(n,t,e){var s={fired:!1,wrapFn:void 0,target:n,type:t,listener:e},i=U.bind(s);return i.listener=e,s.wrapFn=i,i}a.prototype.once=function(t,e){return v(e),this.on(t,F(this,t,e)),this},a.prototype.prependOnceListener=function(t,e){return v(e),this.prependListener(t,F(this,t,e)),this},a.prototype.removeListener=function(t,e){var s,i,o,r,l;if(v(e),i=this._events,i===void 0)return this;if(s=i[t],s===void 0)return this;if(s===e||s.listener===e)--this._eventsCount===0?this._events=Object.create(null):(delete i[t],i.removeListener&&this.emit("removeListener",t,s.listener||e));else if(typeof s!="function"){for(o=-1,r=s.length-1;r>=0;r--)if(s[r]===e||s[r].listener===e){l=s[r].listener,o=r;break}if(o<0)return this;o===0?s.shift():X(s,o),s.length===1&&(i[t]=s[0]),i.removeListener!==void 0&&this.emit("removeListener",t,l||e)}return this},a.prototype.off=a.prototype.removeListener,a.prototype.removeAllListeners=function(t){var e,s,i;if(s=this._events,s===void 0)return this;if(s.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):s[t]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete s[t]),this;if(arguments.length===0){var o=Object.keys(s),r;for(i=0;i<o.length;++i)r=o[i],r!=="removeListener"&&this.removeAllListeners(r);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if(e=s[t],typeof e=="function")this.removeListener(t,e);else if(e!==void 0)for(i=e.length-1;i>=0;i--)this.removeListener(t,e[i]);return this};function I(n,t,e){var s=n._events;if(s===void 0)return[];var i=s[t];return i===void 0?[]:typeof i=="function"?e?[i.listener||i]:[i]:e?z(i):A(i,i.length)}a.prototype.listeners=function(t){return I(this,t,!0)},a.prototype.rawListeners=function(t){return I(this,t,!1)},a.listenerCount=function(n,t){return typeof n.listenerCount=="function"?n.listenerCount(t):T.call(n,t)},a.prototype.listenerCount=T;function T(n){var t=this._events;if(t!==void 0){var e=t[n];if(typeof e=="function")return 1;if(e!==void 0)return e.length}return 0}a.prototype.eventNames=function(){return this._eventsCount>0?d(this._events):[]};function A(n,t){for(var e=new Array(t),s=0;s<t;++s)e[s]=n[s];return e}function X(n,t){for(;t+1<n.length;t++)n[t]=n[t+1];n.pop()}function z(n){for(var t=new Array(n.length),e=0;e<t.length;++e)t[e]=n[e].listener||n[e];return t}function V(n,t){return new Promise(function(e,s){function i(r){n.removeListener(t,o),s(r)}function o(){typeof n.removeListener=="function"&&n.removeListener("error",i),e([].slice.call(arguments))}j(n,t,o,{once:!0}),t!=="error"&&G(n,i,{once:!0})})}function G(n,t,e){typeof n.on=="function"&&j(n,"error",t,e)}function j(n,t,e,s){if(typeof n.on=="function")s.once?n.once(t,e):n.on(t,e);else if(typeof n.addEventListener=="function")n.addEventListener(t,function i(o){s.once&&n.removeEventListener(t,i),e(o)});else throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof n)}const P="wc",Y=2,m="WalletKit",J=`${P}@2:${m}:`,Q={database:":memory:"},Z="request",N={completed:"completed",pending:"pending",error:"error"},f={not_required:"not_required",available:"available",error:"error"};class ee extends p.exports{constructor(){super()}}class x{constructor(t){this.opts=t}}class H{constructor(t){this.client=t}}class D{constructor(t){this.engine=t}}var te=Object.defineProperty,ne=Object.defineProperties,se=Object.getOwnPropertyDescriptors,q=Object.getOwnPropertySymbols,ie=Object.prototype.hasOwnProperty,re=Object.prototype.propertyIsEnumerable,M=(n,t,e)=>t in n?te(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,y=(n,t)=>{for(var e in t||(t={}))ie.call(t,e)&&M(n,e,t[e]);if(q)for(var e of q(t))re.call(t,e)&&M(n,e,t[e]);return n},w=(n,t)=>ne(n,se(t));class oe extends D{constructor(t){super(t),this.engine=t,this.prepareFulfilment=async e=>{if(console.log("prepareFulfilment",e),!this.prepareFulfilmentHandler)throw new Error(`prepareFulfilmentHandler not found for environment: '${h.getEnvironment()}'`);const{transaction:s}=e,i=await this.prepareFulfilmentHandler({transaction:s,projectId:this.projectId});switch(console.log("prepareFulfilment processing result..",i),i.status){case f.error:return{status:f.error,reason:i.reason};case f.not_required:return{status:f.not_required};case f.available:const o=i.data;return{status:f.available,data:{fulfilmentId:o.orchestrationId,checkIn:o.checkIn,transactions:o.transactions,funding:o.metadata.fundingFrom,initialTransaction:o.initialTransaction,initialTransactionMetadata:o.metadata.initialTransaction}};default:throw new Error(`Invalid prepareFulfilment status: ${JSON.stringify(i)}`)}},this.fulfilmentStatus=async e=>{if(!this.fulfilmentStatusHandler)throw new Error(`fulfilmentStatusHandler not found for environment: '${h.getEnvironment()}'`);const{fulfilmentId:s}=e;console.log("fulfilmentStatus",e);const i=await this.fulfilmentStatusHandler({orchestrationId:s,projectId:this.projectId});if(i.status===N.error)throw new Error(i.reason);return console.log("fulfilmentStatus result",i),i},this.estimateFees=async e=>{if(!this.estimateFeesHandler)throw new Error(`estimateFeesHandler not found for environment: '${h.getEnvironment()}'`);const s=await this.estimateFeesHandler(w(y({},e),{projectId:this.projectId}));return console.log("estimateFees result",s),s},this.getERC20Balance=async e=>{if(!this.getERC20BalanceHandler)throw new Error(`getERC20BalanceHandler not found for environment: '${h.getEnvironment()}'`);const s=await this.getERC20BalanceHandler(w(y({},e),{projectId:this.projectId}));return console.log("getERC20Balance result",s),s},this.getFulfilmentDetails=async e=>{if(!this.getFulfilmentDetailsHandler)throw new Error(`getFulfilmentDetailsHandler not found for environment: '${h.getEnvironment()}'`);const{fulfilmentId:s}=e,i=await this.getFulfilmentDetailsHandler(w(y({},e),{orchestrationId:s,projectId:this.projectId}));console.log("getFulfilmentDetails handler result",i);const o=[];for(const c of i.bridge)o.push({fee:c.fee,localFee:c.localFee});const r=[];for(const c of i.route)r.push({transaction:c.transaction,eip1559:c.estimate,transactionFee:c.fee});const l={transaction:i.initial.transaction,eip1559:i.initial.estimate,transactionFee:i.initial.fee},u=i.localTotal;return console.log("getFulfilmentDetails parsed result",{routeDetails:r,initialTransactionDetails:l,bridgeDetails:o,totalFee:u}),{routeDetails:r,initialTransactionDetails:l,bridgeDetails:o,totalFee:u}},this.loadHandlers=()=>{switch(h.getEnvironment()){case h.ENV_MAP.reactNative:return this.ReactNative();case h.ENV_MAP.browser:return this.Browser();case h.ENV_MAP.node:return this.Node()}},this.ReactNative=()=>{const e=global==null?void 0:global.yttrium;if(!e){console.warn("React Native Yttrium not found in global scope");return}this.prepareFulfilmentHandler=async s=>this.parseResult(await e.prepare(s)),this.fulfilmentStatusHandler=async s=>this.parseResult(await e.status(s)),this.estimateFeesHandler=async s=>this.parseResult(await e.estimateFees(s)),this.getERC20BalanceHandler=async s=>this.parseResult(await e.getERC20Balance(s)),this.getFulfilmentDetailsHandler=async s=>this.parseResult(await e.getBridgeDetails(s))},this.Browser=()=>{console.warn("Yttrium not available in browser environment")},this.Node=()=>{const e=global==null?void 0:global.yttrium;e||console.warn("Yttrium not available in node environment"),this.prepareFulfilmentHandler=async s=>this.parseResult(await e.prepare(s)),this.fulfilmentStatusHandler=async s=>this.parseResult(await e.status(s)),this.estimateFeesHandler=async s=>this.parseResult(await e.estimateFees(s)),this.getERC20BalanceHandler=async s=>this.parseResult(await e.getERC20Balance(s)),this.getFulfilmentDetailsHandler=async s=>this.parseResult(await e.getBridgeDetails(s))},this.parseResult=e=>{if(typeof e<"u"){if(typeof e=="string")try{return JSON.parse(e)}catch{}return e}},this.loadHandlers(),this.projectId=this.engine.client.core.projectId||""}}var ae=Object.defineProperty,le=Object.defineProperties,ce=Object.getOwnPropertyDescriptors,B=Object.getOwnPropertySymbols,he=Object.prototype.hasOwnProperty,ue=Object.prototype.propertyIsEnumerable,K=(n,t,e)=>t in n?ae(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e,fe=(n,t)=>{for(var e in t||(t={}))he.call(t,e)&&K(n,e,t[e]);if(B)for(var e of B(t))ue.call(t,e)&&K(n,e,t[e]);return n},ge=(n,t)=>le(n,ce(t));class pe extends H{constructor(t){super(t),this.init=async()=>{this.signClient=await S.SignClient.init({core:this.client.core,metadata:this.client.metadata,signConfig:this.client.signConfig})},this.pair=async e=>{await this.client.core.pairing.pair(e)},this.approveSession=async e=>{const{topic:s,acknowledged:i}=await this.signClient.approve(ge(fe({},e),{id:e.id,namespaces:e.namespaces,sessionProperties:e.sessionProperties,sessionConfig:e.sessionConfig}));return await i(),this.signClient.session.get(s)},this.rejectSession=async e=>await this.signClient.reject(e),this.updateSession=async e=>await this.signClient.update(e),this.extendSession=async e=>await this.signClient.extend(e),this.respondSessionRequest=async e=>await this.signClient.respond(e),this.disconnectSession=async e=>await this.signClient.disconnect(e),this.emitSessionEvent=async e=>await this.signClient.emit(e),this.getActiveSessions=()=>this.signClient.session.getAll().reduce((e,s)=>(e[s.topic]=s,e),{}),this.getPendingSessionProposals=()=>this.signClient.proposal.getAll(),this.getPendingSessionRequests=()=>this.signClient.getPendingSessionRequests(),this.approveSessionAuthenticate=async e=>await this.signClient.approveSessionAuthenticate(e),this.rejectSessionAuthenticate=async e=>await this.signClient.rejectSessionAuthenticate(e),this.formatAuthMessage=e=>this.signClient.formatAuthMessage(e),this.registerDeviceToken=e=>this.client.core.echoClient.registerDeviceToken(e),this.on=(e,s)=>(this.setEvent(e,"off"),this.setEvent(e,"on"),this.client.events.on(e,s)),this.once=(e,s)=>(this.setEvent(e,"off"),this.setEvent(e,"once"),this.client.events.once(e,s)),this.off=(e,s)=>(this.setEvent(e,"off"),this.client.events.off(e,s)),this.removeListener=(e,s)=>(this.setEvent(e,"removeListener"),this.client.events.removeListener(e,s)),this.prepareFulfilment=async e=>await this.chainAbstraction.prepareFulfilment(e),this.fulfilmentStatus=async e=>await this.chainAbstraction.fulfilmentStatus(e),this.estimateFees=async e=>await this.chainAbstraction.estimateFees(e),this.getERC20Balance=async e=>await this.chainAbstraction.getERC20Balance(e),this.getFulfilmentDetails=async e=>await this.chainAbstraction.getFulfilmentDetails(e),this.onSessionRequest=e=>{this.client.events.emit("session_request",e)},this.onSessionProposal=e=>{this.client.events.emit("session_proposal",e)},this.onSessionDelete=e=>{this.client.events.emit("session_delete",e)},this.onProposalExpire=e=>{this.client.events.emit("proposal_expire",e)},this.onSessionRequestExpire=e=>{this.client.events.emit("session_request_expire",e)},this.onSessionRequestAuthenticate=e=>{this.client.events.emit("session_authenticate",e)},this.setEvent=(e,s)=>{switch(e){case"session_request":this.signClient.events[s]("session_request",this.onSessionRequest);break;case"session_proposal":this.signClient.events[s]("session_proposal",this.onSessionProposal);break;case"session_delete":this.signClient.events[s]("session_delete",this.onSessionDelete);break;case"proposal_expire":this.signClient.events[s]("proposal_expire",this.onProposalExpire);break;case"session_request_expire":this.signClient.events[s]("session_request_expire",this.onSessionRequestExpire);break;case"session_authenticate":this.signClient.events[s]("session_authenticate",this.onSessionRequestAuthenticate);break}},this.signClient={},this.chainAbstraction=new oe(this)}}const de={decryptMessage:async n=>{const t={core:new _.Core({storageOptions:n.storageOptions,storage:n.storage})};await t.core.crypto.init();const e=t.core.crypto.decode(n.topic,n.encryptedMessage);return t.core=null,e},getMetadata:async n=>{const t={core:new _.Core({storageOptions:n.storageOptions,storage:n.storage}),sessionStore:null};t.sessionStore=new S.SessionStore(t.core,t.core.logger),await t.sessionStore.init();const e=t.sessionStore.get(n.topic),s=e?.peer.metadata;return t.core=null,t.sessionStore=null,s}},W=class extends x{constructor(n){super(n),this.events=new p.exports,this.on=(t,e)=>this.engine.on(t,e),this.once=(t,e)=>this.engine.once(t,e),this.off=(t,e)=>this.engine.off(t,e),this.removeListener=(t,e)=>this.engine.removeListener(t,e),this.pair=async t=>{try{return await this.engine.pair(t)}catch(e){throw this.logger.error(e.message),e}},this.approveSession=async t=>{try{return await this.engine.approveSession(t)}catch(e){throw this.logger.error(e.message),e}},this.rejectSession=async t=>{try{return await this.engine.rejectSession(t)}catch(e){throw this.logger.error(e.message),e}},this.updateSession=async t=>{try{return await this.engine.updateSession(t)}catch(e){throw this.logger.error(e.message),e}},this.extendSession=async t=>{try{return await this.engine.extendSession(t)}catch(e){throw this.logger.error(e.message),e}},this.respondSessionRequest=async t=>{try{return await this.engine.respondSessionRequest(t)}catch(e){throw this.logger.error(e.message),e}},this.disconnectSession=async t=>{try{return await this.engine.disconnectSession(t)}catch(e){throw this.logger.error(e.message),e}},this.emitSessionEvent=async t=>{try{return await this.engine.emitSessionEvent(t)}catch(e){throw this.logger.error(e.message),e}},this.getActiveSessions=()=>{try{return this.engine.getActiveSessions()}catch(t){throw this.logger.error(t.message),t}},this.getPendingSessionProposals=()=>{try{return this.engine.getPendingSessionProposals()}catch(t){throw this.logger.error(t.message),t}},this.getPendingSessionRequests=()=>{try{return this.engine.getPendingSessionRequests()}catch(t){throw this.logger.error(t.message),t}},this.registerDeviceToken=t=>{try{return this.engine.registerDeviceToken(t)}catch(e){throw this.logger.error(e.message),e}},this.approveSessionAuthenticate=t=>{try{return this.engine.approveSessionAuthenticate(t)}catch(e){throw this.logger.error(e.message),e}},this.rejectSessionAuthenticate=t=>{try{return this.engine.rejectSessionAuthenticate(t)}catch(e){throw this.logger.error(e.message),e}},this.formatAuthMessage=t=>{try{return this.engine.formatAuthMessage(t)}catch(e){throw this.logger.error(e.message),e}},this.prepareFulfilment=async t=>{try{return await this.engine.prepareFulfilment(t)}catch(e){throw this.logger.error(e.message),e}},this.fulfilmentStatus=async t=>{try{return await this.engine.fulfilmentStatus(t)}catch(e){throw this.logger.error(e.message),e}},this.estimateFees=async t=>{try{return await this.engine.estimateFees(t)}catch(e){throw this.logger.error(e.message),e}},this.getERC20Balance=async t=>{try{return await this.engine.getERC20Balance(t)}catch(e){throw this.logger.error(e.message),e}},this.getFulfilmentDetails=async t=>{try{return await this.engine.getFulfilmentDetails(t)}catch(e){throw this.logger.error(e.message),e}},this.metadata=n.metadata,this.name=n.name||m,this.signConfig=n.signConfig,this.core=n.core,this.logger=this.core.logger,this.engine=new pe(this)}static async init(n){const t=new W(n);return await t.initialize(),t}async initialize(){this.logger.trace("Initialized");try{await this.engine.init(),this.logger.info("WalletKit Initialization Success")}catch(n){throw this.logger.info("WalletKit Initialization Failure"),this.logger.error(n.message),n}}};let E=W;E.notifications=de;const ve=E;exports.CAN_FULFIL_STATUS=f,exports.CLIENT_CONTEXT=m,exports.CLIENT_STORAGE_OPTIONS=Q,exports.CLIENT_STORAGE_PREFIX=J,exports.FULFILMENT_STATUS=N,exports.IChainAbstraction=D,exports.IWalletKit=x,exports.IWalletKitEngine=H,exports.IWalletKitEvents=ee,exports.PROTOCOL=P,exports.PROTOCOL_VERSION=Y,exports.REQUEST_CONTEXT=Z,exports.WalletKit=ve,exports.default=E;
2
2
  //# sourceMappingURL=index.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../../../node_modules/events/events.js","../src/constants/client.ts","../src/constants/request.ts","../src/constants/chainAbstraction.ts","../src/types/client.ts","../src/types/engine.ts","../src/types/chainAbstraction.ts","../src/controllers/chainAbstraction.ts","../src/controllers/engine.ts","../src/utils/notifications.ts","../src/client.ts","../src/index.ts"],"sourcesContent":["// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","export const PROTOCOL = \"wc\";\nexport const PROTOCOL_VERSION = 2;\nexport const CLIENT_CONTEXT = \"WalletKit\";\n\nexport const CLIENT_STORAGE_PREFIX = `${PROTOCOL}@${PROTOCOL_VERSION}:${CLIENT_CONTEXT}:`;\n\nexport const CLIENT_STORAGE_OPTIONS = {\n database: \":memory:\",\n};\n","export const REQUEST_CONTEXT = \"request\";\n","export const FULFILMENT_STATUS = {\n completed: \"completed\",\n pending: \"pending\",\n error: \"error\",\n} as const;\nexport const CAN_FULFIL_STATUS = {\n not_required: \"not_required\",\n available: \"available\",\n error: \"error\",\n} as const;\n","import EventEmmiter, { EventEmitter } from \"events\";\nimport { ICore, CoreTypes, SignClientTypes } from \"@walletconnect/types\";\nimport { IWalletKitEngine } from \"./engine\";\nimport { Logger } from \"@walletconnect/logger\";\nimport { JsonRpcPayload } from \"@walletconnect/jsonrpc-utils\";\n\nexport declare namespace WalletKitTypes {\n type Event =\n | \"session_proposal\"\n | \"session_request\"\n | \"session_delete\"\n | \"proposal_expire\"\n | \"session_request_expire\"\n | \"session_authenticate\";\n\n interface BaseEventArgs<T = unknown> {\n id: number;\n topic: string;\n params: T;\n }\n\n type SessionRequest = SignClientTypes.EventArguments[\"session_request\"];\n\n type SessionProposal = SignClientTypes.EventArguments[\"session_proposal\"];\n\n type SessionDelete = Omit<BaseEventArgs, \"params\">;\n\n type ProposalExpire = { id: number };\n\n type SessionRequestExpire = { id: number };\n\n type SessionAuthenticate = SignClientTypes.EventArguments[\"session_authenticate\"];\n\n type SignConfig = SignClientTypes.Options[\"signConfig\"];\n interface EventArguments {\n session_proposal: SessionProposal;\n session_request: SessionRequest;\n session_delete: Omit<BaseEventArgs, \"params\">;\n proposal_expire: ProposalExpire;\n session_request_expire: SessionRequestExpire;\n session_authenticate: SessionAuthenticate;\n }\n\n interface Options {\n core: ICore;\n metadata: Metadata;\n name?: string;\n signConfig?: SignConfig;\n }\n\n type Metadata = CoreTypes.Metadata;\n\n interface INotifications {\n decryptMessage: (params: {\n topic: string;\n encryptedMessage: string;\n storageOptions?: CoreTypes.Options[\"storageOptions\"];\n storage?: CoreTypes.Options[\"storage\"];\n }) => Promise<JsonRpcPayload>;\n getMetadata: (params: {\n topic: string;\n storageOptions?: CoreTypes.Options[\"storageOptions\"];\n storage?: CoreTypes.Options[\"storage\"];\n }) => Promise<CoreTypes.Metadata>;\n }\n}\n\nexport abstract class IWalletKitEvents extends EventEmmiter {\n constructor() {\n super();\n }\n\n public abstract emit: <E extends WalletKitTypes.Event>(\n event: E,\n args: WalletKitTypes.EventArguments[E],\n ) => boolean;\n\n public abstract on: <E extends WalletKitTypes.Event>(\n event: E,\n listener: (args: WalletKitTypes.EventArguments[E]) => any,\n ) => this;\n\n public abstract once: <E extends WalletKitTypes.Event>(\n event: E,\n listener: (args: WalletKitTypes.EventArguments[E]) => any,\n ) => this;\n\n public abstract off: <E extends WalletKitTypes.Event>(\n event: E,\n listener: (args: WalletKitTypes.EventArguments[E]) => any,\n ) => this;\n\n public abstract removeListener: <E extends WalletKitTypes.Event>(\n event: E,\n listener: (args: WalletKitTypes.EventArguments[E]) => any,\n ) => this;\n}\n\nexport abstract class IWalletKit {\n public abstract readonly name: string;\n public abstract engine: IWalletKitEngine;\n public abstract events: EventEmitter;\n public abstract logger: Logger;\n public abstract core: ICore;\n public abstract metadata: WalletKitTypes.Metadata;\n public abstract signConfig?: WalletKitTypes.SignConfig;\n\n constructor(public opts: WalletKitTypes.Options) {}\n\n // ---------- Public Methods ----------------------------------------------- //\n\n public abstract pair: IWalletKitEngine[\"pair\"];\n\n // sign //\n public abstract approveSession: IWalletKitEngine[\"approveSession\"];\n public abstract rejectSession: IWalletKitEngine[\"rejectSession\"];\n public abstract updateSession: IWalletKitEngine[\"updateSession\"];\n public abstract extendSession: IWalletKitEngine[\"extendSession\"];\n public abstract respondSessionRequest: IWalletKitEngine[\"respondSessionRequest\"];\n public abstract disconnectSession: IWalletKitEngine[\"disconnectSession\"];\n public abstract emitSessionEvent: IWalletKitEngine[\"emitSessionEvent\"];\n public abstract getActiveSessions: IWalletKitEngine[\"getActiveSessions\"];\n public abstract getPendingSessionProposals: IWalletKitEngine[\"getPendingSessionProposals\"];\n public abstract getPendingSessionRequests: IWalletKitEngine[\"getPendingSessionRequests\"];\n // push\n public abstract registerDeviceToken: IWalletKitEngine[\"registerDeviceToken\"];\n // multi chain auth //\n public abstract approveSessionAuthenticate: IWalletKitEngine[\"approveSessionAuthenticate\"];\n public abstract formatAuthMessage: IWalletKitEngine[\"formatAuthMessage\"];\n public abstract rejectSessionAuthenticate: IWalletKitEngine[\"rejectSessionAuthenticate\"];\n\n // chain abstraction //\n public abstract prepareFulfilment: IWalletKitEngine[\"prepareFulfilment\"];\n public abstract fulfilmentStatus: IWalletKitEngine[\"fulfilmentStatus\"];\n public abstract estimateFees: IWalletKitEngine[\"estimateFees\"];\n public abstract getERC20Balance: IWalletKitEngine[\"getERC20Balance\"];\n public abstract getFulfilmentDetails: IWalletKitEngine[\"getFulfilmentDetails\"];\n\n // ---------- Event Handlers ----------------------------------------------- //\n public abstract on: <E extends WalletKitTypes.Event>(\n event: E,\n listener: (args: WalletKitTypes.EventArguments[E]) => void,\n ) => EventEmitter;\n\n public abstract once: <E extends WalletKitTypes.Event>(\n event: E,\n listener: (args: WalletKitTypes.EventArguments[E]) => void,\n ) => EventEmitter;\n\n public abstract off: <E extends WalletKitTypes.Event>(\n event: E,\n listener: (args: WalletKitTypes.EventArguments[E]) => void,\n ) => EventEmitter;\n\n public abstract removeListener: <E extends WalletKitTypes.Event>(\n event: E,\n listener: (args: WalletKitTypes.EventArguments[E]) => void,\n ) => EventEmitter;\n}\n","import { ErrorResponse, JsonRpcResponse } from \"@walletconnect/jsonrpc-utils\";\nimport {\n ISignClient,\n PendingRequestTypes,\n ProposalTypes,\n SessionTypes,\n EchoClientTypes,\n AuthTypes,\n} from \"@walletconnect/types\";\nimport { IWalletKit, WalletKitTypes } from \"./client\";\nimport { IChainAbstraction } from \"./chainAbstraction\";\nimport EventEmitter from \"events\";\n\nexport abstract class IWalletKitEngine {\n public abstract signClient: ISignClient;\n public abstract chainAbstraction: IChainAbstraction;\n\n constructor(public client: IWalletKit) {}\n // ---------- Public Methods ------------------------------------------------- //\n public abstract init(): Promise<void>;\n\n public abstract pair(params: { uri: string; activatePairing?: boolean }): Promise<void>;\n\n // ---------- Sign ------------------------------------------------- //\n // approve a session proposal (SIGN)\n public abstract approveSession(params: {\n id: number;\n namespaces: Record<string, SessionTypes.Namespace>;\n sessionProperties?: ProposalTypes.SessionProperties;\n sessionConfig?: SessionTypes.SessionConfig;\n relayProtocol?: string;\n }): Promise<SessionTypes.Struct>;\n\n // reject a session proposal (SIGN)\n public abstract rejectSession(params: {\n // proposerPublicKey: string;\n id: number;\n reason: ErrorResponse;\n }): Promise<void>;\n\n // update session namespaces (SIGN)\n public abstract updateSession(params: {\n topic: string;\n namespaces: SessionTypes.Namespaces;\n }): Promise<{ acknowledged: () => Promise<void> }>;\n\n // update session expiry (SIGN)\n public abstract extendSession(params: {\n topic: string;\n }): Promise<{ acknowledged: () => Promise<void> }>;\n\n // respond JSON-RPC request (SIGN)\n public abstract respondSessionRequest(params: {\n topic: string;\n response: JsonRpcResponse;\n }): Promise<void>;\n\n // emit session events (SIGN)\n public abstract emitSessionEvent(params: {\n topic: string;\n event: any; //SessionEvent;\n chainId: string;\n }): Promise<void>;\n\n // disconnect a session (SIGN)\n public abstract disconnectSession(params: {\n topic: string;\n reason: ErrorResponse;\n }): Promise<void>;\n\n // query all active sessions (SIGN)\n public abstract getActiveSessions(): Record<string, SessionTypes.Struct>;\n\n // query all pending session requests (SIGN)\n public abstract getPendingSessionProposals(): Record<number, ProposalTypes.Struct>;\n\n // query all pending session requests (SIGN)\n public abstract getPendingSessionRequests(): PendingRequestTypes.Struct[];\n\n // ---------- Multi chain Auth ------------------------------------------------- //\n\n public abstract approveSessionAuthenticate(\n params: AuthTypes.ApproveSessionAuthenticateParams,\n ): Promise<{ session: SessionTypes.Struct | undefined }>;\n\n public abstract formatAuthMessage: (params: {\n request: AuthTypes.BaseAuthRequestParams;\n iss: string;\n }) => string;\n\n public abstract rejectSessionAuthenticate(params: {\n id: number;\n reason: ErrorResponse;\n }): Promise<void>;\n\n // ---------- Push ------------------------------------------------- //\n public abstract registerDeviceToken(\n params: EchoClientTypes.RegisterDeviceTokenParams,\n ): Promise<void>;\n\n // ---------- Chain Abstraction ------------------------------------ //\n\n public abstract prepareFulfilment: IChainAbstraction[\"prepareFulfilment\"];\n\n public abstract fulfilmentStatus: IChainAbstraction[\"fulfilmentStatus\"];\n\n public abstract estimateFees: IChainAbstraction[\"estimateFees\"];\n\n public abstract getERC20Balance: IChainAbstraction[\"getERC20Balance\"];\n\n public abstract getFulfilmentDetails: IChainAbstraction[\"getFulfilmentDetails\"];\n\n // ---------- Event Handlers ----------------------------------------------- //\n public abstract on: <E extends WalletKitTypes.Event>(\n event: E,\n listener: (args: WalletKitTypes.EventArguments[E]) => void,\n ) => EventEmitter;\n\n public abstract once: <E extends WalletKitTypes.Event>(\n event: E,\n listener: (args: WalletKitTypes.EventArguments[E]) => void,\n ) => EventEmitter;\n\n public abstract off: <E extends WalletKitTypes.Event>(\n event: E,\n listener: (args: WalletKitTypes.EventArguments[E]) => void,\n ) => EventEmitter;\n\n public abstract removeListener: <E extends WalletKitTypes.Event>(\n event: E,\n listener: (args: WalletKitTypes.EventArguments[E]) => void,\n ) => EventEmitter;\n}\n","import { IWalletKitEngine } from \"./engine\";\n\nexport declare namespace ChainAbstractionTypes {\n type Transaction = {\n from: string;\n to: string;\n value: string;\n chainId: string;\n gas?: string;\n gasPrice?: string;\n data?: string;\n nonce?: string;\n maxFeePerGas?: string;\n maxPriorityFeePerGas?: string;\n };\n\n type InitialTransactionMetadata = {\n symbol: string;\n amount: string;\n decimals: number;\n tokenContract: string;\n transferTo: string;\n };\n\n type FulfilmentStatusResponse = {\n createdAt: number;\n } & (\n | {\n status: \"completed\";\n }\n | { status: \"pending\"; checkIn: number }\n );\n\n type FulfilmentStatusHandlerResponse = {\n createdAt: number;\n } & (\n | {\n status: \"completed\";\n }\n | { status: \"pending\"; checkIn: number }\n | { status: \"error\"; reason: string }\n );\n\n type PrepareFulfilmentResponse =\n | {\n status: \"not_required\";\n }\n | {\n status: \"available\";\n data: {\n fulfilmentId: string;\n checkIn: number;\n transactions: Transaction[];\n funding: FundingFrom[];\n initialTransaction: Transaction;\n initialTransactionMetadata: InitialTransactionMetadata;\n };\n }\n | {\n status: \"error\";\n reason: string;\n };\n\n type FundingFrom = {\n tokenContract: string;\n amount: string;\n chainId: string;\n symbol: string;\n };\n\n type PrepareFulfilmentHandlerResult =\n | {\n status: \"error\";\n reason: string;\n }\n | {\n status: \"not_required\";\n }\n | {\n status: \"available\";\n data: {\n orchestrationId: string;\n checkIn: number;\n metadata: {\n fundingFrom: FundingFrom[];\n initialTransaction: InitialTransactionMetadata;\n };\n transactions: Transaction[];\n initialTransaction: Transaction;\n };\n };\n\n type EstimateFeesResponse = {\n maxFeePerGas: string;\n maxPriorityFeePerGas: string;\n };\n\n type ERC20BalanceResponse = {\n balance: string;\n };\n\n type TotalFee = {\n symbol: string;\n amount: string;\n unit: number;\n formatted: string;\n formattedAlt: string;\n };\n\n type TransactionFee = {\n fee: TotalFee;\n localFee: TotalFee;\n };\n\n type TransactionDetails = {\n transaction: Transaction;\n eip1559: EstimateFeesResponse;\n transactionFee: TransactionFee;\n };\n\n type FulfilmentDetailsResponse = {\n routeDetails: TransactionDetails[];\n initialTransactionDetails: TransactionDetails;\n bridgeDetails: TransactionFee[];\n totalFee: TotalFee;\n };\n}\nexport abstract class IChainAbstraction {\n constructor(public engine: IWalletKitEngine) {}\n\n public abstract prepareFulfilment(params: {\n transaction: ChainAbstractionTypes.Transaction;\n }): Promise<ChainAbstractionTypes.PrepareFulfilmentResponse>;\n\n public abstract fulfilmentStatus(params: {\n fulfilmentId: string;\n }): Promise<ChainAbstractionTypes.FulfilmentStatusResponse>;\n\n public abstract estimateFees(params: {\n chainId: string;\n }): Promise<ChainAbstractionTypes.EstimateFeesResponse>;\n\n public abstract getERC20Balance(params: {\n chainId: string;\n tokenAddress: string;\n ownerAddress: string;\n }): Promise<ChainAbstractionTypes.ERC20BalanceResponse>;\n\n public abstract getFulfilmentDetails(params: {\n fulfilmentId: string;\n }): Promise<ChainAbstractionTypes.FulfilmentDetailsResponse>;\n}\n","/* eslint-disable no-console */\nimport { ENV_MAP, getEnvironment } from \"@walletconnect/utils\";\nimport { ChainAbstractionTypes, IChainAbstraction, IWalletKitEngine } from \"../types\";\nimport { FULFILMENT_STATUS, CAN_FULFIL_STATUS } from \"../constants\";\n\nexport class ChainAbstraction extends IChainAbstraction {\n private prepareFulfilmentHandler: any;\n private fulfilmentStatusHandler: any;\n private estimateFeesHandler: any;\n private getERC20BalanceHandler: any;\n private getFulfilmentDetailsHandler: any;\n\n private projectId: string;\n\n constructor(public engine: IWalletKitEngine) {\n super(engine);\n this.loadHandlers();\n this.projectId = this.engine.client.core.projectId || \"\";\n }\n\n public prepareFulfilment: IChainAbstraction[\"prepareFulfilment\"] = async (params) => {\n console.log(\"prepareFulfilment\", params);\n if (!this.prepareFulfilmentHandler) {\n throw new Error(`prepareFulfilmentHandler not found for environment: '${getEnvironment()}'`);\n }\n\n const { transaction } = params;\n\n const result = (await this.prepareFulfilmentHandler({\n transaction,\n projectId: this.projectId,\n })) as ChainAbstractionTypes.PrepareFulfilmentHandlerResult;\n console.log(\"prepareFulfilment processing result..\", result);\n switch (result.status) {\n case CAN_FULFIL_STATUS.error:\n return { status: CAN_FULFIL_STATUS.error, reason: result.reason };\n case CAN_FULFIL_STATUS.not_required:\n return { status: CAN_FULFIL_STATUS.not_required };\n case CAN_FULFIL_STATUS.available:\n // eslint-disable-next-line no-case-declarations\n const routes = result.data;\n return {\n status: CAN_FULFIL_STATUS.available,\n data: {\n fulfilmentId: routes.orchestrationId,\n checkIn: routes.checkIn,\n transactions: routes.transactions,\n funding: routes.metadata.fundingFrom,\n initialTransaction: routes.initialTransaction,\n initialTransactionMetadata: routes.metadata.initialTransaction,\n },\n };\n default:\n throw new Error(`Invalid prepareFulfilment status: ${JSON.stringify(result)}`);\n }\n };\n\n public fulfilmentStatus: IChainAbstraction[\"fulfilmentStatus\"] = async (params) => {\n if (!this.fulfilmentStatusHandler) {\n throw new Error(`fulfilmentStatusHandler not found for environment: '${getEnvironment()}'`);\n }\n\n const { fulfilmentId } = params;\n\n console.log(\"fulfilmentStatus\", params);\n const result = (await this.fulfilmentStatusHandler({\n orchestrationId: fulfilmentId,\n projectId: this.projectId,\n })) as ChainAbstractionTypes.FulfilmentStatusHandlerResponse;\n\n if (result.status === FULFILMENT_STATUS.error) {\n throw new Error(result.reason);\n }\n console.log(\"fulfilmentStatus result\", result);\n return result;\n };\n\n /**\n * TODO: pass projectId to yttrium handlers\n */\n\n public estimateFees: IChainAbstraction[\"estimateFees\"] = async (params) => {\n if (!this.estimateFeesHandler) {\n throw new Error(`estimateFeesHandler not found for environment: '${getEnvironment()}'`);\n }\n const result = await this.estimateFeesHandler({\n ...params,\n projectId: this.projectId,\n });\n\n console.log(\"estimateFees result\", result);\n return result;\n };\n\n public getERC20Balance: IChainAbstraction[\"getERC20Balance\"] = async (params) => {\n if (!this.getERC20BalanceHandler) {\n throw new Error(`getERC20BalanceHandler not found for environment: '${getEnvironment()}'`);\n }\n const result = await this.getERC20BalanceHandler({\n ...params,\n projectId: this.projectId,\n });\n\n console.log(\"getERC20Balance result\", result);\n return result;\n };\n\n public getFulfilmentDetails: IChainAbstraction[\"getFulfilmentDetails\"] = async (params) => {\n if (!this.getFulfilmentDetailsHandler) {\n throw new Error(\n `getFulfilmentDetailsHandler not found for environment: '${getEnvironment()}'`,\n );\n }\n const { fulfilmentId } = params;\n const result = await this.getFulfilmentDetailsHandler({\n ...params,\n orchestationId: fulfilmentId,\n projectId: this.projectId,\n });\n\n console.log(\"getFulfilmentDetails handler result\", result);\n const bridgeDetails: ChainAbstractionTypes.TransactionFee[] = [];\n\n for (const fees of result.bridge) {\n bridgeDetails.push({\n fee: fees.fee,\n localFee: fees.localFee,\n });\n }\n\n const routeDetails: ChainAbstractionTypes.TransactionDetails[] = [];\n\n for (const transaction of result.route) {\n routeDetails.push({\n transaction: transaction.transaction,\n eip1559: transaction.estimate,\n transactionFee: transaction.fee,\n });\n }\n\n const initialTransactionDetails: ChainAbstractionTypes.TransactionDetails = {\n transaction: result.initial.transaction,\n eip1559: result.initial.estimate,\n transactionFee: result.initial.fee,\n };\n\n const totalFee: ChainAbstractionTypes.TotalFee = result.localTotal;\n\n console.log(\"getFulfilmentDetails parsed result\", {\n routeDetails,\n initialTransactionDetails,\n bridgeDetails,\n totalFee,\n });\n\n return {\n routeDetails,\n initialTransactionDetails,\n bridgeDetails,\n totalFee,\n };\n };\n\n private loadHandlers = () => {\n const env = getEnvironment();\n switch (env) {\n case ENV_MAP.reactNative:\n return this.ReactNative();\n case ENV_MAP.browser:\n return this.Browser();\n case ENV_MAP.node:\n return this.Node();\n }\n };\n\n private ReactNative = () => {\n const yttrium = (global as any)?.yttrium;\n if (!yttrium) {\n console.warn(\"React Native Yttrium not found in global scope\");\n return;\n }\n this.prepareFulfilmentHandler = async (params: any) =>\n this.parseResult(await yttrium.prepare(params));\n this.fulfilmentStatusHandler = async (params: any) =>\n this.parseResult(await yttrium.status(params));\n this.estimateFeesHandler = async (params: any) =>\n this.parseResult(await yttrium.estimateFees(params));\n this.getERC20BalanceHandler = async (params: any) =>\n this.parseResult(await yttrium.getERC20Balance(params));\n this.getFulfilmentDetailsHandler = async (params: any) =>\n this.parseResult(await yttrium.getBridgeDetails(params));\n };\n\n private Browser = () => {\n console.warn(\"Yttrium not available in browser environment\");\n };\n\n private Node = () => {\n const yttrium = (global as any)?.yttrium;\n if (!yttrium) {\n console.warn(\"Yttrium not available in node environment\");\n }\n\n this.prepareFulfilmentHandler = async (params: any) =>\n this.parseResult(await yttrium.prepare(params));\n this.fulfilmentStatusHandler = async (params: any) =>\n this.parseResult(await yttrium.status(params));\n this.estimateFeesHandler = async (params: any) =>\n this.parseResult(await yttrium.estimateFees(params));\n this.getERC20BalanceHandler = async (params: any) =>\n this.parseResult(await yttrium.getERC20Balance(params));\n this.getFulfilmentDetailsHandler = async (params: any) =>\n this.parseResult(await yttrium.getBridgeDetails(params));\n };\n\n private parseResult = (result: any) => {\n if (typeof result === \"undefined\") return;\n\n // iOS returns parsed JSON object, while Android returns stringified\n if (typeof result === \"string\") {\n try {\n return JSON.parse(result);\n } catch (e) {}\n }\n return result;\n };\n}\n","import { SignClient } from \"@walletconnect/sign-client\";\nimport { ISignClient, SessionTypes } from \"@walletconnect/types\";\nimport { IWalletKitEngine, WalletKitTypes } from \"../types\";\nimport { ChainAbstraction } from \"./chainAbstraction\";\n\nexport class Engine extends IWalletKitEngine {\n public signClient: ISignClient;\n public chainAbstraction: ChainAbstraction;\n\n constructor(client: IWalletKitEngine[\"client\"]) {\n super(client);\n // initialized in init()\n this.signClient = {} as any;\n this.chainAbstraction = new ChainAbstraction(this);\n }\n\n public init = async () => {\n this.signClient = await SignClient.init({\n core: this.client.core,\n metadata: this.client.metadata,\n signConfig: this.client.signConfig,\n });\n };\n\n public pair: IWalletKitEngine[\"pair\"] = async (params) => {\n await this.client.core.pairing.pair(params);\n };\n\n // Sign //\n public approveSession: IWalletKitEngine[\"approveSession\"] = async (sessionProposal) => {\n const { topic, acknowledged } = await this.signClient.approve({\n ...sessionProposal,\n id: sessionProposal.id,\n namespaces: sessionProposal.namespaces,\n sessionProperties: sessionProposal.sessionProperties,\n sessionConfig: sessionProposal.sessionConfig,\n });\n await acknowledged();\n return this.signClient.session.get(topic);\n };\n\n public rejectSession: IWalletKitEngine[\"rejectSession\"] = async (params) => {\n return await this.signClient.reject(params);\n };\n\n public updateSession: IWalletKitEngine[\"updateSession\"] = async (params) => {\n return await this.signClient.update(params);\n };\n\n public extendSession: IWalletKitEngine[\"extendSession\"] = async (params) => {\n return await this.signClient.extend(params);\n };\n\n public respondSessionRequest: IWalletKitEngine[\"respondSessionRequest\"] = async (params) => {\n const result = await this.signClient.respond(params);\n return result;\n };\n\n public disconnectSession: IWalletKitEngine[\"disconnectSession\"] = async (params) => {\n return await this.signClient.disconnect(params);\n };\n\n public emitSessionEvent: IWalletKitEngine[\"emitSessionEvent\"] = async (params) => {\n return await this.signClient.emit(params);\n };\n\n public getActiveSessions: IWalletKitEngine[\"getActiveSessions\"] = () => {\n const sessions = this.signClient.session.getAll();\n return sessions.reduce((sessions: Record<string, SessionTypes.Struct>, session) => {\n sessions[session.topic] = session;\n return sessions;\n }, {});\n };\n\n public getPendingSessionProposals: IWalletKitEngine[\"getPendingSessionProposals\"] = () => {\n return this.signClient.proposal.getAll();\n };\n\n public getPendingSessionRequests: IWalletKitEngine[\"getPendingSessionRequests\"] = () => {\n return this.signClient.getPendingSessionRequests();\n };\n\n // Multi chain Auth //\n public approveSessionAuthenticate: IWalletKitEngine[\"approveSessionAuthenticate\"] = async (\n params,\n ) => {\n return await this.signClient.approveSessionAuthenticate(params);\n };\n\n public rejectSessionAuthenticate: IWalletKitEngine[\"rejectSessionAuthenticate\"] = async (\n params,\n ) => {\n return await this.signClient.rejectSessionAuthenticate(params);\n };\n\n public formatAuthMessage: IWalletKitEngine[\"formatAuthMessage\"] = (params) => {\n return this.signClient.formatAuthMessage(params);\n };\n\n // Push //\n public registerDeviceToken: IWalletKitEngine[\"registerDeviceToken\"] = (params) => {\n return this.client.core.echoClient.registerDeviceToken(params);\n };\n\n // ---------- public events ----------------------------------------------- //\n public on: IWalletKitEngine[\"on\"] = (name, listener) => {\n this.setEvent(name, \"off\");\n this.setEvent(name, \"on\");\n return this.client.events.on(name, listener);\n };\n\n public once: IWalletKitEngine[\"once\"] = (name, listener) => {\n this.setEvent(name, \"off\");\n this.setEvent(name, \"once\");\n return this.client.events.once(name, listener);\n };\n\n public off: IWalletKitEngine[\"off\"] = (name, listener) => {\n this.setEvent(name, \"off\");\n return this.client.events.off(name, listener);\n };\n\n public removeListener: IWalletKitEngine[\"removeListener\"] = (name, listener) => {\n this.setEvent(name, \"removeListener\");\n return this.client.events.removeListener(name, listener);\n };\n\n // Chain Abstraction //\n public prepareFulfilment: IWalletKitEngine[\"prepareFulfilment\"] = async (params) => {\n return await this.chainAbstraction.prepareFulfilment(params);\n };\n\n public fulfilmentStatus: IWalletKitEngine[\"fulfilmentStatus\"] = async (params) => {\n return await this.chainAbstraction.fulfilmentStatus(params);\n };\n\n public estimateFees: IWalletKitEngine[\"estimateFees\"] = async (params) => {\n return await this.chainAbstraction.estimateFees(params);\n };\n\n public getERC20Balance: IWalletKitEngine[\"getERC20Balance\"] = async (params) => {\n return await this.chainAbstraction.getERC20Balance(params);\n };\n\n public getFulfilmentDetails: IWalletKitEngine[\"getFulfilmentDetails\"] = async (params) => {\n return await this.chainAbstraction.getFulfilmentDetails(params);\n };\n\n // ---------- Private ----------------------------------------------- //\n\n private onSessionRequest = (event: WalletKitTypes.SessionRequest) => {\n this.client.events.emit(\"session_request\", event);\n };\n\n private onSessionProposal = (event: WalletKitTypes.SessionProposal) => {\n this.client.events.emit(\"session_proposal\", event);\n };\n\n private onSessionDelete = (event: WalletKitTypes.SessionDelete) => {\n this.client.events.emit(\"session_delete\", event);\n };\n\n private onProposalExpire = (event: WalletKitTypes.ProposalExpire) => {\n this.client.events.emit(\"proposal_expire\", event);\n };\n\n private onSessionRequestExpire = (event: WalletKitTypes.SessionRequestExpire) => {\n this.client.events.emit(\"session_request_expire\", event);\n };\n\n private onSessionRequestAuthenticate = (event: WalletKitTypes.SessionAuthenticate) => {\n this.client.events.emit(\"session_authenticate\", event);\n };\n\n private setEvent = (\n event: WalletKitTypes.Event,\n action: \"on\" | \"off\" | \"once\" | \"removeListener\",\n ) => {\n switch (event) {\n case \"session_request\":\n this.signClient.events[action](\"session_request\", this.onSessionRequest);\n break;\n case \"session_proposal\":\n this.signClient.events[action](\"session_proposal\", this.onSessionProposal);\n break;\n case \"session_delete\":\n this.signClient.events[action](\"session_delete\", this.onSessionDelete);\n break;\n case \"proposal_expire\":\n this.signClient.events[action](\"proposal_expire\", this.onProposalExpire);\n break;\n case \"session_request_expire\":\n this.signClient.events[action](\"session_request_expire\", this.onSessionRequestExpire);\n break;\n case \"session_authenticate\":\n this.signClient.events[action](\"session_authenticate\", this.onSessionRequestAuthenticate);\n break;\n }\n };\n}\n","import { Core } from \"@walletconnect/core\";\nimport { WalletKitTypes } from \"../types\";\nimport { SessionStore } from \"@walletconnect/sign-client\";\n\nexport const Notifications: WalletKitTypes.INotifications = {\n decryptMessage: async (params) => {\n const instance = {\n core: new Core({\n storageOptions: params.storageOptions,\n storage: params.storage,\n }),\n } as any;\n await instance.core.crypto.init();\n const decoded = instance.core.crypto.decode(params.topic, params.encryptedMessage);\n instance.core = null;\n return decoded;\n },\n getMetadata: async (params) => {\n const instances = {\n core: new Core({\n storageOptions: params.storageOptions,\n storage: params.storage,\n }),\n sessionStore: null,\n } as any;\n instances.sessionStore = new SessionStore(instances.core, instances.core.logger);\n await instances.sessionStore.init();\n const session = instances.sessionStore.get(params.topic);\n const metadata = session?.peer.metadata;\n instances.core = null;\n instances.sessionStore = null;\n return metadata;\n },\n};\n","import EventEmitter from \"events\";\nimport { CLIENT_CONTEXT } from \"./constants\";\nimport { Engine } from \"./controllers\";\nimport { IWalletKit, WalletKitTypes } from \"./types\";\nimport { Notifications } from \"./utils\";\n\nexport class WalletKit extends IWalletKit {\n public name: IWalletKit[\"name\"];\n public core: IWalletKit[\"core\"];\n public logger: IWalletKit[\"logger\"];\n public events: IWalletKit[\"events\"] = new EventEmitter();\n public engine: IWalletKit[\"engine\"];\n public metadata: IWalletKit[\"metadata\"];\n public static notifications: WalletKitTypes.INotifications = Notifications;\n public signConfig: IWalletKit[\"signConfig\"];\n\n static async init(opts: WalletKitTypes.Options) {\n const client = new WalletKit(opts);\n await client.initialize();\n\n return client;\n }\n\n constructor(opts: WalletKitTypes.Options) {\n super(opts);\n this.metadata = opts.metadata;\n this.name = opts.name || CLIENT_CONTEXT;\n this.signConfig = opts.signConfig;\n this.core = opts.core;\n this.logger = this.core.logger;\n this.engine = new Engine(this);\n }\n\n // ---------- Events ----------------------------------------------- //\n\n public on: IWalletKit[\"on\"] = (name, listener) => {\n return this.engine.on(name, listener);\n };\n\n public once: IWalletKit[\"once\"] = (name, listener) => {\n return this.engine.once(name, listener);\n };\n\n public off: IWalletKit[\"off\"] = (name, listener) => {\n return this.engine.off(name, listener);\n };\n\n public removeListener: IWalletKit[\"removeListener\"] = (name, listener) => {\n return this.engine.removeListener(name, listener);\n };\n\n // ---------- Engine ----------------------------------------------- //\n\n public pair: IWalletKit[\"pair\"] = async (params) => {\n try {\n return await this.engine.pair(params);\n } catch (error: any) {\n this.logger.error(error.message);\n throw error;\n }\n };\n\n public approveSession: IWalletKit[\"approveSession\"] = async (params) => {\n try {\n return await this.engine.approveSession(params);\n } catch (error: any) {\n this.logger.error(error.message);\n throw error;\n }\n };\n\n public rejectSession: IWalletKit[\"rejectSession\"] = async (params) => {\n try {\n return await this.engine.rejectSession(params);\n } catch (error: any) {\n this.logger.error(error.message);\n throw error;\n }\n };\n\n public updateSession: IWalletKit[\"updateSession\"] = async (params) => {\n try {\n return await this.engine.updateSession(params);\n } catch (error: any) {\n this.logger.error(error.message);\n throw error;\n }\n };\n\n public extendSession: IWalletKit[\"extendSession\"] = async (params) => {\n try {\n return await this.engine.extendSession(params);\n } catch (error: any) {\n this.logger.error(error.message);\n throw error;\n }\n };\n\n public respondSessionRequest: IWalletKit[\"respondSessionRequest\"] = async (params) => {\n try {\n return await this.engine.respondSessionRequest(params);\n } catch (error: any) {\n this.logger.error(error.message);\n throw error;\n }\n };\n\n public disconnectSession: IWalletKit[\"disconnectSession\"] = async (params) => {\n try {\n return await this.engine.disconnectSession(params);\n } catch (error: any) {\n this.logger.error(error.message);\n throw error;\n }\n };\n\n public emitSessionEvent: IWalletKit[\"emitSessionEvent\"] = async (params) => {\n try {\n return await this.engine.emitSessionEvent(params);\n } catch (error: any) {\n this.logger.error(error.message);\n throw error;\n }\n };\n\n public getActiveSessions: IWalletKit[\"getActiveSessions\"] = () => {\n try {\n return this.engine.getActiveSessions();\n } catch (error: any) {\n this.logger.error(error.message);\n throw error;\n }\n };\n\n public getPendingSessionProposals: IWalletKit[\"getPendingSessionProposals\"] = () => {\n try {\n return this.engine.getPendingSessionProposals();\n } catch (error: any) {\n this.logger.error(error.message);\n throw error;\n }\n };\n\n public getPendingSessionRequests: IWalletKit[\"getPendingSessionRequests\"] = () => {\n try {\n return this.engine.getPendingSessionRequests();\n } catch (error: any) {\n this.logger.error(error.message);\n throw error;\n }\n };\n\n public registerDeviceToken: IWalletKit[\"registerDeviceToken\"] = (params) => {\n try {\n return this.engine.registerDeviceToken(params);\n } catch (error: any) {\n this.logger.error(error.message);\n throw error;\n }\n };\n\n public approveSessionAuthenticate: IWalletKit[\"approveSessionAuthenticate\"] = (params) => {\n try {\n return this.engine.approveSessionAuthenticate(params);\n } catch (error: any) {\n this.logger.error(error.message);\n throw error;\n }\n };\n\n public rejectSessionAuthenticate: IWalletKit[\"rejectSessionAuthenticate\"] = (params) => {\n try {\n return this.engine.rejectSessionAuthenticate(params);\n } catch (error: any) {\n this.logger.error(error.message);\n throw error;\n }\n };\n\n public formatAuthMessage: IWalletKit[\"formatAuthMessage\"] = (params) => {\n try {\n return this.engine.formatAuthMessage(params);\n } catch (error: any) {\n this.logger.error(error.message);\n throw error;\n }\n };\n\n public prepareFulfilment: IWalletKit[\"prepareFulfilment\"] = async (params) => {\n try {\n return await this.engine.prepareFulfilment(params);\n } catch (error: any) {\n this.logger.error(error.message);\n throw error;\n }\n };\n\n public fulfilmentStatus: IWalletKit[\"fulfilmentStatus\"] = async (params) => {\n try {\n return await this.engine.fulfilmentStatus(params);\n } catch (error: any) {\n this.logger.error(error.message);\n throw error;\n }\n };\n\n public estimateFees: IWalletKit[\"estimateFees\"] = async (params) => {\n try {\n return await this.engine.estimateFees(params);\n } catch (error: any) {\n this.logger.error(error.message);\n throw error;\n }\n };\n\n public getERC20Balance: IWalletKit[\"getERC20Balance\"] = async (params) => {\n try {\n return await this.engine.getERC20Balance(params);\n } catch (error: any) {\n this.logger.error(error.message);\n throw error;\n }\n };\n\n public getFulfilmentDetails: IWalletKit[\"getFulfilmentDetails\"] = async (params) => {\n try {\n return await this.engine.getFulfilmentDetails(params);\n } catch (error: any) {\n this.logger.error(error.message);\n throw error;\n }\n };\n\n // ---------- Private ----------------------------------------------- //\n\n private async initialize() {\n this.logger.trace(`Initialized`);\n try {\n await this.engine.init();\n this.logger.info(`WalletKit Initialization Success`);\n } catch (error: any) {\n this.logger.info(`WalletKit Initialization Failure`);\n this.logger.error(error.message);\n throw error;\n }\n }\n}\n","import { WalletKit as Client } from \"./client\";\n\nexport * from \"./constants\";\nexport * from \"./types\";\n\nexport const WalletKit = Client;\nexport default Client;\n"],"names":["eventsModule","events","EventEmmiter","opts","client","engine","g","c","u","IChainAbstraction","params","getEnvironment","transaction","result","CAN_FULFIL_STATUS","routes","fulfilmentId","FULFILMENT_STATUS","__spreadProps","__spreadValues","bridgeDetails","fees","routeDetails","initialTransactionDetails","totalFee","ENV_MAP","yttrium","r","IWalletKitEngine","SignClient","sessionProposal","topic","acknowledged","sessions","session","name","listener","event","action","ChainAbstraction","instance","Core","decoded","instances","SessionStore","metadata","_WalletKit","IWalletKit","EventEmitter","error","CLIENT_CONTEXT","Engine","WalletKit","Notifications","Client"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs.js","sources":["../../../node_modules/events/events.js","../src/constants/client.ts","../src/constants/request.ts","../src/constants/chainAbstraction.ts","../src/types/client.ts","../src/types/engine.ts","../src/types/chainAbstraction.ts","../src/controllers/chainAbstraction.ts","../src/controllers/engine.ts","../src/utils/notifications.ts","../src/client.ts","../src/index.ts"],"sourcesContent":["// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","export const PROTOCOL = \"wc\";\nexport const PROTOCOL_VERSION = 2;\nexport const CLIENT_CONTEXT = \"WalletKit\";\n\nexport const CLIENT_STORAGE_PREFIX = `${PROTOCOL}@${PROTOCOL_VERSION}:${CLIENT_CONTEXT}:`;\n\nexport const CLIENT_STORAGE_OPTIONS = {\n database: \":memory:\",\n};\n","export const REQUEST_CONTEXT = \"request\";\n","export const FULFILMENT_STATUS = {\n completed: \"completed\",\n pending: \"pending\",\n error: \"error\",\n} as const;\nexport const CAN_FULFIL_STATUS = {\n not_required: \"not_required\",\n available: \"available\",\n error: \"error\",\n} as const;\n","import EventEmmiter, { EventEmitter } from \"events\";\nimport { ICore, CoreTypes, SignClientTypes } from \"@walletconnect/types\";\nimport { IWalletKitEngine } from \"./engine\";\nimport { Logger } from \"@walletconnect/logger\";\nimport { JsonRpcPayload } from \"@walletconnect/jsonrpc-utils\";\n\nexport declare namespace WalletKitTypes {\n type Event =\n | \"session_proposal\"\n | \"session_request\"\n | \"session_delete\"\n | \"proposal_expire\"\n | \"session_request_expire\"\n | \"session_authenticate\";\n\n interface BaseEventArgs<T = unknown> {\n id: number;\n topic: string;\n params: T;\n }\n\n type SessionRequest = SignClientTypes.EventArguments[\"session_request\"];\n\n type SessionProposal = SignClientTypes.EventArguments[\"session_proposal\"];\n\n type SessionDelete = Omit<BaseEventArgs, \"params\">;\n\n type ProposalExpire = { id: number };\n\n type SessionRequestExpire = { id: number };\n\n type SessionAuthenticate = SignClientTypes.EventArguments[\"session_authenticate\"];\n\n type SignConfig = SignClientTypes.Options[\"signConfig\"];\n interface EventArguments {\n session_proposal: SessionProposal;\n session_request: SessionRequest;\n session_delete: Omit<BaseEventArgs, \"params\">;\n proposal_expire: ProposalExpire;\n session_request_expire: SessionRequestExpire;\n session_authenticate: SessionAuthenticate;\n }\n\n interface Options {\n core: ICore;\n metadata: Metadata;\n name?: string;\n signConfig?: SignConfig;\n }\n\n type Metadata = CoreTypes.Metadata;\n\n interface INotifications {\n decryptMessage: (params: {\n topic: string;\n encryptedMessage: string;\n storageOptions?: CoreTypes.Options[\"storageOptions\"];\n storage?: CoreTypes.Options[\"storage\"];\n }) => Promise<JsonRpcPayload>;\n getMetadata: (params: {\n topic: string;\n storageOptions?: CoreTypes.Options[\"storageOptions\"];\n storage?: CoreTypes.Options[\"storage\"];\n }) => Promise<CoreTypes.Metadata>;\n }\n}\n\nexport abstract class IWalletKitEvents extends EventEmmiter {\n constructor() {\n super();\n }\n\n public abstract emit: <E extends WalletKitTypes.Event>(\n event: E,\n args: WalletKitTypes.EventArguments[E],\n ) => boolean;\n\n public abstract on: <E extends WalletKitTypes.Event>(\n event: E,\n listener: (args: WalletKitTypes.EventArguments[E]) => any,\n ) => this;\n\n public abstract once: <E extends WalletKitTypes.Event>(\n event: E,\n listener: (args: WalletKitTypes.EventArguments[E]) => any,\n ) => this;\n\n public abstract off: <E extends WalletKitTypes.Event>(\n event: E,\n listener: (args: WalletKitTypes.EventArguments[E]) => any,\n ) => this;\n\n public abstract removeListener: <E extends WalletKitTypes.Event>(\n event: E,\n listener: (args: WalletKitTypes.EventArguments[E]) => any,\n ) => this;\n}\n\nexport abstract class IWalletKit {\n public abstract readonly name: string;\n public abstract engine: IWalletKitEngine;\n public abstract events: EventEmitter;\n public abstract logger: Logger;\n public abstract core: ICore;\n public abstract metadata: WalletKitTypes.Metadata;\n public abstract signConfig?: WalletKitTypes.SignConfig;\n\n constructor(public opts: WalletKitTypes.Options) {}\n\n // ---------- Public Methods ----------------------------------------------- //\n\n public abstract pair: IWalletKitEngine[\"pair\"];\n\n // sign //\n public abstract approveSession: IWalletKitEngine[\"approveSession\"];\n public abstract rejectSession: IWalletKitEngine[\"rejectSession\"];\n public abstract updateSession: IWalletKitEngine[\"updateSession\"];\n public abstract extendSession: IWalletKitEngine[\"extendSession\"];\n public abstract respondSessionRequest: IWalletKitEngine[\"respondSessionRequest\"];\n public abstract disconnectSession: IWalletKitEngine[\"disconnectSession\"];\n public abstract emitSessionEvent: IWalletKitEngine[\"emitSessionEvent\"];\n public abstract getActiveSessions: IWalletKitEngine[\"getActiveSessions\"];\n public abstract getPendingSessionProposals: IWalletKitEngine[\"getPendingSessionProposals\"];\n public abstract getPendingSessionRequests: IWalletKitEngine[\"getPendingSessionRequests\"];\n // push\n public abstract registerDeviceToken: IWalletKitEngine[\"registerDeviceToken\"];\n // multi chain auth //\n public abstract approveSessionAuthenticate: IWalletKitEngine[\"approveSessionAuthenticate\"];\n public abstract formatAuthMessage: IWalletKitEngine[\"formatAuthMessage\"];\n public abstract rejectSessionAuthenticate: IWalletKitEngine[\"rejectSessionAuthenticate\"];\n\n // chain abstraction //\n public abstract prepareFulfilment: IWalletKitEngine[\"prepareFulfilment\"];\n public abstract fulfilmentStatus: IWalletKitEngine[\"fulfilmentStatus\"];\n public abstract estimateFees: IWalletKitEngine[\"estimateFees\"];\n public abstract getERC20Balance: IWalletKitEngine[\"getERC20Balance\"];\n public abstract getFulfilmentDetails: IWalletKitEngine[\"getFulfilmentDetails\"];\n\n // ---------- Event Handlers ----------------------------------------------- //\n public abstract on: <E extends WalletKitTypes.Event>(\n event: E,\n listener: (args: WalletKitTypes.EventArguments[E]) => void,\n ) => EventEmitter;\n\n public abstract once: <E extends WalletKitTypes.Event>(\n event: E,\n listener: (args: WalletKitTypes.EventArguments[E]) => void,\n ) => EventEmitter;\n\n public abstract off: <E extends WalletKitTypes.Event>(\n event: E,\n listener: (args: WalletKitTypes.EventArguments[E]) => void,\n ) => EventEmitter;\n\n public abstract removeListener: <E extends WalletKitTypes.Event>(\n event: E,\n listener: (args: WalletKitTypes.EventArguments[E]) => void,\n ) => EventEmitter;\n}\n","import { ErrorResponse, JsonRpcResponse } from \"@walletconnect/jsonrpc-utils\";\nimport {\n ISignClient,\n PendingRequestTypes,\n ProposalTypes,\n SessionTypes,\n EchoClientTypes,\n AuthTypes,\n} from \"@walletconnect/types\";\nimport { IWalletKit, WalletKitTypes } from \"./client\";\nimport { IChainAbstraction } from \"./chainAbstraction\";\nimport EventEmitter from \"events\";\n\nexport abstract class IWalletKitEngine {\n public abstract signClient: ISignClient;\n public abstract chainAbstraction: IChainAbstraction;\n\n constructor(public client: IWalletKit) {}\n // ---------- Public Methods ------------------------------------------------- //\n public abstract init(): Promise<void>;\n\n public abstract pair(params: { uri: string; activatePairing?: boolean }): Promise<void>;\n\n // ---------- Sign ------------------------------------------------- //\n // approve a session proposal (SIGN)\n public abstract approveSession(params: {\n id: number;\n namespaces: Record<string, SessionTypes.Namespace>;\n sessionProperties?: ProposalTypes.SessionProperties;\n sessionConfig?: SessionTypes.SessionConfig;\n relayProtocol?: string;\n }): Promise<SessionTypes.Struct>;\n\n // reject a session proposal (SIGN)\n public abstract rejectSession(params: {\n // proposerPublicKey: string;\n id: number;\n reason: ErrorResponse;\n }): Promise<void>;\n\n // update session namespaces (SIGN)\n public abstract updateSession(params: {\n topic: string;\n namespaces: SessionTypes.Namespaces;\n }): Promise<{ acknowledged: () => Promise<void> }>;\n\n // update session expiry (SIGN)\n public abstract extendSession(params: {\n topic: string;\n }): Promise<{ acknowledged: () => Promise<void> }>;\n\n // respond JSON-RPC request (SIGN)\n public abstract respondSessionRequest(params: {\n topic: string;\n response: JsonRpcResponse;\n }): Promise<void>;\n\n // emit session events (SIGN)\n public abstract emitSessionEvent(params: {\n topic: string;\n event: any; //SessionEvent;\n chainId: string;\n }): Promise<void>;\n\n // disconnect a session (SIGN)\n public abstract disconnectSession(params: {\n topic: string;\n reason: ErrorResponse;\n }): Promise<void>;\n\n // query all active sessions (SIGN)\n public abstract getActiveSessions(): Record<string, SessionTypes.Struct>;\n\n // query all pending session requests (SIGN)\n public abstract getPendingSessionProposals(): Record<number, ProposalTypes.Struct>;\n\n // query all pending session requests (SIGN)\n public abstract getPendingSessionRequests(): PendingRequestTypes.Struct[];\n\n // ---------- Multi chain Auth ------------------------------------------------- //\n\n public abstract approveSessionAuthenticate(\n params: AuthTypes.ApproveSessionAuthenticateParams,\n ): Promise<{ session: SessionTypes.Struct | undefined }>;\n\n public abstract formatAuthMessage: (params: {\n request: AuthTypes.BaseAuthRequestParams;\n iss: string;\n }) => string;\n\n public abstract rejectSessionAuthenticate(params: {\n id: number;\n reason: ErrorResponse;\n }): Promise<void>;\n\n // ---------- Push ------------------------------------------------- //\n public abstract registerDeviceToken(\n params: EchoClientTypes.RegisterDeviceTokenParams,\n ): Promise<void>;\n\n // ---------- Chain Abstraction ------------------------------------ //\n\n public abstract prepareFulfilment: IChainAbstraction[\"prepareFulfilment\"];\n\n public abstract fulfilmentStatus: IChainAbstraction[\"fulfilmentStatus\"];\n\n public abstract estimateFees: IChainAbstraction[\"estimateFees\"];\n\n public abstract getERC20Balance: IChainAbstraction[\"getERC20Balance\"];\n\n public abstract getFulfilmentDetails: IChainAbstraction[\"getFulfilmentDetails\"];\n\n // ---------- Event Handlers ----------------------------------------------- //\n public abstract on: <E extends WalletKitTypes.Event>(\n event: E,\n listener: (args: WalletKitTypes.EventArguments[E]) => void,\n ) => EventEmitter;\n\n public abstract once: <E extends WalletKitTypes.Event>(\n event: E,\n listener: (args: WalletKitTypes.EventArguments[E]) => void,\n ) => EventEmitter;\n\n public abstract off: <E extends WalletKitTypes.Event>(\n event: E,\n listener: (args: WalletKitTypes.EventArguments[E]) => void,\n ) => EventEmitter;\n\n public abstract removeListener: <E extends WalletKitTypes.Event>(\n event: E,\n listener: (args: WalletKitTypes.EventArguments[E]) => void,\n ) => EventEmitter;\n}\n","import { IWalletKitEngine } from \"./engine\";\n\nexport declare namespace ChainAbstractionTypes {\n type InitialTransaction = {\n from: string;\n to: string;\n data: string;\n chainId: string;\n };\n\n type Transaction = {\n from: string;\n to: string;\n value: string;\n chainId: string;\n gasLimit: string;\n input: string;\n nonce: string;\n maxFeePerGas: string;\n maxPriorityFeePerGas: string;\n };\n\n type InitialTransactionMetadata = {\n symbol: string;\n amount: string;\n decimals: number;\n tokenContract: string;\n transferTo: string;\n };\n\n type FulfilmentStatusResponse = {\n createdAt: number;\n } & (\n | {\n status: \"completed\";\n }\n | { status: \"pending\"; checkIn: number }\n );\n\n type FulfilmentStatusHandlerResponse = {\n createdAt: number;\n } & (\n | {\n status: \"completed\";\n }\n | { status: \"pending\"; checkIn: number }\n | { status: \"error\"; reason: string }\n );\n\n type PrepareFulfilmentResponse =\n | {\n status: \"not_required\";\n }\n | {\n status: \"available\";\n data: {\n fulfilmentId: string;\n checkIn: number;\n transactions: Transaction[];\n funding: FundingFrom[];\n initialTransaction: Transaction;\n initialTransactionMetadata: InitialTransactionMetadata;\n };\n }\n | {\n status: \"error\";\n reason: string;\n };\n\n type FundingFrom = {\n tokenContract: string;\n amount: string;\n chainId: string;\n symbol: string;\n };\n\n type PrepareFulfilmentHandlerResult =\n | {\n status: \"error\";\n reason: string;\n }\n | {\n status: \"not_required\";\n }\n | {\n status: \"available\";\n data: {\n orchestrationId: string;\n checkIn: number;\n metadata: {\n fundingFrom: FundingFrom[];\n initialTransaction: InitialTransactionMetadata;\n };\n transactions: Transaction[];\n initialTransaction: Transaction;\n };\n };\n\n type EstimateFeesResponse = {\n maxFeePerGas: string;\n maxPriorityFeePerGas: string;\n };\n\n type ERC20BalanceResponse = {\n balance: string;\n };\n\n type TotalFee = {\n symbol: string;\n amount: string;\n unit: number;\n formatted: string;\n formattedAlt: string;\n };\n\n type TransactionFee = {\n fee: TotalFee;\n localFee: TotalFee;\n };\n\n type TransactionDetails = {\n transaction: Transaction;\n eip1559: EstimateFeesResponse;\n transactionFee: TransactionFee;\n };\n\n type FulfilmentDetailsResponse = {\n routeDetails: TransactionDetails[];\n initialTransactionDetails: TransactionDetails;\n bridgeDetails: TransactionFee[];\n totalFee: TotalFee;\n };\n}\nexport abstract class IChainAbstraction {\n constructor(public engine: IWalletKitEngine) {}\n\n public abstract prepareFulfilment(params: {\n transaction: ChainAbstractionTypes.InitialTransaction;\n }): Promise<ChainAbstractionTypes.PrepareFulfilmentResponse>;\n\n public abstract fulfilmentStatus(params: {\n fulfilmentId: string;\n }): Promise<ChainAbstractionTypes.FulfilmentStatusResponse>;\n\n public abstract estimateFees(params: {\n chainId: string;\n }): Promise<ChainAbstractionTypes.EstimateFeesResponse>;\n\n public abstract getERC20Balance(params: {\n chainId: string;\n tokenAddress: string;\n ownerAddress: string;\n }): Promise<ChainAbstractionTypes.ERC20BalanceResponse>;\n\n public abstract getFulfilmentDetails(params: {\n fulfilmentId: string;\n }): Promise<ChainAbstractionTypes.FulfilmentDetailsResponse>;\n}\n","/* eslint-disable no-console */\nimport { ENV_MAP, getEnvironment } from \"@walletconnect/utils\";\nimport { ChainAbstractionTypes, IChainAbstraction, IWalletKitEngine } from \"../types\";\nimport { FULFILMENT_STATUS, CAN_FULFIL_STATUS } from \"../constants\";\n\nexport class ChainAbstraction extends IChainAbstraction {\n private prepareFulfilmentHandler: any;\n private fulfilmentStatusHandler: any;\n private estimateFeesHandler: any;\n private getERC20BalanceHandler: any;\n private getFulfilmentDetailsHandler: any;\n\n private projectId: string;\n\n constructor(public engine: IWalletKitEngine) {\n super(engine);\n this.loadHandlers();\n this.projectId = this.engine.client.core.projectId || \"\";\n }\n\n public prepareFulfilment: IChainAbstraction[\"prepareFulfilment\"] = async (params) => {\n console.log(\"prepareFulfilment\", params);\n if (!this.prepareFulfilmentHandler) {\n throw new Error(`prepareFulfilmentHandler not found for environment: '${getEnvironment()}'`);\n }\n\n const { transaction } = params;\n\n const result = (await this.prepareFulfilmentHandler({\n transaction,\n projectId: this.projectId,\n })) as ChainAbstractionTypes.PrepareFulfilmentHandlerResult;\n console.log(\"prepareFulfilment processing result..\", result);\n switch (result.status) {\n case CAN_FULFIL_STATUS.error:\n return { status: CAN_FULFIL_STATUS.error, reason: result.reason };\n case CAN_FULFIL_STATUS.not_required:\n return { status: CAN_FULFIL_STATUS.not_required };\n case CAN_FULFIL_STATUS.available:\n // eslint-disable-next-line no-case-declarations\n const routes = result.data;\n return {\n status: CAN_FULFIL_STATUS.available,\n data: {\n fulfilmentId: routes.orchestrationId,\n checkIn: routes.checkIn,\n transactions: routes.transactions,\n funding: routes.metadata.fundingFrom,\n initialTransaction: routes.initialTransaction,\n initialTransactionMetadata: routes.metadata.initialTransaction,\n },\n };\n default:\n throw new Error(`Invalid prepareFulfilment status: ${JSON.stringify(result)}`);\n }\n };\n\n public fulfilmentStatus: IChainAbstraction[\"fulfilmentStatus\"] = async (params) => {\n if (!this.fulfilmentStatusHandler) {\n throw new Error(`fulfilmentStatusHandler not found for environment: '${getEnvironment()}'`);\n }\n\n const { fulfilmentId } = params;\n\n console.log(\"fulfilmentStatus\", params);\n const result = (await this.fulfilmentStatusHandler({\n orchestrationId: fulfilmentId,\n projectId: this.projectId,\n })) as ChainAbstractionTypes.FulfilmentStatusHandlerResponse;\n\n if (result.status === FULFILMENT_STATUS.error) {\n throw new Error(result.reason);\n }\n console.log(\"fulfilmentStatus result\", result);\n return result;\n };\n\n /**\n * TODO: pass projectId to yttrium handlers\n */\n\n public estimateFees: IChainAbstraction[\"estimateFees\"] = async (params) => {\n if (!this.estimateFeesHandler) {\n throw new Error(`estimateFeesHandler not found for environment: '${getEnvironment()}'`);\n }\n const result = await this.estimateFeesHandler({\n ...params,\n projectId: this.projectId,\n });\n\n console.log(\"estimateFees result\", result);\n return result;\n };\n\n public getERC20Balance: IChainAbstraction[\"getERC20Balance\"] = async (params) => {\n if (!this.getERC20BalanceHandler) {\n throw new Error(`getERC20BalanceHandler not found for environment: '${getEnvironment()}'`);\n }\n const result = await this.getERC20BalanceHandler({\n ...params,\n projectId: this.projectId,\n });\n\n console.log(\"getERC20Balance result\", result);\n return result;\n };\n\n public getFulfilmentDetails: IChainAbstraction[\"getFulfilmentDetails\"] = async (params) => {\n if (!this.getFulfilmentDetailsHandler) {\n throw new Error(\n `getFulfilmentDetailsHandler not found for environment: '${getEnvironment()}'`,\n );\n }\n const { fulfilmentId } = params;\n const result = await this.getFulfilmentDetailsHandler({\n ...params,\n orchestrationId: fulfilmentId,\n projectId: this.projectId,\n });\n\n console.log(\"getFulfilmentDetails handler result\", result);\n const bridgeDetails: ChainAbstractionTypes.TransactionFee[] = [];\n\n for (const fees of result.bridge) {\n bridgeDetails.push({\n fee: fees.fee,\n localFee: fees.localFee,\n });\n }\n\n const routeDetails: ChainAbstractionTypes.TransactionDetails[] = [];\n\n for (const transaction of result.route) {\n routeDetails.push({\n transaction: transaction.transaction,\n eip1559: transaction.estimate,\n transactionFee: transaction.fee,\n });\n }\n\n const initialTransactionDetails: ChainAbstractionTypes.TransactionDetails = {\n transaction: result.initial.transaction,\n eip1559: result.initial.estimate,\n transactionFee: result.initial.fee,\n };\n\n const totalFee: ChainAbstractionTypes.TotalFee = result.localTotal;\n\n console.log(\"getFulfilmentDetails parsed result\", {\n routeDetails,\n initialTransactionDetails,\n bridgeDetails,\n totalFee,\n });\n\n return {\n routeDetails,\n initialTransactionDetails,\n bridgeDetails,\n totalFee,\n };\n };\n\n private loadHandlers = () => {\n const env = getEnvironment();\n switch (env) {\n case ENV_MAP.reactNative:\n return this.ReactNative();\n case ENV_MAP.browser:\n return this.Browser();\n case ENV_MAP.node:\n return this.Node();\n }\n };\n\n private ReactNative = () => {\n const yttrium = (global as any)?.yttrium;\n if (!yttrium) {\n console.warn(\"React Native Yttrium not found in global scope\");\n return;\n }\n this.prepareFulfilmentHandler = async (params: any) =>\n this.parseResult(await yttrium.prepare(params));\n this.fulfilmentStatusHandler = async (params: any) =>\n this.parseResult(await yttrium.status(params));\n this.estimateFeesHandler = async (params: any) =>\n this.parseResult(await yttrium.estimateFees(params));\n this.getERC20BalanceHandler = async (params: any) =>\n this.parseResult(await yttrium.getERC20Balance(params));\n this.getFulfilmentDetailsHandler = async (params: any) =>\n this.parseResult(await yttrium.getBridgeDetails(params));\n };\n\n private Browser = () => {\n console.warn(\"Yttrium not available in browser environment\");\n };\n\n private Node = () => {\n const yttrium = (global as any)?.yttrium;\n if (!yttrium) {\n console.warn(\"Yttrium not available in node environment\");\n }\n\n this.prepareFulfilmentHandler = async (params: any) =>\n this.parseResult(await yttrium.prepare(params));\n this.fulfilmentStatusHandler = async (params: any) =>\n this.parseResult(await yttrium.status(params));\n this.estimateFeesHandler = async (params: any) =>\n this.parseResult(await yttrium.estimateFees(params));\n this.getERC20BalanceHandler = async (params: any) =>\n this.parseResult(await yttrium.getERC20Balance(params));\n this.getFulfilmentDetailsHandler = async (params: any) =>\n this.parseResult(await yttrium.getBridgeDetails(params));\n };\n\n private parseResult = (result: any) => {\n if (typeof result === \"undefined\") return;\n\n // iOS returns parsed JSON object, while Android returns stringified\n if (typeof result === \"string\") {\n try {\n return JSON.parse(result);\n } catch (e) {}\n }\n return result;\n };\n}\n","import { SignClient } from \"@walletconnect/sign-client\";\nimport { ISignClient, SessionTypes } from \"@walletconnect/types\";\nimport { IWalletKitEngine, WalletKitTypes } from \"../types\";\nimport { ChainAbstraction } from \"./chainAbstraction\";\n\nexport class Engine extends IWalletKitEngine {\n public signClient: ISignClient;\n public chainAbstraction: ChainAbstraction;\n\n constructor(client: IWalletKitEngine[\"client\"]) {\n super(client);\n // initialized in init()\n this.signClient = {} as any;\n this.chainAbstraction = new ChainAbstraction(this);\n }\n\n public init = async () => {\n this.signClient = await SignClient.init({\n core: this.client.core,\n metadata: this.client.metadata,\n signConfig: this.client.signConfig,\n });\n };\n\n public pair: IWalletKitEngine[\"pair\"] = async (params) => {\n await this.client.core.pairing.pair(params);\n };\n\n // Sign //\n public approveSession: IWalletKitEngine[\"approveSession\"] = async (sessionProposal) => {\n const { topic, acknowledged } = await this.signClient.approve({\n ...sessionProposal,\n id: sessionProposal.id,\n namespaces: sessionProposal.namespaces,\n sessionProperties: sessionProposal.sessionProperties,\n sessionConfig: sessionProposal.sessionConfig,\n });\n await acknowledged();\n return this.signClient.session.get(topic);\n };\n\n public rejectSession: IWalletKitEngine[\"rejectSession\"] = async (params) => {\n return await this.signClient.reject(params);\n };\n\n public updateSession: IWalletKitEngine[\"updateSession\"] = async (params) => {\n return await this.signClient.update(params);\n };\n\n public extendSession: IWalletKitEngine[\"extendSession\"] = async (params) => {\n return await this.signClient.extend(params);\n };\n\n public respondSessionRequest: IWalletKitEngine[\"respondSessionRequest\"] = async (params) => {\n const result = await this.signClient.respond(params);\n return result;\n };\n\n public disconnectSession: IWalletKitEngine[\"disconnectSession\"] = async (params) => {\n return await this.signClient.disconnect(params);\n };\n\n public emitSessionEvent: IWalletKitEngine[\"emitSessionEvent\"] = async (params) => {\n return await this.signClient.emit(params);\n };\n\n public getActiveSessions: IWalletKitEngine[\"getActiveSessions\"] = () => {\n const sessions = this.signClient.session.getAll();\n return sessions.reduce((sessions: Record<string, SessionTypes.Struct>, session) => {\n sessions[session.topic] = session;\n return sessions;\n }, {});\n };\n\n public getPendingSessionProposals: IWalletKitEngine[\"getPendingSessionProposals\"] = () => {\n return this.signClient.proposal.getAll();\n };\n\n public getPendingSessionRequests: IWalletKitEngine[\"getPendingSessionRequests\"] = () => {\n return this.signClient.getPendingSessionRequests();\n };\n\n // Multi chain Auth //\n public approveSessionAuthenticate: IWalletKitEngine[\"approveSessionAuthenticate\"] = async (\n params,\n ) => {\n return await this.signClient.approveSessionAuthenticate(params);\n };\n\n public rejectSessionAuthenticate: IWalletKitEngine[\"rejectSessionAuthenticate\"] = async (\n params,\n ) => {\n return await this.signClient.rejectSessionAuthenticate(params);\n };\n\n public formatAuthMessage: IWalletKitEngine[\"formatAuthMessage\"] = (params) => {\n return this.signClient.formatAuthMessage(params);\n };\n\n // Push //\n public registerDeviceToken: IWalletKitEngine[\"registerDeviceToken\"] = (params) => {\n return this.client.core.echoClient.registerDeviceToken(params);\n };\n\n // ---------- public events ----------------------------------------------- //\n public on: IWalletKitEngine[\"on\"] = (name, listener) => {\n this.setEvent(name, \"off\");\n this.setEvent(name, \"on\");\n return this.client.events.on(name, listener);\n };\n\n public once: IWalletKitEngine[\"once\"] = (name, listener) => {\n this.setEvent(name, \"off\");\n this.setEvent(name, \"once\");\n return this.client.events.once(name, listener);\n };\n\n public off: IWalletKitEngine[\"off\"] = (name, listener) => {\n this.setEvent(name, \"off\");\n return this.client.events.off(name, listener);\n };\n\n public removeListener: IWalletKitEngine[\"removeListener\"] = (name, listener) => {\n this.setEvent(name, \"removeListener\");\n return this.client.events.removeListener(name, listener);\n };\n\n // Chain Abstraction //\n public prepareFulfilment: IWalletKitEngine[\"prepareFulfilment\"] = async (params) => {\n return await this.chainAbstraction.prepareFulfilment(params);\n };\n\n public fulfilmentStatus: IWalletKitEngine[\"fulfilmentStatus\"] = async (params) => {\n return await this.chainAbstraction.fulfilmentStatus(params);\n };\n\n public estimateFees: IWalletKitEngine[\"estimateFees\"] = async (params) => {\n return await this.chainAbstraction.estimateFees(params);\n };\n\n public getERC20Balance: IWalletKitEngine[\"getERC20Balance\"] = async (params) => {\n return await this.chainAbstraction.getERC20Balance(params);\n };\n\n public getFulfilmentDetails: IWalletKitEngine[\"getFulfilmentDetails\"] = async (params) => {\n return await this.chainAbstraction.getFulfilmentDetails(params);\n };\n\n // ---------- Private ----------------------------------------------- //\n\n private onSessionRequest = (event: WalletKitTypes.SessionRequest) => {\n this.client.events.emit(\"session_request\", event);\n };\n\n private onSessionProposal = (event: WalletKitTypes.SessionProposal) => {\n this.client.events.emit(\"session_proposal\", event);\n };\n\n private onSessionDelete = (event: WalletKitTypes.SessionDelete) => {\n this.client.events.emit(\"session_delete\", event);\n };\n\n private onProposalExpire = (event: WalletKitTypes.ProposalExpire) => {\n this.client.events.emit(\"proposal_expire\", event);\n };\n\n private onSessionRequestExpire = (event: WalletKitTypes.SessionRequestExpire) => {\n this.client.events.emit(\"session_request_expire\", event);\n };\n\n private onSessionRequestAuthenticate = (event: WalletKitTypes.SessionAuthenticate) => {\n this.client.events.emit(\"session_authenticate\", event);\n };\n\n private setEvent = (\n event: WalletKitTypes.Event,\n action: \"on\" | \"off\" | \"once\" | \"removeListener\",\n ) => {\n switch (event) {\n case \"session_request\":\n this.signClient.events[action](\"session_request\", this.onSessionRequest);\n break;\n case \"session_proposal\":\n this.signClient.events[action](\"session_proposal\", this.onSessionProposal);\n break;\n case \"session_delete\":\n this.signClient.events[action](\"session_delete\", this.onSessionDelete);\n break;\n case \"proposal_expire\":\n this.signClient.events[action](\"proposal_expire\", this.onProposalExpire);\n break;\n case \"session_request_expire\":\n this.signClient.events[action](\"session_request_expire\", this.onSessionRequestExpire);\n break;\n case \"session_authenticate\":\n this.signClient.events[action](\"session_authenticate\", this.onSessionRequestAuthenticate);\n break;\n }\n };\n}\n","import { Core } from \"@walletconnect/core\";\nimport { WalletKitTypes } from \"../types\";\nimport { SessionStore } from \"@walletconnect/sign-client\";\n\nexport const Notifications: WalletKitTypes.INotifications = {\n decryptMessage: async (params) => {\n const instance = {\n core: new Core({\n storageOptions: params.storageOptions,\n storage: params.storage,\n }),\n } as any;\n await instance.core.crypto.init();\n const decoded = instance.core.crypto.decode(params.topic, params.encryptedMessage);\n instance.core = null;\n return decoded;\n },\n getMetadata: async (params) => {\n const instances = {\n core: new Core({\n storageOptions: params.storageOptions,\n storage: params.storage,\n }),\n sessionStore: null,\n } as any;\n instances.sessionStore = new SessionStore(instances.core, instances.core.logger);\n await instances.sessionStore.init();\n const session = instances.sessionStore.get(params.topic);\n const metadata = session?.peer.metadata;\n instances.core = null;\n instances.sessionStore = null;\n return metadata;\n },\n};\n","import EventEmitter from \"events\";\nimport { CLIENT_CONTEXT } from \"./constants\";\nimport { Engine } from \"./controllers\";\nimport { IWalletKit, WalletKitTypes } from \"./types\";\nimport { Notifications } from \"./utils\";\n\nexport class WalletKit extends IWalletKit {\n public name: IWalletKit[\"name\"];\n public core: IWalletKit[\"core\"];\n public logger: IWalletKit[\"logger\"];\n public events: IWalletKit[\"events\"] = new EventEmitter();\n public engine: IWalletKit[\"engine\"];\n public metadata: IWalletKit[\"metadata\"];\n public static notifications: WalletKitTypes.INotifications = Notifications;\n public signConfig: IWalletKit[\"signConfig\"];\n\n static async init(opts: WalletKitTypes.Options) {\n const client = new WalletKit(opts);\n await client.initialize();\n\n return client;\n }\n\n constructor(opts: WalletKitTypes.Options) {\n super(opts);\n this.metadata = opts.metadata;\n this.name = opts.name || CLIENT_CONTEXT;\n this.signConfig = opts.signConfig;\n this.core = opts.core;\n this.logger = this.core.logger;\n this.engine = new Engine(this);\n }\n\n // ---------- Events ----------------------------------------------- //\n\n public on: IWalletKit[\"on\"] = (name, listener) => {\n return this.engine.on(name, listener);\n };\n\n public once: IWalletKit[\"once\"] = (name, listener) => {\n return this.engine.once(name, listener);\n };\n\n public off: IWalletKit[\"off\"] = (name, listener) => {\n return this.engine.off(name, listener);\n };\n\n public removeListener: IWalletKit[\"removeListener\"] = (name, listener) => {\n return this.engine.removeListener(name, listener);\n };\n\n // ---------- Engine ----------------------------------------------- //\n\n public pair: IWalletKit[\"pair\"] = async (params) => {\n try {\n return await this.engine.pair(params);\n } catch (error: any) {\n this.logger.error(error.message);\n throw error;\n }\n };\n\n public approveSession: IWalletKit[\"approveSession\"] = async (params) => {\n try {\n return await this.engine.approveSession(params);\n } catch (error: any) {\n this.logger.error(error.message);\n throw error;\n }\n };\n\n public rejectSession: IWalletKit[\"rejectSession\"] = async (params) => {\n try {\n return await this.engine.rejectSession(params);\n } catch (error: any) {\n this.logger.error(error.message);\n throw error;\n }\n };\n\n public updateSession: IWalletKit[\"updateSession\"] = async (params) => {\n try {\n return await this.engine.updateSession(params);\n } catch (error: any) {\n this.logger.error(error.message);\n throw error;\n }\n };\n\n public extendSession: IWalletKit[\"extendSession\"] = async (params) => {\n try {\n return await this.engine.extendSession(params);\n } catch (error: any) {\n this.logger.error(error.message);\n throw error;\n }\n };\n\n public respondSessionRequest: IWalletKit[\"respondSessionRequest\"] = async (params) => {\n try {\n return await this.engine.respondSessionRequest(params);\n } catch (error: any) {\n this.logger.error(error.message);\n throw error;\n }\n };\n\n public disconnectSession: IWalletKit[\"disconnectSession\"] = async (params) => {\n try {\n return await this.engine.disconnectSession(params);\n } catch (error: any) {\n this.logger.error(error.message);\n throw error;\n }\n };\n\n public emitSessionEvent: IWalletKit[\"emitSessionEvent\"] = async (params) => {\n try {\n return await this.engine.emitSessionEvent(params);\n } catch (error: any) {\n this.logger.error(error.message);\n throw error;\n }\n };\n\n public getActiveSessions: IWalletKit[\"getActiveSessions\"] = () => {\n try {\n return this.engine.getActiveSessions();\n } catch (error: any) {\n this.logger.error(error.message);\n throw error;\n }\n };\n\n public getPendingSessionProposals: IWalletKit[\"getPendingSessionProposals\"] = () => {\n try {\n return this.engine.getPendingSessionProposals();\n } catch (error: any) {\n this.logger.error(error.message);\n throw error;\n }\n };\n\n public getPendingSessionRequests: IWalletKit[\"getPendingSessionRequests\"] = () => {\n try {\n return this.engine.getPendingSessionRequests();\n } catch (error: any) {\n this.logger.error(error.message);\n throw error;\n }\n };\n\n public registerDeviceToken: IWalletKit[\"registerDeviceToken\"] = (params) => {\n try {\n return this.engine.registerDeviceToken(params);\n } catch (error: any) {\n this.logger.error(error.message);\n throw error;\n }\n };\n\n public approveSessionAuthenticate: IWalletKit[\"approveSessionAuthenticate\"] = (params) => {\n try {\n return this.engine.approveSessionAuthenticate(params);\n } catch (error: any) {\n this.logger.error(error.message);\n throw error;\n }\n };\n\n public rejectSessionAuthenticate: IWalletKit[\"rejectSessionAuthenticate\"] = (params) => {\n try {\n return this.engine.rejectSessionAuthenticate(params);\n } catch (error: any) {\n this.logger.error(error.message);\n throw error;\n }\n };\n\n public formatAuthMessage: IWalletKit[\"formatAuthMessage\"] = (params) => {\n try {\n return this.engine.formatAuthMessage(params);\n } catch (error: any) {\n this.logger.error(error.message);\n throw error;\n }\n };\n\n public prepareFulfilment: IWalletKit[\"prepareFulfilment\"] = async (params) => {\n try {\n return await this.engine.prepareFulfilment(params);\n } catch (error: any) {\n this.logger.error(error.message);\n throw error;\n }\n };\n\n public fulfilmentStatus: IWalletKit[\"fulfilmentStatus\"] = async (params) => {\n try {\n return await this.engine.fulfilmentStatus(params);\n } catch (error: any) {\n this.logger.error(error.message);\n throw error;\n }\n };\n\n public estimateFees: IWalletKit[\"estimateFees\"] = async (params) => {\n try {\n return await this.engine.estimateFees(params);\n } catch (error: any) {\n this.logger.error(error.message);\n throw error;\n }\n };\n\n public getERC20Balance: IWalletKit[\"getERC20Balance\"] = async (params) => {\n try {\n return await this.engine.getERC20Balance(params);\n } catch (error: any) {\n this.logger.error(error.message);\n throw error;\n }\n };\n\n public getFulfilmentDetails: IWalletKit[\"getFulfilmentDetails\"] = async (params) => {\n try {\n return await this.engine.getFulfilmentDetails(params);\n } catch (error: any) {\n this.logger.error(error.message);\n throw error;\n }\n };\n\n // ---------- Private ----------------------------------------------- //\n\n private async initialize() {\n this.logger.trace(`Initialized`);\n try {\n await this.engine.init();\n this.logger.info(`WalletKit Initialization Success`);\n } catch (error: any) {\n this.logger.info(`WalletKit Initialization Failure`);\n this.logger.error(error.message);\n throw error;\n }\n }\n}\n","import { WalletKit as Client } from \"./client\";\n\nexport * from \"./constants\";\nexport * from \"./types\";\n\nexport const WalletKit = Client;\nexport default Client;\n"],"names":["eventsModule","events","EventEmmiter","opts","client","engine","g","c","u","IChainAbstraction","params","getEnvironment","transaction","result","CAN_FULFIL_STATUS","routes","fulfilmentId","FULFILMENT_STATUS","__spreadProps","__spreadValues","bridgeDetails","fees","routeDetails","initialTransactionDetails","totalFee","ENV_MAP","yttrium","r","IWalletKitEngine","SignClient","sessionProposal","topic","acknowledged","sessions","session","name","listener","event","action","ChainAbstraction","instance","Core","decoded","instances","SessionStore","metadata","_WalletKit","IWalletKit","EventEmitter","error","CLIENT_CONTEXT","Engine","WalletKit","Notifications","Client"],"mappings":";;;;;;;;;;AAuBA,IAAI,CAAC,GAAG,OAAO,OAAO,KAAK,QAAQ,GAAG,OAAO,GAAG,KAAI;AACpD,IAAI,YAAY,GAAG,CAAC,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,UAAU;AACrD,IAAI,CAAC,CAAC,KAAK;AACX,IAAI,SAAS,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;AAClD,IAAI,OAAO,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;AACjE,IAAG;AACH;AACA,IAAI,eAAc;AAClB,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,UAAU,EAAE;AAC1C,EAAE,cAAc,GAAG,CAAC,CAAC,QAAO;AAC5B,CAAC,MAAM,IAAI,MAAM,CAAC,qBAAqB,EAAE;AACzC,EAAE,cAAc,GAAG,SAAS,cAAc,CAAC,MAAM,EAAE;AACnD,IAAI,OAAO,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC;AAC7C,OAAO,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC;AACpD,GAAG,CAAC;AACJ,CAAC,MAAM;AACP,EAAE,cAAc,GAAG,SAAS,cAAc,CAAC,MAAM,EAAE;AACnD,IAAI,OAAO,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAC9C,GAAG,CAAC;AACJ,CAAC;AACD;AACA,SAAS,kBAAkB,CAAC,OAAO,EAAE;AACrC,EAAE,IAAI,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACrD,CAAC;AACD;AACA,IAAI,WAAW,GAAG,MAAM,CAAC,KAAK,IAAI,SAAS,WAAW,CAAC,KAAK,EAAE;AAC9D,EAAE,OAAO,KAAK,KAAK,KAAK,CAAC;AACzB,EAAC;AACD;AACA,SAAS,YAAY,GAAG;AACxB,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC;AACDA,MAAc,CAAA,OAAA,GAAG,YAAY,CAAC;AACXC,cAAA,CAAA,IAAA,GAAG,KAAK;AAC3B;AACA;AACA,YAAY,CAAC,YAAY,GAAG,YAAY,CAAC;AACzC;AACA,YAAY,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC;AAC3C,YAAY,CAAC,SAAS,CAAC,YAAY,GAAG,CAAC,CAAC;AACxC,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,CAAC;AACjD;AACA;AACA;AACA,IAAI,mBAAmB,GAAG,EAAE,CAAC;AAC7B;AACA,SAAS,aAAa,CAAC,QAAQ,EAAE;AACjC,EAAE,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AACtC,IAAI,MAAM,IAAI,SAAS,CAAC,kEAAkE,GAAG,OAAO,QAAQ,CAAC,CAAC;AAC9G,GAAG;AACH,CAAC;AACD;AACA,MAAM,CAAC,cAAc,CAAC,YAAY,EAAE,qBAAqB,EAAE;AAC3D,EAAE,UAAU,EAAE,IAAI;AAClB,EAAE,GAAG,EAAE,WAAW;AAClB,IAAI,OAAO,mBAAmB,CAAC;AAC/B,GAAG;AACH,EAAE,GAAG,EAAE,SAAS,GAAG,EAAE;AACrB,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,GAAG,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE;AAChE,MAAM,MAAM,IAAI,UAAU,CAAC,iGAAiG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;AAC1I,KAAK;AACL,IAAI,mBAAmB,GAAG,GAAG,CAAC;AAC9B,GAAG;AACH,CAAC,CAAC,CAAC;AACH;AACA,YAAY,CAAC,IAAI,GAAG,WAAW;AAC/B;AACA,EAAE,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;AAChC,MAAM,IAAI,CAAC,OAAO,KAAK,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE;AAC5D,IAAI,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACvC,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;AAC1B,GAAG;AACH;AACA,EAAE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,SAAS,CAAC;AACvD,CAAC,CAAC;AACF;AACA;AACA;AACA,YAAY,CAAC,SAAS,CAAC,eAAe,GAAG,SAAS,eAAe,CAAC,CAAC,EAAE;AACrE,EAAE,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE;AACxD,IAAI,MAAM,IAAI,UAAU,CAAC,+EAA+E,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;AACpH,GAAG;AACH,EAAE,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;AACzB,EAAE,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AACF;AACA,SAAS,gBAAgB,CAAC,IAAI,EAAE;AAChC,EAAE,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS;AACtC,IAAI,OAAO,YAAY,CAAC,mBAAmB,CAAC;AAC5C,EAAE,OAAO,IAAI,CAAC,aAAa,CAAC;AAC5B,CAAC;AACD;AACA,YAAY,CAAC,SAAS,CAAC,eAAe,GAAG,SAAS,eAAe,GAAG;AACpE,EAAE,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC,CAAC;AACF;AACA,YAAY,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,CAAC,IAAI,EAAE;AAClD,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC;AAChB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACrE,EAAE,IAAI,OAAO,IAAI,IAAI,KAAK,OAAO,CAAC,CAAC;AACnC;AACA,EAAE,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;AAC5B,EAAE,IAAI,MAAM,KAAK,SAAS;AAC1B,IAAI,OAAO,IAAI,OAAO,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;AACtD,OAAO,IAAI,CAAC,OAAO;AACnB,IAAI,OAAO,KAAK,CAAC;AACjB;AACA;AACA,EAAE,IAAI,OAAO,EAAE;AACf,IAAI,IAAI,EAAE,CAAC;AACX,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;AACvB,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACnB,IAAI,IAAI,EAAE,YAAY,KAAK,EAAE;AAC7B;AACA;AACA,MAAM,MAAM,EAAE,CAAC;AACf,KAAK;AACL;AACA,IAAI,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,kBAAkB,IAAI,EAAE,GAAG,IAAI,GAAG,EAAE,CAAC,OAAO,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;AAClF,IAAI,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC;AACrB,IAAI,MAAM,GAAG,CAAC;AACd,GAAG;AACH;AACA,EAAE,IAAI,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAC7B;AACA,EAAE,IAAI,OAAO,KAAK,SAAS;AAC3B,IAAI,OAAO,KAAK,CAAC;AACjB;AACA,EAAE,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE;AACrC,IAAI,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACtC,GAAG,MAAM;AACT,IAAI,IAAI,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;AAC7B,IAAI,IAAI,SAAS,GAAG,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAC7C,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC;AAChC,MAAM,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC7C,GAAG;AACH;AACA,EAAE,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AACF;AACA,SAAS,YAAY,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE;AACvD,EAAE,IAAI,CAAC,CAAC;AACR,EAAE,IAAI,MAAM,CAAC;AACb,EAAE,IAAI,QAAQ,CAAC;AACf;AACA,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;AAC1B;AACA,EAAE,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;AAC1B,EAAE,IAAI,MAAM,KAAK,SAAS,EAAE;AAC5B,IAAI,MAAM,GAAG,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAClD,IAAI,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC;AAC5B,GAAG,MAAM;AACT;AACA;AACA,IAAI,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,EAAE;AAC1C,MAAM,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI;AACrC,kBAAkB,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,CAAC;AACpE;AACA;AACA;AACA,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;AAC9B,KAAK;AACL,IAAI,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAC5B,GAAG;AACH;AACA,EAAE,IAAI,QAAQ,KAAK,SAAS,EAAE;AAC9B;AACA,IAAI,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC;AACvC,IAAI,EAAE,MAAM,CAAC,YAAY,CAAC;AAC1B,GAAG,MAAM;AACT,IAAI,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AACxC;AACA,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC;AAC7B,QAAQ,OAAO,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC9D;AACA,KAAK,MAAM,IAAI,OAAO,EAAE;AACxB,MAAM,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACjC,KAAK,MAAM;AACX,MAAM,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC9B,KAAK;AACL;AACA;AACA,IAAI,CAAC,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACjC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;AAC1D,MAAM,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;AAC7B;AACA;AACA,MAAM,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,8CAA8C;AACtE,0BAA0B,QAAQ,CAAC,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,aAAa;AAC9E,0BAA0B,0CAA0C;AACpE,0BAA0B,gBAAgB,CAAC,CAAC;AAC5C,MAAM,CAAC,CAAC,IAAI,GAAG,6BAA6B,CAAC;AAC7C,MAAM,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC;AACzB,MAAM,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;AACpB,MAAM,CAAC,CAAC,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC;AAChC,MAAM,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC5B,KAAK;AACL,GAAG;AACH;AACA,EAAE,OAAO,MAAM,CAAC;AAChB,CAAC;AACD;AACA,YAAY,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE;AAC1E,EAAE,OAAO,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AACnD,CAAC,CAAC;AACF;AACA,YAAY,CAAC,SAAS,CAAC,EAAE,GAAG,YAAY,CAAC,SAAS,CAAC,WAAW,CAAC;AAC/D;AACA,YAAY,CAAC,SAAS,CAAC,eAAe;AACtC,IAAI,SAAS,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE;AAC7C,MAAM,OAAO,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;AACtD,KAAK,CAAC;AACN;AACA,SAAS,WAAW,GAAG;AACvB,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACnB,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;AACvD,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACtB,IAAI,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;AAC9B,MAAM,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC7C,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AACvD,GAAG;AACH,CAAC;AACD;AACA,SAAS,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;AAC3C,EAAE,IAAI,KAAK,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AAClG,EAAE,IAAI,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxC,EAAE,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC9B,EAAE,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;AACzB,EAAE,OAAO,OAAO,CAAC;AACjB,CAAC;AACD;AACA,YAAY,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE;AAC5D,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;AAC1B,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;AACjD,EAAE,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AACF;AACA,YAAY,CAAC,SAAS,CAAC,mBAAmB;AAC1C,IAAI,SAAS,mBAAmB,CAAC,IAAI,EAAE,QAAQ,EAAE;AACjD,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC;AAC9B,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;AAClE,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK,CAAC;AACN;AACA;AACA,YAAY,CAAC,SAAS,CAAC,cAAc;AACrC,IAAI,SAAS,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE;AAC5C,MAAM,IAAI,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,gBAAgB,CAAC;AACtD;AACA,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC;AAC9B;AACA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;AAC5B,MAAM,IAAI,MAAM,KAAK,SAAS;AAC9B,QAAQ,OAAO,IAAI,CAAC;AACpB;AACA,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAC1B,MAAM,IAAI,IAAI,KAAK,SAAS;AAC5B,QAAQ,OAAO,IAAI,CAAC;AACpB;AACA,MAAM,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE;AAC3D,QAAQ,IAAI,EAAE,IAAI,CAAC,YAAY,KAAK,CAAC;AACrC,UAAU,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC7C,aAAa;AACb,UAAU,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;AAC9B,UAAU,IAAI,MAAM,CAAC,cAAc;AACnC,YAAY,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAC;AACzE,SAAS;AACT,OAAO,MAAM,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE;AAC7C,QAAQ,QAAQ,GAAG,CAAC,CAAC,CAAC;AACtB;AACA,QAAQ,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AAC/C,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,EAAE;AACrE,YAAY,gBAAgB,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AAChD,YAAY,QAAQ,GAAG,CAAC,CAAC;AACzB,YAAY,MAAM;AAClB,WAAW;AACX,SAAS;AACT;AACA,QAAQ,IAAI,QAAQ,GAAG,CAAC;AACxB,UAAU,OAAO,IAAI,CAAC;AACtB;AACA,QAAQ,IAAI,QAAQ,KAAK,CAAC;AAC1B,UAAU,IAAI,CAAC,KAAK,EAAE,CAAC;AACvB,aAAa;AACb,UAAU,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACpC,SAAS;AACT;AACA,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;AAC7B,UAAU,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACjC;AACA,QAAQ,IAAI,MAAM,CAAC,cAAc,KAAK,SAAS;AAC/C,UAAU,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,IAAI,QAAQ,CAAC,CAAC;AAC1E,OAAO;AACP;AACA,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK,CAAC;AACN;AACA,YAAY,CAAC,SAAS,CAAC,GAAG,GAAG,YAAY,CAAC,SAAS,CAAC,cAAc,CAAC;AACnE;AACA,YAAY,CAAC,SAAS,CAAC,kBAAkB;AACzC,IAAI,SAAS,kBAAkB,CAAC,IAAI,EAAE;AACtC,MAAM,IAAI,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;AAC/B;AACA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;AAC5B,MAAM,IAAI,MAAM,KAAK,SAAS;AAC9B,QAAQ,OAAO,IAAI,CAAC;AACpB;AACA;AACA,MAAM,IAAI,MAAM,CAAC,cAAc,KAAK,SAAS,EAAE;AAC/C,QAAQ,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AACpC,UAAU,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC7C,UAAU,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;AAChC,SAAS,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE;AAC/C,UAAU,IAAI,EAAE,IAAI,CAAC,YAAY,KAAK,CAAC;AACvC,YAAY,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC/C;AACA,YAAY,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;AAChC,SAAS;AACT,QAAQ,OAAO,IAAI,CAAC;AACpB,OAAO;AACP;AACA;AACA,MAAM,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AAClC,QAAQ,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACvC,QAAQ,IAAI,GAAG,CAAC;AAChB,QAAQ,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AAC1C,UAAU,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACxB,UAAU,IAAI,GAAG,KAAK,gBAAgB,EAAE,SAAS;AACjD,UAAU,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;AACvC,SAAS;AACT,QAAQ,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;AAClD,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC3C,QAAQ,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;AAC9B,QAAQ,OAAO,IAAI,CAAC;AACpB,OAAO;AACP;AACA,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAC/B;AACA,MAAM,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE;AAC3C,QAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAC7C,OAAO,MAAM,IAAI,SAAS,KAAK,SAAS,EAAE;AAC1C;AACA,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AACpD,UAAU,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,SAAS;AACT,OAAO;AACP;AACA,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK,CAAC;AACN;AACA,SAAS,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;AAC1C,EAAE,IAAI,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;AAC9B;AACA,EAAE,IAAI,MAAM,KAAK,SAAS;AAC1B,IAAI,OAAO,EAAE,CAAC;AACd;AACA,EAAE,IAAI,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAChC,EAAE,IAAI,UAAU,KAAK,SAAS;AAC9B,IAAI,OAAO,EAAE,CAAC;AACd;AACA,EAAE,IAAI,OAAO,UAAU,KAAK,UAAU;AACtC,IAAI,OAAO,MAAM,GAAG,CAAC,UAAU,CAAC,QAAQ,IAAI,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AACvE;AACA,EAAE,OAAO,MAAM;AACf,IAAI,eAAe,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;AAC5E,CAAC;AACD;AACA,YAAY,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,CAAC,IAAI,EAAE;AAC5D,EAAE,OAAO,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACtC,CAAC,CAAC;AACF;AACA,YAAY,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,YAAY,CAAC,IAAI,EAAE;AAClE,EAAE,OAAO,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AACvC,CAAC,CAAC;AACF;AACA,YAAY,CAAC,aAAa,GAAG,SAAS,OAAO,EAAE,IAAI,EAAE;AACrD,EAAE,IAAI,OAAO,OAAO,CAAC,aAAa,KAAK,UAAU,EAAE;AACnD,IAAI,OAAO,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AACvC,GAAG,MAAM;AACT,IAAI,OAAO,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAC7C,GAAG;AACH,CAAC,CAAC;AACF;AACA,YAAY,CAAC,SAAS,CAAC,aAAa,GAAG,aAAa,CAAC;AACrD,SAAS,aAAa,CAAC,IAAI,EAAE;AAC7B,EAAE,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;AAC5B;AACA,EAAE,IAAI,MAAM,KAAK,SAAS,EAAE;AAC5B,IAAI,IAAI,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAClC;AACA,IAAI,IAAI,OAAO,UAAU,KAAK,UAAU,EAAE;AAC1C,MAAM,OAAO,CAAC,CAAC;AACf,KAAK,MAAM,IAAI,UAAU,KAAK,SAAS,EAAE;AACzC,MAAM,OAAO,UAAU,CAAC,MAAM,CAAC;AAC/B,KAAK;AACL,GAAG;AACH;AACA,EAAE,OAAO,CAAC,CAAC;AACX,CAAC;AACD;AACA,YAAY,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,GAAG;AAC1D,EAAE,OAAO,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;AACnE,CAAC,CAAC;AACF;AACA,SAAS,UAAU,CAAC,GAAG,EAAE,CAAC,EAAE;AAC5B,EAAE,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1B,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;AAC5B,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACrB,EAAE,OAAO,IAAI,CAAC;AACd,CAAC;AACD;AACA,SAAS,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE;AAChC,EAAE,OAAO,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE;AACzC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAClC,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AACb,CAAC;AACD;AACA,SAAS,eAAe,CAAC,GAAG,EAAE;AAC9B,EAAE,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAClC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AACvC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;AACvC,GAAG;AACH,EAAE,OAAO,GAAG,CAAC;AACb,CAAC;AACD;AACA,SAAS,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE;AAC7B,EAAE,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM,EAAE;AAChD,IAAI,SAAS,aAAa,CAAC,GAAG,EAAE;AAChC,MAAM,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC7C,MAAM,MAAM,CAAC,GAAG,CAAC,CAAC;AAClB,KAAK;AACL;AACA,IAAI,SAAS,QAAQ,GAAG;AACxB,MAAM,IAAI,OAAO,OAAO,CAAC,cAAc,KAAK,UAAU,EAAE;AACxD,QAAQ,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;AACvD,OAAO;AACP,MAAM,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AACxC,KACA;AACA,IAAI,8BAA8B,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AAC5E,IAAI,IAAI,IAAI,KAAK,OAAO,EAAE;AAC1B,MAAM,6BAA6B,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AAC5E,KAAK;AACL,GAAG,CAAC,CAAC;AACL,CAAC;AACD;AACA,SAAS,6BAA6B,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;AAChE,EAAE,IAAI,OAAO,OAAO,CAAC,EAAE,KAAK,UAAU,EAAE;AACxC,IAAI,8BAA8B,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACrE,GAAG;AACH,CAAC;AACD;AACA,SAAS,8BAA8B,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;AACxE,EAAE,IAAI,OAAO,OAAO,CAAC,EAAE,KAAK,UAAU,EAAE;AACxC,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE;AACpB,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACnC,KAAK,MAAM;AACX,MAAM,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjC,KAAK;AACL,GAAG,MAAM,IAAI,OAAO,OAAO,CAAC,gBAAgB,KAAK,UAAU,EAAE;AAC7D;AACA;AACA,IAAI,OAAO,CAAC,gBAAgB,CAAC,IAAI,EAAE,SAAS,YAAY,CAAC,GAAG,EAAE;AAC9D;AACA;AACA,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE;AACtB,QAAQ,OAAO,CAAC,mBAAmB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;AACxD,OAAO;AACP,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC;AACpB,KAAK,CAAC,CAAC;AACP,GAAG,MAAM;AACT,IAAI,MAAM,IAAI,SAAS,CAAC,qEAAqE,GAAG,OAAO,OAAO,CAAC,CAAC;AAChH,GAAG;AACH;;AChfO,MAAM,QAAW,CAAA,IAAA,CACX,gBAAmB,CAAA,CAAA,CACnB,cAAiB,CAAA,WAAA,CAEjB,qBAAwB,CAAA,CAAA,EAAG,QAAgC,CAAA,GAAA,EAAA,cAAA,CAAA,CAAA,CAAA,CAE3D,sBAAyB,CAAA,CACpC,SAAU,UACZ;;ACRO,MAAM,eAAkB,CAAA;;ACAxB,MAAM,kBAAoB,CAC/B,SAAA,CAAW,WACX,CAAA,OAAA,CAAS,UACT,KAAO,CAAA,OACT,CACa,CAAA,iBAAA,CAAoB,CAC/B,YAAc,CAAA,cAAA,CACd,SAAW,CAAA,WAAA,CACX,MAAO,OACT;;AC0DsB,MAAA,gBAAA,SAAyBC,cAAa,CAC1D,WAAA,EAAc,CACZ,KAAM,GACR,CA0BF,CAEO,MAAe,UAAW,CAS/B,WAAA,CAAmBC,EAA8B,CAA9B,IAAA,CAAA,IAAA,CAAAA,EAA+B,CAmDpD;;ACjJO,MAAe,gBAAiB,CAIrC,WAAA,CAAmBC,EAAoB,CAApB,IAAA,CAAA,MAAA,CAAAA,EAAqB,CAmH1C;;ACCO,MAAe,iBAAkB,CACtC,WAAA,CAAmBC,EAA0B,CAA1B,IAAA,CAAA,MAAA,CAAAA,EAA2B,CAuBhD;;AC5JA,IAAA,CAAA,CAAA,MAAA,CAAA,cAAA,CAAA,CAAA,CAAA,MAAA,CAAA,gBAAA,CAAA,IAAA,CAAA,CAAA,MAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,CAAA,MAAA,CAAA,qBAAA,CAAA,IAAA,CAAA,CAAA,MAAA,CAAA,SAAA,CAAA,cAAA,CAAA,CAAA,CAAA,MAAA,CAAA,SAAA,CAAA,oBAAA,CAAA,IAAAC,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,UAAA,CAAA,CAAA,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA,CAAA,QAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAAC,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,IAAA,IAAA,CAAA,IAAA,CAAA,GAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAAD,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,IAAA,IAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,CAAA,CAAA,CAAAE,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAIa,MAAA,gBAAA,SAAyBC,iBAAkB,CAStD,YAAmBJ,CAA0B,CAAA,CAC3C,KAAMA,CAAAA,CAAM,EADK,IAAAA,CAAAA,MAAAA,CAAAA,CAAAA,CAMnB,IAAO,CAAA,iBAAA,CAA4D,MAAOK,CAAW,EAAA,CAEnF,GADA,OAAA,CAAQ,IAAI,mBAAqBA,CAAAA,CAAM,CACnC,CAAA,CAAC,KAAK,wBACR,CAAA,MAAM,IAAI,KAAA,CAAM,wDAAwDC,oBAAe,EAAA,CAAA,CAAA,CAAI,CAG7F,CAAA,KAAM,CAAE,WAAAC,CAAAA,CAAY,CAAIF,CAAAA,CAAAA,CAElBG,EAAU,MAAM,IAAA,CAAK,wBAAyB,CAAA,CAClD,YAAAD,CACA,CAAA,SAAA,CAAW,IAAK,CAAA,SAClB,CAAC,CAED,CAAA,OADA,OAAQ,CAAA,GAAA,CAAI,wCAAyCC,CAAM,CAAA,CACnDA,CAAO,CAAA,MAAA,EACb,KAAKC,iBAAAA,CAAkB,KACrB,CAAA,OAAO,CAAE,MAAQA,CAAAA,iBAAAA,CAAkB,KAAO,CAAA,MAAA,CAAQD,EAAO,MAAO,CAAA,CAClE,KAAKC,iBAAAA,CAAkB,aACrB,OAAO,CAAE,MAAQA,CAAAA,iBAAAA,CAAkB,YAAa,CAClD,CAAA,KAAKA,iBAAkB,CAAA,SAAA,CAErB,MAAMC,CAASF,CAAAA,CAAAA,CAAO,IACtB,CAAA,OAAO,CACL,MAAQC,CAAAA,iBAAAA,CAAkB,SAC1B,CAAA,IAAA,CAAM,CACJ,YAAcC,CAAAA,CAAAA,CAAO,eACrB,CAAA,OAAA,CAASA,EAAO,OAChB,CAAA,YAAA,CAAcA,CAAO,CAAA,YAAA,CACrB,QAASA,CAAO,CAAA,QAAA,CAAS,WACzB,CAAA,kBAAA,CAAoBA,EAAO,kBAC3B,CAAA,0BAAA,CAA4BA,CAAO,CAAA,QAAA,CAAS,kBAC9C,CACF,CAAA,CACF,QACE,MAAM,IAAI,KAAM,CAAA,CAAA,kCAAA,EAAqC,IAAK,CAAA,SAAA,CAAUF,CAAM,CAAG,CAAA,CAAA,CACjF,CACF,CAAA,CAEA,KAAO,gBAA0D,CAAA,MAAOH,CAAW,EAAA,CACjF,GAAI,CAAC,IAAA,CAAK,uBACR,CAAA,MAAM,IAAI,KAAM,CAAA,CAAA,oDAAA,EAAuDC,oBAAe,EAAA,CAAA,CAAA,CAAI,EAG5F,KAAM,CAAE,YAAAK,CAAAA,CAAa,EAAIN,CAEzB,CAAA,OAAA,CAAQ,GAAI,CAAA,kBAAA,CAAoBA,CAAM,CACtC,CAAA,MAAMG,CAAU,CAAA,MAAM,KAAK,uBAAwB,CAAA,CACjD,eAAiBG,CAAAA,CAAAA,CACjB,UAAW,IAAK,CAAA,SAClB,CAAC,CAAA,CAED,GAAIH,CAAO,CAAA,MAAA,GAAWI,iBAAkB,CAAA,KAAA,CACtC,MAAM,IAAI,KAAA,CAAMJ,CAAO,CAAA,MAAM,EAE/B,OAAQ,OAAA,CAAA,GAAA,CAAI,yBAA2BA,CAAAA,CAAM,EACtCA,CACT,CAAA,CAMA,IAAO,CAAA,YAAA,CAAkD,MAAOH,CAAW,EAAA,CACzE,GAAI,CAAC,KAAK,mBACR,CAAA,MAAM,IAAI,KAAA,CAAM,mDAAmDC,oBAAe,EAAA,CAAA,CAAA,CAAI,CAExF,CAAA,MAAME,EAAS,MAAM,IAAA,CAAK,mBAAoBK,CAAAA,GAAAA,CAAAC,IAAA,EACzCT,CAAAA,CAAAA,CAAAA,CADyC,CAE5C,SAAA,CAAW,KAAK,SAClB,CAAA,CAAC,CAED,CAAA,OAAA,OAAA,CAAQ,IAAI,qBAAuBG,CAAAA,CAAM,CAClCA,CAAAA,CACT,EAEA,IAAO,CAAA,eAAA,CAAwD,MAAOH,CAAAA,EAAW,CAC/E,GAAI,CAAC,IAAK,CAAA,sBAAA,CACR,MAAM,IAAI,KAAA,CAAM,CAAsDC,mDAAAA,EAAAA,oBAAAA,KAAmB,CAE3F,CAAA,MAAME,CAAS,CAAA,MAAM,KAAK,sBAAuBK,CAAAA,GAAAA,CAAAC,GAAA,CAAA,EAAA,CAC5CT,GAD4C,CAE/C,SAAA,CAAW,IAAK,CAAA,SAClB,EAAC,CAED,CAAA,OAAA,OAAA,CAAQ,GAAI,CAAA,wBAAA,CAA0BG,CAAM,CACrCA,CAAAA,CACT,CAEA,CAAA,IAAA,CAAO,qBAAkE,MAAOH,CAAAA,EAAW,CACzF,GAAI,CAAC,IAAK,CAAA,2BAAA,CACR,MAAM,IAAI,MACR,CAA2DC,wDAAAA,EAAAA,oBAAAA,EAC7D,CAAA,CAAA,CAAA,CAAA,CAEF,KAAM,CAAE,YAAA,CAAAK,CAAa,CAAA,CAAIN,EACnBG,CAAS,CAAA,MAAM,IAAK,CAAA,2BAAA,CAA4BK,IAAAC,GAAA,CAAA,EAAA,CACjDT,CADiD,CAAA,CAAA,CAEpD,gBAAiBM,CACjB,CAAA,SAAA,CAAW,IAAK,CAAA,SAClB,EAAC,CAED,CAAA,OAAA,CAAQ,GAAI,CAAA,qCAAA,CAAuCH,CAAM,CACzD,CAAA,MAAMO,CAAwD,CAAA,GAE9D,IAAWC,MAAAA,CAAAA,IAAQR,CAAO,CAAA,MAAA,CACxBO,EAAc,IAAK,CAAA,CACjB,GAAKC,CAAAA,CAAAA,CAAK,IACV,QAAUA,CAAAA,CAAAA,CAAK,QACjB,CAAC,EAGH,MAAMC,CAAAA,CAA2D,EAAC,CAElE,UAAWV,CAAeC,IAAAA,CAAAA,CAAO,KAC/BS,CAAAA,CAAAA,CAAa,KAAK,CAChB,WAAA,CAAaV,CAAY,CAAA,WAAA,CACzB,QAASA,CAAY,CAAA,QAAA,CACrB,cAAgBA,CAAAA,CAAAA,CAAY,GAC9B,CAAC,CAAA,CAGH,MAAMW,CAAAA,CAAsE,CAC1E,WAAaV,CAAAA,CAAAA,CAAO,OAAQ,CAAA,WAAA,CAC5B,QAASA,CAAO,CAAA,OAAA,CAAQ,QACxB,CAAA,cAAA,CAAgBA,EAAO,OAAQ,CAAA,GACjC,CAEMW,CAAAA,CAAAA,CAA2CX,EAAO,UAExD,CAAA,OAAA,OAAA,CAAQ,GAAI,CAAA,oCAAA,CAAsC,CAChD,YAAAS,CAAAA,CAAAA,CACA,yBAAAC,CAAAA,CAAAA,CACA,cAAAH,CACA,CAAA,QAAA,CAAAI,CACF,CAAC,EAEM,CACL,YAAA,CAAAF,CACA,CAAA,yBAAA,CAAAC,EACA,aAAAH,CAAAA,CAAAA,CACA,QAAAI,CAAAA,CACF,CACF,CAEA,CAAA,IAAA,CAAQ,YAAe,CAAA,IAAM,CAE3B,OADYb,oBAAAA,EACC,EACX,KAAKc,aAAQ,CAAA,WAAA,CACX,OAAO,IAAA,CAAK,aACd,CAAA,KAAKA,aAAQ,CAAA,OAAA,CACX,OAAO,IAAK,CAAA,OAAA,EACd,CAAA,KAAKA,cAAQ,IACX,CAAA,OAAO,IAAK,CAAA,IAAA,EAChB,CACF,CAAA,CAEA,IAAQ,CAAA,WAAA,CAAc,IAAM,CAC1B,MAAMC,CAAW,CAAA,MAAA,EAAA,IAAA,CAAA,KAAA,CAAA,CAAA,MAAA,CAAgB,QACjC,GAAI,CAACA,CAAS,CAAA,CACZ,QAAQ,IAAK,CAAA,gDAAgD,CAC7D,CAAA,MAAA,CAEF,KAAK,wBAA2B,CAAA,MAAOhB,CACrC,EAAA,IAAA,CAAK,YAAY,MAAMgB,CAAAA,CAAQ,OAAQhB,CAAAA,CAAM,CAAC,CAChD,CAAA,IAAA,CAAK,uBAA0B,CAAA,MAAOA,GACpC,IAAK,CAAA,WAAA,CAAY,MAAMgB,CAAAA,CAAQ,OAAOhB,CAAM,CAAC,CAC/C,CAAA,IAAA,CAAK,oBAAsB,MAAOA,CAAAA,EAChC,IAAK,CAAA,WAAA,CAAY,MAAMgB,CAAQ,CAAA,YAAA,CAAahB,CAAM,CAAC,EACrD,IAAK,CAAA,sBAAA,CAAyB,MAAOA,CAAAA,EACnC,KAAK,WAAY,CAAA,MAAMgB,CAAQ,CAAA,eAAA,CAAgBhB,CAAM,CAAC,CAAA,CACxD,IAAK,CAAA,2BAAA,CAA8B,MAAOA,CACxC,EAAA,IAAA,CAAK,WAAY,CAAA,MAAMgB,EAAQ,gBAAiBhB,CAAAA,CAAM,CAAC,EAC3D,EAEA,IAAQ,CAAA,OAAA,CAAU,IAAM,CACtB,QAAQ,IAAK,CAAA,8CAA8C,EAC7D,CAAA,CAEA,KAAQ,IAAO,CAAA,IAAM,CACnB,MAAMgB,EAAW,MAAgB,EAAA,IAAA,CAAA,KAAA,CAAA,CAAA,MAAA,CAAA,OAAA,CAC5BA,CACH,EAAA,OAAA,CAAQ,KAAK,2CAA2C,CAAA,CAG1D,IAAK,CAAA,wBAAA,CAA2B,MAAOhB,CACrC,EAAA,IAAA,CAAK,WAAY,CAAA,MAAMgB,EAAQ,OAAQhB,CAAAA,CAAM,CAAC,CAAA,CAChD,KAAK,uBAA0B,CAAA,MAAOA,CACpC,EAAA,IAAA,CAAK,YAAY,MAAMgB,CAAAA,CAAQ,MAAOhB,CAAAA,CAAM,CAAC,CAC/C,CAAA,IAAA,CAAK,mBAAsB,CAAA,MAAOA,GAChC,IAAK,CAAA,WAAA,CAAY,MAAMgB,CAAAA,CAAQ,aAAahB,CAAM,CAAC,CACrD,CAAA,IAAA,CAAK,uBAAyB,MAAOA,CAAAA,EACnC,IAAK,CAAA,WAAA,CAAY,MAAMgB,CAAQ,CAAA,eAAA,CAAgBhB,CAAM,CAAC,EACxD,IAAK,CAAA,2BAAA,CAA8B,MAAOA,CAAAA,EACxC,KAAK,WAAY,CAAA,MAAMgB,CAAQ,CAAA,gBAAA,CAAiBhB,CAAM,CAAC,EAC3D,CAEA,CAAA,IAAA,CAAQ,YAAeG,CAAgB,EAAA,CACrC,GAAI,OAAOA,GAAW,WAGtB,CAAA,CAAA,GAAI,OAAOA,CAAAA,EAAW,SACpB,GAAI,CACF,OAAO,IAAA,CAAK,MAAMA,CAAM,CAC1B,CAAS,MAAA,CAAA,CAAP,EAEJ,OAAOA,CACT,CAAA,CAAA,CAjNE,KAAK,YAAa,EAAA,CAClB,IAAK,CAAA,SAAA,CAAY,KAAK,MAAO,CAAA,MAAA,CAAO,IAAK,CAAA,SAAA,EAAa,GACxD,CAgNF;;AClOA,IAAA,CAAA,CAAA,MAAA,CAAA,cAAA,CAAA,CAAA,CAAA,MAAA,CAAA,gBAAA,CAAA,IAAA,CAAA,CAAA,MAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,CAAA,MAAA,CAAA,qBAAA,CAAA,IAAA,CAAA,CAAA,MAAA,CAAA,SAAA,CAAA,cAAA,CAAA,CAAA,CAAA,MAAA,CAAA,SAAA,CAAA,oBAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,UAAA,CAAA,CAAA,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA,CAAA,QAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAAc,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,IAAA,IAAA,CAAA,IAAA,CAAA,GAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,IAAA,IAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAKO,MAAM,MAAeC,SAAAA,gBAAiB,CAI3C,WAAA,CAAYxB,CAAoC,CAAA,CAC9C,KAAMA,CAAAA,CAAM,CAMd,CAAA,IAAA,CAAO,IAAO,CAAA,SAAY,CACxB,IAAA,CAAK,UAAa,CAAA,MAAMyB,sBAAW,IAAK,CAAA,CACtC,IAAM,CAAA,IAAA,CAAK,MAAO,CAAA,IAAA,CAClB,QAAU,CAAA,IAAA,CAAK,MAAO,CAAA,QAAA,CACtB,UAAY,CAAA,IAAA,CAAK,MAAO,CAAA,UAC1B,CAAC,EACH,EAEA,IAAO,CAAA,IAAA,CAAiC,MAAOnB,CAAAA,EAAW,CACxD,MAAM,IAAK,CAAA,MAAA,CAAO,IAAK,CAAA,OAAA,CAAQ,IAAKA,CAAAA,CAAM,EAC5C,CAAA,CAGA,IAAO,CAAA,cAAA,CAAqD,MAAOoB,CAAoB,EAAA,CACrF,KAAM,CAAE,KAAAC,CAAAA,CAAAA,CAAO,YAAAC,CAAAA,CAAa,CAAI,CAAA,MAAM,IAAK,CAAA,UAAA,CAAW,OAAQd,CAAAA,CAAAA,CAAAC,GAAA,CAAA,EAAA,CACzDW,CADyD,CAAA,CAAA,CAE5D,EAAIA,CAAAA,CAAAA,CAAgB,EACpB,CAAA,UAAA,CAAYA,CAAgB,CAAA,UAAA,CAC5B,iBAAmBA,CAAAA,CAAAA,CAAgB,iBACnC,CAAA,aAAA,CAAeA,CAAgB,CAAA,aACjC,CAAC,CAAA,CAAA,CACD,aAAME,CAAa,EAAA,CACZ,IAAK,CAAA,UAAA,CAAW,OAAQ,CAAA,GAAA,CAAID,CAAK,CAC1C,CAEA,CAAA,IAAA,CAAO,aAAmD,CAAA,MAAOrB,CACxD,EAAA,MAAM,IAAK,CAAA,UAAA,CAAW,OAAOA,CAAM,CAAA,CAG5C,IAAO,CAAA,aAAA,CAAmD,MAAOA,CAAAA,EACxD,MAAM,IAAA,CAAK,UAAW,CAAA,MAAA,CAAOA,CAAM,CAAA,CAG5C,IAAO,CAAA,aAAA,CAAmD,MAAOA,CAAAA,EACxD,MAAM,IAAK,CAAA,UAAA,CAAW,MAAOA,CAAAA,CAAM,CAG5C,CAAA,IAAA,CAAO,qBAAmE,CAAA,MAAOA,CAChE,EAAA,MAAM,IAAK,CAAA,UAAA,CAAW,OAAQA,CAAAA,CAAM,CAIrD,CAAA,IAAA,CAAO,iBAA2D,CAAA,MAAOA,CAChE,EAAA,MAAM,IAAK,CAAA,UAAA,CAAW,UAAWA,CAAAA,CAAM,CAGhD,CAAA,IAAA,CAAO,gBAAyD,CAAA,MAAOA,CAC9D,EAAA,MAAM,IAAK,CAAA,UAAA,CAAW,KAAKA,CAAM,CAAA,CAG1C,IAAO,CAAA,iBAAA,CAA2D,IAC/C,IAAA,CAAK,UAAW,CAAA,OAAA,CAAQ,MAAO,EAAA,CAChC,MAAO,CAAA,CAACuB,CAA+CC,CAAAA,CAAAA,IACrED,CAASC,CAAAA,CAAAA,CAAQ,KAAK,CAAIA,CAAAA,CAAAA,CACnBD,CACN,CAAA,CAAA,EAAE,CAAA,CAGP,IAAO,CAAA,0BAAA,CAA6E,IAC3E,IAAA,CAAK,UAAW,CAAA,QAAA,CAAS,MAAO,EAAA,CAGzC,IAAO,CAAA,yBAAA,CAA2E,IACzE,IAAK,CAAA,UAAA,CAAW,yBAA0B,EAAA,CAInD,IAAO,CAAA,0BAAA,CAA6E,MAClFvB,CAAAA,EAEO,MAAM,IAAA,CAAK,UAAW,CAAA,0BAAA,CAA2BA,CAAM,CAAA,CAGhE,IAAO,CAAA,yBAAA,CAA2E,MAChFA,CAAAA,EAEO,MAAM,IAAA,CAAK,UAAW,CAAA,yBAAA,CAA0BA,CAAM,CAAA,CAG/D,IAAO,CAAA,iBAAA,CAA4DA,CAC1D,EAAA,IAAA,CAAK,UAAW,CAAA,iBAAA,CAAkBA,CAAM,CAAA,CAIjD,KAAO,mBAAgEA,CAAAA,CAAAA,EAC9D,IAAK,CAAA,MAAA,CAAO,IAAK,CAAA,UAAA,CAAW,mBAAoBA,CAAAA,CAAM,CAI/D,CAAA,IAAA,CAAO,EAA6B,CAAA,CAACyB,CAAMC,CAAAA,CAAAA,IACzC,IAAK,CAAA,QAAA,CAASD,EAAM,KAAK,CAAA,CACzB,IAAK,CAAA,QAAA,CAASA,CAAM,CAAA,IAAI,CACjB,CAAA,IAAA,CAAK,MAAO,CAAA,MAAA,CAAO,EAAGA,CAAAA,CAAAA,CAAMC,CAAQ,CAAA,CAAA,CAG7C,IAAO,CAAA,IAAA,CAAiC,CAACD,CAAMC,CAAAA,CAAAA,IAC7C,IAAK,CAAA,QAAA,CAASD,CAAM,CAAA,KAAK,CACzB,CAAA,IAAA,CAAK,QAASA,CAAAA,CAAAA,CAAM,MAAM,CAAA,CACnB,IAAK,CAAA,MAAA,CAAO,MAAO,CAAA,IAAA,CAAKA,CAAMC,CAAAA,CAAQ,CAG/C,CAAA,CAAA,IAAA,CAAO,GAA+B,CAAA,CAACD,CAAMC,CAAAA,CAAAA,IAC3C,IAAK,CAAA,QAAA,CAASD,CAAM,CAAA,KAAK,CAClB,CAAA,IAAA,CAAK,MAAO,CAAA,MAAA,CAAO,IAAIA,CAAMC,CAAAA,CAAQ,CAG9C,CAAA,CAAA,IAAA,CAAO,cAAqD,CAAA,CAACD,CAAMC,CAAAA,CAAAA,IACjE,IAAK,CAAA,QAAA,CAASD,CAAM,CAAA,gBAAgB,CAC7B,CAAA,IAAA,CAAK,MAAO,CAAA,MAAA,CAAO,eAAeA,CAAMC,CAAAA,CAAQ,CAIzD,CAAA,CAAA,IAAA,CAAO,iBAA2D,CAAA,MAAO1B,CAChE,EAAA,MAAM,IAAK,CAAA,gBAAA,CAAiB,iBAAkBA,CAAAA,CAAM,CAG7D,CAAA,IAAA,CAAO,gBAAyD,CAAA,MAAOA,GAC9D,MAAM,IAAA,CAAK,gBAAiB,CAAA,gBAAA,CAAiBA,CAAM,CAAA,CAG5D,IAAO,CAAA,YAAA,CAAiD,MAAOA,CAAAA,EACtD,MAAM,IAAA,CAAK,gBAAiB,CAAA,YAAA,CAAaA,CAAM,CAAA,CAGxD,IAAO,CAAA,eAAA,CAAuD,MAAOA,CAAAA,EAC5D,MAAM,IAAA,CAAK,gBAAiB,CAAA,eAAA,CAAgBA,CAAM,CAAA,CAG3D,IAAO,CAAA,oBAAA,CAAiE,MAAOA,CAAAA,EACtE,MAAM,IAAA,CAAK,iBAAiB,oBAAqBA,CAAAA,CAAM,CAKhE,CAAA,IAAA,CAAQ,gBAAoB2B,CAAAA,CAAAA,EAAyC,CACnE,IAAA,CAAK,MAAO,CAAA,MAAA,CAAO,IAAK,CAAA,iBAAA,CAAmBA,CAAK,EAClD,CAEA,CAAA,IAAA,CAAQ,kBAAqBA,CAA0C,EAAA,CACrE,IAAK,CAAA,MAAA,CAAO,MAAO,CAAA,IAAA,CAAK,kBAAoBA,CAAAA,CAAK,EACnD,CAAA,CAEA,IAAQ,CAAA,eAAA,CAAmBA,CAAwC,EAAA,CACjE,IAAK,CAAA,MAAA,CAAO,OAAO,IAAK,CAAA,gBAAA,CAAkBA,CAAK,EACjD,CAEA,CAAA,IAAA,CAAQ,gBAAoBA,CAAAA,CAAAA,EAAyC,CACnE,IAAA,CAAK,MAAO,CAAA,MAAA,CAAO,IAAK,CAAA,iBAAA,CAAmBA,CAAK,EAClD,CAEA,CAAA,IAAA,CAAQ,sBAA0BA,CAAAA,CAAAA,EAA+C,CAC/E,IAAA,CAAK,MAAO,CAAA,MAAA,CAAO,IAAK,CAAA,wBAAA,CAA0BA,CAAK,EACzD,CAEA,CAAA,IAAA,CAAQ,4BAAgCA,CAAAA,CAAAA,EAA8C,CACpF,IAAK,CAAA,MAAA,CAAO,MAAO,CAAA,IAAA,CAAK,sBAAwBA,CAAAA,CAAK,EACvD,CAAA,CAEA,IAAQ,CAAA,QAAA,CAAW,CACjBA,CAAAA,CACAC,CACG,GAAA,CACH,OAAQD,CAAAA,EACN,IAAK,iBAAA,CACH,IAAK,CAAA,UAAA,CAAW,MAAOC,CAAAA,CAAM,CAAE,CAAA,iBAAA,CAAmB,IAAK,CAAA,gBAAgB,CACvE,CAAA,MACF,IAAK,kBAAA,CACH,IAAK,CAAA,UAAA,CAAW,OAAOA,CAAM,CAAA,CAAE,kBAAoB,CAAA,IAAA,CAAK,iBAAiB,CAAA,CACzE,MACF,IAAK,gBACH,CAAA,IAAA,CAAK,UAAW,CAAA,MAAA,CAAOA,CAAM,CAAA,CAAE,gBAAkB,CAAA,IAAA,CAAK,eAAe,CAAA,CACrE,MACF,IAAK,iBACH,CAAA,IAAA,CAAK,UAAW,CAAA,MAAA,CAAOA,CAAM,CAAA,CAAE,iBAAmB,CAAA,IAAA,CAAK,gBAAgB,CAAA,CACvE,MACF,IAAK,yBACH,IAAK,CAAA,UAAA,CAAW,MAAOA,CAAAA,CAAM,CAAE,CAAA,wBAAA,CAA0B,IAAK,CAAA,sBAAsB,CACpF,CAAA,MACF,IAAK,sBAAA,CACH,IAAK,CAAA,UAAA,CAAW,MAAOA,CAAAA,CAAM,EAAE,sBAAwB,CAAA,IAAA,CAAK,4BAA4B,CAAA,CACxF,KACJ,CACF,CA1LE,CAAA,IAAA,CAAK,UAAa,CAAA,EAClB,CAAA,IAAA,CAAK,gBAAmB,CAAA,IAAIC,gBAAiB,CAAA,IAAI,EACnD,CAyLF;;ACnMO,MAAM,aAA+C,CAAA,CAC1D,cAAgB,CAAA,MAAO7B,GAAW,CAChC,MAAM8B,CAAW,CAAA,CACf,IAAM,CAAA,IAAIC,SAAK,CAAA,CACb,cAAgB/B,CAAAA,CAAAA,CAAO,cACvB,CAAA,OAAA,CAASA,CAAO,CAAA,OAClB,CAAC,CACH,CAAA,CACA,MAAM8B,CAAAA,CAAS,IAAK,CAAA,MAAA,CAAO,MAC3B,CAAA,MAAME,CAAUF,CAAAA,CAAAA,CAAS,IAAK,CAAA,MAAA,CAAO,OAAO9B,CAAO,CAAA,KAAA,CAAOA,CAAO,CAAA,gBAAgB,CACjF,CAAA,OAAA8B,CAAS,CAAA,IAAA,CAAO,IACTE,CAAAA,CACT,CACA,CAAA,WAAA,CAAa,MAAOhC,CAAAA,EAAW,CAC7B,MAAMiC,CAAAA,CAAY,CAChB,IAAA,CAAM,IAAIF,SAAAA,CAAK,CACb,cAAgB/B,CAAAA,CAAAA,CAAO,cACvB,CAAA,OAAA,CAASA,CAAO,CAAA,OAClB,CAAC,CACD,CAAA,YAAA,CAAc,IAChB,CAAA,CACAiC,CAAU,CAAA,YAAA,CAAe,IAAIC,uBAAAA,CAAaD,CAAU,CAAA,IAAA,CAAMA,CAAU,CAAA,IAAA,CAAK,MAAM,CAAA,CAC/E,MAAMA,CAAU,CAAA,YAAA,CAAa,IAAK,EAAA,CAClC,MAAMT,CAAAA,CAAUS,EAAU,YAAa,CAAA,GAAA,CAAIjC,CAAO,CAAA,KAAK,CACjDmC,CAAAA,CAAAA,CAAWX,GAAA,IAAAA,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAAS,IAAK,CAAA,QAAA,CAC/B,OAAAS,CAAAA,CAAU,IAAO,CAAA,IAAA,CACjBA,CAAU,CAAA,YAAA,CAAe,IAClBE,CAAAA,CACT,CACF,CAAA;;AC3BO,MAAMC,CAAAA,CAAN,cAAwBC,UAAW,CAiBxC,WAAY5C,CAAAA,CAAAA,CAA8B,CACxC,KAAMA,CAAAA,CAAI,CAdZ,CAAA,IAAA,CAAO,OAA+B,IAAI6C,cAAAA,CAyB1C,KAAO,EAAuB,CAAA,CAACb,EAAMC,CAC5B,GAAA,IAAA,CAAK,MAAO,CAAA,EAAA,CAAGD,EAAMC,CAAQ,CAAA,CAGtC,IAAO,CAAA,IAAA,CAA2B,CAACD,CAAMC,CAAAA,CAAAA,GAChC,IAAK,CAAA,MAAA,CAAO,KAAKD,CAAMC,CAAAA,CAAQ,EAGxC,IAAO,CAAA,GAAA,CAAyB,CAACD,CAAMC,CAAAA,CAAAA,GAC9B,IAAK,CAAA,MAAA,CAAO,IAAID,CAAMC,CAAAA,CAAQ,CAGvC,CAAA,IAAA,CAAO,eAA+C,CAACD,CAAAA,CAAMC,CACpD,GAAA,IAAA,CAAK,OAAO,cAAeD,CAAAA,CAAAA,CAAMC,CAAQ,CAKlD,CAAA,IAAA,CAAO,KAA2B,MAAO1B,CAAAA,EAAW,CAClD,GAAI,CACF,OAAO,MAAM,IAAK,CAAA,MAAA,CAAO,KAAKA,CAAM,CACtC,CAASuC,MAAAA,CAAAA,CAAP,CACA,MAAK,IAAA,CAAA,MAAA,CAAO,MAAMA,CAAM,CAAA,OAAO,EACzBA,CACR,CACF,CAEA,CAAA,IAAA,CAAO,eAA+C,MAAOvC,CAAAA,EAAW,CACtE,GAAI,CACF,OAAO,MAAM,IAAK,CAAA,MAAA,CAAO,eAAeA,CAAM,CAChD,OAASuC,CAAP,CAAA,CACA,WAAK,MAAO,CAAA,KAAA,CAAMA,CAAM,CAAA,OAAO,EACzBA,CACR,CACF,CAEA,CAAA,IAAA,CAAO,cAA6C,MAAOvC,CAAAA,EAAW,CACpE,GAAI,CACF,OAAO,MAAM,KAAK,MAAO,CAAA,aAAA,CAAcA,CAAM,CAC/C,CAAA,MAASuC,CAAP,CAAA,CACA,WAAK,MAAO,CAAA,KAAA,CAAMA,CAAM,CAAA,OAAO,EACzBA,CACR,CACF,CAEA,CAAA,IAAA,CAAO,cAA6C,MAAOvC,CAAAA,EAAW,CACpE,GAAI,CACF,OAAO,MAAM,IAAA,CAAK,MAAO,CAAA,aAAA,CAAcA,CAAM,CAC/C,CAAA,MAASuC,CAAP,CAAA,CACA,WAAK,MAAO,CAAA,KAAA,CAAMA,CAAM,CAAA,OAAO,EACzBA,CACR,CACF,EAEA,IAAO,CAAA,aAAA,CAA6C,MAAOvC,CAAW,EAAA,CACpE,GAAI,CACF,OAAO,MAAM,IAAA,CAAK,MAAO,CAAA,aAAA,CAAcA,CAAM,CAC/C,CAAA,MAASuC,CAAP,CAAA,CACA,WAAK,MAAO,CAAA,KAAA,CAAMA,EAAM,OAAO,CAAA,CACzBA,CACR,CACF,CAAA,CAEA,IAAO,CAAA,qBAAA,CAA6D,MAAOvC,CAAW,EAAA,CACpF,GAAI,CACF,OAAO,MAAM,IAAA,CAAK,MAAO,CAAA,qBAAA,CAAsBA,CAAM,CACvD,CAAA,MAASuC,EAAP,CACA,MAAA,IAAA,CAAK,OAAO,KAAMA,CAAAA,CAAAA,CAAM,OAAO,CAAA,CACzBA,CACR,CACF,CAAA,CAEA,IAAO,CAAA,iBAAA,CAAqD,MAAOvC,CAAW,EAAA,CAC5E,GAAI,CACF,OAAO,MAAM,IAAA,CAAK,OAAO,iBAAkBA,CAAAA,CAAM,CACnD,CAASuC,MAAAA,CAAAA,CAAP,CACA,MAAA,IAAA,CAAK,OAAO,KAAMA,CAAAA,CAAAA,CAAM,OAAO,CAAA,CACzBA,CACR,CACF,CAAA,CAEA,IAAO,CAAA,gBAAA,CAAmD,MAAOvC,CAAW,EAAA,CAC1E,GAAI,CACF,OAAO,MAAM,IAAK,CAAA,MAAA,CAAO,gBAAiBA,CAAAA,CAAM,CAClD,CAASuC,MAAAA,CAAAA,CAAP,CACA,MAAA,IAAA,CAAK,OAAO,KAAMA,CAAAA,CAAAA,CAAM,OAAO,CAAA,CACzBA,CACR,CACF,CAAA,CAEA,KAAO,iBAAqD,CAAA,IAAM,CAChE,GAAI,CACF,OAAO,IAAA,CAAK,OAAO,iBAAkB,EACvC,CAASA,MAAAA,CAAAA,CAAP,CACA,MAAK,IAAA,CAAA,MAAA,CAAO,KAAMA,CAAAA,CAAAA,CAAM,OAAO,CACzBA,CAAAA,CACR,CACF,CAEA,CAAA,IAAA,CAAO,2BAAuE,IAAM,CAClF,GAAI,CACF,OAAO,IAAK,CAAA,MAAA,CAAO,0BAA2B,EAChD,OAASA,CAAP,CAAA,CACA,MAAK,IAAA,CAAA,MAAA,CAAO,MAAMA,CAAM,CAAA,OAAO,EACzBA,CACR,CACF,EAEA,IAAO,CAAA,yBAAA,CAAqE,IAAM,CAChF,GAAI,CACF,OAAO,IAAK,CAAA,MAAA,CAAO,2BACrB,CAAA,MAASA,CAAP,CAAA,CACA,WAAK,MAAO,CAAA,KAAA,CAAMA,EAAM,OAAO,CAAA,CACzBA,CACR,CACF,CAAA,CAEA,IAAO,CAAA,mBAAA,CAA0DvC,GAAW,CAC1E,GAAI,CACF,OAAO,KAAK,MAAO,CAAA,mBAAA,CAAoBA,CAAM,CAC/C,OAASuC,CAAP,CAAA,CACA,WAAK,MAAO,CAAA,KAAA,CAAMA,EAAM,OAAO,CAAA,CACzBA,CACR,CACF,EAEA,IAAO,CAAA,0BAAA,CAAwEvC,CAAW,EAAA,CACxF,GAAI,CACF,OAAO,IAAK,CAAA,MAAA,CAAO,2BAA2BA,CAAM,CACtD,OAASuC,CAAP,CAAA,CACA,WAAK,MAAO,CAAA,KAAA,CAAMA,CAAM,CAAA,OAAO,EACzBA,CACR,CACF,CAEA,CAAA,IAAA,CAAO,0BAAsEvC,CAAW,EAAA,CACtF,GAAI,CACF,OAAO,IAAK,CAAA,MAAA,CAAO,0BAA0BA,CAAM,CACrD,OAASuC,CAAP,CAAA,CACA,MAAK,IAAA,CAAA,MAAA,CAAO,MAAMA,CAAM,CAAA,OAAO,CACzBA,CAAAA,CACR,CACF,CAEA,CAAA,IAAA,CAAO,iBAAsDvC,CAAAA,CAAAA,EAAW,CACtE,GAAI,CACF,OAAO,IAAK,CAAA,MAAA,CAAO,kBAAkBA,CAAM,CAC7C,CAASuC,MAAAA,CAAAA,CAAP,CACA,MAAK,IAAA,CAAA,MAAA,CAAO,KAAMA,CAAAA,CAAAA,CAAM,OAAO,CACzBA,CAAAA,CACR,CACF,CAAA,CAEA,KAAO,iBAAqD,CAAA,MAAOvC,GAAW,CAC5E,GAAI,CACF,OAAO,MAAM,IAAK,CAAA,MAAA,CAAO,kBAAkBA,CAAM,CACnD,CAASuC,MAAAA,CAAAA,CAAP,CACA,MAAK,IAAA,CAAA,MAAA,CAAO,KAAMA,CAAAA,CAAAA,CAAM,OAAO,CACzBA,CAAAA,CACR,CACF,CAEA,CAAA,IAAA,CAAO,iBAAmD,MAAOvC,CAAAA,EAAW,CAC1E,GAAI,CACF,OAAO,MAAM,IAAK,CAAA,MAAA,CAAO,iBAAiBA,CAAM,CAClD,CAASuC,MAAAA,CAAAA,CAAP,CACA,MAAK,IAAA,CAAA,MAAA,CAAO,MAAMA,CAAM,CAAA,OAAO,EACzBA,CACR,CACF,CAEA,CAAA,IAAA,CAAO,aAA2C,MAAOvC,CAAAA,EAAW,CAClE,GAAI,CACF,OAAO,MAAM,IAAK,CAAA,MAAA,CAAO,aAAaA,CAAM,CAC9C,OAASuC,CAAP,CAAA,CACA,WAAK,MAAO,CAAA,KAAA,CAAMA,CAAM,CAAA,OAAO,EACzBA,CACR,CACF,CAEA,CAAA,IAAA,CAAO,gBAAiD,MAAOvC,CAAAA,EAAW,CACxE,GAAI,CACF,OAAO,MAAM,KAAK,MAAO,CAAA,eAAA,CAAgBA,CAAM,CACjD,CAAA,MAASuC,CAAP,CAAA,CACA,WAAK,MAAO,CAAA,KAAA,CAAMA,CAAM,CAAA,OAAO,EACzBA,CACR,CACF,CAEA,CAAA,IAAA,CAAO,qBAA2D,MAAOvC,CAAAA,EAAW,CAClF,GAAI,CACF,OAAO,MAAM,IAAA,CAAK,MAAO,CAAA,oBAAA,CAAqBA,CAAM,CACtD,CAAA,MAASuC,CAAP,CAAA,CACA,WAAK,MAAO,CAAA,KAAA,CAAMA,CAAM,CAAA,OAAO,EACzBA,CACR,CACF,EA9ME,IAAK,CAAA,QAAA,CAAW9C,EAAK,QACrB,CAAA,IAAA,CAAK,IAAOA,CAAAA,CAAAA,CAAK,MAAQ+C,cACzB,CAAA,IAAA,CAAK,UAAa/C,CAAAA,CAAAA,CAAK,WACvB,IAAK,CAAA,IAAA,CAAOA,CAAK,CAAA,IAAA,CACjB,KAAK,MAAS,CAAA,IAAA,CAAK,KAAK,MACxB,CAAA,IAAA,CAAK,OAAS,IAAIgD,MAAAA,CAAO,IAAI,EAC/B,CAfA,aAAa,IAAA,CAAKhD,CAA8B,CAAA,CAC9C,MAAMC,CAAS,CAAA,IAAI0C,CAAU3C,CAAAA,CAAI,EACjC,OAAMC,MAAAA,CAAAA,CAAO,YAENA,CAAAA,CACT,CAsNA,MAAc,UAAA,EAAa,CACzB,IAAA,CAAK,OAAO,KAAM,CAAA,aAAa,CAC/B,CAAA,GAAI,CACF,MAAM,IAAA,CAAK,MAAO,CAAA,IAAA,GAClB,IAAK,CAAA,MAAA,CAAO,KAAK,kCAAkC,EACrD,OAAS6C,CAAP,CAAA,CACA,MAAK,IAAA,CAAA,MAAA,CAAO,KAAK,kCAAkC,CAAA,CACnD,IAAK,CAAA,MAAA,CAAO,MAAMA,CAAM,CAAA,OAAO,CACzBA,CAAAA,CACR,CACF,CACF,CAAA,KAhPaG,WAANN,CAAAA,EAAMM,YAOG,aAA+CC,CAAAA,aAAAA;;ACRxD,MAAM,SAAYC,CAAAA;;;;;;;;;;;;;;;;;"}