@wishknish/knishio-client-js 0.9.4 → 1.0.0
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 +38 -40
- package/dist/client.cjs.js.map +1 -1
- package/dist/client.es.mjs +5955 -9256
- package/dist/client.es.mjs.map +1 -1
- package/dist/client.iife.js +38 -40
- package/dist/client.iife.js.map +1 -1
- package/package.json +10 -11
- package/src/AuthToken.js +25 -3
- package/src/KnishIOClient.js +54 -15
- package/src/Molecule.js +15 -7
- package/src/Wallet.js +137 -30
- package/src/libraries/urql/UrqlClientWrapper.js +7 -2
package/dist/client.iife.js
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
var KnishIOClient=(function(
|
|
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],o=["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"].indexOf(i);if(o===-1)throw Error("unexpected character");s===-1?s=16*o:(n[Math.floor(r/2)]=s+o,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,(a,e)=>e.toUpperCase())}),String.prototype.toSnakeCase||(String.prototype.toSnakeCase=function(){return this.replace(/[A-Z]/g,a=>`_${a.toLowerCase()}`)});function Ie(a,e){const t=Math.ceil(a.length/e),n=[];for(let s=0,r=0;s<t;++s,r+=e)n[s]=a.substr(r,e);return n}function Ne(a=256,e="abcdef0123456789"){const t=new Uint8Array(a);crypto.getRandomValues(t);let n="";for(let s=0;s<a;s++)n+=e.charAt(t[s]%e.length);return n}function Rt(a,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",a,"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<a.length;c++)i=i*BigInt(e)+BigInt(n.indexOf(a.charAt(c)));let o="";for(;i>0;){const c=i%BigInt(t);o=s.charAt(Number(c))+o,i/=BigInt(t)}return o||"0"}function it(a){return Et.toHex(a,{})}function qt(a){return Et.toUint8Array(a)}function Ot(a){const e=qt(a);if(typeof Buffer<"u")return Buffer.from(e).toString("base64");let t="";const n=32768;for(let s=0;s<e.length;s+=n)t+=String.fromCharCode(...e.subarray(s,s+n));return btoa(t)}function Bt(a){if(typeof Buffer<"u")return it(new Uint8Array(Buffer.from(a,"base64")));const e=atob(a),t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n);return it(t)}function Fe(a){return/^[A-F0-9]+$/i.test(a)}function Wt(a){return(typeof a=="number"||typeof a=="string"&&a.trim()!=="")&&!isNaN(a)}let oe=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 _s(a,e){const t=[];for(let n=0;n<a.length;n+=e)t.push(a.slice(n,n+e));return t}function Ut(a,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)a===e[t]&&(n=e[t+1]);if(!n&&a&&typeof a=="object"){for(n={},t=0;t<r.length;t++)i.call(a)===i.call(s=new r[t](a))&&(n=t?s:[]);e.push(a,n);for(t in a)e.hasOwnProperty.call(a,t)&&(n[t]=Ut(a[t],e))}return n||a}function Pt(...a){return[].concat(...a.map((e,t)=>{const n=a.slice(0);n.splice(t,1);const s=[...new Set([].concat(...n))];return e.filter(r=>!s.includes(r))}))}function me(...a){return a.reduce((e,t)=>e.filter(n=>t.includes(n)))}class Le{constructor(e={},t={}){this.policy=Le.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(o=>o.key);this.policy[s]||(this.policy[s]={});for(const o of Pt(e,i))this.policy[s][o]||(this.policy[s][o]=s==="write"&&!["characters","pubkey"].includes(o)?["self"]:["all"])}}get(){return this.policy}toJson(){return JSON.stringify(this.get())}}class P{constructor(e=[]){this.meta=oe.normalizeMeta(e)}merge(e){return this.meta=Array.from(new Set([...this.meta,...oe.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 Le(e,Object.keys(this.meta));return this.merge({policy:t.toJson()}),this}get(){return this.meta}}class I 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
|
-
Stack:
|
|
4
|
-
${this.stack}`}}class se extends I{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 $s extends le{constructor({position:e=null,walletAddress:t=null,isotope:n=null,token:s=null,value:r=null,batchId:i=null,metaType:o=null,metaId:c=null,meta:u=null,index:l=null,createdAt:d=null,version:f=null}){super(),this.position=e,this.walletAddress=t,this.isotope=n,this.token=s,this.value=r,this.batchId=i,this.metaType=o,this.metaId=c,this.meta=u,this.index=l,this.createdAt=d,this.version=f}}const Qe={4:$s};class b{constructor({position:e=null,walletAddress:t=null,isotope:n=null,token:s=null,value:r=null,batchId:i=null,metaType:o=null,metaId:c=null,meta:u=null,otsFragment:l=null,index:d=null,version:f=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=o,this.metaId=c,this.meta=u?oe.normalizeMeta(u):[],this.index=d,this.otsFragment=l,this.createdAt=String(+new Date),f!==null&&Object.prototype.hasOwnProperty.call(Qe,f)&&(this.version=String(f))}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:o=null}){return i||(i=new P),i instanceof P||(i=new P(i)),t&&(i.setAtomWallet(t),o||(o=t.batchId)),new b({position:t?t.position:null,walletAddress:t?t.address:null,isotope:e,token:t?t.token:null,value:n,batchId:o,metaType:s,metaId:r,meta:i.get()})}static jsonToObject(e){const t=Object.assign(new b({}),JSON.parse(e)),n=Object.keys(new b({}));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 o=["position","walletAddress","isotope","token"];for(const c of o)if(!r[c])throw new Error(`Required field '${c}' is missing or empty`)}const i=new b({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 D("SHAKE256","TEXT"),s=b.sortAtoms(e);if(s.length===0)throw new se;if(s.map(r=>{if(!(r instanceof b))throw new se;return r}),s.every(r=>r.version&&Object.prototype.hasOwnProperty.call(Qe,r.version)))n.update(JSON.stringify(s.map(r=>Qe[r.version].create(r).view())));else{const r=String(e.length);let i=[];for(const o of s)i.push(r),i=i.concat(o.getHashableValues());for(const o of i)n.update(o)}switch(t){case"hex":return n.getHash("HEX",{outputLen:256});case"array":return n.getHash("ARRAYBUFFER",{outputLen:256});default:return Rt(n.getHash("HEX",{outputLen:256}),16,17,"0123456789abcdef","0123456789abcdefg").padStart(64,"0")}}static jsonSerialization(e,t){if(!b.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 oe.aggregateMeta(this.meta)}getHashableValues(){const e=[];for(const t of b.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 De(a=null,e=2048){if(a){const t=new D("SHAKE256","TEXT");return t.update(a),t.getHash("HEX",{outputLen:e*4})}else return Ne(e)}function ce(a,e=null){const t=new D("SHAKE256","TEXT");return t.update(a),t.getHash("HEX",{outputLen:256})}function je(a,e){const t=new D("SHAKE256","TEXT");return t.update(a),t.getHash("HEX",{outputLen:e})}function Me({molecularHash:a=null,index:e=null}){return a!==null&&e!==null?ce(String(a)+String(e),"generateBatchId"):Ne(64)}class ue{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 ue(e.id,e.name,t)}static createFromDB(e){return new ue(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 at extends I{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 Ve=BigInt(2**32-1),Ht=BigInt(32);function As(a,e=!1){return e?{h:Number(a&Ve),l:Number(a>>Ht&Ve)}:{h:Number(a>>Ht&Ve)|0,l:Number(a&Ve)|0}}function vs(a,e=!1){const t=a.length;let n=new Uint32Array(t),s=new Uint32Array(t);for(let r=0;r<t;r++){const{h:i,l:o}=As(a[r],e);[n[r],s[r]]=[i,o]}return[n,s]}const Is=(a,e,t)=>a<<t|e>>>32-t,Ms=(a,e,t)=>e<<t|a>>>32-t,Ts=(a,e,t)=>e<<t-32|a>>>64-t,Cs=(a,e,t)=>a<<t-32|e>>>64-t;function xs(a){return a instanceof Uint8Array||ArrayBuffer.isView(a)&&a.constructor.name==="Uint8Array"}function Kt(a,e=""){if(!Number.isSafeInteger(a)||a<0){const t=e&&`"${e}" `;throw new Error(`${t}expected integer >= 0, got ${a}`)}}function V(a,e,t=""){const n=xs(a),s=a?.length,r=e!==void 0;if(!n||r&&s!==e){const i=t&&`"${t}" `,o=r?` of length ${e}`:"",c=n?`length=${s}`:`type=${typeof a}`;throw new Error(i+"expected Uint8Array"+o+", got "+c)}return a}function Nt(a,e=!0){if(a.destroyed)throw new Error("Hash instance has been destroyed");if(e&&a.finished)throw new Error("Hash#digest() has already been called")}function Es(a,e){V(a,void 0,"digestInto() output");const t=e.outputLen;if(a.length<t)throw new Error('"digestInto() output" expected to be of length >='+t)}function Ft(a){return new Uint32Array(a.buffer,a.byteOffset,Math.floor(a.byteLength/4))}function Lt(...a){for(let e=0;e<a.length;e++)a[e].fill(0)}const Rs=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function qs(a){return a<<24&4278190080|a<<8&16711680|a>>>8&65280|a>>>24&255}function Os(a){for(let e=0;e<a.length;e++)a[e]=qs(a[e]);return a}const Qt=Rs?a=>a:Os;function Dt(a,e={}){const t=(s,r)=>a(r).update(s).digest(),n=a(void 0);return t.outputLen=n.outputLen,t.blockLen=n.blockLen,t.create=s=>a(s),Object.assign(t,e),Object.freeze(t)}function Bs(a=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(a))}const ze=a=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,a])}),Ws=BigInt(0),Te=BigInt(1),Us=BigInt(2),Ps=BigInt(7),Hs=BigInt(256),Ks=BigInt(113),jt=[],Vt=[],zt=[];for(let a=0,e=Te,t=1,n=0;a<24;a++){[t,n]=[n,(2*t+3*n)%5],jt.push(2*(5*n+t)),Vt.push((a+1)*(a+2)/2%64);let s=Ws;for(let r=0;r<7;r++)e=(e<<Te^(e>>Ps)*Ks)%Hs,e&Us&&(s^=Te<<(Te<<BigInt(r))-Te);zt.push(s)}const Jt=vs(zt,!0),Ns=Jt[0],Fs=Jt[1],Gt=(a,e,t)=>t>32?Ts(a,e,t):Is(a,e,t),Xt=(a,e,t)=>t>32?Cs(a,e,t):Ms(a,e,t);function Ls(a,e=24){const t=new Uint32Array(10);for(let n=24-e;n<24;n++){for(let i=0;i<10;i++)t[i]=a[i]^a[i+10]^a[i+20]^a[i+30]^a[i+40];for(let i=0;i<10;i+=2){const o=(i+8)%10,c=(i+2)%10,u=t[c],l=t[c+1],d=Gt(u,l,1)^t[o],f=Xt(u,l,1)^t[o+1];for(let p=0;p<50;p+=10)a[i+p]^=d,a[i+p+1]^=f}let s=a[2],r=a[3];for(let i=0;i<24;i++){const o=Vt[i],c=Gt(s,r,o),u=Xt(s,r,o),l=jt[i];s=a[l],r=a[l+1],a[l]=c,a[l+1]=u}for(let i=0;i<50;i+=10){for(let o=0;o<10;o++)t[o]=a[i+o];for(let o=0;o<10;o++)a[i+o]^=~t[(o+2)%10]&t[(o+4)%10]}a[0]^=Ns[n],a[1]^=Fs[n]}Lt(t)}class Je{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,Kt(n,"outputLen"),!(0<e&&e<200))throw new Error("only keccak-f1600 function is supported");this.state=new Uint8Array(200),this.state32=Ft(this.state)}clone(){return this._cloneInto()}keccak(){Qt(this.state32),Ls(this.state32,this.rounds),Qt(this.state32),this.posOut=0,this.pos=0}update(e){Nt(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 o=0;o<i;o++)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){Nt(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 Kt(e),this.xofInto(new Uint8Array(e))}digestInto(e){if(Es(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,Lt(this.state)}_cloneInto(e){const{blockLen:t,suffix:n,outputLen:s,rounds:r,enableXOF:i}=this;return 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 Zt=(a,e,t,n={})=>Dt(()=>new Je(e,a,t),n),Qs=Zt(6,136,32,ze(8)),Ds=Zt(6,72,64,ze(10)),Yt=(a,e,t,n={})=>Dt((s={})=>new Je(e,a,s.dkLen===void 0?t:s.dkLen,!0),n),js=Yt(31,168,16,ze(11)),en=Yt(31,136,32,ze(12));function ot(a){if(!Number.isSafeInteger(a)||a<0||a>4294967295)throw new Error("wrong u32 integer:"+a);return a}function tn(a){return ot(a),(a&a-1)===0&&a!==0}function nn(a,e){ot(a);let t=0;for(let n=0;n<e;n++,a>>>=1)t=t<<1|a&1;return t}function sn(a){return ot(a),31-Math.clz32(a)}function rn(a){const e=a.length;if(e<2||!tn(e))throw new Error("n must be a power of 2 and greater than 1. Got "+e);const t=sn(e);for(let n=0;n<e;n++){const s=nn(n,t);if(n<s){const r=a[n];a[n]=a[s],a[s]=r}}return a}const an=(a,e)=>{const{N:t,roots:n,dit:s,invertButterflies:r=!1,skipStages:i=0,brp:o=!0}=e,c=sn(t);if(!tn(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&&o&&rn(l);for(let d=0,f=1;d<c-i;d++){const p=s?d+1+i:c-d,w=1<<p,v=w>>1,O=t>>p;for(let y=0;y<t;y+=w)for(let m=0,k=f++;m<v;m++){const R=r?s?t-k:k:m*O,_=y+m,A=y+m+v,M=n[R],x=l[A],$=l[_];if(u){const F=a.mul(x,M);l[_]=a.add($,F),l[A]=a.sub($,F)}else r?(l[_]=a.add(x,$),l[A]=a.mul(a.sub(x,$),M)):(l[_]=a.add($,x),l[A]=a.mul(a.sub($,x),M))}}return!s&&o&&rn(l),l}};const on=Bs;function lt(a,e){if(a.length!==e.length)return!1;let t=0;for(let n=0;n<a.length;n++)t|=a[n]^e[n];return t===0}function Vs(a){return Uint8Array.from(a)}function Ge(a,...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,o=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,a),r.set(l,o),typeof c!="number"&&l.fill(0),o+=u}return r},decode:s=>{V(s,n,a);const r=[];for(const i of e){const o=t(i),c=s.subarray(0,o);r.push(typeof i=="number"?c:i.decode(c)),s=s.subarray(o)}return r}}}function ct(a,e){const t=e*a.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 o=a.encode(n[r]);s.set(o,i),o.fill(0),i+=o.length}return s},decode:n=>{V(n,t);const s=[];for(let r=0;r<n.length;r+=a.bytesLen)s.push(a.decode(n.subarray(r,r+a.bytesLen)));return s}}}function Z(...a){for(const e of a)if(Array.isArray(e))for(const t of e)t.fill(0);else e.fill(0)}function ln(a){return(1<<a)-1}const zs=a=>{const{newPoly:e,N:t,Q:n,F:s,ROOT_OF_UNITY:r,brvBits:i}=a,o=(y,m=n)=>{const k=y%m|0;return(k>=0?k|0:m+k|0)|0},c=(y,m=n)=>{const k=o(y,m)|0;return(k>m>>1?k-m|0:k)|0};function u(){const y=e(t);for(let m=0;m<t;m++){const k=nn(m,i),R=BigInt(r)**BigInt(k)%BigInt(n);y[m]=Number(R)|0}return y}const l=u(),d={add:(y,m)=>o((y|0)+(m|0))|0,sub:(y,m)=>o((y|0)-(m|0))|0,mul:(y,m)=>o((y|0)*(m|0))|0,inv:y=>{throw new Error("not implemented")}},f={N:t,roots:l,invertButterflies:!0,skipStages:1,brp:!1},p=an(d,{dit:!1,...f}),w=an(d,{dit:!0,...f});return{mod:o,smod:c,nttZetas:l,NTT:{encode:y=>p(y),decode:y=>{w(y);for(let m=0;m<y.length;m++)y[m]=o(s*y[m]);return y}},bitsCoder:(y,m)=>{const k=ln(y),R=y*(t/8);return{bytesLen:R,encode:_=>{const A=new Uint8Array(R);for(let M=0,x=0,$=0,F=0;M<_.length;M++)for(x|=(m.encode(_[M])&k)<<$,$+=y;$>=8;$-=8,x>>=8)A[F++]=x&ln($);return A},decode:_=>{const A=e(t);for(let M=0,x=0,$=0,F=0;M<_.length;M++)for(x|=_[M]<<$,$+=8;$>=y;$-=y,x>>=y)A[F++]=m.decode(x&k);return A}}}}},Js=(a=>(e,t)=>{t||(t=a.blockLen);const n=new Uint8Array(e.length+2);n.set(e);const s=e.length,r=new Uint8Array(t);let i=a.create({}),o=0,c=0;return{stats:()=>({calls:o,xofs:c}),get:(u,l)=>(n[s+0]=u,n[s+1]=l,i.destroy(),i=a.create({}).update(n),o++,()=>(c++,i.xofInto(r))),clean:()=>{i.destroy(),Z(r,n)}}})(js);const Q=256,he=3329,Gs=3303,Xs=17,{mod:Ce,nttZetas:Zs,NTT:de,bitsCoder:Ys}=zs({N:Q,Q:he,F:Gs,ROOT_OF_UNITY:Xs,newPoly:a=>new Uint16Array(a),brvBits:7}),er={768:{N:Q,Q:he,K:3,ETA1:2,ETA2:2,du:10,dv:4,RBGstrength:192}},tr=a=>{if(a>=12)return{encode:t=>t,decode:t=>t};const e=2**(a-1);return{encode:t=>((t<<a)+he/2)/he,decode:t=>t*he+e>>>a}},xe=a=>Ys(a,tr(a));function pe(a,e){for(let t=0;t<Q;t++)a[t]=Ce(a[t]+e[t])}function nr(a,e){for(let t=0;t<Q;t++)a[t]=Ce(a[t]-e[t])}function sr(a,e,t,n,s){const r=Ce(e*n*s+a*t),i=Ce(a*n+e*t);return{c0:r,c1:i}}function Xe(a,e){for(let t=0;t<Q/2;t++){let n=Zs[64+(t>>1)];t&1&&(n=-n);const{c0:s,c1:r}=sr(a[2*t+0],a[2*t+1],e[2*t+0],e[2*t+1],n);a[2*t+0]=s,a[2*t+1]=r}return a}function cn(a){const e=new Uint16Array(Q);for(let t=0;t<Q;){const n=a();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<he&&(e[t++]=r),t<Q&&i<he&&(e[t++]=i)}}return e}function Ee(a,e,t,n){const s=a(n*Q/4,e,t),r=new Uint16Array(Q),i=Ft(s);let o=0;for(let c=0,u=0,l=0,d=0;c<i.length;c++){let f=i[c];for(let p=0;p<32;p++)l+=f&1,f>>=1,o+=1,o===n?(d=l,l=0):o===2*n&&(r[u++]=Ce(d-l),l=0,o=0)}if(o)throw new Error(`sampleCBD: leftover bits: ${o}`);return r}const rr=a=>{const{K:e,PRF:t,XOF:n,HASH512:s,ETA1:r,ETA2:i,du:o,dv:c}=a,u=xe(1),l=xe(c),d=xe(o),f=Ge("publicKey",ct(xe(12),e),32),p=ct(xe(12),e),w=Ge("ciphertext",ct(d,e),l),v=Ge("seed",32,32);return{secretCoder:p,lengths:{secretKey:p.bytesLen,publicKey:f.bytesLen,cipherText:w.bytesLen},keygen:O=>{V(O,32,"seed");const y=new Uint8Array(33);y.set(O),y[32]=e;const m=s(y),[k,R]=v.decode(m),_=[],A=[];for(let $=0;$<e;$++)_.push(de.encode(Ee(t,R,$,r)));const M=n(k);for(let $=0;$<e;$++){const F=de.encode(Ee(t,R,e+$,r));for(let U=0;U<e;U++){const ve=cn(M.get(U,$));pe(F,Xe(ve,_[U]))}A.push(F)}M.clean();const x={publicKey:f.encode([A,k]),secretKey:p.encode(_)};return Z(k,R,_,A,y,m),x},encrypt:(O,y,m)=>{const[k,R]=f.decode(O),_=[];for(let U=0;U<e;U++)_.push(de.encode(Ee(t,m,U,r)));const A=n(R),M=new Uint16Array(Q),x=[];for(let U=0;U<e;U++){const ve=Ee(t,m,e+U,i),xt=new Uint16Array(Q);for(let st=0;st<e;st++){const Wr=cn(A.get(U,st));pe(xt,Xe(Wr,_[st]))}pe(ve,de.decode(xt)),x.push(ve),pe(M,Xe(k[U],_[U])),Z(xt)}A.clean();const $=Ee(t,m,2*e,i);pe($,de.decode(M));const F=u.decode(y);return pe(F,$),Z(k,_,M,$),w.encode([x,F])},decrypt:(O,y)=>{const[m,k]=w.decode(O),R=p.decode(y),_=new Uint16Array(Q);for(let A=0;A<e;A++)pe(_,Xe(R[A],de.encode(m[A])));return nr(k,de.decode(_)),Z(_,R,m),u.encode(k)}}};function ir(a){const e=rr(a),{HASH256:t,HASH512:n,KDF:s}=a,{secretCoder:r,lengths:i}=e,o=Ge("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:o.bytesLen},keygen:(l=on(u))=>{V(l,u,"seed");const{publicKey:d,secretKey:f}=e.keygen(l.subarray(0,32)),p=t(d),w=o.encode([f,d,p,l.subarray(32)]);return Z(f,p),{publicKey:d,secretKey:w}},getPublicKey:l=>{const[d,f]=o.decode(l);return Uint8Array.from(f)},encapsulate:(l,d=on(c))=>{V(l,i.publicKey,"publicKey"),V(d,c,"message");const f=l.subarray(0,384*a.K),p=r.encode(r.decode(Vs(f)));if(!lt(p,f))throw Z(p),new Error("ML-KEM.encapsulate: wrong publicKey modulus");Z(p);const w=n.create().update(d).update(t(l)).digest(),v=e.encrypt(l,d,w.subarray(32,64));return Z(w.subarray(32)),{cipherText:v,sharedSecret:w.subarray(0,32)}},decapsulate:(l,d)=>{V(d,o.bytesLen,"secretKey"),V(l,i.cipherText,"cipherText");const f=o.bytesLen-96,p=f+32,w=t(d.subarray(f/2,p));if(!lt(w,d.subarray(p,p+32)))throw new Error("invalid secretKey: hash check failed");const[v,O,y,m]=o.decode(d),k=e.decrypt(l,v),R=n.create().update(k).update(y).digest(),_=R.subarray(0,32),A=e.encrypt(O,k,R.subarray(32,64)),M=lt(l,A),x=s.create({dkLen:32}).update(m).update(l).digest();return Z(k,A,M?x:_),M?_:x}}}function ar(a,e,t){return en.create({dkLen:a}).update(e).update(new Uint8Array([t])).digest()}const ut=ir({...{HASH256:Qs,HASH512:Ds,KDF:en,XOF:Js,PRF:ar},...er[768]});class S{constructor({secret:e=null,bundle:t=null,token:n="USER",address:s=null,position:r=null,batchId:i=null,characters:o=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=o,e&&(this.bundle=this.bundle||ce(e,"Wallet::constructor"),this.position=this.position||S.generatePosition(),this.key=S.generateKey({secret:e,token:this.token,position:this.position}),this.address=this.address||S.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 at;return e&&!t&&(i=S.generatePosition(),t=ce(e,"Wallet::create")),new S({secret:e,bundle:t,token:n,position:i,batchId:s,characters:r})}static isBundleHash(e){return typeof e!="string"?!1:e.length===64&&Fe(e)}static getTokenUnits(e){const t=[];return e.forEach(n=>{t.push(ue.createFromDB(n))}),t}static generateKey({secret:e,token:t,position:n}){if(!e)throw new at("Wallet::generateKey() - Secret is required!");if(!n)throw new at("Wallet::generateKey() - Position is required!");const s=Fe(e)?e:je(e,1024),r=Fe(n)?n:je(n,256),o=BigInt(`0x${s}`)+BigInt(`0x${r}`),c=new D("SHAKE256","TEXT");c.update(o.toString(16)),t&&c.update(t);const u=new D("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 D("SHAKE256","TEXT");for(const r in t){let i=t[r];for(let o=1;o<=16;o++){const c=new D("SHAKE256","TEXT");c.update(i),i=c.getHash("HEX",{outputLen:512})}n.update(i)}const s=new D("SHAKE256","TEXT");return s.update(n.getHash("HEX",{outputLen:8192})),s.getHash("HEX",{outputLen:256})}static generatePosition(e=64){return Ne(e,"abcdef0123456789")}initializeMLKEM(){const e=De(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}=ut.keygen(t);this.pubkey=this.serializeKey(n),this.privkey=s}serializeKey(e){if(typeof Buffer<"u")return Buffer.from(e).toString("base64");let t="";const n=32768;for(let s=0;s<e.length;s+=n)t+=String.fromCharCode(...e.subarray(s,s+n));return btoa(t)}deserializeKey(e){if(typeof Buffer<"u")return new Uint8Array(Buffer.from(e,"base64"));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 o=e[i];r.tokenUnits=this.tokenUnits.filter(c=>o.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=S.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:o,sharedSecret:c}=ut.encapsulate(r),u=await this.encryptWithSharedSecret(s,c);return{cipherText:this.serializeKey(o),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=ut.decapsulate(this.deserializeKey(t),this.privkey)}catch(o){return console.error("Wallet::decryptMessage() - Decapsulation failed",o),console.info("Wallet::decryptMessage() - my public key",this.pubkey),null}let r;try{r=this.deserializeKey(n)}catch(o){return console.warn("Wallet::decryptMessage() - Deserialization failed",o),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(o){return console.warn("Wallet::decryptMessage() - Decryption failed",o),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(o){return console.warn("Wallet::decryptMessage() - Decoding failed",o),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=je(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),o=new Uint8Array(n.length+i.byteLength);return o.set(n),o.set(new Uint8Array(i),n.length),o}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 ge extends I{constructor(e="There is an atom without an index",t=null,n=null){super(e,t,n),this.name="AtomIndexException"}}class un extends I{constructor(e="The molecular hash does not match",t=null,n=null){super(e,t,n),this.name="MolecularHashMismatchException"}}class hn extends I{constructor(e="The molecular hash is missing",t=null,n=null){super(e,t,n),this.name="MolecularHashMissingException"}}class ht extends I{constructor(e="",t=null,n=null){super(e,t,n),this.name="PolicyInvalidException"}}class dt extends I{constructor(e="OTS malformed",t=null,n=null){super(e,t,n),this.name="SignatureMalformedException"}}class dn extends I{constructor(e="One-time signature (OTS) does not match!",t=null,n=null){super(e,t,n),this.name="SignatureMismatchException"}}class G extends I{constructor(e="Insufficient balance to make transfer",t=null,n=null){super(e,t,n),this.name="TransferBalanceException"}}class be extends I{constructor(e="Token transfer atoms are malformed",t=null,n=null){super(e,t,n),this.name="TransferMalformedException"}}class pt extends I{constructor(e="Token slugs for wallets in transfer do not match!",t=null,n=null){super(e,t,n),this.name="TransferMismatchedException"}}class ft extends I{constructor(e="Invalid remainder provided",t=null,n=null){super(e,t,n),this.name="TransferRemainderException"}}class pn extends I{constructor(e="Sender and recipient(s) cannot be the same",t=null,n=null){super(e,t,n),this.name="TransferToSelfException"}}class Re extends I{constructor(e="Token transfer atoms are unbalanced",t=null,n=null){super(e,t,n),this.name="TransferUnbalancedException"}}class H extends I{constructor(e="Empty meta data.",t=null,n=null){super(e,t,n),this.name="MetaMissingException"}}class re extends I{constructor(e="Wrong type of token for this isotope",t=null,n=null){super(e,t,n),this.name="WrongTokenTypeException"}}class qe extends I{constructor(e="Incorrect BatchId",t=null,n=null){super(e,t,n),this.name="BatchIdException"}}class fn{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 Ze extends I{constructor(e="An incorrect argument!",t=null,n=null){super(e,t,n),this.name="RuleArgumentException"}}class Y extends I{constructor(e="Code exception",t=null,n=null){super(e,t,n),this.name="CodeException"}}class Oe{constructor({action:e,metaType:t=null,metaId:n=null,meta:s=null,address:r=null,token:i=null,amount:o=null,comparison:c=null}){if(s&&(this.meta=s),!e)throw new Ze('Callback structure violated, missing mandatory "action" parameter.');this.__metaId=n,this.__metaType=t,this.__action=e,this.__address=r,this.__token=i,this.__amount=o,this.__comparison=c}set comparison(e){this.__comparison=e}set amount(e){if(!Wt(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 fn?e:fn.toObject(e)}set metaType(e){this.__metaType=e}set metaId(e){this.__metaId=e}static toObject(e){const t=new Oe({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 yt{constructor({key:e,value:t,comparison:n}){if([e,t,n].some(s=>!s))throw new Ze("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 Be{constructor({condition:e=[],callback:t=[]}){for(const n of e)if(!(n instanceof yt))throw new Ze;for(const n of t)if(!(n instanceof Oe))throw new Ze;this.__condition=e,this.__callback=t}set comparison(e){this.__condition.push(e instanceof yt?e:yt.toObject(e))}set callback(e){this.__callback.push(e instanceof Oe?e:Oe.toObject(e))}static toObject(e){if(!e.condition)throw new H("Rule::toObject() - Incorrect rule format! There is no condition field.");if(!e.callback)throw new H("Rule::toObject() - Incorrect rule format! There is no callback field.");const t=new Be({});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 C{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],d=Number(l),f=Number.isInteger(d);(f?d:l in r)||(r[f?d:l]=s[u+1].match(/^\d+$/)?[]:{}),r=r[f?d:l]}const o=s[i],c=Number(o);return r[Number.isInteger(c)?c:o]=n,e}}class we{constructor(e){if(e.molecularHash===null)throw new hn;if(!e.atoms.length)throw new se;for(const t of e.atoms)if(t.index===null)throw new ge;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 qe;for(const s of t)if(s.batchId===null)throw new qe}return!0}throw new qe}isotopeI(){for(const e of this.molecule.getIsotopes("I")){if(e.token!=="USER")throw new re(`Check::isotopeI() - "${e.token}" is not a valid Token slug for "${e.isotope}" isotope Atoms!`);if(e.index===0)throw new ge(`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 re(`Check::isotopeU() - "${e.token}" is not a valid Token slug for "${e.isotope}" isotope Atoms!`);if(e.index!==0)throw new ge(`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 H;if(t.token!=="USER")throw new re(`Check::isotopeM() - "${t.token}" is not a valid Token slug for "${t.isotope}" isotope Atoms!`);const n=oe.aggregateMeta(t.meta);for(const s of e){let r=n[s];if(r){r=JSON.parse(r);for(const[i,o]of Object.entries(r))if(!e.includes(i)){if(!Object.keys(n).includes(i))throw new ht(`${i} is missing from the meta.`);for(const c of o)if(!S.isBundleHash(c)&&!["all","self"].includes(c))throw new ht(`${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 re(`Check::isotopeC() - "${e.token}" is not a valid Token slug for "${e.isotope}" isotope Atoms!`);if(e.index!==0)throw new ge(`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 H(`Check::isotopeT() - Required meta field "${s}" is missing!`)}for(const s of["token"])if(!Object.prototype.hasOwnProperty.call(t,s)||!t[s])throw new H(`Check::isotopeT() - Required meta field "${s}" is missing!`);if(e.token!=="USER")throw new re(`Check::isotopeT() - "${e.token}" is not a valid Token slug for "${e.isotope}" isotope Atoms!`);if(e.index!==0)throw new ge(`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 H("Check::isotopeR() - Mixing rules with politics!")}if(t.rule){const n=JSON.parse(t.rule);if(!Array.isArray(n))throw new H("Check::isotopeR() - Incorrect rule format!");for(const s of n)Be.toObject(s);if(n.length<1)throw new H("Check::isotopeR() - No rules!")}}return!0}isotopeP(){for(const e of this.molecule.getIsotopes("P")){if(e.token!=="USER")throw new re(`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 H('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 re(`Check::isotopeA() - "${e.token}" is not a valid Token slug for "${e.isotope}" isotope Atoms!`);if(!e.metaType)throw new H('Check::isotopeA() - Required field "metaType" is missing!');if(!e.metaId)throw new H('Check::isotopeA() - Required field "metaId" is missing!');const t=e.aggregatedMeta();if(!Object.prototype.hasOwnProperty.call(t,"action")||!t.action)throw new H('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 H('Check::isotopeB() - B-isotope atoms must have metaType "walletBundle"!');if(!n.metaId)throw new H("Check::isotopeB() - B-isotope atoms must have a metaId!");const s=Number(n.value);if(Number.isNaN(s))throw new be("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 Re("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 H('Check::isotopeF() - F-isotope atoms must have metaType "walletBundle"!');if(!n.metaId)throw new H("Check::isotopeF() - F-isotope atoms must have a metaId!");const s=Number(n.value);if(Number.isNaN(s))throw new be("Check::isotopeF() - F-isotope atom value is not a valid number!");if(s<0)throw new be("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 Re("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 o=t[t.length-1];if(s.token!==o.token)throw new pt;if(o.value<0)throw new be;if(Number(s.value)+Number(o.value)!==0)throw new Re;return!0}let r=0,i=0;for(const o in this.molecule.atoms)if(Object.prototype.hasOwnProperty.call(this.molecule.atoms,o)){const c=this.molecule.atoms[o];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 pt;if(o>0){if(i<0)throw new be;if(c.walletAddress===s.walletAddress)throw new pn}r+=i}if(!n&&r!==0)throw new Re;if(e){if(i=s.value*1,Number.isNaN(i))throw new TypeError('Invalid isotope "V" values');const o=Number(e.balance)+i;if(o<0)throw new G;if(!n&&o!==r)throw new ft}else if(i!==0)throw new ft;return!0}molecularHash(){if(this.molecule.molecularHash!==b.hashAtoms({atoms:this.molecule.atoms}))throw new un;return!0}ots(){const e=this.molecule.normalizedHash();let t=this.molecule.atoms.map(f=>f.otsFragment).reduce((f,p)=>f+p);if(t.length!==2048&&(t=Bt(t),t.length!==2048))throw new dt;const n=Ie(t,128);let s="";for(const f in n){let p=n[f];for(let w=0,v=8+e[f];w<v;w++)p=new D("SHAKE256","TEXT").update(p).getHash("HEX",{outputLen:512});s+=p}const r=new D("SHAKE256","TEXT");r.update(s);const i=r.getHash("HEX",{outputLen:8192}),o=new D("SHAKE256","TEXT");o.update(i);const c=o.getHash("HEX",{outputLen:256}),u=this.molecule.atoms[0];let l=u.walletAddress;const d=C.get(u.aggregatedMeta(),"signingWallet");if(d&&(l=C.get(JSON.parse(d),"address")),c!==l)throw new dn;return!0}static fromServerData({molecularHash:e,bundleHash:t,cellSlug:n=null,status:s=null,createdAt:r=null,atoms:i=[]}){const o=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(([d,f])=>({key:d,value:f})))}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 z.fromJSON({molecularHash:e,bundle:t,cellSlug:n,status:s,createdAt:r,atoms:o})}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 fe extends I{constructor(e="Insufficient balance for requested transfer",t=null,n=null){super(e,t,n),this.name="BalanceInsufficientException"}}class mt extends I{constructor(e="Amount cannot be negative!",t=null,n=null){super(e,t,n),this.name="NegativeAmountException"}}class z{constructor({secret:e=null,bundle:t=null,sourceWallet:n=null,remainderWallet:s=null,cellSlug:r=null,version:i=null,continuIdPosition:o=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=o,this.atoms=[],this.parentHashes=[],i!==null&&Object.prototype.hasOwnProperty.call(Qe,i)&&(this.version=String(i)),(s||n)&&(this.remainderWallet=s||S.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 z({}),JSON.parse(e)),n=Object.keys(new z({}));if(!Array.isArray(t.atoms))throw new se;for(const s in Object.keys(t.atoms)){t.atoms[s]=b.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=b.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 o=s[r];typeof t[o]<"u"&&(n[r]=t[o])}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 z.isotopeFilter(e,this.atoms)}generateIndex(){return z.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=b.sortAtoms(this.atoms),this}addContinuIdAtom(){(!this.remainderWallet||this.remainderWallet.token!=="USER")&&(this.remainderWallet=S.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(b.create({isotope:"I",wallet:this.remainderWallet,metaType:"walletBundle",metaId:this.remainderWallet.bundle,meta:new P(e)})),this}addPolicyAtom({metaType:e,metaId:t,meta:n={},policy:s={}}){const r=new P(n);return r.addPolicy(s),this.addAtom(b.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 fe;return this.addAtom(b.create({isotope:"V",wallet:this.sourceWallet,value:-n})),this.addAtom(b.create({isotope:"F",wallet:t,value:1,metaType:"walletBundle",metaId:t.bundle})),this.addAtom(b.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 mt("Molecule::burnToken() - Amount to burn must be positive!");if(this.sourceWallet.balance-e<0)throw new fe;const n=new S({bundle:"0000000000000000000000000000000000000000000000000000000000000000",token:this.sourceWallet.token});return this.addAtom(b.create({isotope:"V",wallet:this.sourceWallet,value:-this.sourceWallet.balance})),this.addAtom(b.create({isotope:"V",wallet:n,value:e,metaType:"walletBundle",metaId:n.bundle})),this.addAtom(b.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 mt("Molecule::replenishToken() - Amount to replenish must be positive!");if(t.length){t=S.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(b.create({isotope:"V",wallet:this.sourceWallet,value:Number(this.sourceWallet.balance)})),this.addAtom(b.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 fe;return this.addAtom(b.create({isotope:"V",wallet:this.sourceWallet,value:-this.sourceWallet.balance})),this.addAtom(b.create({isotope:"V",wallet:e,value:t,metaType:"walletBundle",metaId:e.bundle})),this.addAtom(b.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 fe;return this.addAtom(b.create({isotope:"V",wallet:this.sourceWallet,value:-this.sourceWallet.balance})),e.forEach((s,r)=>{this.addAtom(b.create({isotope:"V",wallet:s,value:t[r],metaType:"walletBundle",metaId:s.bundle}))}),this.addAtom(b.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 fe;const n=S.create({secret:this.secret,bundle:this.bundle,token:this.sourceWallet.token,batchId:this.sourceWallet.batchId});return n.tradeRates=t,this.addAtom(b.create({isotope:"V",wallet:this.sourceWallet,value:-this.sourceWallet.balance})),this.addAtom(b.create({isotope:"B",wallet:n,value:e,metaType:"walletBundle",metaId:this.sourceWallet.bundle})),this.addAtom(b.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 fe;const s=new P;t&&s.setSigningWallet(t),this.addAtom(b.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 b({isotope:"V",token:this.sourceWallet.token,value:i,batchId:this.sourceWallet.batchId?Me({}):null,metaType:"walletBundle",metaId:r}));return this.addAtom(b.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 P(n);return s.setMetaWallet(e),this.addAtom(b.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 o of n)r.push(o instanceof Be?o:Be.toObject(o));const i=new P({rule:JSON.stringify(r)});return i.addPolicy(s),this.addAtom(b.create({isotope:"R",wallet:this.sourceWallet,metaType:e,metaId:t,meta:i})),this.addContinuIdAtom(),this}initWalletCreation(e,t=null){t||(t=new P),t.setMetaWallet(e);const n=b.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 P().setShadowWalletClaim(!0);return this.initWalletCreation(e,t)}initIdentifierCreation({type:e,contact:t,code:n}){const s={code:n,hash:ce(t.trim(),"Molecule::initIdentifierCreation")};return this.addAtom(b.create({isotope:"C",wallet:this.sourceWallet,metaType:"identifier",metaId:e,meta:new P(s)})),this.addContinuIdAtom(),this}initMeta({meta:e,metaType:t,metaId:n,policy:s}){return this.addAtom(b.create({isotope:"M",wallet:this.sourceWallet,metaType:t,metaId:n,meta:new P(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(b.create({isotope:"P",wallet:this.sourceWallet,metaType:"walletBundle",metaId:this.bundle,meta:new P({peerHost:e})})),this.addContinuIdAtom(),this}initAppendRequest({metaType:e,metaId:t,action:n,meta:s={}}){return this.addAtom(b.create({isotope:"A",wallet:this.sourceWallet,metaType:e,metaId:t,meta:new P({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(b.create({isotope:"T",wallet:this.sourceWallet,value:t,metaType:n,metaId:s,meta:new P(r),batchId:i})),this.addContinuIdAtom(),this}initAuthorization({meta:e}){return this.addAtom(b.create({isotope:"U",wallet:this.sourceWallet,meta:new P(e)})),this.addContinuIdAtom(),this}sign({bundle:e=null,anonymous:t=!1,compressed:n=!0}={}){if(this.atoms.length===0||this.atoms.filter(p=>!(p instanceof b)).length!==0)throw new se;!t&&!this.bundle&&(this.bundle=e||ce(this.secret,"Molecule::sign")),this.molecularHash=b.hashAtoms({atoms:this.atoms});const s=this.atoms[0];let r=s.position;const i=C.get(s.aggregatedMeta(),"signingWallet");if(i&&(r=C.get(JSON.parse(i),"position")),!r)throw new dt("Signing wallet must have a position!");const o=S.generateKey({secret:this.secret,token:s.token,position:s.position}),c=Ie(o,128),u=this.normalizedHash();let l="";for(const p in c){let w=c[p];for(let v=0,O=8-u[p];v<O;v++)w=new D("SHAKE256","TEXT").update(w).getHash("HEX",{outputLen:512});l+=w}n&&(l=Ot(l));const d=Ie(l,Math.ceil(l.length/this.atoms.length));let f=null;for(let p=0,w=d.length;p<w;p++)this.atoms[p].otsFragment=d[p],f=this.atoms[p].position;return f}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 z({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((o,c)=>{try{return b.fromJSON(o)}catch(u){throw new Error(`Failed to reconstruct atom ${c}: ${u.message}`)}})),n&&(r.sourceWallet&&(i.sourceWallet=new S({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 S({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 z.normalize(z.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 S({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()}}}class q extends I{constructor(e="Secret storage operation failed",t=null,n=null){super(e,t,n),this.name="SecretStorageException"}static notFound(e){return new q(`Secret not found for bundle: ${e}`)}static decryptionFailed(e="Invalid passphrase or corrupted ciphertext"){return new q(`Failed to decrypt master secret: ${e}`)}static unavailable(e,t="Hardware or API not accessible"){return new q(`Secret storage provider '${e}' is unavailable: ${t}`)}}const gt=new TextEncoder;function ie(a){if(a instanceof Uint8Array)a.fill(0);else if(Array.isArray(a))for(let e=0;e<a.length;e++)a[e]=0}async function yn(a,e){try{return await e(a)}finally{ie(a)}}async function mn(a,e){const t=gt.encode(a);try{return await e(a)}finally{ie(t)}}function or(a,e){const t=typeof a=="string"?gt.encode(a):a,n=typeof e=="string"?gt.encode(e):e;let s=t.length===n.length?0:1;const r=Math.min(t.length,n.length);for(let i=0;i<r;i++)s|=(t[i]??0)^(n[i]??0);return typeof a=="string"&&ie(t),typeof e=="string"&&ie(n),s===0}class Ye{constructor(){this.providerType="memory",this.secrets=new Map}isHardwareBacked(){return!1}async isAvailable(){return!0}async storeSecret(e,t,n={}){if(!e)throw new q("Bundle hash cannot be empty");if(!t)throw new q("Secret cannot be empty");const s={bundleHash:e,label:n.label,createdAt:Date.now(),hardwareBacked:!1,providerType:this.providerType};this.secrets.set(e,{secret:t,metadata:s})}async retrieveSecret(e){const t=this.secrets.get(e);return t?t.secret:null}async deleteSecret(e){return this.secrets.delete(e)}async hasSecret(e){return this.secrets.has(e)}async listSecrets(){return Array.from(this.secrets.values()).map(e=>({...e.metadata}))}async withSecret(e,t){const n=this.secrets.get(e);if(!n)throw q.notFound(e);return mn(n.secret,t)}clear(){this.secrets.clear()}}const bt=10**18;class ae{static val(e){return Math.abs(e*bt)<1?0:e}static cmp(e,t,n=!1){const s=ae.val(e)*bt,r=ae.val(t)*bt;return Math.abs(s-r)<1?0:s>r?1:-1}static equal(e,t){return ae.cmp(e,t)===0}}class ne extends I{constructor(e="GraphQL did not provide a valid response.",t=null,n=null){super(e,t,n),this.name="InvalidResponseException"}}class We extends I{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 ne;if(C.has(this.$__response,this.errorKey)){const s=C.get(this.$__response,this.errorKey);throw String(s).includes("Unauthenticated")?new We:new ne}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 We:new ne(`GraphQL Error: ${s}`)}this.init()}init(){}data(){if(!this.dataKey)return this.response();if(!this.response().data)throw new ne("Response has no data field");if(!C.has(this.response(),this.dataKey))throw new ne(`Missing expected field: ${this.dataKey}`);return C.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 gn 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 S({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 bn extends K{constructor(e,t){super(e,t),this.$__query=T.gql`query ($bundle: String!) {
|
|
1
|
+
var KnishIOClient=(function(e,t,n,r,i){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var a=Object.create,o=Object.defineProperty,s=Object.getOwnPropertyDescriptor,c=Object.getOwnPropertyNames,l=Object.getPrototypeOf,u=Object.prototype.hasOwnProperty,d=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=c(t),a=0,l=i.length,d;a<l;a++)d=i[a],!u.call(e,d)&&d!==n&&o(e,d,{get:(e=>t[e]).bind(null,d),enumerable:!(r=s(t,d))||r.enumerable});return e};t=((e,t,n)=>(n=e==null?{}:a(l(e)),d(t||!e||!e.__esModule||!u.call(e,`default`)?o(n,`default`,{value:e,enumerable:!0}):n,e)))(t,1),typeof self>`u`&&(global.self=global);var f=class{static toHex(e,t){let n=(e,t)=>{let n=t?[`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 n[Math.floor(e/16)]+n[e%16]},r=Object.assign({grouping:0,rowlength:0,uppercase:!1},t||{}),i=``,a=0,o=0;for(let t=0;t<e.length&&(i+=n(e[t],r.uppercase),t!==e.length-1);++t)r.grouping>0&&++a===r.grouping&&(a=0,r.rowlength>0&&++o===r.rowlength?(o=0,i+=`
|
|
2
|
+
`):i+=` `);return i}static toUint8Array(e){let t=e.toLowerCase().replace(/\s/g,``);t.length%2==1&&(t=`0${t}`);let n=new Uint8Array(Math.floor(t.length/2)),r=-1;for(let e=0;e<t.length;++e){let i=t[e],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`);r===-1?r=16*a:(n[Math.floor(e/2)]=r+a,r=-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,(e,t)=>t.toUpperCase())}),String.prototype.toSnakeCase||(String.prototype.toSnakeCase=function(){return this.replace(/[A-Z]/g,e=>`_${e.toLowerCase()}`)});function p(e,t){let n=Math.ceil(e.length/t),r=[];for(let i=0,a=0;i<n;++i,a+=t)r[i]=e.substr(a,t);return r}function m(e=256,t=`abcdef0123456789`){let n=new Uint8Array(e);crypto.getRandomValues(n);let r=``;for(let i=0;i<e;i++)r+=t.charAt(n[i]%t.length);return r}function h(e,t,n,r,i){if(r||=`0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz~\`!@#$%^&*()-_=+[{]}\\|;:'",<.>/?¿¡`,i||=r,t>r.length||n>i.length)return console.warn(`Strings::charsetBaseConvert() - Can't convert`,e,`to base`,n,`greater than symbol table length. src-table:`,r.length,`dest-table:`,i.length),!1;let a=BigInt(0);for(let n=0;n<e.length;n++)a=a*BigInt(t)+BigInt(r.indexOf(e.charAt(n)));let o=``;for(;a>0;){let e=a%BigInt(n);o=i.charAt(Number(e))+o,a/=BigInt(n)}return o||`0`}function g(e){return f.toHex(e,{})}function _(e){return f.toUint8Array(e)}function v(e){let t=_(e);if(typeof Buffer<`u`)return Buffer.from(t).toString(`base64`);let n=``,r=32768;for(let e=0;e<t.length;e+=r)n+=String.fromCharCode(...t.subarray(e,e+r));return btoa(n)}function y(e){if(typeof Buffer<`u`)return g(new Uint8Array(Buffer.from(e,`base64`)));let t=atob(e),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return g(n)}function b(e){return/^[A-F0-9]+$/i.test(e)}function ee(e){return(typeof e==`number`||typeof e==`string`&&e.trim()!==``)&&!isNaN(e)}var x=class{static normalizeMeta(e){if(Array.isArray(e))return e.map(e=>({key:e.key,value:e.value==null?null:String(e.value)}));let t=[];for(let n in e)if(Object.prototype.hasOwnProperty.call(e,n)){let r=e[n];t.push({key:n,value:r==null?null:String(r)})}return t}static aggregateMeta(e){let t={};if(Array.isArray(e))for(let n of e)t[n.key]=n.value;else t=e;return t}};function te(e,t){let n=[];for(let r=0;r<e.length;r+=t)n.push(e.slice(r,r+t));return n}function ne(e,t){let n,r,i,a=[Array,Date,Number,String,Boolean],o=Object.prototype.toString;for(t||=[],n=0;n<t.length;n+=2)e===t[n]&&(r=t[n+1]);if(!r&&e&&typeof e==`object`){for(r={},n=0;n<a.length;n++)o.call(e)===o.call(i=new a[n](e))&&(r=n?i:[]);for(n in t.push(e,r),e)t.hasOwnProperty.call(e,n)&&(r[n]=ne(e[n],t))}return r||e}function re(...e){return[].concat(...e.map((t,n)=>{let r=e.slice(0);r.splice(n,1);let i=[...new Set([].concat(...r))];return t.filter(e=>!i.includes(e))}))}function S(...e){return e.reduce((e,t)=>e.filter(e=>t.includes(e)))}var ie=class e{constructor(t={},n={}){this.policy=e.normalizePolicy(t),this.fillDefault(n)}static normalizePolicy(e={}){let t={};for(let[n,r]of Object.entries(e))if(r!==null&&[`read`,`write`].includes(n)){t[n]={};for(let[e,i]of Object.entries(r))t[n][e]=i}return t}fillDefault(e={}){let t=Array.from(this.policy).filter(e=>e.action===`read`),n=Array.from(this.policy).filter(e=>e.action===`write`);for(let[r,i]of Object.entries({read:t,write:n})){let t=i.map(e=>e.key);this.policy[r]||(this.policy[r]={});for(let n of re(e,t))this.policy[r][n]||(this.policy[r][n]=r===`write`&&![`characters`,`pubkey`].includes(n)?[`self`]:[`all`])}}get(){return this.policy}toJson(){return JSON.stringify(this.get())}},C=class{constructor(e=[]){this.meta=x.normalizeMeta(e)}merge(e){return this.meta=Array.from(new Set([...this.meta,...x.normalizeMeta(e)])),this}addContext(e=null){return this}setAtomWallet(e){let 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){let t=new ie(e,Object.keys(this.meta));return this.merge({policy:t.toJson()}),this}get(){return this.meta}},w=class 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}.\nStack:\n${this.stack}`}},T=class extends w{constructor(e=`The molecule does not contain atoms`,t=null,n=null){super(e,t,n),this.name=`AtomsMissingException`}},ae=class e{static create(e){let t={};for(let n of Object.keys(e))Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return new this(t)}static structure(t){switch(Object.prototype.toString.call(t)){case`[object Array]`:{let n=[];for(let r in t)n.push(e.isStructure(t[r])?e.structure(t[r]):t[r]);return n}case`[object Object]`:{let n=[],r=Object.keys(t).sort((e,t)=>e===t?0:e<t?-1:1);for(let i of r)if(Object.prototype.hasOwnProperty.call(t,i)){let r={};r[i]=e.isStructure(t[i])?e.structure(t[i]):t[i],n.push(r)}if(n.length>0)return n;break}}return t}static isStructure(e){return[`[object Object]`,`[object Array]`].includes(Object.prototype.toString.call(e))}view(){return e.structure(this)}},oe={4:class extends ae{constructor({position:e=null,walletAddress:t=null,isotope:n=null,token:r=null,value:i=null,batchId:a=null,metaType:o=null,metaId:s=null,meta:c=null,index:l=null,createdAt:u=null,version:d=null}){super(),this.position=e,this.walletAddress=t,this.isotope=n,this.token=r,this.value=i,this.batchId=a,this.metaType=o,this.metaId=s,this.meta=c,this.index=l,this.createdAt=u,this.version=d}}},E=class e{constructor({position:e=null,walletAddress:t=null,isotope:n=null,token:r=null,value:i=null,batchId:a=null,metaType:o=null,metaId:s=null,meta:c=null,otsFragment:l=null,index:u=null,version:d=null}){this.position=e,this.walletAddress=t,this.isotope=n,this.token=r,this.value=i===null?null:String(i),this.batchId=a,this.metaType=o,this.metaId=s,this.meta=c?x.normalizeMeta(c):[],this.index=u,this.otsFragment=l,this.createdAt=String(+new Date),d!==null&&Object.prototype.hasOwnProperty.call(oe,d)&&(this.version=String(d))}static getHashableProps(){return[`position`,`walletAddress`,`isotope`,`token`,`value`,`batchId`,`metaType`,`metaId`,`meta`,`createdAt`]}static getUnclaimedProps(){return[`otsFragment`]}static create({isotope:t,wallet:n=null,value:r=null,metaType:i=null,metaId:a=null,meta:o=null,batchId:s=null}){return o||=new C,o instanceof C||(o=new C(o)),n&&(o.setAtomWallet(n),s||=n.batchId),new e({position:n?n.position:null,walletAddress:n?n.address:null,isotope:t,token:n?n.token:null,value:r,batchId:s,metaType:i,metaId:a,meta:o.get()})}static jsonToObject(t){let n=Object.assign(new e({}),JSON.parse(t)),r=Object.keys(new e({}));for(let e in n)Object.prototype.hasOwnProperty.call(n,e)&&!r.includes(e)&&delete n[e];return n}toJSON(e={}){let{includeOtsFragments:t=!0,validateFields:n=!1}=e;try{if(n){for(let e of[`position`,`walletAddress`,`isotope`,`token`])if(!this[e])throw Error(`Required field '${e}' is missing or empty`)}let e={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&&(e.otsFragment=this.otsFragment),e}catch(e){throw Error(`Atom serialization failed: ${e.message}`)}}static fromJSON(t,n={}){let{validateStructure:r=!0,strictMode:i=!1}=n;try{let n=typeof t==`string`?JSON.parse(t):t;if(i||r){for(let e of[`position`,`walletAddress`,`isotope`,`token`])if(!n[e])throw Error(`Required field '${e}' is missing or empty`)}let a=new e({position:n.position,walletAddress:n.walletAddress,isotope:n.isotope,token:n.token,value:n.value,batchId:n.batchId,metaType:n.metaType,metaId:n.metaId,meta:n.meta,index:n.index,version:n.version});return n.otsFragment&&(a.otsFragment=n.otsFragment),n.createdAt&&(a.createdAt=n.createdAt),a}catch(e){throw Error(`Atom deserialization failed: ${e.message}`)}}static hashAtoms({atoms:n,output:r=`base17`}){let i=new t.default(`SHAKE256`,`TEXT`),a=e.sortAtoms(n);if(a.length===0)throw new T;if(a.map(t=>{if(!(t instanceof e))throw new T;return t}),a.every(e=>e.version&&Object.prototype.hasOwnProperty.call(oe,e.version)))i.update(JSON.stringify(a.map(e=>oe[e.version].create(e).view())));else{let e=String(n.length),t=[];for(let n of a)t.push(e),t=t.concat(n.getHashableValues());for(let e of t)i.update(e)}switch(r){case`hex`:return i.getHash(`HEX`,{outputLen:256});case`array`:return i.getHash(`ARRAYBUFFER`,{outputLen:256});default:return h(i.getHash(`HEX`,{outputLen:256}),16,17,`0123456789abcdef`,`0123456789abcdefg`).padStart(64,`0`)}}static jsonSerialization(t,n){if(!e.getUnclaimedProps().includes(t))return n}static sortAtoms(e){let t=[...e];return t.sort((e,t)=>e.index<t.index?-1:1),t}aggregatedMeta(){return x.aggregateMeta(this.meta)}getHashableValues(){let t=[];for(let n of e.getHashableProps()){let e=this[n];if(e!==null||[`position`,`walletAddress`].includes(n)){if(n===`meta`)for(let n of e)n.value!==void 0&&n.value!==null&&(t.push(String(n.key)),t.push(String(n.value)));else t.push(e===null?``:String(e))}}return t}};function se(e=null,n=2048){if(e){let r=new t.default(`SHAKE256`,`TEXT`);return r.update(e),r.getHash(`HEX`,{outputLen:n*4})}return m(n)}function D(e,n=null){let r=new t.default(`SHAKE256`,`TEXT`);return r.update(e),r.getHash(`HEX`,{outputLen:256})}function ce(e,n){let r=new t.default(`SHAKE256`,`TEXT`);return r.update(e),r.getHash(`HEX`,{outputLen:n})}function le({molecularHash:e=null,index:t=null}){return e!==null&&t!==null?D(String(e)+String(t),`generateBatchId`):m(64)}var ue=class e{constructor(e,t,n){this.id=e,this.name=t,this.metas=n||{}}static createFromGraphQL(t){let n=t.metas||{};return n.length&&(n=JSON.parse(n),n||={}),new e(t.id,t.name,n)}static createFromDB(t){return new e(t[0],t[1],t.length>2?t[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)}}},de=class extends w{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`}},fe=BigInt(2**32-1),pe=BigInt(32);function me(e,t=!1){return t?{h:Number(e&fe),l:Number(e>>pe&fe)}:{h:Number(e>>pe&fe)|0,l:Number(e&fe)|0}}function he(e,t=!1){let n=e.length,r=new Uint32Array(n),i=new Uint32Array(n);for(let a=0;a<n;a++){let{h:n,l:o}=me(e[a],t);[r[a],i[a]]=[n,o]}return[r,i]}function ge(e){return e instanceof Uint8Array||ArrayBuffer.isView(e)&&e.constructor.name===`Uint8Array`&&`BYTES_PER_ELEMENT`in e&&e.BYTES_PER_ELEMENT===1}var _e=e=>e?`"${e}" `:``;function O(e,t=``){if(typeof e!=`number`)throw TypeError(_e(t)+`expected number, got `+typeof e);if(!Number.isSafeInteger(e)||e<0)throw RangeError(_e(t)+`expected integer >= 0, got `+e);return e}function ve(e,t=``){if(typeof e!=`boolean`)throw TypeError(_e(t)+`expected boolean, got type=`+typeof e);return e}function k(e,t,n=``){if(ge(e)&&(t===void 0||e.length===t))return e;t!==void 0&&O(t,`length`);let r=ge(e),i=t===void 0?``:` of length ${t}`,a=r?`length=${e.length}`:`type=${typeof e}`,o=_e(n)+`expected Uint8Array`+i+`, got `+a;throw r?RangeError(o):TypeError(o)}var ye=(e,t)=>{if(typeof e!=`object`||!e||Array.isArray(e))throw TypeError((t===`object`?``:`"${t}" `)+`expected object, got type=`+typeof e)},be=(e,t)=>{ye(e,t);let n=Object.getPrototypeOf(e);if(n!==Object.prototype&&n!==null)throw TypeError(`"${t}" expected plain object`);if(Object.hasOwn(e,`__proto__`))throw TypeError(`"${t}.__proto__" is not allowed`)};function xe(e,t=!0){if(e.destroyed)throw Error(`hash was destroyed`);if(t&&e.finished)throw Error(`digest() was already called`)}function Se(e,t){k(e,void 0,`output`);let n=t.outputLen;if(!(e.length>=n))throw RangeError(`"output" expected length >= `+n)}function Ce(e){return new Uint32Array(e.buffer,e.byteOffset,Math.floor(e.byteLength/4))}function we(...e){for(let t=0;t<e.length;t++)e[t].fill(0)}var Te=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Ee(e){return e<<24&4278190080|e<<8&16711680|e>>>8&65280|e>>>24&255}function De(e){for(let t=0;t<e.length;t++)e[t]=Ee(e[t]);return e}var Oe=Te?e=>e:De;function ke(e,t,n=`opts`){return be(e,`defaults`),t!==void 0&&be(t,n),Object.assign(Object.create(null),e,t)}function Ae(e,t={}){if(typeof e!=`function`)throw TypeError(`"hashCons" expected function, got type=`+typeof e);t=ke({},t,`info`);let n=(t,n)=>e(n).update(t).digest(),r=e(void 0);return n.outputLen=r.outputLen,n.blockLen=r.blockLen,n.canXOF=r.canXOF,n.create=t=>e(t),Object.assign(n,t),Object.freeze(n)}function je(e=32){O(e,`bytesLength`);let t=typeof globalThis==`object`?globalThis.crypto:null;if(typeof t?.getRandomValues!=`function`)throw Error(`crypto.getRandomValues must be defined`);if(e>65536)throw RangeError(`"bytesLength" expected <= 65536, got ${e}`);return t.getRandomValues(new Uint8Array(e))}var Me=e=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,e])}),Ne=BigInt(0),Pe=BigInt(1),Fe=BigInt(2),Ie=BigInt(7),Le=BigInt(256),Re=BigInt(113),ze=[],Be=[],Ve=[];for(let e=0,t=Pe,n=1,r=0;e<24;e++){[n,r]=[r,(2*n+3*r)%5],ze.push(2*(5*r+n)),Be.push((e+1)*(e+2)/2%64);let i=Ne;for(let e=0;e<7;e++)t=(t<<Pe^(t>>Ie)*Re)%Le,t&Fe&&(i^=Pe<<(Pe<<BigInt(e))-Pe);Ve.push(i)}var He=he(Ve,!0),Ue=He[0],We=He[1],Ge=(e,t,n)=>e<<n|t>>>32-n,Ke=(e,t,n)=>t<<n|e>>>32-n,qe=(e,t,n)=>t<<n-32|e>>>64-n,Je=(e,t,n)=>e<<n-32|t>>>64-n,Ye=(e,t,n)=>n>32?qe(e,t,n):Ge(e,t,n),Xe=(e,t,n)=>n>32?Je(e,t,n):Ke(e,t,n),Ze=new Uint32Array(10);function Qe(e,t=24){if(!(e instanceof Uint32Array))throw TypeError(`"s" expected Uint32Array(50), got type=`+typeof e);if(e.length!==50)throw RangeError(`"s" expected Uint32Array(50), got length=`+e.length);if(O(t,`rounds`),t<1||t>24)throw Error(`"rounds" expected integer 1..24`);for(let n=24-t;n<24;n++){for(let t=0;t<10;t++)Ze[t]=e[t]^e[t+10]^e[t+20]^e[t+30]^e[t+40];for(let t=0;t<10;t+=2){let n=(t+8)%10,r=(t+2)%10,i=Ze[r],a=Ze[r+1],o=Ye(i,a,1)^Ze[n],s=Xe(i,a,1)^Ze[n+1];for(let n=0;n<50;n+=10)e[t+n]^=o,e[t+n+1]^=s}let t=e[2],r=e[3];for(let n=0;n<24;n++){let i=Be[n],a=Ye(t,r,i),o=Xe(t,r,i),s=ze[n];t=e[s],r=e[s+1],e[s]=a,e[s+1]=o}for(let t=0;t<50;t+=10){let n=e[t],r=e[t+1],i=e[t+2],a=e[t+3];e[t]^=~e[t+2]&e[t+4],e[t+1]^=~e[t+3]&e[t+5],e[t+2]^=~e[t+4]&e[t+6],e[t+3]^=~e[t+5]&e[t+7],e[t+4]^=~e[t+6]&e[t+8],e[t+5]^=~e[t+7]&e[t+9],e[t+6]^=~e[t+8]&n,e[t+7]^=~e[t+9]&r,e[t+8]^=~n&i,e[t+9]^=~r&a}e[0]^=Ue[n],e[1]^=We[n]}we(Ze)}var $e=class e{state;pos=0;posOut=0;finished=!1;state32;destroyed=!1;blockLen;suffix;outputLen;canXOF;enableXOF=!1;rounds;constructor(e,t,n,r=!1,i=24){if(O(e,`blockLen`),O(t,`suffix`),O(i,`rounds`),ve(r,`enableXOF`),this.blockLen=e,this.suffix=t,this.outputLen=n,this.enableXOF=r,this.canXOF=r,this.rounds=i,O(n,`outputLen`),!(0<e&&e<200))throw Error(`"blockLen" must be 1..199`);this.state=new Uint8Array(200),this.state32=Ce(this.state)}clone(){return this._cloneInto()}keccak(){Oe(this.state32),Qe(this.state32,this.rounds),Oe(this.state32),this.posOut=0,this.pos=0}update(e){xe(this),k(e);let{blockLen:t,state:n,state32:r}=this,i=e.length,a=t%4==0&&e.byteOffset%4==0,o=t/4,s=a&&i>=t?Ce(e):void 0;for(let a=0;a<i;){if(s!==void 0&&this.pos===0&&a%4==0&&i-a>=t){for(let e=0,t=a/4;e<o;e++)r[e]^=s[t+e];a+=t,this.pos=t,this.keccak();continue}let c=Math.min(t-this.pos,i-a);for(let t=0;t<c;t++)n[this.pos++]^=e[a++];this.pos===t&&this.keccak()}return this}finish(){if(this.finished)return;this.finished=!0;let{state:e,suffix:t,pos:n,blockLen:r}=this;e[n]^=t,t&128&&n===r-1&&this.keccak(),e[r-1]^=128,this.keccak()}writeInto(e){xe(this,!1),k(e),this.finish();let t=this.state,{blockLen:n}=this;for(let r=0,i=e.length;r<i;){this.posOut>=n&&this.keccak();let a=Math.min(n-this.posOut,i-r);e.set(t.subarray(this.posOut,this.posOut+a),r),this.posOut+=a,r+=a}return e}xofInto(e){if(!this.enableXOF)throw Error(`XOF is not enabled`);return this.writeInto(e)}xof(e){return O(e),this.xofInto(new Uint8Array(e))}digestInto(e){if(Se(e,this),this.finished)throw Error(`digest() was already called`);this.writeInto(e.length===this.outputLen?e:e.subarray(0,this.outputLen)),this.destroy()}digest(){let e=new Uint8Array(this.outputLen);return this.digestInto(e),e}destroy(){this.destroyed=!0,we(this.state)}_cloneInto(t){let{blockLen:n,suffix:r,outputLen:i,rounds:a,enableXOF:o}=this;return t||=new e(n,r,i,o,a),t.blockLen=n,t.state32.set(this.state32),t.pos=this.pos,t.posOut=this.posOut,t.finished=this.finished,t.rounds=a,t.suffix=r,t.outputLen=i,t.enableXOF=o,t.canXOF=this.canXOF,t.destroyed=this.destroyed,t}},et=(e,t,n,r={})=>Ae(()=>new $e(t,e,n),r),tt=et(6,136,32,Me(8)),nt=et(6,72,64,Me(10)),rt=(e,t,n,r={})=>Ae((r={})=>(r=ke({},r),new $e(t,e,r.dkLen===void 0?n:r.dkLen,!0)),r),it=rt(31,168,16,Me(11)),at=rt(31,136,32,Me(12));function ot(e,t=`object`){if(typeof e!=`object`||!e||Array.isArray(e))throw TypeError(t===`object`?`expected valid options object`:`"${t}" expected object, got type=${typeof e}`);return e}function st(e,t={},n={},r=`object`){ot(e,r),ot(t,`fields`),ot(n,`optFields`);function i(t,n,i){let a=r===`object`?`param "${String(t)}"`:`"${r}.${String(t)}"`,o=e[t];if(!Object.hasOwn(e,t)&&(i?o!==void 0:n!==`function`))throw TypeError(`${a} is invalid: expected own property`);if(i&&o===void 0)return;let s=typeof o;if(s!==n||o===null)throw TypeError(`${a} is invalid: expected ${n}, got ${s}`)}let a=(e,t)=>Object.entries(e).forEach(([e,n])=>i(e,n,t));a(t,!1),a(n,!0)}function ct(e,t=`n`){if(typeof e!=`number`)throw TypeError(`wrong u32 integer "${t}": expected number, got type=${typeof e}`);if(!Number.isSafeInteger(e)||e<0||e>4294967295)throw RangeError(`wrong u32 integer "${t}": expected 0..4294967295, got ${e}`);return e}function lt(e){return ct(e,`x`),!(e&e-1)&&e!==0}function ut(e,t){if(ct(e),typeof t!=`number`)throw TypeError(`"bits" expected number, got type=`+typeof t);if(!Number.isSafeInteger(t)||t<0||t>32)throw Error(`expected integer 0 <= bits <= 32, got ${t}`);let n=0;for(let r=0;r<t;r++,e>>>=1)n=n<<1|e&1;return n>>>0}function dt(e){return ct(e),31-Math.clz32(e)}function ft(e){if(!e||typeof e!=`object`||typeof e.length!=`number`)throw TypeError(`"values" expected array-like, got type=`+typeof e);let t=e.length;if(!lt(t))throw Error(`expected positive power-of-two length, got `+t);let n=dt(t);for(let r=0;r<t;r++){let t=ut(r,n);if(r<t){let n=e[r];e[r]=e[t],e[t]=n}}return e}var pt=(e,t)=>{st(t,{N:`number`,roots:`object`,dit:`boolean`},{invertButterflies:`boolean`,skipStages:`number`,brp:`boolean`},`coreOpts`);let{N:n,roots:r,dit:i,invertButterflies:a=!1,skipStages:o=0,brp:s=!0}=t;ct(n,`coreOpts.N`);let c=dt(n);if(!lt(n))throw Error(`FFT: Polynomial size should be power of two`);ct(o,`coreOpts.skipStages`);let l=c===0?0:c-1;if(o>l)throw Error(`FFT: wrong skipStages: expected 0 <= skipStages <= ${l}`);if(r.length!==n)throw Error(`FFT: wrong roots length: expected ${n}, got ${r.length}`);let u=i!==a;return t=>{if(t.length!==n)throw Error(`FFT: wrong Polynomial length`);i&&s&&ft(t);for(let s=0,l=1;s<c-o;s++){let d=i?s+1+o:c-s,f=1<<d,p=f>>1,m=n>>d;for(let o=0;o<n;o+=f)for(let s=0,c=l++;s<p;s++){let l=a?i?n-c:c:s*m,d=o+s,f=o+s+p,h=r[l],g=t[f],_=t[d];if(u){let n=e.mul(g,h);t[d]=e.add(_,n),t[f]=e.sub(_,n)}else a?(t[d]=e.add(g,_),t[f]=e.mul(e.sub(g,_),h)):(t[d]=e.add(_,g),t[f]=e.mul(e.sub(_,g),h))}}return!i&&s&&ft(t),t}},A=k,mt=je;function ht(e,t,n=()=>{}){if(!Array.isArray(e))throw TypeError(`"${t}" expected array, got type=${typeof e}`);for(let r=0;r<e.length;r++)n(e[r],`${t}[${r}]`);return e}function gt(e,t){if(e=k(e),t=k(t),e.length!==t.length)return!1;let n=0;for(let r=0;r<e.length;r++)n|=e[r]^t[r];return n===0}function _t(e){return new Uint8Array(k(e))}function vt(e,...t){let n=e=>typeof e==`number`?e:e.bytesLen,r=t.reduce((e,t)=>e+n(t),0);return{bytesLen:r,encode:i=>{let a=new Uint8Array(r);for(let r=0,o=0;r<t.length;r++){let s=t[r],c=n(s),l=typeof s==`number`?i[r]:s.encode(i[r]);k(l,c,e),a.set(l,o),typeof s!=`number`&&l.fill(0),o+=c}return a},decode:i=>{k(i,r,e);let a=[];for(let e of t){let t=n(e),r=i.subarray(0,t);a.push(typeof e==`number`?r:e.decode(r)),i=i.subarray(t)}return a}}}function yt(e,t){let n=e,r=t*n.bytesLen;return{bytesLen:r,encode:e=>{let i=ht(e,`u`);if(i.length!==t)throw RangeError(`vecCoder.encode: wrong length=${i.length}. Expected: ${t}`);let a=new Uint8Array(r);for(let e=0,t=0;e<i.length;e++){let r=n.encode(i[e]);a.set(r,t),r.fill(0),t+=r.length}return a},decode:e=>{k(e,r);let t=[];for(let r=0;r<e.length;r+=n.bytesLen)t.push(n.decode(e.subarray(r,r+n.bytesLen)));return t}}}function j(...e){for(let t of e)if(Array.isArray(t))for(let e of t)e.fill(0);else t.fill(0)}function bt(e){if(O(e,`bits`),e>32)throw RangeError(`"bits" expected <= 32, got `+e);return e===32?4294967295:~(-1<<e)>>>0}var xt=e=>{let{newPoly:t,N:n,Q:r,F:i,ROOT_OF_UNITY:a,brvBits:o,isKyber:s}=e,c=(e,t=r)=>{let n=e%t|0;return(n>=0?n|0:t+n|0)|0},l=(e,t=r)=>{let n=c(e,t)|0;return(n>t>>1?n-t|0:n)|0};function u(){let e=t(n);for(let t=0;t<n;t++){let n=ut(t,o),i=BigInt(a)**BigInt(n)%BigInt(r);e[t]=Number(i)|0}return e}let d=u(),f=e=>{throw Error(`not implemented`)},p=s?{add:(e,t)=>{let n=e+t|0;return n>=r?n-r|0:n},sub:(e,t)=>{let n=e-t|0;return n<0?n+r|0:n},mul:(e,t)=>c((e|0)*(t|0))|0,inv:f}:{add:(e,t)=>c((e|0)+(t|0))|0,sub:(e,t)=>c((e|0)-(t|0))|0,mul:(e,t)=>c((e|0)*(t|0))|0,inv:f},m={N:n,roots:d,invertButterflies:!0,skipStages:+!!s,brp:!1},h=pt(p,{dit:!1,...m}),g=pt(p,{dit:!0,...m}),_={encode:e=>h(e),decode:e=>{g(e);for(let t=0;t<e.length;t++)e[t]=c(i*e[t]);return e}};return{mod:c,smod:l,nttZetas:d,NTT:{encode:e=>_.encode(e),decode:e=>_.decode(e)},bitsCoder:(e,r)=>{for(let t=0,r=0;t<n;t++)r+=e,r>32&&bt(r),r%=8;let i=bt(e),a=n/8*e;return{bytesLen:a,encode:t=>{let n=t,o=new Uint8Array(a);for(let t=0,a=0,s=0,c=0;t<n.length;t++)for(a|=(r.encode(n[t])&i)<<s,s+=e;s>=8;s-=8,a>>=8)o[c++]=a&255;return o},decode:a=>{let o=t(n);for(let t=0,n=0,s=0,c=0;t<a.length;t++)for(n|=a[t]<<s,s+=8;s>=e;s-=e,n>>=e)o[c++]=r.decode(n&i);return o}}}}},St=(e=>(t,n)=>{n||=e.blockLen;let r=new Uint8Array(t.length+2);r.set(t);let i=t.length,a=new Uint8Array(n),o=e.create({}),s=0,c=0;return{stats:()=>({calls:s,xofs:c}),get:(t,n)=>(r[i+0]=t,r[i+1]=n,o.destroy(),o=e.create({}).update(r),s++,()=>(c++,o.xofInto(a))),clean:()=>{o.destroy(),j(a,r)}}})(it),M=256,N=3329,P=xt({N:M,Q:N,F:3303,ROOT_OF_UNITY:17,newPoly:e=>new Uint16Array(e),brvBits:7,isKyber:!0}),Ct=Object.freeze({512:Object.freeze({N:M,Q:N,K:2,ETA1:3,ETA2:2,du:10,dv:4,RBGstrength:128}),768:Object.freeze({N:M,Q:N,K:3,ETA1:2,ETA2:2,du:10,dv:4,RBGstrength:192}),1024:Object.freeze({N:M,Q:N,K:4,ETA1:2,ETA2:2,du:11,dv:5,RBGstrength:256})}),wt=e=>{if(e>=12)return{encode:e=>e,decode:e=>e>=N?e-N:e};let t=2**(e-1);return{encode:t=>((t<<e)+N/2)/N,decode:n=>n*N+t>>>e}},Tt=e=>P.bitsCoder(e,e===12?{encode:e=>e,decode:e=>e>=N?e-N:e}:{encode:e=>e,decode:e=>e}),Et=e=>e===12?Tt(12):P.bitsCoder(e,wt(e));function F(e,t){let n=e,r=t;for(let e=0;e<M;e++){let t=n[e]+r[e];n[e]=t>=N?t-N:t}}function Dt(e,t){let n=e,r=t;for(let e=0;e<M;e++){let t=n[e]-r[e];n[e]=t<0?t+N:t}}function Ot(e,t,n,r,i){return{c0:P.mod(P.mod(t*r)*i+e*n),c1:P.mod(e*r+t*n)}}function kt(e,t){let n=e,r=t;for(let e=0;e<M/2;e++){let t=P.nttZetas[64+(e>>1)];e&1&&(t=-t);let{c0:i,c1:a}=Ot(n[2*e+0],n[2*e+1],r[2*e+0],r[2*e+1],t);n[2*e+0]=i,n[2*e+1]=a}return n}function At(e){let t=e,n=new Uint16Array(M);for(let e=0;e<M;){let r=t();if(r.length%3)throw Error(`SampleNTT: unaligned block`);for(let t=0;e<M&&t+3<=r.length;t+=3){let i=(r[t+0]>>0|r[t+1]<<8)&4095,a=(r[t+1]>>4|r[t+2]<<4)&4095;i<N&&(n[e++]=i),e<M&&a<N&&(n[e++]=a)}}return n}var jt=(e,t)=>{let n=new Uint16Array(M),r=Ce(e);Oe(r);let i=0;for(let e=0,a=0,o=0,s=0;e<r.length;e++){let c=r[e];for(let e=0;e<32;e++)o+=c&1,c>>=1,i+=1,i===t?(s=o,o=0):i===2*t&&(n[a++]=P.mod(s-o),o=0,i=0)}if(Oe(r),i)throw Error(`sampleCBD: leftover bits: ${i}`);return n};function Mt(e,t,n,r){return jt(e(r*M/4,t,n),r)}var Nt=e=>{let{K:t,PRF:n,XOF:r,HASH512:i,ETA1:a,ETA2:o,du:s,dv:c}=e,l=Et(1),u=Et(c),d=Et(s),f=vt(`publicKey`,yt(Et(12),t),32),p=yt(Et(12),t),m=vt(`ciphertext`,yt(d,t),u),h=vt(`seed`,32,32),g=(e,r,i,s)=>{let c=[];for(let e=0;e<t;e++)c.push(P.NTT.encode(Mt(n,s,e,a)));let u=new Uint16Array(M),d=[];for(let i=0;i<t;i++){let a=Mt(n,s,t+i,o),l=new Uint16Array(M);for(let e=0;e<t;e++)F(l,kt(r(i,e),c[e]));F(a,P.NTT.decode(l)),d.push(a),F(u,kt(e[i],c[i])),j(l)}let f=Mt(n,s,2*t,o);F(f,P.NTT.decode(u));let p=l.decode(i);return F(p,f),j(e,c,u,f),m.encode([d,p])};return{secretCoder:p,lengths:{secretKey:p.bytesLen,publicKey:f.bytesLen,cipherText:m.bytesLen},keygen:e=>{A(e,32,`seed`);let o=new Uint8Array(33);o.set(e),o[32]=t;let s=i(o),[c,l]=h.decode(s),u=[],d=[];for(let e=0;e<t;e++)u.push(P.NTT.encode(Mt(n,l,e,a)));let m=r(c);for(let e=0;e<t;e++){let r=P.NTT.encode(Mt(n,l,t+e,a));for(let n=0;n<t;n++)F(r,kt(At(m.get(n,e)),u[n]));d.push(r)}m.clean();let g={publicKey:f.encode([d,c]),secretKey:p.encode(u)};return j(c,l,u,d,o,s),g},encrypt:(e,t,n)=>{let[i,a]=f.decode(e),o=r(a),s=g(i,(e,t)=>At(o.get(e,t)),t,n);return o.clean(),s},prepare:e=>{let[n,i]=f.decode(e),a=r(i),o=[];for(let e=0;e<t;e++)for(let n=0;n<t;n++)o.push(At(a.get(e,n)));return a.clean(),{encrypt:(e,r)=>g(n.map(e=>e.slice()),(e,n)=>o[e*t+n].slice(),e,r),clean:()=>j(n,o)}},decrypt:(e,n)=>{let[r,i]=m.decode(e),a=p.decode(n),o=new Uint16Array(M);for(let e=0;e<t;e++)F(o,kt(a[e],P.NTT.encode(r[e])));Dt(i,P.NTT.decode(o));let s=l.encode(i);return j(o,a,r,i),s}}};function Pt(e){let t=e,n=Nt(t),{HASH256:r,HASH512:i,KDF:a}=t,{secretCoder:o,lengths:s}=n,c=vt(`secretKey`,s.secretKey,s.publicKey,32,32),l=(e,n)=>{let r=e.subarray(0,384*t.K),i=o.encode(o.decode(_t(r))),a=gt(i,r);if(j(i),!a)throw Error(`ML-KEM.${n}: wrong publicKey modulus`)},u=Object.freeze({...s,seed:64,msg:32,msgRand:32,secretKey:c.bytesLen});return Object.freeze({info:Object.freeze({type:`ml-kem`}),lengths:u,keygen:e=>{let t=e===void 0,i=t?mt(64):e,a,o;try{A(i,64,`seed`);let e=n.keygen(i.subarray(0,32)),t=e.publicKey;return a=e.secretKey,o=r(t),{publicKey:t,secretKey:c.encode([a,t,o,i.subarray(32)])}}finally{a!==void 0&&j(a),o!==void 0&&j(o),t&&j(i)}},getPublicKey:e=>{let[t,n,r,i]=c.decode(e);return Uint8Array.from(n)},encapsulate:(e,t)=>{let a=t===void 0,o=a?mt(32):t,c;try{return A(e,s.publicKey,`publicKey`),A(o,32,`message`),l(e,`encapsulate`),c=i.create().update(o).update(r(e)).digest(),{cipherText:n.encrypt(e,o,c.subarray(32,64)),sharedSecret:c.subarray(0,32)}}finally{c!==void 0&&j(c.subarray(32)),a&&j(o)}},decapsulate:(e,t)=>{A(t,c.bytesLen,`secretKey`),A(e,s.cipherText,`cipherText`);let o=c.bytesLen-96,l=o+32;if(!gt(r(t.subarray(o/2,l)),t.subarray(l,l+32)))throw Error(`invalid secretKey: hash check failed`);let[u,d,f,p]=c.decode(t),m=n.decrypt(e,u),h=i.create().update(m).update(f).digest(),g=h.subarray(0,32),_=n.encrypt(d,m,h.subarray(32,64)),v=gt(e,_),y=a.create({dkLen:32}).update(p).update(e).digest();return j(m,_,h.subarray(32),v?y:g),v?g:y},prepare:e=>{A(e,s.publicKey,`publicKey`),l(e,`prepare`);let t=_t(e),o=r(t),u=n.prepare(t);return Object.freeze({publicKey:t,encapsulate:e=>{let t=e===void 0,n=t?mt(32):e,r;try{return A(n,32,`message`),r=i.create().update(n).update(o).digest(),{cipherText:u.encrypt(n,r.subarray(32,64)),sharedSecret:r.subarray(0,32)}}finally{r!==void 0&&j(r.subarray(32)),t&&j(n)}},decapsulate:(e,r)=>{A(r,c.bytesLen,`secretKey`),A(e,s.cipherText,`cipherText`);let[l,d,f,p]=c.decode(r);if(!gt(d,t)||!gt(f,o))throw Error(`ML-KEM.decapsulate: secretKey does not match prepared publicKey`);let m=n.decrypt(e,l),h=i.create().update(m).update(o).digest(),g=h.subarray(0,32),_=u.encrypt(m,h.subarray(32,64)),v=gt(e,_),y=a.create({dkLen:32}).update(p).update(e).digest();return j(m,_,h.subarray(32),v?y:g),v?g:y},clean:u.clean})}})}function Ft(e,t,n){return at.create({dkLen:e}).update(t).update(new Uint8Array([n])).digest()}var It={HASH256:tt,HASH512:nt,KDF:at,XOF:St,PRF:Ft},Lt=e=>Pt({...It,...e}),Rt=Lt(Ct[768]),zt={1024:{kem:Lt(Ct[1024]),pkBytes:1568,skBytes:3168,ctBytes:1568},768:{kem:Rt,pkBytes:1184,skBytes:2400,ctBytes:1088}},Bt=1024,I=class e{constructor({secret:t=null,bundle:n=null,token:r=`USER`,address:i=null,position:a=null,batchId:o=null,characters:s=null,mlKemParameterSet:c=Bt}){let l=Number(c);if(!zt[l])throw Error(`KnishIO: unsupported ML-KEM parameter set ${c}; expected 1024 or 768.`);this.mlKemParameterSet=l,this.token=r,this.balance=`0`,this.molecules={},this.key=null,this.privkey=null,this.pubkey=null,this.tokenUnits=[],this.tradeRates={},this.address=i,this.position=a,this.bundle=n,this.batchId=o,this.characters=s,t&&(this.bundle=this.bundle||D(t,`Wallet::constructor`),this.position=this.position||e.generatePosition(),this.key=e.generateKey({secret:t,token:this.token,position:this.position}),this.address=this.address||e.generateAddress(this.key),this.characters=this.characters||`BASE64`,this.initializeMLKEM())}static create({secret:t=null,bundle:n=null,token:r,batchId:i=null,characters:a=null,mlKemParameterSet:o=Bt}){let s=null;if(!t&&!n)throw new de;return t&&!n&&(s=e.generatePosition(),n=D(t,`Wallet::create`)),new e({secret:t,bundle:n,token:r,position:s,batchId:i,characters:a,mlKemParameterSet:o})}static isBundleHash(e){return typeof e==`string`&&e.length===64&&b(e)}static getTokenUnits(e){let t=[];return e.forEach(e=>{t.push(ue.createFromDB(e))}),t}static generateKey({secret:e,token:n,position:r}){if(!e)throw new de(`Wallet::generateKey() - Secret is required!`);if(!r)throw new de(`Wallet::generateKey() - Position is required!`);let i=b(e)?e:ce(e,1024),a=b(r)?r:ce(r,256),o=BigInt(`0x${i}`)+BigInt(`0x${a}`),s=new t.default(`SHAKE256`,`TEXT`);s.update(o.toString(16)),n&&s.update(n);let c=new t.default(`SHAKE256`,`TEXT`);return c.update(s.getHash(`HEX`,{outputLen:8192})),c.getHash(`HEX`,{outputLen:8192})}static generateAddress(e){let n=p(e,128),r=new t.default(`SHAKE256`,`TEXT`);for(let e in n){let i=n[e];for(let e=1;e<=16;e++){let e=new t.default(`SHAKE256`,`TEXT`);e.update(i),i=e.getHash(`HEX`,{outputLen:512})}r.update(i)}let i=new t.default(`SHAKE256`,`TEXT`);return i.update(r.getHash(`HEX`,{outputLen:8192})),i.getHash(`HEX`,{outputLen:256})}static generatePosition(e=64){return m(e,`abcdef0123456789`)}_deriveMlKemKeypair(e){let t=zt[e];if(!t)throw Error(`KnishIO: unsupported ML-KEM parameter set ${e}; expected 1024 or 768.`);if(!this.key)return null;let n=se(this.key,128),r=new Uint8Array(64);for(let e=0;e<64;e++)r[e]=parseInt(n.substr(e*2,2),16);let{publicKey:i,secretKey:a}=t.kem.keygen(r);return{pubkey:this.serializeKey(i),privkey:a,params:t}}initializeMLKEM(){let e=this._deriveMlKemKeypair(this.mlKemParameterSet);e&&(this.pubkey=e.pubkey,this.privkey=e.privkey)}serializeKey(e){if(typeof Buffer<`u`)return Buffer.from(e).toString(`base64`);let t=``,n=32768;for(let r=0;r<e.length;r+=n)t+=String.fromCharCode(...e.subarray(r,r+n));return btoa(t)}deserializeKey(e){if(typeof Buffer<`u`)return new Uint8Array(Buffer.from(e,`base64`));let t=atob(e);return new Uint8Array(t.length).map((e,n)=>t.charCodeAt(n))}static mlKemParameterSetFromPubkey(e){if(!e)return null;let t;try{t=typeof Buffer<`u`?Buffer.from(e,`base64`).length:atob(e).length}catch{return null}for(let[e,n]of Object.entries(zt))if(n.pkBytes===t)return Number(e);return null}balanceAsNumber(){return Number(this.balance)}balanceAsBigInt(){let 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(){let e=[];return this.tokenUnits.forEach(t=>{e.push(t.toData())}),e}splitUnits(e,t,n=null){if(e.length===0)return;let r=[],i=[];this.tokenUnits.forEach(t=>{e.includes(t.id)?r.push(t):i.push(t)}),this.tokenUnits=r,n!==null&&(n.tokenUnits=r),t.tokenUnits=i}splitUnitsMulti(e,t,n){let r=new Set;e.forEach(e=>{e.forEach(e=>r.add(e))}),r.size!==0&&(t.forEach((t,n)=>{let r=e[n];t.tokenUnits=this.tokenUnits.filter(e=>r.includes(e.id))}),n.tokenUnits=this.tokenUnits.filter(e=>!r.has(e.id)),this.tokenUnits=this.tokenUnits.filter(e=>r.has(e.id)))}createRemainder(t){let n=e.create({secret:t,token:this.token,characters:this.characters});return n.initBatchId({sourceWallet:this,isRemainder:!0}),n}isShadow(){return(this.position===void 0||this.position===null)&&(this.address===void 0||this.address===null)}initBatchId({sourceWallet:e,isRemainder:t=!1}){e.batchId&&(this.batchId=t?e.batchId:le({}))}async encryptMessage(e,t){let n=JSON.stringify(e),r=new TextEncoder().encode(n),i=this.deserializeKey(t),a=zt[this.mlKemParameterSet];if(i.length!==a.pkBytes)throw Error(`KnishIO: cannot ML-KEM-encrypt — recipient public key is ${i.length} bytes, expected ${a.pkBytes} (ML-KEM-${this.mlKemParameterSet}). The peer is not running ML-KEM-${this.mlKemParameterSet}; upgrade the peer, or step this client back to the other parameter set.`);let{cipherText:o,sharedSecret:s}=a.kem.encapsulate(i),c=await this.encryptWithSharedSecret(r,s);return{cipherText:this.serializeKey(o),encryptedMessage:this.serializeKey(c)}}async decryptMessage(e){let t=await this._mlkemDecryptToString(e);return t===null?null:JSON.parse(t)}async _mlkemDecryptToString(e){let{cipherText:t,encryptedMessage:n}=e,r=this.deserializeKey(t),i=zt[this.mlKemParameterSet],a=this.mlKemParameterSet===1024?768:1024,o=i,s=this.privkey;if(r.length!==i.ctBytes){if(r.length!==zt[a].ctBytes)return console.error(`Wallet::decryptMessage() - Ciphertext length mismatch: got ${r.length}, expected ${i.ctBytes}`),null;let e=this._deriveMlKemKeypair(a);if(!e)return console.error(`Wallet::decryptMessage() - cannot derive the ML-KEM-${a} identity: wallet has no key`),null;o=e.params,s=e.privkey}let c;try{c=o.kem.decapsulate(r,s)}catch(e){return console.error(`Wallet::decryptMessage() - Decapsulation failed`,e),console.info(`Wallet::decryptMessage() - my public key`,this.pubkey),null}let l;try{l=this.deserializeKey(n)}catch(e){return console.warn(`Wallet::decryptMessage() - Deserialization failed`,e),console.info(`Wallet::decryptMessage() - my public key`,this.pubkey),console.info(`Wallet::decryptMessage() - our shared secret`,c),null}let u;try{u=await this.decryptWithSharedSecret(l,c)}catch(e){return console.warn(`Wallet::decryptMessage() - Decryption failed`,e),console.info(`Wallet::decryptMessage() - my public key`,this.pubkey),console.info(`Wallet::decryptMessage() - our shared secret`,c),console.info(`Wallet::decryptMessage() - deserialized encrypted message`,l),null}try{return new TextDecoder().decode(u)}catch(e){return console.warn(`Wallet::decryptMessage() - Decoding failed`,e),console.info(`Wallet::decryptMessage() - my public key`,this.pubkey),console.info(`Wallet::decryptMessage() - our shared secret`,c),console.info(`Wallet::decryptMessage() - deserialized encrypted message`,l),console.info(`Wallet::decryptMessage() - decrypted Uint8Array`,u),null}}hashShare(e){let t=ce(e,64),n=Uint8Array.from(t.match(/.{2}/g).map(e=>parseInt(e,16)));return this.serializeKey(n)}async encryptStringML(e,t){let n=await this.encryptMessage(e,t);return JSON.stringify({[this.hashShare(t)]:n})}async decryptMyMessageML(e){let t=e[this.hashShare(this.pubkey)];if(!t){let n=this.mlKemParameterSet===1024?768:1024,r=this._deriveMlKemKeypair(n);r&&(t=e[this.hashShare(r.pubkey)])}return t?this._mlkemDecryptToString(t):null}async encryptWithSharedSecret(e,t){let n=crypto.getRandomValues(new Uint8Array(12)),r={name:`AES-GCM`,iv:n},i=await crypto.subtle.importKey(`raw`,t,{name:`AES-GCM`},!1,[`encrypt`]),a=await crypto.subtle.encrypt(r,i,e),o=new Uint8Array(n.length+a.byteLength);return o.set(n),o.set(new Uint8Array(a),n.length),o}async decryptWithSharedSecret(e,t){let n={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(n,r,e.slice(12));return new Uint8Array(i)}},Vt=class extends w{constructor(e=`There is an atom without an index`,t=null,n=null){super(e,t,n),this.name=`AtomIndexException`}},Ht=class extends w{constructor(e=`The molecular hash does not match`,t=null,n=null){super(e,t,n),this.name=`MolecularHashMismatchException`}},Ut=class extends w{constructor(e=`The molecular hash is missing`,t=null,n=null){super(e,t,n),this.name=`MolecularHashMissingException`}},Wt=class extends w{constructor(e=``,t=null,n=null){super(e,t,n),this.name=`PolicyInvalidException`}},Gt=class extends w{constructor(e=`OTS malformed`,t=null,n=null){super(e,t,n),this.name=`SignatureMalformedException`}},Kt=class extends w{constructor(e=`One-time signature (OTS) does not match!`,t=null,n=null){super(e,t,n),this.name=`SignatureMismatchException`}},L=class extends w{constructor(e=`Insufficient balance to make transfer`,t=null,n=null){super(e,t,n),this.name=`TransferBalanceException`}},qt=class extends w{constructor(e=`Token transfer atoms are malformed`,t=null,n=null){super(e,t,n),this.name=`TransferMalformedException`}},Jt=class extends w{constructor(e=`Token slugs for wallets in transfer do not match!`,t=null,n=null){super(e,t,n),this.name=`TransferMismatchedException`}},Yt=class extends w{constructor(e=`Invalid remainder provided`,t=null,n=null){super(e,t,n),this.name=`TransferRemainderException`}},Xt=class extends w{constructor(e=`Sender and recipient(s) cannot be the same`,t=null,n=null){super(e,t,n),this.name=`TransferToSelfException`}},Zt=class extends w{constructor(e=`Token transfer atoms are unbalanced`,t=null,n=null){super(e,t,n),this.name=`TransferUnbalancedException`}},R=class extends w{constructor(e=`Empty meta data.`,t=null,n=null){super(e,t,n),this.name=`MetaMissingException`}},z=class extends w{constructor(e=`Wrong type of token for this isotope`,t=null,n=null){super(e,t,n),this.name=`WrongTokenTypeException`}},Qt=class extends w{constructor(e=`Incorrect BatchId`,t=null,n=null){super(e,t,n),this.name=`BatchIdException`}},$t=class{constructor(e={}){for(let t in e)this[`__${t}`]=e[t]}static toObject(e){return new this(e)}toJSON(){let e={};for(let t of Object.keys(this))t.substring(0,2)===`__`&&(e[t.substring(2,t.length)]=this[t]);return e}},en=class extends w{constructor(e=`An incorrect argument!`,t=null,n=null){super(e,t,n),this.name=`RuleArgumentException`}},B=class extends w{constructor(e=`Code exception`,t=null,n=null){super(e,t,n),this.name=`CodeException`}},tn=class e{constructor({action:e,metaType:t=null,metaId:n=null,meta:r=null,address:i=null,token:a=null,amount:o=null,comparison:s=null}){if(r&&(this.meta=r),!e)throw new en(`Callback structure violated, missing mandatory "action" parameter.`);this.__metaId=n,this.__metaType=t,this.__action=e,this.__address=i,this.__token=a,this.__amount=o,this.__comparison=s}set comparison(e){this.__comparison=e}set amount(e){if(!ee(e))throw new B(`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 $t?e:$t.toObject(e)}set metaType(e){this.__metaType=e}set metaId(e){this.__metaId=e}static toObject(t){let n=new e({action:t.action});return t.metaType&&(n.metaType=t.metaType),t.metaId&&(n.metaId=t.metaId),t.meta&&(n.meta=t.meta),t.address&&(n.address=t.address),t.token&&(n.token=t.token),t.amount&&(n.amount=t.amount),t.comparison&&(n.comparison=t.comparison),n}toJSON(){let 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 S(Object.keys(this.toJSON()),[`action`,`metaId`,`metaType`,`meta`]).length===4&&this._is(`meta`)}isCollect(){return S(Object.keys(this.toJSON()),[`action`,`address`,`token`,`amount`,`comparison`]).length===5&&this._is(`collect`)}isBuffer(){return S(Object.keys(this.toJSON()),[`action`,`address`,`token`,`amount`,`comparison`]).length===5&&this._is(`buffer`)}isRemit(){return S(Object.keys(this.toJSON()),[`action`,`token`,`amount`]).length===3&&this._is(`remit`)}isBurn(){return S(Object.keys(this.toJSON()),[`action`,`token`,`amount`,`comparison`]).length===4&&this._is(`burn`)}_is(e){return this.__action.toLowerCase()===e.toLowerCase()}},nn=class{constructor({key:e,value:t,comparison:n}){if([e,t,n].some(e=>!e))throw new en(`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}}},rn=class e{constructor({condition:e=[],callback:t=[]}){for(let t of e)if(!(t instanceof nn))throw new en;for(let e of t)if(!(e instanceof tn))throw new en;this.__condition=e,this.__callback=t}set comparison(e){this.__condition.push(e instanceof nn?e:nn.toObject(e))}set callback(e){this.__callback.push(e instanceof tn?e:tn.toObject(e))}static toObject(t){if(!t.condition)throw new R(`Rule::toObject() - Incorrect rule format! There is no condition field.`);if(!t.callback)throw new R(`Rule::toObject() - Incorrect rule format! There is no callback field.`);let n=new e({});for(let e of t.condition)n.comparison=e;for(let e of t.callback)n.callback=e;return n}toJSON(){return{condition:this.__condition,callback:this.__callback}}},V=class{static __init(e,t){this.arr=String(t).split(`.`),this.key=this.arr.shift();let 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:e[this.key]!==void 0}static has(e,t){return this.__init(e,t),this.__next?this.__nextKey===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){let r=t.split(`.`),i=e,a=r.length-1;for(let e=0;e<a;e++){let t=r[e],n=Number(t),a=Number.isInteger(n);(a?n:t in i)||(i[a?n:t]=r[e+1].match(/^\d+$/)?[]:{}),i=i[a?n:t]}let o=r[a],s=Number(o);return i[Number.isInteger(s)?s:o]=n,e}},an=class e{constructor(e){if(e.molecularHash===null)throw new Ut;if(!e.atoms.length)throw new T;for(let t of e.atoms)if(t.index===null)throw new Vt;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 T(`Check::continuId() - Molecule is missing required ContinuID Atom!`);return!0}batchId(){if(this.molecule.atoms.length>0){let e=this.molecule.atoms[0];if(e.isotope===`V`&&e.batchId!==null){let t=this.molecule.getIsotopes(`V`),n=t[t.length-1];if(e.batchId!==n.batchId)throw new Qt;for(let e of t)if(e.batchId===null)throw new Qt}return!0}throw new Qt}isotopeI(){for(let e of this.molecule.getIsotopes(`I`)){if(e.token!==`USER`)throw new z(`Check::isotopeI() - "${e.token}" is not a valid Token slug for "${e.isotope}" isotope Atoms!`);if(e.index===0)throw new Vt(`Check::isotopeI() - Isotope "${e.isotope}" Atoms must have a non-zero index!`)}return!0}isotopeU(){for(let e of this.molecule.getIsotopes(`U`)){if(e.token!==`AUTH`)throw new z(`Check::isotopeU() - "${e.token}" is not a valid Token slug for "${e.isotope}" isotope Atoms!`);if(e.index!==0)throw new Vt(`Check::isotopeU() - Isotope "${e.isotope}" Atoms must have an index equal to 0!`)}return!0}isotopeM(){let e=[`readPolicy`,`writePolicy`];for(let t of this.molecule.getIsotopes(`M`)){if(t.meta.length<1)throw new R;if(t.token!==`USER`)throw new z(`Check::isotopeM() - "${t.token}" is not a valid Token slug for "${t.isotope}" isotope Atoms!`);let n=x.aggregateMeta(t.meta);for(let t of e){let r=n[t];if(r){r=JSON.parse(r);for(let[t,i]of Object.entries(r))if(!e.includes(t)){if(!Object.keys(n).includes(t))throw new Wt(`${t} is missing from the meta.`);for(let e of i)if(!I.isBundleHash(e)&&![`all`,`self`].includes(e))throw new Wt(`${e} does not correspond to the format of the policy.`)}}}}return!0}isotopeC(){for(let e of this.molecule.getIsotopes(`C`)){if(e.token!==`USER`)throw new z(`Check::isotopeC() - "${e.token}" is not a valid Token slug for "${e.isotope}" isotope Atoms!`);if(e.index!==0)throw new Vt(`Check::isotopeC() - Isotope "${e.isotope}" Atoms must have an index equal to 0!`)}return!0}isotopeT(){for(let e of this.molecule.getIsotopes(`T`)){let t=e.aggregatedMeta();if(String(e.metaType).toLowerCase()===`wallet`){for(let e of[`position`,`bundle`])if(!Object.prototype.hasOwnProperty.call(t,e)||!t[e])throw new R(`Check::isotopeT() - Required meta field "${e}" is missing!`)}for(let e of[`token`])if(!Object.prototype.hasOwnProperty.call(t,e)||!t[e])throw new R(`Check::isotopeT() - Required meta field "${e}" is missing!`);if(e.token!==`USER`)throw new z(`Check::isotopeT() - "${e.token}" is not a valid Token slug for "${e.isotope}" isotope Atoms!`);if(e.index!==0)throw new Vt(`Check::isotopeT() - Isotope "${e.isotope}" Atoms must have an index equal to 0!`)}return!0}isotopeR(){for(let e of this.molecule.getIsotopes(`R`)){let t=e.aggregatedMeta();if(t.policy){let e=JSON.parse(t.policy);if(!Object.keys(e).every(e=>[`read`,`write`].includes(e)))throw new R(`Check::isotopeR() - Mixing rules with politics!`)}if(t.rule){let e=JSON.parse(t.rule);if(!Array.isArray(e))throw new R(`Check::isotopeR() - Incorrect rule format!`);for(let t of e)rn.toObject(t);if(e.length<1)throw new R(`Check::isotopeR() - No rules!`)}}return!0}isotopeP(){for(let e of this.molecule.getIsotopes(`P`)){if(e.token!==`USER`)throw new z(`Check::isotopeP() - "${e.token}" is not a valid Token slug for "${e.isotope}" isotope Atoms!`);let t=e.aggregatedMeta();if(!Object.prototype.hasOwnProperty.call(t,`peerHost`)||!t.peerHost)throw new R(`Check::isotopeP() - Required meta field "peerHost" is missing!`)}return!0}isotopeA(){for(let e of this.molecule.getIsotopes(`A`)){if(e.token!==`USER`)throw new z(`Check::isotopeA() - "${e.token}" is not a valid Token slug for "${e.isotope}" isotope Atoms!`);if(!e.metaType)throw new R(`Check::isotopeA() - Required field "metaType" is missing!`);if(!e.metaId)throw new R(`Check::isotopeA() - Required field "metaId" is missing!`);let t=e.aggregatedMeta();if(!Object.prototype.hasOwnProperty.call(t,`action`)||!t.action)throw new R(`Check::isotopeA() - Required meta field "action" is missing!`)}return!0}isotopeB(){let e=this.molecule.getIsotopes(`B`);if(e.length===0)return!0;for(let t of e){if(!t.metaType||t.metaType!==`walletBundle`)throw new R(`Check::isotopeB() - B-isotope atoms must have metaType "walletBundle"!`);if(!t.metaId)throw new R(`Check::isotopeB() - B-isotope atoms must have a metaId!`);let e=Number(t.value);if(Number.isNaN(e))throw new qt(`Check::isotopeB() - B-isotope atom value is not a valid number!`)}let t=this.molecule.getIsotopes(`V`);if(t.length>0){let n=0;for(let r of[...t,...e]){let e=Number(r.value);Number.isNaN(e)||(n+=e)}if(n!==0)throw new Zt(`Check::isotopeB() - V+B atom values do not balance to zero!`)}return!0}isotopeF(){let e=this.molecule.getIsotopes(`F`);if(e.length===0)return!0;for(let t of e){if(!t.metaType||t.metaType!==`walletBundle`)throw new R(`Check::isotopeF() - F-isotope atoms must have metaType "walletBundle"!`);if(!t.metaId)throw new R(`Check::isotopeF() - F-isotope atoms must have a metaId!`);let e=Number(t.value);if(Number.isNaN(e))throw new qt(`Check::isotopeF() - F-isotope atom value is not a valid number!`);if(e<0)throw new qt(`Check::isotopeF() - F-isotope atom value must not be negative!`)}let t=this.molecule.getIsotopes(`V`);if(t.length>0){let n=0;for(let r of[...t,...e]){let e=Number(r.value);Number.isNaN(e)||(n+=e)}if(n!==0)throw new Zt(`Check::isotopeF() - V+F atom values do not balance to zero!`)}return!0}isotopeV(e=null){let t=this.molecule.getIsotopes(`V`);if(t.length===0)return!0;let n=this.molecule.getIsotopes(`B`).length>0||this.molecule.getIsotopes(`F`).length>0,r=this.molecule.atoms[0];if(!n&&r.isotope===`V`&&t.length===2){let e=t[t.length-1];if(r.token!==e.token)throw new Jt;if(e.value<0)throw new qt;if(Number(r.value)+Number(e.value)!==0)throw new Zt;return!0}let i=0,a=0;for(let e in this.molecule.atoms)if(Object.prototype.hasOwnProperty.call(this.molecule.atoms,e)){let t=this.molecule.atoms[e];if(t.isotope!==`V`)continue;if(a=t.value*1,Number.isNaN(a))throw TypeError(`Invalid isotope "V" values`);if(t.token!==r.token)throw new Jt;if(e>0){if(a<0)throw new qt;if(t.walletAddress===r.walletAddress)throw new Xt}i+=a}if(!n&&i!==0)throw new Zt;if(e){if(a=r.value*1,Number.isNaN(a))throw TypeError(`Invalid isotope "V" values`);let t=Number(e.balance)+a;if(t<0)throw new L;if(!n&&t!==i)throw new Yt}else if(a!==0)throw new Yt;return!0}molecularHash(){if(this.molecule.molecularHash!==E.hashAtoms({atoms:this.molecule.atoms}))throw new Ht;return!0}ots(){let e=this.molecule.normalizedHash(),n=this.molecule.atoms.map(e=>e.otsFragment).reduce((e,t)=>e+t);if(n.length!==2048&&(n=y(n),n.length!==2048))throw new Gt;let r=p(n,128),i=``;for(let n in r){let a=r[n];for(let r=0,i=8+e[n];r<i;r++)a=new t.default(`SHAKE256`,`TEXT`).update(a).getHash(`HEX`,{outputLen:512});i+=a}let a=new t.default(`SHAKE256`,`TEXT`);a.update(i);let o=a.getHash(`HEX`,{outputLen:8192}),s=new t.default(`SHAKE256`,`TEXT`);s.update(o);let c=s.getHash(`HEX`,{outputLen:256}),l=this.molecule.atoms[0],u=l.walletAddress,d=V.get(l.aggregatedMeta(),`signingWallet`);if(d&&(u=V.get(JSON.parse(d),`address`)),c!==u)throw new Kt;return!0}static fromServerData({molecularHash:e,bundleHash:t,cellSlug:n=null,status:r=null,createdAt:i=null,atoms:a=[]}){let o=a.map(e=>{let t=[];if(e.metasJson)try{let n=JSON.parse(e.metasJson);Array.isArray(n)?t=n:n&&typeof n==`object`&&(t=Object.entries(n).map(([e,t])=>({key:e,value:t})))}catch{t=[]}return{position:e.position||null,walletAddress:e.walletAddress||null,isotope:e.isotope||null,token:e.tokenSlug||e.token||null,value:e.value==null?null:String(e.value),batchId:e.batchId||null,metaType:e.metaType||null,metaId:e.metaId||null,meta:t,index:e.index==null?null:e.index,otsFragment:e.otsFragment||null,createdAt:e.createdAt||null}});return cn.fromJSON({molecularHash:e,bundle:t,cellSlug:n,status:r,createdAt:i,atoms:o})}static verifyFromServerData(t){try{let n=e.fromServerData(t);return new e(n).verify(),{molecularHash:t.molecularHash,verified:!0,error:null}}catch(e){return{molecularHash:t.molecularHash||null,verified:!1,error:e.message||String(e)}}}},on=class extends w{constructor(e=`Insufficient balance for requested transfer`,t=null,n=null){super(e,t,n),this.name=`BalanceInsufficientException`}},sn=class extends w{constructor(e=`Amount cannot be negative!`,t=null,n=null){super(e,t,n),this.name=`NegativeAmountException`}},cn=class e{constructor({secret:e=null,bundle:t=null,sourceWallet:n=null,remainderWallet:r=null,cellSlug:i=null,version:a=null,continuIdPosition:o=null,mlKemParameterSet:s=null}){this.mlKemParameterSet=s||n&&n.mlKemParameterSet||1024,this.status=null,this.molecularHash=null,this.createdAt=String(+new Date),this.cellSlugOrigin=this.cellSlug=i,this.secret=e,this.bundle=t,this.sourceWallet=n,this.continuIdPosition=o,this.atoms=[],this.parentHashes=[],a!==null&&Object.prototype.hasOwnProperty.call(oe,a)&&(this.version=String(a)),(r||n)&&(this.remainderWallet=r||I.create({secret:e,bundle:t,token:n.token,batchId:n.batchId,characters:n.characters,mlKemParameterSet:this.mlKemParameterSet}))}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(t=>e.includes(t.isotope))}static generateNextAtomIndex(e){return e.length}static jsonToObject(t){let n=Object.assign(new e({}),JSON.parse(t)),r=Object.keys(new e({}));if(!Array.isArray(n.atoms))throw new T;for(let e in Object.keys(n.atoms)){n.atoms[e]=E.jsonToObject(JSON.stringify(n.atoms[e]));for(let t of[`position`,`walletAddress`,`isotope`])if(n.atoms[e].isotope.toLowerCase()!==`r`&&(n.atoms[e][t]===void 0||n.atoms[e][t]===null))throw new T(`MolecularStructure::jsonToObject() - Required Atom properties are missing!`)}for(let e in n)Object.prototype.hasOwnProperty.call(n,e)&&!r.includes(e)&&delete n[e];return n.atoms=E.sortAtoms(n.atoms),n}static enumerate(e){let 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=[],r=e.toLowerCase().split(``);for(let e=0,i=r.length;e<i;++e){let i=r[e];t[i]!==void 0&&(n[e]=t[i])}return n}static normalize(e){let t=e.reduce((e,t)=>e+t),n=t<0;for(;t<0||t>0;)for(let r of Object.keys(e))if((n?e[r]<8:e[r]>-8)&&(n?(++e[r],++t):(--e[r],--t),t===0))break;return e}getIsotopes(t){return e.isotopeFilter(t,this.atoms)}generateIndex(){return e.generateNextAtomIndex(this.atoms)}fill(e){for(let 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=E.sortAtoms(this.atoms),this}addContinuIdAtom(){(!this.remainderWallet||this.remainderWallet.token!==`USER`)&&(this.remainderWallet=I.create({secret:this.secret,bundle:this.bundle,mlKemParameterSet:this.mlKemParameterSet}));let 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(E.create({isotope:`I`,wallet:this.remainderWallet,metaType:`walletBundle`,metaId:this.remainderWallet.bundle,meta:new C(e)})),this}addPolicyAtom({metaType:e,metaId:t,meta:n={},policy:r={}}){let i=new C(n);return i.addPolicy(r),this.addAtom(E.create({wallet:this.sourceWallet,isotope:`R`,metaType:e,metaId:t,meta:i})),this}fuseToken(e,t){let n=e.length;if(this.sourceWallet.balance-n<0)throw new on;return this.addAtom(E.create({isotope:`V`,wallet:this.sourceWallet,value:-n})),this.addAtom(E.create({isotope:`F`,wallet:t,value:1,metaType:`walletBundle`,metaId:t.bundle})),this.addAtom(E.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 sn(`Molecule::burnToken() - Amount to burn must be positive!`);if(this.sourceWallet.balance-e<0)throw new on;let n=new I({bundle:`0000000000000000000000000000000000000000000000000000000000000000`,token:this.sourceWallet.token,mlKemParameterSet:this.mlKemParameterSet});return this.addAtom(E.create({isotope:`V`,wallet:this.sourceWallet,value:-this.sourceWallet.balance})),this.addAtom(E.create({isotope:`V`,wallet:n,value:e,metaType:`walletBundle`,metaId:n.bundle})),this.addAtom(E.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 sn(`Molecule::replenishToken() - Amount to replenish must be positive!`);if(t.length){t=I.getTokenUnits(t),this.remainderWallet.tokenUnits=this.sourceWallet.tokenUnits;for(let e of t)this.remainderWallet.tokenUnits.push(e);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(E.create({isotope:`V`,wallet:this.sourceWallet,value:Number(this.sourceWallet.balance)})),this.addAtom(E.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 on;return this.addAtom(E.create({isotope:`V`,wallet:this.sourceWallet,value:-this.sourceWallet.balance})),this.addAtom(E.create({isotope:`V`,wallet:e,value:t,metaType:`walletBundle`,metaId:e.bundle})),this.addAtom(E.create({isotope:`V`,wallet:this.remainderWallet,value:this.sourceWallet.balance-t,metaType:`walletBundle`,metaId:this.remainderWallet.bundle})),this}initValues({recipientWallets:e,amounts:t}){let n=t.reduce((e,t)=>e+Number(t),0);if(this.sourceWallet.balance-n<0)throw new on;return this.addAtom(E.create({isotope:`V`,wallet:this.sourceWallet,value:-this.sourceWallet.balance})),e.forEach((e,n)=>{this.addAtom(E.create({isotope:`V`,wallet:e,value:t[n],metaType:`walletBundle`,metaId:e.bundle}))}),this.addAtom(E.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 on;let n=I.create({secret:this.secret,bundle:this.bundle,token:this.sourceWallet.token,batchId:this.sourceWallet.batchId,mlKemParameterSet:this.mlKemParameterSet});return n.tradeRates=t,this.addAtom(E.create({isotope:`V`,wallet:this.sourceWallet,value:-this.sourceWallet.balance})),this.addAtom(E.create({isotope:`B`,wallet:n,value:e,metaType:`walletBundle`,metaId:this.sourceWallet.bundle})),this.addAtom(E.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(let t of Object.values(e||{}))n+=t;if(this.sourceWallet.balance-n<0)throw new on;let r=new C;t&&r.setSigningWallet(t),this.addAtom(E.create({isotope:`B`,wallet:this.sourceWallet,value:-this.sourceWallet.balance,meta:r,metaType:`walletBundle`,metaId:this.sourceWallet.bundle}));for(let[t,n]of Object.entries(e||{}))this.addAtom(new E({isotope:`V`,token:this.sourceWallet.token,value:n,batchId:this.sourceWallet.batchId?le({}):null,metaType:`walletBundle`,metaId:t}));return this.addAtom(E.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}){let r=new C(n);return r.setMetaWallet(e),this.addAtom(E.create({isotope:`C`,wallet:this.sourceWallet,value:t,metaType:`token`,metaId:e.token,meta:r,batchId:e.batchId})),this.addContinuIdAtom(),this}createRule({metaType:e,metaId:t,rule:n,policy:r={}}){let i=[];for(let e of n)i.push(e instanceof rn?e:rn.toObject(e));let a=new C({rule:JSON.stringify(i)});return a.addPolicy(r),this.addAtom(E.create({isotope:`R`,wallet:this.sourceWallet,metaType:e,metaId:t,meta:a})),this.addContinuIdAtom(),this}initWalletCreation(e,t=null){t||=new C,t.setMetaWallet(e);let n=E.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){let t=new C().setShadowWalletClaim(!0);return this.initWalletCreation(e,t)}initIdentifierCreation({type:e,contact:t,code:n}){let r={code:n,hash:D(t.trim(),`Molecule::initIdentifierCreation`)};return this.addAtom(E.create({isotope:`C`,wallet:this.sourceWallet,metaType:`identifier`,metaId:e,meta:new C(r)})),this.addContinuIdAtom(),this}initMeta({meta:e,metaType:t,metaId:n,policy:r}){return this.addAtom(E.create({isotope:`M`,wallet:this.sourceWallet,metaType:t,metaId:n,meta:new C(e)})),r&&Object.keys(r).length>0&&this.addPolicyAtom({metaType:t,metaId:n,meta:e,policy:r}),this.addContinuIdAtom(),this}initPeering({host:e}){return this.addAtom(E.create({isotope:`P`,wallet:this.sourceWallet,metaType:`walletBundle`,metaId:this.bundle,meta:new C({peerHost:e})})),this.addContinuIdAtom(),this}initAppendRequest({metaType:e,metaId:t,action:n,meta:r={}}){return this.addAtom(E.create({isotope:`A`,wallet:this.sourceWallet,metaType:e,metaId:t,meta:new C({action:n,...r})})),this.addContinuIdAtom(),this}initTokenRequest({token:e,amount:t,metaType:n,metaId:r,meta:i={},batchId:a=null}){return i.token=e,i.amount=String(t),this.addAtom(E.create({isotope:`T`,wallet:this.sourceWallet,value:t,metaType:n,metaId:r,meta:new C(i),batchId:a})),this.addContinuIdAtom(),this}initAuthorization({meta:e}){return this.addAtom(E.create({isotope:`U`,wallet:this.sourceWallet,meta:new C(e)})),this.addContinuIdAtom(),this}sign({bundle:e=null,anonymous:n=!1,compressed:r=!0}={}){if(this.atoms.length===0||this.atoms.filter(e=>!(e instanceof E)).length!==0)throw new T;!n&&!this.bundle&&(this.bundle=e||D(this.secret,`Molecule::sign`)),this.molecularHash=E.hashAtoms({atoms:this.atoms});let i=this.atoms[0],a=i.position,o=V.get(i.aggregatedMeta(),`signingWallet`);if(o&&(a=V.get(JSON.parse(o),`position`)),!a)throw new Gt(`Signing wallet must have a position!`);let s=p(I.generateKey({secret:this.secret,token:i.token,position:i.position}),128),c=this.normalizedHash(),l=``;for(let e in s){let n=s[e];for(let r=0,i=8-c[e];r<i;r++)n=new t.default(`SHAKE256`,`TEXT`).update(n).getHash(`HEX`,{outputLen:512});l+=n}r&&(l=v(l));let u=p(l,Math.ceil(l.length/this.atoms.length)),d=null;for(let e=0,t=u.length;e<t;e++)this.atoms[e].otsFragment=u[e],d=this.atoms[e].position;return d}signSync(e={}){return this.sign(e)}cellSlugBase(){return(this.cellSlug||``).split(this.cellSlugDelimiter)[0]}toJSON(e={}){let{includeValidationContext:t=!1,includeOtsFragments:n=!0}=e;try{let e={status:this.status,molecularHash:this.molecularHash,createdAt:this.createdAt,cellSlug:this.cellSlug,bundle:this.bundle,atoms:this.atoms.map(e=>e.toJSON({includeOtsFragments:n}))};return this.parentHashes&&this.parentHashes.length>0&&(e.parentHashes=this.parentHashes),t&&(e.cellSlugOrigin=this.cellSlugOrigin,e.version=this.version,this.sourceWallet&&(e.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&&(e.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||{}})),e}catch(e){throw Error(`Molecule serialization failed: ${e.message}`)}}static fromJSON(t,n={}){let{includeValidationContext:r=!1,validateStructure:i=!0}=n;try{let n=typeof t==`string`?JSON.parse(t):t;if(i&&(!n.molecularHash||!Array.isArray(n.atoms)))throw Error(`Invalid molecule data: missing molecularHash or atoms array`);let a=new e({secret:null,bundle:n.bundle||null,cellSlug:n.cellSlug||null,version:n.version||null});return a.status=n.status,a.molecularHash=n.molecularHash,a.createdAt=n.createdAt||String(+new Date),a.cellSlugOrigin=n.cellSlugOrigin,a.parentHashes=Array.isArray(n.parentHashes)?[...n.parentHashes]:[],Array.isArray(n.atoms)&&(a.atoms=n.atoms.map((e,t)=>{try{return E.fromJSON(e)}catch(e){throw Error(`Failed to reconstruct atom ${t}: ${e.message}`)}})),r&&(n.sourceWallet&&(a.sourceWallet=new I({secret:null,token:n.sourceWallet.token,position:n.sourceWallet.position,bundle:n.sourceWallet.bundle,batchId:n.sourceWallet.batchId,characters:n.sourceWallet.characters,mlKemParameterSet:a.mlKemParameterSet}),a.sourceWallet.balance=String(n.sourceWallet.balance==null?0:n.sourceWallet.balance),a.sourceWallet.address=n.sourceWallet.address,n.sourceWallet.pubkey&&(a.sourceWallet.pubkey=n.sourceWallet.pubkey),a.sourceWallet.tokenUnits=n.sourceWallet.tokenUnits||[],a.sourceWallet.tradeRates=n.sourceWallet.tradeRates||{},a.sourceWallet.molecules=n.sourceWallet.molecules||{}),n.remainderWallet&&(a.remainderWallet=new I({secret:null,token:n.remainderWallet.token,position:n.remainderWallet.position,bundle:n.remainderWallet.bundle,batchId:n.remainderWallet.batchId,characters:n.remainderWallet.characters,mlKemParameterSet:a.mlKemParameterSet}),a.remainderWallet.balance=String(n.remainderWallet.balance==null?0:n.remainderWallet.balance),a.remainderWallet.address=n.remainderWallet.address,n.remainderWallet.pubkey&&(a.remainderWallet.pubkey=n.remainderWallet.pubkey),a.remainderWallet.tokenUnits=n.remainderWallet.tokenUnits||[],a.remainderWallet.tradeRates=n.remainderWallet.tradeRates||{},a.remainderWallet.molecules=n.remainderWallet.molecules||{})),a}catch(e){throw Error(`Molecule deserialization failed: ${e.message}`)}}check(e=null){return new an(this).verify(e)}normalizedHash(){return e.normalize(e.enumerate(this.molecularHash))}},ln=class e{constructor({token:e,expiresAt:t,encrypt:n,pubkey:r}){this.$__token=e,this.$__expiresAt=t,this.$__pubkey=r,this.$__encrypt=n}static create(t,n){let r=new e(t);return r.setWallet(n),r}static resolveMlKemParameterSet(e){let t=e.wallet&&e.wallet.mlKemParameterSet;return t?Number(t):I.mlKemParameterSetFromPubkey(e.pubkey)||768}static restore(t,n){let r=new I({secret:n,token:`AUTH`,position:t.wallet.position,characters:t.wallet.characters,mlKemParameterSet:e.resolveMlKemParameterSet(t)});return e.create({token:t.token,expiresAt:t.expiresAt,pubkey:t.pubkey,encrypt:t.encrypt},r)}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,mlKemParameterSet:this.$__wallet.mlKemParameterSet}}}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()}}},H=class e extends w{constructor(e=`Secret storage operation failed`,t=null,n=null){super(e,t,n),this.name=`SecretStorageException`}static notFound(t){return new e(`Secret not found for bundle: ${t}`)}static decryptionFailed(t=`Invalid passphrase or corrupted ciphertext`){return new e(`Failed to decrypt master secret: ${t}`)}static unavailable(t,n=`Hardware or API not accessible`){return new e(`Secret storage provider '${t}' is unavailable: ${n}`)}},un=new TextEncoder;function U(e){if(e instanceof Uint8Array)e.fill(0);else if(Array.isArray(e))for(let t=0;t<e.length;t++)e[t]=0}async function dn(e,t){try{return await t(e)}finally{U(e)}}async function fn(e,t){let n=un.encode(e);try{return await t(e)}finally{U(n)}}function pn(e,t){let n=typeof e==`string`?un.encode(e):e,r=typeof t==`string`?un.encode(t):t,i=n.length===r.length?0:1,a=Math.min(n.length,r.length);for(let e=0;e<a;e++)i|=(n[e]??0)^(r[e]??0);return typeof e==`string`&&U(n),typeof t==`string`&&U(r),i===0}var mn=class{constructor(){this.providerType=`memory`,this.secrets=new Map}isHardwareBacked(){return!1}async isAvailable(){return!0}async storeSecret(e,t,n={}){if(!e)throw new H(`Bundle hash cannot be empty`);if(!t)throw new H(`Secret cannot be empty`);let r={bundleHash:e,label:n.label,createdAt:Date.now(),hardwareBacked:!1,providerType:this.providerType};this.secrets.set(e,{secret:t,metadata:r})}async retrieveSecret(e){let t=this.secrets.get(e);return t?t.secret:null}async deleteSecret(e){return this.secrets.delete(e)}async hasSecret(e){return this.secrets.has(e)}async listSecrets(){return Array.from(this.secrets.values()).map(e=>({...e.metadata}))}async withSecret(e,t){let n=this.secrets.get(e);if(!n)throw H.notFound(e);return fn(n.secret,t)}clear(){this.secrets.clear()}},hn=10**18,gn=class e{static val(e){return Math.abs(e*hn)<1?0:e}static cmp(t,n,r=!1){let i=e.val(t)*hn,a=e.val(n)*hn;return Math.abs(i-a)<1?0:i>a?1:-1}static equal(t,n){return e.cmp(t,n)===0}},W=class extends w{constructor(e=`GraphQL did not provide a valid response.`,t=null,n=null){super(e,t,n),this.name=`InvalidResponseException`}},_n=class extends w{constructor(e=`Authorization token missing or invalid.`,t=null,n=null){super(e,t,n),this.name=`UnauthenticatedException`}},G=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,this.$__response===void 0||this.$__response===null)throw new W;if(V.has(this.$__response,this.errorKey)){let e=V.get(this.$__response,this.errorKey);throw String(e).includes(`Unauthenticated`)?new _n:new W}if(this.$__response.errors&&Array.isArray(this.$__response.errors)&&this.$__response.errors.length>0){let e=this.$__response.errors[0].message||`Unknown GraphQL error`;throw e.includes(`Unauthenticated`)?new _n:new W(`GraphQL Error: ${e}`)}this.init()}init(){}data(){if(!this.dataKey)return this.response();if(!this.response().data)throw new W(`Response has no data field`);if(!V.has(this.response(),this.dataKey))throw new W(`Missing expected field: ${this.dataKey}`);return V.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(e){console.warn(`Response.onSuccess callback failed:`,e)}return this}onFailure(e){if(!this.success())try{e(this.reason()||`Unknown error`)}catch(e){console.warn(`Response.onFailure callback failed:`,e)}return this}debug(e=null){let 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(Error(this.reason()||`Unknown error`))}map(e){if(this.success()&&this.payload()!==null)try{let t=e(this.payload()),n=Object.create(Object.getPrototypeOf(this));return Object.assign(n,this),n.$__payload=t,n}catch(e){let t=Object.create(Object.getPrototypeOf(this));return Object.assign(t,this),t.$__response={errors:[{message:`Mapping failed: ${e.message}`}]},t}return this}},K=class{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 G({query:this,json:e})}createQuery({variables:e=null}){if(this.$__variables=this.compiledVariables(e),!this.uri())throw new B(`Query::createQuery() - Node URI was not initialized for this client instance!`);if(this.$__query===null)throw new B(`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});let n={...t,...this.createQueryContext()};try{let e=await this.client.query({...this.$__request,context:n});return this.$__response=await this.createResponseRaw(e),this.$__response}catch(e){if(e.name===`AbortError`)return this.knishIOClient.log(`warn`,`Query was cancelled`),new G({query:this,json:{data:null,errors:[{message:`Query was cancelled`}]}});throw e}}compiledVariables(e=null){return e||{}}uri(){return this.client.getUri()}variables(){return this.$__variables}createQueryContext(){return{}}},vn=class extends G{constructor({query:e,json:t}){super({query:e,json:t,dataKey:`data.ContinuId`})}payload(){let e=null,t=this.data();return t&&(e=new I({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?0:t.amount)),e}},yn=class extends K{constructor(e,t){super(e,t),this.$__query=n.gql`query ($bundle: String!) {
|
|
5
3
|
ContinuId(bundle: $bundle) {
|
|
6
4
|
address,
|
|
7
5
|
bundleHash,
|
|
@@ -13,7 +11,7 @@ ${this.stack}`}}class se extends I{constructor(e="The molecule does not contain
|
|
|
13
11
|
amount,
|
|
14
12
|
createdAt
|
|
15
13
|
}
|
|
16
|
-
}`}createQueryContext(){return{requestPolicy
|
|
14
|
+
}`}createQueryContext(){return{requestPolicy:`network-only`}}createResponse(e){return new vn({query:this,json:e})}},bn=class extends G{constructor({query:e,json:t}){super({query:e,json:t,dataKey:`data.WalletBundle`})}payload(){let e=this.data();if(!e||e.length===0)return null;let t={};return e.forEach(e=>{e.metas=x.aggregateMeta(e.metas),t[e.bundleHash]=e}),t}},xn=class extends K{constructor(e,t){super(e,t),this.$__query=n.gql`query( $bundleHashes: [ String! ] ) {
|
|
17
15
|
WalletBundle( bundleHashes: $bundleHashes ) {
|
|
18
16
|
bundleHash,
|
|
19
17
|
metas {
|
|
@@ -25,7 +23,7 @@ ${this.stack}`}}class se extends I{constructor(e="The molecule does not contain
|
|
|
25
23
|
},
|
|
26
24
|
createdAt
|
|
27
25
|
}
|
|
28
|
-
}`}createResponse(e){return new
|
|
26
|
+
}`}createResponse(e){return new bn({query:this,json:e})}},Sn=class e extends G{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||e.position===void 0?n=I.create({bundle:e.bundleHash,token:e.tokenSlug,batchId:e.batchId,characters:e.characters}):(n=new I({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(let t of e.tokenUnits)n.tokenUnits.push(ue.createFromGraphQL(t));if(e.tradeRates.length)for(let t of e.tradeRates)n.tradeRates[t.tokenSlug]=t.amount;return n.balance=String(e.amount==null?0:e.amount),n.pubkey=e.pubkey,n.createdAt=e.createdAt,n}getWallets(t=null){let n=this.data();if(!n)return null;let r=[];for(let i of n)r.push(e.toClientWallet({data:i,secret:t}));return r}payload(){return this.getWallets()}},Cn=class extends K{constructor(e,t){super(e,t),this.$__query=n.gql`query( $bundleHash: String, $token: String ) {
|
|
29
27
|
Wallet( bundleHash: $bundleHash, token: $token ) {
|
|
30
28
|
address,
|
|
31
29
|
bundleHash,
|
|
@@ -52,7 +50,7 @@ ${this.stack}`}}class se extends I{constructor(e="The molecule does not contain
|
|
|
52
50
|
amount
|
|
53
51
|
}
|
|
54
52
|
}
|
|
55
|
-
}`}createResponse(e){return new
|
|
53
|
+
}`}createResponse(e){return new Sn({query:this,json:e})}},wn=class extends G{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:Sn.toClientWallet({data:e})}},Tn=class extends K{constructor(e,t){super(e,t),this.$__query=n.gql`query( $address: String, $bundleHash: String, $type: String, $token: String, $position: String ) {
|
|
56
54
|
Balance( address: $address, bundleHash: $bundleHash, type: $type, token: $token, position: $position ) {
|
|
57
55
|
address,
|
|
58
56
|
bundleHash,
|
|
@@ -74,7 +72,7 @@ ${this.stack}`}}class se extends I{constructor(e="The molecule does not contain
|
|
|
74
72
|
amount
|
|
75
73
|
}
|
|
76
74
|
}
|
|
77
|
-
}`}createResponse(e){return new
|
|
75
|
+
}`}createResponse(e){return new wn({query:this,json:e})}},En=class extends G{constructor({query:e,json:t}){super({query:e,json:t,dataKey:`data.MetaType`})}payload(){let e=this.data();if(!e||e.length===0)return null;let 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}},Dn=class extends K{constructor(e,t){super(e,t),this.$__query=n.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
76
|
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
77
|
metaType,
|
|
80
78
|
instanceCount {
|
|
@@ -98,11 +96,11 @@ ${this.stack}`}}class se extends I{constructor(e="The molecule does not contain
|
|
|
98
96
|
total
|
|
99
97
|
}
|
|
100
98
|
}
|
|
101
|
-
}`}static createVariables({metaType:e=null,metaId:t=null,key:n=null,value:
|
|
99
|
+
}`}static createVariables({metaType:e=null,metaId:t=null,key:n=null,value:r=null,latest:i=null,filter:a=null,queryArgs:o=null,count:s=null,countBy:c=null,cellSlug:l=null}){let u={};return e&&(u[typeof e==`string`?`metaType`:`metaTypes`]=e),t&&(u[typeof t==`string`?`metaId`:`metaIds`]=t),n&&(u[typeof n==`string`?`key`:`keys`]=n),r&&(u[typeof r==`string`?`value`:`values`]=r),u.latest=i===!0,a&&(u.filter=a),o&&((o.limit===void 0||o.limit===0)&&(o.limit=`*`),u.queryArgs=o),s&&(u.count=s),c&&(u.countBy=c),l&&(u.cellSlug=l),u}createResponse(e){return new En({query:this,json:e})}},On=class e extends K{constructor(t,r){super(t,r),this.$__query=n.gql`query( $batchId: String ) {
|
|
102
100
|
Batch( batchId: $batchId ) {
|
|
103
|
-
${
|
|
101
|
+
${e.getFields()},
|
|
104
102
|
children {
|
|
105
|
-
${
|
|
103
|
+
${e.getFields()}
|
|
106
104
|
}
|
|
107
105
|
}
|
|
108
106
|
}`}static getFields(){return`batchId,
|
|
@@ -154,11 +152,11 @@ ${this.stack}`}}class se extends I{constructor(e="The molecule does not contain
|
|
|
154
152
|
throughMetas {
|
|
155
153
|
key,
|
|
156
154
|
value
|
|
157
|
-
}`}createResponse(e){
|
|
155
|
+
}`}createResponse(e){let t=new G({query:this,json:e});return t.dataKey=`data.Batch`,t}},kn=class extends K{constructor(e,t){super(e,t),this.$__query=n.gql`query( $batchId: String ) {
|
|
158
156
|
BatchHistory( batchId: $batchId ) {
|
|
159
|
-
${
|
|
157
|
+
${On.getFields()}
|
|
160
158
|
}
|
|
161
|
-
}`}createResponse(e){
|
|
159
|
+
}`}createResponse(e){let t=new G({query:this,json:e});return t.dataKey=`data.BatchHistory`,t}},q=class extends G{constructor({query:e,json:t}){super({query:e,json:t,dataKey:`data.ProposeMolecule`}),this.$__clientMolecule=e.molecule()}init(){let e=V.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(){let e=this.data();if(!e)return null;let t=new cn({});return t.molecularHash=V.get(e,`molecularHash`),t.status=V.get(e,`status`),t.createdAt=V.get(e,`createdAt`),t}success(){return this.status()===`accepted`}status(){return V.get(this.data(),`status`,`rejected`)}reason(){return V.get(this.data(),`reason`,`Invalid response from server`)}payload(){return this.$__payload}},An=class extends K{createQuery({variables:e=null}){let 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});let n={...t,...this.createQueryContext()};try{let e={...this.$__request,context:n},t=await this.client.mutate(e);return this.$__response=await this.createResponseRaw(t),this.$__response}catch(e){if(e.name===`AbortError`)return this.knishIOClient.log(`warn`,`Mutation was cancelled`),new G({query:this,json:{data:null,errors:[{message:`Mutation was cancelled`}]}});throw e}}createQueryContext(){return{}}},J=class extends An{constructor(e,t,r){super(e,t),this.$__molecule=r,this.$__remainderWallet=null,this.$__query=n.gql`mutation( $molecule: MoleculeInput! ) {
|
|
162
160
|
ProposeMolecule( molecule: $molecule ) {
|
|
163
161
|
molecularHash,
|
|
164
162
|
height,
|
|
@@ -171,7 +169,7 @@ ${this.stack}`}}class se extends I{constructor(e="The molecule does not contain
|
|
|
171
169
|
processedAt,
|
|
172
170
|
broadcastedAt,
|
|
173
171
|
}
|
|
174
|
-
}`}compiledVariables(e){return{...super.compiledVariables(e),molecule:this.molecule()}}createResponse(e){return new
|
|
172
|
+
}`}compiledVariables(e){return{...super.compiledVariables(e),molecule:this.molecule()}}createResponse(e){return new q({query:this,json:e})}async execute({variables:e=null}){return e||={},e.molecule=this.molecule(),super.execute({variables:e})}remainderWallet(){return this.$__remainderWallet}molecule(){return this.$__molecule}},jn=class extends q{payloadKey(e){if(!V.has(this.payload(),e))throw new W(`ResponseRequestAuthorization::payloadKey() - '${e}' key was not found in the payload!`);return V.get(this.payload(),e)}token(){return this.payloadKey(`token`)}time(){return this.payloadKey(`time`)}expiresAt(){try{let e=this.payloadKey(`expiresAt`);if(e)return Number(e)}catch{}let 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`)}},Mn=class extends J{fillMolecule({meta:e}){this.$__molecule.initAuthorization({meta:e}),this.$__molecule.sign({}),this.$__molecule.check()}createResponse(e){return new jn({query:this,json:e})}},Nn=class extends q{},Pn=class extends J{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 Nn({query:this,json:e})}},Fn=class extends q{},In=class extends J{fillMolecule({token:e,amount:t,metaType:n,metaId:r,meta:i=null,batchId:a=null}){this.$__molecule.initTokenRequest({token:e,amount:t,metaType:n,metaId:r,meta:i||{},batchId:a}),this.$__molecule.sign({}),this.$__molecule.check()}createResponse(e){return new Fn({query:this,json:e})}},Ln=class extends q{payload(){let e={reason:null,status:null},t=this.data();return e.reason=t.reason===void 0?`Invalid response from server`:t.reason,e.status=t.status===void 0?`rejected`:t.status,e}},Rn=class extends J{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 Ln({query:this,json:e})}},zn=class extends q{},Bn=class extends J{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 zn({query:this,json:e})}},Vn=class extends q{},Hn=class extends J{fillMolecule({token:e,batchId:t=null}){let n=I.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 Vn({query:this,json:e})}},Un=class extends q{},Wn=class extends J{fillMolecule({metaType:e,metaId:t,meta:n,policy:r}){this.$__molecule.initMeta({meta:n,metaType:e,metaId:t,policy:r}),this.$__molecule.sign({}),this.$__molecule.check()}createResponse(e){return new Un({query:this,json:e})}},Gn=class extends q{},Kn=class extends J{fillMolecule({host:e}){this.$__molecule.initPeering({host:e}),this.$__molecule.sign({}),this.$__molecule.check()}createResponse(e){return new Gn({query:this,json:e})}},qn=class extends q{},Jn=class extends J{fillMolecule({metaType:e,metaId:t,action:n,meta:r={}}){this.$__molecule.initAppendRequest({metaType:e,metaId:t,action:n,meta:r}),this.$__molecule.sign({}),this.$__molecule.check()}createResponse(e){return new qn({query:this,json:e})}},Yn=class extends G{constructor({query:e,json:t}){super({query:e,json:t,dataKey:`data.LinkIdentifier`})}success(){return V.get(this.data(),`set`)}message(){return V.get(this.data(),`message`)}},Xn=class extends An{constructor(e,t){super(e,t),this.$__query=n.gql`mutation( $bundle: String!, $type: String!, $content: String! ) {
|
|
175
173
|
LinkIdentifier( bundle: $bundle, type: $type, content: $content ) {
|
|
176
174
|
type,
|
|
177
175
|
bundle,
|
|
@@ -179,13 +177,13 @@ ${this.stack}`}}class se extends I{constructor(e="The molecule does not contain
|
|
|
179
177
|
set,
|
|
180
178
|
message
|
|
181
179
|
}
|
|
182
|
-
}`}createResponse(e){return new
|
|
180
|
+
}`}createResponse(e){return new Yn({query:this,json:e})}},Zn=class extends q{},Qn=class extends J{fillMolecule(e){this.$__molecule.initWalletCreation(e),this.$__molecule.sign({}),this.$__molecule.check()}createResponse(e){return new Zn({query:this,json:e})}},$n=class extends G{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(!V.has(this.payload(),e))throw new W(`ResponseAuthorizationGuest::payloadKey() - '${e}' key is not found in the payload!`);return V.get(this.payload(),e)}token(){return this.payloadKey(`token`)}time(){return this.payloadKey(`time`)}expiresAt(){try{let e=this.payloadKey(`expiresAt`);if(e)return Number(e)}catch{}let 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`)}},er=class extends An{constructor(e,t){super(e,t),this.$__query=n.gql`mutation( $cellSlug: String, $pubkey: String, $encrypt: Boolean ) {
|
|
183
181
|
AccessToken( cellSlug: $cellSlug, pubkey: $pubkey, encrypt: $encrypt ) {
|
|
184
182
|
token,
|
|
185
183
|
pubkey,
|
|
186
184
|
expiresAt
|
|
187
185
|
}
|
|
188
|
-
}`}createResponse(e){return new
|
|
186
|
+
}`}createResponse(e){return new $n({query:this,json:e})}},tr=class extends w{constructor(e=`The shadow wallet does not exist`,t=null,n=null){super(e,t,n),this.name=`WalletShadowException`}},nr=class extends w{constructor(e=`Stackable tokens with unit IDs cannot have decimal places!`,t=null,n=null){super(e,t,n),this.name=`StackableUnitDecimalsException`}},rr=class extends w{constructor(e=`Stackable tokens with unit IDs cannot have an amount!`,t=null,n=null){super(e,t,n),this.name=`StackableUnitAmountException`}},ir=class{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 B(`Subscribe::createSubscribe() - Node URI was not initialized for this client instance!`);if(this.$__subscribe===null)throw new B(`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 B(`${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}},ar=class extends ir{constructor(e){super(e),this.$__subscribe=n.gql`
|
|
189
187
|
subscription onCreateMolecule ( $bundle: String! ) {
|
|
190
188
|
CreateMolecule( bundle: $bundle ) {
|
|
191
189
|
molecularHash,
|
|
@@ -230,7 +228,7 @@ ${this.stack}`}}class se extends I{constructor(e="The molecule does not contain
|
|
|
230
228
|
}
|
|
231
229
|
}
|
|
232
230
|
}
|
|
233
|
-
`}}class
|
|
231
|
+
`}},or=class extends ir{constructor(e){super(e),this.$__subscribe=n.gql`
|
|
234
232
|
subscription onWalletStatus ( $bundle: String!, $token: String! ) {
|
|
235
233
|
WalletStatus( bundle: $bundle, token: $token ) {
|
|
236
234
|
bundle,
|
|
@@ -239,7 +237,7 @@ ${this.stack}`}}class se extends I{constructor(e="The molecule does not contain
|
|
|
239
237
|
balance,
|
|
240
238
|
}
|
|
241
239
|
}
|
|
242
|
-
`}}class
|
|
240
|
+
`}},sr=class extends ir{constructor(e){super(e),this.$__subscribe=n.gql`
|
|
243
241
|
subscription onActiveWallet ( $bundle: String! ) {
|
|
244
242
|
ActiveWallet( bundle: $bundle ) {
|
|
245
243
|
address,
|
|
@@ -277,7 +275,7 @@ ${this.stack}`}}class se extends I{constructor(e="The molecule does not contain
|
|
|
277
275
|
}
|
|
278
276
|
}
|
|
279
277
|
}
|
|
280
|
-
`}}class
|
|
278
|
+
`}},cr=class extends ir{constructor(e){super(e),this.$__subscribe=n.gql`
|
|
281
279
|
subscription onActiveUser ( $metaType: String!, $metaId: String! ) {
|
|
282
280
|
ActiveUser( metaType: $metaType, metaId: $metaId ) {
|
|
283
281
|
bundleHash,
|
|
@@ -287,7 +285,7 @@ ${this.stack}`}}class se extends I{constructor(e="The molecule does not contain
|
|
|
287
285
|
createdAt,
|
|
288
286
|
updatedAt
|
|
289
287
|
}
|
|
290
|
-
}`}}class
|
|
288
|
+
}`}},lr=class extends G{constructor({query:e,json:t}){super({query:e,json:t,dataKey:`data.ActiveSession`})}},ur=class extends An{constructor(e,t){super(e,t),this.$__query=n.gql`mutation(
|
|
291
289
|
$bundleHash: String!,
|
|
292
290
|
$metaType: String!,
|
|
293
291
|
$metaId: String!,
|
|
@@ -315,7 +313,7 @@ ${this.stack}`}}class se extends I{constructor(e="The molecule does not contain
|
|
|
315
313
|
createdAt,
|
|
316
314
|
updatedAt
|
|
317
315
|
}
|
|
318
|
-
}`}createResponse(e){return new
|
|
316
|
+
}`}createResponse(e){return new lr({query:this,json:e})}},dr=class extends G{constructor({query:e,json:t}){super({query:e,json:t,dataKey:`data.ActiveUser`})}payload(){let e=this.data();if(!e)return null;let t=[];for(let n of e){let e={...n};e.jsonData&&=JSON.parse(e.jsonData),e.createdAt&&=new Date(e.createdAt),e.updatedAt&&=new Date(e.updatedAt),t.push(e)}return t}},fr=class extends K{constructor(e,t){super(e,t),this.$__query=n.gql`query ActiveUserQuery ($bundleHash:String, $metaType: String, $metaId: String) {
|
|
319
317
|
ActiveUser (bundleHash: $bundleHash, metaType: $metaType, metaId: $metaId) {
|
|
320
318
|
bundleHash,
|
|
321
319
|
metaType,
|
|
@@ -324,7 +322,7 @@ ${this.stack}`}}class se extends I{constructor(e="The molecule does not contain
|
|
|
324
322
|
createdAt,
|
|
325
323
|
updatedAt
|
|
326
324
|
}
|
|
327
|
-
}`}createResponse(e){return new
|
|
325
|
+
}`}createResponse(e){return new dr({query:this,json:e})}},pr=class extends K{constructor(e,t){super(e,t),this.$__query=n.gql`query( $slug: String, $slugs: [ String! ], $limit: Int, $order: String ) {
|
|
328
326
|
Token( slug: $slug, slugs: $slugs, limit: $limit, order: $order ) {
|
|
329
327
|
slug,
|
|
330
328
|
name,
|
|
@@ -334,7 +332,7 @@ ${this.stack}`}}class se extends I{constructor(e="The molecule does not contain
|
|
|
334
332
|
amount,
|
|
335
333
|
icon,
|
|
336
334
|
}
|
|
337
|
-
}`}createResponse(e){return new
|
|
335
|
+
}`}createResponse(e){return new G({query:this,json:e,dataKey:`data.Token`})}},mr=class extends w{constructor(e=`Authorization attempt rejected by ledger.`,t=null,n=null){super(e,t,n),this.name=`AuthorizationRejectedException`}},hr=class extends G{constructor({query:e,json:t}){super({query:e,json:t,dataKey:`data.Atom`})}payload(){let e=this.data();if(!e)return null;let t={instances:[],instanceCount:{},paginatorInfo:{}};if(e.instances){t.instances=e.instances;for(let e in t.instances){let n=t.instances[e];n.metasJson&&(t.instances[e].metas=JSON.parse(n.metasJson))}}return e.instanceCount&&(t.instanceCount=e.instanceCount),e.paginatorInfo&&(t.paginatorInfo=e.paginatorInfo),t}metas(){let e=this.payload(),t=[];if(e&&e.instances)for(let n of e.instances)n.metasJson&&t.push(JSON.parse(n.metasJson));return t}},gr=class extends K{constructor(e,t){super(e,t),this.$__query=n.gql`query(
|
|
338
336
|
$molecularHashes: [String!],
|
|
339
337
|
$bundleHashes: [String!],
|
|
340
338
|
$positions:[String!],
|
|
@@ -390,7 +388,7 @@ ${this.stack}`}}class se extends I{constructor(e="The molecule does not contain
|
|
|
390
388
|
total
|
|
391
389
|
}
|
|
392
390
|
}
|
|
393
|
-
}`}static createVariables({molecularHashes:e,molecularHash:t,bundleHashes:n,bundleHash:
|
|
391
|
+
}`}static createVariables({molecularHashes:e,molecularHash:t,bundleHashes:n,bundleHash:r,positions:i,position:a,walletAddresses:o,walletAddress:s,isotopes:c,isotope:l,tokenSlugs:u,tokenSlug:d,cellSlugs:f,cellSlug:p,batchIds:m,batchId:h,values:g,value:_,metaTypes:v,metaType:y,metaIds:b,metaId:ee,indexes:x,index:te,filter:ne,latest:re,queryArgs:S}){return t&&(e||=[],e.push(t)),r&&(n||=[],n.push(r)),a&&(i||=[],i.push(a)),s&&(o||=[],o.push(s)),l&&(c||=[],c.push(l)),d&&(u||=[],u.push(d)),p&&(f||=[],f.push(p)),h&&(m||=[],m.push(h)),_&&(g||=[],g.push(_)),y&&(v||=[],v.push(y)),ee&&(b||=[],b.push(ee)),te&&(x||=[],x.push(te)),{molecularHashes:e,bundleHashes:n,positions:i,walletAddresses:o,isotopes:c,tokenSlugs:u,cellSlugs:f,batchIds:m,values:g,metaTypes:v,metaIds:b,indexes:x,filter:ne,latest:re,queryArgs:S}}createResponse(e){return new hr({query:this,json:e})}},_r=class extends G{constructor({query:e,json:t}){super({query:e,json:t}),this.dataKey=`data.Policy`,this.init()}payload(){let e=this.data();return e&&e.callback?JSON.parse(e.callback):null}},vr=class extends K{constructor(e,t){super(e,t),this.$__query=n.gql`query( $metaType: String, $metaId: String, ) {
|
|
394
392
|
Policy( metaType: $metaType, metaId: $metaId ) {
|
|
395
393
|
molecularHash,
|
|
396
394
|
position,
|
|
@@ -401,7 +399,7 @@ ${this.stack}`}}class se extends I{constructor(e="The molecule does not contain
|
|
|
401
399
|
rule,
|
|
402
400
|
createdAt
|
|
403
401
|
}
|
|
404
|
-
}`}createResponse(e){return new
|
|
402
|
+
}`}createResponse(e){return new _r({query:this,json:e})}},yr=class extends G{constructor({query:e,json:t}){super({query:e,json:t,dataKey:`data.MetaTypeViaAtom`})}payload(){let e=this.data();if(!e||e.length===0)return null;let 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}},br=class extends K{constructor(e,t){super(e,t),this.$__query=n.gql`query ($metaTypes: [String!], $metaIds: [String!], $values: [String!], $keys: [String!], $latest: Boolean, $filter: [MetaFilter!], $queryArgs: QueryArgs, $countBy: String, $atomValues: [String!], $cellSlugs: [String!] ) {
|
|
405
403
|
MetaTypeViaAtom(
|
|
406
404
|
metaTypes: $metaTypes
|
|
407
405
|
metaIds: $metaIds
|
|
@@ -434,7 +432,7 @@ ${this.stack}`}}class se extends I{constructor(e="The molecule does not contain
|
|
|
434
432
|
total
|
|
435
433
|
}
|
|
436
434
|
}
|
|
437
|
-
}`}static createVariables({metaType:e=null,metaId:t=null,key:n=null,value:
|
|
435
|
+
}`}static createVariables({metaType:e=null,metaId:t=null,key:n=null,value:r=null,keys:i=null,values:a=null,atomValues:o=null,latest:s=null,filter:c=null,queryArgs:l=null,countBy:u=null,cellSlug:d=null}){let f={};return o&&(f.atomValues=o),i&&(f.keys=i),a&&(f.values=a),e&&(f.metaTypes=typeof e==`string`?[e]:e),t&&(f.metaIds=typeof t==`string`?[t]:t),d&&(f.cellSlugs=typeof d==`string`?[d]:d),u&&(f.countBy=u),c&&(f.filter=c),n&&r&&(f.filter=f.filter||[],f.filter.push({key:n,value:r,comparison:`=`})),f.latest=s===!0,l&&((l.limit===void 0||l.limit===0)&&(l.limit=`*`),f.queryArgs=l),f}createResponse(e){return new yr({query:this,json:e})}},xr=class e extends G{constructor({query:e,json:t}){super({query:e,json:t,dataKey:`data.MetaTypeViaAtom`})}static extractMetasFromMolecule(e,t,n){if(!e||!e.atoms)return[];let r=[];for(let i of e.atoms){if(i.metaType!==t||i.metaId!==n||!i.metasJson)continue;let a;try{if(a=JSON.parse(i.metasJson),!Array.isArray(a))continue}catch{continue}for(let t of a)r.push({molecularHash:e.molecularHash,position:i.position,key:t.key,value:t.value,createdAt:i.createdAt})}return r}payload(){let t=this.data();if(!t||t.length===0)return null;let n={instances:{},instanceCount:{},paginatorInfo:{}},r=t.pop();return r.instances&&(n.instances=r.instances.map(t=>{let n=t.metas;return(!n||n.length===0)&&(n=e.extractMetasFromMolecule(t.molecule,t.metaType,t.metaId)),{...t,metas:n}})),r.instanceCount&&(n.instanceCount=r.instanceCount),r.paginatorInfo&&(n.paginatorInfo=r.paginatorInfo),n}verifyIntegrity(){let e=[],t=this.data();if(!t||t.length===0)return{verified:!0,molecules:e};let n=t[t.length-1]?.instances||[];for(let t of n)t.molecule&&e.push(an.verifyFromServerData(t.molecule));return{verified:e.length===0||e.every(e=>e.verified),molecules:e}}},Sr=class extends K{constructor(e,t){super(e,t),this.$__query=n.gql`query ($metaTypes: [String!], $metaIds: [String!], $values: [String!], $keys: [String!], $latest: Boolean, $filter: [MetaFilter!], $queryArgs: QueryArgs, $countBy: String, $atomValues: [String!], $cellSlugs: [String!] ) {
|
|
438
436
|
MetaTypeViaAtom(
|
|
439
437
|
metaTypes: $metaTypes
|
|
440
438
|
metaIds: $metaIds
|
|
@@ -488,7 +486,7 @@ ${this.stack}`}}class se extends I{constructor(e="The molecule does not contain
|
|
|
488
486
|
total
|
|
489
487
|
}
|
|
490
488
|
}
|
|
491
|
-
}`}static createVariables({metaType:e=null,metaId:t=null,key:n=null,value:
|
|
489
|
+
}`}static createVariables({metaType:e=null,metaId:t=null,key:n=null,value:r=null,keys:i=null,values:a=null,atomValues:o=null,latest:s=null,filter:c=null,queryArgs:l=null,countBy:u=null,cellSlug:d=null}){let f={};return o&&(f.atomValues=o),i&&(f.keys=i),a&&(f.values=a),e&&(f.metaTypes=typeof e==`string`?[e]:e),t&&(f.metaIds=typeof t==`string`?[t]:t),d&&(f.cellSlugs=typeof d==`string`?[d]:d),u&&(f.countBy=u),c&&(f.filter=c),n&&r&&(f.filter=f.filter||[],f.filter.push({key:n,value:r,comparison:`=`})),f.latest=s===!0,l&&((l.limit===void 0||l.limit===0)&&(l.limit=`*`),f.queryArgs=l),f}createResponse(e){return new xr({query:this,json:e})}},Cr=class extends G{constructor({query:e,json:t}){super({query:e,json:t,dataKey:`data.embeddingStatus`})}payload(){let e=this.data();return!e||!Array.isArray(e)||e.length===0?null:e}},wr=class extends K{constructor(e,t){super(e,t),this.$__query=n.gql`query( $metaType: String, $metaId: String, $instances: [EmbeddingStatusInput!] ) {
|
|
492
490
|
embeddingStatus( metaType: $metaType, metaId: $metaId, instances: $instances ) {
|
|
493
491
|
metaType,
|
|
494
492
|
metaId,
|
|
@@ -498,15 +496,15 @@ ${this.stack}`}}class se extends I{constructor(e="The molecule does not contain
|
|
|
498
496
|
embeddedAt,
|
|
499
497
|
model
|
|
500
498
|
}
|
|
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 is({query:this,json:e})}}class as extends j{}class os extends B{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 as({query:this,json:e})}}class ls extends B{fillMolecule({amount:e,tradeRates:t}){this.$__molecule.initDepositBuffer({amount:e,tradeRates:t}),this.$__molecule.sign({}),this.$__molecule.check(this.$__molecule.sourceWallet)}}class cs extends B{fillMolecule({recipients:e,signingWallet:t}){this.$__molecule.initWithdrawBuffer({recipients:e,signingWallet:t}),this.$__molecule.sign({}),this.$__molecule.check(this.$__molecule.sourceWallet)}}function ee(a,e,t,n){return new(t||(t=Promise))((function(s,r){function i(u){try{c(n.next(u))}catch(l){r(l)}}function o(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(d){d(l)}))).then(i,o)}c((n=n.apply(a,[])).next())}))}function te(a,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:o(0),throw:o(1),return:o(2)},typeof Symbol=="function"&&(r[Symbol.iterator]=function(){return this}),r;function o(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(a,i)}catch(d){l=[6,d],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])}}}typeof SuppressedError=="function"&&SuppressedError;var W={exclude:[],include:[],logging:!0},us={},dr={timeout:"true"},X=function(a,e){typeof window<"u"&&(us[a]=e)},pr=function(){return Object.fromEntries(Object.entries(us).filter((function(a){var e,t=a[0];return!(!((e=W?.exclude)===null||e===void 0)&&e.includes(t))})).filter((function(a){var e,t,n,s,r=a[0];return!((e=W?.include)===null||e===void 0)&&e.some((function(i){return i.includes(".")}))?(t=W?.include)===null||t===void 0?void 0:t.some((function(i){return i.startsWith(r)})):((n=W?.include)===null||n===void 0?void 0:n.length)===0||((s=W?.include)===null||s===void 0?void 0:s.includes(r))})).map((function(a){return[a[0],(0,a[1])()]})))};function nt(a){return a^=a>>>16,a=Math.imul(a,2246822507),a^=a>>>13,a=Math.imul(a,3266489909),(a^=a>>>16)>>>0}var N=new Uint32Array([597399067,2869860233,951274213,2716044179]);function J(a,e){return a<<e|a>>>32-e}function Mt(a,e){var t;if(e===void 0&&(e=0),e=e?0|e:0,typeof a=="string"&&(t=a,a=new TextEncoder().encode(t).buffer),!(a 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 o=r.byteLength/16|0,c=new Uint32Array(r,0,4*o),u=0;u<o;u++){var l=c.subarray(4*u,4*(u+1));l[0]=Math.imul(l[0],N[0]),l[0]=J(l[0],15),l[0]=Math.imul(l[0],N[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],N[1]),l[1]=J(l[1],16),l[1]=Math.imul(l[1],N[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],N[2]),l[2]=J(l[2],17),l[2]=Math.imul(l[2],N[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],N[3]),l[3]=J(l[3],18),l[3]=Math.imul(l[3],N[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}})(a,n),(function(r,i){var o=r.byteLength/16|0,c=r.byteLength%16,u=new Uint32Array(4),l=new Uint8Array(r,16*o,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],N[3]),u[3]=J(u[3],18),u[3]=Math.imul(u[3],N[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],N[2]),u[2]=J(u[2],17),u[2]=Math.imul(u[2],N[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],N[1]),u[1]=J(u[1],16),u[1]=Math.imul(u[1],N[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],N[0]),u[0]=J(u[0],15),u[0]=Math.imul(u[0],N[1]),i[0]=i[0]^u[0]}})(a,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]=nt(i[0]),i[1]=nt(i[1]),i[2]=nt(i[2]),i[3]=nt(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})(a,n);var s=new Uint8Array(n.buffer);return Array.from(s).map((function(r){return r.toString(16).padStart(2,"0")})).join("")}function fr(a,e){return new Promise((function(t){setTimeout((function(){return t(e)}),a)}))}function yr(a,e,t){return Promise.all(a.map((function(n){return Promise.race([n,fr(e,t)])})))}var mr="0.19.1";function gr(){return mr}function hs(){return ee(this,void 0,void 0,(function(){var a,e,t,n,s;return te(this,(function(r){switch(r.label){case 0:return r.trys.push([0,2,,3]),a=pr(),e=Object.keys(a),[4,yr(Object.values(a),W?.timeout||1e3,dr)];case 1:return t=r.sent(),n=t.filter((function(i){return i!==void 0})),s={},n.forEach((function(i,o){s[e[o]]=i})),[2,ds(s,W.exclude||[],W.include||[],"")];case 2:throw r.sent();case 3:return[2]}}))}))}function ds(a,e,t,n){n===void 0&&(n="");for(var s={},r=function(u,l){var d=n+u+".";if(typeof l!="object"||Array.isArray(l)){var f=e.some((function(v){return d.startsWith(v)})),p=t.some((function(v){return d.startsWith(v)}));f&&!p||(s[u]=l)}else{var w=ds(l,e,t,d);Object.keys(w).length>0&&(s[u]=w)}},i=0,o=Object.entries(a);i<o.length;i++){var c=o[i];r(c[0],c[1])}return s}function br(a){return ee(this,void 0,void 0,(function(){var e,t;return te(this,(function(n){switch(n.label){case 0:return n.trys.push([0,2,,3]),[4,hs()];case 1:return e=n.sent(),t=Mt(JSON.stringify(e)),Math.random()<.001&&W.logging&&(function(s,r){ee(this,void 0,void 0,(function(){var i,o;return te(this,(function(c){switch(c.label){case 0:if(i="https://logging.thumbmarkjs.com/v1/log",o={thumbmark:s,components:r,version:gr()},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(o)})];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 wr(a){for(var e=0,t=0;t<a.length;++t)e+=Math.abs(a[t]);return e}function ps(a,e,t){for(var n=[],s=0;s<a[0].data.length;s++){for(var r=[],i=0;i<a.length;i++)r.push(a[i].data[s]);n.push(kr(r))}var o=new Uint8ClampedArray(n);return new ImageData(o,e,t)}function kr(a){if(a.length===0)return 0;for(var e={},t=0,n=a;t<n.length;t++)e[r=n[t]]=(e[r]||0)+1;var s=a[0];for(var r in e)e[r]>e[s]&&(s=parseInt(r,10));return s}function He(){if(typeof navigator>"u")return{name:"unknown",version:"unknown"};for(var a=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=a.match(s);if(r&&r.groups)return{name:e[r.groups.name]||r.groups.name,version:r.groups.version}}return{name:"unknown",version:"unknown"}}X("audio",(function(){return ee(this,void 0,void 0,(function(){return te(this,(function(a){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,o=n.createDynamicsCompressor();o.threshold.value=-50,o.knee.value=40,o.ratio.value=12,o.attack.value=0,o.release.value=.2,r.connect(o),o.connect(n.destination),r.start(),n.oncomplete=function(c){i=c.renderedBuffer.getChannelData(0),e({sampleHash:wr(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 Sr=He().name!=="SamsungBrowser"?1:3,fs=280,ys=20;He().name!="Firefox"&&X("canvas",(function(){return document.createElement("canvas").getContext("2d"),new Promise((function(a){var e=Array.from({length:Sr},(function(){return(function(){var t=document.createElement("canvas"),n=t.getContext("2d");if(!n)return new ImageData(1,1);t.width=fs,t.height=ys;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})()}));a({commonImageDataHash:Mt(ps(e,fs,ys).data.toString()).toString()})}))}));var Tt,_r=["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"],$r=["monospace","sans-serif","serif"];function ms(a,e){if(!a)throw new Error("Canvas context not supported");return a.font,a.font="72px ".concat(e),a.measureText("WwMmLli0Oo").width}function Ar(){var a,e=document.createElement("canvas"),t=(a=e.getContext("webgl"))!==null&&a!==void 0?a: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 o=(t.getParameter(i.UNMASKED_VENDOR_WEBGL)||"").toString(),c=(t.getParameter(i.UNMASKED_RENDERER_WEBGL)||"").toString();o&&(r.vendorUnmasked=o),c&&(r.rendererUnmasked=c)}}return r}catch{}return"undefined"}function vr(){var a=new Float32Array(1),e=new Uint8Array(a.buffer);return a[0]=1/0,a[0]=a[0]-a[0],e[3]}function Ir(a,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 o=r[0],c=1;return Object.keys(i).forEach((function(u){i[u]>c&&(o=u,c=i[u])})),o})(a.map((function(r){return n in r?r[n]:void 0})).filter((function(r){return r!==void 0})));s&&(t[n]=s)})),t}function Mr(){var a=[],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&&a.push("".concat(t,": ").concat(n))}))})),a}function Tr(){if(window.location.protocol==="https:"&&typeof window.ApplePaySession=="function")try{for(var a=window.ApplePaySession.supportsVersion,e=15;e>0;e--)if(a(e))return e}catch{return 0}return 0}He().name!="Firefox"&&X("fonts",(function(){var a=this;return new Promise((function(e,t){try{(function(n){var s;ee(this,void 0,void 0,(function(){var r,i,o;return te(this,(function(c){switch(c.label){case 0:return document.body?[3,2]:[4,(u=50,new Promise((function(d){return setTimeout(d,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),!(o=r.contentDocument||((s=r.contentWindow)===null||s===void 0?void 0:s.document)))throw new Error("Iframe document is not accessible");return n({iframe:o}),setTimeout((function(){document.body.removeChild(r)}),0),[2]}var u,l}))}))})((function(n){var s=n.iframe;return ee(a,void 0,void 0,(function(){var r,i,o,c;return te(this,(function(u){return r=s.createElement("canvas"),i=r.getContext("2d"),o=$r.map((function(l){return ms(i,l)})),c={},_r.forEach((function(l){var d=ms(i,l);o.includes(d)||(c[l]=d)})),e(c),[2]}))}))}))}catch{t({error:"unsupported"})}}))})),X("hardware",(function(){return new Promise((function(a,e){var t=navigator.deviceMemory!==void 0?navigator.deviceMemory:0,n=window.performance&&window.performance.memory?window.performance.memory:0;a({videocard:Ar(),architecture:vr(),deviceMemory:t.toString()||"undefined",jsHeapSizeLimit:n.jsHeapSizeLimit||0})}))})),X("locales",(function(){return new Promise((function(a){a({languages:navigator.language,timezone:Intl.DateTimeFormat().resolvedOptions().timeZone})}))})),X("permissions",(function(){return ee(this,void 0,void 0,(function(){var a;return te(this,(function(e){return Tt=W?.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"],a=Array.from({length:W?.retries||3},(function(){return(function(){return ee(this,void 0,void 0,(function(){var t,n,s,r,i;return te(this,(function(o){switch(o.label){case 0:t={},n=0,s=Tt,o.label=1;case 1:if(!(n<s.length))return[3,6];r=s[n],o.label=2;case 2:return o.trys.push([2,4,,5]),[4,navigator.permissions.query({name:r})];case 3:return i=o.sent(),t[r]=i.state.toString(),[3,5];case 4:return o.sent(),[3,5];case 5:return n++,[3,1];case 6:return[2,t]}}))}))})()})),[2,Promise.all(a).then((function(t){return Ir(t,Tt)}))]}))}))})),X("plugins",(function(){var a=[];if(navigator.plugins)for(var e=0;e<navigator.plugins.length;e++){var t=navigator.plugins[e];a.push([t.name,t.filename,t.description].join("|"))}return new Promise((function(n){n({plugins:a})}))})),X("screen",(function(){return new Promise((function(a){a({is_touchscreen:navigator.maxTouchPoints>0,maxTouchPoints:navigator.maxTouchPoints,colorDepth:screen.colorDepth,mediaMatches:Mr()})}))})),X("system",(function(){return new Promise((function(a){var e=He();a({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:Tr()})}))}));var L,Cr=He().name!=="SamsungBrowser"?1:3,g=null;X("webgl",(function(){return ee(this,void 0,void 0,(function(){var a;return te(this,(function(e){typeof document<"u"&&((L=document.createElement("canvas")).width=200,L.height=100,g=L.getContext("webgl"));try{if(!g)throw new Error("WebGL not supported");return a=Array.from({length:Cr},(function(){return(function(){try{if(!g)throw new Error("WebGL not supported");var t=`
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
`,s=g.createShader(g.VERTEX_SHADER),r=g.createShader(g.FRAGMENT_SHADER);if(!s||!r)throw new Error("Failed to create shaders");if(g.shaderSource(s,t),g.shaderSource(r,n),g.compileShader(s),!g.getShaderParameter(s,g.COMPILE_STATUS))throw new Error("Vertex shader compilation failed: "+g.getShaderInfoLog(s));if(g.compileShader(r),!g.getShaderParameter(r,g.COMPILE_STATUS))throw new Error("Fragment shader compilation failed: "+g.getShaderInfoLog(r));var i=g.createProgram();if(!i)throw new Error("Failed to create shader program");if(g.attachShader(i,s),g.attachShader(i,r),g.linkProgram(i),!g.getProgramParameter(i,g.LINK_STATUS))throw new Error("Shader program linking failed: "+g.getProgramInfoLog(i));g.useProgram(i);for(var o=137,c=new Float32Array(4*o),u=2*Math.PI/o,l=0;l<o;l++){var d=l*u;c[4*l]=0,c[4*l+1]=0,c[4*l+2]=Math.cos(d)*(L.width/2),c[4*l+3]=Math.sin(d)*(L.height/2)}var f=g.createBuffer();g.bindBuffer(g.ARRAY_BUFFER,f),g.bufferData(g.ARRAY_BUFFER,c,g.STATIC_DRAW);var p=g.getAttribLocation(i,"position");g.enableVertexAttribArray(p),g.vertexAttribPointer(p,2,g.FLOAT,!1,0,0),g.viewport(0,0,L.width,L.height),g.clearColor(0,0,0,1),g.clear(g.COLOR_BUFFER_BIT),g.drawArrays(g.LINES,0,2*o);var w=new Uint8ClampedArray(L.width*L.height*4);return g.readPixels(0,0,L.width,L.height,g.RGBA,g.UNSIGNED_BYTE,w),new ImageData(w,L.width,L.height)}catch{return new ImageData(1,1)}finally{g&&(g.bindBuffer(g.ARRAY_BUFFER,null),g.useProgram(null),g.viewport(0,0,g.drawingBufferWidth,g.drawingBufferHeight),g.clearColor(0,0,0,0))}})()})),[2,{commonImageHash:Mt(ps(a,L.width,L.height).data.toString()).toString()}]}catch{return[2,{webgl:"unsupported"}]}return[2]}))}))}));var ye=function(a,e,t,n){for(var s=(t-e)/n,r=0,i=0;i<n;i++)r+=a(e+(i+.5)*s);return r*s};X("math",(function(){return ee(void 0,void 0,void 0,(function(){return te(this,(function(a){return[2,{acos:Math.acos(.5),asin:ye(Math.asin,-1,1,97),atan:ye(Math.atan,-1,1,97),cos:ye(Math.cos,0,Math.PI,97),cosh:Math.cosh(1.2857142857142858),e:Math.E,largeCos:Math.cos(1e20),largeSin:Math.sin(1e20),largeTan:Math.tan(1e20),log:Math.log(1e3),pi:Math.PI,sin:ye(Math.sin,-Math.PI,Math.PI,97),sinh:ye(Math.sinh,-1.2857142857142858,.7777777777777778,97),sqrt:Math.sqrt(2),tan:ye(Math.tan,0,2*Math.PI,97),tanh:ye(Math.tanh,-1.2857142857142858,.7777777777777778,97)}]}))}))}));const xr="query ( $Hash: String! ) { CipherHash ( Hash: $Hash ) { hash } }";function Er(a){const e=(a||"").match(/\b(query|mutation|subscription)\b/i),t=e?e[1].toLowerCase():"query",n=(a||"").indexOf("{"),s=n>=0?a.slice(n+1).match(/[A-Za-z_][A-Za-z0-9_]*/):null;return{type:t,name:s?s[0]:""}}class Rr{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=Ss.createClient({url:t.socketUri,connectionParams:()=>({authToken:this.$__authToken})});s.push(T.subscriptionExchange({forwardSubscription:i=>({subscribe:o=>({unsubscribe:r.subscribe(i,o)})})}))}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}=Er(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 p=await n.encryptStringML768(t.body,s);i={...t,body:JSON.stringify({query:xr,variables:{Hash:p}})},r=!0}const o=await fetch(e,i);if(!r)return o;const c=await o.text(),u={status:o.status,statusText:o.statusText,headers:o.headers};let l;try{l=JSON.parse(c)}catch{return new Response(c,u)}const d=l&&l.data&&l.data.CipherHash&&l.data.CipherHash.hash;if(typeof d!="string")return new Response(c,u);const f=await n.decryptMyMessageML768(JSON.parse(d));return new Response(f??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=rt.pipe(this.$__client.subscription(n,s),rt.map(o=>{t(this.formatResponse(o))}),rt.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 qr{constructor({uri:e,cellSlug:t=null,client:n=null,socket:s=null,serverSdkVersion:r=3,logging:i=!1,defaultRequestPolicy:o=null,secretStorage:c=null}){this.initialize({uri:e,cellSlug:t,socket:s,client:n,serverSdkVersion:r,logging:i,defaultRequestPolicy:o,secretStorage:c})}initialize({uri:e,cellSlug:t=null,socket:n=null,client:s=null,serverSdkVersion:r=3,logging:i=!1,defaultRequestPolicy:o=null,secretStorage:c=null}){this.reset(),this.$__secretStorage=c,this.$__logging=i,this.$__defaultRequestPolicy=o,this.$__authTokenObjects={},this.$__authInProcess=!1,this.abortControllers=new Map,this.setUri(e),t&&this.setCellSlug(t);for(const u in this.$__uris){const l=this.$__uris[u];this.$__authTokenObjects[l]=null}this.log("info",`KnishIOClient::initialize() - Initializing new Knish.IO client session for SDK version ${r}...`),this.$__client=s||new Rr({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.$__secretStorage=null,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&&this.$__secret.length>0||!!this.$__secretStorage&&!!this.$__bundle&&this.$__bundle.length>0}setSecret(e){if(this.$__secret=e,this.$__bundle=this.hashSecret(e,"setSecret"),this.$__secretStorage)this.$__secretStorage.storeSecret(this.$__bundle,e);else{const t=new Ye;t.storeSecret(this.$__bundle,e),this.$__secretStorage=t}}hashSecret(e,t=null){return this.log("info",`KnishIOClient::hashSecret(${t?`source: ${t}`:""}) - Computing wallet bundle from secret...`),ce(e)}getSecret(){if(!this.hasSecret())throw new We("KnishIOClient::getSecret() - Unable to find a stored secret! Have you set a secret?");return this.$__secret}setSecretStorage(e,t=null){this.$__secretStorage=e,t&&(this.$__bundle=t)}getSecretStorage(){return this.$__secretStorage}async retrieveSecret(e={}){return this.$__secret&&this.$__secret.length>0?this.$__secret:this.$__secretStorage&&this.$__bundle&&this.$__bundle.length>0?await this.$__secretStorage.retrieveSecret(this.$__bundle,e):null}hasBundle(){return!!this.$__bundle}getBundle(){if(!this.hasBundle())throw new We("KnishIOClient::getBundle() - Unable to find a stored bundle! Have you set a secret?");return this.$__bundle}getFingerprint(){return br()}getFingerprintData(){return hs()}async getSourceWallet(){let e=(await this.queryContinuId({bundle:this.getBundle()})).payload();return e?e.key=S.generateKey({secret:this.getSecret(),token:e.token,position:e.position}):e=new S({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||(this.$__secret&&this.$__secret.length>0?e=this.getSecret():this.$__secretStorage&&this.$__bundle&&this.$__bundle.length>0&&(e=await this.$__secretStorage.retrieveSecret(this.$__bundle))),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||S.create({secret:e,bundle:t,token:"USER",batchId:n.batchId,characters:n.characters}),new z({secret:e,bundle:t,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 B))throw new Y(`${this.constructor.name}::createMoleculeMutation() - This method only accepts MutationProposeMolecule!`);return this.lastMoleculeQuery=s,s}async executeQuery(e,t=null,n={}){if(this.$__authToken&&this.$__authToken.isExpired()&&!this.$__authInProcess){this.log("info","KnishIOClient::executeQuery() - Access token is expired. Getting new one...");const i=this.$__secret||await this.retrieveSecret()||"";await this.requestAuthToken({secret:i,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 o=await e.execute({variables:t,context:{fetchOptions:{signal:s.signal},...i}});return this.abortControllers.delete(r),o}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($n);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||ae.cmp(s.balance,t)<0)throw new G;if(!s.position||!s.address)throw new G("Source wallet can not be a shadow wallet.");return s}async subscribeCreateMolecule({bundle:e,closure:t}){return await this.createSubscribe(lr).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(cr).execute({variables:{bundle:e||this.getBundle(),token:t},closure:n})}subscribeActiveWallet({bundle:e,closure:t}){return this.createSubscribe(ur).execute({variables:{bundle:e||this.getBundle()},closure:t})}subscribeActiveSession({metaType:e,metaId:t,closure:n}){return this.createSubscribe(hr).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:o=null,queryArgs:c=null,count:u=null,countBy:l=null,throughAtom:d=!0,throughMolecule:f=!1,values:p=null,keys:w=null,atomValues:v=null,requestPolicy:O=null}){this.log("info",`KnishIOClient::queryMeta() - Querying metaType: ${e}, metaId: ${t}...`);let y,m;return f?(y=this.createQuery(vt),m=vt.createVariables({metaType:e,metaId:t,key:n,value:s,latest:r,filter:o,queryArgs:c,countBy:l,values:p,keys:w,atomValues:v,cellSlug:this.getCellSlug()})):d?(y=this.createQuery(At),m=At.createVariables({metaType:e,metaId:t,key:n,value:s,latest:r,filter:o,queryArgs:c,countBy:l,values:p,keys:w,atomValues:v,cellSlug:this.getCellSlug()})):(y=this.createQuery(wt),m=wt.createVariables({metaType:e,metaId:t,key:n,value:s,latest:r,filter:o,queryArgs:c,count:u,countBy:l,cellSlug:this.getCellSlug()})),this.executeQuery(y,m,O?{requestPolicy:O}:{})}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(o=>o.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(It),i=It.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(Se);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(vn);return await this.executeQuery(t,{batchId:e})}async queryAtom({molecularHashes:e,molecularHash:t,bundleHashes:n,bundleHash:s,positions:r,position:i,walletAddresses:o,walletAddress:c,isotopes:u,isotope:l,tokenSlugs:d,tokenSlug:f,cellSlugs:p,cellSlug:w,batchIds:v,batchId:O,values:y,value:m,metaTypes:k,metaType:R,metaIds:_,metaId:A,indexes:M,index:x,filter:$,latest:F,queryArgs:U={limit:15,offset:1}}){this.log("info","KnishIOClient::queryAtom() - Querying atom instances");const ve=this.createQuery($t);return await this.executeQuery(ve,$t.createVariables({molecularHashes:e,molecularHash:t,bundleHashes:n,bundleHash:s,positions:r,position:i,walletAddresses:o,walletAddress:c,isotopes:u,isotope:l,tokenSlugs:d,tokenSlug:f,cellSlugs:p,cellSlug:w,batchIds:v,batchId:O,values:y,value:m,metaTypes:k,metaType:R,metaIds:_,metaId:A,indexes:M,index:x,filter:$,latest:F,queryArgs:U}))}async createWallet({token:e}){const t=new S({secret:this.getSecret(),token:e}),n=await this.createMoleculeMutation({mutationClass:jn});return n.fillMolecule(t),await this.executeQuery(n)}async queryActiveSession({bundleHash:e,metaType:t,metaId:n}){const s=this.createQuery(Yn);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:o,timeZone:c,json:u={}}){const l=this.createQuery(Xn);return await this.executeQuery(l,{bundleHash:e,metaType:t,metaId:n,ipAddress:s,browser:r,osCpu:i,resolution:o,timeZone:c,json:JSON.stringify(u)})}async createToken({token:e,amount:t=null,meta:n=null,batchId:s=null,units:r=[]}){const i=C.get(n||{},"fungibility");if(i==="stackable"&&(n.batchId=s||Me({})),["nonfungible","stackable"].includes(i)&&r.length>0){if(C.get(n||{},"decimals")>0)throw new Jn;if(t>0)throw new _e;t=r.length,n.splittable=1,n.decimals=0,n.tokenUnits=JSON.stringify(r)}const o=new S({secret:this.getSecret(),bundle:this.getBundle(),token:e,batchId:s}),c=await this.createMoleculeMutation({mutationClass:Cn});return c.fillMolecule({recipientWallet:o,amount:t,meta:n||{}}),await this.executeQuery(c)}async createRule({metaType:e,metaId:t,rule:n,policy:s={}}){const r=await this.createMoleculeMutation({mutationClass:os,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:Pn,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:Kn,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:Fn,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:On});return s.fillMolecule({type:e,contact:t,code:n}),await this.executeQuery(s)}async linkIdentifier({type:e,contact:t}){const n=this.createQuery(Qn);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:B,molecule:s});return await this.executeQuery(r)}async queryPolicy({metaType:e,metaId:t}){const n=this.createQuery(ss);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(Sn);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(kn);return this.executeQuery(s,{bundleHashes:e}).then(r=>n?r:r.payload())}async queryContinuId({bundle:e}){const t=this.createQuery(bn);return this.executeQuery(t,{bundle:e})}async requestTokens({token:e,to:t,amount:n=null,units:s=[],meta:r=null,batchId:i=null}){let o,c;r=r||{};const u=this.createQuery(es),l=await this.executeQuery(u,{slug:e}),d=C.get(l.data(),"0.fungibility")==="stackable";if(!d&&i!==null)throw new qe("Expected Batch ID = null for non-stackable tokens.");if(d&&i===null&&(i=Me({})),s.length>0){if(n>0)throw new _e;n=s.length,r.tokenUnits=JSON.stringify(s)}t?(Object.prototype.toString.call(t)==="[object String]"&&(S.isBundleHash(t)?(o="walletBundle",c=t):t=S.create({secret:t,token:e})),t instanceof S&&(o="wallet",r.position=t.position,r.bundle=t.bundle,c=t.address)):(o="walletBundle",c=this.getBundle());const f=await this.createMoleculeMutation({mutationClass:En});return f.fillMolecule({token:e,amount:n,metaType:o,metaId:c,meta:r,batchId:i}),await this.executeQuery(f)}async claimShadowWallet({token:e,batchId:t=null,molecule:n=null}){const s=await this.createMoleculeMutation({mutationClass:Wn,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 St;t.forEach(s=>{if(!s.isShadow())throw new St});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 _e;n=s.length}if(i===null&&(i=await this.querySourceWallet({token:t,amount:n})),i===null||ae.cmp(i.balance,n)<0)throw new G;const o=S.create({bundle:e,token:t});r!==null?o.batchId=r:o.initBatchId({sourceWallet:i});const c=i.createRemainder(this.getSecret());i.splitUnits(s,c,o);const u=await this.createMolecule({sourceWallet:i,remainderWallet:c}),l=await this.createMoleculeMutation({mutationClass:kt,molecule:u});return l.fillMolecule({recipientWallet:o,amount:n}),await this.executeQuery(l)}async transferTokens({token:e,recipients:t,sourceWallet:n=null}){const s=t.map(l=>{const d=l.units||[];if(d.length>0){if(l.amount>0)throw new _e;return d.length}return l.amount||0}),r=s.reduce((l,d)=>l+d,0);if(n===null&&(n=await this.querySourceWallet({token:e,amount:r})),n===null||ae.cmp(n.balance,r)<0)throw new G;const i=t.map(l=>{const d=S.create({bundle:l.bundleHash,token:e});return l.batchId!==void 0&&l.batchId!==null?d.batchId=l.batchId:d.initBatchId({sourceWallet:n}),d}),o=n.createRemainder(this.getSecret());n.splitUnitsMulti(t.map(l=>l.units||[]),i,o);const c=await this.createMolecule({sourceWallet:n,remainderWallet:o}),u=await this.createMoleculeMutation({mutationClass:kt,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}),o=await this.createMoleculeMutation({mutationClass:ls,molecule:i});return o.fillMolecule({amount:t,tradeRates:n}),await this.executeQuery(o)}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}),o=await this.createMoleculeMutation({mutationClass:cs,molecule:i}),c={};return c[this.getBundle()]=t,o.fillMolecule({recipients:c,signingWallet:s}),await this.executeQuery(o)}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 _e;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 o=await this.createMoleculeMutation({mutationClass:B,molecule:i});return this.executeQuery(o)}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 G("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 o=await this.createMoleculeMutation({mutationClass:B,molecule:i});return this.executeQuery(o)}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 G("Source wallet is missing or invalid.");if(!r.tokenUnits||!r.tokenUnits.length)throw new G("Source wallet does not have token units.");if(!s.length)throw new G("Fused token unit list is empty.");const i=[];r.tokenUnits.forEach(d=>{i.push(d.id)}),s.forEach(d=>{if(!i.includes(d))throw new G(`Fused token unit ID = ${d} does not found in the source wallet.`)});const o=S.create({bundle:e,token:t});o.initBatchId({sourceWallet:r});const c=r.createRemainder(this.getSecret());r.splitUnits(s,c),typeof n=="string"&&(n=new ue(n,n,{})),n.metas.fusedTokenUnits=r.getTokenUnitsData(),o.tokenUnits=[n];const u=await this.createMolecule({sourceWallet:r,remainderWallet:c});u.fuseToken(r.tokenUnits,o),u.sign({bundle:this.getBundle()}),u.check();const l=await this.createMoleculeMutation({mutationClass:B,molecule:u});return this.executeQuery(l)}async requestGuestAuthToken({cellSlug:e,encrypt:t}){this.setCellSlug(e);const n=new S({secret:De(await this.getFingerprint()),token:"AUTH"}),s=await this.createQuery(zn),r={cellSlug:e,pubkey:n.pubkey,encrypt:t},i=await s.execute({variables:r});if(i.success()){const o=ke.create({token:i.token(),expiresAt:i.expiresAt(),pubkey:i.pubKey(),encrypt:i.encrypt()},n);this.setAuthToken(o)}else throw new _t(`KnishIOClient::requestGuestAuthToken() - Authorization attempt rejected by ledger. Reason: ${i.reason()}`);return i}async requestProfileAuthToken({secret:e,encrypt:t}){this.setSecret(e);const n=new S({secret:e,token:"AUTH"}),s=await this.createMolecule({secret:e,sourceWallet:n}),r=await this.createMoleculeMutation({mutationClass:Mn,molecule:s}),i={encrypt:t?"true":"false"};n.pubkey&&(i.walletPubkey=n.pubkey),r.fillMolecule({meta:i});const o=await r.execute({});if(o.success()){const c=ke.create({token:o.token(),expiresAt:o.expiresAt(),pubkey:o.pubKey(),encrypt:o.encrypt()},n);this.setAuthToken(c)}else throw new _t(`KnishIOClient::requestProfileAuthToken() - Authorization attempt rejected by ledger. Reason: ${o.reason()}`);return o}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=De(t)),n&&this.setCellSlug(n),e===null&&this.$__secretStorage&&this.$__bundle&&(e=await this.$__secretStorage.retrieveSecret(this.$__bundle)),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 Or 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(!C.has(this.payload(),e))throw new ne(`ResponseAuthorizationGuest::payloadKey() - '${e}' key is not found in the payload!`);return C.get(this.payload(),e)}token(){return this.payloadKey("token")}time(){return this.payloadKey("time")}}class gs{constructor(){this.store=new Map}getItem(e){return this.store.get(e)??null}setItem(e,t){this.store.set(e,t)}removeItem(e){return this.store.delete(e)}keys(){return Array.from(this.store.keys())}}function Ct(a){let e="";const t=a.byteLength;for(let n=0;n<t;n++){const s=a[n];s!==void 0&&(e+=String.fromCharCode(s))}return btoa(e)}function $e(a){const e=atob(a),t=e.length,n=new Uint8Array(t);for(let s=0;s<t;s++)n[s]=e.charCodeAt(s);return n}const bs=new TextEncoder,ws=new TextDecoder,Ae="knishio:secret:",Ke=1e5;class ks{constructor(e={}){this.providerType="webcrypto-aes-gcm",this.backend=e.backend||new gs,this.defaultPassphrase=e.defaultPassphrase,this.hardwareBacked=e.hardwareBacked||!1}isHardwareBacked(){return this.hardwareBacked}async isAvailable(){return typeof globalThis.crypto<"u"&&typeof globalThis.crypto.subtle<"u"}async deriveKey(e,t,n=Ke){if(!await this.isAvailable())throw q.unavailable(this.providerType,"WebCrypto API is not available");const s=bs.encode(e);try{const r=await globalThis.crypto.subtle.importKey("raw",s,"PBKDF2",!1,["deriveKey"]);return await globalThis.crypto.subtle.deriveKey({name:"PBKDF2",salt:t,iterations:n,hash:"SHA-256"},r,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"])}finally{ie(s)}}async storeSecret(e,t,n={}){if(!e)throw new q("Bundle hash cannot be empty");if(!t)throw new q("Secret cannot be empty");const s=n.passphrase||this.defaultPassphrase;if(!s)throw new q("Passphrase required for envelope encryption");const r=new Uint8Array(16),i=new Uint8Array(12);globalThis.crypto.getRandomValues(r),globalThis.crypto.getRandomValues(i);const o=await this.deriveKey(s,r,Ke),c=bs.encode(t);try{const u=await globalThis.crypto.subtle.encrypt({name:"AES-GCM",iv:i},o,c),l=Ct(new Uint8Array(u)),d={bundleHash:e,label:n.label,createdAt:Date.now(),hardwareBacked:this.hardwareBacked,providerType:this.providerType},f={version:1,ciphertext:l,iv:Ct(i),salt:Ct(r),algorithm:"AES-GCM",iterations:Ke,metadata:d};await this.backend.setItem(`${Ae}${e}`,JSON.stringify(f))}catch(u){const l=u instanceof Error?u.message:String(u);throw new q(`Encryption failed: ${l}`)}finally{ie(c)}}async retrieveSecret(e,t={}){const n=await this.backend.getItem(`${Ae}${e}`);if(!n)return null;let s;try{s=JSON.parse(n)}catch{throw q.decryptionFailed("Corrupted payload format")}const r=t.passphrase||this.defaultPassphrase;if(!r)throw new q("Passphrase required for secret decryption");const i=$e(s.salt),o=$e(s.iv),c=$e(s.ciphertext);try{const u=await this.deriveKey(r,i,s.iterations||Ke),l=await globalThis.crypto.subtle.decrypt({name:"AES-GCM",iv:o},u,c),d=new Uint8Array(l);try{return ws.decode(d)}finally{ie(d)}}catch(u){const l=u instanceof Error?u.message:String(u);throw q.decryptionFailed(l)}}async deleteSecret(e){const t=`${Ae}${e}`;return await this.backend.removeItem(t)!==!1}async hasSecret(e){return await this.backend.getItem(`${Ae}${e}`)!==null}async listSecrets(){const t=(await this.backend.keys()).filter(s=>s.startsWith(Ae)),n=[];for(const s of t){const r=await this.backend.getItem(s);if(r)try{const i=JSON.parse(r);i.metadata&&n.push(i.metadata)}catch{}}return n}async withSecret(e,t,n={}){const s=await this.backend.getItem(`${Ae}${e}`);if(!s)throw q.notFound(e);let r;try{r=JSON.parse(s)}catch{throw q.decryptionFailed("Corrupted payload format")}const i=n.passphrase||this.defaultPassphrase;if(!i)throw new q("Passphrase required for secret decryption");const o=$e(r.salt),c=$e(r.iv),u=$e(r.ciphertext);try{const l=await this.deriveKey(i,o,r.iterations||Ke),d=await globalThis.crypto.subtle.decrypt({name:"AES-GCM",iv:c},l,u),f=new Uint8Array(d);return await yn(f,async p=>{const w=ws.decode(p);return await t(w)})}catch(l){if(l instanceof q)throw l;const d=l instanceof Error?l.message:String(l);throw q.decryptionFailed(d)}}}function Br(a={}){return a.type==="memory"?new Ye:typeof globalThis.crypto<"u"&&typeof globalThis.crypto.subtle<"u"?new ks({backend:a.backend,defaultPassphrase:a.defaultPassphrase,hardwareBacked:a.hardwareBacked}):new Ye}return h.Atom=b,h.AtomIndexException=ge,h.AtomMeta=P,h.AtomsMissingException=se,h.AuthToken=ke,h.AuthorizationRejectedException=_t,h.BalanceInsufficientException=fe,h.BatchIdException=qe,h.CheckMolecule=we,h.CodeException=Y,h.Decimal=ae,h.Dot=C,h.InvalidResponseException=ne,h.KnishIOClient=qr,h.MemorySecretStorageProvider=Ye,h.MemoryStorageBackend=gs,h.Meta=oe,h.MetaMissingException=H,h.MolecularHashMismatchException=un,h.MolecularHashMissingException=hn,h.Molecule=z,h.Mutation=Pe,h.MutationActiveSession=Xn,h.MutationAppendRequest=Fn,h.MutationClaimShadowWallet=Wn,h.MutationCreateIdentifier=On,h.MutationCreateMeta=Pn,h.MutationCreateRule=os,h.MutationCreateToken=Cn,h.MutationCreateWallet=jn,h.MutationDepositBufferToken=ls,h.MutationLinkIdentifier=Qn,h.MutationPeering=Kn,h.MutationProposeMolecule=B,h.MutationRequestAuthorization=Mn,h.MutationRequestAuthorizationGuest=zn,h.MutationRequestTokens=En,h.MutationTransferTokens=kt,h.MutationWithdrawBufferToken=cs,h.NegativeAmountException=mt,h.PolicyInvalidException=ht,h.PolicyMeta=Le,h.Query=K,h.QueryActiveSession=Yn,h.QueryAtom=$t,h.QueryBalance=$n,h.QueryBatch=Se,h.QueryBatchHistory=vn,h.QueryContinuId=bn,h.QueryEmbeddingStatus=It,h.QueryMetaType=wt,h.QueryMetaTypeViaAtom=At,h.QueryMetaTypeViaMolecule=vt,h.QueryPolicy=ss,h.QueryToken=es,h.QueryWalletBundle=kn,h.QueryWalletList=Sn,h.Response=E,h.ResponseActiveSession=Gn,h.ResponseAppendRequest=Nn,h.ResponseAtom=ts,h.ResponseAuthorizationGuest=Or,h.ResponseBalance=_n,h.ResponseClaimShadowWallet=Bn,h.ResponseContinuId=gn,h.ResponseCreateIdentifier=qn,h.ResponseCreateMeta=Un,h.ResponseCreateRule=as,h.ResponseCreateToken=Tn,h.ResponseCreateWallet=Dn,h.ResponseEmbeddingStatus=is,h.ResponseLinkIdentifier=Ln,h.ResponseMetaType=An,h.ResponseMetaTypeViaAtom=rs,h.ResponseMetaTypeViaMolecule=tt,h.ResponsePeering=Hn,h.ResponsePolicy=ns,h.ResponseProposeMolecule=j,h.ResponseQueryActiveSession=Zn,h.ResponseRequestAuthorization=In,h.ResponseRequestAuthorizationGuest=Vn,h.ResponseRequestTokens=xn,h.ResponseTransferTokens=Rn,h.ResponseWalletBundle=wn,h.ResponseWalletList=Ue,h.SecretStorageException=q,h.SignatureMalformedException=dt,h.SignatureMismatchException=dn,h.StackableUnitAmountException=_e,h.StackableUnitDecimalsException=Jn,h.TokenUnit=ue,h.TransferBalanceException=G,h.TransferMalformedException=be,h.TransferMismatchedException=pt,h.TransferRemainderException=ft,h.TransferToSelfException=pn,h.TransferUnbalancedException=Re,h.UnauthenticatedException=We,h.Wallet=S,h.WalletShadowException=St,h.WebCryptoSecretStorageProvider=ks,h.WrongTokenTypeException=re,h.base64ToHex=Bt,h.bufferToHexString=it,h.charsetBaseConvert=Rt,h.chunkArray=_s,h.chunkSubstr=Ie,h.constantTimeCompare=or,h.createDefaultSecretStorage=Br,h.deepCloning=Ut,h.diff=Pt,h.generateBatchId=Me,h.generateBundleHash=ce,h.generateSecret=De,h.hexStringToBuffer=qt,h.hexToBase64=Ot,h.intersect=me,h.isHex=Fe,h.isNumeric=Wt,h.randomString=Ne,h.shake256=je,h.withSecureBytes=yn,h.withSecureString=mn,h.zeroizeBytes=ie,Object.defineProperty(h,Symbol.toStringTag,{value:"Module"}),h})({},jsSHA,UrqlCore,GraphQLWS,wonka);
|
|
512
|
-
//# sourceMappingURL=client.iife.js.map
|
|
499
|
+
}`}static createVariables({metaType:e=null,metaId:t=null,instances:n=null}){let r={};return n&&n.length>0&&(r.instances=n),e&&(r.metaType=e),t&&(r.metaId=t),r}createResponse(e){return new Cr({query:this,json:e})}},Tr=class extends q{},Er=class extends J{fillMolecule({metaType:e,metaId:t,rule:n,policy:r}){this.$__molecule.createRule({metaType:e,metaId:t,rule:n,policy:r}),this.$__molecule.sign({}),this.$__molecule.check()}createResponse(e){return new Tr({query:this,json:e})}},Dr=class extends J{fillMolecule({amount:e,tradeRates:t}){this.$__molecule.initDepositBuffer({amount:e,tradeRates:t}),this.$__molecule.sign({}),this.$__molecule.check(this.$__molecule.sourceWallet)}},Or=class extends J{fillMolecule({recipients:e,signingWallet:t}){this.$__molecule.initWithdrawBuffer({recipients:e,signingWallet:t}),this.$__molecule.sign({}),this.$__molecule.check(this.$__molecule.sourceWallet)}},kr=2592e5,Ar=`thumbmark`,jr=`https://api.thumbmarkjs.com`,Mr={exclude:[],include:[],stabilize:[`private`,`iframe`],logging:!0,timeout:5e3,cache_api_call:!0,cache_lifetime_in_ms:0,performance:!1,experimental:!1,simple_request:!1,property_name_factory:e=>`${Ar}_${e}`},Nr={...Mr},Pr={private:[{exclude:[`canvas`],browsers:[`firefox`,`safari>=17`,`brave`]},{exclude:[`audio`],browsers:[`samsungbrowser`,`safari`]},{exclude:[`fonts`],browsers:[`firefox`]},{exclude:[`audio.sampleHash`,`hardware.deviceMemory`,`header.acceptLanguage.q`,`system.hardwareConcurrency`,`plugins`],browsers:[`brave`]},{exclude:[`tls.extensions`],browsers:[`firefox`,`chrome`,`safari`]},{exclude:[`header.acceptLanguage`],browsers:[`edge`,`chrome`]}],iframe:[{exclude:[`system.applePayVersion`,`system.cookieEnabled`],browsers:[`safari`]},{exclude:[`permissions`]}],vpn:[{exclude:[`ip`]}],always:[{exclude:[`speech`],browsers:[`brave`,`firefox`]}]},Fr=typeof window<`u`?window.OfflineAudioContext||window.webkitOfflineAudioContext:null;function Ir(e){let t=0;for(let n=0;n<e.length;++n)t+=Math.abs(e[n]);return t}function Lr(e,t,n){if(e.length===1)return e[0];if(e.length===3){let r=e[0].data,i=e[1].data,a=e[2].data,o=new Uint8ClampedArray(r.length);for(let e=0;e<r.length;e++){let t=r[e],n=i[e],s=a[e];o[e]=t===n||t===s?t:n===s?n:t}return new ImageData(o,t,n)}let r=[];for(let t=0;t<e[0].data.length;t++){let n=[];for(let r=0;r<e.length;r++)n.push(e[r].data[t]);r.push(Rr(n))}let i=new Uint8ClampedArray(r);return new ImageData(i,t,n)}function Rr(e){if(e.length===0)return 0;let t={};for(let n of e)t[n]=(t[n]||0)+1;let n=e[0];for(let e in t)t[e]>t[n]&&(n=parseInt(e,10));return n}function zr(e){return e^=e>>>16,e=Math.imul(e,2246822507),e^=e>>>13,e=Math.imul(e,3266489909),(e^=e>>>16)>>>0}var Y=new Uint32Array([597399067,2869860233,951274213,2716044179]);function X(e,t){return e<<t|e>>>32-t}function Z(e,t=0){if(t=t?0|t:0,typeof e==`string`&&(e=function(e){if(typeof TextEncoder<`u`)return new TextEncoder().encode(e).buffer;let t=[];for(let n=0;n<e.length;n++){let r=e.charCodeAt(n);r<128?t.push(r):r<2048?t.push(192|r>>6,128|63&r):r<55296||r>=57344?t.push(224|r>>12,128|r>>6&63,128|63&r):(n++,r=65536+((1023&r)<<10|1023&e.charCodeAt(n)),t.push(240|r>>18,128|r>>12&63,128|r>>6&63,128|63&r))}return new Uint8Array(t).buffer}(e)),!(e instanceof ArrayBuffer))throw TypeError(`Expected key to be ArrayBuffer or string`);let n=new Uint32Array([t,t,t,t]);(function(e,t){let n=e.byteLength/16|0,r=new Uint32Array(e,0,4*n);for(let e=0;e<n;e++){let n=r.subarray(4*e,4*(e+1));n[0]=Math.imul(n[0],Y[0]),n[0]=X(n[0],15),n[0]=Math.imul(n[0],Y[1]),t[0]^=n[0],t[0]=X(t[0],19),t[0]+=t[1],t[0]=Math.imul(t[0],5)+1444728091,n[1]=Math.imul(n[1],Y[1]),n[1]=X(n[1],16),n[1]=Math.imul(n[1],Y[2]),t[1]^=n[1],t[1]=X(t[1],17),t[1]+=t[2],t[1]=Math.imul(t[1],5)+197830471,n[2]=Math.imul(n[2],Y[2]),n[2]=X(n[2],17),n[2]=Math.imul(n[2],Y[3]),t[2]^=n[2],t[2]=X(t[2],15),t[2]+=t[3],t[2]=Math.imul(t[2],5)+2530024501,n[3]=Math.imul(n[3],Y[3]),n[3]=X(n[3],18),n[3]=Math.imul(n[3],Y[0]),t[3]^=n[3],t[3]=X(t[3],13),t[3]+=t[0],t[3]=Math.imul(t[3],5)+850148119}})(e,n),function(e,t){let n=e.byteLength/16|0,r=e.byteLength%16,i=new Uint32Array(4),a=new Uint8Array(e,16*n,r);switch(r){case 15:i[3]^=a[14]<<16;case 14:i[3]^=a[13]<<8;case 13:i[3]^=a[12],i[3]=Math.imul(i[3],Y[3]),i[3]=X(i[3],18),i[3]=Math.imul(i[3],Y[0]),t[3]^=i[3];case 12:i[2]^=a[11]<<24;case 11:i[2]^=a[10]<<16;case 10:i[2]^=a[9]<<8;case 9:i[2]^=a[8],i[2]=Math.imul(i[2],Y[2]),i[2]=X(i[2],17),i[2]=Math.imul(i[2],Y[3]),t[2]^=i[2];case 8:i[1]^=a[7]<<24;case 7:i[1]^=a[6]<<16;case 6:i[1]^=a[5]<<8;case 5:i[1]^=a[4],i[1]=Math.imul(i[1],Y[1]),i[1]=X(i[1],16),i[1]=Math.imul(i[1],Y[2]),t[1]^=i[1];case 4:i[0]^=a[3]<<24;case 3:i[0]^=a[2]<<16;case 2:i[0]^=a[1]<<8;case 1:i[0]^=a[0],i[0]=Math.imul(i[0],Y[0]),i[0]=X(i[0],15),i[0]=Math.imul(i[0],Y[1]),t[0]^=i[0]}}(e,n),function(e,t){t[0]^=e.byteLength,t[1]^=e.byteLength,t[2]^=e.byteLength,t[3]^=e.byteLength,t[0]=t[0]+t[1]|0,t[0]=t[0]+t[2]|0,t[0]=t[0]+t[3]|0,t[1]=t[1]+t[0]|0,t[2]=t[2]+t[0]|0,t[3]=t[3]+t[0]|0,t[0]=zr(t[0]),t[1]=zr(t[1]),t[2]=zr(t[2]),t[3]=zr(t[3]),t[0]=t[0]+t[1]|0,t[0]=t[0]+t[2]|0,t[0]=t[0]+t[3]|0,t[1]=t[1]+t[0]|0,t[2]=t[2]+t[0]|0,t[3]=t[3]+t[0]|0}(e,n);let r=new Uint8Array(n.buffer);return Array.from(r).map((e=>e.toString(16).padStart(2,`0`))).join(``)}var Br=280;function Vr(e,t){return new Promise((n=>setTimeout(n,e,t)))}var Hr=`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`.split(`.`),Ur=[`monospace`,`sans-serif`,`serif`];function Wr(e,t){return e.font=`72px ${t}`,e.measureText(`WwMmLli0Oo`).width}function Gr(){let e=document.createElement(`canvas`),t=e.getContext(`webgl`)??e.getContext(`experimental-webgl`);if(t&&`getParameter`in t)try{let e=(t.getParameter(t.VENDOR)||``).toString(),n=(t.getParameter(t.RENDERER)||``).toString(),r={vendor:e,renderer:n,version:(t.getParameter(t.VERSION)||``).toString(),shadingLanguageVersion:(t.getParameter(t.SHADING_LANGUAGE_VERSION)||``).toString()};if(!n.length||!e.length){let e=t.getExtension(`WEBGL_debug_renderer_info`);if(e){let n=(t.getParameter(e.UNMASKED_VENDOR_WEBGL)||``).toString(),i=(t.getParameter(e.UNMASKED_RENDERER_WEBGL)||``).toString();n&&(r.vendorUnmasked=n),i&&(r.rendererUnmasked=i)}}return r}catch{}return`undefined`}function Kr(){let e=new Float32Array(1),t=new Uint8Array(e.buffer);return e[0]=1/0,e[0]-=e[0],t[3]}var qr=(e,t,n,r)=>{let i=(n-t)/r,a=0;for(let n=0;n<r;n++)a+=e(t+(n+.5)*i);return a*i};function Jr(e,t){let n={};return t.forEach((t=>{let r=function(e){if(e.length===0)return null;let t={};e.forEach((e=>{let n=String(e);t[n]=(t[n]||0)+1}));let n=e[0],r=1;return Object.keys(t).forEach((e=>{t[e]>r&&(n=e,r=t[e])})),n}(e.map((e=>t in e?e[t]:void 0)).filter((e=>e!==void 0)));r&&(n[t]=r)})),n}var Yr=`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`.split(`.`),Xr=new Map;function Zr(){if(typeof navigator>`u`)return{name:`unknown`,version:`unknown`};let e=!!navigator.brave,t=(e?`B|`:`N|`)+navigator.userAgent,n=Xr.get(t);if(n)return n;let r=[{name:`Brave`,detect:()=>e}],i;for(let e of r)if(e.detect()){let n=Qr(navigator.userAgent);return i={name:e.name,version:n.version},Xr.set(t,i),i}return i=Qr(navigator.userAgent),Xr.set(t,i),i}function Qr(e){var t,n;let r=[/(?<name>SamsungBrowser)\/(?<version>\d+(?:\.\d+)+)/,/(?<name>EdgA|EdgiOS|Edg)\/(?<version>\d+(?:\.\d+)+)/,/(?<name>OPR|OPX)\/(?<version>\d+(?:\.\d+)+)/,/Opera[\s\/](?<version>\d+(?:\.\d+)+)/,/Opera Mini\/(?<version>\d+(?:\.\d+)+)/,/Opera Mobi\/(?<version>\d+(?:\.\d+)+)/,/(?<name>Vivaldi)\/(?<version>\d+(?:\.\d+)+)/,/(?<name>CriOS)\/(?<version>\d+(?:\.\d+)+)/,/(?<name>FxiOS)\/(?<version>\d+(?:\.\d+)+)/,/(?<name>Chrome|Chromium)\/(?<version>\d+(?:\.\d+)+)/,/(?<name>Firefox|Waterfox|Iceweasel|IceCat)\/(?<version>\d+(?:\.\d+)+)/,/Version\/(?<version1>[\d.]+).*Safari\/[\d.]+|(?<name>Safari)\/(?<version2>[\d.]+)/,/(?<name>MSIE|Trident|IEMobile).+?(?<version>\d+(?:\.\d+)+)/,/(?<name>[A-Za-z]+)\/(?<version>\d+(?:\.\d+)+)/],i={edg:`Edge`,edga:`Edge`,edgios:`Edge`,opr:`Opera`,opx:`Opera`,crios:`Chrome`,fxios:`Firefox`,samsung:`SamsungBrowser`,vivaldi:`Vivaldi`};for(let a of r){let r=e.match(a);if(r){let e=r.groups?.name,o=r.groups?.version||r.groups?.version1||r.groups?.version2;if(e||!((t=r.groups)!=null&&t.version1)&&!((n=r.groups)!=null&&n.version2)||(e=`Safari`),!e&&a.source.includes(`Opera Mini`)&&(e=`Opera Mini`),!e&&a.source.includes(`Opera Mobi`)&&(e=`Opera Mobi`),!e&&a.source.includes(`Opera`)&&(e=`Opera`),!e&&r[1]&&(e=r[1]),!o&&r[2]&&(o=r[2]),e)return{name:i[e.toLowerCase()]||e,version:o||`unknown`}}}return{name:`unknown`,version:`unknown`}}function $r(){if(typeof navigator>`u`||!navigator.userAgent)return!1;let e=navigator.userAgent;return/Mobi|Android|iPhone|iPod|IEMobile|Opera Mini|Opera Mobi|webOS|BlackBerry|Windows Phone/i.test(e)&&!/iPad/i.test(e)}function ei(){let e=[],t={"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(t).forEach((n=>{t[n].forEach((t=>{matchMedia(`(${n}: ${t})`).matches&&e.push(`${n}: ${t}`)}))})),e}function ti(){if(window.location.protocol===`https:`&&typeof window.ApplePaySession==`function`)try{let e=window.ApplePaySession.supportsVersion;for(let t=15;t>0;t--)if(e(t))return t}catch{return 0}return 0}var ni=Zr().name===`SamsungBrowser`?3:1,ri=Zr().name!==`Brave`,ii=137,ai=(()=>{let e=new Float32Array(548),t=2*Math.PI/ii;for(let n=0;n<ii;n++){let r=n*t;e[4*n]=0,e[4*n+1]=0,e[4*n+2]=100*Math.cos(r),e[4*n+3]=50*Math.sin(r)}return e})(),oi=null;function si(){try{if(typeof document>`u`)return null;let e=document.createElement(`canvas`);e.width=200,e.height=100;let t=e.getContext(`webgl`);if(!t)return null;e.addEventListener(`webglcontextlost`,(e=>{e.preventDefault(),oi=null}),{once:!0});let n=t.createShader(t.VERTEX_SHADER),r=t.createShader(t.FRAGMENT_SHADER);if(!n||!r||(t.shaderSource(n,`
|
|
500
|
+
attribute vec2 position;
|
|
501
|
+
void main() {
|
|
502
|
+
gl_Position = vec4(position, 0.0, 1.0);
|
|
503
|
+
}
|
|
504
|
+
`),t.compileShader(n),!t.getShaderParameter(n,t.COMPILE_STATUS))||(t.shaderSource(r,`
|
|
505
|
+
precision mediump float;
|
|
506
|
+
void main() {
|
|
507
|
+
gl_FragColor = vec4(0.812, 0.195, 0.553, 0.921); // Set line color
|
|
508
|
+
}
|
|
509
|
+
`),t.compileShader(r),!t.getShaderParameter(r,t.COMPILE_STATUS)))return null;let i=t.createProgram();if(!i||(t.attachShader(i,n),t.attachShader(i,r),t.linkProgram(i),!t.getProgramParameter(i,t.LINK_STATUS)))return null;let a=t.createBuffer();return a?(t.bindBuffer(t.ARRAY_BUFFER,a),t.bufferData(t.ARRAY_BUFFER,ai,t.STATIC_DRAW),t.bindBuffer(t.ARRAY_BUFFER,null),{canvas:e,gl:t,program:i,buffer:a}):null}catch{return null}}function Q(e){let t=new Set;return function e(n){if(n&&n.toJSON&&typeof n.toJSON==`function`&&(n=n.toJSON()),n===void 0)return;if(typeof n==`number`)return isFinite(n)?``+n:`null`;if(typeof n!=`object`)return JSON.stringify(n);let r,i;if(Array.isArray(n)){for(i=`[`,r=0;r<n.length;r++)r&&(i+=`,`),i+=e(n[r])||`null`;return i+`]`}if(n===null)return`null`;if(t.has(n))throw TypeError(`Converting circular structure to JSON`);t.add(n);let a=Object.keys(n).sort();for(i=``,r=0;r<a.length;r++){let t=a[r],o=e(n[t]);o&&(i&&(i+=`,`),i+=JSON.stringify(t)+`:`+o)}return t.delete(n),`{`+i+`}`}(e)||``}var ci={audio:async function(){return Fr?async function(){return new Promise(((e,t)=>{try{let t=new Fr(1,5e3,44100),n=t.createBufferSource(),r=t.createOscillator();r.frequency.value=1e3;let i=t.createDynamicsCompressor(),a;i.threshold.value=-50,i.knee.value=40,i.ratio.value=12,i.attack.value=0,i.release.value=.2,r.connect(i),i.connect(t.destination),r.start(),t.oncomplete=r=>{a=r.renderedBuffer.getChannelData(0),e({sampleHash:Ir(a),maxChannels:t.destination.maxChannelCount,channelCountMode:n.channelCountMode})},t.startRendering()}catch(e){t(e)}}))}():null},canvas:async function(){return new Promise((e=>{let t=Array.from({length:3},(()=>function(){let e=document.createElement(`canvas`),t=e.getContext(`2d`);if(!t)return null;e.width=Br,e.height=20;let n=t.createLinearGradient(0,0,e.width,e.height);n.addColorStop(0,`red`),n.addColorStop(1/6,`orange`),n.addColorStop(2/6,`yellow`),n.addColorStop(.5,`green`),n.addColorStop(4/6,`blue`),n.addColorStop(5/6,`indigo`),n.addColorStop(1,`violet`),t.fillStyle=n,t.fillRect(0,0,e.width,e.height);let r=`Random Text WMwmil10Oo`;return t.font=`23.123px Arial`,t.fillStyle=`black`,t.fillText(r,-5,15),t.fillStyle=`rgba(0, 0, 255, 0.5)`,t.fillText(r,-3.3,17.7),t.beginPath(),t.moveTo(0,0),t.lineTo(2*e.width/7,e.height),t.strokeStyle=`white`,t.lineWidth=2,t.stroke(),t.getImageData(0,0,e.width,e.height)}())).filter((e=>e!==null));t.length===0?e(null):e({commonPixelsHash:Z(Lr(t,Br,20).data.toString()).toString()})}))},fonts:async function(e){return new Promise((e=>{try{(async function(e){for(;!document.body;)await Vr(50);let t=document.createElement(`iframe`);t.setAttribute(`frameBorder`,`0`);let n=t.style;n.setProperty(`position`,`fixed`),n.setProperty(`display`,`block`,`important`),n.setProperty(`visibility`,`visible`),n.setProperty(`border`,`0`),n.setProperty(`opacity`,`0`),t.src=`about:blank`,document.body.appendChild(t);let r=t.contentDocument||t.contentWindow?.document;if(!r)throw Error(`Iframe document is not accessible`);e({iframe:r}),setTimeout((()=>{document.body.removeChild(t)}),0)})((async({iframe:t})=>{let n=t.createElement(`canvas`).getContext(`2d`);if(!n)return void e(null);let r=Ur.map((e=>Wr(n,e))),i={};Hr.forEach((e=>{let t=Wr(n,e);r.includes(t)||(i[e]=t)})),e(i)}))}catch{e(null)}}))},hardware:function(){return new Promise(((e,t)=>{let n=navigator.deviceMemory===void 0?0:navigator.deviceMemory,r=window.performance&&window.performance.memory?window.performance.memory:0;e({videocard:Gr(),architecture:Kr(),deviceMemory:n.toString()||`undefined`,jsHeapSizeLimit:r.jsHeapSizeLimit||0})}))},locales:function(){return new Promise((e=>{e({languages:navigator.language,timezone:Intl.DateTimeFormat().resolvedOptions().timeZone})}))},math:function(){return new Promise((e=>{e({acos:Math.acos(.5),asin:qr(Math.asin,-1,1,97),cos:qr(Math.cos,0,Math.PI,97),largeCos:Math.cos(0x56bc75e2d63100000),largeSin:Math.sin(0x56bc75e2d63100000),largeTan:Math.tan(0x56bc75e2d63100000),sin:qr(Math.sin,-Math.PI,Math.PI,97),tan:qr(Math.tan,0,2*Math.PI,97)})}))},permissions:async function(e){let t=e?.permissions_to_check||Yr;return Jr(await Promise.all(Array.from({length:3},(()=>async function(e){let t={};for(let n of e)try{t[n]=(await navigator.permissions.query({name:n})).state.toString()}catch{}return t}(t)))),t)},plugins:async function(){let e=[];if(navigator.plugins)for(let t=0;t<navigator.plugins.length;t++){let n=navigator.plugins[t];e.push([n.name,n.filename,n.description].join(`|`))}return new Promise((t=>{t({plugins:e})}))},screen:function(){return new Promise((e=>{if(typeof matchMedia>`u`||typeof screen>`u`)return void e(null);let t={is_touchscreen:navigator.maxTouchPoints>0,maxTouchPoints:navigator.maxTouchPoints,colorDepth:screen.colorDepth,mediaMatches:ei()};$r()&&navigator.maxTouchPoints>0&&(t.resolution=function(){let e=window.screen.width,t=window.screen.height;return`${Math.max(e,t).toString()}x${Math.min(e,t).toString()}`}()),e(t)}))},system:function(){return new Promise((e=>{let t=Zr();e({platform:window.navigator.platform,productSub:navigator.productSub,product:navigator.product,useragent:navigator.userAgent,hardwareConcurrency:navigator.hardwareConcurrency,browser:{name:t.name,version:t.version},mobile:$r(),applePayVersion:ti(),cookieEnabled:window.navigator.cookieEnabled})}))},webgl:async function(){let e=ri?(oi||=si(),oi):si();if(!e)return{webgl:`unsupported`};try{return{commonPixelsHash:Z(Lr(Array.from({length:ni},(()=>function(e){let{canvas:t,gl:n,program:r,buffer:i}=e;try{n.useProgram(r),n.bindBuffer(n.ARRAY_BUFFER,i);let e=n.getAttribLocation(r,`position`);n.enableVertexAttribArray(e),n.vertexAttribPointer(e,2,n.FLOAT,!1,0,0),n.viewport(0,0,t.width,t.height),n.clearColor(0,0,0,1),n.clear(n.COLOR_BUFFER_BIT),n.drawArrays(n.LINES,0,274);let a=new Uint8ClampedArray(t.width*t.height*4);return n.readPixels(0,0,t.width,t.height,n.RGBA,n.UNSIGNED_BYTE,a),new ImageData(a,t.width,t.height)}catch{return oi=null,new ImageData(1,1)}finally{n.bindBuffer(n.ARRAY_BUFFER,null),n.useProgram(null),n.viewport(0,0,n.drawingBufferWidth,n.drawingBufferHeight),n.clearColor(0,0,0,0)}}(e))),e.canvas.width,e.canvas.height).data.toString()).toString()}}catch{return{webgl:`unsupported`}}},webrtc:async function(e){return new Promise((e=>{let t;try{let n=window.RTCPeerConnection||window.webkitRTCPeerConnection||window.mozRTCPeerConnection;if(!n)return void e({supported:!1,error:`WebRTC not supported`});t=new n({iceCandidatePoolSize:1,iceServers:[]});let r=t;r.createDataChannel(``),(async()=>{try{let t=await r.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0});await r.setLocalDescription(t);let n=t.sdp||``,i=[...new Set((n.match(/extmap:\d+ [^\n\r]+/g)||[]).map((e=>e.replace(/extmap:\d+ /,``))))].sort(),a=e=>{let t=n.match(RegExp(`m=${e} [^\\s]+ [^\\s]+ ([^\\n\\r]+)`));return t?t[1].split(` `):[]},o=(e,t)=>t.map((t=>{let r=RegExp(`(rtpmap|fmtp|rtcp-fb):${t} (.+)`,`g`),i=[...n.matchAll(r)];if(!i.length)return null;let a={};return i.forEach((t=>{let[n,r,i]=t,o=i.split(`/`);r===`rtpmap`?(a.mimeType=`${e}/${o[0]}`,a.clockRate=+o[1],e===`audio`&&(a.channels=+o[2]||1)):r===`rtcp-fb`?(a.feedbackSupport=a.feedbackSupport||[],a.feedbackSupport.push(i)):r===`fmtp`&&(a.sdpFmtpLine=i)})),a})).filter(Boolean),s=o(`audio`,a(`audio`)),c=o(`video`,a(`video`)),l={audio:{count:s.length,hash:Z(Q(s))},video:{count:c.length,hash:Z(Q(c))},extensionsHash:Z(Q(i))};r.close();let u={supported:!0,...l,candidateType:`host`};e({details:u,hash:Z(Q(u))})}catch(t){r.close(),e({supported:!0,error:`WebRTC offer failed: ${t.message}`})}})()}catch(n){t?.close(),e({supported:!1,error:`WebRTC error: ${n.message}`})}}))},speech:async function(){return new Promise((e=>{try{if(typeof window>`u`||!window.speechSynthesis||typeof window.speechSynthesis.getVoices!=`function`)return void e({supported:!1,error:`Speech Synthesis API not supported`});let t=!1,n=null,r=r=>{if(!t){t=!0,n&&clearTimeout(n);try{let t=r.map((e=>{let t=e=>e.replace(/\\/g,`\\\\`).replace(/,/g,`\\,`);return[t(e.voiceURI||``),t(e.name||``),t(e.lang||``),e.localService?`1`:`0`,e.default?`1`:`0`].join(`,`)}));t.sort();let n={voiceCount:r.length,voicesHash:Z(Q(t))};e({details:n,hash:Z(Q(n))})}catch(t){e({supported:!0,error:`Voice processing failed: ${t.message}`})}}},i=window.speechSynthesis.getVoices();if(i.length>0)return void r(i);n=setTimeout((()=>{let e=window.speechSynthesis.getVoices();r(e)}),800);let a=()=>{window.speechSynthesis.removeEventListener(`voiceschanged`,a);let e=window.speechSynthesis.getVoices();r(e)};window.speechSynthesis.addEventListener(`voiceschanged`,a)}catch(t){e({supported:!1,error:`Speech Synthesis error: ${t.message}`})}}))}},li={},ui={timeout:`true`};function di(e,t){var n;let r=Zr();if(r.name===`unknown`&&t){let e=t.system?.browser;e!=null&&e.name&&(r={name:String(e.name),version:String(e.version||`unknown`)})}let i=r.name.toLowerCase(),a=parseInt(r.version.split(`.`)[0]||`0`,10),o=Array.isArray(e?.exclude)?[...e.exclude]:[],s=[...new Set([...e?.stabilize||[],`always`])];for(let e of s){let t=Pr[e];if(t)for(let e of t)`browsers`in e&&!((n=e.browsers)!=null&&n.some((e=>{let t=e.match(/(.+?)(>=)(\d+)/);return t?i===t[1]&&a>=+t[3]:i===e})))||o.push(...e.exclude)}return o}function fi(e,t){let n=di(t,e),r=Array.isArray(t?.include)?t.include:[];return function e(t,i=``){let a={};for(let[o,s]of Object.entries(t)){let t=i?`${i}.${o}`:o;if(typeof s!=`object`||Array.isArray(s)||s===null){let e=n.some((e=>t.startsWith(e))),i=r.some((e=>t.startsWith(e)));e&&!i||(a[o]=s)}else{let n=e(s,t);Object.keys(n).length>0&&(a[o]=n)}}return a}(e)}var pi=`https://experimental.thumbmarkjs.com/experimental.min.js`,mi=131072;function $(e,t){let n={target:`request`,type:e};return t&&(n.message=t.slice(0,200)),{schema:0,payload_id:`none`,signals:{},errors:[n]}}function hi(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function gi(e){return e instanceof Error?e.message:void 0}async function _i(){try{return await function(e,t){let n,r=new Promise((e=>{n=setTimeout((()=>e(null)),t)}));return Promise.race([e,r]).finally((()=>clearTimeout(n)))}(async function(){let e,t;try{let t=await fetch(pi,{method:`GET`});if(!t.ok)return $(`http`,`HTTP ${t.status}`);e=await t.text()}catch(e){return $(`fetch`,gi(e))}if(!e)return $(`empty`);if(e.length>mi)return $(`oversized`,`${e.length} chars`);try{let n=eval;t=await Promise.resolve(n(e))}catch(e){return $(function(e){return e instanceof SyntaxError?`syntax`:e instanceof EvalError?`eval_blocked`:`threw`}(e),gi(e))}return function(e){return!!hi(e)&&!(typeof e.schema!=`number`||e.schema<1)&&typeof e.payload_id==`string`&&hi(e.signals)}(t)?{...t,errors:Array.isArray(t.errors)?t.errors:[]}:$(`malformed`)}(),2e3)??$(`timeout`,`exceeded 2000ms`)}catch(e){return $(`threw`,gi(e))}}var vi=`visitor_id`;function yi(e){return e.storage_property_name?e.storage_property_name:e.property_name_factory(vi)}var bi=`${Ar}_${vi}`;function xi(e,t){try{localStorage.setItem(yi(t),e)}catch{}}var Si=`cache`;function Ci(e){try{let t=localStorage.getItem(e.property_name_factory(Si));return JSON.parse(t)||{}}catch{}return{}}function wi(e){return e.cache_lifetime_in_ms>kr?Date.now()+kr:Date.now()+e.cache_lifetime_in_ms}var Ti=class extends Error{constructor(e){super(`HTTP error! status: ${e}`),this.status=e}},Ei=null,Di=null;async function Oi(e,t,n,r){let i=n.simple_request?{"Content-Type":`text/plain`}:{"x-api-key":n.api_key,Authorization:`custom-authorized`,"Content-Type":`application/json`},a=await fetch(e,{method:`POST`,headers:i,body:JSON.stringify(t)});if(!a.ok)throw new Ti(a.status);let o=await a.json();return o.visitorId&&o.visitorId!==r&&xi(o.visitorId,n),Di=o,function(e,t){e.cache_api_call&&e.cache_lifetime_in_ms&&(function(e,t){let n={...Ci(e),...t};try{localStorage.setItem(e.property_name_factory(Si),JSON.stringify(n))}catch{}})(e,{apiResponseExpiry:wi(e),apiResponse:t})}(n,o),o}var ki=(e,t)=>{if(e.cache_api_call){if(Di)return Promise.resolve(Di);let t=function(e){let t=Ci(e);if(t&&t.apiResponse&&t.apiResponseExpiry&&Date.now()<=t.apiResponseExpiry)return t.apiResponse}(e);if(t)return Promise.resolve(t);if(Ei)return Ei}let n=e.api_endpoint||jr,r;try{let e=new URL(n);r=e.pathname!==`/`||n.endsWith(`/`)?n:`${e.origin}/thumbmark`}catch{r=`${n}/thumbmark`}let i=function(e){try{let t=yi(e),n=localStorage.getItem(t);return n||t===bi||(n=localStorage.getItem(bi),n&&xi(n,e)),n}catch{return null}}(e),{api_key:a,...o}=e,s={components:t,options:o,clientHash:Z(Q(t)),version:`1.11.0`};if(i&&(s.visitorId=i),e.metadata){let t=typeof e.metadata==`function`?e.metadata():e.metadata;t&&((typeof t==`string`?t.length:JSON.stringify(t).length)>1e3?console.error(`ThumbmarkJS: Metadata exceeds 1000 characters. Skipping metadata.`):s.metadata=t)}let c=e.timeout||5e3,l=async function(e,t,n,r){for(let i=0;i<3;i++){i>0&&await new Promise((e=>setTimeout(e,200*i)));try{return await Oi(e,t,n,r)}catch(e){if(e instanceof Ti||i===2)throw e}}throw Error(`Unreachable`)}(r,s,e,i).finally((()=>{Ei=null})),u=new Promise((t=>{setTimeout((()=>{t(Ci(e)?.apiResponse||{info:{timed_out:!0},...i&&{visitorId:i}})}),c)}));return Ei=Promise.race([l,u]),Ei};async function Ai(e,t={}){var n;if(typeof document>`u`||typeof window>`u`)return{thumbmark:``,components:{},info:{},version:`1.11.0`,error:[{type:`fatal`,message:`Browser environment required`}]};try{let r={...Mr,...e},i=[],a=r.logging&&!sessionStorage.getItem(`_tmjs_l`)&&Math.random()<1e-4,{elapsed:o,resolvedComponents:s,errors:c,pipelineTimings:l}=await ji({...ci,...li,...t},r);i.push(...c);let u=r.api_key||r.simple_request?ki(r,s):null,d=null;if(u)try{d=await u}catch(e){if(e instanceof Ti&&e.status===403)return{error:[{type:`api_unauthorized`,message:`Invalid API key or quota exceeded`}],components:{},info:{},version:`1.11.0`,thumbmark:``};i.push({type:e instanceof Ti?`api_error`:`network_error`,message:e instanceof Error?e.message:String(e)})}(n=d?.info)!=null&&n.timed_out&&i.push({type:`api_timeout`,message:`API request timed out`});let f=performance.now(),p=fi(d?.components||{},r),m=performance.now()-f,h={...s,...p},g=d?.info||{uniqueness:{score:`api only`}},_,v=0,y=0;if(d?.thumbmark)_=d.thumbmark;else{let e=performance.now(),t=Q(h);v=performance.now()-e;let n=performance.now();_=Z(t),y=performance.now()-n}a&&async function(e,t,n,r=[]){let i=`${jr}/log`;sessionStorage.setItem(`_tmjs_l`,`1`);let a={thumbmark:e,components:t,experimental:await _i(),version:`1.11.0`,options:n,path:(window==null?void 0:window.location)?.pathname,...r.length>0&&{errors:r}};try{await fetch(i,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(a)})}catch{}}(_,h,r,i).catch((()=>{}));let b={"_pipeline.dispatch":l[`_pipeline.dispatch`],"_pipeline.resolve":l[`_pipeline.resolve`],"_pipeline.filter":l[`_pipeline.filter`]+m,"_pipeline.stringify":v,"_pipeline.hash":y,"_pipeline.assembly":0},ee={...o,...l,...b},x=r.performance?{elapsed:ee}:{},te=performance.now(),ne={...d?.visitorId&&{visitorId:d.visitorId},thumbmark:_,components:h,info:g,version:`1.11.0`,...x,...i.length>0&&{error:i},...d?.requestId&&{requestId:d.requestId},...d?.metadata&&{metadata:d.metadata}};return ee[`_pipeline.assembly`]=performance.now()-te,ne}catch(e){return{thumbmark:``,components:{},info:{},version:`1.11.0`,error:[{type:`fatal`,message:e instanceof Error?e.message:String(e)}]}}}async function ji(e,t){let n={...Mr,...t},r=di(n).filter((e=>!e.includes(`.`))),i=Object.entries(e).filter((([e])=>!(n?.exclude)?.includes(e))).filter((([e])=>!r.includes(e))).filter((([e])=>(n?.include)?.some((e=>e.includes(`.`)))?(n?.include)?.some((t=>t.startsWith(e))):n?.include?.length===0||(n?.include)?.includes(e))),a=i.map((([e])=>e)),o={},s=performance.now(),c=i.map((([e,n])=>{let r=performance.now(),i=n(t);return o[`_dispatch.${e}`]=performance.now()-r,i})),l=performance.now()-s,u=performance.now(),d=await function(e,t,n){return Promise.all(e.map((e=>{let r=performance.now(),i,a=e.then((e=>(i!==void 0&&clearTimeout(i),{value:e,elapsed:performance.now()-r}))).catch((e=>(i!==void 0&&clearTimeout(i),{value:n,elapsed:performance.now()-r,error:e instanceof Error?e.message:String(e)}))),o=new Promise((e=>{i=setTimeout((()=>{e({value:n,elapsed:performance.now()-r,error:`timeout`})}),t)}));return Promise.race([a,o])})))}(c,n?.timeout||5e3,ui),f=performance.now()-u,p={},m={},h=[];d.forEach(((e,t)=>{let n=a[t];p[n]=e.elapsed??0,e.error===`timeout`?h.push({type:`component_timeout`,message:`Component '${n}' timed out`,component:n}):e.error&&h.push({type:`component_error`,message:e.error,component:n}),e.value!=null&&(m[n]=e.value)}));let g=performance.now();return{elapsed:p,resolvedComponents:fi(m,n),errors:h,pipelineTimings:{"_pipeline.dispatch":l,"_pipeline.resolve":f,"_pipeline.filter":performance.now()-g,...o}}}async function Mi(){return(await Ai(Nr)).components}async function Ni(e){try{let t=await Ai(Nr);return e?{hash:t.thumbmark.toString(),data:t.components}:t.thumbmark.toString()}catch(e){throw e}}var Pi=`query ( $Hash: String! ) { CipherHash ( Hash: $Hash ) { hash } }`;function Fi(e){let t=(e||``).match(/\b(query|mutation|subscription)\b/i),n=t?t[1].toLowerCase():`query`,r=(e||``).indexOf(`{`),i=r>=0?e.slice(r+1).match(/[A-Za-z_][A-Za-z0-9_]*/):null;return{type:n,name:i?i[0]:``}}var Ii=class{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:i}){let a=[n.cacheExchange,n.fetchExchange];if(t&&t.socketUri){let e=(0,r.createClient)({url:t.socketUri,connectionParams:()=>({authToken:this.$__authToken})});a.push((0,n.subscriptionExchange)({forwardSubscription:t=>({subscribe:n=>({unsubscribe:e.subscribe(t,n)})})}))}return(0,n.createClient)({url:e,exchanges:a,preferGetMethod:!1,...i?{fetch:(e,t)=>this.cipherFetch(e,t)}:{},fetchOptions:()=>({headers:{"X-Auth-Token":this.$__authToken},signal:AbortSignal.timeout(6e4)})})}shouldEncrypt(e){let t;try{t=JSON.parse(e)}catch{return!1}let{type:n,name:r}=Fi(t.query);return!(n===`query`&&(r===`__schema`||r===`ContinuId`)||n===`mutation`&&r===`AccessToken`||n===`mutation`&&r===`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){let n=this.getWallet(),r=this.getPubKey(),i=!1,a=t;if(n&&r&&t&&typeof t.body==`string`&&this.shouldEncrypt(t.body)){let e=await n.encryptStringML(t.body,r);a={...t,body:JSON.stringify({query:Pi,variables:{Hash:e}})},i=!0}let o=await fetch(e,a);if(!i)return o;let s=await o.text(),c={status:o.status,statusText:o.statusText,headers:o.headers},l;try{l=JSON.parse(s)}catch{return new Response(s,c)}let u=l&&l.data&&l.data.CipherHash&&l.data.CipherHash.hash;if(typeof u!=`string`)return new Response(s,c);let d=await n.decryptMyMessageML(JSON.parse(u));return new Response(d??s,c)}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;let t={};e.requestPolicy&&(t.requestPolicy=e.requestPolicy);let n=e.fetchOptions&&e.fetchOptions.signal;if(n){let e=typeof AbortSignal<`u`&&typeof AbortSignal.any==`function`?AbortSignal.any([n,AbortSignal.timeout(6e4)]):n;t.fetchOptions={headers:{"X-Auth-Token":this.$__authToken},signal:e}}return Object.keys(t).length?t:void 0}async query(e){let{query:t,variables:n,context:r}=e,i=this.buildRequestOptions(r),a=await this.$__client.query(t,n||{},i).toPromise();return this.formatResponse(a)}async mutate(e){let{mutation:t,variables:n,context:r}=e,i=this.buildRequestOptions(r),a=await this.$__client.mutation(t,n||{},i).toPromise();return this.formatResponse(a)}subscribe(e,t){let{query:n,variables:r,operationName:a}=e,o=(0,i.pipe)(this.$__client.subscription(n,r),(0,i.map)(e=>{t(this.formatResponse(e))}),(0,i.subscribe)(()=>{}));return this.$__subscriptionManager.set(a,o),{unsubscribe:()=>this.unsubscribe(a)}}formatResponse(e){return{data:e.data,errors:e.error?[e.error]:void 0}}socketDisconnect(){this.soketi&&this.unsubscribeAll()}unsubscribe(e){let 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})}},Li=class{constructor({uri:e,cellSlug:t=null,client:n=null,socket:r=null,serverSdkVersion:i=3,logging:a=!1,defaultRequestPolicy:o=null,secretStorage:s=null,mlKemParameterSet:c=1024}){this.initialize({uri:e,cellSlug:t,socket:r,client:n,serverSdkVersion:i,logging:a,defaultRequestPolicy:o,secretStorage:s,mlKemParameterSet:c})}initialize({uri:e,cellSlug:t=null,socket:n=null,client:r=null,serverSdkVersion:i=3,logging:a=!1,defaultRequestPolicy:o=null,secretStorage:s=null,mlKemParameterSet:c=1024}){this.reset(),this.$__secretStorage=s,this.$__logging=a,this.$__defaultRequestPolicy=o,this.setMlKemParameterSet(c),this.$__authTokenObjects={},this.$__authInProcess=!1,this.abortControllers=new Map,this.setUri(e),t&&this.setCellSlug(t);for(let e in this.$__uris){let t=this.$__uris[e];this.$__authTokenObjects[t]=null}this.log(`info`,`KnishIOClient::initialize() - Initializing new Knish.IO client session for SDK version ${i}...`),this.$__client=r||new Ii({socket:{socketUri:null,appKey:`knishio`,...n||{}},serverUri:this.getRandomUri()}),this.$__serverSdkVersion=i}getMlKemParameterSet(){return this.$__mlKemParameterSet||1024}setMlKemParameterSet(e){let t=Number(e);if(![1024,768].includes(t))throw Error(`KnishIO: unsupported ML-KEM parameter set ${e}; expected 1024 or 768.`);return this.$__mlKemParameterSet=t,this}getRandomUri(){let e=Math.floor(Math.random()*this.$__uris.length);return this.$__uris[e]}switchEncryption(e){return this.$__encrypt!==e&&(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 B(`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.$__secretStorage=null,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){let e=this.getRandomUri();this.$__client.setUri(e)}}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){let e=this.getRandomUri();this.$__client.setUri(e);let t=this.$__authTokenObjects[e];t?this.$__client.setAuthData(t.getAuthData()):this.requestAuthToken({secret:this.$__secret,cellSlug:this.$__cellSlug,encrypt:this.$__encrypt}).catch(e=>{this.log(`warn`,`KnishIOClient::client() - Background authorization failed: ${e.message}`)})}return this.$__client}hasSecret(){return!!this.$__secret&&this.$__secret.length>0||!!this.$__secretStorage&&!!this.$__bundle&&this.$__bundle.length>0}setSecret(e){if(this.$__secret=e,this.$__bundle=this.hashSecret(e,`setSecret`),this.$__secretStorage)this.$__secretStorage.storeSecret(this.$__bundle,e);else{let t=new mn;t.storeSecret(this.$__bundle,e),this.$__secretStorage=t}}hashSecret(e,t=null){return this.log(`info`,`KnishIOClient::hashSecret(${t?`source: ${t}`:``}) - Computing wallet bundle from secret...`),D(e)}getSecret(){if(!this.hasSecret())throw new _n(`KnishIOClient::getSecret() - Unable to find a stored secret! Have you set a secret?`);return this.$__secret}setSecretStorage(e,t=null){this.$__secretStorage=e,t&&(this.$__bundle=t)}getSecretStorage(){return this.$__secretStorage}async retrieveSecret(e={}){return this.$__secret&&this.$__secret.length>0?this.$__secret:this.$__secretStorage&&this.$__bundle&&this.$__bundle.length>0?await this.$__secretStorage.retrieveSecret(this.$__bundle,e):null}hasBundle(){return!!this.$__bundle}getBundle(){if(!this.hasBundle())throw new _n(`KnishIOClient::getBundle() - Unable to find a stored bundle! Have you set a secret?`);return this.$__bundle}getFingerprint(){return Ni()}getFingerprintData(){return Mi()}async getSourceWallet(){let e=(await this.queryContinuId({bundle:this.getBundle()})).payload();return e?e.key=I.generateKey({secret:this.getSecret(),token:e.token,position:e.position}):e=new I({secret:this.getSecret(),mlKemParameterSet:this.getMlKemParameterSet()}),e}getRemainderWallet(){return this.remainderWallet}async createMolecule({secret:e=null,bundle:t=null,sourceWallet:n=null,remainderWallet:r=null}){this.log(`info`,`KnishIOClient::createMolecule() - Creating a new molecule...`),e||(this.$__secret&&this.$__secret.length>0?e=this.getSecret():this.$__secretStorage&&this.$__bundle&&this.$__bundle.length>0&&(e=await this.$__secretStorage.retrieveSecret(this.$__bundle))),e||=this.getSecret(),t||=this.getBundle();let i=null;if(n&&n.token!==`USER`){if(this.lastMoleculeQuery&&this.getRemainderWallet()&&this.getRemainderWallet().token===`USER`&&this.lastMoleculeQuery.response()&&this.lastMoleculeQuery.response().success())i=this.getRemainderWallet().position;else{let e=await this.getSourceWallet();i=e?e.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=r||I.create({secret:e,bundle:t,token:`USER`,batchId:n.batchId,characters:n.characters,mlKemParameterSet:this.getMlKemParameterSet()}),new cn({secret:e,bundle:t,sourceWallet:n,remainderWallet:this.getRemainderWallet(),cellSlug:this.getCellSlug(),version:this.getServerSdkVersion(),continuIdPosition:i,mlKemParameterSet:this.getMlKemParameterSet()})}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...`);let n=t||await this.createMolecule({}),r=new e(this.client(),this,n);if(!(r instanceof J))throw new B(`${this.constructor.name}::createMoleculeMutation() - This method only accepts MutationProposeMolecule!`);return this.lastMoleculeQuery=r,r}async executeQuery(e,t=null,n={}){if(this.$__authToken&&this.$__authToken.isExpired()&&!this.$__authInProcess){this.log(`info`,`KnishIOClient::executeQuery() - Access token is expired. Getting new one...`);let e=this.$__secret||await this.retrieveSecret()||``;await this.requestAuthToken({secret:e,cellSlug:this.$__cellSlug,encrypt:this.$__encrypt})}let r=new AbortController,i=JSON.stringify({query:e.$__query,variables:t});this.abortControllers.set(i,r);try{let a={...n};this.$__defaultRequestPolicy&&!a.requestPolicy&&(a.requestPolicy=this.$__defaultRequestPolicy);let o=await e.execute({variables:t,context:{fetchOptions:{signal:r.signal},...a}});return this.abortControllers.delete(i),o}catch(e){if(e.name===`AbortError`)this.log(`warn`,`Query was cancelled`);else throw e}}cancelQuery(e,t=null){let n=JSON.stringify({query:e.$__query,variables:t}),r=this.abortControllers.get(n);r&&(r.abort(),this.abortControllers.delete(n))}cancelAllQueries(){for(let e of this.abortControllers.values())e.abort();this.abortControllers.clear()}async queryBalance({token:e,bundle:t=null,type:n=`regular`}){let r=this.createQuery(Tn);return this.executeQuery(r,{bundleHash:t||this.getBundle(),token:e,type:n})}async querySourceWallet({token:e,amount:t,type:n=`regular`}){let r=(await this.queryBalance({token:e,type:n})).payload();if(r===null||gn.cmp(r.balance,t)<0)throw new L;if(!r.position||!r.address)throw new L(`Source wallet can not be a shadow wallet.`);return r}async subscribeCreateMolecule({bundle:e,closure:t}){return await this.createSubscribe(ar).execute({variables:{bundle:e||this.getBundle()},closure:t})}subscribeWalletStatus({bundle:e,token:t,closure:n}){if(!t)throw new B(`${this.constructor.name}::subscribeWalletStatus() - Token parameter is required!`);return this.createSubscribe(or).execute({variables:{bundle:e||this.getBundle(),token:t},closure:n})}subscribeActiveWallet({bundle:e,closure:t}){return this.createSubscribe(sr).execute({variables:{bundle:e||this.getBundle()},closure:t})}subscribeActiveSession({metaType:e,metaId:t,closure:n}){return this.createSubscribe(cr).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:r=null,latest:i=!0,fields:a=null,filter:o=null,queryArgs:s=null,count:c=null,countBy:l=null,throughAtom:u=!0,throughMolecule:d=!1,values:f=null,keys:p=null,atomValues:m=null,requestPolicy:h=null}){this.log(`info`,`KnishIOClient::queryMeta() - Querying metaType: ${e}, metaId: ${t}...`);let g,_;return d?(g=this.createQuery(Sr),_=Sr.createVariables({metaType:e,metaId:t,key:n,value:r,latest:i,filter:o,queryArgs:s,countBy:l,values:f,keys:p,atomValues:m,cellSlug:this.getCellSlug()})):u?(g=this.createQuery(br),_=br.createVariables({metaType:e,metaId:t,key:n,value:r,latest:i,filter:o,queryArgs:s,countBy:l,values:f,keys:p,atomValues:m,cellSlug:this.getCellSlug()})):(g=this.createQuery(Dn),_=Dn.createVariables({metaType:e,metaId:t,key:n,value:r,latest:i,filter:o,queryArgs:s,count:c,countBy:l,cellSlug:this.getCellSlug()})),this.executeQuery(g,_,h?{requestPolicy:h}:{})}async queryMetaVerified(e){let t=await this.queryMeta(e),n=t.payload();return n&&(n.integrity=t.verifyIntegrity()),t}async hasQueryField(e){let t=`${this.getUri()}::${e}`;if(typeof this.$__capabilityCache[t]==`boolean`)return this.$__capabilityCache[t];try{let n=((await this.$__client.query({query:`{ __schema { queryType { fields { name } } } }`,variables:{}}))?.data?.__schema?.queryType?.fields||[]).some(t=>t.name===e);return this.$__capabilityCache[t]=n,n}catch(n){return this.log(`warn`,`KnishIOClient::hasQueryField() - Capability probe for '${e}' failed: ${n.message}`),this.$__capabilityCache[t]=!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;let r=this.createQuery(wr),i=wr.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}...`);let t=this.createQuery(On);return await this.executeQuery(t,{batchId:e})}async queryBatchHistory({batchId:e}){this.log(`info`,`KnishIOClient::queryBatchHistory() - Querying cascading meta instances for batchId: ${e}...`);let t=this.createQuery(kn);return await this.executeQuery(t,{batchId:e})}async queryAtom({molecularHashes:e,molecularHash:t,bundleHashes:n,bundleHash:r,positions:i,position:a,walletAddresses:o,walletAddress:s,isotopes:c,isotope:l,tokenSlugs:u,tokenSlug:d,cellSlugs:f,cellSlug:p,batchIds:m,batchId:h,values:g,value:_,metaTypes:v,metaType:y,metaIds:b,metaId:ee,indexes:x,index:te,filter:ne,latest:re,queryArgs:S={limit:15,offset:1}}){this.log(`info`,`KnishIOClient::queryAtom() - Querying atom instances`);let ie=this.createQuery(gr);return await this.executeQuery(ie,gr.createVariables({molecularHashes:e,molecularHash:t,bundleHashes:n,bundleHash:r,positions:i,position:a,walletAddresses:o,walletAddress:s,isotopes:c,isotope:l,tokenSlugs:u,tokenSlug:d,cellSlugs:f,cellSlug:p,batchIds:m,batchId:h,values:g,value:_,metaTypes:v,metaType:y,metaIds:b,metaId:ee,indexes:x,index:te,filter:ne,latest:re,queryArgs:S}))}async createWallet({token:e}){let t=new I({secret:this.getSecret(),token:e,mlKemParameterSet:this.getMlKemParameterSet()}),n=await this.createMoleculeMutation({mutationClass:Qn});return n.fillMolecule(t),await this.executeQuery(n)}async queryActiveSession({bundleHash:e,metaType:t,metaId:n}){let r=this.createQuery(fr);return await this.executeQuery(r,{bundleHash:e,metaType:t,metaId:n})}async activeSession({bundle:e,metaType:t,metaId:n,ipAddress:r,browser:i,osCpu:a,resolution:o,timeZone:s,json:c={}}){let l=this.createQuery(ur);return await this.executeQuery(l,{bundleHash:e,metaType:t,metaId:n,ipAddress:r,browser:i,osCpu:a,resolution:o,timeZone:s,json:JSON.stringify(c)})}async createToken({token:e,amount:t=null,meta:n=null,batchId:r=null,units:i=[]}){let a=V.get(n||{},`fungibility`);if(a===`stackable`&&(n.batchId=r||le({})),[`nonfungible`,`stackable`].includes(a)&&i.length>0){if(V.get(n||{},`decimals`)>0)throw new nr;if(t>0)throw new rr;t=i.length,n.splittable=1,n.decimals=0,n.tokenUnits=JSON.stringify(i)}let o=new I({secret:this.getSecret(),bundle:this.getBundle(),token:e,batchId:r,mlKemParameterSet:this.getMlKemParameterSet()}),s=await this.createMoleculeMutation({mutationClass:Pn});return s.fillMolecule({recipientWallet:o,amount:t,meta:n||{}}),await this.executeQuery(s)}async createRule({metaType:e,metaId:t,rule:n,policy:r={}}){let i=await this.createMoleculeMutation({mutationClass:Er,molecule:await this.createMolecule({secret:this.getSecret()})});return i.fillMolecule({metaType:e,metaId:t,rule:n,policy:r}),await this.executeQuery(i)}async createMeta({metaType:e,metaId:t,meta:n=null,policy:r={}}){let i=await this.createMoleculeMutation({mutationClass:Wn,molecule:await this.createMolecule({secret:this.getSecret()})}),a=n||{};return i.fillMolecule({metaType:e,metaId:t,meta:a,policy:r}),await this.executeQuery(i)}async registerPeer({host:e}){let t=await this.createMoleculeMutation({mutationClass:Kn,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:r={}}){let i=await this.createMoleculeMutation({mutationClass:Jn,molecule:await this.createMolecule({secret:this.getSecret()})});return i.fillMolecule({metaType:e,metaId:t,action:n,meta:r}),await this.executeQuery(i)}async createIdentifier({type:e,contact:t,code:n}){let r=await this.createMoleculeMutation({mutationClass:Bn});return r.fillMolecule({type:e,contact:t,code:n}),await this.executeQuery(r)}async linkIdentifier({type:e,contact:t}){let n=this.createQuery(Xn);return await this.executeQuery(n,{bundle:this.getBundle(),type:e,content:t})}async createPolicy({metaType:e,metaId:t,policy:n={}}){let r=await this.createMolecule({});r.addPolicyAtom({metaType:e,metaId:t,meta:{},policy:n}),r.addContinuIdAtom(),r.sign({bundle:this.getBundle()}),r.check();let i=await this.createMoleculeMutation({mutationClass:J,molecule:r});return await this.executeQuery(i)}async queryPolicy({metaType:e,metaId:t}){let n=this.createQuery(vr);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}`:``}...`);let r=this.createQuery(Cn);return this.executeQuery(r,{bundleHash:e||this.getBundle(),token:t,unspent:n}).then(e=>e.payload())}queryBundle({bundle:e=null,fields:t=null,raw:n=!1}){this.log(`info`,`KnishIOClient::queryBundle() - Querying wallet bundle metadata${e?` for ${e}`:``}...`),e||=this.getBundle(),typeof e==`string`&&(e=[e]);let r=this.createQuery(xn);return this.executeQuery(r,{bundleHashes:e}).then(e=>n?e:e.payload())}async queryContinuId({bundle:e}){let t=this.createQuery(yn);return this.executeQuery(t,{bundle:e})}async requestTokens({token:e,to:t,amount:n=null,units:r=[],meta:i=null,batchId:a=null}){let o,s;i||={};let c=this.createQuery(pr),l=await this.executeQuery(c,{slug:e}),u=V.get(l.data(),`0.fungibility`)===`stackable`;if(!u&&a!==null)throw new Qt(`Expected Batch ID = null for non-stackable tokens.`);if(u&&a===null&&(a=le({})),r.length>0){if(n>0)throw new rr;n=r.length,i.tokenUnits=JSON.stringify(r)}t?(Object.prototype.toString.call(t)===`[object String]`&&(I.isBundleHash(t)?(o=`walletBundle`,s=t):t=I.create({secret:t,token:e,mlKemParameterSet:this.getMlKemParameterSet()})),t instanceof I&&(o=`wallet`,i.position=t.position,i.bundle=t.bundle,s=t.address)):(o=`walletBundle`,s=this.getBundle());let d=await this.createMoleculeMutation({mutationClass:In});return d.fillMolecule({token:e,amount:n,metaType:o,metaId:s,meta:i,batchId:a}),await this.executeQuery(d)}async claimShadowWallet({token:e,batchId:t=null,molecule:n=null}){let r=await this.createMoleculeMutation({mutationClass:Hn,molecule:n});return r.fillMolecule({token:e,batchId:t}),await this.executeQuery(r)}async claimShadowWallets({token:e}){let t=await this.queryWallets({token:e});if(!t||!Array.isArray(t))throw new tr;t.forEach(e=>{if(!e.isShadow())throw new tr});let n=[];for(let r of t)n.push(await this.claimShadowWallet({token:e,batchId:r.batchId}));return n}async transferToken({bundleHash:e,token:t,amount:n=null,units:r=[],batchId:i=null,sourceWallet:a=null}){if(r.length>0){if(n>0)throw new rr;n=r.length}if(a===null&&(a=await this.querySourceWallet({token:t,amount:n})),a===null||gn.cmp(a.balance,n)<0)throw new L;let o=I.create({bundle:e,token:t,mlKemParameterSet:this.getMlKemParameterSet()});i===null?o.initBatchId({sourceWallet:a}):o.batchId=i;let s=a.createRemainder(this.getSecret());a.splitUnits(r,s,o);let c=await this.createMolecule({sourceWallet:a,remainderWallet:s}),l=await this.createMoleculeMutation({mutationClass:Rn,molecule:c});return l.fillMolecule({recipientWallet:o,amount:n}),await this.executeQuery(l)}async transferTokens({token:e,recipients:t,sourceWallet:n=null}){let r=t.map(e=>{let t=e.units||[];if(t.length>0){if(e.amount>0)throw new rr;return t.length}return e.amount||0}),i=r.reduce((e,t)=>e+t,0);if(n===null&&(n=await this.querySourceWallet({token:e,amount:i})),n===null||gn.cmp(n.balance,i)<0)throw new L;let a=t.map(t=>{let r=I.create({bundle:t.bundleHash,token:e,mlKemParameterSet:this.getMlKemParameterSet()});return t.batchId!==void 0&&t.batchId!==null?r.batchId=t.batchId:r.initBatchId({sourceWallet:n}),r}),o=n.createRemainder(this.getSecret());n.splitUnitsMulti(t.map(e=>e.units||[]),a,o);let s=await this.createMolecule({sourceWallet:n,remainderWallet:o}),c=await this.createMoleculeMutation({mutationClass:Rn,molecule:s});return c.fillMoleculeMulti({recipientWallets:a,amounts:r}),await this.executeQuery(c)}async depositBufferToken({tokenSlug:e,amount:t,tradeRates:n,sourceWallet:r=null}){r===null&&(r=await this.querySourceWallet({token:e,amount:t}));let i=r.createRemainder(this.getSecret()),a=await this.createMolecule({sourceWallet:r,remainderWallet:i}),o=await this.createMoleculeMutation({mutationClass:Dr,molecule:a});return o.fillMolecule({amount:t,tradeRates:n}),await this.executeQuery(o)}async withdrawBufferToken({tokenSlug:e,amount:t,sourceWallet:n=null,signingWallet:r=null}){n===null&&(n=await this.querySourceWallet({token:e,amount:t,type:`buffer`}));let i=n,a=await this.createMolecule({sourceWallet:n,remainderWallet:i}),o=await this.createMoleculeMutation({mutationClass:Or,molecule:a}),s={};return s[this.getBundle()]=t,o.fillMolecule({recipients:s,signingWallet:r}),await this.executeQuery(o)}async burnTokens({token:e,amount:t=null,units:n=[],sourceWallet:r=null}){r===null&&(r=await this.querySourceWallet({token:e,amount:t}));let i=r.createRemainder(this.getSecret());if(n.length>0){if(t>0)throw new rr;t=n.length,r.splitUnits(n,i)}let a=await this.createMolecule({sourceWallet:r,remainderWallet:i});a.burnToken({amount:t}),a.sign({bundle:this.getBundle()}),a.check(r);let o=await this.createMoleculeMutation({mutationClass:J,molecule:a});return this.executeQuery(o)}async replenishToken({token:e,amount:t=null,units:n=[],sourceWallet:r=null}){if(r===null&&(r=(await this.queryBalance({token:e})).payload()),!r)throw new L(`Source wallet is missing or invalid.`);let i=r.createRemainder(this.getSecret()),a=await this.createMolecule({sourceWallet:r,remainderWallet:i});a.replenishToken({amount:t,units:n}),a.sign({bundle:this.getBundle()}),a.check();let o=await this.createMoleculeMutation({mutationClass:J,molecule:a});return this.executeQuery(o)}async fuseToken({bundleHash:e,tokenSlug:t,newTokenUnit:n,fusedTokenUnitIds:r,sourceWallet:i=null}){if(i===null&&(i=(await this.queryBalance({token:t})).payload()),i===null)throw new L(`Source wallet is missing or invalid.`);if(!i.tokenUnits||!i.tokenUnits.length)throw new L(`Source wallet does not have token units.`);if(!r.length)throw new L(`Fused token unit list is empty.`);let a=[];i.tokenUnits.forEach(e=>{a.push(e.id)}),r.forEach(e=>{if(!a.includes(e))throw new L(`Fused token unit ID = ${e} does not found in the source wallet.`)});let o=I.create({bundle:e,token:t,mlKemParameterSet:this.getMlKemParameterSet()});o.initBatchId({sourceWallet:i});let s=i.createRemainder(this.getSecret());i.splitUnits(r,s),typeof n==`string`&&(n=new ue(n,n,{})),n.metas.fusedTokenUnits=i.getTokenUnitsData(),o.tokenUnits=[n];let c=await this.createMolecule({sourceWallet:i,remainderWallet:s});c.fuseToken(i.tokenUnits,o),c.sign({bundle:this.getBundle()}),c.check();let l=await this.createMoleculeMutation({mutationClass:J,molecule:c});return this.executeQuery(l)}async requestGuestAuthToken({cellSlug:e,encrypt:t}){this.setCellSlug(e);let n=new I({secret:se(await this.getFingerprint()),token:`AUTH`,mlKemParameterSet:this.getMlKemParameterSet()}),r=await this.createQuery(er),i={cellSlug:e,pubkey:n.pubkey,encrypt:t},a=await r.execute({variables:i});if(a.success()){let e=ln.create({token:a.token(),expiresAt:a.expiresAt(),pubkey:a.pubKey(),encrypt:a.encrypt()},n);this.setAuthToken(e)}else throw new mr(`KnishIOClient::requestGuestAuthToken() - Authorization attempt rejected by ledger. Reason: ${a.reason()}`);return a}async requestProfileAuthToken({secret:e,encrypt:t}){this.setSecret(e);let n=new I({secret:e,token:`AUTH`,mlKemParameterSet:this.getMlKemParameterSet()}),r=await this.createMolecule({secret:e,sourceWallet:n}),i=await this.createMoleculeMutation({mutationClass:Mn,molecule:r}),a={encrypt:t?`true`:`false`};n.pubkey&&(a.walletPubkey=n.pubkey),i.fillMolecule({meta:a});let o=await i.execute({});if(o.success()){let e=ln.create({token:o.token(),expiresAt:o.expiresAt(),pubkey:o.pubKey(),encrypt:o.encrypt()},n);this.setAuthToken(e)}else throw new mr(`KnishIOClient::requestProfileAuthToken() - Authorization attempt rejected by ledger. Reason: ${o.reason()}`);return o}async requestAuthToken({secret:e=null,seed:t=null,cellSlug:n=null,encrypt:r=!1}){if(this.$__serverSdkVersion<3)return this.log(`warn`,`KnishIOClient::authorize() - Server SDK version does not require an authorization...`),null;e===null&&t&&(e=se(t)),n&&this.setCellSlug(n),e===null&&this.$__secretStorage&&this.$__bundle&&(e=await this.$__secretStorage.retrieveSecret(this.$__bundle)),this.$__authInProcess=!0;let i;return i=e?await this.requestProfileAuthToken({secret:e,encrypt:r}):await this.requestGuestAuthToken({cellSlug:n,encrypt:r}),this.log(`info`,`KnishIOClient::authorize() - Successfully retrieved auth token ${this.$__authToken.getToken()}...`),this.switchEncryption(r),this.$__authInProcess=!1,i}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)}}},Ri=class extends G{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(!V.has(this.payload(),e))throw new W(`ResponseAuthorizationGuest::payloadKey() - '${e}' key is not found in the payload!`);return V.get(this.payload(),e)}token(){return this.payloadKey(`token`)}time(){return this.payloadKey(`time`)}},zi=class{constructor(){this.store=new Map}getItem(e){return this.store.get(e)??null}setItem(e,t){this.store.set(e,t)}removeItem(e){return this.store.delete(e)}keys(){return Array.from(this.store.keys())}};function Bi(e){let t=``,n=e.byteLength;for(let r=0;r<n;r++){let n=e[r];n!==void 0&&(t+=String.fromCharCode(n))}return btoa(t)}function Vi(e){let t=atob(e),n=t.length,r=new Uint8Array(n);for(let e=0;e<n;e++)r[e]=t.charCodeAt(e);return r}var Hi=new TextEncoder,Ui=new TextDecoder,Wi=`knishio:secret:`,Gi=1e5,Ki=class{constructor(e={}){this.providerType=`webcrypto-aes-gcm`,this.backend=e.backend||new zi,this.defaultPassphrase=e.defaultPassphrase,this.hardwareBacked=e.hardwareBacked||!1}isHardwareBacked(){return this.hardwareBacked}async isAvailable(){return globalThis.crypto!==void 0&&globalThis.crypto.subtle!==void 0}async deriveKey(e,t,n=Gi){if(!await this.isAvailable())throw H.unavailable(this.providerType,`WebCrypto API is not available`);let r=Hi.encode(e);try{let e=await globalThis.crypto.subtle.importKey(`raw`,r,`PBKDF2`,!1,[`deriveKey`]);return await globalThis.crypto.subtle.deriveKey({name:`PBKDF2`,salt:t,iterations:n,hash:`SHA-256`},e,{name:`AES-GCM`,length:256},!1,[`encrypt`,`decrypt`])}finally{U(r)}}async storeSecret(e,t,n={}){if(!e)throw new H(`Bundle hash cannot be empty`);if(!t)throw new H(`Secret cannot be empty`);let r=n.passphrase||this.defaultPassphrase;if(!r)throw new H(`Passphrase required for envelope encryption`);let i=new Uint8Array(16),a=new Uint8Array(12);globalThis.crypto.getRandomValues(i),globalThis.crypto.getRandomValues(a);let o=await this.deriveKey(r,i,Gi),s=Hi.encode(t);try{let t=await globalThis.crypto.subtle.encrypt({name:`AES-GCM`,iv:a},o,s),r=Bi(new Uint8Array(t)),c={bundleHash:e,label:n.label,createdAt:Date.now(),hardwareBacked:this.hardwareBacked,providerType:this.providerType},l={version:1,ciphertext:r,iv:Bi(a),salt:Bi(i),algorithm:`AES-GCM`,iterations:Gi,metadata:c};await this.backend.setItem(`${Wi}${e}`,JSON.stringify(l))}catch(e){throw new H(`Encryption failed: ${e instanceof Error?e.message:String(e)}`)}finally{U(s)}}async retrieveSecret(e,t={}){let n=await this.backend.getItem(`${Wi}${e}`);if(!n)return null;let r;try{r=JSON.parse(n)}catch{throw H.decryptionFailed(`Corrupted payload format`)}let i=t.passphrase||this.defaultPassphrase;if(!i)throw new H(`Passphrase required for secret decryption`);let a=Vi(r.salt),o=Vi(r.iv),s=Vi(r.ciphertext);try{let e=await this.deriveKey(i,a,r.iterations||Gi),t=await globalThis.crypto.subtle.decrypt({name:`AES-GCM`,iv:o},e,s),n=new Uint8Array(t);try{return Ui.decode(n)}finally{U(n)}}catch(e){let t=e instanceof Error?e.message:String(e);throw H.decryptionFailed(t)}}async deleteSecret(e){let t=`${Wi}${e}`;return await this.backend.removeItem(t)!==!1}async hasSecret(e){return await this.backend.getItem(`${Wi}${e}`)!==null}async listSecrets(){let e=(await this.backend.keys()).filter(e=>e.startsWith(Wi)),t=[];for(let n of e){let e=await this.backend.getItem(n);if(e)try{let n=JSON.parse(e);n.metadata&&t.push(n.metadata)}catch{}}return t}async withSecret(e,t,n={}){let r=await this.backend.getItem(`${Wi}${e}`);if(!r)throw H.notFound(e);let i;try{i=JSON.parse(r)}catch{throw H.decryptionFailed(`Corrupted payload format`)}let a=n.passphrase||this.defaultPassphrase;if(!a)throw new H(`Passphrase required for secret decryption`);let o=Vi(i.salt),s=Vi(i.iv),c=Vi(i.ciphertext);try{let e=await this.deriveKey(a,o,i.iterations||Gi),n=await globalThis.crypto.subtle.decrypt({name:`AES-GCM`,iv:s},e,c);return await dn(new Uint8Array(n),async e=>await t(Ui.decode(e)))}catch(e){if(e instanceof H)throw e;let t=e instanceof Error?e.message:String(e);throw H.decryptionFailed(t)}}};function qi(e={}){return e.type===`memory`?new mn:globalThis.crypto!==void 0&&globalThis.crypto.subtle!==void 0?new Ki({backend:e.backend,defaultPassphrase:e.defaultPassphrase,hardwareBacked:e.hardwareBacked}):new mn}return e.Atom=E,e.AtomIndexException=Vt,e.AtomMeta=C,e.AtomsMissingException=T,e.AuthToken=ln,e.AuthorizationRejectedException=mr,e.BalanceInsufficientException=on,e.BatchIdException=Qt,e.CheckMolecule=an,e.CodeException=B,e.Decimal=gn,e.Dot=V,e.InvalidResponseException=W,e.KnishIOClient=Li,e.MemorySecretStorageProvider=mn,e.MemoryStorageBackend=zi,e.Meta=x,e.MetaMissingException=R,e.MolecularHashMismatchException=Ht,e.MolecularHashMissingException=Ut,e.Molecule=cn,e.Mutation=An,e.MutationActiveSession=ur,e.MutationAppendRequest=Jn,e.MutationClaimShadowWallet=Hn,e.MutationCreateIdentifier=Bn,e.MutationCreateMeta=Wn,e.MutationCreateRule=Er,e.MutationCreateToken=Pn,e.MutationCreateWallet=Qn,e.MutationDepositBufferToken=Dr,e.MutationLinkIdentifier=Xn,e.MutationPeering=Kn,e.MutationProposeMolecule=J,e.MutationRequestAuthorization=Mn,e.MutationRequestAuthorizationGuest=er,e.MutationRequestTokens=In,e.MutationTransferTokens=Rn,e.MutationWithdrawBufferToken=Or,e.NegativeAmountException=sn,e.PolicyInvalidException=Wt,e.PolicyMeta=ie,e.Query=K,e.QueryActiveSession=fr,e.QueryAtom=gr,e.QueryBalance=Tn,e.QueryBatch=On,e.QueryBatchHistory=kn,e.QueryContinuId=yn,e.QueryEmbeddingStatus=wr,e.QueryMetaType=Dn,e.QueryMetaTypeViaAtom=br,e.QueryMetaTypeViaMolecule=Sr,e.QueryPolicy=vr,e.QueryToken=pr,e.QueryWalletBundle=xn,e.QueryWalletList=Cn,e.Response=G,e.ResponseActiveSession=lr,e.ResponseAppendRequest=qn,e.ResponseAtom=hr,e.ResponseAuthorizationGuest=Ri,e.ResponseBalance=wn,e.ResponseClaimShadowWallet=Vn,e.ResponseContinuId=vn,e.ResponseCreateIdentifier=zn,e.ResponseCreateMeta=Un,e.ResponseCreateRule=Tr,e.ResponseCreateToken=Nn,e.ResponseCreateWallet=Zn,e.ResponseEmbeddingStatus=Cr,e.ResponseLinkIdentifier=Yn,e.ResponseMetaType=En,e.ResponseMetaTypeViaAtom=yr,e.ResponseMetaTypeViaMolecule=xr,e.ResponsePeering=Gn,e.ResponsePolicy=_r,e.ResponseProposeMolecule=q,e.ResponseQueryActiveSession=dr,e.ResponseRequestAuthorization=jn,e.ResponseRequestAuthorizationGuest=$n,e.ResponseRequestTokens=Fn,e.ResponseTransferTokens=Ln,e.ResponseWalletBundle=bn,e.ResponseWalletList=Sn,e.SecretStorageException=H,e.SignatureMalformedException=Gt,e.SignatureMismatchException=Kt,e.StackableUnitAmountException=rr,e.StackableUnitDecimalsException=nr,e.TokenUnit=ue,e.TransferBalanceException=L,e.TransferMalformedException=qt,e.TransferMismatchedException=Jt,e.TransferRemainderException=Yt,e.TransferToSelfException=Xt,e.TransferUnbalancedException=Zt,e.UnauthenticatedException=_n,e.Wallet=I,e.WalletShadowException=tr,e.WebCryptoSecretStorageProvider=Ki,e.WrongTokenTypeException=z,e.base64ToHex=y,e.bufferToHexString=g,e.charsetBaseConvert=h,e.chunkArray=te,e.chunkSubstr=p,e.constantTimeCompare=pn,e.createDefaultSecretStorage=qi,e.deepCloning=ne,e.diff=re,e.generateBatchId=le,e.generateBundleHash=D,e.generateSecret=se,e.hexStringToBuffer=_,e.hexToBase64=v,e.intersect=S,e.isHex=b,e.isNumeric=ee,e.randomString=m,e.shake256=ce,e.withSecureBytes=dn,e.withSecureString=fn,e.zeroizeBytes=U,e})({},jsSHA,UrqlCore,GraphQLWS,wonka);
|
|
510
|
+
//# sourceMappingURL=client.iife.js.map
|