@wishknish/knishio-client-js 0.9.0 → 0.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client.cjs.js +29 -29
- package/dist/client.cjs.js.map +1 -1
- package/dist/client.es.mjs +810 -818
- package/dist/client.es.mjs.map +1 -1
- package/dist/client.iife.js +29 -29
- package/dist/client.iife.js.map +1 -1
- package/package.json +9 -13
- package/src/Wallet.js +12 -0
package/dist/client.cjs.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
`):r+=" ");return r}static toUint8Array(e){let t=e.toLowerCase().replace(/\s/g,"");t.length%2===1&&(t=`0${t}`);const n=new Uint8Array(Math.floor(t.length/2));let s=-1;for(let r=0;r<t.length;++r){const i=t[r],a=["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"].indexOf(i);if(a===-1)throw Error("unexpected character");s===-1?s=16*a:(n[Math.floor(r/2)]=s+a,s=-1)}return n}}String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")});String.prototype.toCamelCase||(String.prototype.toCamelCase=function(){return this.toLowerCase().replace(/[^a-zA-Z0-9]+(.)/g,(o,e)=>e.toUpperCase())});String.prototype.toSnakeCase||(String.prototype.toSnakeCase=function(){return this.replace(/[A-Z]/g,o=>`_${o.toLowerCase()}`)});function
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const Q=require("jssha"),T=require("@urql/core"),ls=require("graphql-ws"),Ze=require("wonka");typeof self>"u"&&(global.self=global);class Ut{static toHex(e,t){const n=(c,u)=>{const l=u?["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"]:["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"];return l[Math.floor(c/16)]+l[c%16]},s=Object.assign({grouping:0,rowlength:0,uppercase:!1},t||{});let r="",i=0,a=0;for(let c=0;c<e.length&&(r+=n(e[c],s.uppercase),c!==e.length-1);++c)s.grouping>0&&++i===s.grouping&&(i=0,s.rowlength>0&&++a===s.rowlength?(a=0,r+=`
|
|
2
|
+
`):r+=" ");return r}static toUint8Array(e){let t=e.toLowerCase().replace(/\s/g,"");t.length%2===1&&(t=`0${t}`);const n=new Uint8Array(Math.floor(t.length/2));let s=-1;for(let r=0;r<t.length;++r){const i=t[r],a=["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"].indexOf(i);if(a===-1)throw Error("unexpected character");s===-1?s=16*a:(n[Math.floor(r/2)]=s+a,s=-1)}return n}}String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")});String.prototype.toCamelCase||(String.prototype.toCamelCase=function(){return this.toLowerCase().replace(/[^a-zA-Z0-9]+(.)/g,(o,e)=>e.toUpperCase())});String.prototype.toSnakeCase||(String.prototype.toSnakeCase=function(){return this.replace(/[A-Z]/g,o=>`_${o.toLowerCase()}`)});function Ie(o,e){const t=Math.ceil(o.length/e),n=[];for(let s=0,r=0;s<t;++s,r+=e)n[s]=o.substr(r,e);return n}function je(o=256,e="abcdef0123456789"){let t=new Uint8Array(o);return t=crypto.getRandomValues(t),t=t.map(n=>e.charCodeAt(n%e.length)),String.fromCharCode.apply(null,t)}function Bt(o,e,t,n,s){if(n=n||"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz~`!@#$%^&*()-_=+[{]}\\|;:'\",<.>/?¿¡",s=s||n,e>n.length||t>s.length)return console.warn("Strings::charsetBaseConvert() - Can't convert",o,"to base",t,"greater than symbol table length. src-table:",n.length,"dest-table:",s.length),!1;let i=BigInt(0);for(let c=0;c<o.length;c++)i=i*BigInt(e)+BigInt(n.indexOf(o.charAt(c)));let a="";for(;i>0;){const c=i%BigInt(t);a=s.charAt(Number(c))+a,i/=BigInt(t)}return a||"0"}function Ht(o){return Ut.toHex(o,{})}function Pt(o){return Ut.toUint8Array(o)}function Kt(o){const e=Pt(o);return btoa(String.fromCharCode.apply(null,e))}function Nt(o){const e=new Uint8Array(atob(o).split("").map(t=>t.charCodeAt(0)));return Ht(e)}function Pe(o){return/^[A-F0-9]+$/i.test(o)}function Lt(o){return(typeof o=="number"||typeof o=="string"&&o.trim()!=="")&&!isNaN(o)}let ue=class{static normalizeMeta(e){if(Array.isArray(e))return e.map(n=>({key:n.key,value:n.value==null?null:String(n.value)}));const t=[];for(const n in e)if(Object.prototype.hasOwnProperty.call(e,n)){const s=e[n];t.push({key:n,value:s==null?null:String(s)})}return t}static aggregateMeta(e){let t={};if(Array.isArray(e))for(const n of e)t[n.key]=n.value;else t=e;return t}};function Qt(o,e){return o.length?[o.slice(0,e)].concat(Qt(o.slice(e),e)):[]}function Ft(o,e){let t,n,s;const r=[Array,Date,Number,String,Boolean],i=Object.prototype.toString;for(e=e||[],t=0;t<e.length;t+=2)o===e[t]&&(n=e[t+1]);if(!n&&o&&typeof o=="object"){for(n={},t=0;t<r.length;t++)i.call(o)===i.call(s=new r[t](o))&&(n=t?s:[]);e.push(o,n);for(t in o)e.hasOwnProperty.call(o,t)&&(n[t]=Ft(o[t],e))}return n||o}function jt(...o){return[].concat(...o.map((e,t)=>{const n=o.slice(0);n.splice(t,1);const s=[...new Set([].concat(...n))];return e.filter(r=>!s.includes(r))}))}function fe(...o){return o.reduce((e,t)=>e.filter(n=>t.includes(n)))}class De{constructor(e={},t={}){this.policy=De.normalizePolicy(e),this.fillDefault(t)}static normalizePolicy(e={}){const t={};for(const[n,s]of Object.entries(e))if(s!==null&&["read","write"].includes(n)){t[n]={};for(const[r,i]of Object.entries(s))t[n][r]=i}return t}fillDefault(e={}){const t=Array.from(this.policy).filter(s=>s.action==="read"),n=Array.from(this.policy).filter(s=>s.action==="write");for(const[s,r]of Object.entries({read:t,write:n})){const i=r.map(a=>a.key);this.policy[s]||(this.policy[s]={});for(const a of jt(e,i))this.policy[s][a]||(this.policy[s][a]=s==="write"&&!["characters","pubkey"].includes(a)?["self"]:["all"])}}get(){return this.policy}toJson(){return JSON.stringify(this.get())}}class B{constructor(e=[]){this.meta=ue.normalizeMeta(e)}merge(e){return this.meta=Array.from(new Set([...this.meta,...ue.normalizeMeta(e)])),this}addContext(e=null){return this}setAtomWallet(e){const t={};return e.tokenUnits&&e.tokenUnits.length&&(t.tokenUnits=JSON.stringify(e.getTokenUnitsData())),e.tradeRates&&e.tradeRates.length&&(t.tradeRates=JSON.stringify(e.tradeRates)),Object.keys(t).length>0&&this.merge(t),this}setMetaWallet(e){return this.merge({walletTokenSlug:e.token,walletBundleHash:e.bundle,walletAddress:e.address,walletPosition:e.position,walletBatchId:e.batchId,walletPubkey:e.pubkey,walletCharacters:e.characters}),this}setShadowWalletClaim(e){return this.merge({shadowWalletClaim:e*1}),this}setSigningWallet(e){return this.merge({signingWallet:JSON.stringify({tokenSlug:e.token,bundleHash:e.bundle,address:e.address,position:e.position,pubkey:e.pubkey,characters:e.characters})}),this}addPolicy(e){const t=new De(e,Object.keys(this.meta));return this.merge({policy:t.toJson()}),this}get(){return this.meta}}class x extends TypeError{constructor(e=null,t=null,n=null){if(super(e,t,n),e===null)throw new this(`Unknown ${this.constructor.name}`);this.name="BaseException"}toString(){return`${this.name}: ${this.message}.
|
|
3
3
|
Stack:
|
|
4
|
-
${this.stack}`}}class se extends x{constructor(e="The molecule does not contain atoms",t=null,n=null){super(e,t,n),this.name="AtomsMissingException"}}class ce{static create(e){const t={};for(const n of Object.keys(e))Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return new this(t)}static structure(e){switch(Object.prototype.toString.call(e)){case"[object Array]":{const t=[];for(const n in e)t.push(ce.isStructure(e[n])?ce.structure(e[n]):e[n]);return t}case"[object Object]":{const t=[],n=Object.keys(e).sort((s,r)=>s===r?0:s<r?-1:1);for(const s of n)if(Object.prototype.hasOwnProperty.call(e,s)){const r={};r[s]=ce.isStructure(e[s])?ce.structure(e[s]):e[s],t.push(r)}if(t.length>0)return t;break}}return e}static isStructure(e){return["[object Object]","[object Array]"].includes(Object.prototype.toString.call(e))}view(){return ce.structure(this)}}class ds extends ce{constructor({position:e=null,walletAddress:t=null,isotope:n=null,token:s=null,value:r=null,batchId:i=null,metaType:a=null,metaId:c=null,meta:u=null,index:l=null,createdAt:h=null,version:p=null}){super(),this.position=e,this.walletAddress=t,this.isotope=n,this.token=s,this.value=r,this.batchId=i,this.metaType=a,this.metaId=c,this.meta=u,this.index=l,this.createdAt=h,this.version=p}}const Ne={4:ds};class g{constructor({position:e=null,walletAddress:t=null,isotope:n=null,token:s=null,value:r=null,batchId:i=null,metaType:a=null,metaId:c=null,meta:u=null,otsFragment:l=null,index:h=null,version:p=null}){this.position=e,this.walletAddress=t,this.isotope=n,this.token=s,this.value=r!==null?String(r):null,this.batchId=i,this.metaType=a,this.metaId=c,this.meta=u?he.normalizeMeta(u):[],this.index=h,this.otsFragment=l,this.createdAt=String(+new Date),p!==null&&Object.prototype.hasOwnProperty.call(Ne,p)&&(this.version=String(p))}static getHashableProps(){return["position","walletAddress","isotope","token","value","batchId","metaType","metaId","meta","createdAt"]}static getUnclaimedProps(){return["otsFragment"]}static create({isotope:e,wallet:t=null,value:n=null,metaType:s=null,metaId:r=null,meta:i=null,batchId:a=null}){return i||(i=new B),i instanceof B||(i=new B(i)),t&&(i.setAtomWallet(t),a||(a=t.batchId)),new g({position:t?t.position:null,walletAddress:t?t.address:null,isotope:e,token:t?t.token:null,value:n,batchId:a,metaType:s,metaId:r,meta:i.get()})}static jsonToObject(e){const t=Object.assign(new g({}),JSON.parse(e)),n=Object.keys(new g({}));for(const s in t)Object.prototype.hasOwnProperty.call(t,s)&&!n.includes(s)&&delete t[s];return t}toJSON(e={}){const{includeOtsFragments:t=!0,validateFields:n=!1}=e;try{if(n){const r=["position","walletAddress","isotope","token"];for(const i of r)if(!this[i])throw new Error(`Required field '${i}' is missing or empty`)}const s={position:this.position??"",walletAddress:this.walletAddress??"",isotope:this.isotope,token:this.token??"",value:this.value,batchId:this.batchId,metaType:this.metaType,metaId:this.metaId,meta:this.meta||[],index:this.index,createdAt:this.createdAt,version:this.version};return t&&this.otsFragment&&(s.otsFragment=this.otsFragment),s}catch(s){throw new Error(`Atom serialization failed: ${s.message}`)}}static fromJSON(e,t={}){const{validateStructure:n=!0,strictMode:s=!1}=t;try{const r=typeof e=="string"?JSON.parse(e):e;if(s||n){const a=["position","walletAddress","isotope","token"];for(const c of a)if(!r[c])throw new Error(`Required field '${c}' is missing or empty`)}const i=new g({position:r.position,walletAddress:r.walletAddress,isotope:r.isotope,token:r.token,value:r.value,batchId:r.batchId,metaType:r.metaType,metaId:r.metaId,meta:r.meta,index:r.index,version:r.version});return r.otsFragment&&(i.otsFragment=r.otsFragment),r.createdAt&&(i.createdAt=r.createdAt),i}catch(r){throw new Error(`Atom deserialization failed: ${r.message}`)}}static hashAtoms({atoms:e,output:t="base17"}){const n=new L("SHAKE256","TEXT"),s=g.sortAtoms(e);if(s.length===0)throw new se;if(s.map(r=>{if(!(r instanceof g))throw new se;return r}),s.every(r=>r.version&&Object.prototype.hasOwnProperty.call(Ne,r.version)))n.update(JSON.stringify(s.map(r=>Ne[r.version].create(r).view())));else{const r=String(e.length);let i=[];for(const a of s)i.push(r),i=i.concat(a.getHashableValues());for(const a of i)n.update(a)}switch(t){case"hex":return n.getHash("HEX",{outputLen:256});case"array":return n.getHash("ARRAYBUFFER",{outputLen:256});default:return Ht(n.getHash("HEX",{outputLen:256}),16,17,"0123456789abcdef","0123456789abcdefg").padStart(64,"0")}}static jsonSerialization(e,t){if(!g.getUnclaimedProps().includes(e))return t}static sortAtoms(e){const t=[...e];return t.sort((n,s)=>n.index<s.index?-1:1),t}aggregatedMeta(){return he.aggregateMeta(this.meta)}getHashableValues(){const e=[];for(const t of g.getHashableProps()){const n=this[t];if(!(n===null&&!["position","walletAddress"].includes(t)))if(t==="meta")for(const s of n)typeof s.value<"u"&&s.value!==null&&(e.push(String(s.key)),e.push(String(s.value)));else e.push(n===null?"":String(n))}return e}}function Fe(o=null,e=2048){if(o){const t=new L("SHAKE256","TEXT");return t.update(o),t.getHash("HEX",{outputLen:e*4})}else return De(e)}function de(o,e=null){const t=new L("SHAKE256","TEXT");return t.update(o),t.getHash("HEX",{outputLen:256})}function Qe(o,e){const t=new L("SHAKE256","TEXT");return t.update(o),t.getHash("HEX",{outputLen:e})}function Te({molecularHash:o=null,index:e=null}){return o!==null&&e!==null?de(String(o)+String(e),"generateBatchId"):De(64)}class pe{constructor(e,t,n){this.id=e,this.name=t,this.metas=n||{}}static createFromGraphQL(e){let t=e.metas||{};return t.length&&(t=JSON.parse(t),t||(t={})),new pe(e.id,e.name,t)}static createFromDB(e){return new pe(e[0],e[1],e.length>2?e[2]:{})}getFragmentZone(){return this.metas.fragmentZone||null}getFusedTokenUnits(){return this.metas.fusedTokenUnits||null}toData(){return[this.id,this.name,this.metas]}toGraphQLResponse(){return{id:this.id,name:this.name,metas:JSON.stringify(this.metas)}}}class et extends x{constructor(e="Attempting to create a wallet with no credentials (secret or bundle hash)",t=null,n=null){super(e,t,n),this.name="WalletCredentialException"}}const Be=BigInt(2**32-1),St=BigInt(32);function ps(o,e=!1){return e?{h:Number(o&Be),l:Number(o>>St&Be)}:{h:Number(o>>St&Be)|0,l:Number(o&Be)|0}}function fs(o,e=!1){const t=o.length;let n=new Uint32Array(t),s=new Uint32Array(t);for(let r=0;r<t;r++){const{h:i,l:a}=ps(o[r],e);[n[r],s[r]]=[i,a]}return[n,s]}const ms=(o,e,t)=>o<<t|e>>>32-t,ys=(o,e,t)=>e<<t|o>>>32-t,gs=(o,e,t)=>e<<t-32|o>>>64-t,bs=(o,e,t)=>o<<t-32|e>>>64-t;/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */function ws(o){return o instanceof Uint8Array||ArrayBuffer.isView(o)&&o.constructor.name==="Uint8Array"}function $t(o,e=""){if(!Number.isSafeInteger(o)||o<0){const t=e&&`"${e}" `;throw new Error(`${t}expected integer >= 0, got ${o}`)}}function z(o,e,t=""){const n=ws(o),s=o==null?void 0:o.length,r=e!==void 0;if(!n||r&&s!==e){const i=t&&`"${t}" `,a=r?` of length ${e}`:"",c=n?`length=${s}`:`type=${typeof o}`;throw new Error(i+"expected Uint8Array"+a+", got "+c)}return o}function At(o,e=!0){if(o.destroyed)throw new Error("Hash instance has been destroyed");if(e&&o.finished)throw new Error("Hash#digest() has already been called")}function ks(o,e){z(o,void 0,"digestInto() output");const t=e.outputLen;if(o.length<t)throw new Error('"digestInto() output" expected to be of length >='+t)}function Vt(o){return new Uint32Array(o.buffer,o.byteOffset,Math.floor(o.byteLength/4))}function zt(...o){for(let e=0;e<o.length;e++)o[e].fill(0)}const _s=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Ss(o){return o<<24&4278190080|o<<8&16711680|o>>>8&65280|o>>>24&255}function $s(o){for(let e=0;e<o.length;e++)o[e]=Ss(o[e]);return o}const vt=_s?o=>o:$s;function Jt(o,e={}){const t=(s,r)=>o(r).update(s).digest(),n=o(void 0);return t.outputLen=n.outputLen,t.blockLen=n.blockLen,t.create=s=>o(s),Object.assign(t,e),Object.freeze(t)}function As(o=32){const e=typeof globalThis=="object"?globalThis.crypto:null;if(typeof(e==null?void 0:e.getRandomValues)!="function")throw new Error("crypto.getRandomValues must be defined");return e.getRandomValues(new Uint8Array(o))}const ze=o=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,o])}),vs=BigInt(0),Se=BigInt(1),xs=BigInt(2),Is=BigInt(7),Ms=BigInt(256),Ts=BigInt(113),Gt=[],Xt=[],Zt=[];for(let o=0,e=Se,t=1,n=0;o<24;o++){[t,n]=[n,(2*t+3*n)%5],Gt.push(2*(5*n+t)),Xt.push((o+1)*(o+2)/2%64);let s=vs;for(let r=0;r<7;r++)e=(e<<Se^(e>>Is)*Ts)%Ms,e&xs&&(s^=Se<<(Se<<BigInt(r))-Se);Zt.push(s)}const Yt=fs(Zt,!0),Cs=Yt[0],Es=Yt[1],xt=(o,e,t)=>t>32?gs(o,e,t):ms(o,e,t),It=(o,e,t)=>t>32?bs(o,e,t):ys(o,e,t);function Rs(o,e=24){const t=new Uint32Array(10);for(let n=24-e;n<24;n++){for(let i=0;i<10;i++)t[i]=o[i]^o[i+10]^o[i+20]^o[i+30]^o[i+40];for(let i=0;i<10;i+=2){const a=(i+8)%10,c=(i+2)%10,u=t[c],l=t[c+1],h=xt(u,l,1)^t[a],p=It(u,l,1)^t[a+1];for(let d=0;d<50;d+=10)o[i+d]^=h,o[i+d+1]^=p}let s=o[2],r=o[3];for(let i=0;i<24;i++){const a=Xt[i],c=xt(s,r,a),u=It(s,r,a),l=Gt[i];s=o[l],r=o[l+1],o[l]=c,o[l+1]=u}for(let i=0;i<50;i+=10){for(let a=0;a<10;a++)t[a]=o[i+a];for(let a=0;a<10;a++)o[i+a]^=~t[(a+2)%10]&t[(a+4)%10]}o[0]^=Cs[n],o[1]^=Es[n]}zt(t)}class Je{constructor(e,t,n,s=!1,r=24){j(this,"state");j(this,"pos",0);j(this,"posOut",0);j(this,"finished",!1);j(this,"state32");j(this,"destroyed",!1);j(this,"blockLen");j(this,"suffix");j(this,"outputLen");j(this,"enableXOF",!1);j(this,"rounds");if(this.blockLen=e,this.suffix=t,this.outputLen=n,this.enableXOF=s,this.rounds=r,$t(n,"outputLen"),!(0<e&&e<200))throw new Error("only keccak-f1600 function is supported");this.state=new Uint8Array(200),this.state32=Vt(this.state)}clone(){return this._cloneInto()}keccak(){vt(this.state32),Rs(this.state32,this.rounds),vt(this.state32),this.posOut=0,this.pos=0}update(e){At(this),z(e);const{blockLen:t,state:n}=this,s=e.length;for(let r=0;r<s;){const i=Math.min(t-this.pos,s-r);for(let a=0;a<i;a++)n[this.pos++]^=e[r++];this.pos===t&&this.keccak()}return this}finish(){if(this.finished)return;this.finished=!0;const{state:e,suffix:t,pos:n,blockLen:s}=this;e[n]^=t,(t&128)!==0&&n===s-1&&this.keccak(),e[s-1]^=128,this.keccak()}writeInto(e){At(this,!1),z(e),this.finish();const t=this.state,{blockLen:n}=this;for(let s=0,r=e.length;s<r;){this.posOut>=n&&this.keccak();const i=Math.min(n-this.posOut,r-s);e.set(t.subarray(this.posOut,this.posOut+i),s),this.posOut+=i,s+=i}return e}xofInto(e){if(!this.enableXOF)throw new Error("XOF is not possible for this instance");return this.writeInto(e)}xof(e){return $t(e),this.xofInto(new Uint8Array(e))}digestInto(e){if(ks(e,this),this.finished)throw new Error("digest() was already called");return this.writeInto(e),this.destroy(),e}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=!0,zt(this.state)}_cloneInto(e){const{blockLen:t,suffix:n,outputLen:s,rounds:r,enableXOF:i}=this;return e||(e=new Je(t,n,s,i,r)),e.state32.set(this.state32),e.pos=this.pos,e.posOut=this.posOut,e.finished=this.finished,e.rounds=r,e.suffix=n,e.outputLen=s,e.enableXOF=i,e.destroyed=this.destroyed,e}}const en=(o,e,t,n={})=>Jt(()=>new Je(e,o,t),n),qs=en(6,136,32,ze(8)),Os=en(6,72,64,ze(10)),tn=(o,e,t,n={})=>Jt((s={})=>new Je(e,o,s.dkLen===void 0?t:s.dkLen,!0),n),Ws=tn(31,168,16,ze(11)),nn=tn(31,136,32,ze(12));function wt(o){if(!Number.isSafeInteger(o)||o<0||o>4294967295)throw new Error("wrong u32 integer:"+o);return o}function sn(o){return wt(o),(o&o-1)===0&&o!==0}function rn(o,e){wt(o);let t=0;for(let n=0;n<e;n++,o>>>=1)t=t<<1|o&1;return t}function on(o){return wt(o),31-Math.clz32(o)}function Mt(o){const e=o.length;if(e<2||!sn(e))throw new Error("n must be a power of 2 and greater than 1. Got "+e);const t=on(e);for(let n=0;n<e;n++){const s=rn(n,t);if(n<s){const r=o[n];o[n]=o[s],o[s]=r}}return o}const Tt=(o,e)=>{const{N:t,roots:n,dit:s,invertButterflies:r=!1,skipStages:i=0,brp:a=!0}=e,c=on(t);if(!sn(t))throw new Error("FFT: Polynomial size should be power of two");const u=s!==r;return l=>{if(l.length!==t)throw new Error("FFT: wrong Polynomial length");s&&a&&Mt(l);for(let h=0,p=1;h<c-i;h++){const d=s?h+1+i:c-h,b=1<<d,A=b>>1,R=t>>d;for(let f=0;f<t;f+=b)for(let m=0,w=p++;m<A;m++){const C=r?s?t-w:w:m*R,_=f+m,$=f+m+A,v=n[C],I=l[$],S=l[_];if(u){const H=o.mul(I,v);l[_]=o.add(S,H),l[$]=o.sub(S,H)}else r?(l[_]=o.add(I,S),l[$]=o.mul(o.sub(I,S),v)):(l[_]=o.add(S,I),l[$]=o.mul(o.sub(S,I),v))}}return!s&&a&&Mt(l),l}};/*! noble-post-quantum - MIT License (c) 2024 Paul Miller (paulmillr.com) */const Ct=As;function tt(o,e){if(o.length!==e.length)return!1;let t=0;for(let n=0;n<o.length;n++)t|=o[n]^e[n];return t===0}function Us(o){return Uint8Array.from(o)}function Le(o,...e){const t=s=>typeof s=="number"?s:s.bytesLen,n=e.reduce((s,r)=>s+t(r),0);return{bytesLen:n,encode:s=>{const r=new Uint8Array(n);for(let i=0,a=0;i<e.length;i++){const c=e[i],u=t(c),l=typeof c=="number"?s[i]:c.encode(s[i]);z(l,u,o),r.set(l,a),typeof c!="number"&&l.fill(0),a+=u}return r},decode:s=>{z(s,n,o);const r=[];for(const i of e){const a=t(i),c=s.subarray(0,a);r.push(typeof i=="number"?c:i.decode(c)),s=s.subarray(a)}return r}}}function nt(o,e){const t=e*o.bytesLen;return{bytesLen:t,encode:n=>{if(n.length!==e)throw new Error(`vecCoder.encode: wrong length=${n.length}. Expected: ${e}`);const s=new Uint8Array(t);for(let r=0,i=0;r<n.length;r++){const a=o.encode(n[r]);s.set(a,i),a.fill(0),i+=a.length}return s},decode:n=>{z(n,t);const s=[];for(let r=0;r<n.length;r+=o.bytesLen)s.push(o.decode(n.subarray(r,r+o.bytesLen)));return s}}}function X(...o){for(const e of o)if(Array.isArray(e))for(const t of e)t.fill(0);else e.fill(0)}function Et(o){return(1<<o)-1}/*! noble-post-quantum - MIT License (c) 2024 Paul Miller (paulmillr.com) */const Bs=o=>{const{newPoly:e,N:t,Q:n,F:s,ROOT_OF_UNITY:r,brvBits:i}=o,a=(f,m=n)=>{const w=f%m|0;return(w>=0?w|0:m+w|0)|0},c=(f,m=n)=>{const w=a(f,m)|0;return(w>m>>1?w-m|0:w)|0};function u(){const f=e(t);for(let m=0;m<t;m++){const w=rn(m,i),C=BigInt(r)**BigInt(w)%BigInt(n);f[m]=Number(C)|0}return f}const l=u(),h={add:(f,m)=>a((f|0)+(m|0))|0,sub:(f,m)=>a((f|0)-(m|0))|0,mul:(f,m)=>a((f|0)*(m|0))|0,inv:f=>{throw new Error("not implemented")}},p={N:t,roots:l,invertButterflies:!0,skipStages:1,brp:!1},d=Tt(h,{dit:!1,...p}),b=Tt(h,{dit:!0,...p});return{mod:a,smod:c,nttZetas:l,NTT:{encode:f=>d(f),decode:f=>{b(f);for(let m=0;m<f.length;m++)f[m]=a(s*f[m]);return f}},bitsCoder:(f,m)=>{const w=Et(f),C=f*(t/8);return{bytesLen:C,encode:_=>{const $=new Uint8Array(C);for(let v=0,I=0,S=0,H=0;v<_.length;v++)for(I|=(m.encode(_[v])&w)<<S,S+=f;S>=8;S-=8,I>>=8)$[H++]=I&Et(S);return $},decode:_=>{const $=e(t);for(let v=0,I=0,S=0,H=0;v<_.length;v++)for(I|=_[v]<<S,S+=8;S>=f;S-=f,I>>=f)$[H++]=m.decode(I&w);return $}}}}},Hs=o=>(e,t)=>{t||(t=o.blockLen);const n=new Uint8Array(e.length+2);n.set(e);const s=e.length,r=new Uint8Array(t);let i=o.create({}),a=0,c=0;return{stats:()=>({calls:a,xofs:c}),get:(u,l)=>(n[s+0]=u,n[s+1]=l,i.destroy(),i=o.create({}).update(n),a++,()=>(c++,i.xofInto(r))),clean:()=>{i.destroy(),X(r,n)}}},Ps=Hs(Ws);/*! noble-post-quantum - MIT License (c) 2024 Paul Miller (paulmillr.com) */const Q=256,ue=3329,Ks=3303,Ns=17,{mod:Ce,nttZetas:Qs,NTT:ie,bitsCoder:Ls}=Bs({N:Q,Q:ue,F:Ks,ROOT_OF_UNITY:Ns,newPoly:o=>new Uint16Array(o),brvBits:7}),Fs={768:{N:Q,Q:ue,K:3,ETA1:2,ETA2:2,du:10,dv:4,RBGstrength:192}},js=o=>{if(o>=12)return{encode:t=>t,decode:t=>t};const e=2**(o-1);return{encode:t=>((t<<o)+ue/2)/ue,decode:t=>t*ue+e>>>o}},$e=o=>Ls(o,js(o));function oe(o,e){for(let t=0;t<Q;t++)o[t]=Ce(o[t]+e[t])}function Ds(o,e){for(let t=0;t<Q;t++)o[t]=Ce(o[t]-e[t])}function Vs(o,e,t,n,s){const r=Ce(e*n*s+o*t),i=Ce(o*n+e*t);return{c0:r,c1:i}}function He(o,e){for(let t=0;t<Q/2;t++){let n=Qs[64+(t>>1)];t&1&&(n=-n);const{c0:s,c1:r}=Vs(o[2*t+0],o[2*t+1],e[2*t+0],e[2*t+1],n);o[2*t+0]=s,o[2*t+1]=r}return o}function Rt(o){const e=new Uint16Array(Q);for(let t=0;t<Q;){const n=o();if(n.length%3)throw new Error("SampleNTT: unaligned block");for(let s=0;t<Q&&s+3<=n.length;s+=3){const r=(n[s+0]>>0|n[s+1]<<8)&4095,i=(n[s+1]>>4|n[s+2]<<4)&4095;r<ue&&(e[t++]=r),t<Q&&i<ue&&(e[t++]=i)}}return e}function Ae(o,e,t,n){const s=o(n*Q/4,e,t),r=new Uint16Array(Q),i=Vt(s);let a=0;for(let c=0,u=0,l=0,h=0;c<i.length;c++){let p=i[c];for(let d=0;d<32;d++)l+=p&1,p>>=1,a+=1,a===n?(h=l,l=0):a===2*n&&(r[u++]=Ce(h-l),l=0,a=0)}if(a)throw new Error(`sampleCBD: leftover bits: ${a}`);return r}const zs=o=>{const{K:e,PRF:t,XOF:n,HASH512:s,ETA1:r,ETA2:i,du:a,dv:c}=o,u=$e(1),l=$e(c),h=$e(a),p=Le("publicKey",nt($e(12),e),32),d=nt($e(12),e),b=Le("ciphertext",nt(h,e),l),A=Le("seed",32,32);return{secretCoder:d,lengths:{secretKey:d.bytesLen,publicKey:p.bytesLen,cipherText:b.bytesLen},keygen:R=>{z(R,32,"seed");const f=new Uint8Array(33);f.set(R),f[32]=e;const m=s(f),[w,C]=A.decode(m),_=[],$=[];for(let S=0;S<e;S++)_.push(ie.encode(Ae(t,C,S,r)));const v=n(w);for(let S=0;S<e;S++){const H=ie.encode(Ae(t,C,e+S,r));for(let q=0;q<e;q++){const fe=Rt(v.get(q,S));oe(H,He(fe,_[q]))}$.push(H)}v.clean();const I={publicKey:p.encode([$,w]),secretKey:d.encode(_)};return X(w,C,_,$,f,m),I},encrypt:(R,f,m)=>{const[w,C]=p.decode(R),_=[];for(let q=0;q<e;q++)_.push(ie.encode(Ae(t,m,q,r)));const $=n(C),v=new Uint16Array(Q),I=[];for(let q=0;q<e;q++){const fe=Ae(t,m,e+q,i),Ze=new Uint16Array(Q);for(let Ue=0;Ue<e;Ue++){const ls=Rt($.get(q,Ue));oe(Ze,He(ls,_[Ue]))}oe(fe,ie.decode(Ze)),I.push(fe),oe(v,He(w[q],_[q])),X(Ze)}$.clean();const S=Ae(t,m,2*e,i);oe(S,ie.decode(v));const H=u.decode(f);return oe(H,S),X(w,_,v,S),b.encode([I,H])},decrypt:(R,f)=>{const[m,w]=b.decode(R),C=d.decode(f),_=new Uint16Array(Q);for(let $=0;$<e;$++)oe(_,He(C[$],ie.encode(m[$])));return Ds(w,ie.decode(_)),X(_,C,m),u.encode(w)}}};function Js(o){const e=zs(o),{HASH256:t,HASH512:n,KDF:s}=o,{secretCoder:r,lengths:i}=e,a=Le("secretKey",i.secretKey,i.publicKey,32,32),c=32,u=64;return{info:{type:"ml-kem"},lengths:{...i,seed:64,msg:c,msgRand:c,secretKey:a.bytesLen},keygen:(l=Ct(u))=>{z(l,u,"seed");const{publicKey:h,secretKey:p}=e.keygen(l.subarray(0,32)),d=t(h),b=a.encode([p,h,d,l.subarray(32)]);return X(p,d),{publicKey:h,secretKey:b}},getPublicKey:l=>{const[h,p]=a.decode(l);return Uint8Array.from(p)},encapsulate:(l,h=Ct(c))=>{z(l,i.publicKey,"publicKey"),z(h,c,"message");const p=l.subarray(0,384*o.K),d=r.encode(r.decode(Us(p)));if(!tt(d,p))throw X(d),new Error("ML-KEM.encapsulate: wrong publicKey modulus");X(d);const b=n.create().update(h).update(t(l)).digest(),A=e.encrypt(l,h,b.subarray(32,64));return X(b.subarray(32)),{cipherText:A,sharedSecret:b.subarray(0,32)}},decapsulate:(l,h)=>{z(h,a.bytesLen,"secretKey"),z(l,i.cipherText,"cipherText");const p=a.bytesLen-96,d=p+32,b=t(h.subarray(p/2,d));if(!tt(b,h.subarray(d,d+32)))throw new Error("invalid secretKey: hash check failed");const[A,R,f,m]=a.decode(h),w=e.decrypt(l,A),C=n.create().update(w).update(f).digest(),_=C.subarray(0,32),$=e.encrypt(R,w,C.subarray(32,64)),v=tt(l,$),I=s.create({dkLen:32}).update(m).update(l).digest();return X(w,$,v?I:_),v?_:I}}}function Gs(o,e,t){return nn.create({dkLen:o}).update(e).update(new Uint8Array([t])).digest()}const Xs={HASH256:qs,HASH512:Os,KDF:nn,XOF:Ps,PRF:Gs},st=Js({...Xs,...Fs[768]});class k{constructor({secret:e=null,bundle:t=null,token:n="USER",address:s=null,position:r=null,batchId:i=null,characters:a=null}){this.token=n,this.balance="0",this.molecules={},this.key=null,this.privkey=null,this.pubkey=null,this.tokenUnits=[],this.tradeRates={},this.address=s,this.position=r,this.bundle=t,this.batchId=i,this.characters=a,e&&(this.bundle=this.bundle||de(e,"Wallet::constructor"),this.position=this.position||k.generatePosition(),this.key=k.generateKey({secret:e,token:this.token,position:this.position}),this.address=this.address||k.generateAddress(this.key),this.characters=this.characters||"BASE64",this.initializeMLKEM())}static create({secret:e=null,bundle:t=null,token:n,batchId:s=null,characters:r=null}){let i=null;if(!e&&!t)throw new et;return e&&!t&&(i=k.generatePosition(),t=de(e,"Wallet::create")),new k({secret:e,bundle:t,token:n,position:i,batchId:s,characters:r})}static isBundleHash(e){return typeof e!="string"?!1:e.length===64&&Ke(e)}static getTokenUnits(e){const t=[];return e.forEach(n=>{t.push(pe.createFromDB(n))}),t}static generateKey({secret:e,token:t,position:n}){if(!e)throw new et("Wallet::generateKey() - Secret is required!");if(!n)throw new et("Wallet::generateKey() - Position is required!");const s=Ke(e)?e:Qe(e,1024),r=Ke(n)?n:Qe(n,256),a=BigInt(`0x${s}`)+BigInt(`0x${r}`),c=new L("SHAKE256","TEXT");c.update(a.toString(16)),t&&c.update(t);const u=new L("SHAKE256","TEXT");return u.update(c.getHash("HEX",{outputLen:8192})),u.getHash("HEX",{outputLen:8192})}static generateAddress(e){const t=Me(e,128),n=new L("SHAKE256","TEXT");for(const r in t){let i=t[r];for(let a=1;a<=16;a++){const c=new L("SHAKE256","TEXT");c.update(i),i=c.getHash("HEX",{outputLen:512})}n.update(i)}const s=new L("SHAKE256","TEXT");return s.update(n.getHash("HEX",{outputLen:8192})),s.getHash("HEX",{outputLen:256})}static generatePosition(e=64){return De(e,"abcdef0123456789")}initializeMLKEM(){const e=Fe(this.key,128),t=new Uint8Array(64);for(let r=0;r<64;r++)t[r]=parseInt(e.substr(r*2,2),16);const{publicKey:n,secretKey:s}=st.keygen(t);this.pubkey=this.serializeKey(n),this.privkey=s}serializeKey(e){return btoa(String.fromCharCode.apply(null,e))}deserializeKey(e){const t=atob(e);return new Uint8Array(t.length).map((n,s)=>t.charCodeAt(s))}balanceAsNumber(){return Number(this.balance)}balanceAsBigInt(){const e=String(this.balance),t=e.includes(".")?e.split(".")[0]:e;return BigInt(t||"0")}setBalanceBigInt(e){this.balance=e.toString()}setBalanceNumber(e){this.balance=String(e)}getTokenUnitsData(){const e=[];return this.tokenUnits.forEach(t=>{e.push(t.toData())}),e}splitUnits(e,t,n=null){if(e.length===0)return;const s=[],r=[];this.tokenUnits.forEach(i=>{e.includes(i.id)?s.push(i):r.push(i)}),this.tokenUnits=s,n!==null&&(n.tokenUnits=s),t.tokenUnits=r}splitUnitsMulti(e,t,n){const s=new Set;e.forEach(r=>{r.forEach(i=>s.add(i))}),s.size!==0&&(t.forEach((r,i)=>{const a=e[i];r.tokenUnits=this.tokenUnits.filter(c=>a.includes(c.id))}),n.tokenUnits=this.tokenUnits.filter(r=>!s.has(r.id)),this.tokenUnits=this.tokenUnits.filter(r=>s.has(r.id)))}createRemainder(e){const t=k.create({secret:e,token:this.token,characters:this.characters});return t.initBatchId({sourceWallet:this,isRemainder:!0}),t}isShadow(){return(typeof this.position>"u"||this.position===null)&&(typeof this.address>"u"||this.address===null)}initBatchId({sourceWallet:e,isRemainder:t=!1}){e.batchId&&(this.batchId=t?e.batchId:Te({}))}async encryptMessage(e,t){const n=JSON.stringify(e),s=new TextEncoder().encode(n),r=this.deserializeKey(t),{cipherText:i,sharedSecret:a}=st.encapsulate(r),c=await this.encryptWithSharedSecret(s,a);return{cipherText:this.serializeKey(i),encryptedMessage:this.serializeKey(c)}}async decryptMessage(e){const t=await this._mlkemDecryptToString(e);return t===null?null:JSON.parse(t)}async _mlkemDecryptToString(e){const{cipherText:t,encryptedMessage:n}=e;let s;try{s=st.decapsulate(this.deserializeKey(t),this.privkey)}catch(a){return console.error("Wallet::decryptMessage() - Decapsulation failed",a),console.info("Wallet::decryptMessage() - my public key",this.pubkey),null}let r;try{r=this.deserializeKey(n)}catch(a){return console.warn("Wallet::decryptMessage() - Deserialization failed",a),console.info("Wallet::decryptMessage() - my public key",this.pubkey),console.info("Wallet::decryptMessage() - our shared secret",s),null}let i;try{i=await this.decryptWithSharedSecret(r,s)}catch(a){return console.warn("Wallet::decryptMessage() - Decryption failed",a),console.info("Wallet::decryptMessage() - my public key",this.pubkey),console.info("Wallet::decryptMessage() - our shared secret",s),console.info("Wallet::decryptMessage() - deserialized encrypted message",r),null}try{return new TextDecoder().decode(i)}catch(a){return console.warn("Wallet::decryptMessage() - Decoding failed",a),console.info("Wallet::decryptMessage() - my public key",this.pubkey),console.info("Wallet::decryptMessage() - our shared secret",s),console.info("Wallet::decryptMessage() - deserialized encrypted message",r),console.info("Wallet::decryptMessage() - decrypted Uint8Array",i),null}}hashShare(e){const t=Qe(e,64),n=Uint8Array.from(t.match(/.{2}/g).map(s=>parseInt(s,16)));return this.serializeKey(n)}async encryptStringML768(e,t){const n=await this.encryptMessage(e,t);return JSON.stringify({[this.hashShare(t)]:n})}async decryptMyMessageML768(e){const t=e[this.hashShare(this.pubkey)];return t?this._mlkemDecryptToString(t):null}async encryptWithSharedSecret(e,t){const n=crypto.getRandomValues(new Uint8Array(12)),s={name:"AES-GCM",iv:n},r=await crypto.subtle.importKey("raw",t,{name:"AES-GCM"},!1,["encrypt"]),i=await crypto.subtle.encrypt(s,r,e),a=new Uint8Array(n.length+i.byteLength);return a.set(n),a.set(new Uint8Array(i),n.length),a}async decryptWithSharedSecret(e,t){const s={name:"AES-GCM",iv:e.slice(0,12)},r=await crypto.subtle.importKey("raw",t,{name:"AES-GCM"},!1,["decrypt"]),i=await crypto.subtle.decrypt(s,r,e.slice(12));return new Uint8Array(i)}}class ye extends x{constructor(e="There is an atom without an index",t=null,n=null){super(e,t,n),this.name="AtomIndexException"}}class an extends x{constructor(e="The molecular hash does not match",t=null,n=null){super(e,t,n),this.name="MolecularHashMismatchException"}}class ln extends x{constructor(e="The molecular hash is missing",t=null,n=null){super(e,t,n),this.name="MolecularHashMissingException"}}class at extends x{constructor(e="",t=null,n=null){super(e,t,n),this.name="PolicyInvalidException"}}class kt extends x{constructor(e="OTS malformed",t=null,n=null){super(e,t,n),this.name="SignatureMalformedException"}}class cn extends x{constructor(e="One-time signature (OTS) does not match!",t=null,n=null){super(e,t,n),this.name="SignatureMismatchException"}}class J extends x{constructor(e="Insufficient balance to make transfer",t=null,n=null){super(e,t,n),this.name="TransferBalanceException"}}class ge extends x{constructor(e="Token transfer atoms are malformed",t=null,n=null){super(e,t,n),this.name="TransferMalformedException"}}class lt extends x{constructor(e="Token slugs for wallets in transfer do not match!",t=null,n=null){super(e,t,n),this.name="TransferMismatchedException"}}class ct extends x{constructor(e="Invalid remainder provided",t=null,n=null){super(e,t,n),this.name="TransferRemainderException"}}class un extends x{constructor(e="Sender and recipient(s) cannot be the same",t=null,n=null){super(e,t,n),this.name="TransferToSelfException"}}class ve extends x{constructor(e="Token transfer atoms are unbalanced",t=null,n=null){super(e,t,n),this.name="TransferUnbalancedException"}}class U extends x{constructor(e="Empty meta data.",t=null,n=null){super(e,t,n),this.name="MetaMissingException"}}class ne extends x{constructor(e="Wrong type of token for this isotope",t=null,n=null){super(e,t,n),this.name="WrongTokenTypeException"}}class xe extends x{constructor(e="Incorrect BatchId",t=null,n=null){super(e,t,n),this.name="BatchIdException"}}class qt{constructor(e={}){for(const t in e)this[`__${t}`]=e[t]}static toObject(e){return new this(e)}toJSON(){const e={};for(const t of Object.keys(this))t.substring(0,2)==="__"&&(e[t.substring(2,t.length)]=this[t]);return e}}class je extends x{constructor(e="An incorrect argument!",t=null,n=null){super(e,t,n),this.name="RuleArgumentException"}}class ee extends x{constructor(e="Code exception",t=null,n=null){super(e,t,n),this.name="CodeException"}}class Ie{constructor({action:e,metaType:t=null,metaId:n=null,meta:s=null,address:r=null,token:i=null,amount:a=null,comparison:c=null}){if(s&&(this.meta=s),!e)throw new je('Callback structure violated, missing mandatory "action" parameter.');this.__metaId=n,this.__metaType=t,this.__action=e,this.__address=r,this.__token=i,this.__amount=a,this.__comparison=c}set comparison(e){this.__comparison=e}set amount(e){if(!Lt(e))throw new ee("Parameter amount should be a string containing numbers");this.__amount=e}set token(e){this.__token=e}set address(e){this.__address=e}set meta(e){this.__meta=e instanceof qt?e:qt.toObject(e)}set metaType(e){this.__metaType=e}set metaId(e){this.__metaId=e}static toObject(e){const t=new Ie({action:e.action});return e.metaType&&(t.metaType=e.metaType),e.metaId&&(t.metaId=e.metaId),e.meta&&(t.meta=e.meta),e.address&&(t.address=e.address),e.token&&(t.token=e.token),e.amount&&(t.amount=e.amount),e.comparison&&(t.comparison=e.comparison),t}toJSON(){const e={action:this.__action};return this.__metaType&&(e.metaType=this.__metaType),this.__metaId&&(e.metaId=this.__metaId),this.__meta&&(e.meta=this.__meta),this.__address&&(e.address=this.__address),this.__token&&(e.token=this.__token),this.__amount&&(e.amount=this.__amount),this.__comparison&&(e.comparison=this.__comparison),e}isReject(){return this._is("reject")}isMeta(){return me(Object.keys(this.toJSON()),["action","metaId","metaType","meta"]).length===4&&this._is("meta")}isCollect(){return me(Object.keys(this.toJSON()),["action","address","token","amount","comparison"]).length===5&&this._is("collect")}isBuffer(){return me(Object.keys(this.toJSON()),["action","address","token","amount","comparison"]).length===5&&this._is("buffer")}isRemit(){return me(Object.keys(this.toJSON()),["action","token","amount"]).length===3&&this._is("remit")}isBurn(){return me(Object.keys(this.toJSON()),["action","token","amount","comparison"]).length===4&&this._is("burn")}_is(e){return this.__action.toLowerCase()===e.toLowerCase()}}class rt{constructor({key:e,value:t,comparison:n}){if([e,t,n].some(s=>!s))throw new je("Condition::constructor( { key, value, comparison } ) - not all class parameters are initialised!");this.__key=e,this.__value=t,this.__comparison=n}static toObject(e){return new this({key:e.key,value:e.value,comparison:e.comparison})}toJSON(){return{key:this.__key,value:this.__value,comparison:this.__comparison}}}class Ee{constructor({condition:e=[],callback:t=[]}){for(const n of e)if(!(n instanceof rt))throw new je;for(const n of t)if(!(n instanceof Ie))throw new je;this.__condition=e,this.__callback=t}set comparison(e){this.__condition.push(e instanceof rt?e:rt.toObject(e))}set callback(e){this.__callback.push(e instanceof Ie?e:Ie.toObject(e))}static toObject(e){if(!e.condition)throw new U("Rule::toObject() - Incorrect rule format! There is no condition field.");if(!e.callback)throw new U("Rule::toObject() - Incorrect rule format! There is no callback field.");const t=new Ee({});for(const n of e.condition)t.comparison=n;for(const n of e.callback)t.callback=n;return t}toJSON(){return{condition:this.__condition,callback:this.__callback}}}class M{static __init(e,t){this.arr=String(t).split("."),this.key=this.arr.shift();const n=Number(this.key);Number.isInteger(n)&&(this.key=n),this.__nextKey=this.arr.length,this.__next=this.__tic(e)}static __tic(e){return!Array.isArray(e)&&!(e instanceof Object)?!1:typeof e[this.key]<"u"}static has(e,t){return this.__init(e,t),this.__next?this.__nextKey===0?!0:this.has(e[this.key],this.arr.join(".")):!1}static get(e,t,n=null){return this.__init(e,t),this.__next?this.__nextKey===0?e[this.key]:this.get(e[this.key],this.arr.join("."),n):n}static set(e,t,n){const s=t.split(".");let r=e;const i=s.length-1;for(let u=0;u<i;u++){const l=s[u],h=Number(l),p=Number.isInteger(h);(p?h:l in r)||(r[p?h:l]=s[u+1].match(/^\d+$/)?[]:{}),r=r[p?h:l]}const a=s[i],c=Number(a);return r[Number.isInteger(c)?c:a]=n,e}}class we{constructor(e){if(e.molecularHash===null)throw new ln;if(!e.atoms.length)throw new se;for(const t of e.atoms)if(t.index===null)throw new ye;this.molecule=e}verify(e){return this.molecularHash()&&this.ots()&&this.batchId()&&this.continuId()&&this.isotopeM()&&this.isotopeT()&&this.isotopeC()&&this.isotopeU()&&this.isotopeI()&&this.isotopeR()&&this.isotopeP()&&this.isotopeA()&&this.isotopeB()&&this.isotopeF()&&this.isotopeV(e)}continuId(){if(this.molecule.atoms[0].token==="USER"&&this.molecule.getIsotopes("I").length<1)throw new se("Check::continuId() - Molecule is missing required ContinuID Atom!");return!0}batchId(){if(this.molecule.atoms.length>0){const e=this.molecule.atoms[0];if(e.isotope==="V"&&e.batchId!==null){const t=this.molecule.getIsotopes("V"),n=t[t.length-1];if(e.batchId!==n.batchId)throw new xe;for(const s of t)if(s.batchId===null)throw new xe}return!0}throw new xe}isotopeI(){for(const e of this.molecule.getIsotopes("I")){if(e.token!=="USER")throw new ne(`Check::isotopeI() - "${e.token}" is not a valid Token slug for "${e.isotope}" isotope Atoms!`);if(e.index===0)throw new ye(`Check::isotopeI() - Isotope "${e.isotope}" Atoms must have a non-zero index!`)}return!0}isotopeU(){for(const e of this.molecule.getIsotopes("U")){if(e.token!=="AUTH")throw new ne(`Check::isotopeU() - "${e.token}" is not a valid Token slug for "${e.isotope}" isotope Atoms!`);if(e.index!==0)throw new ye(`Check::isotopeU() - Isotope "${e.isotope}" Atoms must have an index equal to 0!`)}return!0}isotopeM(){const e=["readPolicy","writePolicy"];for(const t of this.molecule.getIsotopes("M")){if(t.meta.length<1)throw new U;if(t.token!=="USER")throw new ne(`Check::isotopeM() - "${t.token}" is not a valid Token slug for "${t.isotope}" isotope Atoms!`);const n=he.aggregateMeta(t.meta);for(const s of e){let r=n[s];if(r){r=JSON.parse(r);for(const[i,a]of Object.entries(r))if(!e.includes(i)){if(!Object.keys(n).includes(i))throw new at(`${i} is missing from the meta.`);for(const c of a)if(!k.isBundleHash(c)&&!["all","self"].includes(c))throw new at(`${c} does not correspond to the format of the policy.`)}}}}return!0}isotopeC(){for(const e of this.molecule.getIsotopes("C")){if(e.token!=="USER")throw new ne(`Check::isotopeC() - "${e.token}" is not a valid Token slug for "${e.isotope}" isotope Atoms!`);if(e.index!==0)throw new ye(`Check::isotopeC() - Isotope "${e.isotope}" Atoms must have an index equal to 0!`)}return!0}isotopeT(){for(const e of this.molecule.getIsotopes("T")){const t=e.aggregatedMeta();if(String(e.metaType).toLowerCase()==="wallet"){for(const s of["position","bundle"])if(!Object.prototype.hasOwnProperty.call(t,s)||!t[s])throw new U(`Check::isotopeT() - Required meta field "${s}" is missing!`)}for(const s of["token"])if(!Object.prototype.hasOwnProperty.call(t,s)||!t[s])throw new U(`Check::isotopeT() - Required meta field "${s}" is missing!`);if(e.token!=="USER")throw new ne(`Check::isotopeT() - "${e.token}" is not a valid Token slug for "${e.isotope}" isotope Atoms!`);if(e.index!==0)throw new ye(`Check::isotopeT() - Isotope "${e.isotope}" Atoms must have an index equal to 0!`)}return!0}isotopeR(){for(const e of this.molecule.getIsotopes("R")){const t=e.aggregatedMeta();if(t.policy){const n=JSON.parse(t.policy);if(!Object.keys(n).every(s=>["read","write"].includes(s)))throw new U("Check::isotopeR() - Mixing rules with politics!")}if(t.rule){const n=JSON.parse(t.rule);if(!Array.isArray(n))throw new U("Check::isotopeR() - Incorrect rule format!");for(const s of n)Ee.toObject(s);if(n.length<1)throw new U("Check::isotopeR() - No rules!")}}return!0}isotopeP(){for(const e of this.molecule.getIsotopes("P")){if(e.token!=="USER")throw new ne(`Check::isotopeP() - "${e.token}" is not a valid Token slug for "${e.isotope}" isotope Atoms!`);const t=e.aggregatedMeta();if(!Object.prototype.hasOwnProperty.call(t,"peerHost")||!t.peerHost)throw new U('Check::isotopeP() - Required meta field "peerHost" is missing!')}return!0}isotopeA(){for(const e of this.molecule.getIsotopes("A")){if(e.token!=="USER")throw new ne(`Check::isotopeA() - "${e.token}" is not a valid Token slug for "${e.isotope}" isotope Atoms!`);if(!e.metaType)throw new U('Check::isotopeA() - Required field "metaType" is missing!');if(!e.metaId)throw new U('Check::isotopeA() - Required field "metaId" is missing!');const t=e.aggregatedMeta();if(!Object.prototype.hasOwnProperty.call(t,"action")||!t.action)throw new U('Check::isotopeA() - Required meta field "action" is missing!')}return!0}isotopeB(){const e=this.molecule.getIsotopes("B");if(e.length===0)return!0;for(const n of e){if(!n.metaType||n.metaType!=="walletBundle")throw new U('Check::isotopeB() - B-isotope atoms must have metaType "walletBundle"!');if(!n.metaId)throw new U("Check::isotopeB() - B-isotope atoms must have a metaId!");const s=Number(n.value);if(Number.isNaN(s))throw new ge("Check::isotopeB() - B-isotope atom value is not a valid number!")}const t=this.molecule.getIsotopes("V");if(t.length>0){let n=0;for(const s of[...t,...e]){const r=Number(s.value);Number.isNaN(r)||(n+=r)}if(n!==0)throw new ve("Check::isotopeB() - V+B atom values do not balance to zero!")}return!0}isotopeF(){const e=this.molecule.getIsotopes("F");if(e.length===0)return!0;for(const n of e){if(!n.metaType||n.metaType!=="walletBundle")throw new U('Check::isotopeF() - F-isotope atoms must have metaType "walletBundle"!');if(!n.metaId)throw new U("Check::isotopeF() - F-isotope atoms must have a metaId!");const s=Number(n.value);if(Number.isNaN(s))throw new ge("Check::isotopeF() - F-isotope atom value is not a valid number!");if(s<0)throw new ge("Check::isotopeF() - F-isotope atom value must not be negative!")}const t=this.molecule.getIsotopes("V");if(t.length>0){let n=0;for(const s of[...t,...e]){const r=Number(s.value);Number.isNaN(r)||(n+=r)}if(n!==0)throw new ve("Check::isotopeF() - V+F atom values do not balance to zero!")}return!0}isotopeV(e=null){const t=this.molecule.getIsotopes("V");if(t.length===0)return!0;const n=this.molecule.getIsotopes("B").length>0||this.molecule.getIsotopes("F").length>0,s=this.molecule.atoms[0];if(!n&&s.isotope==="V"&&t.length===2){const a=t[t.length-1];if(s.token!==a.token)throw new lt;if(a.value<0)throw new ge;if(Number(s.value)+Number(a.value)!==0)throw new ve;return!0}let r=0,i=0;for(const a in this.molecule.atoms)if(Object.prototype.hasOwnProperty.call(this.molecule.atoms,a)){const c=this.molecule.atoms[a];if(c.isotope!=="V")continue;if(i=c.value*1,Number.isNaN(i))throw new TypeError('Invalid isotope "V" values');if(c.token!==s.token)throw new lt;if(a>0){if(i<0)throw new ge;if(c.walletAddress===s.walletAddress)throw new un}r+=i}if(!n&&r!==0)throw new ve;if(e){if(i=s.value*1,Number.isNaN(i))throw new TypeError('Invalid isotope "V" values');const a=Number(e.balance)+i;if(a<0)throw new J;if(!n&&a!==r)throw new ct}else if(i!==0)throw new ct;return!0}molecularHash(){if(this.molecule.molecularHash!==g.hashAtoms({atoms:this.molecule.atoms}))throw new an;return!0}ots(){const e=this.molecule.normalizedHash();let t=this.molecule.atoms.map(p=>p.otsFragment).reduce((p,d)=>p+d);if(t.length!==2048&&(t=Qt(t),t.length!==2048))throw new kt;const n=Me(t,128);let s="";for(const p in n){let d=n[p];for(let b=0,A=8+e[p];b<A;b++)d=new L("SHAKE256","TEXT").update(d).getHash("HEX",{outputLen:512});s+=d}const r=new L("SHAKE256","TEXT");r.update(s);const i=r.getHash("HEX",{outputLen:8192}),a=new L("SHAKE256","TEXT");a.update(i);const c=a.getHash("HEX",{outputLen:256}),u=this.molecule.atoms[0];let l=u.walletAddress;const h=M.get(u.aggregatedMeta(),"signingWallet");if(h&&(l=M.get(JSON.parse(h),"address")),c!==l)throw new cn;return!0}static fromServerData({molecularHash:e,bundleHash:t,cellSlug:n=null,status:s=null,createdAt:r=null,atoms:i=[]}){const a=i.map(c=>{let u=[];if(c.metasJson)try{const l=JSON.parse(c.metasJson);Array.isArray(l)?u=l:l&&typeof l=="object"&&(u=Object.entries(l).map(([h,p])=>({key:h,value:p})))}catch{u=[]}return{position:c.position||null,walletAddress:c.walletAddress||null,isotope:c.isotope||null,token:c.tokenSlug||c.token||null,value:c.value!=null?String(c.value):null,batchId:c.batchId||null,metaType:c.metaType||null,metaId:c.metaId||null,meta:u,index:c.index!=null?c.index:null,otsFragment:c.otsFragment||null,createdAt:c.createdAt||null}});return V.fromJSON({molecularHash:e,bundle:t,cellSlug:n,status:s,createdAt:r,atoms:a})}static verifyFromServerData(e){try{const t=we.fromServerData(e);return new we(t).verify(),{molecularHash:e.molecularHash,verified:!0,error:null}}catch(t){return{molecularHash:e.molecularHash||null,verified:!1,error:t.message||String(t)}}}}class le extends x{constructor(e="Insufficient balance for requested transfer",t=null,n=null){super(e,t,n),this.name="BalanceInsufficientException"}}class ut extends x{constructor(e="Amount cannot be negative!",t=null,n=null){super(e,t,n),this.name="NegativeAmountException"}}class V{constructor({secret:e=null,bundle:t=null,sourceWallet:n=null,remainderWallet:s=null,cellSlug:r=null,version:i=null,continuIdPosition:a=null}){this.status=null,this.molecularHash=null,this.createdAt=String(+new Date),this.cellSlugOrigin=this.cellSlug=r,this.secret=e,this.bundle=t,this.sourceWallet=n,this.continuIdPosition=a,this.atoms=[],this.parentHashes=[],i!==null&&Object.prototype.hasOwnProperty.call(Ne,i)&&(this.version=String(i)),(s||n)&&(this.remainderWallet=s||k.create({secret:e,bundle:t,token:n.token,batchId:n.batchId,characters:n.characters}))}withParentHashes(e){return this.parentHashes=Array.isArray(e)?[...e]:[],this}get cellSlugDelimiter(){return"."}static isotopeFilter(e,t){return Array.isArray(e)||(e=[e]),t.filter(n=>e.includes(n.isotope))}static generateNextAtomIndex(e){return e.length}static jsonToObject(e){const t=Object.assign(new V({}),JSON.parse(e)),n=Object.keys(new V({}));if(!Array.isArray(t.atoms))throw new se;for(const s in Object.keys(t.atoms)){t.atoms[s]=g.jsonToObject(JSON.stringify(t.atoms[s]));for(const r of["position","walletAddress","isotope"])if(t.atoms[s].isotope.toLowerCase()!=="r"&&(typeof t.atoms[s][r]>"u"||t.atoms[s][r]===null))throw new se("MolecularStructure::jsonToObject() - Required Atom properties are missing!")}for(const s in t)Object.prototype.hasOwnProperty.call(t,s)&&!n.includes(s)&&delete t[s];return t.atoms=g.sortAtoms(t.atoms),t}static enumerate(e){const t={0:-8,1:-7,2:-6,3:-5,4:-4,5:-3,6:-2,7:-1,8:0,9:1,a:2,b:3,c:4,d:5,e:6,f:7,g:8},n=[],s=e.toLowerCase().split("");for(let r=0,i=s.length;r<i;++r){const a=s[r];typeof t[a]<"u"&&(n[r]=t[a])}return n}static normalize(e){let t=e.reduce((s,r)=>s+r);const n=t<0;for(;t<0||t>0;)for(const s of Object.keys(e))if((n?e[s]<8:e[s]>-8)&&(n?(++e[s],++t):(--e[s],--t),t===0))break;return e}getIsotopes(e){return V.isotopeFilter(e,this.atoms)}generateIndex(){return V.generateNextAtomIndex(this.atoms)}fill(e){for(const t in Object.keys(e))this[t]=e[t]}addAtom(e){return this.molecularHash=null,e.index=this.generateIndex(),e.version=this.version,this.atoms.push(e),this.atoms=g.sortAtoms(this.atoms),this}addContinuIdAtom(){(!this.remainderWallet||this.remainderWallet.token!=="USER")&&(this.remainderWallet=k.create({secret:this.secret,bundle:this.bundle}));const e={};return this.continuIdPosition?e.previousPosition=this.continuIdPosition:this.sourceWallet&&this.sourceWallet.position&&(e.previousPosition=this.sourceWallet.position),this.remainderWallet.pubkey&&(e.pubkey=this.remainderWallet.pubkey),this.remainderWallet.characters&&(e.characters=this.remainderWallet.characters),this.addAtom(g.create({isotope:"I",wallet:this.remainderWallet,metaType:"walletBundle",metaId:this.remainderWallet.bundle,meta:new B(e)})),this}addPolicyAtom({metaType:e,metaId:t,meta:n={},policy:s={}}){const r=new B(n);return r.addPolicy(s),this.addAtom(g.create({wallet:this.sourceWallet,isotope:"R",metaType:e,metaId:t,meta:r})),this}fuseToken(e,t){const n=e.length;if(this.sourceWallet.balance-n<0)throw new le;return this.addAtom(g.create({isotope:"V",wallet:this.sourceWallet,value:-n})),this.addAtom(g.create({isotope:"F",wallet:t,value:1,metaType:"walletBundle",metaId:t.bundle})),this.addAtom(g.create({isotope:"V",wallet:this.remainderWallet,value:this.sourceWallet.balance-n,metaType:"walletBundle",metaId:this.remainderWallet.bundle})),this}burnToken({amount:e,walletBundle:t=null}){if(e<0)throw new ut("Molecule::burnToken() - Amount to burn must be positive!");if(this.sourceWallet.balance-e<0)throw new le;const n=new k({bundle:"0000000000000000000000000000000000000000000000000000000000000000",token:this.sourceWallet.token});return this.addAtom(g.create({isotope:"V",wallet:this.sourceWallet,value:-this.sourceWallet.balance})),this.addAtom(g.create({isotope:"V",wallet:n,value:e,metaType:"walletBundle",metaId:n.bundle})),this.addAtom(g.create({isotope:"V",wallet:this.remainderWallet,value:this.sourceWallet.balance-e,metaType:"walletBundle",metaId:this.remainderWallet.bundle})),this}replenishToken({amount:e,units:t=[]}){if(e<0)throw new ut("Molecule::replenishToken() - Amount to replenish must be positive!");if(t.length){t=k.getTokenUnits(t),this.remainderWallet.tokenUnits=this.sourceWallet.tokenUnits;for(const n of t)this.remainderWallet.tokenUnits.push(n);this.remainderWallet.balance=String(this.remainderWallet.tokenUnits.length),this.sourceWallet.tokenUnits=t,this.sourceWallet.balance=String(this.sourceWallet.tokenUnits.length)}else this.remainderWallet.balance=String(Number(this.sourceWallet.balance)+e),this.sourceWallet.balance=String(e);return this.addAtom(g.create({isotope:"V",wallet:this.sourceWallet,value:Number(this.sourceWallet.balance)})),this.addAtom(g.create({isotope:"V",wallet:this.remainderWallet,value:Number(this.remainderWallet.balance),metaType:"walletBundle",metaId:this.remainderWallet.bundle})),this}initValue({recipientWallet:e,amount:t}){if(this.sourceWallet.balance-t<0)throw new le;return this.addAtom(g.create({isotope:"V",wallet:this.sourceWallet,value:-this.sourceWallet.balance})),this.addAtom(g.create({isotope:"V",wallet:e,value:t,metaType:"walletBundle",metaId:e.bundle})),this.addAtom(g.create({isotope:"V",wallet:this.remainderWallet,value:this.sourceWallet.balance-t,metaType:"walletBundle",metaId:this.remainderWallet.bundle})),this}initValues({recipientWallets:e,amounts:t}){const n=t.reduce((s,r)=>s+Number(r),0);if(this.sourceWallet.balance-n<0)throw new le;return this.addAtom(g.create({isotope:"V",wallet:this.sourceWallet,value:-this.sourceWallet.balance})),e.forEach((s,r)=>{this.addAtom(g.create({isotope:"V",wallet:s,value:t[r],metaType:"walletBundle",metaId:s.bundle}))}),this.addAtom(g.create({isotope:"V",wallet:this.remainderWallet,value:this.sourceWallet.balance-n,metaType:"walletBundle",metaId:this.remainderWallet.bundle})),this}initDepositBuffer({amount:e,tradeRates:t}){if(this.sourceWallet.balance-e<0)throw new le;const n=k.create({secret:this.secret,bundle:this.bundle,token:this.sourceWallet.token,batchId:this.sourceWallet.batchId});return n.tradeRates=t,this.addAtom(g.create({isotope:"V",wallet:this.sourceWallet,value:-this.sourceWallet.balance})),this.addAtom(g.create({isotope:"B",wallet:n,value:e,metaType:"walletBundle",metaId:this.sourceWallet.bundle})),this.addAtom(g.create({isotope:"V",wallet:this.remainderWallet,value:this.sourceWallet.balance-e,metaType:"walletBundle",metaId:this.sourceWallet.bundle})),this}initWithdrawBuffer({recipients:e,signingWallet:t=null}){let n=0;for(const r of Object.values(e||{}))n+=r;if(this.sourceWallet.balance-n<0)throw new le;const s=new B;t&&s.setSigningWallet(t),this.addAtom(g.create({isotope:"B",wallet:this.sourceWallet,value:-this.sourceWallet.balance,meta:s,metaType:"walletBundle",metaId:this.sourceWallet.bundle}));for(const[r,i]of Object.entries(e||{}))this.addAtom(new g({isotope:"V",token:this.sourceWallet.token,value:i,batchId:this.sourceWallet.batchId?Te({}):null,metaType:"walletBundle",metaId:r}));return this.addAtom(g.create({isotope:"B",wallet:this.remainderWallet,value:this.sourceWallet.balance-n,metaType:"walletBundle",metaId:this.remainderWallet.bundle})),this}initTokenCreation({recipientWallet:e,amount:t,meta:n}){const s=new B(n);return s.setMetaWallet(e),this.addAtom(g.create({isotope:"C",wallet:this.sourceWallet,value:t,metaType:"token",metaId:e.token,meta:s,batchId:e.batchId})),this.addContinuIdAtom(),this}createRule({metaType:e,metaId:t,rule:n,policy:s={}}){const r=[];for(const a of n)r.push(a instanceof Ee?a:Ee.toObject(a));const i=new B({rule:JSON.stringify(r)});return i.addPolicy(s),this.addAtom(g.create({isotope:"R",wallet:this.sourceWallet,metaType:e,metaId:t,meta:i})),this.addContinuIdAtom(),this}initWalletCreation(e,t=null){t||(t=new B),t.setMetaWallet(e);const n=g.create({isotope:"C",wallet:this.sourceWallet,metaType:"wallet",metaId:e.address,meta:t,batchId:e.batchId});return this.addAtom(n),this.addContinuIdAtom(),this}initShadowWalletClaim(e){const t=new B().setShadowWalletClaim(!0);return this.initWalletCreation(e,t)}initIdentifierCreation({type:e,contact:t,code:n}){const s={code:n,hash:de(t.trim(),"Molecule::initIdentifierCreation")};return this.addAtom(g.create({isotope:"C",wallet:this.sourceWallet,metaType:"identifier",metaId:e,meta:new B(s)})),this.addContinuIdAtom(),this}initMeta({meta:e,metaType:t,metaId:n,policy:s}){return this.addAtom(g.create({isotope:"M",wallet:this.sourceWallet,metaType:t,metaId:n,meta:new B(e)})),s&&Object.keys(s).length>0&&this.addPolicyAtom({metaType:t,metaId:n,meta:e,policy:s}),this.addContinuIdAtom(),this}initPeering({host:e}){return this.addAtom(g.create({isotope:"P",wallet:this.sourceWallet,metaType:"walletBundle",metaId:this.bundle,meta:new B({peerHost:e})})),this.addContinuIdAtom(),this}initAppendRequest({metaType:e,metaId:t,action:n,meta:s={}}){return this.addAtom(g.create({isotope:"A",wallet:this.sourceWallet,metaType:e,metaId:t,meta:new B({action:n,...s})})),this.addContinuIdAtom(),this}initTokenRequest({token:e,amount:t,metaType:n,metaId:s,meta:r={},batchId:i=null}){return r.token=e,r.amount=String(t),this.addAtom(g.create({isotope:"T",wallet:this.sourceWallet,value:t,metaType:n,metaId:s,meta:new B(r),batchId:i})),this.addContinuIdAtom(),this}initAuthorization({meta:e}){return this.addAtom(g.create({isotope:"U",wallet:this.sourceWallet,meta:new B(e)})),this.addContinuIdAtom(),this}sign({bundle:e=null,anonymous:t=!1,compressed:n=!0}){if(this.atoms.length===0||this.atoms.filter(d=>!(d instanceof g)).length!==0)throw new se;!t&&!this.bundle&&(this.bundle=e||de(this.secret,"Molecule::sign")),this.molecularHash=g.hashAtoms({atoms:this.atoms});const s=this.atoms[0];let r=s.position;const i=M.get(s.aggregatedMeta(),"signingWallet");if(i&&(r=M.get(JSON.parse(i),"position")),!r)throw new kt("Signing wallet must have a position!");const a=k.generateKey({secret:this.secret,token:s.token,position:s.position}),c=Me(a,128),u=this.normalizedHash();let l="";for(const d in c){let b=c[d];for(let A=0,R=8-u[d];A<R;A++)b=new L("SHAKE256","TEXT").update(b).getHash("HEX",{outputLen:512});l+=b}n&&(l=Nt(l));const h=Me(l,Math.ceil(l.length/this.atoms.length));let p=null;for(let d=0,b=h.length;d<b;d++)this.atoms[d].otsFragment=h[d],p=this.atoms[d].position;return p}signSync(e={}){return this.sign(e)}cellSlugBase(){return(this.cellSlug||"").split(this.cellSlugDelimiter)[0]}toJSON(e={}){const{includeValidationContext:t=!1,includeOtsFragments:n=!0}=e;try{const s={status:this.status,molecularHash:this.molecularHash,createdAt:this.createdAt,cellSlug:this.cellSlug,bundle:this.bundle,atoms:this.atoms.map(r=>r.toJSON({includeOtsFragments:n}))};return this.parentHashes&&this.parentHashes.length>0&&(s.parentHashes=this.parentHashes),t&&(s.cellSlugOrigin=this.cellSlugOrigin,s.version=this.version,this.sourceWallet&&(s.sourceWallet={address:this.sourceWallet.address,position:this.sourceWallet.position,token:this.sourceWallet.token,balance:this.sourceWallet.balance||"0",bundle:this.sourceWallet.bundle,batchId:this.sourceWallet.batchId||null,characters:this.sourceWallet.characters||"BASE64",pubkey:this.sourceWallet.pubkey||null,tokenUnits:this.sourceWallet.tokenUnits||[],tradeRates:this.sourceWallet.tradeRates||{},molecules:this.sourceWallet.molecules||{}}),this.remainderWallet&&(s.remainderWallet={address:this.remainderWallet.address,position:this.remainderWallet.position,token:this.remainderWallet.token,balance:this.remainderWallet.balance||"0",bundle:this.remainderWallet.bundle,batchId:this.remainderWallet.batchId||null,characters:this.remainderWallet.characters||"BASE64",pubkey:this.remainderWallet.pubkey||null,tokenUnits:this.remainderWallet.tokenUnits||[],tradeRates:this.remainderWallet.tradeRates||{},molecules:this.remainderWallet.molecules||{}})),s}catch(s){throw new Error(`Molecule serialization failed: ${s.message}`)}}static fromJSON(e,t={}){const{includeValidationContext:n=!1,validateStructure:s=!0}=t;try{const r=typeof e=="string"?JSON.parse(e):e;if(s&&(!r.molecularHash||!Array.isArray(r.atoms)))throw new Error("Invalid molecule data: missing molecularHash or atoms array");const i=new V({secret:null,bundle:r.bundle||null,cellSlug:r.cellSlug||null,version:r.version||null});return i.status=r.status,i.molecularHash=r.molecularHash,i.createdAt=r.createdAt||String(+new Date),i.cellSlugOrigin=r.cellSlugOrigin,i.parentHashes=Array.isArray(r.parentHashes)?[...r.parentHashes]:[],Array.isArray(r.atoms)&&(i.atoms=r.atoms.map((a,c)=>{try{return g.fromJSON(a)}catch(u){throw new Error(`Failed to reconstruct atom ${c}: ${u.message}`)}})),n&&(r.sourceWallet&&(i.sourceWallet=new k({secret:null,token:r.sourceWallet.token,position:r.sourceWallet.position,bundle:r.sourceWallet.bundle,batchId:r.sourceWallet.batchId,characters:r.sourceWallet.characters}),i.sourceWallet.balance=String(r.sourceWallet.balance!=null?r.sourceWallet.balance:0),i.sourceWallet.address=r.sourceWallet.address,r.sourceWallet.pubkey&&(i.sourceWallet.pubkey=r.sourceWallet.pubkey),i.sourceWallet.tokenUnits=r.sourceWallet.tokenUnits||[],i.sourceWallet.tradeRates=r.sourceWallet.tradeRates||{},i.sourceWallet.molecules=r.sourceWallet.molecules||{}),r.remainderWallet&&(i.remainderWallet=new k({secret:null,token:r.remainderWallet.token,position:r.remainderWallet.position,bundle:r.remainderWallet.bundle,batchId:r.remainderWallet.batchId,characters:r.remainderWallet.characters}),i.remainderWallet.balance=String(r.remainderWallet.balance!=null?r.remainderWallet.balance:0),i.remainderWallet.address=r.remainderWallet.address,r.remainderWallet.pubkey&&(i.remainderWallet.pubkey=r.remainderWallet.pubkey),i.remainderWallet.tokenUnits=r.remainderWallet.tokenUnits||[],i.remainderWallet.tradeRates=r.remainderWallet.tradeRates||{},i.remainderWallet.molecules=r.remainderWallet.molecules||{})),i}catch(r){throw new Error(`Molecule deserialization failed: ${r.message}`)}}check(e=null){return new we(this).verify(e)}normalizedHash(){return V.normalize(V.enumerate(this.molecularHash))}}class ke{constructor({token:e,expiresAt:t,encrypt:n,pubkey:s}){this.$__token=e,this.$__expiresAt=t,this.$__pubkey=s,this.$__encrypt=n}static create(e,t){const n=new ke(e);return n.setWallet(t),n}static restore(e,t){const n=new k({secret:t,token:"AUTH",position:e.wallet.position,characters:e.wallet.characters});return ke.create({token:e.token,expiresAt:e.expiresAt,pubkey:e.pubkey,encrypt:e.encrypt},n)}setWallet(e){this.$__wallet=e}getWallet(){return this.$__wallet}getSnapshot(){return{token:this.$__token,expiresAt:this.$__expiresAt,pubkey:this.$__pubkey,encrypt:this.$__encrypt,wallet:{position:this.$__wallet.position,characters:this.$__wallet.characters}}}getToken(){return this.$__token}getPubkey(){return this.$__pubkey}getExpireInterval(){return this.$__expiresAt*1e3-Date.now()}isExpired(){return!this.$__expiresAt||this.getExpireInterval()<0}getAuthData(){return{token:this.getToken(),pubkey:this.getPubkey(),wallet:this.getWallet()}}}const it=10**18;class re{static val(e){return Math.abs(e*it)<1?0:e}static cmp(e,t,n=!1){const s=re.val(e)*it,r=re.val(t)*it;return Math.abs(s-r)<1?0:s>r?1:-1}static equal(e,t){return re.cmp(e,t)===0}}class te extends x{constructor(e="GraphQL did not provide a valid response.",t=null,n=null){super(e,t,n),this.name="InvalidResponseException"}}class Re extends x{constructor(e="Authorization token missing or invalid.",t=null,n=null){super(e,t,n),this.name="UnauthenticatedException"}}let E=class{constructor({query:e,json:t,dataKey:n=null}){if(this.dataKey=n,this.errorKey="exception",this.$__payload=null,this.$__query=e,this.$__originResponse=t,this.$__response=t,typeof this.$__response>"u"||this.$__response===null)throw new te;if(M.has(this.$__response,this.errorKey)){const s=M.get(this.$__response,this.errorKey);throw String(s).includes("Unauthenticated")?new Re:new te}if(this.$__response.errors&&Array.isArray(this.$__response.errors)&&this.$__response.errors.length>0){const s=this.$__response.errors[0].message||"Unknown GraphQL error";throw s.includes("Unauthenticated")?new Re:new te(`GraphQL Error: ${s}`)}this.init()}init(){}data(){if(!this.dataKey)return this.response();if(!this.response().data)throw new te("Response has no data field");if(!M.has(this.response(),this.dataKey))throw new te(`Missing expected field: ${this.dataKey}`);return M.get(this.response(),this.dataKey)}response(){return this.$__response}payload(){return null}query(){return this.$__query}status(){return null}success(){var e,t;return!((t=(e=this.$__response)==null?void 0:e.errors)!=null&&t.length)}error(){var e,t;return(t=(e=this.$__response)==null?void 0:e.errors)!=null&&t.length?this.$__response.errors[0].message||"Unknown error":null}reason(){return this.error()}toValidationResult(){var e;return this.success()&&this.payload()!==null?{success:!0,data:this.payload(),warnings:[]}:{success:!1,error:{message:this.reason()||"Unknown error",context:this.constructor.name,details:((e=this.$__response)==null?void 0:e.errors)||[]}}}onSuccess(e){if(this.success()&&this.payload()!==null)try{e(this.payload())}catch(t){console.warn("Response.onSuccess callback failed:",t)}return this}onFailure(e){if(!this.success())try{e(this.reason()||"Unknown error")}catch(t){console.warn("Response.onFailure callback failed:",t)}return this}debug(e=null){var n,s,r;const t=e?`[${e}]`:`[${this.constructor.name}]`;return this.success()?console.debug(`${t} Success:`,{payload:this.payload(),query:(s=(n=this.$__query)==null?void 0:n.constructor)==null?void 0:s.name,dataKey:this.dataKey}):console.debug(`${t} Failure:`,{error:this.reason(),errors:(r=this.$__response)==null?void 0:r.errors,rawData:this.$__response}),this}toPromise(){return this.success()&&this.payload()!==null?Promise.resolve(this.payload()):Promise.reject(new Error(this.reason()||"Unknown error"))}map(e){if(this.success()&&this.payload()!==null)try{const t=e(this.payload()),n=Object.create(Object.getPrototypeOf(this));return Object.assign(n,this),n.$__payload=t,n}catch(t){const n=Object.create(Object.getPrototypeOf(this));return Object.assign(n,this),n.$__response={errors:[{message:`Mapping failed: ${t.message}`}]},n}else return this}};class K{constructor(e,t){this.client=e,this.knishIOClient=t,this.$__variables=null,this.$__query=null,this.$__response=null,this.$__request=null}response(){return this.$__response}async createResponseRaw(e){return this.createResponse(e)}createResponse(e){return new E({query:this,json:e})}createQuery({variables:e=null}){if(this.$__variables=this.compiledVariables(e),!this.uri())throw new ee("Query::createQuery() - Node URI was not initialized for this client instance!");if(this.$__query===null)throw new ee("Query::createQuery() - GraphQL subscription was not initialized!");return{query:this.$__query,variables:this.variables()}}async execute({variables:e=null,context:t={}}){this.$__request=this.createQuery({variables:e});const n={...t,...this.createQueryContext()};try{const s=await this.client.query({...this.$__request,context:n});return this.$__response=await this.createResponseRaw(s),this.$__response}catch(s){if(s.name==="AbortError")return this.knishIOClient.log("warn","Query was cancelled"),new E({query:this,json:{data:null,errors:[{message:"Query was cancelled"}]}});throw s}}compiledVariables(e=null){return e||{}}uri(){return this.client.getUri()}variables(){return this.$__variables}createQueryContext(){return{}}}class hn extends E{constructor({query:e,json:t}){super({query:e,json:t,dataKey:"data.ContinuId"})}payload(){let e=null;const t=this.data();return t&&(e=new k({secret:null,token:t.tokenSlug}),e.address=t.address,e.position=t.position,e.bundle=t.bundleHash,e.batchId=t.batchId,e.characters=t.characters,e.pubkey=t.pubkey,e.balance=String(t.amount!=null?t.amount:0)),e}}class dn extends K{constructor(e,t){super(e,t),this.$__query=T.gql`query ($bundle: String!) {
|
|
4
|
+
${this.stack}`}}class ne extends x{constructor(e="The molecule does not contain atoms",t=null,n=null){super(e,t,n),this.name="AtomsMissingException"}}class le{static create(e){const t={};for(const n of Object.keys(e))Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return new this(t)}static structure(e){switch(Object.prototype.toString.call(e)){case"[object Array]":{const t=[];for(const n in e)t.push(le.isStructure(e[n])?le.structure(e[n]):e[n]);return t}case"[object Object]":{const t=[],n=Object.keys(e).sort((s,r)=>s===r?0:s<r?-1:1);for(const s of n)if(Object.prototype.hasOwnProperty.call(e,s)){const r={};r[s]=le.isStructure(e[s])?le.structure(e[s]):e[s],t.push(r)}if(t.length>0)return t;break}}return e}static isStructure(e){return["[object Object]","[object Array]"].includes(Object.prototype.toString.call(e))}view(){return le.structure(this)}}class cs extends le{constructor({position:e=null,walletAddress:t=null,isotope:n=null,token:s=null,value:r=null,batchId:i=null,metaType:a=null,metaId:c=null,meta:u=null,index:l=null,createdAt:h=null,version:p=null}){super(),this.position=e,this.walletAddress=t,this.isotope=n,this.token=s,this.value=r,this.batchId=i,this.metaType=a,this.metaId=c,this.meta=u,this.index=l,this.createdAt=h,this.version=p}}const Ke={4:cs};class g{constructor({position:e=null,walletAddress:t=null,isotope:n=null,token:s=null,value:r=null,batchId:i=null,metaType:a=null,metaId:c=null,meta:u=null,otsFragment:l=null,index:h=null,version:p=null}){this.position=e,this.walletAddress=t,this.isotope=n,this.token=s,this.value=r!==null?String(r):null,this.batchId=i,this.metaType=a,this.metaId=c,this.meta=u?ue.normalizeMeta(u):[],this.index=h,this.otsFragment=l,this.createdAt=String(+new Date),p!==null&&Object.prototype.hasOwnProperty.call(Ke,p)&&(this.version=String(p))}static getHashableProps(){return["position","walletAddress","isotope","token","value","batchId","metaType","metaId","meta","createdAt"]}static getUnclaimedProps(){return["otsFragment"]}static create({isotope:e,wallet:t=null,value:n=null,metaType:s=null,metaId:r=null,meta:i=null,batchId:a=null}){return i||(i=new B),i instanceof B||(i=new B(i)),t&&(i.setAtomWallet(t),a||(a=t.batchId)),new g({position:t?t.position:null,walletAddress:t?t.address:null,isotope:e,token:t?t.token:null,value:n,batchId:a,metaType:s,metaId:r,meta:i.get()})}static jsonToObject(e){const t=Object.assign(new g({}),JSON.parse(e)),n=Object.keys(new g({}));for(const s in t)Object.prototype.hasOwnProperty.call(t,s)&&!n.includes(s)&&delete t[s];return t}toJSON(e={}){const{includeOtsFragments:t=!0,validateFields:n=!1}=e;try{if(n){const r=["position","walletAddress","isotope","token"];for(const i of r)if(!this[i])throw new Error(`Required field '${i}' is missing or empty`)}const s={position:this.position??"",walletAddress:this.walletAddress??"",isotope:this.isotope,token:this.token??"",value:this.value,batchId:this.batchId,metaType:this.metaType,metaId:this.metaId,meta:this.meta||[],index:this.index,createdAt:this.createdAt,version:this.version};return t&&this.otsFragment&&(s.otsFragment=this.otsFragment),s}catch(s){throw new Error(`Atom serialization failed: ${s.message}`)}}static fromJSON(e,t={}){const{validateStructure:n=!0,strictMode:s=!1}=t;try{const r=typeof e=="string"?JSON.parse(e):e;if(s||n){const a=["position","walletAddress","isotope","token"];for(const c of a)if(!r[c])throw new Error(`Required field '${c}' is missing or empty`)}const i=new g({position:r.position,walletAddress:r.walletAddress,isotope:r.isotope,token:r.token,value:r.value,batchId:r.batchId,metaType:r.metaType,metaId:r.metaId,meta:r.meta,index:r.index,version:r.version});return r.otsFragment&&(i.otsFragment=r.otsFragment),r.createdAt&&(i.createdAt=r.createdAt),i}catch(r){throw new Error(`Atom deserialization failed: ${r.message}`)}}static hashAtoms({atoms:e,output:t="base17"}){const n=new Q("SHAKE256","TEXT"),s=g.sortAtoms(e);if(s.length===0)throw new ne;if(s.map(r=>{if(!(r instanceof g))throw new ne;return r}),s.every(r=>r.version&&Object.prototype.hasOwnProperty.call(Ke,r.version)))n.update(JSON.stringify(s.map(r=>Ke[r.version].create(r).view())));else{const r=String(e.length);let i=[];for(const a of s)i.push(r),i=i.concat(a.getHashableValues());for(const a of i)n.update(a)}switch(t){case"hex":return n.getHash("HEX",{outputLen:256});case"array":return n.getHash("ARRAYBUFFER",{outputLen:256});default:return Bt(n.getHash("HEX",{outputLen:256}),16,17,"0123456789abcdef","0123456789abcdefg").padStart(64,"0")}}static jsonSerialization(e,t){if(!g.getUnclaimedProps().includes(e))return t}static sortAtoms(e){const t=[...e];return t.sort((n,s)=>n.index<s.index?-1:1),t}aggregatedMeta(){return ue.aggregateMeta(this.meta)}getHashableValues(){const e=[];for(const t of g.getHashableProps()){const n=this[t];if(!(n===null&&!["position","walletAddress"].includes(t)))if(t==="meta")for(const s of n)typeof s.value<"u"&&s.value!==null&&(e.push(String(s.key)),e.push(String(s.value)));else e.push(n===null?"":String(n))}return e}}function Qe(o=null,e=2048){if(o){const t=new Q("SHAKE256","TEXT");return t.update(o),t.getHash("HEX",{outputLen:e*4})}else return je(e)}function he(o,e=null){const t=new Q("SHAKE256","TEXT");return t.update(o),t.getHash("HEX",{outputLen:256})}function Ne(o,e){const t=new Q("SHAKE256","TEXT");return t.update(o),t.getHash("HEX",{outputLen:e})}function Me({molecularHash:o=null,index:e=null}){return o!==null&&e!==null?he(String(o)+String(e),"generateBatchId"):je(64)}class de{constructor(e,t,n){this.id=e,this.name=t,this.metas=n||{}}static createFromGraphQL(e){let t=e.metas||{};return t.length&&(t=JSON.parse(t),t||(t={})),new de(e.id,e.name,t)}static createFromDB(e){return new de(e[0],e[1],e.length>2?e[2]:{})}getFragmentZone(){return this.metas.fragmentZone||null}getFusedTokenUnits(){return this.metas.fusedTokenUnits||null}toData(){return[this.id,this.name,this.metas]}toGraphQLResponse(){return{id:this.id,name:this.name,metas:JSON.stringify(this.metas)}}}class Ye extends x{constructor(e="Attempting to create a wallet with no credentials (secret or bundle hash)",t=null,n=null){super(e,t,n),this.name="WalletCredentialException"}}const Ue=BigInt(2**32-1),_t=BigInt(32);function us(o,e=!1){return e?{h:Number(o&Ue),l:Number(o>>_t&Ue)}:{h:Number(o>>_t&Ue)|0,l:Number(o&Ue)|0}}function hs(o,e=!1){const t=o.length;let n=new Uint32Array(t),s=new Uint32Array(t);for(let r=0;r<t;r++){const{h:i,l:a}=us(o[r],e);[n[r],s[r]]=[i,a]}return[n,s]}const ds=(o,e,t)=>o<<t|e>>>32-t,ps=(o,e,t)=>e<<t|o>>>32-t,fs=(o,e,t)=>e<<t-32|o>>>64-t,ms=(o,e,t)=>o<<t-32|e>>>64-t;function ys(o){return o instanceof Uint8Array||ArrayBuffer.isView(o)&&o.constructor.name==="Uint8Array"}function St(o,e=""){if(!Number.isSafeInteger(o)||o<0){const t=e&&`"${e}" `;throw new Error(`${t}expected integer >= 0, got ${o}`)}}function V(o,e,t=""){const n=ys(o),s=o?.length,r=e!==void 0;if(!n||r&&s!==e){const i=t&&`"${t}" `,a=r?` of length ${e}`:"",c=n?`length=${s}`:`type=${typeof o}`;throw new Error(i+"expected Uint8Array"+a+", got "+c)}return o}function $t(o,e=!0){if(o.destroyed)throw new Error("Hash instance has been destroyed");if(e&&o.finished)throw new Error("Hash#digest() has already been called")}function gs(o,e){V(o,void 0,"digestInto() output");const t=e.outputLen;if(o.length<t)throw new Error('"digestInto() output" expected to be of length >='+t)}function Dt(o){return new Uint32Array(o.buffer,o.byteOffset,Math.floor(o.byteLength/4))}function Vt(...o){for(let e=0;e<o.length;e++)o[e].fill(0)}const bs=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function ws(o){return o<<24&4278190080|o<<8&16711680|o>>>8&65280|o>>>24&255}function ks(o){for(let e=0;e<o.length;e++)o[e]=ws(o[e]);return o}const At=bs?o=>o:ks;function zt(o,e={}){const t=(s,r)=>o(r).update(s).digest(),n=o(void 0);return t.outputLen=n.outputLen,t.blockLen=n.blockLen,t.create=s=>o(s),Object.assign(t,e),Object.freeze(t)}function _s(o=32){const e=typeof globalThis=="object"?globalThis.crypto:null;if(typeof e?.getRandomValues!="function")throw new Error("crypto.getRandomValues must be defined");return e.getRandomValues(new Uint8Array(o))}const Ve=o=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,o])}),Ss=BigInt(0),_e=BigInt(1),$s=BigInt(2),As=BigInt(7),vs=BigInt(256),xs=BigInt(113),Jt=[],Gt=[],Xt=[];for(let o=0,e=_e,t=1,n=0;o<24;o++){[t,n]=[n,(2*t+3*n)%5],Jt.push(2*(5*n+t)),Gt.push((o+1)*(o+2)/2%64);let s=Ss;for(let r=0;r<7;r++)e=(e<<_e^(e>>As)*xs)%vs,e&$s&&(s^=_e<<(_e<<BigInt(r))-_e);Xt.push(s)}const Zt=hs(Xt,!0),Is=Zt[0],Ms=Zt[1],vt=(o,e,t)=>t>32?fs(o,e,t):ds(o,e,t),xt=(o,e,t)=>t>32?ms(o,e,t):ps(o,e,t);function Ts(o,e=24){const t=new Uint32Array(10);for(let n=24-e;n<24;n++){for(let i=0;i<10;i++)t[i]=o[i]^o[i+10]^o[i+20]^o[i+30]^o[i+40];for(let i=0;i<10;i+=2){const a=(i+8)%10,c=(i+2)%10,u=t[c],l=t[c+1],h=vt(u,l,1)^t[a],p=xt(u,l,1)^t[a+1];for(let d=0;d<50;d+=10)o[i+d]^=h,o[i+d+1]^=p}let s=o[2],r=o[3];for(let i=0;i<24;i++){const a=Gt[i],c=vt(s,r,a),u=xt(s,r,a),l=Jt[i];s=o[l],r=o[l+1],o[l]=c,o[l+1]=u}for(let i=0;i<50;i+=10){for(let a=0;a<10;a++)t[a]=o[i+a];for(let a=0;a<10;a++)o[i+a]^=~t[(a+2)%10]&t[(a+4)%10]}o[0]^=Is[n],o[1]^=Ms[n]}Vt(t)}class ze{state;pos=0;posOut=0;finished=!1;state32;destroyed=!1;blockLen;suffix;outputLen;enableXOF=!1;rounds;constructor(e,t,n,s=!1,r=24){if(this.blockLen=e,this.suffix=t,this.outputLen=n,this.enableXOF=s,this.rounds=r,St(n,"outputLen"),!(0<e&&e<200))throw new Error("only keccak-f1600 function is supported");this.state=new Uint8Array(200),this.state32=Dt(this.state)}clone(){return this._cloneInto()}keccak(){At(this.state32),Ts(this.state32,this.rounds),At(this.state32),this.posOut=0,this.pos=0}update(e){$t(this),V(e);const{blockLen:t,state:n}=this,s=e.length;for(let r=0;r<s;){const i=Math.min(t-this.pos,s-r);for(let a=0;a<i;a++)n[this.pos++]^=e[r++];this.pos===t&&this.keccak()}return this}finish(){if(this.finished)return;this.finished=!0;const{state:e,suffix:t,pos:n,blockLen:s}=this;e[n]^=t,(t&128)!==0&&n===s-1&&this.keccak(),e[s-1]^=128,this.keccak()}writeInto(e){$t(this,!1),V(e),this.finish();const t=this.state,{blockLen:n}=this;for(let s=0,r=e.length;s<r;){this.posOut>=n&&this.keccak();const i=Math.min(n-this.posOut,r-s);e.set(t.subarray(this.posOut,this.posOut+i),s),this.posOut+=i,s+=i}return e}xofInto(e){if(!this.enableXOF)throw new Error("XOF is not possible for this instance");return this.writeInto(e)}xof(e){return St(e),this.xofInto(new Uint8Array(e))}digestInto(e){if(gs(e,this),this.finished)throw new Error("digest() was already called");return this.writeInto(e),this.destroy(),e}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=!0,Vt(this.state)}_cloneInto(e){const{blockLen:t,suffix:n,outputLen:s,rounds:r,enableXOF:i}=this;return e||=new ze(t,n,s,i,r),e.state32.set(this.state32),e.pos=this.pos,e.posOut=this.posOut,e.finished=this.finished,e.rounds=r,e.suffix=n,e.outputLen=s,e.enableXOF=i,e.destroyed=this.destroyed,e}}const Yt=(o,e,t,n={})=>zt(()=>new ze(e,o,t),n),Cs=Yt(6,136,32,Ve(8)),Es=Yt(6,72,64,Ve(10)),en=(o,e,t,n={})=>zt((s={})=>new ze(e,o,s.dkLen===void 0?t:s.dkLen,!0),n),Rs=en(31,168,16,Ve(11)),tn=en(31,136,32,Ve(12));function bt(o){if(!Number.isSafeInteger(o)||o<0||o>4294967295)throw new Error("wrong u32 integer:"+o);return o}function nn(o){return bt(o),(o&o-1)===0&&o!==0}function sn(o,e){bt(o);let t=0;for(let n=0;n<e;n++,o>>>=1)t=t<<1|o&1;return t}function rn(o){return bt(o),31-Math.clz32(o)}function It(o){const e=o.length;if(e<2||!nn(e))throw new Error("n must be a power of 2 and greater than 1. Got "+e);const t=rn(e);for(let n=0;n<e;n++){const s=sn(n,t);if(n<s){const r=o[n];o[n]=o[s],o[s]=r}}return o}const Mt=(o,e)=>{const{N:t,roots:n,dit:s,invertButterflies:r=!1,skipStages:i=0,brp:a=!0}=e,c=rn(t);if(!nn(t))throw new Error("FFT: Polynomial size should be power of two");const u=s!==r;return l=>{if(l.length!==t)throw new Error("FFT: wrong Polynomial length");s&&a&&It(l);for(let h=0,p=1;h<c-i;h++){const d=s?h+1+i:c-h,b=1<<d,A=b>>1,R=t>>d;for(let f=0;f<t;f+=b)for(let m=0,w=p++;m<A;m++){const C=r?s?t-w:w:m*R,_=f+m,$=f+m+A,v=n[C],I=l[$],S=l[_];if(u){const H=o.mul(I,v);l[_]=o.add(S,H),l[$]=o.sub(S,H)}else r?(l[_]=o.add(I,S),l[$]=o.mul(o.sub(I,S),v)):(l[_]=o.add(S,I),l[$]=o.mul(o.sub(S,I),v))}}return!s&&a&&It(l),l}};const Tt=_s;function et(o,e){if(o.length!==e.length)return!1;let t=0;for(let n=0;n<o.length;n++)t|=o[n]^e[n];return t===0}function qs(o){return Uint8Array.from(o)}function Le(o,...e){const t=s=>typeof s=="number"?s:s.bytesLen,n=e.reduce((s,r)=>s+t(r),0);return{bytesLen:n,encode:s=>{const r=new Uint8Array(n);for(let i=0,a=0;i<e.length;i++){const c=e[i],u=t(c),l=typeof c=="number"?s[i]:c.encode(s[i]);V(l,u,o),r.set(l,a),typeof c!="number"&&l.fill(0),a+=u}return r},decode:s=>{V(s,n,o);const r=[];for(const i of e){const a=t(i),c=s.subarray(0,a);r.push(typeof i=="number"?c:i.decode(c)),s=s.subarray(a)}return r}}}function tt(o,e){const t=e*o.bytesLen;return{bytesLen:t,encode:n=>{if(n.length!==e)throw new Error(`vecCoder.encode: wrong length=${n.length}. Expected: ${e}`);const s=new Uint8Array(t);for(let r=0,i=0;r<n.length;r++){const a=o.encode(n[r]);s.set(a,i),a.fill(0),i+=a.length}return s},decode:n=>{V(n,t);const s=[];for(let r=0;r<n.length;r+=o.bytesLen)s.push(o.decode(n.subarray(r,r+o.bytesLen)));return s}}}function G(...o){for(const e of o)if(Array.isArray(e))for(const t of e)t.fill(0);else e.fill(0)}function Ct(o){return(1<<o)-1}const Os=o=>{const{newPoly:e,N:t,Q:n,F:s,ROOT_OF_UNITY:r,brvBits:i}=o,a=(f,m=n)=>{const w=f%m|0;return(w>=0?w|0:m+w|0)|0},c=(f,m=n)=>{const w=a(f,m)|0;return(w>m>>1?w-m|0:w)|0};function u(){const f=e(t);for(let m=0;m<t;m++){const w=sn(m,i),C=BigInt(r)**BigInt(w)%BigInt(n);f[m]=Number(C)|0}return f}const l=u(),h={add:(f,m)=>a((f|0)+(m|0))|0,sub:(f,m)=>a((f|0)-(m|0))|0,mul:(f,m)=>a((f|0)*(m|0))|0,inv:f=>{throw new Error("not implemented")}},p={N:t,roots:l,invertButterflies:!0,skipStages:1,brp:!1},d=Mt(h,{dit:!1,...p}),b=Mt(h,{dit:!0,...p});return{mod:a,smod:c,nttZetas:l,NTT:{encode:f=>d(f),decode:f=>{b(f);for(let m=0;m<f.length;m++)f[m]=a(s*f[m]);return f}},bitsCoder:(f,m)=>{const w=Ct(f),C=f*(t/8);return{bytesLen:C,encode:_=>{const $=new Uint8Array(C);for(let v=0,I=0,S=0,H=0;v<_.length;v++)for(I|=(m.encode(_[v])&w)<<S,S+=f;S>=8;S-=8,I>>=8)$[H++]=I&Ct(S);return $},decode:_=>{const $=e(t);for(let v=0,I=0,S=0,H=0;v<_.length;v++)for(I|=_[v]<<S,S+=8;S>=f;S-=f,I>>=f)$[H++]=m.decode(I&w);return $}}}}},Ws=o=>(e,t)=>{t||(t=o.blockLen);const n=new Uint8Array(e.length+2);n.set(e);const s=e.length,r=new Uint8Array(t);let i=o.create({}),a=0,c=0;return{stats:()=>({calls:a,xofs:c}),get:(u,l)=>(n[s+0]=u,n[s+1]=l,i.destroy(),i=o.create({}).update(n),a++,()=>(c++,i.xofInto(r))),clean:()=>{i.destroy(),G(r,n)}}},Us=Ws(Rs);const L=256,ce=3329,Bs=3303,Hs=17,{mod:Te,nttZetas:Ps,NTT:re,bitsCoder:Ks}=Os({N:L,Q:ce,F:Bs,ROOT_OF_UNITY:Hs,newPoly:o=>new Uint16Array(o),brvBits:7}),Ns={768:{N:L,Q:ce,K:3,ETA1:2,ETA2:2,du:10,dv:4,RBGstrength:192}},Ls=o=>{if(o>=12)return{encode:t=>t,decode:t=>t};const e=2**(o-1);return{encode:t=>((t<<o)+ce/2)/ce,decode:t=>t*ce+e>>>o}},Se=o=>Ks(o,Ls(o));function ie(o,e){for(let t=0;t<L;t++)o[t]=Te(o[t]+e[t])}function Qs(o,e){for(let t=0;t<L;t++)o[t]=Te(o[t]-e[t])}function Fs(o,e,t,n,s){const r=Te(e*n*s+o*t),i=Te(o*n+e*t);return{c0:r,c1:i}}function Be(o,e){for(let t=0;t<L/2;t++){let n=Ps[64+(t>>1)];t&1&&(n=-n);const{c0:s,c1:r}=Fs(o[2*t+0],o[2*t+1],e[2*t+0],e[2*t+1],n);o[2*t+0]=s,o[2*t+1]=r}return o}function Et(o){const e=new Uint16Array(L);for(let t=0;t<L;){const n=o();if(n.length%3)throw new Error("SampleNTT: unaligned block");for(let s=0;t<L&&s+3<=n.length;s+=3){const r=(n[s+0]>>0|n[s+1]<<8)&4095,i=(n[s+1]>>4|n[s+2]<<4)&4095;r<ce&&(e[t++]=r),t<L&&i<ce&&(e[t++]=i)}}return e}function $e(o,e,t,n){const s=o(n*L/4,e,t),r=new Uint16Array(L),i=Dt(s);let a=0;for(let c=0,u=0,l=0,h=0;c<i.length;c++){let p=i[c];for(let d=0;d<32;d++)l+=p&1,p>>=1,a+=1,a===n?(h=l,l=0):a===2*n&&(r[u++]=Te(h-l),l=0,a=0)}if(a)throw new Error(`sampleCBD: leftover bits: ${a}`);return r}const js=o=>{const{K:e,PRF:t,XOF:n,HASH512:s,ETA1:r,ETA2:i,du:a,dv:c}=o,u=Se(1),l=Se(c),h=Se(a),p=Le("publicKey",tt(Se(12),e),32),d=tt(Se(12),e),b=Le("ciphertext",tt(h,e),l),A=Le("seed",32,32);return{secretCoder:d,lengths:{secretKey:d.bytesLen,publicKey:p.bytesLen,cipherText:b.bytesLen},keygen:R=>{V(R,32,"seed");const f=new Uint8Array(33);f.set(R),f[32]=e;const m=s(f),[w,C]=A.decode(m),_=[],$=[];for(let S=0;S<e;S++)_.push(re.encode($e(t,C,S,r)));const v=n(w);for(let S=0;S<e;S++){const H=re.encode($e(t,C,e+S,r));for(let q=0;q<e;q++){const pe=Et(v.get(q,S));ie(H,Be(pe,_[q]))}$.push(H)}v.clean();const I={publicKey:p.encode([$,w]),secretKey:d.encode(_)};return G(w,C,_,$,f,m),I},encrypt:(R,f,m)=>{const[w,C]=p.decode(R),_=[];for(let q=0;q<e;q++)_.push(re.encode($e(t,m,q,r)));const $=n(C),v=new Uint16Array(L),I=[];for(let q=0;q<e;q++){const pe=$e(t,m,e+q,i),Xe=new Uint16Array(L);for(let We=0;We<e;We++){const as=Et($.get(q,We));ie(Xe,Be(as,_[We]))}ie(pe,re.decode(Xe)),I.push(pe),ie(v,Be(w[q],_[q])),G(Xe)}$.clean();const S=$e(t,m,2*e,i);ie(S,re.decode(v));const H=u.decode(f);return ie(H,S),G(w,_,v,S),b.encode([I,H])},decrypt:(R,f)=>{const[m,w]=b.decode(R),C=d.decode(f),_=new Uint16Array(L);for(let $=0;$<e;$++)ie(_,Be(C[$],re.encode(m[$])));return Qs(w,re.decode(_)),G(_,C,m),u.encode(w)}}};function Ds(o){const e=js(o),{HASH256:t,HASH512:n,KDF:s}=o,{secretCoder:r,lengths:i}=e,a=Le("secretKey",i.secretKey,i.publicKey,32,32),c=32,u=64;return{info:{type:"ml-kem"},lengths:{...i,seed:64,msg:c,msgRand:c,secretKey:a.bytesLen},keygen:(l=Tt(u))=>{V(l,u,"seed");const{publicKey:h,secretKey:p}=e.keygen(l.subarray(0,32)),d=t(h),b=a.encode([p,h,d,l.subarray(32)]);return G(p,d),{publicKey:h,secretKey:b}},getPublicKey:l=>{const[h,p]=a.decode(l);return Uint8Array.from(p)},encapsulate:(l,h=Tt(c))=>{V(l,i.publicKey,"publicKey"),V(h,c,"message");const p=l.subarray(0,384*o.K),d=r.encode(r.decode(qs(p)));if(!et(d,p))throw G(d),new Error("ML-KEM.encapsulate: wrong publicKey modulus");G(d);const b=n.create().update(h).update(t(l)).digest(),A=e.encrypt(l,h,b.subarray(32,64));return G(b.subarray(32)),{cipherText:A,sharedSecret:b.subarray(0,32)}},decapsulate:(l,h)=>{V(h,a.bytesLen,"secretKey"),V(l,i.cipherText,"cipherText");const p=a.bytesLen-96,d=p+32,b=t(h.subarray(p/2,d));if(!et(b,h.subarray(d,d+32)))throw new Error("invalid secretKey: hash check failed");const[A,R,f,m]=a.decode(h),w=e.decrypt(l,A),C=n.create().update(w).update(f).digest(),_=C.subarray(0,32),$=e.encrypt(R,w,C.subarray(32,64)),v=et(l,$),I=s.create({dkLen:32}).update(m).update(l).digest();return G(w,$,v?I:_),v?_:I}}}function Vs(o,e,t){return tn.create({dkLen:o}).update(e).update(new Uint8Array([t])).digest()}const zs={HASH256:Cs,HASH512:Es,KDF:tn,XOF:Us,PRF:Vs},nt=Ds({...zs,...Ns[768]});class k{constructor({secret:e=null,bundle:t=null,token:n="USER",address:s=null,position:r=null,batchId:i=null,characters:a=null}){this.token=n,this.balance="0",this.molecules={},this.key=null,this.privkey=null,this.pubkey=null,this.tokenUnits=[],this.tradeRates={},this.address=s,this.position=r,this.bundle=t,this.batchId=i,this.characters=a,e&&(this.bundle=this.bundle||he(e,"Wallet::constructor"),this.position=this.position||k.generatePosition(),this.key=k.generateKey({secret:e,token:this.token,position:this.position}),this.address=this.address||k.generateAddress(this.key),this.characters=this.characters||"BASE64",this.initializeMLKEM())}static create({secret:e=null,bundle:t=null,token:n,batchId:s=null,characters:r=null}){let i=null;if(!e&&!t)throw new Ye;return e&&!t&&(i=k.generatePosition(),t=he(e,"Wallet::create")),new k({secret:e,bundle:t,token:n,position:i,batchId:s,characters:r})}static isBundleHash(e){return typeof e!="string"?!1:e.length===64&&Pe(e)}static getTokenUnits(e){const t=[];return e.forEach(n=>{t.push(de.createFromDB(n))}),t}static generateKey({secret:e,token:t,position:n}){if(!e)throw new Ye("Wallet::generateKey() - Secret is required!");if(!n)throw new Ye("Wallet::generateKey() - Position is required!");const s=Pe(e)?e:Ne(e,1024),r=Pe(n)?n:Ne(n,256),a=BigInt(`0x${s}`)+BigInt(`0x${r}`),c=new Q("SHAKE256","TEXT");c.update(a.toString(16)),t&&c.update(t);const u=new Q("SHAKE256","TEXT");return u.update(c.getHash("HEX",{outputLen:8192})),u.getHash("HEX",{outputLen:8192})}static generateAddress(e){const t=Ie(e,128),n=new Q("SHAKE256","TEXT");for(const r in t){let i=t[r];for(let a=1;a<=16;a++){const c=new Q("SHAKE256","TEXT");c.update(i),i=c.getHash("HEX",{outputLen:512})}n.update(i)}const s=new Q("SHAKE256","TEXT");return s.update(n.getHash("HEX",{outputLen:8192})),s.getHash("HEX",{outputLen:256})}static generatePosition(e=64){return je(e,"abcdef0123456789")}initializeMLKEM(){const e=Qe(this.key,128),t=new Uint8Array(64);for(let r=0;r<64;r++)t[r]=parseInt(e.substr(r*2,2),16);const{publicKey:n,secretKey:s}=nt.keygen(t);this.pubkey=this.serializeKey(n),this.privkey=s}serializeKey(e){return btoa(String.fromCharCode.apply(null,e))}deserializeKey(e){const t=atob(e);return new Uint8Array(t.length).map((n,s)=>t.charCodeAt(s))}balanceAsNumber(){return Number(this.balance)}balanceAsBigInt(){const e=String(this.balance),t=e.includes(".")?e.split(".")[0]:e;return BigInt(t||"0")}setBalanceBigInt(e){this.balance=e.toString()}setBalanceNumber(e){this.balance=String(e)}getTokenUnitsData(){const e=[];return this.tokenUnits.forEach(t=>{e.push(t.toData())}),e}splitUnits(e,t,n=null){if(e.length===0)return;const s=[],r=[];this.tokenUnits.forEach(i=>{e.includes(i.id)?s.push(i):r.push(i)}),this.tokenUnits=s,n!==null&&(n.tokenUnits=s),t.tokenUnits=r}splitUnitsMulti(e,t,n){const s=new Set;e.forEach(r=>{r.forEach(i=>s.add(i))}),s.size!==0&&(t.forEach((r,i)=>{const a=e[i];r.tokenUnits=this.tokenUnits.filter(c=>a.includes(c.id))}),n.tokenUnits=this.tokenUnits.filter(r=>!s.has(r.id)),this.tokenUnits=this.tokenUnits.filter(r=>s.has(r.id)))}createRemainder(e){const t=k.create({secret:e,token:this.token,characters:this.characters});return t.initBatchId({sourceWallet:this,isRemainder:!0}),t}isShadow(){return(typeof this.position>"u"||this.position===null)&&(typeof this.address>"u"||this.address===null)}initBatchId({sourceWallet:e,isRemainder:t=!1}){e.batchId&&(this.batchId=t?e.batchId:Me({}))}async encryptMessage(e,t){const n=JSON.stringify(e),s=new TextEncoder().encode(n),r=this.deserializeKey(t),i=1184;if(r.length!==i)throw new Error(`KnishIO: cannot ML-KEM-encrypt — recipient public key is ${r.length} bytes, expected ${i} (ML-KEM-768). The node likely did not advertise an ML-KEM public key (upgrade the validator to a PQ-transport build), or authenticate with { encrypt: false }.`);const{cipherText:a,sharedSecret:c}=nt.encapsulate(r),u=await this.encryptWithSharedSecret(s,c);return{cipherText:this.serializeKey(a),encryptedMessage:this.serializeKey(u)}}async decryptMessage(e){const t=await this._mlkemDecryptToString(e);return t===null?null:JSON.parse(t)}async _mlkemDecryptToString(e){const{cipherText:t,encryptedMessage:n}=e;let s;try{s=nt.decapsulate(this.deserializeKey(t),this.privkey)}catch(a){return console.error("Wallet::decryptMessage() - Decapsulation failed",a),console.info("Wallet::decryptMessage() - my public key",this.pubkey),null}let r;try{r=this.deserializeKey(n)}catch(a){return console.warn("Wallet::decryptMessage() - Deserialization failed",a),console.info("Wallet::decryptMessage() - my public key",this.pubkey),console.info("Wallet::decryptMessage() - our shared secret",s),null}let i;try{i=await this.decryptWithSharedSecret(r,s)}catch(a){return console.warn("Wallet::decryptMessage() - Decryption failed",a),console.info("Wallet::decryptMessage() - my public key",this.pubkey),console.info("Wallet::decryptMessage() - our shared secret",s),console.info("Wallet::decryptMessage() - deserialized encrypted message",r),null}try{return new TextDecoder().decode(i)}catch(a){return console.warn("Wallet::decryptMessage() - Decoding failed",a),console.info("Wallet::decryptMessage() - my public key",this.pubkey),console.info("Wallet::decryptMessage() - our shared secret",s),console.info("Wallet::decryptMessage() - deserialized encrypted message",r),console.info("Wallet::decryptMessage() - decrypted Uint8Array",i),null}}hashShare(e){const t=Ne(e,64),n=Uint8Array.from(t.match(/.{2}/g).map(s=>parseInt(s,16)));return this.serializeKey(n)}async encryptStringML768(e,t){const n=await this.encryptMessage(e,t);return JSON.stringify({[this.hashShare(t)]:n})}async decryptMyMessageML768(e){const t=e[this.hashShare(this.pubkey)];return t?this._mlkemDecryptToString(t):null}async encryptWithSharedSecret(e,t){const n=crypto.getRandomValues(new Uint8Array(12)),s={name:"AES-GCM",iv:n},r=await crypto.subtle.importKey("raw",t,{name:"AES-GCM"},!1,["encrypt"]),i=await crypto.subtle.encrypt(s,r,e),a=new Uint8Array(n.length+i.byteLength);return a.set(n),a.set(new Uint8Array(i),n.length),a}async decryptWithSharedSecret(e,t){const s={name:"AES-GCM",iv:e.slice(0,12)},r=await crypto.subtle.importKey("raw",t,{name:"AES-GCM"},!1,["decrypt"]),i=await crypto.subtle.decrypt(s,r,e.slice(12));return new Uint8Array(i)}}class me extends x{constructor(e="There is an atom without an index",t=null,n=null){super(e,t,n),this.name="AtomIndexException"}}class on extends x{constructor(e="The molecular hash does not match",t=null,n=null){super(e,t,n),this.name="MolecularHashMismatchException"}}class an extends x{constructor(e="The molecular hash is missing",t=null,n=null){super(e,t,n),this.name="MolecularHashMissingException"}}class ot extends x{constructor(e="",t=null,n=null){super(e,t,n),this.name="PolicyInvalidException"}}class wt extends x{constructor(e="OTS malformed",t=null,n=null){super(e,t,n),this.name="SignatureMalformedException"}}class ln extends x{constructor(e="One-time signature (OTS) does not match!",t=null,n=null){super(e,t,n),this.name="SignatureMismatchException"}}class z extends x{constructor(e="Insufficient balance to make transfer",t=null,n=null){super(e,t,n),this.name="TransferBalanceException"}}class ye extends x{constructor(e="Token transfer atoms are malformed",t=null,n=null){super(e,t,n),this.name="TransferMalformedException"}}class at extends x{constructor(e="Token slugs for wallets in transfer do not match!",t=null,n=null){super(e,t,n),this.name="TransferMismatchedException"}}class lt extends x{constructor(e="Invalid remainder provided",t=null,n=null){super(e,t,n),this.name="TransferRemainderException"}}class cn extends x{constructor(e="Sender and recipient(s) cannot be the same",t=null,n=null){super(e,t,n),this.name="TransferToSelfException"}}class Ae extends x{constructor(e="Token transfer atoms are unbalanced",t=null,n=null){super(e,t,n),this.name="TransferUnbalancedException"}}class U extends x{constructor(e="Empty meta data.",t=null,n=null){super(e,t,n),this.name="MetaMissingException"}}class te extends x{constructor(e="Wrong type of token for this isotope",t=null,n=null){super(e,t,n),this.name="WrongTokenTypeException"}}class ve extends x{constructor(e="Incorrect BatchId",t=null,n=null){super(e,t,n),this.name="BatchIdException"}}class Rt{constructor(e={}){for(const t in e)this[`__${t}`]=e[t]}static toObject(e){return new this(e)}toJSON(){const e={};for(const t of Object.keys(this))t.substring(0,2)==="__"&&(e[t.substring(2,t.length)]=this[t]);return e}}class Fe extends x{constructor(e="An incorrect argument!",t=null,n=null){super(e,t,n),this.name="RuleArgumentException"}}class Y extends x{constructor(e="Code exception",t=null,n=null){super(e,t,n),this.name="CodeException"}}class xe{constructor({action:e,metaType:t=null,metaId:n=null,meta:s=null,address:r=null,token:i=null,amount:a=null,comparison:c=null}){if(s&&(this.meta=s),!e)throw new Fe('Callback structure violated, missing mandatory "action" parameter.');this.__metaId=n,this.__metaType=t,this.__action=e,this.__address=r,this.__token=i,this.__amount=a,this.__comparison=c}set comparison(e){this.__comparison=e}set amount(e){if(!Lt(e))throw new Y("Parameter amount should be a string containing numbers");this.__amount=e}set token(e){this.__token=e}set address(e){this.__address=e}set meta(e){this.__meta=e instanceof Rt?e:Rt.toObject(e)}set metaType(e){this.__metaType=e}set metaId(e){this.__metaId=e}static toObject(e){const t=new xe({action:e.action});return e.metaType&&(t.metaType=e.metaType),e.metaId&&(t.metaId=e.metaId),e.meta&&(t.meta=e.meta),e.address&&(t.address=e.address),e.token&&(t.token=e.token),e.amount&&(t.amount=e.amount),e.comparison&&(t.comparison=e.comparison),t}toJSON(){const e={action:this.__action};return this.__metaType&&(e.metaType=this.__metaType),this.__metaId&&(e.metaId=this.__metaId),this.__meta&&(e.meta=this.__meta),this.__address&&(e.address=this.__address),this.__token&&(e.token=this.__token),this.__amount&&(e.amount=this.__amount),this.__comparison&&(e.comparison=this.__comparison),e}isReject(){return this._is("reject")}isMeta(){return fe(Object.keys(this.toJSON()),["action","metaId","metaType","meta"]).length===4&&this._is("meta")}isCollect(){return fe(Object.keys(this.toJSON()),["action","address","token","amount","comparison"]).length===5&&this._is("collect")}isBuffer(){return fe(Object.keys(this.toJSON()),["action","address","token","amount","comparison"]).length===5&&this._is("buffer")}isRemit(){return fe(Object.keys(this.toJSON()),["action","token","amount"]).length===3&&this._is("remit")}isBurn(){return fe(Object.keys(this.toJSON()),["action","token","amount","comparison"]).length===4&&this._is("burn")}_is(e){return this.__action.toLowerCase()===e.toLowerCase()}}class st{constructor({key:e,value:t,comparison:n}){if([e,t,n].some(s=>!s))throw new Fe("Condition::constructor( { key, value, comparison } ) - not all class parameters are initialised!");this.__key=e,this.__value=t,this.__comparison=n}static toObject(e){return new this({key:e.key,value:e.value,comparison:e.comparison})}toJSON(){return{key:this.__key,value:this.__value,comparison:this.__comparison}}}class Ce{constructor({condition:e=[],callback:t=[]}){for(const n of e)if(!(n instanceof st))throw new Fe;for(const n of t)if(!(n instanceof xe))throw new Fe;this.__condition=e,this.__callback=t}set comparison(e){this.__condition.push(e instanceof st?e:st.toObject(e))}set callback(e){this.__callback.push(e instanceof xe?e:xe.toObject(e))}static toObject(e){if(!e.condition)throw new U("Rule::toObject() - Incorrect rule format! There is no condition field.");if(!e.callback)throw new U("Rule::toObject() - Incorrect rule format! There is no callback field.");const t=new Ce({});for(const n of e.condition)t.comparison=n;for(const n of e.callback)t.callback=n;return t}toJSON(){return{condition:this.__condition,callback:this.__callback}}}class M{static __init(e,t){this.arr=String(t).split("."),this.key=this.arr.shift();const n=Number(this.key);Number.isInteger(n)&&(this.key=n),this.__nextKey=this.arr.length,this.__next=this.__tic(e)}static __tic(e){return!Array.isArray(e)&&!(e instanceof Object)?!1:typeof e[this.key]<"u"}static has(e,t){return this.__init(e,t),this.__next?this.__nextKey===0?!0:this.has(e[this.key],this.arr.join(".")):!1}static get(e,t,n=null){return this.__init(e,t),this.__next?this.__nextKey===0?e[this.key]:this.get(e[this.key],this.arr.join("."),n):n}static set(e,t,n){const s=t.split(".");let r=e;const i=s.length-1;for(let u=0;u<i;u++){const l=s[u],h=Number(l),p=Number.isInteger(h);(p?h:l in r)||(r[p?h:l]=s[u+1].match(/^\d+$/)?[]:{}),r=r[p?h:l]}const a=s[i],c=Number(a);return r[Number.isInteger(c)?c:a]=n,e}}class be{constructor(e){if(e.molecularHash===null)throw new an;if(!e.atoms.length)throw new ne;for(const t of e.atoms)if(t.index===null)throw new me;this.molecule=e}verify(e){return this.molecularHash()&&this.ots()&&this.batchId()&&this.continuId()&&this.isotopeM()&&this.isotopeT()&&this.isotopeC()&&this.isotopeU()&&this.isotopeI()&&this.isotopeR()&&this.isotopeP()&&this.isotopeA()&&this.isotopeB()&&this.isotopeF()&&this.isotopeV(e)}continuId(){if(this.molecule.atoms[0].token==="USER"&&this.molecule.getIsotopes("I").length<1)throw new ne("Check::continuId() - Molecule is missing required ContinuID Atom!");return!0}batchId(){if(this.molecule.atoms.length>0){const e=this.molecule.atoms[0];if(e.isotope==="V"&&e.batchId!==null){const t=this.molecule.getIsotopes("V"),n=t[t.length-1];if(e.batchId!==n.batchId)throw new ve;for(const s of t)if(s.batchId===null)throw new ve}return!0}throw new ve}isotopeI(){for(const e of this.molecule.getIsotopes("I")){if(e.token!=="USER")throw new te(`Check::isotopeI() - "${e.token}" is not a valid Token slug for "${e.isotope}" isotope Atoms!`);if(e.index===0)throw new me(`Check::isotopeI() - Isotope "${e.isotope}" Atoms must have a non-zero index!`)}return!0}isotopeU(){for(const e of this.molecule.getIsotopes("U")){if(e.token!=="AUTH")throw new te(`Check::isotopeU() - "${e.token}" is not a valid Token slug for "${e.isotope}" isotope Atoms!`);if(e.index!==0)throw new me(`Check::isotopeU() - Isotope "${e.isotope}" Atoms must have an index equal to 0!`)}return!0}isotopeM(){const e=["readPolicy","writePolicy"];for(const t of this.molecule.getIsotopes("M")){if(t.meta.length<1)throw new U;if(t.token!=="USER")throw new te(`Check::isotopeM() - "${t.token}" is not a valid Token slug for "${t.isotope}" isotope Atoms!`);const n=ue.aggregateMeta(t.meta);for(const s of e){let r=n[s];if(r){r=JSON.parse(r);for(const[i,a]of Object.entries(r))if(!e.includes(i)){if(!Object.keys(n).includes(i))throw new ot(`${i} is missing from the meta.`);for(const c of a)if(!k.isBundleHash(c)&&!["all","self"].includes(c))throw new ot(`${c} does not correspond to the format of the policy.`)}}}}return!0}isotopeC(){for(const e of this.molecule.getIsotopes("C")){if(e.token!=="USER")throw new te(`Check::isotopeC() - "${e.token}" is not a valid Token slug for "${e.isotope}" isotope Atoms!`);if(e.index!==0)throw new me(`Check::isotopeC() - Isotope "${e.isotope}" Atoms must have an index equal to 0!`)}return!0}isotopeT(){for(const e of this.molecule.getIsotopes("T")){const t=e.aggregatedMeta();if(String(e.metaType).toLowerCase()==="wallet"){for(const s of["position","bundle"])if(!Object.prototype.hasOwnProperty.call(t,s)||!t[s])throw new U(`Check::isotopeT() - Required meta field "${s}" is missing!`)}for(const s of["token"])if(!Object.prototype.hasOwnProperty.call(t,s)||!t[s])throw new U(`Check::isotopeT() - Required meta field "${s}" is missing!`);if(e.token!=="USER")throw new te(`Check::isotopeT() - "${e.token}" is not a valid Token slug for "${e.isotope}" isotope Atoms!`);if(e.index!==0)throw new me(`Check::isotopeT() - Isotope "${e.isotope}" Atoms must have an index equal to 0!`)}return!0}isotopeR(){for(const e of this.molecule.getIsotopes("R")){const t=e.aggregatedMeta();if(t.policy){const n=JSON.parse(t.policy);if(!Object.keys(n).every(s=>["read","write"].includes(s)))throw new U("Check::isotopeR() - Mixing rules with politics!")}if(t.rule){const n=JSON.parse(t.rule);if(!Array.isArray(n))throw new U("Check::isotopeR() - Incorrect rule format!");for(const s of n)Ce.toObject(s);if(n.length<1)throw new U("Check::isotopeR() - No rules!")}}return!0}isotopeP(){for(const e of this.molecule.getIsotopes("P")){if(e.token!=="USER")throw new te(`Check::isotopeP() - "${e.token}" is not a valid Token slug for "${e.isotope}" isotope Atoms!`);const t=e.aggregatedMeta();if(!Object.prototype.hasOwnProperty.call(t,"peerHost")||!t.peerHost)throw new U('Check::isotopeP() - Required meta field "peerHost" is missing!')}return!0}isotopeA(){for(const e of this.molecule.getIsotopes("A")){if(e.token!=="USER")throw new te(`Check::isotopeA() - "${e.token}" is not a valid Token slug for "${e.isotope}" isotope Atoms!`);if(!e.metaType)throw new U('Check::isotopeA() - Required field "metaType" is missing!');if(!e.metaId)throw new U('Check::isotopeA() - Required field "metaId" is missing!');const t=e.aggregatedMeta();if(!Object.prototype.hasOwnProperty.call(t,"action")||!t.action)throw new U('Check::isotopeA() - Required meta field "action" is missing!')}return!0}isotopeB(){const e=this.molecule.getIsotopes("B");if(e.length===0)return!0;for(const n of e){if(!n.metaType||n.metaType!=="walletBundle")throw new U('Check::isotopeB() - B-isotope atoms must have metaType "walletBundle"!');if(!n.metaId)throw new U("Check::isotopeB() - B-isotope atoms must have a metaId!");const s=Number(n.value);if(Number.isNaN(s))throw new ye("Check::isotopeB() - B-isotope atom value is not a valid number!")}const t=this.molecule.getIsotopes("V");if(t.length>0){let n=0;for(const s of[...t,...e]){const r=Number(s.value);Number.isNaN(r)||(n+=r)}if(n!==0)throw new Ae("Check::isotopeB() - V+B atom values do not balance to zero!")}return!0}isotopeF(){const e=this.molecule.getIsotopes("F");if(e.length===0)return!0;for(const n of e){if(!n.metaType||n.metaType!=="walletBundle")throw new U('Check::isotopeF() - F-isotope atoms must have metaType "walletBundle"!');if(!n.metaId)throw new U("Check::isotopeF() - F-isotope atoms must have a metaId!");const s=Number(n.value);if(Number.isNaN(s))throw new ye("Check::isotopeF() - F-isotope atom value is not a valid number!");if(s<0)throw new ye("Check::isotopeF() - F-isotope atom value must not be negative!")}const t=this.molecule.getIsotopes("V");if(t.length>0){let n=0;for(const s of[...t,...e]){const r=Number(s.value);Number.isNaN(r)||(n+=r)}if(n!==0)throw new Ae("Check::isotopeF() - V+F atom values do not balance to zero!")}return!0}isotopeV(e=null){const t=this.molecule.getIsotopes("V");if(t.length===0)return!0;const n=this.molecule.getIsotopes("B").length>0||this.molecule.getIsotopes("F").length>0,s=this.molecule.atoms[0];if(!n&&s.isotope==="V"&&t.length===2){const a=t[t.length-1];if(s.token!==a.token)throw new at;if(a.value<0)throw new ye;if(Number(s.value)+Number(a.value)!==0)throw new Ae;return!0}let r=0,i=0;for(const a in this.molecule.atoms)if(Object.prototype.hasOwnProperty.call(this.molecule.atoms,a)){const c=this.molecule.atoms[a];if(c.isotope!=="V")continue;if(i=c.value*1,Number.isNaN(i))throw new TypeError('Invalid isotope "V" values');if(c.token!==s.token)throw new at;if(a>0){if(i<0)throw new ye;if(c.walletAddress===s.walletAddress)throw new cn}r+=i}if(!n&&r!==0)throw new Ae;if(e){if(i=s.value*1,Number.isNaN(i))throw new TypeError('Invalid isotope "V" values');const a=Number(e.balance)+i;if(a<0)throw new z;if(!n&&a!==r)throw new lt}else if(i!==0)throw new lt;return!0}molecularHash(){if(this.molecule.molecularHash!==g.hashAtoms({atoms:this.molecule.atoms}))throw new on;return!0}ots(){const e=this.molecule.normalizedHash();let t=this.molecule.atoms.map(p=>p.otsFragment).reduce((p,d)=>p+d);if(t.length!==2048&&(t=Nt(t),t.length!==2048))throw new wt;const n=Ie(t,128);let s="";for(const p in n){let d=n[p];for(let b=0,A=8+e[p];b<A;b++)d=new Q("SHAKE256","TEXT").update(d).getHash("HEX",{outputLen:512});s+=d}const r=new Q("SHAKE256","TEXT");r.update(s);const i=r.getHash("HEX",{outputLen:8192}),a=new Q("SHAKE256","TEXT");a.update(i);const c=a.getHash("HEX",{outputLen:256}),u=this.molecule.atoms[0];let l=u.walletAddress;const h=M.get(u.aggregatedMeta(),"signingWallet");if(h&&(l=M.get(JSON.parse(h),"address")),c!==l)throw new ln;return!0}static fromServerData({molecularHash:e,bundleHash:t,cellSlug:n=null,status:s=null,createdAt:r=null,atoms:i=[]}){const a=i.map(c=>{let u=[];if(c.metasJson)try{const l=JSON.parse(c.metasJson);Array.isArray(l)?u=l:l&&typeof l=="object"&&(u=Object.entries(l).map(([h,p])=>({key:h,value:p})))}catch{u=[]}return{position:c.position||null,walletAddress:c.walletAddress||null,isotope:c.isotope||null,token:c.tokenSlug||c.token||null,value:c.value!=null?String(c.value):null,batchId:c.batchId||null,metaType:c.metaType||null,metaId:c.metaId||null,meta:u,index:c.index!=null?c.index:null,otsFragment:c.otsFragment||null,createdAt:c.createdAt||null}});return D.fromJSON({molecularHash:e,bundle:t,cellSlug:n,status:s,createdAt:r,atoms:a})}static verifyFromServerData(e){try{const t=be.fromServerData(e);return new be(t).verify(),{molecularHash:e.molecularHash,verified:!0,error:null}}catch(t){return{molecularHash:e.molecularHash||null,verified:!1,error:t.message||String(t)}}}}class ae extends x{constructor(e="Insufficient balance for requested transfer",t=null,n=null){super(e,t,n),this.name="BalanceInsufficientException"}}class ct extends x{constructor(e="Amount cannot be negative!",t=null,n=null){super(e,t,n),this.name="NegativeAmountException"}}class D{constructor({secret:e=null,bundle:t=null,sourceWallet:n=null,remainderWallet:s=null,cellSlug:r=null,version:i=null,continuIdPosition:a=null}){this.status=null,this.molecularHash=null,this.createdAt=String(+new Date),this.cellSlugOrigin=this.cellSlug=r,this.secret=e,this.bundle=t,this.sourceWallet=n,this.continuIdPosition=a,this.atoms=[],this.parentHashes=[],i!==null&&Object.prototype.hasOwnProperty.call(Ke,i)&&(this.version=String(i)),(s||n)&&(this.remainderWallet=s||k.create({secret:e,bundle:t,token:n.token,batchId:n.batchId,characters:n.characters}))}withParentHashes(e){return this.parentHashes=Array.isArray(e)?[...e]:[],this}get cellSlugDelimiter(){return"."}static isotopeFilter(e,t){return Array.isArray(e)||(e=[e]),t.filter(n=>e.includes(n.isotope))}static generateNextAtomIndex(e){return e.length}static jsonToObject(e){const t=Object.assign(new D({}),JSON.parse(e)),n=Object.keys(new D({}));if(!Array.isArray(t.atoms))throw new ne;for(const s in Object.keys(t.atoms)){t.atoms[s]=g.jsonToObject(JSON.stringify(t.atoms[s]));for(const r of["position","walletAddress","isotope"])if(t.atoms[s].isotope.toLowerCase()!=="r"&&(typeof t.atoms[s][r]>"u"||t.atoms[s][r]===null))throw new ne("MolecularStructure::jsonToObject() - Required Atom properties are missing!")}for(const s in t)Object.prototype.hasOwnProperty.call(t,s)&&!n.includes(s)&&delete t[s];return t.atoms=g.sortAtoms(t.atoms),t}static enumerate(e){const t={0:-8,1:-7,2:-6,3:-5,4:-4,5:-3,6:-2,7:-1,8:0,9:1,a:2,b:3,c:4,d:5,e:6,f:7,g:8},n=[],s=e.toLowerCase().split("");for(let r=0,i=s.length;r<i;++r){const a=s[r];typeof t[a]<"u"&&(n[r]=t[a])}return n}static normalize(e){let t=e.reduce((s,r)=>s+r);const n=t<0;for(;t<0||t>0;)for(const s of Object.keys(e))if((n?e[s]<8:e[s]>-8)&&(n?(++e[s],++t):(--e[s],--t),t===0))break;return e}getIsotopes(e){return D.isotopeFilter(e,this.atoms)}generateIndex(){return D.generateNextAtomIndex(this.atoms)}fill(e){for(const t in Object.keys(e))this[t]=e[t]}addAtom(e){return this.molecularHash=null,e.index=this.generateIndex(),e.version=this.version,this.atoms.push(e),this.atoms=g.sortAtoms(this.atoms),this}addContinuIdAtom(){(!this.remainderWallet||this.remainderWallet.token!=="USER")&&(this.remainderWallet=k.create({secret:this.secret,bundle:this.bundle}));const e={};return this.continuIdPosition?e.previousPosition=this.continuIdPosition:this.sourceWallet&&this.sourceWallet.position&&(e.previousPosition=this.sourceWallet.position),this.remainderWallet.pubkey&&(e.pubkey=this.remainderWallet.pubkey),this.remainderWallet.characters&&(e.characters=this.remainderWallet.characters),this.addAtom(g.create({isotope:"I",wallet:this.remainderWallet,metaType:"walletBundle",metaId:this.remainderWallet.bundle,meta:new B(e)})),this}addPolicyAtom({metaType:e,metaId:t,meta:n={},policy:s={}}){const r=new B(n);return r.addPolicy(s),this.addAtom(g.create({wallet:this.sourceWallet,isotope:"R",metaType:e,metaId:t,meta:r})),this}fuseToken(e,t){const n=e.length;if(this.sourceWallet.balance-n<0)throw new ae;return this.addAtom(g.create({isotope:"V",wallet:this.sourceWallet,value:-n})),this.addAtom(g.create({isotope:"F",wallet:t,value:1,metaType:"walletBundle",metaId:t.bundle})),this.addAtom(g.create({isotope:"V",wallet:this.remainderWallet,value:this.sourceWallet.balance-n,metaType:"walletBundle",metaId:this.remainderWallet.bundle})),this}burnToken({amount:e,walletBundle:t=null}){if(e<0)throw new ct("Molecule::burnToken() - Amount to burn must be positive!");if(this.sourceWallet.balance-e<0)throw new ae;const n=new k({bundle:"0000000000000000000000000000000000000000000000000000000000000000",token:this.sourceWallet.token});return this.addAtom(g.create({isotope:"V",wallet:this.sourceWallet,value:-this.sourceWallet.balance})),this.addAtom(g.create({isotope:"V",wallet:n,value:e,metaType:"walletBundle",metaId:n.bundle})),this.addAtom(g.create({isotope:"V",wallet:this.remainderWallet,value:this.sourceWallet.balance-e,metaType:"walletBundle",metaId:this.remainderWallet.bundle})),this}replenishToken({amount:e,units:t=[]}){if(e<0)throw new ct("Molecule::replenishToken() - Amount to replenish must be positive!");if(t.length){t=k.getTokenUnits(t),this.remainderWallet.tokenUnits=this.sourceWallet.tokenUnits;for(const n of t)this.remainderWallet.tokenUnits.push(n);this.remainderWallet.balance=String(this.remainderWallet.tokenUnits.length),this.sourceWallet.tokenUnits=t,this.sourceWallet.balance=String(this.sourceWallet.tokenUnits.length)}else this.remainderWallet.balance=String(Number(this.sourceWallet.balance)+e),this.sourceWallet.balance=String(e);return this.addAtom(g.create({isotope:"V",wallet:this.sourceWallet,value:Number(this.sourceWallet.balance)})),this.addAtom(g.create({isotope:"V",wallet:this.remainderWallet,value:Number(this.remainderWallet.balance),metaType:"walletBundle",metaId:this.remainderWallet.bundle})),this}initValue({recipientWallet:e,amount:t}){if(this.sourceWallet.balance-t<0)throw new ae;return this.addAtom(g.create({isotope:"V",wallet:this.sourceWallet,value:-this.sourceWallet.balance})),this.addAtom(g.create({isotope:"V",wallet:e,value:t,metaType:"walletBundle",metaId:e.bundle})),this.addAtom(g.create({isotope:"V",wallet:this.remainderWallet,value:this.sourceWallet.balance-t,metaType:"walletBundle",metaId:this.remainderWallet.bundle})),this}initValues({recipientWallets:e,amounts:t}){const n=t.reduce((s,r)=>s+Number(r),0);if(this.sourceWallet.balance-n<0)throw new ae;return this.addAtom(g.create({isotope:"V",wallet:this.sourceWallet,value:-this.sourceWallet.balance})),e.forEach((s,r)=>{this.addAtom(g.create({isotope:"V",wallet:s,value:t[r],metaType:"walletBundle",metaId:s.bundle}))}),this.addAtom(g.create({isotope:"V",wallet:this.remainderWallet,value:this.sourceWallet.balance-n,metaType:"walletBundle",metaId:this.remainderWallet.bundle})),this}initDepositBuffer({amount:e,tradeRates:t}){if(this.sourceWallet.balance-e<0)throw new ae;const n=k.create({secret:this.secret,bundle:this.bundle,token:this.sourceWallet.token,batchId:this.sourceWallet.batchId});return n.tradeRates=t,this.addAtom(g.create({isotope:"V",wallet:this.sourceWallet,value:-this.sourceWallet.balance})),this.addAtom(g.create({isotope:"B",wallet:n,value:e,metaType:"walletBundle",metaId:this.sourceWallet.bundle})),this.addAtom(g.create({isotope:"V",wallet:this.remainderWallet,value:this.sourceWallet.balance-e,metaType:"walletBundle",metaId:this.sourceWallet.bundle})),this}initWithdrawBuffer({recipients:e,signingWallet:t=null}){let n=0;for(const r of Object.values(e||{}))n+=r;if(this.sourceWallet.balance-n<0)throw new ae;const s=new B;t&&s.setSigningWallet(t),this.addAtom(g.create({isotope:"B",wallet:this.sourceWallet,value:-this.sourceWallet.balance,meta:s,metaType:"walletBundle",metaId:this.sourceWallet.bundle}));for(const[r,i]of Object.entries(e||{}))this.addAtom(new g({isotope:"V",token:this.sourceWallet.token,value:i,batchId:this.sourceWallet.batchId?Me({}):null,metaType:"walletBundle",metaId:r}));return this.addAtom(g.create({isotope:"B",wallet:this.remainderWallet,value:this.sourceWallet.balance-n,metaType:"walletBundle",metaId:this.remainderWallet.bundle})),this}initTokenCreation({recipientWallet:e,amount:t,meta:n}){const s=new B(n);return s.setMetaWallet(e),this.addAtom(g.create({isotope:"C",wallet:this.sourceWallet,value:t,metaType:"token",metaId:e.token,meta:s,batchId:e.batchId})),this.addContinuIdAtom(),this}createRule({metaType:e,metaId:t,rule:n,policy:s={}}){const r=[];for(const a of n)r.push(a instanceof Ce?a:Ce.toObject(a));const i=new B({rule:JSON.stringify(r)});return i.addPolicy(s),this.addAtom(g.create({isotope:"R",wallet:this.sourceWallet,metaType:e,metaId:t,meta:i})),this.addContinuIdAtom(),this}initWalletCreation(e,t=null){t||(t=new B),t.setMetaWallet(e);const n=g.create({isotope:"C",wallet:this.sourceWallet,metaType:"wallet",metaId:e.address,meta:t,batchId:e.batchId});return this.addAtom(n),this.addContinuIdAtom(),this}initShadowWalletClaim(e){const t=new B().setShadowWalletClaim(!0);return this.initWalletCreation(e,t)}initIdentifierCreation({type:e,contact:t,code:n}){const s={code:n,hash:he(t.trim(),"Molecule::initIdentifierCreation")};return this.addAtom(g.create({isotope:"C",wallet:this.sourceWallet,metaType:"identifier",metaId:e,meta:new B(s)})),this.addContinuIdAtom(),this}initMeta({meta:e,metaType:t,metaId:n,policy:s}){return this.addAtom(g.create({isotope:"M",wallet:this.sourceWallet,metaType:t,metaId:n,meta:new B(e)})),s&&Object.keys(s).length>0&&this.addPolicyAtom({metaType:t,metaId:n,meta:e,policy:s}),this.addContinuIdAtom(),this}initPeering({host:e}){return this.addAtom(g.create({isotope:"P",wallet:this.sourceWallet,metaType:"walletBundle",metaId:this.bundle,meta:new B({peerHost:e})})),this.addContinuIdAtom(),this}initAppendRequest({metaType:e,metaId:t,action:n,meta:s={}}){return this.addAtom(g.create({isotope:"A",wallet:this.sourceWallet,metaType:e,metaId:t,meta:new B({action:n,...s})})),this.addContinuIdAtom(),this}initTokenRequest({token:e,amount:t,metaType:n,metaId:s,meta:r={},batchId:i=null}){return r.token=e,r.amount=String(t),this.addAtom(g.create({isotope:"T",wallet:this.sourceWallet,value:t,metaType:n,metaId:s,meta:new B(r),batchId:i})),this.addContinuIdAtom(),this}initAuthorization({meta:e}){return this.addAtom(g.create({isotope:"U",wallet:this.sourceWallet,meta:new B(e)})),this.addContinuIdAtom(),this}sign({bundle:e=null,anonymous:t=!1,compressed:n=!0}){if(this.atoms.length===0||this.atoms.filter(d=>!(d instanceof g)).length!==0)throw new ne;!t&&!this.bundle&&(this.bundle=e||he(this.secret,"Molecule::sign")),this.molecularHash=g.hashAtoms({atoms:this.atoms});const s=this.atoms[0];let r=s.position;const i=M.get(s.aggregatedMeta(),"signingWallet");if(i&&(r=M.get(JSON.parse(i),"position")),!r)throw new wt("Signing wallet must have a position!");const a=k.generateKey({secret:this.secret,token:s.token,position:s.position}),c=Ie(a,128),u=this.normalizedHash();let l="";for(const d in c){let b=c[d];for(let A=0,R=8-u[d];A<R;A++)b=new Q("SHAKE256","TEXT").update(b).getHash("HEX",{outputLen:512});l+=b}n&&(l=Kt(l));const h=Ie(l,Math.ceil(l.length/this.atoms.length));let p=null;for(let d=0,b=h.length;d<b;d++)this.atoms[d].otsFragment=h[d],p=this.atoms[d].position;return p}signSync(e={}){return this.sign(e)}cellSlugBase(){return(this.cellSlug||"").split(this.cellSlugDelimiter)[0]}toJSON(e={}){const{includeValidationContext:t=!1,includeOtsFragments:n=!0}=e;try{const s={status:this.status,molecularHash:this.molecularHash,createdAt:this.createdAt,cellSlug:this.cellSlug,bundle:this.bundle,atoms:this.atoms.map(r=>r.toJSON({includeOtsFragments:n}))};return this.parentHashes&&this.parentHashes.length>0&&(s.parentHashes=this.parentHashes),t&&(s.cellSlugOrigin=this.cellSlugOrigin,s.version=this.version,this.sourceWallet&&(s.sourceWallet={address:this.sourceWallet.address,position:this.sourceWallet.position,token:this.sourceWallet.token,balance:this.sourceWallet.balance||"0",bundle:this.sourceWallet.bundle,batchId:this.sourceWallet.batchId||null,characters:this.sourceWallet.characters||"BASE64",pubkey:this.sourceWallet.pubkey||null,tokenUnits:this.sourceWallet.tokenUnits||[],tradeRates:this.sourceWallet.tradeRates||{},molecules:this.sourceWallet.molecules||{}}),this.remainderWallet&&(s.remainderWallet={address:this.remainderWallet.address,position:this.remainderWallet.position,token:this.remainderWallet.token,balance:this.remainderWallet.balance||"0",bundle:this.remainderWallet.bundle,batchId:this.remainderWallet.batchId||null,characters:this.remainderWallet.characters||"BASE64",pubkey:this.remainderWallet.pubkey||null,tokenUnits:this.remainderWallet.tokenUnits||[],tradeRates:this.remainderWallet.tradeRates||{},molecules:this.remainderWallet.molecules||{}})),s}catch(s){throw new Error(`Molecule serialization failed: ${s.message}`)}}static fromJSON(e,t={}){const{includeValidationContext:n=!1,validateStructure:s=!0}=t;try{const r=typeof e=="string"?JSON.parse(e):e;if(s&&(!r.molecularHash||!Array.isArray(r.atoms)))throw new Error("Invalid molecule data: missing molecularHash or atoms array");const i=new D({secret:null,bundle:r.bundle||null,cellSlug:r.cellSlug||null,version:r.version||null});return i.status=r.status,i.molecularHash=r.molecularHash,i.createdAt=r.createdAt||String(+new Date),i.cellSlugOrigin=r.cellSlugOrigin,i.parentHashes=Array.isArray(r.parentHashes)?[...r.parentHashes]:[],Array.isArray(r.atoms)&&(i.atoms=r.atoms.map((a,c)=>{try{return g.fromJSON(a)}catch(u){throw new Error(`Failed to reconstruct atom ${c}: ${u.message}`)}})),n&&(r.sourceWallet&&(i.sourceWallet=new k({secret:null,token:r.sourceWallet.token,position:r.sourceWallet.position,bundle:r.sourceWallet.bundle,batchId:r.sourceWallet.batchId,characters:r.sourceWallet.characters}),i.sourceWallet.balance=String(r.sourceWallet.balance!=null?r.sourceWallet.balance:0),i.sourceWallet.address=r.sourceWallet.address,r.sourceWallet.pubkey&&(i.sourceWallet.pubkey=r.sourceWallet.pubkey),i.sourceWallet.tokenUnits=r.sourceWallet.tokenUnits||[],i.sourceWallet.tradeRates=r.sourceWallet.tradeRates||{},i.sourceWallet.molecules=r.sourceWallet.molecules||{}),r.remainderWallet&&(i.remainderWallet=new k({secret:null,token:r.remainderWallet.token,position:r.remainderWallet.position,bundle:r.remainderWallet.bundle,batchId:r.remainderWallet.batchId,characters:r.remainderWallet.characters}),i.remainderWallet.balance=String(r.remainderWallet.balance!=null?r.remainderWallet.balance:0),i.remainderWallet.address=r.remainderWallet.address,r.remainderWallet.pubkey&&(i.remainderWallet.pubkey=r.remainderWallet.pubkey),i.remainderWallet.tokenUnits=r.remainderWallet.tokenUnits||[],i.remainderWallet.tradeRates=r.remainderWallet.tradeRates||{},i.remainderWallet.molecules=r.remainderWallet.molecules||{})),i}catch(r){throw new Error(`Molecule deserialization failed: ${r.message}`)}}check(e=null){return new be(this).verify(e)}normalizedHash(){return D.normalize(D.enumerate(this.molecularHash))}}class we{constructor({token:e,expiresAt:t,encrypt:n,pubkey:s}){this.$__token=e,this.$__expiresAt=t,this.$__pubkey=s,this.$__encrypt=n}static create(e,t){const n=new we(e);return n.setWallet(t),n}static restore(e,t){const n=new k({secret:t,token:"AUTH",position:e.wallet.position,characters:e.wallet.characters});return we.create({token:e.token,expiresAt:e.expiresAt,pubkey:e.pubkey,encrypt:e.encrypt},n)}setWallet(e){this.$__wallet=e}getWallet(){return this.$__wallet}getSnapshot(){return{token:this.$__token,expiresAt:this.$__expiresAt,pubkey:this.$__pubkey,encrypt:this.$__encrypt,wallet:{position:this.$__wallet.position,characters:this.$__wallet.characters}}}getToken(){return this.$__token}getPubkey(){return this.$__pubkey}getExpireInterval(){return this.$__expiresAt*1e3-Date.now()}isExpired(){return!this.$__expiresAt||this.getExpireInterval()<0}getAuthData(){return{token:this.getToken(),pubkey:this.getPubkey(),wallet:this.getWallet()}}}const rt=10**18;class se{static val(e){return Math.abs(e*rt)<1?0:e}static cmp(e,t,n=!1){const s=se.val(e)*rt,r=se.val(t)*rt;return Math.abs(s-r)<1?0:s>r?1:-1}static equal(e,t){return se.cmp(e,t)===0}}class ee extends x{constructor(e="GraphQL did not provide a valid response.",t=null,n=null){super(e,t,n),this.name="InvalidResponseException"}}class Ee extends x{constructor(e="Authorization token missing or invalid.",t=null,n=null){super(e,t,n),this.name="UnauthenticatedException"}}let E=class{constructor({query:e,json:t,dataKey:n=null}){if(this.dataKey=n,this.errorKey="exception",this.$__payload=null,this.$__query=e,this.$__originResponse=t,this.$__response=t,typeof this.$__response>"u"||this.$__response===null)throw new ee;if(M.has(this.$__response,this.errorKey)){const s=M.get(this.$__response,this.errorKey);throw String(s).includes("Unauthenticated")?new Ee:new ee}if(this.$__response.errors&&Array.isArray(this.$__response.errors)&&this.$__response.errors.length>0){const s=this.$__response.errors[0].message||"Unknown GraphQL error";throw s.includes("Unauthenticated")?new Ee:new ee(`GraphQL Error: ${s}`)}this.init()}init(){}data(){if(!this.dataKey)return this.response();if(!this.response().data)throw new ee("Response has no data field");if(!M.has(this.response(),this.dataKey))throw new ee(`Missing expected field: ${this.dataKey}`);return M.get(this.response(),this.dataKey)}response(){return this.$__response}payload(){return null}query(){return this.$__query}status(){return null}success(){return!this.$__response?.errors?.length}error(){return this.$__response?.errors?.length?this.$__response.errors[0].message||"Unknown error":null}reason(){return this.error()}toValidationResult(){return this.success()&&this.payload()!==null?{success:!0,data:this.payload(),warnings:[]}:{success:!1,error:{message:this.reason()||"Unknown error",context:this.constructor.name,details:this.$__response?.errors||[]}}}onSuccess(e){if(this.success()&&this.payload()!==null)try{e(this.payload())}catch(t){console.warn("Response.onSuccess callback failed:",t)}return this}onFailure(e){if(!this.success())try{e(this.reason()||"Unknown error")}catch(t){console.warn("Response.onFailure callback failed:",t)}return this}debug(e=null){const t=e?`[${e}]`:`[${this.constructor.name}]`;return this.success()?console.debug(`${t} Success:`,{payload:this.payload(),query:this.$__query?.constructor?.name,dataKey:this.dataKey}):console.debug(`${t} Failure:`,{error:this.reason(),errors:this.$__response?.errors,rawData:this.$__response}),this}toPromise(){return this.success()&&this.payload()!==null?Promise.resolve(this.payload()):Promise.reject(new Error(this.reason()||"Unknown error"))}map(e){if(this.success()&&this.payload()!==null)try{const t=e(this.payload()),n=Object.create(Object.getPrototypeOf(this));return Object.assign(n,this),n.$__payload=t,n}catch(t){const n=Object.create(Object.getPrototypeOf(this));return Object.assign(n,this),n.$__response={errors:[{message:`Mapping failed: ${t.message}`}]},n}else return this}};class K{constructor(e,t){this.client=e,this.knishIOClient=t,this.$__variables=null,this.$__query=null,this.$__response=null,this.$__request=null}response(){return this.$__response}async createResponseRaw(e){return this.createResponse(e)}createResponse(e){return new E({query:this,json:e})}createQuery({variables:e=null}){if(this.$__variables=this.compiledVariables(e),!this.uri())throw new Y("Query::createQuery() - Node URI was not initialized for this client instance!");if(this.$__query===null)throw new Y("Query::createQuery() - GraphQL subscription was not initialized!");return{query:this.$__query,variables:this.variables()}}async execute({variables:e=null,context:t={}}){this.$__request=this.createQuery({variables:e});const n={...t,...this.createQueryContext()};try{const s=await this.client.query({...this.$__request,context:n});return this.$__response=await this.createResponseRaw(s),this.$__response}catch(s){if(s.name==="AbortError")return this.knishIOClient.log("warn","Query was cancelled"),new E({query:this,json:{data:null,errors:[{message:"Query was cancelled"}]}});throw s}}compiledVariables(e=null){return e||{}}uri(){return this.client.getUri()}variables(){return this.$__variables}createQueryContext(){return{}}}class un extends E{constructor({query:e,json:t}){super({query:e,json:t,dataKey:"data.ContinuId"})}payload(){let e=null;const t=this.data();return t&&(e=new k({secret:null,token:t.tokenSlug}),e.address=t.address,e.position=t.position,e.bundle=t.bundleHash,e.batchId=t.batchId,e.characters=t.characters,e.pubkey=t.pubkey,e.balance=String(t.amount!=null?t.amount:0)),e}}class hn extends K{constructor(e,t){super(e,t),this.$__query=T.gql`query ($bundle: String!) {
|
|
5
5
|
ContinuId(bundle: $bundle) {
|
|
6
6
|
address,
|
|
7
7
|
bundleHash,
|
|
@@ -13,7 +13,7 @@ ${this.stack}`}}class se extends x{constructor(e="The molecule does not contain
|
|
|
13
13
|
amount,
|
|
14
14
|
createdAt
|
|
15
15
|
}
|
|
16
|
-
}`}createQueryContext(){return{requestPolicy:"network-only"}}createResponse(e){return new
|
|
16
|
+
}`}createQueryContext(){return{requestPolicy:"network-only"}}createResponse(e){return new un({query:this,json:e})}}class dn extends E{constructor({query:e,json:t}){super({query:e,json:t,dataKey:"data.WalletBundle"})}payload(){const e=this.data();if(!e||e.length===0)return null;const t={};return e.forEach(n=>{n.metas=ue.aggregateMeta(n.metas),t[n.bundleHash]=n}),t}}class pn extends K{constructor(e,t){super(e,t),this.$__query=T.gql`query( $bundleHashes: [ String! ] ) {
|
|
17
17
|
WalletBundle( bundleHashes: $bundleHashes ) {
|
|
18
18
|
bundleHash,
|
|
19
19
|
metas {
|
|
@@ -25,7 +25,7 @@ ${this.stack}`}}class se extends x{constructor(e="The molecule does not contain
|
|
|
25
25
|
},
|
|
26
26
|
createdAt
|
|
27
27
|
}
|
|
28
|
-
}`}createResponse(e){return new
|
|
28
|
+
}`}createResponse(e){return new dn({query:this,json:e})}}class qe extends E{constructor({query:e,json:t}){super({query:e,json:t,dataKey:"data.Wallet"})}static toClientWallet({data:e,secret:t=null}){let n;if(e.position===null||typeof e.position>"u"?n=k.create({bundle:e.bundleHash,token:e.tokenSlug,batchId:e.batchId,characters:e.characters}):(n=new k({secret:t,token:e.tokenSlug,position:e.position,batchId:e.batchId,characters:e.characters}),n.address=e.address,n.bundle=e.bundleHash),e.token&&(n.tokenName=e.token.name,n.tokenAmount=e.token.amount,n.tokenSupply=e.token.supply,n.tokenFungibility=e.token.fungibility),e.tokenUnits.length)for(const s of e.tokenUnits)n.tokenUnits.push(de.createFromGraphQL(s));if(e.tradeRates.length)for(const s of e.tradeRates)n.tradeRates[s.tokenSlug]=s.amount;return n.balance=String(e.amount!=null?e.amount:0),n.pubkey=e.pubkey,n.createdAt=e.createdAt,n}getWallets(e=null){const t=this.data();if(!t)return null;const n=[];for(const s of t)n.push(qe.toClientWallet({data:s,secret:e}));return n}payload(){return this.getWallets()}}class fn extends K{constructor(e,t){super(e,t),this.$__query=T.gql`query( $bundleHash: String, $token: String ) {
|
|
29
29
|
Wallet( bundleHash: $bundleHash, token: $token ) {
|
|
30
30
|
address,
|
|
31
31
|
bundleHash,
|
|
@@ -52,7 +52,7 @@ ${this.stack}`}}class se extends x{constructor(e="The molecule does not contain
|
|
|
52
52
|
amount
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
|
-
}`}createResponse(e){return new
|
|
55
|
+
}`}createResponse(e){return new qe({query:this,json:e})}}class mn extends E{constructor({query:e,json:t}){super({query:e,json:t,dataKey:"data.Balance"})}payload(){let e=this.data();return Array.isArray(e)&&(e=e.length>0?e[0]:null),!e||!e.bundleHash||!e.tokenSlug?null:qe.toClientWallet({data:e})}}class yn extends K{constructor(e,t){super(e,t),this.$__query=T.gql`query( $address: String, $bundleHash: String, $type: String, $token: String, $position: String ) {
|
|
56
56
|
Balance( address: $address, bundleHash: $bundleHash, type: $type, token: $token, position: $position ) {
|
|
57
57
|
address,
|
|
58
58
|
bundleHash,
|
|
@@ -74,7 +74,7 @@ ${this.stack}`}}class se extends x{constructor(e="The molecule does not contain
|
|
|
74
74
|
amount
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
|
-
}`}createResponse(e){return new
|
|
77
|
+
}`}createResponse(e){return new mn({query:this,json:e})}}class gn extends E{constructor({query:e,json:t}){super({query:e,json:t,dataKey:"data.MetaType"})}payload(){const e=this.data();if(!e||e.length===0)return null;const t={instances:{},instanceCount:{},paginatorInfo:{}},n=e.pop();return n.instances&&(t.instances=n.instances),n.instanceCount&&(t.instanceCount=n.instanceCount),n.paginatorInfo&&(t.paginatorInfo=n.paginatorInfo),t}}class ut extends K{constructor(e,t){super(e,t),this.$__query=T.gql`query( $metaType: String, $metaTypes: [ String! ], $metaId: String, $metaIds: [ String! ], $key: String, $keys: [ String! ], $value: String, $values: [ String! ], $count: String, $latest: Boolean, $filter: [ MetaFilter! ], $queryArgs: QueryArgs, $countBy: String, $cellSlug: String ) {
|
|
78
78
|
MetaType( metaType: $metaType, metaTypes: $metaTypes, metaId: $metaId, metaIds: $metaIds, key: $key, keys: $keys, value: $value, values: $values, count: $count, filter: $filter, queryArgs: $queryArgs, countBy: $countBy, cellSlug: $cellSlug ) {
|
|
79
79
|
metaType,
|
|
80
80
|
instanceCount {
|
|
@@ -98,11 +98,11 @@ ${this.stack}`}}class se extends x{constructor(e="The molecule does not contain
|
|
|
98
98
|
total
|
|
99
99
|
}
|
|
100
100
|
}
|
|
101
|
-
}`}static createVariables({metaType:e=null,metaId:t=null,key:n=null,value:s=null,latest:r=null,filter:i=null,queryArgs:a=null,count:c=null,countBy:u=null,cellSlug:l=null}){const h={};return e&&(h[typeof e=="string"?"metaType":"metaTypes"]=e),t&&(h[typeof t=="string"?"metaId":"metaIds"]=t),n&&(h[typeof n=="string"?"key":"keys"]=n),s&&(h[typeof s=="string"?"value":"values"]=s),h.latest=r===!0,i&&(h.filter=i),a&&((typeof a.limit>"u"||a.limit===0)&&(a.limit="*"),h.queryArgs=a),c&&(h.count=c),u&&(h.countBy=u),l&&(h.cellSlug=l),h}createResponse(e){return new
|
|
101
|
+
}`}static createVariables({metaType:e=null,metaId:t=null,key:n=null,value:s=null,latest:r=null,filter:i=null,queryArgs:a=null,count:c=null,countBy:u=null,cellSlug:l=null}){const h={};return e&&(h[typeof e=="string"?"metaType":"metaTypes"]=e),t&&(h[typeof t=="string"?"metaId":"metaIds"]=t),n&&(h[typeof n=="string"?"key":"keys"]=n),s&&(h[typeof s=="string"?"value":"values"]=s),h.latest=r===!0,i&&(h.filter=i),a&&((typeof a.limit>"u"||a.limit===0)&&(a.limit="*"),h.queryArgs=a),c&&(h.count=c),u&&(h.countBy=u),l&&(h.cellSlug=l),h}createResponse(e){return new gn({query:this,json:e})}}class ke extends K{constructor(e,t){super(e,t),this.$__query=T.gql`query( $batchId: String ) {
|
|
102
102
|
Batch( batchId: $batchId ) {
|
|
103
|
-
${
|
|
103
|
+
${ke.getFields()},
|
|
104
104
|
children {
|
|
105
|
-
${
|
|
105
|
+
${ke.getFields()}
|
|
106
106
|
}
|
|
107
107
|
}
|
|
108
108
|
}`}static getFields(){return`batchId,
|
|
@@ -154,11 +154,11 @@ ${this.stack}`}}class se extends x{constructor(e="The molecule does not contain
|
|
|
154
154
|
throughMetas {
|
|
155
155
|
key,
|
|
156
156
|
value
|
|
157
|
-
}`}createResponse(e){const t=new E({query:this,json:e});return t.dataKey="data.Batch",t}}class
|
|
157
|
+
}`}createResponse(e){const t=new E({query:this,json:e});return t.dataKey="data.Batch",t}}class bn extends K{constructor(e,t){super(e,t),this.$__query=T.gql`query( $batchId: String ) {
|
|
158
158
|
BatchHistory( batchId: $batchId ) {
|
|
159
|
-
${
|
|
159
|
+
${ke.getFields()}
|
|
160
160
|
}
|
|
161
|
-
}`}createResponse(e){const t=new E({query:this,json:e});return t.dataKey="data.BatchHistory",t}}class F extends E{constructor({query:e,json:t}){super({query:e,json:t,dataKey:"data.ProposeMolecule"}),this.$__clientMolecule=e.molecule()}init(){const e=M.get(this.data(),"payload");try{this.$__payload=Object.prototype.toString.call(e)==="[object String]"?JSON.parse(e):e}catch{this.$__payload=null}}clientMolecule(){return this.$__clientMolecule}molecule(){const e=this.data();if(!e)return null;const t=new
|
|
161
|
+
}`}createResponse(e){const t=new E({query:this,json:e});return t.dataKey="data.BatchHistory",t}}class F extends E{constructor({query:e,json:t}){super({query:e,json:t,dataKey:"data.ProposeMolecule"}),this.$__clientMolecule=e.molecule()}init(){const e=M.get(this.data(),"payload");try{this.$__payload=Object.prototype.toString.call(e)==="[object String]"?JSON.parse(e):e}catch{this.$__payload=null}}clientMolecule(){return this.$__clientMolecule}molecule(){const e=this.data();if(!e)return null;const t=new D({});return t.molecularHash=M.get(e,"molecularHash"),t.status=M.get(e,"status"),t.createdAt=M.get(e,"createdAt"),t}success(){return this.status()==="accepted"}status(){return M.get(this.data(),"status","rejected")}reason(){return M.get(this.data(),"reason","Invalid response from server")}payload(){return this.$__payload}}class Oe extends K{createQuery({variables:e=null}){const t=super.createQuery({variables:e});return t.mutation=t.query,delete t.query,t}async execute({variables:e={},context:t={}}){this.$__request=this.createQuery({variables:e});const n={...t,...this.createQueryContext()};try{const s={...this.$__request,context:n},r=await this.client.mutate(s);return this.$__response=await this.createResponseRaw(r),this.$__response}catch(s){if(s.name==="AbortError")return this.knishIOClient.log("warn","Mutation was cancelled"),new E({query:this,json:{data:null,errors:[{message:"Mutation was cancelled"}]}});throw s}}createQueryContext(){return{}}}class W extends Oe{constructor(e,t,n){super(e,t),this.$__molecule=n,this.$__remainderWallet=null,this.$__query=T.gql`mutation( $molecule: MoleculeInput! ) {
|
|
162
162
|
ProposeMolecule( molecule: $molecule ) {
|
|
163
163
|
molecularHash,
|
|
164
164
|
height,
|
|
@@ -171,7 +171,7 @@ ${this.stack}`}}class se extends x{constructor(e="The molecule does not contain
|
|
|
171
171
|
processedAt,
|
|
172
172
|
broadcastedAt,
|
|
173
173
|
}
|
|
174
|
-
}`}compiledVariables(e){return{...super.compiledVariables(e),molecule:this.molecule()}}createResponse(e){return new F({query:this,json:e})}async execute({variables:e=null}){return e=e||{},e.molecule=this.molecule(),super.execute({variables:e})}remainderWallet(){return this.$__remainderWallet}molecule(){return this.$__molecule}}class
|
|
174
|
+
}`}compiledVariables(e){return{...super.compiledVariables(e),molecule:this.molecule()}}createResponse(e){return new F({query:this,json:e})}async execute({variables:e=null}){return e=e||{},e.molecule=this.molecule(),super.execute({variables:e})}remainderWallet(){return this.$__remainderWallet}molecule(){return this.$__molecule}}class wn extends F{payloadKey(e){if(!M.has(this.payload(),e))throw new ee(`ResponseRequestAuthorization::payloadKey() - '${e}' key was not found in the payload!`);return M.get(this.payload(),e)}token(){return this.payloadKey("token")}time(){return this.payloadKey("time")}expiresAt(){try{const t=this.payloadKey("expiresAt");if(t)return Number(t)}catch{}const e=Number(this.time());return e>=1577836800?e:Math.floor(Date.now()/1e3)+Math.floor(e/1e3)}encrypt(){return this.payloadKey("encrypt")}pubKey(){return this.payloadKey("key")}}class kn extends W{fillMolecule({meta:e}){this.$__molecule.initAuthorization({meta:e}),this.$__molecule.sign({}),this.$__molecule.check()}createResponse(e){return new wn({query:this,json:e})}}class _n extends F{}class Sn extends W{fillMolecule({recipientWallet:e,amount:t,meta:n=null}){this.$__molecule.initTokenCreation({recipientWallet:e,amount:t,meta:n||{}}),this.$__molecule.sign({bundle:e.bundle}),this.$__molecule.check()}createResponse(e){return new _n({query:this,json:e})}}class $n extends F{}class An extends W{fillMolecule({token:e,amount:t,metaType:n,metaId:s,meta:r=null,batchId:i=null}){this.$__molecule.initTokenRequest({token:e,amount:t,metaType:n,metaId:s,meta:r||{},batchId:i}),this.$__molecule.sign({}),this.$__molecule.check()}createResponse(e){return new $n({query:this,json:e})}}class vn extends F{payload(){const e={reason:null,status:null},t=this.data();return e.reason=typeof t.reason>"u"?"Invalid response from server":t.reason,e.status=typeof t.status>"u"?"rejected":t.status,e}}class ht extends W{fillMolecule({recipientWallet:e,amount:t}){this.$__molecule.initValue({recipientWallet:e,amount:t}),this.$__molecule.sign({}),this.$__molecule.check(this.$__molecule.sourceWallet)}fillMoleculeMulti({recipientWallets:e,amounts:t}){this.$__molecule.initValues({recipientWallets:e,amounts:t}),this.$__molecule.sign({}),this.$__molecule.check(this.$__molecule.sourceWallet)}createResponse(e){return new vn({query:this,json:e})}}class xn extends F{}class In extends W{fillMolecule({type:e,contact:t,code:n}){this.$__molecule.initIdentifierCreation({type:e,contact:t,code:n}),this.$__molecule.sign({}),this.$__molecule.check()}createResponse(e){return new xn({query:this,json:e})}}class Mn extends F{}class Tn extends W{fillMolecule({token:e,batchId:t=null}){const n=k.create({secret:this.$__molecule.secret,bundle:this.$__molecule.bundle,token:e,batchId:t});this.$__molecule.initShadowWalletClaim(n),this.$__molecule.sign({}),this.$__molecule.check()}createResponse(e){return new Mn({query:this,json:e})}}class Cn extends F{}class En extends W{fillMolecule({metaType:e,metaId:t,meta:n,policy:s}){this.$__molecule.initMeta({meta:n,metaType:e,metaId:t,policy:s}),this.$__molecule.sign({}),this.$__molecule.check()}createResponse(e){return new Cn({query:this,json:e})}}class Rn extends F{}class qn extends W{fillMolecule({host:e}){this.$__molecule.initPeering({host:e}),this.$__molecule.sign({}),this.$__molecule.check()}createResponse(e){return new Rn({query:this,json:e})}}class On extends F{}class Wn extends W{fillMolecule({metaType:e,metaId:t,action:n,meta:s={}}){this.$__molecule.initAppendRequest({metaType:e,metaId:t,action:n,meta:s}),this.$__molecule.sign({}),this.$__molecule.check()}createResponse(e){return new On({query:this,json:e})}}class Un extends E{constructor({query:e,json:t}){super({query:e,json:t,dataKey:"data.LinkIdentifier"})}success(){return M.get(this.data(),"set")}message(){return M.get(this.data(),"message")}}class Bn extends Oe{constructor(e,t){super(e,t),this.$__query=T.gql`mutation( $bundle: String!, $type: String!, $content: String! ) {
|
|
175
175
|
LinkIdentifier( bundle: $bundle, type: $type, content: $content ) {
|
|
176
176
|
type,
|
|
177
177
|
bundle,
|
|
@@ -179,13 +179,13 @@ ${this.stack}`}}class se extends x{constructor(e="The molecule does not contain
|
|
|
179
179
|
set,
|
|
180
180
|
message
|
|
181
181
|
}
|
|
182
|
-
}`}createResponse(e){return new
|
|
182
|
+
}`}createResponse(e){return new Un({query:this,json:e})}}class Hn extends F{}class Pn extends W{fillMolecule(e){this.$__molecule.initWalletCreation(e),this.$__molecule.sign({}),this.$__molecule.check()}createResponse(e){return new Hn({query:this,json:e})}}class Kn extends E{constructor({query:e,json:t}){super({query:e,json:t,dataKey:"data.AccessToken"})}reason(){return"Invalid response from server"}success(){return this.payload()!==null}payload(){return this.data()}payloadKey(e){if(!M.has(this.payload(),e))throw new ee(`ResponseAuthorizationGuest::payloadKey() - '${e}' key is not found in the payload!`);return M.get(this.payload(),e)}token(){return this.payloadKey("token")}time(){return this.payloadKey("time")}expiresAt(){try{const t=this.payloadKey("expiresAt");if(t)return Number(t)}catch{}const e=Number(this.time());return e>=1577836800?e:Math.floor(Date.now()/1e3)+Math.floor(e/1e3)}pubKey(){return this.payloadKey("key")}encrypt(){return this.payloadKey("encrypt")}}class Nn extends Oe{constructor(e,t){super(e,t),this.$__query=T.gql`mutation( $cellSlug: String, $pubkey: String, $encrypt: Boolean ) {
|
|
183
183
|
AccessToken( cellSlug: $cellSlug, pubkey: $pubkey, encrypt: $encrypt ) {
|
|
184
184
|
token,
|
|
185
185
|
pubkey,
|
|
186
186
|
expiresAt
|
|
187
187
|
}
|
|
188
|
-
}`}createResponse(e){return new
|
|
188
|
+
}`}createResponse(e){return new Kn({query:this,json:e})}}class dt extends x{constructor(e="The shadow wallet does not exist",t=null,n=null){super(e,t,n),this.name="WalletShadowException"}}class Ln extends x{constructor(e="Stackable tokens with unit IDs cannot have decimal places!",t=null,n=null){super(e,t,n),this.name="StackableUnitDecimalsException"}}class ge extends x{constructor(e="Stackable tokens with unit IDs cannot have an amount!",t=null,n=null){super(e,t,n),this.name="StackableUnitAmountException"}}class Je{constructor(e){this.client=e,this.$__variables=null,this.$__subscribe=null}createSubscribe({variables:e=null}){if(this.$__variables=this.compiledVariables(e),!this.uri())throw new Y("Subscribe::createSubscribe() - Node URI was not initialized for this client instance!");if(this.$__subscribe===null)throw new Y("Subscribe::createSubscribe() - GraphQL subscription was not initialized!");return{query:this.$__subscribe,variables:this.variables(),fetchPolicy:"no-cache"}}async execute({variables:e=null,closure:t}){if(!t)throw new Y(`${this.constructor.name}::execute() - closure parameter is required!`);return this.$__request=this.createSubscribe({variables:e}),this.client.subscribe(this.$__request,t)}compiledVariables(e=null){return e||{}}uri(){return this.client.getUri()}variables(){return this.$__variables}}class Js extends Je{constructor(e){super(e),this.$__subscribe=T.gql`
|
|
189
189
|
subscription onCreateMolecule ( $bundle: String! ) {
|
|
190
190
|
CreateMolecule( bundle: $bundle ) {
|
|
191
191
|
molecularHash,
|
|
@@ -230,7 +230,7 @@ ${this.stack}`}}class se extends x{constructor(e="The molecule does not contain
|
|
|
230
230
|
}
|
|
231
231
|
}
|
|
232
232
|
}
|
|
233
|
-
`}}class
|
|
233
|
+
`}}class Gs extends Je{constructor(e){super(e),this.$__subscribe=T.gql`
|
|
234
234
|
subscription onWalletStatus ( $bundle: String!, $token: String! ) {
|
|
235
235
|
WalletStatus( bundle: $bundle, token: $token ) {
|
|
236
236
|
bundle,
|
|
@@ -239,7 +239,7 @@ ${this.stack}`}}class se extends x{constructor(e="The molecule does not contain
|
|
|
239
239
|
balance,
|
|
240
240
|
}
|
|
241
241
|
}
|
|
242
|
-
`}}class
|
|
242
|
+
`}}class Xs extends Je{constructor(e){super(e),this.$__subscribe=T.gql`
|
|
243
243
|
subscription onActiveWallet ( $bundle: String! ) {
|
|
244
244
|
ActiveWallet( bundle: $bundle ) {
|
|
245
245
|
address,
|
|
@@ -277,7 +277,7 @@ ${this.stack}`}}class se extends x{constructor(e="The molecule does not contain
|
|
|
277
277
|
}
|
|
278
278
|
}
|
|
279
279
|
}
|
|
280
|
-
`}}class
|
|
280
|
+
`}}class Zs extends Je{constructor(e){super(e),this.$__subscribe=T.gql`
|
|
281
281
|
subscription onActiveUser ( $metaType: String!, $metaId: String! ) {
|
|
282
282
|
ActiveUser( metaType: $metaType, metaId: $metaId ) {
|
|
283
283
|
bundleHash,
|
|
@@ -287,7 +287,7 @@ ${this.stack}`}}class se extends x{constructor(e="The molecule does not contain
|
|
|
287
287
|
createdAt,
|
|
288
288
|
updatedAt
|
|
289
289
|
}
|
|
290
|
-
}`}}class
|
|
290
|
+
}`}}class Qn extends E{constructor({query:e,json:t}){super({query:e,json:t,dataKey:"data.ActiveSession"})}}class Fn extends Oe{constructor(e,t){super(e,t),this.$__query=T.gql`mutation(
|
|
291
291
|
$bundleHash: String!,
|
|
292
292
|
$metaType: String!,
|
|
293
293
|
$metaId: String!,
|
|
@@ -315,7 +315,7 @@ ${this.stack}`}}class se extends x{constructor(e="The molecule does not contain
|
|
|
315
315
|
createdAt,
|
|
316
316
|
updatedAt
|
|
317
317
|
}
|
|
318
|
-
}`}createResponse(e){return new
|
|
318
|
+
}`}createResponse(e){return new Qn({query:this,json:e})}}class jn extends E{constructor({query:e,json:t}){super({query:e,json:t,dataKey:"data.ActiveUser"})}payload(){const e=this.data();if(!e)return null;const t=[];for(const n of e){const s={...n};s.jsonData&&(s.jsonData=JSON.parse(s.jsonData)),s.createdAt&&(s.createdAt=new Date(s.createdAt)),s.updatedAt&&(s.updatedAt=new Date(s.updatedAt)),t.push(s)}return t}}class Dn extends K{constructor(e,t){super(e,t),this.$__query=T.gql`query ActiveUserQuery ($bundleHash:String, $metaType: String, $metaId: String) {
|
|
319
319
|
ActiveUser (bundleHash: $bundleHash, metaType: $metaType, metaId: $metaId) {
|
|
320
320
|
bundleHash,
|
|
321
321
|
metaType,
|
|
@@ -324,7 +324,7 @@ ${this.stack}`}}class se extends x{constructor(e="The molecule does not contain
|
|
|
324
324
|
createdAt,
|
|
325
325
|
updatedAt
|
|
326
326
|
}
|
|
327
|
-
}`}createResponse(e){return new
|
|
327
|
+
}`}createResponse(e){return new jn({query:this,json:e})}}class Vn extends K{constructor(e,t){super(e,t),this.$__query=T.gql`query( $slug: String, $slugs: [ String! ], $limit: Int, $order: String ) {
|
|
328
328
|
Token( slug: $slug, slugs: $slugs, limit: $limit, order: $order ) {
|
|
329
329
|
slug,
|
|
330
330
|
name,
|
|
@@ -334,7 +334,7 @@ ${this.stack}`}}class se extends x{constructor(e="The molecule does not contain
|
|
|
334
334
|
amount,
|
|
335
335
|
icon,
|
|
336
336
|
}
|
|
337
|
-
}`}createResponse(e){return new E({query:this,json:e,dataKey:"data.Token"})}}class
|
|
337
|
+
}`}createResponse(e){return new E({query:this,json:e,dataKey:"data.Token"})}}class pt extends x{constructor(e="Authorization attempt rejected by ledger.",t=null,n=null){super(e,t,n),this.name="AuthorizationRejectedException"}}class zn extends E{constructor({query:e,json:t}){super({query:e,json:t,dataKey:"data.Atom"})}payload(){const e=this.data();if(!e)return null;const t={instances:[],instanceCount:{},paginatorInfo:{}};if(e.instances){t.instances=e.instances;for(const n in t.instances){const s=t.instances[n];s.metasJson&&(t.instances[n].metas=JSON.parse(s.metasJson))}}return e.instanceCount&&(t.instanceCount=e.instanceCount),e.paginatorInfo&&(t.paginatorInfo=e.paginatorInfo),t}metas(){const e=this.payload(),t=[];if(e&&e.instances)for(const n of e.instances)n.metasJson&&t.push(JSON.parse(n.metasJson));return t}}class ft extends K{constructor(e,t){super(e,t),this.$__query=T.gql`query(
|
|
338
338
|
$molecularHashes: [String!],
|
|
339
339
|
$bundleHashes: [String!],
|
|
340
340
|
$positions:[String!],
|
|
@@ -390,7 +390,7 @@ ${this.stack}`}}class se extends x{constructor(e="The molecule does not contain
|
|
|
390
390
|
total
|
|
391
391
|
}
|
|
392
392
|
}
|
|
393
|
-
}`}static createVariables({molecularHashes:e,molecularHash:t,bundleHashes:n,bundleHash:s,positions:r,position:i,walletAddresses:a,walletAddress:c,isotopes:u,isotope:l,tokenSlugs:h,tokenSlug:p,cellSlugs:d,cellSlug:b,batchIds:A,batchId:R,values:f,value:m,metaTypes:w,metaType:C,metaIds:_,metaId:$,indexes:v,index:I,filter:S,latest:H,queryArgs:q}){return t&&(e=e||[],e.push(t)),s&&(n=n||[],n.push(s)),i&&(r=r||[],r.push(i)),c&&(a=a||[],a.push(c)),l&&(u=u||[],u.push(l)),p&&(h=h||[],h.push(p)),b&&(d=d||[],d.push(b)),R&&(A=A||[],A.push(R)),m&&(f=f||[],f.push(m)),C&&(w=w||[],w.push(C)),$&&(_=_||[],_.push($)),I&&(v=v||[],v.push(I)),{molecularHashes:e,bundleHashes:n,positions:r,walletAddresses:a,isotopes:u,tokenSlugs:h,cellSlugs:d,batchIds:A,values:f,metaTypes:w,metaIds:_,indexes:v,filter:S,latest:H,queryArgs:q}}createResponse(e){return new
|
|
393
|
+
}`}static createVariables({molecularHashes:e,molecularHash:t,bundleHashes:n,bundleHash:s,positions:r,position:i,walletAddresses:a,walletAddress:c,isotopes:u,isotope:l,tokenSlugs:h,tokenSlug:p,cellSlugs:d,cellSlug:b,batchIds:A,batchId:R,values:f,value:m,metaTypes:w,metaType:C,metaIds:_,metaId:$,indexes:v,index:I,filter:S,latest:H,queryArgs:q}){return t&&(e=e||[],e.push(t)),s&&(n=n||[],n.push(s)),i&&(r=r||[],r.push(i)),c&&(a=a||[],a.push(c)),l&&(u=u||[],u.push(l)),p&&(h=h||[],h.push(p)),b&&(d=d||[],d.push(b)),R&&(A=A||[],A.push(R)),m&&(f=f||[],f.push(m)),C&&(w=w||[],w.push(C)),$&&(_=_||[],_.push($)),I&&(v=v||[],v.push(I)),{molecularHashes:e,bundleHashes:n,positions:r,walletAddresses:a,isotopes:u,tokenSlugs:h,cellSlugs:d,batchIds:A,values:f,metaTypes:w,metaIds:_,indexes:v,filter:S,latest:H,queryArgs:q}}createResponse(e){return new zn({query:this,json:e})}}class Jn extends E{constructor({query:e,json:t}){super({query:e,json:t}),this.dataKey="data.Policy",this.init()}payload(){const e=this.data();return e&&e.callback?JSON.parse(e.callback):null}}class Gn extends K{constructor(e,t){super(e,t),this.$__query=T.gql`query( $metaType: String, $metaId: String, ) {
|
|
394
394
|
Policy( metaType: $metaType, metaId: $metaId ) {
|
|
395
395
|
molecularHash,
|
|
396
396
|
position,
|
|
@@ -401,7 +401,7 @@ ${this.stack}`}}class se extends x{constructor(e="The molecule does not contain
|
|
|
401
401
|
rule,
|
|
402
402
|
createdAt
|
|
403
403
|
}
|
|
404
|
-
}`}createResponse(e){return new
|
|
404
|
+
}`}createResponse(e){return new Jn({query:this,json:e})}}class Xn extends E{constructor({query:e,json:t}){super({query:e,json:t,dataKey:"data.MetaTypeViaAtom"})}payload(){const e=this.data();if(!e||e.length===0)return null;const t={instances:{},instanceCount:{},paginatorInfo:{}},n=e.pop();return n.instances&&(t.instances=n.instances),n.instanceCount&&(t.instanceCount=n.instanceCount),n.paginatorInfo&&(t.paginatorInfo=n.paginatorInfo),t}}class mt extends K{constructor(e,t){super(e,t),this.$__query=T.gql`query ($metaTypes: [String!], $metaIds: [String!], $values: [String!], $keys: [String!], $latest: Boolean, $filter: [MetaFilter!], $queryArgs: QueryArgs, $countBy: String, $atomValues: [String!], $cellSlugs: [String!] ) {
|
|
405
405
|
MetaTypeViaAtom(
|
|
406
406
|
metaTypes: $metaTypes
|
|
407
407
|
metaIds: $metaIds
|
|
@@ -434,7 +434,7 @@ ${this.stack}`}}class se extends x{constructor(e="The molecule does not contain
|
|
|
434
434
|
total
|
|
435
435
|
}
|
|
436
436
|
}
|
|
437
|
-
}`}static createVariables({metaType:e=null,metaId:t=null,key:n=null,value:s=null,keys:r=null,values:i=null,atomValues:a=null,latest:c=null,filter:u=null,queryArgs:l=null,countBy:h=null,cellSlug:p=null}){const d={};return a&&(d.atomValues=a),r&&(d.keys=r),i&&(d.values=i),e&&(d.metaTypes=typeof e=="string"?[e]:e),t&&(d.metaIds=typeof t=="string"?[t]:t),p&&(d.cellSlugs=typeof p=="string"?[p]:p),h&&(d.countBy=h),u&&(d.filter=u),n&&s&&(d.filter=d.filter||[],d.filter.push({key:n,value:s,comparison:"="})),d.latest=c===!0,l&&((typeof l.limit>"u"||l.limit===0)&&(l.limit="*"),d.queryArgs=l),d}createResponse(e){return new
|
|
437
|
+
}`}static createVariables({metaType:e=null,metaId:t=null,key:n=null,value:s=null,keys:r=null,values:i=null,atomValues:a=null,latest:c=null,filter:u=null,queryArgs:l=null,countBy:h=null,cellSlug:p=null}){const d={};return a&&(d.atomValues=a),r&&(d.keys=r),i&&(d.values=i),e&&(d.metaTypes=typeof e=="string"?[e]:e),t&&(d.metaIds=typeof t=="string"?[t]:t),p&&(d.cellSlugs=typeof p=="string"?[p]:p),h&&(d.countBy=h),u&&(d.filter=u),n&&s&&(d.filter=d.filter||[],d.filter.push({key:n,value:s,comparison:"="})),d.latest=c===!0,l&&((typeof l.limit>"u"||l.limit===0)&&(l.limit="*"),d.queryArgs=l),d}createResponse(e){return new Xn({query:this,json:e})}}class Ge extends E{constructor({query:e,json:t}){super({query:e,json:t,dataKey:"data.MetaTypeViaAtom"})}static extractMetasFromMolecule(e,t,n){if(!e||!e.atoms)return[];const s=[];for(const r of e.atoms){if(r.metaType!==t||r.metaId!==n||!r.metasJson)continue;let i;try{if(i=JSON.parse(r.metasJson),!Array.isArray(i))continue}catch{continue}for(const a of i)s.push({molecularHash:e.molecularHash,position:r.position,key:a.key,value:a.value,createdAt:r.createdAt})}return s}payload(){const e=this.data();if(!e||e.length===0)return null;const t={instances:{},instanceCount:{},paginatorInfo:{}},n=e.pop();return n.instances&&(t.instances=n.instances.map(s=>{let r=s.metas;return(!r||r.length===0)&&(r=Ge.extractMetasFromMolecule(s.molecule,s.metaType,s.metaId)),{...s,metas:r}})),n.instanceCount&&(t.instanceCount=n.instanceCount),n.paginatorInfo&&(t.paginatorInfo=n.paginatorInfo),t}verifyIntegrity(){const e=[],t=this.data();if(!t||t.length===0)return{verified:!0,molecules:e};const n=t[t.length-1]?.instances||[];for(const s of n)s.molecule&&e.push(be.verifyFromServerData(s.molecule));return{verified:e.length===0||e.every(s=>s.verified),molecules:e}}}class yt extends K{constructor(e,t){super(e,t),this.$__query=T.gql`query ($metaTypes: [String!], $metaIds: [String!], $values: [String!], $keys: [String!], $latest: Boolean, $filter: [MetaFilter!], $queryArgs: QueryArgs, $countBy: String, $atomValues: [String!], $cellSlugs: [String!] ) {
|
|
438
438
|
MetaTypeViaAtom(
|
|
439
439
|
metaTypes: $metaTypes
|
|
440
440
|
metaIds: $metaIds
|
|
@@ -488,7 +488,7 @@ ${this.stack}`}}class se extends x{constructor(e="The molecule does not contain
|
|
|
488
488
|
total
|
|
489
489
|
}
|
|
490
490
|
}
|
|
491
|
-
}`}static createVariables({metaType:e=null,metaId:t=null,key:n=null,value:s=null,keys:r=null,values:i=null,atomValues:a=null,latest:c=null,filter:u=null,queryArgs:l=null,countBy:h=null,cellSlug:p=null}){const d={};return a&&(d.atomValues=a),r&&(d.keys=r),i&&(d.values=i),e&&(d.metaTypes=typeof e=="string"?[e]:e),t&&(d.metaIds=typeof t=="string"?[t]:t),p&&(d.cellSlugs=typeof p=="string"?[p]:p),h&&(d.countBy=h),u&&(d.filter=u),n&&s&&(d.filter=d.filter||[],d.filter.push({key:n,value:s,comparison:"="})),d.latest=c===!0,l&&((typeof l.limit>"u"||l.limit===0)&&(l.limit="*"),d.queryArgs=l),d}createResponse(e){return new
|
|
491
|
+
}`}static createVariables({metaType:e=null,metaId:t=null,key:n=null,value:s=null,keys:r=null,values:i=null,atomValues:a=null,latest:c=null,filter:u=null,queryArgs:l=null,countBy:h=null,cellSlug:p=null}){const d={};return a&&(d.atomValues=a),r&&(d.keys=r),i&&(d.values=i),e&&(d.metaTypes=typeof e=="string"?[e]:e),t&&(d.metaIds=typeof t=="string"?[t]:t),p&&(d.cellSlugs=typeof p=="string"?[p]:p),h&&(d.countBy=h),u&&(d.filter=u),n&&s&&(d.filter=d.filter||[],d.filter.push({key:n,value:s,comparison:"="})),d.latest=c===!0,l&&((typeof l.limit>"u"||l.limit===0)&&(l.limit="*"),d.queryArgs=l),d}createResponse(e){return new Ge({query:this,json:e})}}class Zn extends E{constructor({query:e,json:t}){super({query:e,json:t,dataKey:"data.embeddingStatus"})}payload(){const e=this.data();return!e||!Array.isArray(e)||e.length===0?null:e}}class gt extends K{constructor(e,t){super(e,t),this.$__query=T.gql`query( $metaType: String, $metaId: String, $instances: [EmbeddingStatusInput!] ) {
|
|
492
492
|
embeddingStatus( metaType: $metaType, metaId: $metaId, instances: $instances ) {
|
|
493
493
|
metaType,
|
|
494
494
|
metaId,
|
|
@@ -498,7 +498,7 @@ ${this.stack}`}}class se extends x{constructor(e="The molecule does not contain
|
|
|
498
498
|
embeddedAt,
|
|
499
499
|
model
|
|
500
500
|
}
|
|
501
|
-
}`}static createVariables({metaType:e=null,metaId:t=null,instances:n=null}){const s={};return n&&n.length>0&&(s.instances=n),e&&(s.metaType=e),t&&(s.metaId=t),s}createResponse(e){return new Yn({query:this,json:e})}}class es extends F{}class ts extends W{fillMolecule({metaType:e,metaId:t,rule:n,policy:s}){this.$__molecule.createRule({metaType:e,metaId:t,rule:n,policy:s}),this.$__molecule.sign({}),this.$__molecule.check()}createResponse(e){return new es({query:this,json:e})}}class ns extends W{fillMolecule({amount:e,tradeRates:t}){this.$__molecule.initDepositBuffer({amount:e,tradeRates:t}),this.$__molecule.sign({}),this.$__molecule.check(this.$__molecule.sourceWallet)}}class ss extends W{fillMolecule({recipients:e,signingWallet:t}){this.$__molecule.initWithdrawBuffer({recipients:e,signingWallet:t}),this.$__molecule.sign({}),this.$__molecule.check(this.$__molecule.sourceWallet)}}function Z(o,e,t,n){return new(t||(t=Promise))((function(s,r){function i(u){try{c(n.next(u))}catch(l){r(l)}}function a(u){try{c(n.throw(u))}catch(l){r(l)}}function c(u){var l;u.done?s(u.value):(l=u.value,l instanceof t?l:new t((function(h){h(l)}))).then(i,a)}c((n=n.apply(o,[])).next())}))}function Y(o,e){var t,n,s,r,i={label:0,sent:function(){if(1&s[0])throw s[1];return s[1]},trys:[],ops:[]};return r={next:a(0),throw:a(1),return:a(2)},typeof Symbol=="function"&&(r[Symbol.iterator]=function(){return this}),r;function a(c){return function(u){return(function(l){if(t)throw new TypeError("Generator is already executing.");for(;r&&(r=0,l[0]&&(i=0)),i;)try{if(t=1,n&&(s=2&l[0]?n.return:l[0]?n.throw||((s=n.return)&&s.call(n),0):n.next)&&!(s=s.call(n,l[1])).done)return s;switch(n=0,s&&(l=[2&l[0],s.value]),l[0]){case 0:case 1:s=l;break;case 4:return i.label++,{value:l[1],done:!1};case 5:i.label++,n=l[1],l=[0];continue;case 7:l=i.ops.pop(),i.trys.pop();continue;default:if(s=i.trys,!((s=s.length>0&&s[s.length-1])||l[0]!==6&&l[0]!==2)){i=0;continue}if(l[0]===3&&(!s||l[1]>s[0]&&l[1]<s[3])){i.label=l[1];break}if(l[0]===6&&i.label<s[1]){i.label=s[1],s=l;break}if(s&&i.label<s[2]){i.label=s[2],i.ops.push(l);break}s[2]&&i.ops.pop(),i.trys.pop();continue}l=e.call(o,i)}catch(h){l=[6,h],n=0}finally{t=s=0}if(5&l[0])throw l[1];return{value:l[0]?l[1]:void 0,done:!0}})([c,u])}}}var O={exclude:[],include:[],logging:!0},rs={},nr={timeout:"true"},G=function(o,e){typeof window<"u"&&(rs[o]=e)},sr=function(){return Object.fromEntries(Object.entries(rs).filter((function(o){var e,t=o[0];return!(!((e=O==null?void 0:O.exclude)===null||e===void 0)&&e.includes(t))})).filter((function(o){var e,t,n,s,r=o[0];return!((e=O==null?void 0:O.include)===null||e===void 0)&&e.some((function(i){return i.includes(".")}))?(t=O==null?void 0:O.include)===null||t===void 0?void 0:t.some((function(i){return i.startsWith(r)})):((n=O==null?void 0:O.include)===null||n===void 0?void 0:n.length)===0||((s=O==null?void 0:O.include)===null||s===void 0?void 0:s.includes(r))})).map((function(o){return[o[0],(0,o[1])()]})))};function Pe(o){return o^=o>>>16,o=Math.imul(o,2246822507),o^=o>>>13,o=Math.imul(o,3266489909),(o^=o>>>16)>>>0}var P=new Uint32Array([597399067,2869860233,951274213,2716044179]);function D(o,e){return o<<e|o>>>32-e}function _t(o,e){var t;if(e===void 0&&(e=0),e=e?0|e:0,typeof o=="string"&&(t=o,o=new TextEncoder().encode(t).buffer),!(o instanceof ArrayBuffer))throw new TypeError("Expected key to be ArrayBuffer or string");var n=new Uint32Array([e,e,e,e]);(function(r,i){for(var a=r.byteLength/16|0,c=new Uint32Array(r,0,4*a),u=0;u<a;u++){var l=c.subarray(4*u,4*(u+1));l[0]=Math.imul(l[0],P[0]),l[0]=D(l[0],15),l[0]=Math.imul(l[0],P[1]),i[0]=i[0]^l[0],i[0]=D(i[0],19),i[0]=i[0]+i[1],i[0]=Math.imul(i[0],5)+1444728091,l[1]=Math.imul(l[1],P[1]),l[1]=D(l[1],16),l[1]=Math.imul(l[1],P[2]),i[1]=i[1]^l[1],i[1]=D(i[1],17),i[1]=i[1]+i[2],i[1]=Math.imul(i[1],5)+197830471,l[2]=Math.imul(l[2],P[2]),l[2]=D(l[2],17),l[2]=Math.imul(l[2],P[3]),i[2]=i[2]^l[2],i[2]=D(i[2],15),i[2]=i[2]+i[3],i[2]=Math.imul(i[2],5)+2530024501,l[3]=Math.imul(l[3],P[3]),l[3]=D(l[3],18),l[3]=Math.imul(l[3],P[0]),i[3]=i[3]^l[3],i[3]=D(i[3],13),i[3]=i[3]+i[0],i[3]=Math.imul(i[3],5)+850148119}})(o,n),(function(r,i){var a=r.byteLength/16|0,c=r.byteLength%16,u=new Uint32Array(4),l=new Uint8Array(r,16*a,c);switch(c){case 15:u[3]=u[3]^l[14]<<16;case 14:u[3]=u[3]^l[13]<<8;case 13:u[3]=u[3]^l[12]<<0,u[3]=Math.imul(u[3],P[3]),u[3]=D(u[3],18),u[3]=Math.imul(u[3],P[0]),i[3]=i[3]^u[3];case 12:u[2]=u[2]^l[11]<<24;case 11:u[2]=u[2]^l[10]<<16;case 10:u[2]=u[2]^l[9]<<8;case 9:u[2]=u[2]^l[8]<<0,u[2]=Math.imul(u[2],P[2]),u[2]=D(u[2],17),u[2]=Math.imul(u[2],P[3]),i[2]=i[2]^u[2];case 8:u[1]=u[1]^l[7]<<24;case 7:u[1]=u[1]^l[6]<<16;case 6:u[1]=u[1]^l[5]<<8;case 5:u[1]=u[1]^l[4]<<0,u[1]=Math.imul(u[1],P[1]),u[1]=D(u[1],16),u[1]=Math.imul(u[1],P[2]),i[1]=i[1]^u[1];case 4:u[0]=u[0]^l[3]<<24;case 3:u[0]=u[0]^l[2]<<16;case 2:u[0]=u[0]^l[1]<<8;case 1:u[0]=u[0]^l[0]<<0,u[0]=Math.imul(u[0],P[0]),u[0]=D(u[0],15),u[0]=Math.imul(u[0],P[1]),i[0]=i[0]^u[0]}})(o,n),(function(r,i){i[0]=i[0]^r.byteLength,i[1]=i[1]^r.byteLength,i[2]=i[2]^r.byteLength,i[3]=i[3]^r.byteLength,i[0]=i[0]+i[1]|0,i[0]=i[0]+i[2]|0,i[0]=i[0]+i[3]|0,i[1]=i[1]+i[0]|0,i[2]=i[2]+i[0]|0,i[3]=i[3]+i[0]|0,i[0]=Pe(i[0]),i[1]=Pe(i[1]),i[2]=Pe(i[2]),i[3]=Pe(i[3]),i[0]=i[0]+i[1]|0,i[0]=i[0]+i[2]|0,i[0]=i[0]+i[3]|0,i[1]=i[1]+i[0]|0,i[2]=i[2]+i[0]|0,i[3]=i[3]+i[0]|0})(o,n);var s=new Uint8Array(n.buffer);return Array.from(s).map((function(r){return r.toString(16).padStart(2,"0")})).join("")}function rr(o,e){return new Promise((function(t){setTimeout((function(){return t(e)}),o)}))}function ir(o,e,t){return Promise.all(o.map((function(n){return Promise.race([n,rr(e,t)])})))}var or="0.19.1";function ar(){return or}function is(){return Z(this,void 0,void 0,(function(){var o,e,t,n,s;return Y(this,(function(r){switch(r.label){case 0:return r.trys.push([0,2,,3]),o=sr(),e=Object.keys(o),[4,ir(Object.values(o),(O==null?void 0:O.timeout)||1e3,nr)];case 1:return t=r.sent(),n=t.filter((function(i){return i!==void 0})),s={},n.forEach((function(i,a){s[e[a]]=i})),[2,os(s,O.exclude||[],O.include||[],"")];case 2:throw r.sent();case 3:return[2]}}))}))}function os(o,e,t,n){n===void 0&&(n="");for(var s={},r=function(u,l){var h=n+u+".";if(typeof l!="object"||Array.isArray(l)){var p=e.some((function(A){return h.startsWith(A)})),d=t.some((function(A){return h.startsWith(A)}));p&&!d||(s[u]=l)}else{var b=os(l,e,t,h);Object.keys(b).length>0&&(s[u]=b)}},i=0,a=Object.entries(o);i<a.length;i++){var c=a[i];r(c[0],c[1])}return s}function lr(o){return Z(this,void 0,void 0,(function(){var e,t;return Y(this,(function(n){switch(n.label){case 0:return n.trys.push([0,2,,3]),[4,is()];case 1:return e=n.sent(),t=_t(JSON.stringify(e)),Math.random()<.001&&O.logging&&(function(s,r){Z(this,void 0,void 0,(function(){var i,a;return Y(this,(function(c){switch(c.label){case 0:if(i="https://logging.thumbmarkjs.com/v1/log",a={thumbmark:s,components:r,version:ar()},sessionStorage.getItem("_tmjs_l"))return[3,4];sessionStorage.setItem("_tmjs_l","1"),c.label=1;case 1:return c.trys.push([1,3,,4]),[4,fetch(i,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)})];case 2:case 3:return c.sent(),[3,4];case 4:return[2]}}))}))})(t,e),[2,t.toString()];case 2:throw n.sent();case 3:return[2]}}))}))}function cr(o){for(var e=0,t=0;t<o.length;++t)e+=Math.abs(o[t]);return e}function as(o,e,t){for(var n=[],s=0;s<o[0].data.length;s++){for(var r=[],i=0;i<o.length;i++)r.push(o[i].data[s]);n.push(ur(r))}var a=new Uint8ClampedArray(n);return new ImageData(a,e,t)}function ur(o){if(o.length===0)return 0;for(var e={},t=0,n=o;t<n.length;t++)e[r=n[t]]=(e[r]||0)+1;var s=o[0];for(var r in e)e[r]>e[s]&&(s=parseInt(r,10));return s}function qe(){if(typeof navigator>"u")return{name:"unknown",version:"unknown"};for(var o=navigator.userAgent,e={Edg:"Edge",OPR:"Opera"},t=0,n=[/(?<name>Edge|Edg)\/(?<version>\d+(?:\.\d+)?)/,/(?<name>(?:Chrome|Chromium|OPR|Opera|Vivaldi|Brave))\/(?<version>\d+(?:\.\d+)?)/,/(?<name>(?:Firefox|Waterfox|Iceweasel|IceCat))\/(?<version>\d+(?:\.\d+)?)/,/(?<name>Safari)\/(?<version>\d+(?:\.\d+)?)/,/(?<name>MSIE|Trident|IEMobile).+?(?<version>\d+(?:\.\d+)?)/,/(?<name>[A-Za-z]+)\/(?<version>\d+(?:\.\d+)?)/,/(?<name>SamsungBrowser)\/(?<version>\d+(?:\.\d+)?)/];t<n.length;t++){var s=n[t],r=o.match(s);if(r&&r.groups)return{name:e[r.groups.name]||r.groups.name,version:r.groups.version}}return{name:"unknown",version:"unknown"}}G("audio",(function(){return Z(this,void 0,void 0,(function(){return Y(this,(function(o){return[2,new Promise((function(e,t){try{var n=new(window.OfflineAudioContext||window.webkitOfflineAudioContext)(1,5e3,44100),s=n.createBufferSource(),r=n.createOscillator();r.frequency.value=1e3;var i,a=n.createDynamicsCompressor();a.threshold.value=-50,a.knee.value=40,a.ratio.value=12,a.attack.value=0,a.release.value=.2,r.connect(a),a.connect(n.destination),r.start(),n.oncomplete=function(c){i=c.renderedBuffer.getChannelData(0),e({sampleHash:cr(i),oscillator:r.type,maxChannels:n.destination.maxChannelCount,channelCountMode:s.channelCountMode})},n.startRendering()}catch(c){console.error("Error creating audio fingerprint:",c),t(c)}}))]}))}))}));var hr=qe().name!=="SamsungBrowser"?1:3,Ot=280,Wt=20;qe().name!="Firefox"&&G("canvas",(function(){return document.createElement("canvas").getContext("2d"),new Promise((function(o){var e=Array.from({length:hr},(function(){return(function(){var t=document.createElement("canvas"),n=t.getContext("2d");if(!n)return new ImageData(1,1);t.width=Ot,t.height=Wt;var s=n.createLinearGradient(0,0,t.width,t.height);s.addColorStop(0,"red"),s.addColorStop(.16666666666666666,"orange"),s.addColorStop(.3333333333333333,"yellow"),s.addColorStop(.5,"green"),s.addColorStop(.6666666666666666,"blue"),s.addColorStop(.8333333333333334,"indigo"),s.addColorStop(1,"violet"),n.fillStyle=s,n.fillRect(0,0,t.width,t.height);var r="Random Text WMwmil10Oo";n.font="23.123px Arial",n.fillStyle="black",n.fillText(r,-5,15),n.fillStyle="rgba(0, 0, 255, 0.5)",n.fillText(r,-3.3,17.7),n.beginPath(),n.moveTo(0,0),n.lineTo(2*t.width/7,t.height),n.strokeStyle="white",n.lineWidth=2,n.stroke();var i=n.getImageData(0,0,t.width,t.height);return i})()}));o({commonImageDataHash:_t(as(e,Ot,Wt).data.toString()).toString()})}))}));var ot,dr=["Arial","Arial Black","Arial Narrow","Arial Rounded MT","Arimo","Archivo","Barlow","Bebas Neue","Bitter","Bookman","Calibri","Cabin","Candara","Century","Century Gothic","Comic Sans MS","Constantia","Courier","Courier New","Crimson Text","DM Mono","DM Sans","DM Serif Display","DM Serif Text","Dosis","Droid Sans","Exo","Fira Code","Fira Sans","Franklin Gothic Medium","Garamond","Geneva","Georgia","Gill Sans","Helvetica","Impact","Inconsolata","Indie Flower","Inter","Josefin Sans","Karla","Lato","Lexend","Lucida Bright","Lucida Console","Lucida Sans Unicode","Manrope","Merriweather","Merriweather Sans","Montserrat","Myriad","Noto Sans","Nunito","Nunito Sans","Open Sans","Optima","Orbitron","Oswald","Pacifico","Palatino","Perpetua","PT Sans","PT Serif","Poppins","Prompt","Public Sans","Quicksand","Rajdhani","Recursive","Roboto","Roboto Condensed","Rockwell","Rubik","Segoe Print","Segoe Script","Segoe UI","Sora","Source Sans Pro","Space Mono","Tahoma","Taviraj","Times","Times New Roman","Titillium Web","Trebuchet MS","Ubuntu","Varela Round","Verdana","Work Sans"],pr=["monospace","sans-serif","serif"];function Ut(o,e){if(!o)throw new Error("Canvas context not supported");return o.font,o.font="72px ".concat(e),o.measureText("WwMmLli0Oo").width}function fr(){var o,e=document.createElement("canvas"),t=(o=e.getContext("webgl"))!==null&&o!==void 0?o:e.getContext("experimental-webgl");if(t&&"getParameter"in t)try{var n=(t.getParameter(t.VENDOR)||"").toString(),s=(t.getParameter(t.RENDERER)||"").toString(),r={vendor:n,renderer:s,version:(t.getParameter(t.VERSION)||"").toString(),shadingLanguageVersion:(t.getParameter(t.SHADING_LANGUAGE_VERSION)||"").toString()};if(!s.length||!n.length){var i=t.getExtension("WEBGL_debug_renderer_info");if(i){var a=(t.getParameter(i.UNMASKED_VENDOR_WEBGL)||"").toString(),c=(t.getParameter(i.UNMASKED_RENDERER_WEBGL)||"").toString();a&&(r.vendorUnmasked=a),c&&(r.rendererUnmasked=c)}}return r}catch{}return"undefined"}function mr(){var o=new Float32Array(1),e=new Uint8Array(o.buffer);return o[0]=1/0,o[0]=o[0]-o[0],e[3]}function yr(o,e){var t={};return e.forEach((function(n){var s=(function(r){if(r.length===0)return null;var i={};r.forEach((function(u){var l=String(u);i[l]=(i[l]||0)+1}));var a=r[0],c=1;return Object.keys(i).forEach((function(u){i[u]>c&&(a=u,c=i[u])})),a})(o.map((function(r){return n in r?r[n]:void 0})).filter((function(r){return r!==void 0})));s&&(t[n]=s)})),t}function gr(){var o=[],e={"prefers-contrast":["high","more","low","less","forced","no-preference"],"any-hover":["hover","none"],"any-pointer":["none","coarse","fine"],pointer:["none","coarse","fine"],hover:["hover","none"],update:["fast","slow"],"inverted-colors":["inverted","none"],"prefers-reduced-motion":["reduce","no-preference"],"prefers-reduced-transparency":["reduce","no-preference"],scripting:["none","initial-only","enabled"],"forced-colors":["active","none"]};return Object.keys(e).forEach((function(t){e[t].forEach((function(n){matchMedia("(".concat(t,": ").concat(n,")")).matches&&o.push("".concat(t,": ").concat(n))}))})),o}function br(){if(window.location.protocol==="https:"&&typeof window.ApplePaySession=="function")try{for(var o=window.ApplePaySession.supportsVersion,e=15;e>0;e--)if(o(e))return e}catch{return 0}return 0}qe().name!="Firefox"&&G("fonts",(function(){var o=this;return new Promise((function(e,t){try{(function(n){var s;Z(this,void 0,void 0,(function(){var r,i,a;return Y(this,(function(c){switch(c.label){case 0:return document.body?[3,2]:[4,(u=50,new Promise((function(h){return setTimeout(h,u,l)})))];case 1:return c.sent(),[3,0];case 2:if((r=document.createElement("iframe")).setAttribute("frameBorder","0"),(i=r.style).setProperty("position","fixed"),i.setProperty("display","block","important"),i.setProperty("visibility","visible"),i.setProperty("border","0"),i.setProperty("opacity","0"),r.src="about:blank",document.body.appendChild(r),!(a=r.contentDocument||((s=r.contentWindow)===null||s===void 0?void 0:s.document)))throw new Error("Iframe document is not accessible");return n({iframe:a}),setTimeout((function(){document.body.removeChild(r)}),0),[2]}var u,l}))}))})((function(n){var s=n.iframe;return Z(o,void 0,void 0,(function(){var r,i,a,c;return Y(this,(function(u){return r=s.createElement("canvas"),i=r.getContext("2d"),a=pr.map((function(l){return Ut(i,l)})),c={},dr.forEach((function(l){var h=Ut(i,l);a.includes(h)||(c[l]=h)})),e(c),[2]}))}))}))}catch{t({error:"unsupported"})}}))})),G("hardware",(function(){return new Promise((function(o,e){var t=navigator.deviceMemory!==void 0?navigator.deviceMemory:0,n=window.performance&&window.performance.memory?window.performance.memory:0;o({videocard:fr(),architecture:mr(),deviceMemory:t.toString()||"undefined",jsHeapSizeLimit:n.jsHeapSizeLimit||0})}))})),G("locales",(function(){return new Promise((function(o){o({languages:navigator.language,timezone:Intl.DateTimeFormat().resolvedOptions().timeZone})}))})),G("permissions",(function(){return Z(this,void 0,void 0,(function(){var o;return Y(this,(function(e){return ot=(O==null?void 0:O.permissions_to_check)||["accelerometer","accessibility","accessibility-events","ambient-light-sensor","background-fetch","background-sync","bluetooth","camera","clipboard-read","clipboard-write","device-info","display-capture","gyroscope","geolocation","local-fonts","magnetometer","microphone","midi","nfc","notifications","payment-handler","persistent-storage","push","speaker","storage-access","top-level-storage-access","window-management","query"],o=Array.from({length:(O==null?void 0:O.retries)||3},(function(){return(function(){return Z(this,void 0,void 0,(function(){var t,n,s,r,i;return Y(this,(function(a){switch(a.label){case 0:t={},n=0,s=ot,a.label=1;case 1:if(!(n<s.length))return[3,6];r=s[n],a.label=2;case 2:return a.trys.push([2,4,,5]),[4,navigator.permissions.query({name:r})];case 3:return i=a.sent(),t[r]=i.state.toString(),[3,5];case 4:return a.sent(),[3,5];case 5:return n++,[3,1];case 6:return[2,t]}}))}))})()})),[2,Promise.all(o).then((function(t){return yr(t,ot)}))]}))}))})),G("plugins",(function(){var o=[];if(navigator.plugins)for(var e=0;e<navigator.plugins.length;e++){var t=navigator.plugins[e];o.push([t.name,t.filename,t.description].join("|"))}return new Promise((function(n){n({plugins:o})}))})),G("screen",(function(){return new Promise((function(o){o({is_touchscreen:navigator.maxTouchPoints>0,maxTouchPoints:navigator.maxTouchPoints,colorDepth:screen.colorDepth,mediaMatches:gr()})}))})),G("system",(function(){return new Promise((function(o){var e=qe();o({platform:window.navigator.platform,cookieEnabled:window.navigator.cookieEnabled,productSub:navigator.productSub,product:navigator.product,useragent:navigator.userAgent,hardwareConcurrency:navigator.hardwareConcurrency,browser:{name:e.name,version:e.version},applePayVersion:br()})}))}));var N,wr=qe().name!=="SamsungBrowser"?1:3,y=null;G("webgl",(function(){return Z(this,void 0,void 0,(function(){var o;return Y(this,(function(e){typeof document<"u"&&((N=document.createElement("canvas")).width=200,N.height=100,y=N.getContext("webgl"));try{if(!y)throw new Error("WebGL not supported");return o=Array.from({length:wr},(function(){return(function(){try{if(!y)throw new Error("WebGL not supported");var t=`
|
|
501
|
+
}`}static createVariables({metaType:e=null,metaId:t=null,instances:n=null}){const s={};return n&&n.length>0&&(s.instances=n),e&&(s.metaType=e),t&&(s.metaId=t),s}createResponse(e){return new Zn({query:this,json:e})}}class Yn extends F{}class es extends W{fillMolecule({metaType:e,metaId:t,rule:n,policy:s}){this.$__molecule.createRule({metaType:e,metaId:t,rule:n,policy:s}),this.$__molecule.sign({}),this.$__molecule.check()}createResponse(e){return new Yn({query:this,json:e})}}class ts extends W{fillMolecule({amount:e,tradeRates:t}){this.$__molecule.initDepositBuffer({amount:e,tradeRates:t}),this.$__molecule.sign({}),this.$__molecule.check(this.$__molecule.sourceWallet)}}class ns extends W{fillMolecule({recipients:e,signingWallet:t}){this.$__molecule.initWithdrawBuffer({recipients:e,signingWallet:t}),this.$__molecule.sign({}),this.$__molecule.check(this.$__molecule.sourceWallet)}}function X(o,e,t,n){return new(t||(t=Promise))((function(s,r){function i(u){try{c(n.next(u))}catch(l){r(l)}}function a(u){try{c(n.throw(u))}catch(l){r(l)}}function c(u){var l;u.done?s(u.value):(l=u.value,l instanceof t?l:new t((function(h){h(l)}))).then(i,a)}c((n=n.apply(o,[])).next())}))}function Z(o,e){var t,n,s,r,i={label:0,sent:function(){if(1&s[0])throw s[1];return s[1]},trys:[],ops:[]};return r={next:a(0),throw:a(1),return:a(2)},typeof Symbol=="function"&&(r[Symbol.iterator]=function(){return this}),r;function a(c){return function(u){return(function(l){if(t)throw new TypeError("Generator is already executing.");for(;r&&(r=0,l[0]&&(i=0)),i;)try{if(t=1,n&&(s=2&l[0]?n.return:l[0]?n.throw||((s=n.return)&&s.call(n),0):n.next)&&!(s=s.call(n,l[1])).done)return s;switch(n=0,s&&(l=[2&l[0],s.value]),l[0]){case 0:case 1:s=l;break;case 4:return i.label++,{value:l[1],done:!1};case 5:i.label++,n=l[1],l=[0];continue;case 7:l=i.ops.pop(),i.trys.pop();continue;default:if(s=i.trys,!((s=s.length>0&&s[s.length-1])||l[0]!==6&&l[0]!==2)){i=0;continue}if(l[0]===3&&(!s||l[1]>s[0]&&l[1]<s[3])){i.label=l[1];break}if(l[0]===6&&i.label<s[1]){i.label=s[1],s=l;break}if(s&&i.label<s[2]){i.label=s[2],i.ops.push(l);break}s[2]&&i.ops.pop(),i.trys.pop();continue}l=e.call(o,i)}catch(h){l=[6,h],n=0}finally{t=s=0}if(5&l[0])throw l[1];return{value:l[0]?l[1]:void 0,done:!0}})([c,u])}}}var O={exclude:[],include:[],logging:!0},ss={},Ys={timeout:"true"},J=function(o,e){typeof window<"u"&&(ss[o]=e)},er=function(){return Object.fromEntries(Object.entries(ss).filter((function(o){var e,t=o[0];return!(!((e=O?.exclude)===null||e===void 0)&&e.includes(t))})).filter((function(o){var e,t,n,s,r=o[0];return!((e=O?.include)===null||e===void 0)&&e.some((function(i){return i.includes(".")}))?(t=O?.include)===null||t===void 0?void 0:t.some((function(i){return i.startsWith(r)})):((n=O?.include)===null||n===void 0?void 0:n.length)===0||((s=O?.include)===null||s===void 0?void 0:s.includes(r))})).map((function(o){return[o[0],(0,o[1])()]})))};function He(o){return o^=o>>>16,o=Math.imul(o,2246822507),o^=o>>>13,o=Math.imul(o,3266489909),(o^=o>>>16)>>>0}var P=new Uint32Array([597399067,2869860233,951274213,2716044179]);function j(o,e){return o<<e|o>>>32-e}function kt(o,e){var t;if(e===void 0&&(e=0),e=e?0|e:0,typeof o=="string"&&(t=o,o=new TextEncoder().encode(t).buffer),!(o instanceof ArrayBuffer))throw new TypeError("Expected key to be ArrayBuffer or string");var n=new Uint32Array([e,e,e,e]);(function(r,i){for(var a=r.byteLength/16|0,c=new Uint32Array(r,0,4*a),u=0;u<a;u++){var l=c.subarray(4*u,4*(u+1));l[0]=Math.imul(l[0],P[0]),l[0]=j(l[0],15),l[0]=Math.imul(l[0],P[1]),i[0]=i[0]^l[0],i[0]=j(i[0],19),i[0]=i[0]+i[1],i[0]=Math.imul(i[0],5)+1444728091,l[1]=Math.imul(l[1],P[1]),l[1]=j(l[1],16),l[1]=Math.imul(l[1],P[2]),i[1]=i[1]^l[1],i[1]=j(i[1],17),i[1]=i[1]+i[2],i[1]=Math.imul(i[1],5)+197830471,l[2]=Math.imul(l[2],P[2]),l[2]=j(l[2],17),l[2]=Math.imul(l[2],P[3]),i[2]=i[2]^l[2],i[2]=j(i[2],15),i[2]=i[2]+i[3],i[2]=Math.imul(i[2],5)+2530024501,l[3]=Math.imul(l[3],P[3]),l[3]=j(l[3],18),l[3]=Math.imul(l[3],P[0]),i[3]=i[3]^l[3],i[3]=j(i[3],13),i[3]=i[3]+i[0],i[3]=Math.imul(i[3],5)+850148119}})(o,n),(function(r,i){var a=r.byteLength/16|0,c=r.byteLength%16,u=new Uint32Array(4),l=new Uint8Array(r,16*a,c);switch(c){case 15:u[3]=u[3]^l[14]<<16;case 14:u[3]=u[3]^l[13]<<8;case 13:u[3]=u[3]^l[12]<<0,u[3]=Math.imul(u[3],P[3]),u[3]=j(u[3],18),u[3]=Math.imul(u[3],P[0]),i[3]=i[3]^u[3];case 12:u[2]=u[2]^l[11]<<24;case 11:u[2]=u[2]^l[10]<<16;case 10:u[2]=u[2]^l[9]<<8;case 9:u[2]=u[2]^l[8]<<0,u[2]=Math.imul(u[2],P[2]),u[2]=j(u[2],17),u[2]=Math.imul(u[2],P[3]),i[2]=i[2]^u[2];case 8:u[1]=u[1]^l[7]<<24;case 7:u[1]=u[1]^l[6]<<16;case 6:u[1]=u[1]^l[5]<<8;case 5:u[1]=u[1]^l[4]<<0,u[1]=Math.imul(u[1],P[1]),u[1]=j(u[1],16),u[1]=Math.imul(u[1],P[2]),i[1]=i[1]^u[1];case 4:u[0]=u[0]^l[3]<<24;case 3:u[0]=u[0]^l[2]<<16;case 2:u[0]=u[0]^l[1]<<8;case 1:u[0]=u[0]^l[0]<<0,u[0]=Math.imul(u[0],P[0]),u[0]=j(u[0],15),u[0]=Math.imul(u[0],P[1]),i[0]=i[0]^u[0]}})(o,n),(function(r,i){i[0]=i[0]^r.byteLength,i[1]=i[1]^r.byteLength,i[2]=i[2]^r.byteLength,i[3]=i[3]^r.byteLength,i[0]=i[0]+i[1]|0,i[0]=i[0]+i[2]|0,i[0]=i[0]+i[3]|0,i[1]=i[1]+i[0]|0,i[2]=i[2]+i[0]|0,i[3]=i[3]+i[0]|0,i[0]=He(i[0]),i[1]=He(i[1]),i[2]=He(i[2]),i[3]=He(i[3]),i[0]=i[0]+i[1]|0,i[0]=i[0]+i[2]|0,i[0]=i[0]+i[3]|0,i[1]=i[1]+i[0]|0,i[2]=i[2]+i[0]|0,i[3]=i[3]+i[0]|0})(o,n);var s=new Uint8Array(n.buffer);return Array.from(s).map((function(r){return r.toString(16).padStart(2,"0")})).join("")}function tr(o,e){return new Promise((function(t){setTimeout((function(){return t(e)}),o)}))}function nr(o,e,t){return Promise.all(o.map((function(n){return Promise.race([n,tr(e,t)])})))}var sr="0.19.1";function rr(){return sr}function rs(){return X(this,void 0,void 0,(function(){var o,e,t,n,s;return Z(this,(function(r){switch(r.label){case 0:return r.trys.push([0,2,,3]),o=er(),e=Object.keys(o),[4,nr(Object.values(o),O?.timeout||1e3,Ys)];case 1:return t=r.sent(),n=t.filter((function(i){return i!==void 0})),s={},n.forEach((function(i,a){s[e[a]]=i})),[2,is(s,O.exclude||[],O.include||[],"")];case 2:throw r.sent();case 3:return[2]}}))}))}function is(o,e,t,n){n===void 0&&(n="");for(var s={},r=function(u,l){var h=n+u+".";if(typeof l!="object"||Array.isArray(l)){var p=e.some((function(A){return h.startsWith(A)})),d=t.some((function(A){return h.startsWith(A)}));p&&!d||(s[u]=l)}else{var b=is(l,e,t,h);Object.keys(b).length>0&&(s[u]=b)}},i=0,a=Object.entries(o);i<a.length;i++){var c=a[i];r(c[0],c[1])}return s}function ir(o){return X(this,void 0,void 0,(function(){var e,t;return Z(this,(function(n){switch(n.label){case 0:return n.trys.push([0,2,,3]),[4,rs()];case 1:return e=n.sent(),t=kt(JSON.stringify(e)),Math.random()<.001&&O.logging&&(function(s,r){X(this,void 0,void 0,(function(){var i,a;return Z(this,(function(c){switch(c.label){case 0:if(i="https://logging.thumbmarkjs.com/v1/log",a={thumbmark:s,components:r,version:rr()},sessionStorage.getItem("_tmjs_l"))return[3,4];sessionStorage.setItem("_tmjs_l","1"),c.label=1;case 1:return c.trys.push([1,3,,4]),[4,fetch(i,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)})];case 2:case 3:return c.sent(),[3,4];case 4:return[2]}}))}))})(t,e),[2,t.toString()];case 2:throw n.sent();case 3:return[2]}}))}))}function or(o){for(var e=0,t=0;t<o.length;++t)e+=Math.abs(o[t]);return e}function os(o,e,t){for(var n=[],s=0;s<o[0].data.length;s++){for(var r=[],i=0;i<o.length;i++)r.push(o[i].data[s]);n.push(ar(r))}var a=new Uint8ClampedArray(n);return new ImageData(a,e,t)}function ar(o){if(o.length===0)return 0;for(var e={},t=0,n=o;t<n.length;t++)e[r=n[t]]=(e[r]||0)+1;var s=o[0];for(var r in e)e[r]>e[s]&&(s=parseInt(r,10));return s}function Re(){if(typeof navigator>"u")return{name:"unknown",version:"unknown"};for(var o=navigator.userAgent,e={Edg:"Edge",OPR:"Opera"},t=0,n=[/(?<name>Edge|Edg)\/(?<version>\d+(?:\.\d+)?)/,/(?<name>(?:Chrome|Chromium|OPR|Opera|Vivaldi|Brave))\/(?<version>\d+(?:\.\d+)?)/,/(?<name>(?:Firefox|Waterfox|Iceweasel|IceCat))\/(?<version>\d+(?:\.\d+)?)/,/(?<name>Safari)\/(?<version>\d+(?:\.\d+)?)/,/(?<name>MSIE|Trident|IEMobile).+?(?<version>\d+(?:\.\d+)?)/,/(?<name>[A-Za-z]+)\/(?<version>\d+(?:\.\d+)?)/,/(?<name>SamsungBrowser)\/(?<version>\d+(?:\.\d+)?)/];t<n.length;t++){var s=n[t],r=o.match(s);if(r&&r.groups)return{name:e[r.groups.name]||r.groups.name,version:r.groups.version}}return{name:"unknown",version:"unknown"}}J("audio",(function(){return X(this,void 0,void 0,(function(){return Z(this,(function(o){return[2,new Promise((function(e,t){try{var n=new(window.OfflineAudioContext||window.webkitOfflineAudioContext)(1,5e3,44100),s=n.createBufferSource(),r=n.createOscillator();r.frequency.value=1e3;var i,a=n.createDynamicsCompressor();a.threshold.value=-50,a.knee.value=40,a.ratio.value=12,a.attack.value=0,a.release.value=.2,r.connect(a),a.connect(n.destination),r.start(),n.oncomplete=function(c){i=c.renderedBuffer.getChannelData(0),e({sampleHash:or(i),oscillator:r.type,maxChannels:n.destination.maxChannelCount,channelCountMode:s.channelCountMode})},n.startRendering()}catch(c){console.error("Error creating audio fingerprint:",c),t(c)}}))]}))}))}));var lr=Re().name!=="SamsungBrowser"?1:3,qt=280,Ot=20;Re().name!="Firefox"&&J("canvas",(function(){return document.createElement("canvas").getContext("2d"),new Promise((function(o){var e=Array.from({length:lr},(function(){return(function(){var t=document.createElement("canvas"),n=t.getContext("2d");if(!n)return new ImageData(1,1);t.width=qt,t.height=Ot;var s=n.createLinearGradient(0,0,t.width,t.height);s.addColorStop(0,"red"),s.addColorStop(.16666666666666666,"orange"),s.addColorStop(.3333333333333333,"yellow"),s.addColorStop(.5,"green"),s.addColorStop(.6666666666666666,"blue"),s.addColorStop(.8333333333333334,"indigo"),s.addColorStop(1,"violet"),n.fillStyle=s,n.fillRect(0,0,t.width,t.height);var r="Random Text WMwmil10Oo";n.font="23.123px Arial",n.fillStyle="black",n.fillText(r,-5,15),n.fillStyle="rgba(0, 0, 255, 0.5)",n.fillText(r,-3.3,17.7),n.beginPath(),n.moveTo(0,0),n.lineTo(2*t.width/7,t.height),n.strokeStyle="white",n.lineWidth=2,n.stroke();var i=n.getImageData(0,0,t.width,t.height);return i})()}));o({commonImageDataHash:kt(os(e,qt,Ot).data.toString()).toString()})}))}));var it,cr=["Arial","Arial Black","Arial Narrow","Arial Rounded MT","Arimo","Archivo","Barlow","Bebas Neue","Bitter","Bookman","Calibri","Cabin","Candara","Century","Century Gothic","Comic Sans MS","Constantia","Courier","Courier New","Crimson Text","DM Mono","DM Sans","DM Serif Display","DM Serif Text","Dosis","Droid Sans","Exo","Fira Code","Fira Sans","Franklin Gothic Medium","Garamond","Geneva","Georgia","Gill Sans","Helvetica","Impact","Inconsolata","Indie Flower","Inter","Josefin Sans","Karla","Lato","Lexend","Lucida Bright","Lucida Console","Lucida Sans Unicode","Manrope","Merriweather","Merriweather Sans","Montserrat","Myriad","Noto Sans","Nunito","Nunito Sans","Open Sans","Optima","Orbitron","Oswald","Pacifico","Palatino","Perpetua","PT Sans","PT Serif","Poppins","Prompt","Public Sans","Quicksand","Rajdhani","Recursive","Roboto","Roboto Condensed","Rockwell","Rubik","Segoe Print","Segoe Script","Segoe UI","Sora","Source Sans Pro","Space Mono","Tahoma","Taviraj","Times","Times New Roman","Titillium Web","Trebuchet MS","Ubuntu","Varela Round","Verdana","Work Sans"],ur=["monospace","sans-serif","serif"];function Wt(o,e){if(!o)throw new Error("Canvas context not supported");return o.font,o.font="72px ".concat(e),o.measureText("WwMmLli0Oo").width}function hr(){var o,e=document.createElement("canvas"),t=(o=e.getContext("webgl"))!==null&&o!==void 0?o:e.getContext("experimental-webgl");if(t&&"getParameter"in t)try{var n=(t.getParameter(t.VENDOR)||"").toString(),s=(t.getParameter(t.RENDERER)||"").toString(),r={vendor:n,renderer:s,version:(t.getParameter(t.VERSION)||"").toString(),shadingLanguageVersion:(t.getParameter(t.SHADING_LANGUAGE_VERSION)||"").toString()};if(!s.length||!n.length){var i=t.getExtension("WEBGL_debug_renderer_info");if(i){var a=(t.getParameter(i.UNMASKED_VENDOR_WEBGL)||"").toString(),c=(t.getParameter(i.UNMASKED_RENDERER_WEBGL)||"").toString();a&&(r.vendorUnmasked=a),c&&(r.rendererUnmasked=c)}}return r}catch{}return"undefined"}function dr(){var o=new Float32Array(1),e=new Uint8Array(o.buffer);return o[0]=1/0,o[0]=o[0]-o[0],e[3]}function pr(o,e){var t={};return e.forEach((function(n){var s=(function(r){if(r.length===0)return null;var i={};r.forEach((function(u){var l=String(u);i[l]=(i[l]||0)+1}));var a=r[0],c=1;return Object.keys(i).forEach((function(u){i[u]>c&&(a=u,c=i[u])})),a})(o.map((function(r){return n in r?r[n]:void 0})).filter((function(r){return r!==void 0})));s&&(t[n]=s)})),t}function fr(){var o=[],e={"prefers-contrast":["high","more","low","less","forced","no-preference"],"any-hover":["hover","none"],"any-pointer":["none","coarse","fine"],pointer:["none","coarse","fine"],hover:["hover","none"],update:["fast","slow"],"inverted-colors":["inverted","none"],"prefers-reduced-motion":["reduce","no-preference"],"prefers-reduced-transparency":["reduce","no-preference"],scripting:["none","initial-only","enabled"],"forced-colors":["active","none"]};return Object.keys(e).forEach((function(t){e[t].forEach((function(n){matchMedia("(".concat(t,": ").concat(n,")")).matches&&o.push("".concat(t,": ").concat(n))}))})),o}function mr(){if(window.location.protocol==="https:"&&typeof window.ApplePaySession=="function")try{for(var o=window.ApplePaySession.supportsVersion,e=15;e>0;e--)if(o(e))return e}catch{return 0}return 0}Re().name!="Firefox"&&J("fonts",(function(){var o=this;return new Promise((function(e,t){try{(function(n){var s;X(this,void 0,void 0,(function(){var r,i,a;return Z(this,(function(c){switch(c.label){case 0:return document.body?[3,2]:[4,(u=50,new Promise((function(h){return setTimeout(h,u,l)})))];case 1:return c.sent(),[3,0];case 2:if((r=document.createElement("iframe")).setAttribute("frameBorder","0"),(i=r.style).setProperty("position","fixed"),i.setProperty("display","block","important"),i.setProperty("visibility","visible"),i.setProperty("border","0"),i.setProperty("opacity","0"),r.src="about:blank",document.body.appendChild(r),!(a=r.contentDocument||((s=r.contentWindow)===null||s===void 0?void 0:s.document)))throw new Error("Iframe document is not accessible");return n({iframe:a}),setTimeout((function(){document.body.removeChild(r)}),0),[2]}var u,l}))}))})((function(n){var s=n.iframe;return X(o,void 0,void 0,(function(){var r,i,a,c;return Z(this,(function(u){return r=s.createElement("canvas"),i=r.getContext("2d"),a=ur.map((function(l){return Wt(i,l)})),c={},cr.forEach((function(l){var h=Wt(i,l);a.includes(h)||(c[l]=h)})),e(c),[2]}))}))}))}catch{t({error:"unsupported"})}}))})),J("hardware",(function(){return new Promise((function(o,e){var t=navigator.deviceMemory!==void 0?navigator.deviceMemory:0,n=window.performance&&window.performance.memory?window.performance.memory:0;o({videocard:hr(),architecture:dr(),deviceMemory:t.toString()||"undefined",jsHeapSizeLimit:n.jsHeapSizeLimit||0})}))})),J("locales",(function(){return new Promise((function(o){o({languages:navigator.language,timezone:Intl.DateTimeFormat().resolvedOptions().timeZone})}))})),J("permissions",(function(){return X(this,void 0,void 0,(function(){var o;return Z(this,(function(e){return it=O?.permissions_to_check||["accelerometer","accessibility","accessibility-events","ambient-light-sensor","background-fetch","background-sync","bluetooth","camera","clipboard-read","clipboard-write","device-info","display-capture","gyroscope","geolocation","local-fonts","magnetometer","microphone","midi","nfc","notifications","payment-handler","persistent-storage","push","speaker","storage-access","top-level-storage-access","window-management","query"],o=Array.from({length:O?.retries||3},(function(){return(function(){return X(this,void 0,void 0,(function(){var t,n,s,r,i;return Z(this,(function(a){switch(a.label){case 0:t={},n=0,s=it,a.label=1;case 1:if(!(n<s.length))return[3,6];r=s[n],a.label=2;case 2:return a.trys.push([2,4,,5]),[4,navigator.permissions.query({name:r})];case 3:return i=a.sent(),t[r]=i.state.toString(),[3,5];case 4:return a.sent(),[3,5];case 5:return n++,[3,1];case 6:return[2,t]}}))}))})()})),[2,Promise.all(o).then((function(t){return pr(t,it)}))]}))}))})),J("plugins",(function(){var o=[];if(navigator.plugins)for(var e=0;e<navigator.plugins.length;e++){var t=navigator.plugins[e];o.push([t.name,t.filename,t.description].join("|"))}return new Promise((function(n){n({plugins:o})}))})),J("screen",(function(){return new Promise((function(o){o({is_touchscreen:navigator.maxTouchPoints>0,maxTouchPoints:navigator.maxTouchPoints,colorDepth:screen.colorDepth,mediaMatches:fr()})}))})),J("system",(function(){return new Promise((function(o){var e=Re();o({platform:window.navigator.platform,cookieEnabled:window.navigator.cookieEnabled,productSub:navigator.productSub,product:navigator.product,useragent:navigator.userAgent,hardwareConcurrency:navigator.hardwareConcurrency,browser:{name:e.name,version:e.version},applePayVersion:mr()})}))}));var N,yr=Re().name!=="SamsungBrowser"?1:3,y=null;J("webgl",(function(){return X(this,void 0,void 0,(function(){var o;return Z(this,(function(e){typeof document<"u"&&((N=document.createElement("canvas")).width=200,N.height=100,y=N.getContext("webgl"));try{if(!y)throw new Error("WebGL not supported");return o=Array.from({length:yr},(function(){return(function(){try{if(!y)throw new Error("WebGL not supported");var t=`
|
|
502
502
|
attribute vec2 position;
|
|
503
503
|
void main() {
|
|
504
504
|
gl_Position = vec4(position, 0.0, 1.0);
|
|
@@ -508,5 +508,5 @@ ${this.stack}`}}class se extends x{constructor(e="The molecule does not contain
|
|
|
508
508
|
void main() {
|
|
509
509
|
gl_FragColor = vec4(0.812, 0.195, 0.553, 0.921); // Set line color
|
|
510
510
|
}
|
|
511
|
-
`,s=y.createShader(y.VERTEX_SHADER),r=y.createShader(y.FRAGMENT_SHADER);if(!s||!r)throw new Error("Failed to create shaders");if(y.shaderSource(s,t),y.shaderSource(r,n),y.compileShader(s),!y.getShaderParameter(s,y.COMPILE_STATUS))throw new Error("Vertex shader compilation failed: "+y.getShaderInfoLog(s));if(y.compileShader(r),!y.getShaderParameter(r,y.COMPILE_STATUS))throw new Error("Fragment shader compilation failed: "+y.getShaderInfoLog(r));var i=y.createProgram();if(!i)throw new Error("Failed to create shader program");if(y.attachShader(i,s),y.attachShader(i,r),y.linkProgram(i),!y.getProgramParameter(i,y.LINK_STATUS))throw new Error("Shader program linking failed: "+y.getProgramInfoLog(i));y.useProgram(i);for(var a=137,c=new Float32Array(4*a),u=2*Math.PI/a,l=0;l<a;l++){var h=l*u;c[4*l]=0,c[4*l+1]=0,c[4*l+2]=Math.cos(h)*(N.width/2),c[4*l+3]=Math.sin(h)*(N.height/2)}var p=y.createBuffer();y.bindBuffer(y.ARRAY_BUFFER,p),y.bufferData(y.ARRAY_BUFFER,c,y.STATIC_DRAW);var d=y.getAttribLocation(i,"position");y.enableVertexAttribArray(d),y.vertexAttribPointer(d,2,y.FLOAT,!1,0,0),y.viewport(0,0,N.width,N.height),y.clearColor(0,0,0,1),y.clear(y.COLOR_BUFFER_BIT),y.drawArrays(y.LINES,0,2*a);var b=new Uint8ClampedArray(N.width*N.height*4);return y.readPixels(0,0,N.width,N.height,y.RGBA,y.UNSIGNED_BYTE,b),new ImageData(b,N.width,N.height)}catch{return new ImageData(1,1)}finally{y&&(y.bindBuffer(y.ARRAY_BUFFER,null),y.useProgram(null),y.viewport(0,0,y.drawingBufferWidth,y.drawingBufferHeight),y.clearColor(0,0,0,0))}})()})),[2,{commonImageHash:_t(as(o,N.width,N.height).data.toString()).toString()}]}catch{return[2,{webgl:"unsupported"}]}return[2]}))}))}));var ae=function(o,e,t,n){for(var s=(t-e)/n,r=0,i=0;i<n;i++)r+=o(e+(i+.5)*s);return r*s};G("math",(function(){return Z(void 0,void 0,void 0,(function(){return Y(this,(function(o){return[2,{acos:Math.acos(.5),asin:ae(Math.asin,-1,1,97),atan:ae(Math.atan,-1,1,97),cos:ae(Math.cos,0,Math.PI,97),cosh:Math.cosh(9/7),e:Math.E,largeCos:Math.cos(1e20),largeSin:Math.sin(1e20),largeTan:Math.tan(1e20),log:Math.log(1e3),pi:Math.PI,sin:ae(Math.sin,-Math.PI,Math.PI,97),sinh:ae(Math.sinh,-9/7,7/9,97),sqrt:Math.sqrt(2),tan:ae(Math.tan,0,2*Math.PI,97),tanh:ae(Math.tanh,-9/7,7/9,97)}]}))}))}));const kr="query ( $Hash: String! ) { CipherHash ( Hash: $Hash ) { hash } }";function _r(o){const e=(o||"").match(/\b(query|mutation|subscription)\b/i),t=e?e[1].toLowerCase():"query",n=(o||"").indexOf("{"),s=n>=0?o.slice(n+1).match(/[A-Za-z_][A-Za-z0-9_]*/):null;return{type:t,name:s?s[0]:""}}class Sr{constructor({serverUri:e,socket:t=null,encrypt:n=!1}){this.$__client=this.createUrqlClient({serverUri:e,socket:t,encrypt:n}),this.$__authToken="",this.$__pubkey=null,this.$__wallet=null,this.serverUri=e,this.soketi=t,this.cipherLink=!!n,this.$__subscriptionManager=new Map}createUrqlClient({serverUri:e,socket:t,encrypt:n}){const s=[T.cacheExchange,T.fetchExchange];if(t&&t.socketUri){const r=hs.createClient({url:t.socketUri,connectionParams:()=>({authToken:this.$__authToken})});s.push(T.subscriptionExchange({forwardSubscription:i=>({subscribe:a=>({unsubscribe:r.subscribe(i,a)})})}))}return T.createClient({url:e,exchanges:s,...n?{fetch:(r,i)=>this.cipherFetch(r,i)}:{},fetchOptions:()=>({headers:{"X-Auth-Token":this.$__authToken},signal:AbortSignal.timeout(6e4)})})}shouldEncrypt(e){let t;try{t=JSON.parse(e)}catch{return!1}const{type:n,name:s}=_r(t.query);return!(n==="query"&&(s==="__schema"||s==="ContinuId")||n==="mutation"&&s==="AccessToken"||n==="mutation"&&s==="ProposeMolecule"&&(t.variables&&t.variables.molecule&&t.variables.molecule.atoms&&t.variables.molecule.atoms[0]&&t.variables.molecule.atoms[0].isotope)==="U")}async cipherFetch(e,t){const n=this.getWallet(),s=this.getPubKey();let r=!1,i=t;if(n&&s&&t&&typeof t.body=="string"&&this.shouldEncrypt(t.body)){const d=await n.encryptStringML768(t.body,s);i={...t,body:JSON.stringify({query:kr,variables:{Hash:d}})},r=!0}const a=await fetch(e,i);if(!r)return a;const c=await a.text(),u={status:a.status,statusText:a.statusText,headers:a.headers};let l;try{l=JSON.parse(c)}catch{return new Response(c,u)}const h=l&&l.data&&l.data.CipherHash&&l.data.CipherHash.hash;if(typeof h!="string")return new Response(c,u);const p=await n.decryptMyMessageML768(JSON.parse(h));return new Response(p??c,u)}setAuthData({token:e,pubkey:t,wallet:n}){this.$__authToken=e,this.$__pubkey=t,this.$__wallet=n,this.$__client=this.createUrqlClient({serverUri:this.serverUri,socket:this.soketi,encrypt:!!this.cipherLink})}buildRequestOptions(e){if(!e)return;const t={};e.requestPolicy&&(t.requestPolicy=e.requestPolicy);const n=e.fetchOptions&&e.fetchOptions.signal;if(n){const s=typeof AbortSignal<"u"&&typeof AbortSignal.any=="function"?AbortSignal.any([n,AbortSignal.timeout(6e4)]):n;t.fetchOptions={headers:{"X-Auth-Token":this.$__authToken},signal:s}}return Object.keys(t).length?t:void 0}async query(e){const{query:t,variables:n,context:s}=e,r=this.buildRequestOptions(s),i=await this.$__client.query(t,n||{},r).toPromise();return this.formatResponse(i)}async mutate(e){const{mutation:t,variables:n,context:s}=e,r=this.buildRequestOptions(s),i=await this.$__client.mutation(t,n||{},r).toPromise();return this.formatResponse(i)}subscribe(e,t){const{query:n,variables:s,operationName:r}=e,i=Ye.pipe(this.$__client.subscription(n,s),Ye.map(a=>{t(this.formatResponse(a))}),Ye.subscribe(()=>{}));return this.$__subscriptionManager.set(r,i),{unsubscribe:()=>this.unsubscribe(r)}}formatResponse(e){return{data:e.data,errors:e.error?[e.error]:void 0}}socketDisconnect(){this.soketi&&this.unsubscribeAll()}unsubscribe(e){const t=this.$__subscriptionManager.get(e);t&&(t.unsubscribe(),this.$__subscriptionManager.delete(e))}unsubscribeAll(){this.$__subscriptionManager.forEach((e,t)=>{this.unsubscribe(t)})}unsubscribeFromChannel(e){this.unsubscribe(e)}setEncryption(e=!1){this.cipherLink=e,this.$__client=this.createUrqlClient({serverUri:this.serverUri,socket:this.soketi,encrypt:e})}getAuthToken(){return this.$__authToken}getPubKey(){return this.$__pubkey}getWallet(){return this.$__wallet}getServerUri(){return this.serverUri}getSocketUri(){return this.soketi?this.soketi.socketUri:null}getUri(){return this.serverUri}setUri(e){this.serverUri=e,this.$__client=this.createUrqlClient({serverUri:e,socket:this.soketi,encrypt:!!this.cipherLink})}setSocketUri({socketUri:e,appKey:t}){this.soketi={socketUri:e,appKey:t},this.$__client=this.createUrqlClient({serverUri:this.serverUri,socket:this.soketi,encrypt:!!this.cipherLink})}}class $r{constructor({uri:e,cellSlug:t=null,client:n=null,socket:s=null,serverSdkVersion:r=3,logging:i=!1,defaultRequestPolicy:a=null}){this.initialize({uri:e,cellSlug:t,socket:s,client:n,serverSdkVersion:r,logging:i,defaultRequestPolicy:a})}initialize({uri:e,cellSlug:t=null,socket:n=null,client:s=null,serverSdkVersion:r=3,logging:i=!1,defaultRequestPolicy:a=null}){this.reset(),this.$__logging=i,this.$__defaultRequestPolicy=a,this.$__authTokenObjects={},this.$__authInProcess=!1,this.abortControllers=new Map,this.setUri(e),t&&this.setCellSlug(t);for(const c in this.$__uris){const u=this.$__uris[c];this.$__authTokenObjects[u]=null}this.log("info",`KnishIOClient::initialize() - Initializing new Knish.IO client session for SDK version ${r}...`),this.$__client=s||new Sr({socket:{socketUri:null,appKey:"knishio",...n||{}},serverUri:this.getRandomUri()}),this.$__serverSdkVersion=r}getRandomUri(){const e=Math.floor(Math.random()*this.$__uris.length);return this.$__uris[e]}switchEncryption(e){return this.$__encrypt===e?!1:(this.log("info",`KnishIOClient::switchEncryption() - Forcing encryption ${e?"on":"off"} to match node...`),this.$__encrypt=e,this.$__client.setEncryption(e),!0)}deinitialize(){this.log("info","KnishIOClient::deinitialize() - Clearing the Knish.IO client session..."),this.reset()}subscribe(){if(!this.client().getSocketUri())throw new ee("KnishIOClient::subscribe() - Socket client not initialized!");return this.client()}getServerSdkVersion(){return this.$__serverSdkVersion}getDefaultRequestPolicy(){return this.$__defaultRequestPolicy||null}setDefaultRequestPolicy(e){this.$__defaultRequestPolicy=e}reset(){this.$__secret="",this.$__bundle="",this.remainderWallet=null,this.$__capabilityCache={},this.$__defaultRequestPolicy=null}getCellSlug(){return this.$__cellSlug||null}setCellSlug(e){this.$__cellSlug=e}setUri(e){if(this.$__uris=typeof e=="object"?e:[e],this.$__client){const t=this.getRandomUri();this.$__client.setUri(t)}}setSocketUri(e){this.$__client&&typeof this.$__client.setSocketUri=="function"&&this.$__client.setSocketUri({socketUri:e,appKey:"knishio"})}getUri(){return this.$__client.getUri()}client(){if(!this.$__authInProcess){const e=this.getRandomUri();this.$__client.setUri(e);const t=this.$__authTokenObjects[e];t?this.$__client.setAuthData(t.getAuthData()):this.requestAuthToken({secret:this.$__secret,cellSlug:this.$__cellSlug,encrypt:this.$__encrypt}).catch(n=>{this.log("warn",`KnishIOClient::client() - Background authorization failed: ${n.message}`)})}return this.$__client}hasSecret(){return!!this.$__secret}setSecret(e){this.$__secret=e,this.$__bundle=this.hashSecret(e,"setSecret")}hashSecret(e,t=null){return this.log("info",`KnishIOClient::hashSecret(${t?`source: ${t}`:""}) - Computing wallet bundle from secret...`),de(e)}getSecret(){if(!this.hasSecret())throw new Re("KnishIOClient::getSecret() - Unable to find a stored secret! Have you set a secret?");return this.$__secret}hasBundle(){return!!this.$__bundle}getBundle(){if(!this.hasBundle())throw new Re("KnishIOClient::getBundle() - Unable to find a stored bundle! Have you set a secret?");return this.$__bundle}getFingerprint(){return lr()}getFingerprintData(){return is()}async getSourceWallet(){let e=(await this.queryContinuId({bundle:this.getBundle()})).payload();return e?e.key=k.generateKey({secret:this.getSecret(),token:e.token,position:e.position}):e=new k({secret:this.getSecret()}),e}getRemainderWallet(){return this.remainderWallet}async createMolecule({secret:e=null,bundle:t=null,sourceWallet:n=null,remainderWallet:s=null}){this.log("info","KnishIOClient::createMolecule() - Creating a new molecule..."),e=e||this.getSecret(),t=t||this.getBundle();let r=null;if(n&&n.token!=="USER")if(this.lastMoleculeQuery&&this.getRemainderWallet()&&this.getRemainderWallet().token==="USER"&&this.lastMoleculeQuery.response()&&this.lastMoleculeQuery.response().success())r=this.getRemainderWallet().position;else{const i=await this.getSourceWallet();r=i?i.position:null}return!n&&this.lastMoleculeQuery&&this.getRemainderWallet().token==="USER"&&this.lastMoleculeQuery.response()&&this.lastMoleculeQuery.response().success()&&(n=this.getRemainderWallet()),n===null&&(n=await this.getSourceWallet()),this.remainderWallet=s||k.create({secret:e,bundle:t,token:"USER",batchId:n.batchId,characters:n.characters}),new V({secret:e,sourceWallet:n,remainderWallet:this.getRemainderWallet(),cellSlug:this.getCellSlug(),version:this.getServerSdkVersion(),continuIdPosition:r})}createQuery(e){return new e(this.client(),this)}createSubscribe(e){return new e(this.subscribe())}async createMoleculeMutation({mutationClass:e,molecule:t=null}){this.log("info",`KnishIOClient::createMoleculeQuery() - Creating a new ${e.name} query...`);const n=t||await this.createMolecule({}),s=new e(this.client(),this,n);if(!(s instanceof W))throw new ee(`${this.constructor.name}::createMoleculeMutation() - This method only accepts MutationProposeMolecule!`);return this.lastMoleculeQuery=s,s}async executeQuery(e,t=null,n={}){this.$__authToken&&this.$__authToken.isExpired()&&!this.$__authInProcess&&(this.log("info","KnishIOClient::executeQuery() - Access token is expired. Getting new one..."),await this.requestAuthToken({secret:this.$__secret,cellSlug:this.$__cellSlug,encrypt:this.$__encrypt}));const s=new AbortController,r=JSON.stringify({query:e.$__query,variables:t});this.abortControllers.set(r,s);try{const i={...n};this.$__defaultRequestPolicy&&!i.requestPolicy&&(i.requestPolicy=this.$__defaultRequestPolicy);const a=await e.execute({variables:t,context:{fetchOptions:{signal:s.signal},...i}});return this.abortControllers.delete(r),a}catch(i){if(i.name==="AbortError")this.log("warn","Query was cancelled");else throw i}}cancelQuery(e,t=null){const n=JSON.stringify({query:e.$__query,variables:t}),s=this.abortControllers.get(n);s&&(s.abort(),this.abortControllers.delete(n))}cancelAllQueries(){for(const e of this.abortControllers.values())e.abort();this.abortControllers.clear()}async queryBalance({token:e,bundle:t=null,type:n="regular"}){const s=this.createQuery(gn);return this.executeQuery(s,{bundleHash:t||this.getBundle(),token:e,type:n})}async querySourceWallet({token:e,amount:t,type:n="regular"}){const s=(await this.queryBalance({token:e,type:n})).payload();if(s===null||re.cmp(s.balance,t)<0)throw new J;if(!s.position||!s.address)throw new J("Source wallet can not be a shadow wallet.");return s}async subscribeCreateMolecule({bundle:e,closure:t}){return await this.createSubscribe(Zs).execute({variables:{bundle:e||this.getBundle()},closure:t})}subscribeWalletStatus({bundle:e,token:t,closure:n}){if(!t)throw new ee(`${this.constructor.name}::subscribeWalletStatus() - Token parameter is required!`);return this.createSubscribe(Ys).execute({variables:{bundle:e||this.getBundle(),token:t},closure:n})}subscribeActiveWallet({bundle:e,closure:t}){return this.createSubscribe(er).execute({variables:{bundle:e||this.getBundle()},closure:t})}subscribeActiveSession({metaType:e,metaId:t,closure:n}){return this.createSubscribe(tr).execute({variables:{metaType:e,metaId:t},closure:n})}unsubscribe(e){this.subscribe().unsubscribe(e)}unsubscribeAll(){this.subscribe().unsubscribeAll()}queryMeta({metaType:e,metaId:t=null,key:n=null,value:s=null,latest:r=!0,fields:i=null,filter:a=null,queryArgs:c=null,count:u=null,countBy:l=null,throughAtom:h=!0,throughMolecule:p=!1,values:d=null,keys:b=null,atomValues:A=null,requestPolicy:R=null}){this.log("info",`KnishIOClient::queryMeta() - Querying metaType: ${e}, metaId: ${t}...`);let f,m;return p?(f=this.createQuery(gt),m=gt.createVariables({metaType:e,metaId:t,key:n,value:s,latest:r,filter:a,queryArgs:c,countBy:l,values:d,keys:b,atomValues:A,cellSlug:this.getCellSlug()})):h?(f=this.createQuery(yt),m=yt.createVariables({metaType:e,metaId:t,key:n,value:s,latest:r,filter:a,queryArgs:c,countBy:l,values:d,keys:b,atomValues:A,cellSlug:this.getCellSlug()})):(f=this.createQuery(ht),m=ht.createVariables({metaType:e,metaId:t,key:n,value:s,latest:r,filter:a,queryArgs:c,count:u,countBy:l,cellSlug:this.getCellSlug()})),this.executeQuery(f,m,R?{requestPolicy:R}:{})}async queryMetaVerified(e){const t=await this.queryMeta(e),n=t.payload();return n&&(n.integrity=t.verifyIntegrity()),t}async hasQueryField(e){var s,r,i;const n=`${this.getUri()}::${e}`;if(typeof this.$__capabilityCache[n]=="boolean")return this.$__capabilityCache[n];try{const a=await this.$__client.query({query:"{ __schema { queryType { fields { name } } } }",variables:{}}),u=(((i=(r=(s=a==null?void 0:a.data)==null?void 0:s.__schema)==null?void 0:r.queryType)==null?void 0:i.fields)||[]).some(l=>l.name===e);return this.$__capabilityCache[n]=u,u}catch(a){return this.log("warn",`KnishIOClient::hasQueryField() - Capability probe for '${e}' failed: ${a.message}`),this.$__capabilityCache[n]=!1,!1}}async queryEmbeddingStatus({metaType:e=null,metaId:t=null,instances:n=null}){if(this.log("info",`KnishIOClient::queryEmbeddingStatus() - Checking embedding status for metaType: ${e||"(bulk)"}...`),!await this.hasQueryField("embeddingStatus"))return this.log("warn","KnishIOClient::queryEmbeddingStatus() - Server does not support embeddingStatus query. Returning null."),null;const r=this.createQuery(bt),i=bt.createVariables({metaType:e,metaId:t,instances:n});return this.executeQuery(r,i)}async queryBatch({batchId:e}){this.log("info",`KnishIOClient::queryBatch() - Querying cascading meta instances for batchId: ${e}...`);const t=this.createQuery(_e);return await this.executeQuery(t,{batchId:e})}async queryBatchHistory({batchId:e}){this.log("info",`KnishIOClient::queryBatchHistory() - Querying cascading meta instances for batchId: ${e}...`);const t=this.createQuery(wn);return await this.executeQuery(t,{batchId:e})}async queryAtom({molecularHashes:e,molecularHash:t,bundleHashes:n,bundleHash:s,positions:r,position:i,walletAddresses:a,walletAddress:c,isotopes:u,isotope:l,tokenSlugs:h,tokenSlug:p,cellSlugs:d,cellSlug:b,batchIds:A,batchId:R,values:f,value:m,metaTypes:w,metaType:C,metaIds:_,metaId:$,indexes:v,index:I,filter:S,latest:H,queryArgs:q={limit:15,offset:1}}){this.log("info","KnishIOClient::queryAtom() - Querying atom instances");const fe=this.createQuery(mt);return await this.executeQuery(fe,mt.createVariables({molecularHashes:e,molecularHash:t,bundleHashes:n,bundleHash:s,positions:r,position:i,walletAddresses:a,walletAddress:c,isotopes:u,isotope:l,tokenSlugs:h,tokenSlug:p,cellSlugs:d,cellSlug:b,batchIds:A,batchId:R,values:f,value:m,metaTypes:w,metaType:C,metaIds:_,metaId:$,indexes:v,index:I,filter:S,latest:H,queryArgs:q}))}async createWallet({token:e}){const t=new k({secret:this.getSecret(),token:e}),n=await this.createMoleculeMutation({mutationClass:Kn});return n.fillMolecule(t),await this.executeQuery(n)}async queryActiveSession({bundleHash:e,metaType:t,metaId:n}){const s=this.createQuery(Vn);return await this.executeQuery(s,{bundleHash:e,metaType:t,metaId:n})}async activeSession({bundle:e,metaType:t,metaId:n,ipAddress:s,browser:r,osCpu:i,resolution:a,timeZone:c,json:u={}}){const l=this.createQuery(jn);return await this.executeQuery(l,{bundleHash:e,metaType:t,metaId:n,ipAddress:s,browser:r,osCpu:i,resolution:a,timeZone:c,json:JSON.stringify(u)})}async createToken({token:e,amount:t=null,meta:n=null,batchId:s=null,units:r=[]}){const i=M.get(n||{},"fungibility");if(i==="stackable"&&(n.batchId=s||Te({})),["nonfungible","stackable"].includes(i)&&r.length>0){if(M.get(n||{},"decimals")>0)throw new Ln;if(t>0)throw new be;t=r.length,n.splittable=1,n.decimals=0,n.tokenUnits=JSON.stringify(r)}const a=new k({secret:this.getSecret(),bundle:this.getBundle(),token:e,batchId:s}),c=await this.createMoleculeMutation({mutationClass:$n});return c.fillMolecule({recipientWallet:a,amount:t,meta:n||{}}),await this.executeQuery(c)}async createRule({metaType:e,metaId:t,rule:n,policy:s={}}){const r=await this.createMoleculeMutation({mutationClass:ts,molecule:await this.createMolecule({secret:this.getSecret()})});return r.fillMolecule({metaType:e,metaId:t,rule:n,policy:s}),await this.executeQuery(r)}async createMeta({metaType:e,metaId:t,meta:n=null,policy:s={}}){const r=await this.createMoleculeMutation({mutationClass:Rn,molecule:await this.createMolecule({secret:this.getSecret()})}),i=n||{};return r.fillMolecule({metaType:e,metaId:t,meta:i,policy:s}),await this.executeQuery(r)}async registerPeer({host:e}){const t=await this.createMoleculeMutation({mutationClass:On,molecule:await this.createMolecule({secret:this.getSecret()})});return t.fillMolecule({host:e}),await this.executeQuery(t)}async appendRequest({metaType:e,metaId:t,action:n,meta:s={}}){const r=await this.createMoleculeMutation({mutationClass:Un,molecule:await this.createMolecule({secret:this.getSecret()})});return r.fillMolecule({metaType:e,metaId:t,action:n,meta:s}),await this.executeQuery(r)}async createIdentifier({type:e,contact:t,code:n}){const s=await this.createMoleculeMutation({mutationClass:Mn});return s.fillMolecule({type:e,contact:t,code:n}),await this.executeQuery(s)}async linkIdentifier({type:e,contact:t}){const n=this.createQuery(Hn);return await this.executeQuery(n,{bundle:this.getBundle(),type:e,content:t})}async createPolicy({metaType:e,metaId:t,policy:n={}}){const s=await this.createMolecule({});s.addPolicyAtom({metaType:e,metaId:t,meta:{},policy:n}),s.addContinuIdAtom(),s.sign({bundle:this.getBundle()}),s.check();const r=await this.createMoleculeMutation({mutationClass:W,molecule:s});return await this.executeQuery(r)}async queryPolicy({metaType:e,metaId:t}){const n=this.createQuery(Xn);return await this.executeQuery(n,{metaType:e,metaId:t})}queryWallets({bundle:e=null,token:t=null,unspent:n=!0}){this.log("info",`KnishIOClient::queryWallets() - Querying wallets${e?` for ${e}`:""}...`);const s=this.createQuery(mn);return this.executeQuery(s,{bundleHash:e||this.getBundle(),token:t,unspent:n}).then(r=>r.payload())}queryBundle({bundle:e=null,fields:t=null,raw:n=!1}){this.log("info",`KnishIOClient::queryBundle() - Querying wallet bundle metadata${e?` for ${e}`:""}...`),e||(e=this.getBundle()),typeof e=="string"&&(e=[e]);const s=this.createQuery(fn);return this.executeQuery(s,{bundleHashes:e}).then(r=>n?r:r.payload())}async queryContinuId({bundle:e}){const t=this.createQuery(dn);return this.executeQuery(t,{bundle:e})}async requestTokens({token:e,to:t,amount:n=null,units:s=[],meta:r=null,batchId:i=null}){let a,c;r=r||{};const u=this.createQuery(zn),l=await this.executeQuery(u,{slug:e}),h=M.get(l.data(),"0.fungibility")==="stackable";if(!h&&i!==null)throw new xe("Expected Batch ID = null for non-stackable tokens.");if(h&&i===null&&(i=Te({})),s.length>0){if(n>0)throw new be;n=s.length,r.tokenUnits=JSON.stringify(s)}t?(Object.prototype.toString.call(t)==="[object String]"&&(k.isBundleHash(t)?(a="walletBundle",c=t):t=k.create({secret:t,token:e})),t instanceof k&&(a="wallet",r.position=t.position,r.bundle=t.bundle,c=t.address)):(a="walletBundle",c=this.getBundle());const p=await this.createMoleculeMutation({mutationClass:vn});return p.fillMolecule({token:e,amount:n,metaType:a,metaId:c,meta:r,batchId:i}),await this.executeQuery(p)}async claimShadowWallet({token:e,batchId:t=null,molecule:n=null}){const s=await this.createMoleculeMutation({mutationClass:Cn,molecule:n});return s.fillMolecule({token:e,batchId:t}),await this.executeQuery(s)}async claimShadowWallets({token:e}){const t=await this.queryWallets({token:e});if(!t||!Array.isArray(t))throw new pt;t.forEach(s=>{if(!s.isShadow())throw new pt});const n=[];for(const s of t)n.push(await this.claimShadowWallet({token:e,batchId:s.batchId}));return n}async transferToken({bundleHash:e,token:t,amount:n=null,units:s=[],batchId:r=null,sourceWallet:i=null}){if(s.length>0){if(n>0)throw new be;n=s.length}if(i===null&&(i=await this.querySourceWallet({token:t,amount:n})),i===null||re.cmp(i.balance,n)<0)throw new J;const a=k.create({bundle:e,token:t});r!==null?a.batchId=r:a.initBatchId({sourceWallet:i});const c=i.createRemainder(this.getSecret());i.splitUnits(s,c,a);const u=await this.createMolecule({sourceWallet:i,remainderWallet:c}),l=await this.createMoleculeMutation({mutationClass:dt,molecule:u});return l.fillMolecule({recipientWallet:a,amount:n}),await this.executeQuery(l)}async transferTokens({token:e,recipients:t,sourceWallet:n=null}){const s=t.map(l=>{const h=l.units||[];if(h.length>0){if(l.amount>0)throw new be;return h.length}return l.amount||0}),r=s.reduce((l,h)=>l+h,0);if(n===null&&(n=await this.querySourceWallet({token:e,amount:r})),n===null||re.cmp(n.balance,r)<0)throw new J;const i=t.map(l=>{const h=k.create({bundle:l.bundleHash,token:e});return l.batchId!==void 0&&l.batchId!==null?h.batchId=l.batchId:h.initBatchId({sourceWallet:n}),h}),a=n.createRemainder(this.getSecret());n.splitUnitsMulti(t.map(l=>l.units||[]),i,a);const c=await this.createMolecule({sourceWallet:n,remainderWallet:a}),u=await this.createMoleculeMutation({mutationClass:dt,molecule:c});return u.fillMoleculeMulti({recipientWallets:i,amounts:s}),await this.executeQuery(u)}async depositBufferToken({tokenSlug:e,amount:t,tradeRates:n,sourceWallet:s=null}){s===null&&(s=await this.querySourceWallet({token:e,amount:t}));const r=s.createRemainder(this.getSecret()),i=await this.createMolecule({sourceWallet:s,remainderWallet:r}),a=await this.createMoleculeMutation({mutationClass:ns,molecule:i});return a.fillMolecule({amount:t,tradeRates:n}),await this.executeQuery(a)}async withdrawBufferToken({tokenSlug:e,amount:t,sourceWallet:n=null,signingWallet:s=null}){n===null&&(n=await this.querySourceWallet({token:e,amount:t,type:"buffer"}));const r=n,i=await this.createMolecule({sourceWallet:n,remainderWallet:r}),a=await this.createMoleculeMutation({mutationClass:ss,molecule:i}),c={};return c[this.getBundle()]=t,a.fillMolecule({recipients:c,signingWallet:s}),await this.executeQuery(a)}async burnTokens({token:e,amount:t=null,units:n=[],sourceWallet:s=null}){s===null&&(s=await this.querySourceWallet({token:e,amount:t}));const r=s.createRemainder(this.getSecret());if(n.length>0){if(t>0)throw new be;t=n.length,s.splitUnits(n,r)}const i=await this.createMolecule({sourceWallet:s,remainderWallet:r});i.burnToken({amount:t}),i.sign({bundle:this.getBundle()}),i.check(s);const a=await this.createMoleculeMutation({mutationClass:W,molecule:i});return this.executeQuery(a)}async replenishToken({token:e,amount:t=null,units:n=[],sourceWallet:s=null}){if(s===null&&(s=(await this.queryBalance({token:e})).payload()),!s)throw new J("Source wallet is missing or invalid.");const r=s.createRemainder(this.getSecret()),i=await this.createMolecule({sourceWallet:s,remainderWallet:r});i.replenishToken({amount:t,units:n}),i.sign({bundle:this.getBundle()}),i.check();const a=await this.createMoleculeMutation({mutationClass:W,molecule:i});return this.executeQuery(a)}async fuseToken({bundleHash:e,tokenSlug:t,newTokenUnit:n,fusedTokenUnitIds:s,sourceWallet:r=null}){if(r===null&&(r=(await this.queryBalance({token:t})).payload()),r===null)throw new J("Source wallet is missing or invalid.");if(!r.tokenUnits||!r.tokenUnits.length)throw new J("Source wallet does not have token units.");if(!s.length)throw new J("Fused token unit list is empty.");const i=[];r.tokenUnits.forEach(h=>{i.push(h.id)}),s.forEach(h=>{if(!i.includes(h))throw new J(`Fused token unit ID = ${h} does not found in the source wallet.`)});const a=k.create({bundle:e,token:t});a.initBatchId({sourceWallet:r});const c=r.createRemainder(this.getSecret());r.splitUnits(s,c),typeof n=="string"&&(n=new pe(n,n,{})),n.metas.fusedTokenUnits=r.getTokenUnitsData(),a.tokenUnits=[n];const u=await this.createMolecule({sourceWallet:r,remainderWallet:c});u.fuseToken(r.tokenUnits,a),u.sign({bundle:this.getBundle()}),u.check();const l=await this.createMoleculeMutation({mutationClass:W,molecule:u});return this.executeQuery(l)}async requestGuestAuthToken({cellSlug:e,encrypt:t}){this.setCellSlug(e);const n=new k({secret:Fe(await this.getFingerprint()),token:"AUTH"}),s=await this.createQuery(Qn),r={cellSlug:e,pubkey:n.pubkey,encrypt:t},i=await s.execute({variables:r});if(i.success()){const a=ke.create({token:i.token(),expiresAt:i.expiresAt(),pubkey:i.pubKey(),encrypt:i.encrypt()},n);this.setAuthToken(a)}else throw new ft(`KnishIOClient::requestGuestAuthToken() - Authorization attempt rejected by ledger. Reason: ${i.reason()}`);return i}async requestProfileAuthToken({secret:e,encrypt:t}){this.setSecret(e);const n=new k({secret:e,token:"AUTH"}),s=await this.createMolecule({secret:e,sourceWallet:n}),r=await this.createMoleculeMutation({mutationClass:_n,molecule:s}),i={encrypt:t?"true":"false"};n.pubkey&&(i.walletPubkey=n.pubkey),r.fillMolecule({meta:i});const a=await r.execute({});if(a.success()){const c=ke.create({token:a.token(),expiresAt:a.expiresAt(),pubkey:a.pubKey(),encrypt:a.encrypt()},n);this.setAuthToken(c)}else throw new ft(`KnishIOClient::requestProfileAuthToken() - Authorization attempt rejected by ledger. Reason: ${a.reason()}`);return a}async requestAuthToken({secret:e=null,seed:t=null,cellSlug:n=null,encrypt:s=!1}){if(this.$__serverSdkVersion<3)return this.log("warn","KnishIOClient::authorize() - Server SDK version does not require an authorization..."),null;e===null&&t&&(e=Fe(t)),n&&this.setCellSlug(n),this.$__authInProcess=!0;let r;return e?r=await this.requestProfileAuthToken({secret:e,encrypt:s}):r=await this.requestGuestAuthToken({cellSlug:n,encrypt:s}),this.log("info",`KnishIOClient::authorize() - Successfully retrieved auth token ${this.$__authToken.getToken()}...`),this.switchEncryption(s),this.$__authInProcess=!1,r}setAuthToken(e){if(!e){this.log("info","KnishIOClient::setAuthToken() - authToken object is empty.");return}this.$__authTokenObjects[this.getUri()]=e,this.client().setAuthData(e.getAuthData()),this.$__authToken=e}getAuthToken(){return this.$__authToken}log(e,t){if(this.$__logging)switch(e){case"info":console.info(t);break;case"warn":console.warn(t);break;case"error":console.error(t);break;default:console.log(t)}}}class Ar extends E{constructor({query:e,json:t}){super({query:e,json:t,dataKey:"data.AccessToken"})}reason(){return"Invalid response from server"}success(){return this.payload()!==null}payload(){return this.data()}payloadKey(e){if(!M.has(this.payload(),e))throw new te(`ResponseAuthorizationGuest::payloadKey() - '${e}' key is not found in the payload!`);return M.get(this.payload(),e)}token(){return this.payloadKey("token")}time(){return this.payloadKey("time")}}exports.Atom=g;exports.AtomIndexException=ye;exports.AtomMeta=B;exports.AtomsMissingException=se;exports.AuthToken=ke;exports.AuthorizationRejectedException=ft;exports.BalanceInsufficientException=le;exports.BatchIdException=xe;exports.CheckMolecule=we;exports.CodeException=ee;exports.Decimal=re;exports.Dot=M;exports.InvalidResponseException=te;exports.KnishIOClient=$r;exports.Meta=he;exports.MetaMissingException=U;exports.MolecularHashMismatchException=an;exports.MolecularHashMissingException=ln;exports.Molecule=V;exports.Mutation=We;exports.MutationActiveSession=jn;exports.MutationAppendRequest=Un;exports.MutationClaimShadowWallet=Cn;exports.MutationCreateIdentifier=Mn;exports.MutationCreateMeta=Rn;exports.MutationCreateRule=ts;exports.MutationCreateToken=$n;exports.MutationCreateWallet=Kn;exports.MutationDepositBufferToken=ns;exports.MutationLinkIdentifier=Hn;exports.MutationPeering=On;exports.MutationProposeMolecule=W;exports.MutationRequestAuthorization=_n;exports.MutationRequestAuthorizationGuest=Qn;exports.MutationRequestTokens=vn;exports.MutationTransferTokens=dt;exports.MutationWithdrawBufferToken=ss;exports.NegativeAmountException=ut;exports.PolicyInvalidException=at;exports.PolicyMeta=Ve;exports.Query=K;exports.QueryActiveSession=Vn;exports.QueryAtom=mt;exports.QueryBalance=gn;exports.QueryBatch=_e;exports.QueryBatchHistory=wn;exports.QueryContinuId=dn;exports.QueryEmbeddingStatus=bt;exports.QueryMetaType=ht;exports.QueryMetaTypeViaAtom=yt;exports.QueryMetaTypeViaMolecule=gt;exports.QueryPolicy=Xn;exports.QueryToken=zn;exports.QueryWalletBundle=fn;exports.QueryWalletList=mn;exports.Response=E;exports.ResponseActiveSession=Fn;exports.ResponseAppendRequest=Wn;exports.ResponseAtom=Jn;exports.ResponseAuthorizationGuest=Ar;exports.ResponseBalance=yn;exports.ResponseClaimShadowWallet=Tn;exports.ResponseContinuId=hn;exports.ResponseCreateIdentifier=In;exports.ResponseCreateMeta=En;exports.ResponseCreateRule=es;exports.ResponseCreateToken=Sn;exports.ResponseCreateWallet=Pn;exports.ResponseEmbeddingStatus=Yn;exports.ResponseLinkIdentifier=Bn;exports.ResponseMetaType=bn;exports.ResponseMetaTypeViaAtom=Zn;exports.ResponseMetaTypeViaMolecule=Xe;exports.ResponsePeering=qn;exports.ResponsePolicy=Gn;exports.ResponseProposeMolecule=F;exports.ResponseQueryActiveSession=Dn;exports.ResponseRequestAuthorization=kn;exports.ResponseRequestAuthorizationGuest=Nn;exports.ResponseRequestTokens=An;exports.ResponseTransferTokens=xn;exports.ResponseWalletBundle=pn;exports.ResponseWalletList=Oe;exports.SignatureMalformedException=kt;exports.SignatureMismatchException=cn;exports.StackableUnitAmountException=be;exports.StackableUnitDecimalsException=Ln;exports.TokenUnit=pe;exports.TransferBalanceException=J;exports.TransferMalformedException=ge;exports.TransferMismatchedException=lt;exports.TransferRemainderException=ct;exports.TransferToSelfException=un;exports.TransferUnbalancedException=ve;exports.UnauthenticatedException=Re;exports.Wallet=k;exports.WalletShadowException=pt;exports.WrongTokenTypeException=ne;exports.base64ToHex=Qt;exports.bufferToHexString=Pt;exports.charsetBaseConvert=Ht;exports.chunkArray=Ft;exports.chunkSubstr=Me;exports.deepCloning=jt;exports.diff=Dt;exports.generateBatchId=Te;exports.generateBundleHash=de;exports.generateSecret=Fe;exports.hexStringToBuffer=Kt;exports.hexToBase64=Nt;exports.intersect=me;exports.isHex=Ke;exports.isNumeric=Lt;exports.randomString=De;exports.shake256=Qe;
|
|
511
|
+
`,s=y.createShader(y.VERTEX_SHADER),r=y.createShader(y.FRAGMENT_SHADER);if(!s||!r)throw new Error("Failed to create shaders");if(y.shaderSource(s,t),y.shaderSource(r,n),y.compileShader(s),!y.getShaderParameter(s,y.COMPILE_STATUS))throw new Error("Vertex shader compilation failed: "+y.getShaderInfoLog(s));if(y.compileShader(r),!y.getShaderParameter(r,y.COMPILE_STATUS))throw new Error("Fragment shader compilation failed: "+y.getShaderInfoLog(r));var i=y.createProgram();if(!i)throw new Error("Failed to create shader program");if(y.attachShader(i,s),y.attachShader(i,r),y.linkProgram(i),!y.getProgramParameter(i,y.LINK_STATUS))throw new Error("Shader program linking failed: "+y.getProgramInfoLog(i));y.useProgram(i);for(var a=137,c=new Float32Array(4*a),u=2*Math.PI/a,l=0;l<a;l++){var h=l*u;c[4*l]=0,c[4*l+1]=0,c[4*l+2]=Math.cos(h)*(N.width/2),c[4*l+3]=Math.sin(h)*(N.height/2)}var p=y.createBuffer();y.bindBuffer(y.ARRAY_BUFFER,p),y.bufferData(y.ARRAY_BUFFER,c,y.STATIC_DRAW);var d=y.getAttribLocation(i,"position");y.enableVertexAttribArray(d),y.vertexAttribPointer(d,2,y.FLOAT,!1,0,0),y.viewport(0,0,N.width,N.height),y.clearColor(0,0,0,1),y.clear(y.COLOR_BUFFER_BIT),y.drawArrays(y.LINES,0,2*a);var b=new Uint8ClampedArray(N.width*N.height*4);return y.readPixels(0,0,N.width,N.height,y.RGBA,y.UNSIGNED_BYTE,b),new ImageData(b,N.width,N.height)}catch{return new ImageData(1,1)}finally{y&&(y.bindBuffer(y.ARRAY_BUFFER,null),y.useProgram(null),y.viewport(0,0,y.drawingBufferWidth,y.drawingBufferHeight),y.clearColor(0,0,0,0))}})()})),[2,{commonImageHash:kt(os(o,N.width,N.height).data.toString()).toString()}]}catch{return[2,{webgl:"unsupported"}]}return[2]}))}))}));var oe=function(o,e,t,n){for(var s=(t-e)/n,r=0,i=0;i<n;i++)r+=o(e+(i+.5)*s);return r*s};J("math",(function(){return X(void 0,void 0,void 0,(function(){return Z(this,(function(o){return[2,{acos:Math.acos(.5),asin:oe(Math.asin,-1,1,97),atan:oe(Math.atan,-1,1,97),cos:oe(Math.cos,0,Math.PI,97),cosh:Math.cosh(9/7),e:Math.E,largeCos:Math.cos(1e20),largeSin:Math.sin(1e20),largeTan:Math.tan(1e20),log:Math.log(1e3),pi:Math.PI,sin:oe(Math.sin,-Math.PI,Math.PI,97),sinh:oe(Math.sinh,-9/7,7/9,97),sqrt:Math.sqrt(2),tan:oe(Math.tan,0,2*Math.PI,97),tanh:oe(Math.tanh,-9/7,7/9,97)}]}))}))}));const gr="query ( $Hash: String! ) { CipherHash ( Hash: $Hash ) { hash } }";function br(o){const e=(o||"").match(/\b(query|mutation|subscription)\b/i),t=e?e[1].toLowerCase():"query",n=(o||"").indexOf("{"),s=n>=0?o.slice(n+1).match(/[A-Za-z_][A-Za-z0-9_]*/):null;return{type:t,name:s?s[0]:""}}class wr{constructor({serverUri:e,socket:t=null,encrypt:n=!1}){this.$__client=this.createUrqlClient({serverUri:e,socket:t,encrypt:n}),this.$__authToken="",this.$__pubkey=null,this.$__wallet=null,this.serverUri=e,this.soketi=t,this.cipherLink=!!n,this.$__subscriptionManager=new Map}createUrqlClient({serverUri:e,socket:t,encrypt:n}){const s=[T.cacheExchange,T.fetchExchange];if(t&&t.socketUri){const r=ls.createClient({url:t.socketUri,connectionParams:()=>({authToken:this.$__authToken})});s.push(T.subscriptionExchange({forwardSubscription:i=>({subscribe:a=>({unsubscribe:r.subscribe(i,a)})})}))}return T.createClient({url:e,exchanges:s,...n?{fetch:(r,i)=>this.cipherFetch(r,i)}:{},fetchOptions:()=>({headers:{"X-Auth-Token":this.$__authToken},signal:AbortSignal.timeout(6e4)})})}shouldEncrypt(e){let t;try{t=JSON.parse(e)}catch{return!1}const{type:n,name:s}=br(t.query);return!(n==="query"&&(s==="__schema"||s==="ContinuId")||n==="mutation"&&s==="AccessToken"||n==="mutation"&&s==="ProposeMolecule"&&(t.variables&&t.variables.molecule&&t.variables.molecule.atoms&&t.variables.molecule.atoms[0]&&t.variables.molecule.atoms[0].isotope)==="U")}async cipherFetch(e,t){const n=this.getWallet(),s=this.getPubKey();let r=!1,i=t;if(n&&s&&t&&typeof t.body=="string"&&this.shouldEncrypt(t.body)){const d=await n.encryptStringML768(t.body,s);i={...t,body:JSON.stringify({query:gr,variables:{Hash:d}})},r=!0}const a=await fetch(e,i);if(!r)return a;const c=await a.text(),u={status:a.status,statusText:a.statusText,headers:a.headers};let l;try{l=JSON.parse(c)}catch{return new Response(c,u)}const h=l&&l.data&&l.data.CipherHash&&l.data.CipherHash.hash;if(typeof h!="string")return new Response(c,u);const p=await n.decryptMyMessageML768(JSON.parse(h));return new Response(p??c,u)}setAuthData({token:e,pubkey:t,wallet:n}){this.$__authToken=e,this.$__pubkey=t,this.$__wallet=n,this.$__client=this.createUrqlClient({serverUri:this.serverUri,socket:this.soketi,encrypt:!!this.cipherLink})}buildRequestOptions(e){if(!e)return;const t={};e.requestPolicy&&(t.requestPolicy=e.requestPolicy);const n=e.fetchOptions&&e.fetchOptions.signal;if(n){const s=typeof AbortSignal<"u"&&typeof AbortSignal.any=="function"?AbortSignal.any([n,AbortSignal.timeout(6e4)]):n;t.fetchOptions={headers:{"X-Auth-Token":this.$__authToken},signal:s}}return Object.keys(t).length?t:void 0}async query(e){const{query:t,variables:n,context:s}=e,r=this.buildRequestOptions(s),i=await this.$__client.query(t,n||{},r).toPromise();return this.formatResponse(i)}async mutate(e){const{mutation:t,variables:n,context:s}=e,r=this.buildRequestOptions(s),i=await this.$__client.mutation(t,n||{},r).toPromise();return this.formatResponse(i)}subscribe(e,t){const{query:n,variables:s,operationName:r}=e,i=Ze.pipe(this.$__client.subscription(n,s),Ze.map(a=>{t(this.formatResponse(a))}),Ze.subscribe(()=>{}));return this.$__subscriptionManager.set(r,i),{unsubscribe:()=>this.unsubscribe(r)}}formatResponse(e){return{data:e.data,errors:e.error?[e.error]:void 0}}socketDisconnect(){this.soketi&&this.unsubscribeAll()}unsubscribe(e){const t=this.$__subscriptionManager.get(e);t&&(t.unsubscribe(),this.$__subscriptionManager.delete(e))}unsubscribeAll(){this.$__subscriptionManager.forEach((e,t)=>{this.unsubscribe(t)})}unsubscribeFromChannel(e){this.unsubscribe(e)}setEncryption(e=!1){this.cipherLink=e,this.$__client=this.createUrqlClient({serverUri:this.serverUri,socket:this.soketi,encrypt:e})}getAuthToken(){return this.$__authToken}getPubKey(){return this.$__pubkey}getWallet(){return this.$__wallet}getServerUri(){return this.serverUri}getSocketUri(){return this.soketi?this.soketi.socketUri:null}getUri(){return this.serverUri}setUri(e){this.serverUri=e,this.$__client=this.createUrqlClient({serverUri:e,socket:this.soketi,encrypt:!!this.cipherLink})}setSocketUri({socketUri:e,appKey:t}){this.soketi={socketUri:e,appKey:t},this.$__client=this.createUrqlClient({serverUri:this.serverUri,socket:this.soketi,encrypt:!!this.cipherLink})}}class kr{constructor({uri:e,cellSlug:t=null,client:n=null,socket:s=null,serverSdkVersion:r=3,logging:i=!1,defaultRequestPolicy:a=null}){this.initialize({uri:e,cellSlug:t,socket:s,client:n,serverSdkVersion:r,logging:i,defaultRequestPolicy:a})}initialize({uri:e,cellSlug:t=null,socket:n=null,client:s=null,serverSdkVersion:r=3,logging:i=!1,defaultRequestPolicy:a=null}){this.reset(),this.$__logging=i,this.$__defaultRequestPolicy=a,this.$__authTokenObjects={},this.$__authInProcess=!1,this.abortControllers=new Map,this.setUri(e),t&&this.setCellSlug(t);for(const c in this.$__uris){const u=this.$__uris[c];this.$__authTokenObjects[u]=null}this.log("info",`KnishIOClient::initialize() - Initializing new Knish.IO client session for SDK version ${r}...`),this.$__client=s||new wr({socket:{socketUri:null,appKey:"knishio",...n||{}},serverUri:this.getRandomUri()}),this.$__serverSdkVersion=r}getRandomUri(){const e=Math.floor(Math.random()*this.$__uris.length);return this.$__uris[e]}switchEncryption(e){return this.$__encrypt===e?!1:(this.log("info",`KnishIOClient::switchEncryption() - Forcing encryption ${e?"on":"off"} to match node...`),this.$__encrypt=e,this.$__client.setEncryption(e),!0)}deinitialize(){this.log("info","KnishIOClient::deinitialize() - Clearing the Knish.IO client session..."),this.reset()}subscribe(){if(!this.client().getSocketUri())throw new Y("KnishIOClient::subscribe() - Socket client not initialized!");return this.client()}getServerSdkVersion(){return this.$__serverSdkVersion}getDefaultRequestPolicy(){return this.$__defaultRequestPolicy||null}setDefaultRequestPolicy(e){this.$__defaultRequestPolicy=e}reset(){this.$__secret="",this.$__bundle="",this.remainderWallet=null,this.$__capabilityCache={},this.$__defaultRequestPolicy=null}getCellSlug(){return this.$__cellSlug||null}setCellSlug(e){this.$__cellSlug=e}setUri(e){if(this.$__uris=typeof e=="object"?e:[e],this.$__client){const t=this.getRandomUri();this.$__client.setUri(t)}}setSocketUri(e){this.$__client&&typeof this.$__client.setSocketUri=="function"&&this.$__client.setSocketUri({socketUri:e,appKey:"knishio"})}getUri(){return this.$__client.getUri()}client(){if(!this.$__authInProcess){const e=this.getRandomUri();this.$__client.setUri(e);const t=this.$__authTokenObjects[e];t?this.$__client.setAuthData(t.getAuthData()):this.requestAuthToken({secret:this.$__secret,cellSlug:this.$__cellSlug,encrypt:this.$__encrypt}).catch(n=>{this.log("warn",`KnishIOClient::client() - Background authorization failed: ${n.message}`)})}return this.$__client}hasSecret(){return!!this.$__secret}setSecret(e){this.$__secret=e,this.$__bundle=this.hashSecret(e,"setSecret")}hashSecret(e,t=null){return this.log("info",`KnishIOClient::hashSecret(${t?`source: ${t}`:""}) - Computing wallet bundle from secret...`),he(e)}getSecret(){if(!this.hasSecret())throw new Ee("KnishIOClient::getSecret() - Unable to find a stored secret! Have you set a secret?");return this.$__secret}hasBundle(){return!!this.$__bundle}getBundle(){if(!this.hasBundle())throw new Ee("KnishIOClient::getBundle() - Unable to find a stored bundle! Have you set a secret?");return this.$__bundle}getFingerprint(){return ir()}getFingerprintData(){return rs()}async getSourceWallet(){let e=(await this.queryContinuId({bundle:this.getBundle()})).payload();return e?e.key=k.generateKey({secret:this.getSecret(),token:e.token,position:e.position}):e=new k({secret:this.getSecret()}),e}getRemainderWallet(){return this.remainderWallet}async createMolecule({secret:e=null,bundle:t=null,sourceWallet:n=null,remainderWallet:s=null}){this.log("info","KnishIOClient::createMolecule() - Creating a new molecule..."),e=e||this.getSecret(),t=t||this.getBundle();let r=null;if(n&&n.token!=="USER")if(this.lastMoleculeQuery&&this.getRemainderWallet()&&this.getRemainderWallet().token==="USER"&&this.lastMoleculeQuery.response()&&this.lastMoleculeQuery.response().success())r=this.getRemainderWallet().position;else{const i=await this.getSourceWallet();r=i?i.position:null}return!n&&this.lastMoleculeQuery&&this.getRemainderWallet().token==="USER"&&this.lastMoleculeQuery.response()&&this.lastMoleculeQuery.response().success()&&(n=this.getRemainderWallet()),n===null&&(n=await this.getSourceWallet()),this.remainderWallet=s||k.create({secret:e,bundle:t,token:"USER",batchId:n.batchId,characters:n.characters}),new D({secret:e,sourceWallet:n,remainderWallet:this.getRemainderWallet(),cellSlug:this.getCellSlug(),version:this.getServerSdkVersion(),continuIdPosition:r})}createQuery(e){return new e(this.client(),this)}createSubscribe(e){return new e(this.subscribe())}async createMoleculeMutation({mutationClass:e,molecule:t=null}){this.log("info",`KnishIOClient::createMoleculeQuery() - Creating a new ${e.name} query...`);const n=t||await this.createMolecule({}),s=new e(this.client(),this,n);if(!(s instanceof W))throw new Y(`${this.constructor.name}::createMoleculeMutation() - This method only accepts MutationProposeMolecule!`);return this.lastMoleculeQuery=s,s}async executeQuery(e,t=null,n={}){this.$__authToken&&this.$__authToken.isExpired()&&!this.$__authInProcess&&(this.log("info","KnishIOClient::executeQuery() - Access token is expired. Getting new one..."),await this.requestAuthToken({secret:this.$__secret,cellSlug:this.$__cellSlug,encrypt:this.$__encrypt}));const s=new AbortController,r=JSON.stringify({query:e.$__query,variables:t});this.abortControllers.set(r,s);try{const i={...n};this.$__defaultRequestPolicy&&!i.requestPolicy&&(i.requestPolicy=this.$__defaultRequestPolicy);const a=await e.execute({variables:t,context:{fetchOptions:{signal:s.signal},...i}});return this.abortControllers.delete(r),a}catch(i){if(i.name==="AbortError")this.log("warn","Query was cancelled");else throw i}}cancelQuery(e,t=null){const n=JSON.stringify({query:e.$__query,variables:t}),s=this.abortControllers.get(n);s&&(s.abort(),this.abortControllers.delete(n))}cancelAllQueries(){for(const e of this.abortControllers.values())e.abort();this.abortControllers.clear()}async queryBalance({token:e,bundle:t=null,type:n="regular"}){const s=this.createQuery(yn);return this.executeQuery(s,{bundleHash:t||this.getBundle(),token:e,type:n})}async querySourceWallet({token:e,amount:t,type:n="regular"}){const s=(await this.queryBalance({token:e,type:n})).payload();if(s===null||se.cmp(s.balance,t)<0)throw new z;if(!s.position||!s.address)throw new z("Source wallet can not be a shadow wallet.");return s}async subscribeCreateMolecule({bundle:e,closure:t}){return await this.createSubscribe(Js).execute({variables:{bundle:e||this.getBundle()},closure:t})}subscribeWalletStatus({bundle:e,token:t,closure:n}){if(!t)throw new Y(`${this.constructor.name}::subscribeWalletStatus() - Token parameter is required!`);return this.createSubscribe(Gs).execute({variables:{bundle:e||this.getBundle(),token:t},closure:n})}subscribeActiveWallet({bundle:e,closure:t}){return this.createSubscribe(Xs).execute({variables:{bundle:e||this.getBundle()},closure:t})}subscribeActiveSession({metaType:e,metaId:t,closure:n}){return this.createSubscribe(Zs).execute({variables:{metaType:e,metaId:t},closure:n})}unsubscribe(e){this.subscribe().unsubscribe(e)}unsubscribeAll(){this.subscribe().unsubscribeAll()}queryMeta({metaType:e,metaId:t=null,key:n=null,value:s=null,latest:r=!0,fields:i=null,filter:a=null,queryArgs:c=null,count:u=null,countBy:l=null,throughAtom:h=!0,throughMolecule:p=!1,values:d=null,keys:b=null,atomValues:A=null,requestPolicy:R=null}){this.log("info",`KnishIOClient::queryMeta() - Querying metaType: ${e}, metaId: ${t}...`);let f,m;return p?(f=this.createQuery(yt),m=yt.createVariables({metaType:e,metaId:t,key:n,value:s,latest:r,filter:a,queryArgs:c,countBy:l,values:d,keys:b,atomValues:A,cellSlug:this.getCellSlug()})):h?(f=this.createQuery(mt),m=mt.createVariables({metaType:e,metaId:t,key:n,value:s,latest:r,filter:a,queryArgs:c,countBy:l,values:d,keys:b,atomValues:A,cellSlug:this.getCellSlug()})):(f=this.createQuery(ut),m=ut.createVariables({metaType:e,metaId:t,key:n,value:s,latest:r,filter:a,queryArgs:c,count:u,countBy:l,cellSlug:this.getCellSlug()})),this.executeQuery(f,m,R?{requestPolicy:R}:{})}async queryMetaVerified(e){const t=await this.queryMeta(e),n=t.payload();return n&&(n.integrity=t.verifyIntegrity()),t}async hasQueryField(e){const n=`${this.getUri()}::${e}`;if(typeof this.$__capabilityCache[n]=="boolean")return this.$__capabilityCache[n];try{const i=((await this.$__client.query({query:"{ __schema { queryType { fields { name } } } }",variables:{}}))?.data?.__schema?.queryType?.fields||[]).some(a=>a.name===e);return this.$__capabilityCache[n]=i,i}catch(s){return this.log("warn",`KnishIOClient::hasQueryField() - Capability probe for '${e}' failed: ${s.message}`),this.$__capabilityCache[n]=!1,!1}}async queryEmbeddingStatus({metaType:e=null,metaId:t=null,instances:n=null}){if(this.log("info",`KnishIOClient::queryEmbeddingStatus() - Checking embedding status for metaType: ${e||"(bulk)"}...`),!await this.hasQueryField("embeddingStatus"))return this.log("warn","KnishIOClient::queryEmbeddingStatus() - Server does not support embeddingStatus query. Returning null."),null;const r=this.createQuery(gt),i=gt.createVariables({metaType:e,metaId:t,instances:n});return this.executeQuery(r,i)}async queryBatch({batchId:e}){this.log("info",`KnishIOClient::queryBatch() - Querying cascading meta instances for batchId: ${e}...`);const t=this.createQuery(ke);return await this.executeQuery(t,{batchId:e})}async queryBatchHistory({batchId:e}){this.log("info",`KnishIOClient::queryBatchHistory() - Querying cascading meta instances for batchId: ${e}...`);const t=this.createQuery(bn);return await this.executeQuery(t,{batchId:e})}async queryAtom({molecularHashes:e,molecularHash:t,bundleHashes:n,bundleHash:s,positions:r,position:i,walletAddresses:a,walletAddress:c,isotopes:u,isotope:l,tokenSlugs:h,tokenSlug:p,cellSlugs:d,cellSlug:b,batchIds:A,batchId:R,values:f,value:m,metaTypes:w,metaType:C,metaIds:_,metaId:$,indexes:v,index:I,filter:S,latest:H,queryArgs:q={limit:15,offset:1}}){this.log("info","KnishIOClient::queryAtom() - Querying atom instances");const pe=this.createQuery(ft);return await this.executeQuery(pe,ft.createVariables({molecularHashes:e,molecularHash:t,bundleHashes:n,bundleHash:s,positions:r,position:i,walletAddresses:a,walletAddress:c,isotopes:u,isotope:l,tokenSlugs:h,tokenSlug:p,cellSlugs:d,cellSlug:b,batchIds:A,batchId:R,values:f,value:m,metaTypes:w,metaType:C,metaIds:_,metaId:$,indexes:v,index:I,filter:S,latest:H,queryArgs:q}))}async createWallet({token:e}){const t=new k({secret:this.getSecret(),token:e}),n=await this.createMoleculeMutation({mutationClass:Pn});return n.fillMolecule(t),await this.executeQuery(n)}async queryActiveSession({bundleHash:e,metaType:t,metaId:n}){const s=this.createQuery(Dn);return await this.executeQuery(s,{bundleHash:e,metaType:t,metaId:n})}async activeSession({bundle:e,metaType:t,metaId:n,ipAddress:s,browser:r,osCpu:i,resolution:a,timeZone:c,json:u={}}){const l=this.createQuery(Fn);return await this.executeQuery(l,{bundleHash:e,metaType:t,metaId:n,ipAddress:s,browser:r,osCpu:i,resolution:a,timeZone:c,json:JSON.stringify(u)})}async createToken({token:e,amount:t=null,meta:n=null,batchId:s=null,units:r=[]}){const i=M.get(n||{},"fungibility");if(i==="stackable"&&(n.batchId=s||Me({})),["nonfungible","stackable"].includes(i)&&r.length>0){if(M.get(n||{},"decimals")>0)throw new Ln;if(t>0)throw new ge;t=r.length,n.splittable=1,n.decimals=0,n.tokenUnits=JSON.stringify(r)}const a=new k({secret:this.getSecret(),bundle:this.getBundle(),token:e,batchId:s}),c=await this.createMoleculeMutation({mutationClass:Sn});return c.fillMolecule({recipientWallet:a,amount:t,meta:n||{}}),await this.executeQuery(c)}async createRule({metaType:e,metaId:t,rule:n,policy:s={}}){const r=await this.createMoleculeMutation({mutationClass:es,molecule:await this.createMolecule({secret:this.getSecret()})});return r.fillMolecule({metaType:e,metaId:t,rule:n,policy:s}),await this.executeQuery(r)}async createMeta({metaType:e,metaId:t,meta:n=null,policy:s={}}){const r=await this.createMoleculeMutation({mutationClass:En,molecule:await this.createMolecule({secret:this.getSecret()})}),i=n||{};return r.fillMolecule({metaType:e,metaId:t,meta:i,policy:s}),await this.executeQuery(r)}async registerPeer({host:e}){const t=await this.createMoleculeMutation({mutationClass:qn,molecule:await this.createMolecule({secret:this.getSecret()})});return t.fillMolecule({host:e}),await this.executeQuery(t)}async appendRequest({metaType:e,metaId:t,action:n,meta:s={}}){const r=await this.createMoleculeMutation({mutationClass:Wn,molecule:await this.createMolecule({secret:this.getSecret()})});return r.fillMolecule({metaType:e,metaId:t,action:n,meta:s}),await this.executeQuery(r)}async createIdentifier({type:e,contact:t,code:n}){const s=await this.createMoleculeMutation({mutationClass:In});return s.fillMolecule({type:e,contact:t,code:n}),await this.executeQuery(s)}async linkIdentifier({type:e,contact:t}){const n=this.createQuery(Bn);return await this.executeQuery(n,{bundle:this.getBundle(),type:e,content:t})}async createPolicy({metaType:e,metaId:t,policy:n={}}){const s=await this.createMolecule({});s.addPolicyAtom({metaType:e,metaId:t,meta:{},policy:n}),s.addContinuIdAtom(),s.sign({bundle:this.getBundle()}),s.check();const r=await this.createMoleculeMutation({mutationClass:W,molecule:s});return await this.executeQuery(r)}async queryPolicy({metaType:e,metaId:t}){const n=this.createQuery(Gn);return await this.executeQuery(n,{metaType:e,metaId:t})}queryWallets({bundle:e=null,token:t=null,unspent:n=!0}){this.log("info",`KnishIOClient::queryWallets() - Querying wallets${e?` for ${e}`:""}...`);const s=this.createQuery(fn);return this.executeQuery(s,{bundleHash:e||this.getBundle(),token:t,unspent:n}).then(r=>r.payload())}queryBundle({bundle:e=null,fields:t=null,raw:n=!1}){this.log("info",`KnishIOClient::queryBundle() - Querying wallet bundle metadata${e?` for ${e}`:""}...`),e||(e=this.getBundle()),typeof e=="string"&&(e=[e]);const s=this.createQuery(pn);return this.executeQuery(s,{bundleHashes:e}).then(r=>n?r:r.payload())}async queryContinuId({bundle:e}){const t=this.createQuery(hn);return this.executeQuery(t,{bundle:e})}async requestTokens({token:e,to:t,amount:n=null,units:s=[],meta:r=null,batchId:i=null}){let a,c;r=r||{};const u=this.createQuery(Vn),l=await this.executeQuery(u,{slug:e}),h=M.get(l.data(),"0.fungibility")==="stackable";if(!h&&i!==null)throw new ve("Expected Batch ID = null for non-stackable tokens.");if(h&&i===null&&(i=Me({})),s.length>0){if(n>0)throw new ge;n=s.length,r.tokenUnits=JSON.stringify(s)}t?(Object.prototype.toString.call(t)==="[object String]"&&(k.isBundleHash(t)?(a="walletBundle",c=t):t=k.create({secret:t,token:e})),t instanceof k&&(a="wallet",r.position=t.position,r.bundle=t.bundle,c=t.address)):(a="walletBundle",c=this.getBundle());const p=await this.createMoleculeMutation({mutationClass:An});return p.fillMolecule({token:e,amount:n,metaType:a,metaId:c,meta:r,batchId:i}),await this.executeQuery(p)}async claimShadowWallet({token:e,batchId:t=null,molecule:n=null}){const s=await this.createMoleculeMutation({mutationClass:Tn,molecule:n});return s.fillMolecule({token:e,batchId:t}),await this.executeQuery(s)}async claimShadowWallets({token:e}){const t=await this.queryWallets({token:e});if(!t||!Array.isArray(t))throw new dt;t.forEach(s=>{if(!s.isShadow())throw new dt});const n=[];for(const s of t)n.push(await this.claimShadowWallet({token:e,batchId:s.batchId}));return n}async transferToken({bundleHash:e,token:t,amount:n=null,units:s=[],batchId:r=null,sourceWallet:i=null}){if(s.length>0){if(n>0)throw new ge;n=s.length}if(i===null&&(i=await this.querySourceWallet({token:t,amount:n})),i===null||se.cmp(i.balance,n)<0)throw new z;const a=k.create({bundle:e,token:t});r!==null?a.batchId=r:a.initBatchId({sourceWallet:i});const c=i.createRemainder(this.getSecret());i.splitUnits(s,c,a);const u=await this.createMolecule({sourceWallet:i,remainderWallet:c}),l=await this.createMoleculeMutation({mutationClass:ht,molecule:u});return l.fillMolecule({recipientWallet:a,amount:n}),await this.executeQuery(l)}async transferTokens({token:e,recipients:t,sourceWallet:n=null}){const s=t.map(l=>{const h=l.units||[];if(h.length>0){if(l.amount>0)throw new ge;return h.length}return l.amount||0}),r=s.reduce((l,h)=>l+h,0);if(n===null&&(n=await this.querySourceWallet({token:e,amount:r})),n===null||se.cmp(n.balance,r)<0)throw new z;const i=t.map(l=>{const h=k.create({bundle:l.bundleHash,token:e});return l.batchId!==void 0&&l.batchId!==null?h.batchId=l.batchId:h.initBatchId({sourceWallet:n}),h}),a=n.createRemainder(this.getSecret());n.splitUnitsMulti(t.map(l=>l.units||[]),i,a);const c=await this.createMolecule({sourceWallet:n,remainderWallet:a}),u=await this.createMoleculeMutation({mutationClass:ht,molecule:c});return u.fillMoleculeMulti({recipientWallets:i,amounts:s}),await this.executeQuery(u)}async depositBufferToken({tokenSlug:e,amount:t,tradeRates:n,sourceWallet:s=null}){s===null&&(s=await this.querySourceWallet({token:e,amount:t}));const r=s.createRemainder(this.getSecret()),i=await this.createMolecule({sourceWallet:s,remainderWallet:r}),a=await this.createMoleculeMutation({mutationClass:ts,molecule:i});return a.fillMolecule({amount:t,tradeRates:n}),await this.executeQuery(a)}async withdrawBufferToken({tokenSlug:e,amount:t,sourceWallet:n=null,signingWallet:s=null}){n===null&&(n=await this.querySourceWallet({token:e,amount:t,type:"buffer"}));const r=n,i=await this.createMolecule({sourceWallet:n,remainderWallet:r}),a=await this.createMoleculeMutation({mutationClass:ns,molecule:i}),c={};return c[this.getBundle()]=t,a.fillMolecule({recipients:c,signingWallet:s}),await this.executeQuery(a)}async burnTokens({token:e,amount:t=null,units:n=[],sourceWallet:s=null}){s===null&&(s=await this.querySourceWallet({token:e,amount:t}));const r=s.createRemainder(this.getSecret());if(n.length>0){if(t>0)throw new ge;t=n.length,s.splitUnits(n,r)}const i=await this.createMolecule({sourceWallet:s,remainderWallet:r});i.burnToken({amount:t}),i.sign({bundle:this.getBundle()}),i.check(s);const a=await this.createMoleculeMutation({mutationClass:W,molecule:i});return this.executeQuery(a)}async replenishToken({token:e,amount:t=null,units:n=[],sourceWallet:s=null}){if(s===null&&(s=(await this.queryBalance({token:e})).payload()),!s)throw new z("Source wallet is missing or invalid.");const r=s.createRemainder(this.getSecret()),i=await this.createMolecule({sourceWallet:s,remainderWallet:r});i.replenishToken({amount:t,units:n}),i.sign({bundle:this.getBundle()}),i.check();const a=await this.createMoleculeMutation({mutationClass:W,molecule:i});return this.executeQuery(a)}async fuseToken({bundleHash:e,tokenSlug:t,newTokenUnit:n,fusedTokenUnitIds:s,sourceWallet:r=null}){if(r===null&&(r=(await this.queryBalance({token:t})).payload()),r===null)throw new z("Source wallet is missing or invalid.");if(!r.tokenUnits||!r.tokenUnits.length)throw new z("Source wallet does not have token units.");if(!s.length)throw new z("Fused token unit list is empty.");const i=[];r.tokenUnits.forEach(h=>{i.push(h.id)}),s.forEach(h=>{if(!i.includes(h))throw new z(`Fused token unit ID = ${h} does not found in the source wallet.`)});const a=k.create({bundle:e,token:t});a.initBatchId({sourceWallet:r});const c=r.createRemainder(this.getSecret());r.splitUnits(s,c),typeof n=="string"&&(n=new de(n,n,{})),n.metas.fusedTokenUnits=r.getTokenUnitsData(),a.tokenUnits=[n];const u=await this.createMolecule({sourceWallet:r,remainderWallet:c});u.fuseToken(r.tokenUnits,a),u.sign({bundle:this.getBundle()}),u.check();const l=await this.createMoleculeMutation({mutationClass:W,molecule:u});return this.executeQuery(l)}async requestGuestAuthToken({cellSlug:e,encrypt:t}){this.setCellSlug(e);const n=new k({secret:Qe(await this.getFingerprint()),token:"AUTH"}),s=await this.createQuery(Nn),r={cellSlug:e,pubkey:n.pubkey,encrypt:t},i=await s.execute({variables:r});if(i.success()){const a=we.create({token:i.token(),expiresAt:i.expiresAt(),pubkey:i.pubKey(),encrypt:i.encrypt()},n);this.setAuthToken(a)}else throw new pt(`KnishIOClient::requestGuestAuthToken() - Authorization attempt rejected by ledger. Reason: ${i.reason()}`);return i}async requestProfileAuthToken({secret:e,encrypt:t}){this.setSecret(e);const n=new k({secret:e,token:"AUTH"}),s=await this.createMolecule({secret:e,sourceWallet:n}),r=await this.createMoleculeMutation({mutationClass:kn,molecule:s}),i={encrypt:t?"true":"false"};n.pubkey&&(i.walletPubkey=n.pubkey),r.fillMolecule({meta:i});const a=await r.execute({});if(a.success()){const c=we.create({token:a.token(),expiresAt:a.expiresAt(),pubkey:a.pubKey(),encrypt:a.encrypt()},n);this.setAuthToken(c)}else throw new pt(`KnishIOClient::requestProfileAuthToken() - Authorization attempt rejected by ledger. Reason: ${a.reason()}`);return a}async requestAuthToken({secret:e=null,seed:t=null,cellSlug:n=null,encrypt:s=!1}){if(this.$__serverSdkVersion<3)return this.log("warn","KnishIOClient::authorize() - Server SDK version does not require an authorization..."),null;e===null&&t&&(e=Qe(t)),n&&this.setCellSlug(n),this.$__authInProcess=!0;let r;return e?r=await this.requestProfileAuthToken({secret:e,encrypt:s}):r=await this.requestGuestAuthToken({cellSlug:n,encrypt:s}),this.log("info",`KnishIOClient::authorize() - Successfully retrieved auth token ${this.$__authToken.getToken()}...`),this.switchEncryption(s),this.$__authInProcess=!1,r}setAuthToken(e){if(!e){this.log("info","KnishIOClient::setAuthToken() - authToken object is empty.");return}this.$__authTokenObjects[this.getUri()]=e,this.client().setAuthData(e.getAuthData()),this.$__authToken=e}getAuthToken(){return this.$__authToken}log(e,t){if(this.$__logging)switch(e){case"info":console.info(t);break;case"warn":console.warn(t);break;case"error":console.error(t);break;default:console.log(t)}}}class _r extends E{constructor({query:e,json:t}){super({query:e,json:t,dataKey:"data.AccessToken"})}reason(){return"Invalid response from server"}success(){return this.payload()!==null}payload(){return this.data()}payloadKey(e){if(!M.has(this.payload(),e))throw new ee(`ResponseAuthorizationGuest::payloadKey() - '${e}' key is not found in the payload!`);return M.get(this.payload(),e)}token(){return this.payloadKey("token")}time(){return this.payloadKey("time")}}exports.Atom=g;exports.AtomIndexException=me;exports.AtomMeta=B;exports.AtomsMissingException=ne;exports.AuthToken=we;exports.AuthorizationRejectedException=pt;exports.BalanceInsufficientException=ae;exports.BatchIdException=ve;exports.CheckMolecule=be;exports.CodeException=Y;exports.Decimal=se;exports.Dot=M;exports.InvalidResponseException=ee;exports.KnishIOClient=kr;exports.Meta=ue;exports.MetaMissingException=U;exports.MolecularHashMismatchException=on;exports.MolecularHashMissingException=an;exports.Molecule=D;exports.Mutation=Oe;exports.MutationActiveSession=Fn;exports.MutationAppendRequest=Wn;exports.MutationClaimShadowWallet=Tn;exports.MutationCreateIdentifier=In;exports.MutationCreateMeta=En;exports.MutationCreateRule=es;exports.MutationCreateToken=Sn;exports.MutationCreateWallet=Pn;exports.MutationDepositBufferToken=ts;exports.MutationLinkIdentifier=Bn;exports.MutationPeering=qn;exports.MutationProposeMolecule=W;exports.MutationRequestAuthorization=kn;exports.MutationRequestAuthorizationGuest=Nn;exports.MutationRequestTokens=An;exports.MutationTransferTokens=ht;exports.MutationWithdrawBufferToken=ns;exports.NegativeAmountException=ct;exports.PolicyInvalidException=ot;exports.PolicyMeta=De;exports.Query=K;exports.QueryActiveSession=Dn;exports.QueryAtom=ft;exports.QueryBalance=yn;exports.QueryBatch=ke;exports.QueryBatchHistory=bn;exports.QueryContinuId=hn;exports.QueryEmbeddingStatus=gt;exports.QueryMetaType=ut;exports.QueryMetaTypeViaAtom=mt;exports.QueryMetaTypeViaMolecule=yt;exports.QueryPolicy=Gn;exports.QueryToken=Vn;exports.QueryWalletBundle=pn;exports.QueryWalletList=fn;exports.Response=E;exports.ResponseActiveSession=Qn;exports.ResponseAppendRequest=On;exports.ResponseAtom=zn;exports.ResponseAuthorizationGuest=_r;exports.ResponseBalance=mn;exports.ResponseClaimShadowWallet=Mn;exports.ResponseContinuId=un;exports.ResponseCreateIdentifier=xn;exports.ResponseCreateMeta=Cn;exports.ResponseCreateRule=Yn;exports.ResponseCreateToken=_n;exports.ResponseCreateWallet=Hn;exports.ResponseEmbeddingStatus=Zn;exports.ResponseLinkIdentifier=Un;exports.ResponseMetaType=gn;exports.ResponseMetaTypeViaAtom=Xn;exports.ResponseMetaTypeViaMolecule=Ge;exports.ResponsePeering=Rn;exports.ResponsePolicy=Jn;exports.ResponseProposeMolecule=F;exports.ResponseQueryActiveSession=jn;exports.ResponseRequestAuthorization=wn;exports.ResponseRequestAuthorizationGuest=Kn;exports.ResponseRequestTokens=$n;exports.ResponseTransferTokens=vn;exports.ResponseWalletBundle=dn;exports.ResponseWalletList=qe;exports.SignatureMalformedException=wt;exports.SignatureMismatchException=ln;exports.StackableUnitAmountException=ge;exports.StackableUnitDecimalsException=Ln;exports.TokenUnit=de;exports.TransferBalanceException=z;exports.TransferMalformedException=ye;exports.TransferMismatchedException=at;exports.TransferRemainderException=lt;exports.TransferToSelfException=cn;exports.TransferUnbalancedException=Ae;exports.UnauthenticatedException=Ee;exports.Wallet=k;exports.WalletShadowException=dt;exports.WrongTokenTypeException=te;exports.base64ToHex=Nt;exports.bufferToHexString=Ht;exports.charsetBaseConvert=Bt;exports.chunkArray=Qt;exports.chunkSubstr=Ie;exports.deepCloning=Ft;exports.diff=jt;exports.generateBatchId=Me;exports.generateBundleHash=he;exports.generateSecret=Qe;exports.hexStringToBuffer=Pt;exports.hexToBase64=Kt;exports.intersect=fe;exports.isHex=Pe;exports.isNumeric=Lt;exports.randomString=je;exports.shake256=Ne;
|
|
512
512
|
//# sourceMappingURL=client.cjs.js.map
|