@wishknish/knishio-client-js 0.9.4 → 1.1.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.
@@ -1,7 +1,5 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const Q=require("jssha"),T=require("@urql/core"),Ss=require("graphql-ws"),rt=require("wonka");typeof self>"u"&&(global.self=global);class Vt{static toHex(e,t){const n=(c,u)=>{const l=u?["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"]:["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"];return l[Math.floor(c/16)]+l[c%16]},s=Object.assign({grouping:0,rowlength:0,uppercase:!1},t||{});let r="",i=0,a=0;for(let c=0;c<e.length&&(r+=n(e[c],s.uppercase),c!==e.length-1);++c)s.grouping>0&&++i===s.grouping&&(i=0,s.rowlength>0&&++a===s.rowlength?(a=0,r+=`
2
- `):r+=" ");return r}static toUint8Array(e){let t=e.toLowerCase().replace(/\s/g,"");t.length%2===1&&(t=`0${t}`);const n=new Uint8Array(Math.floor(t.length/2));let s=-1;for(let r=0;r<t.length;++r){const i=t[r],a=["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"].indexOf(i);if(a===-1)throw Error("unexpected character");s===-1?s=16*a:(n[Math.floor(r/2)]=s+a,s=-1)}return n}}String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")});String.prototype.toCamelCase||(String.prototype.toCamelCase=function(){return this.toLowerCase().replace(/[^a-zA-Z0-9]+(.)/g,(o,e)=>e.toUpperCase())});String.prototype.toSnakeCase||(String.prototype.toSnakeCase=function(){return this.replace(/[A-Z]/g,o=>`_${o.toLowerCase()}`)});function Re(o,e){const t=Math.ceil(o.length/e),n=[];for(let s=0,r=0;s<t;++s,r+=e)n[s]=o.substr(r,e);return n}function Xe(o=256,e="abcdef0123456789"){const t=new Uint8Array(o);crypto.getRandomValues(t);let n="";for(let s=0;s<o;s++)n+=e.charAt(t[s]%e.length);return n}function zt(o,e,t,n,s){if(n=n||"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz~`!@#$%^&*()-_=+[{]}\\|;:'\",<.>/?¿¡",s=s||n,e>n.length||t>s.length)return console.warn("Strings::charsetBaseConvert() - Can't convert",o,"to base",t,"greater than symbol table length. src-table:",n.length,"dest-table:",s.length),!1;let i=BigInt(0);for(let c=0;c<o.length;c++)i=i*BigInt(e)+BigInt(n.indexOf(o.charAt(c)));let a="";for(;i>0;){const c=i%BigInt(t);a=s.charAt(Number(c))+a,i/=BigInt(t)}return a||"0"}function pt(o){return Vt.toHex(o,{})}function Jt(o){return Vt.toUint8Array(o)}function Gt(o){const e=Jt(o);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 Xt(o){if(typeof Buffer<"u")return pt(new Uint8Array(Buffer.from(o,"base64")));const e=atob(o),t=new Uint8Array(e.length);for(let n=0;n<e.length;n++)t[n]=e.charCodeAt(n);return pt(t)}function Qe(o){return/^[A-F0-9]+$/i.test(o)}function Zt(o){return(typeof o=="number"||typeof o=="string"&&o.trim()!=="")&&!isNaN(o)}let de=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(o,e){const t=[];for(let n=0;n<o.length;n+=e)t.push(o.slice(n,n+e));return t}function Yt(o,e){let t,n,s;const r=[Array,Date,Number,String,Boolean],i=Object.prototype.toString;for(e=e||[],t=0;t<e.length;t+=2)o===e[t]&&(n=e[t+1]);if(!n&&o&&typeof o=="object"){for(n={},t=0;t<r.length;t++)i.call(o)===i.call(s=new r[t](o))&&(n=t?s:[]);e.push(o,n);for(t in o)e.hasOwnProperty.call(o,t)&&(n[t]=Yt(o[t],e))}return n||o}function en(...o){return[].concat(...o.map((e,t)=>{const n=o.slice(0);n.splice(t,1);const s=[...new Set([].concat(...n))];return e.filter(r=>!s.includes(r))}))}function we(...o){return o.reduce((e,t)=>e.filter(n=>t.includes(n)))}class Ze{constructor(e={},t={}){this.policy=Ze.normalizePolicy(e),this.fillDefault(t)}static normalizePolicy(e={}){const t={};for(const[n,s]of Object.entries(e))if(s!==null&&["read","write"].includes(n)){t[n]={};for(const[r,i]of Object.entries(s))t[n][r]=i}return t}fillDefault(e={}){const t=Array.from(this.policy).filter(s=>s.action==="read"),n=Array.from(this.policy).filter(s=>s.action==="write");for(const[s,r]of Object.entries({read:t,write:n})){const i=r.map(a=>a.key);this.policy[s]||(this.policy[s]={});for(const a of en(e,i))this.policy[s][a]||(this.policy[s][a]=s==="write"&&!["characters","pubkey"].includes(a)?["self"]:["all"])}}get(){return this.policy}toJson(){return JSON.stringify(this.get())}}class P{constructor(e=[]){this.meta=de.normalizeMeta(e)}merge(e){return this.meta=Array.from(new Set([...this.meta,...de.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 Ze(e,Object.keys(this.meta));return this.merge({policy:t.toJson()}),this}get(){return this.meta}}class x extends TypeError{constructor(e=null,t=null,n=null){if(super(e,t,n),e===null)throw new this(`Unknown ${this.constructor.name}`);this.name="BaseException"}toString(){return`${this.name}: ${this.message}.
3
- Stack:
4
- ${this.stack}`}}class se extends x{constructor(e="The molecule does not contain atoms",t=null,n=null){super(e,t,n),this.name="AtomsMissingException"}}class ue{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(ue.isStructure(e[n])?ue.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]=ue.isStructure(e[s])?ue.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 ue.structure(this)}}class $s extends ue{constructor({position:e=null,walletAddress:t=null,isotope:n=null,token:s=null,value:r=null,batchId:i=null,metaType:a=null,metaId:c=null,meta:u=null,index:l=null,createdAt:h=null,version:p=null}){super(),this.position=e,this.walletAddress=t,this.isotope=n,this.token=s,this.value=r,this.batchId=i,this.metaType=a,this.metaId=c,this.meta=u,this.index=l,this.createdAt=h,this.version=p}}const De={4:$s};class g{constructor({position:e=null,walletAddress:t=null,isotope:n=null,token:s=null,value:r=null,batchId:i=null,metaType:a=null,metaId:c=null,meta:u=null,otsFragment:l=null,index:h=null,version:p=null}){this.position=e,this.walletAddress=t,this.isotope=n,this.token=s,this.value=r!==null?String(r):null,this.batchId=i,this.metaType=a,this.metaId=c,this.meta=u?de.normalizeMeta(u):[],this.index=h,this.otsFragment=l,this.createdAt=String(+new Date),p!==null&&Object.prototype.hasOwnProperty.call(De,p)&&(this.version=String(p))}static getHashableProps(){return["position","walletAddress","isotope","token","value","batchId","metaType","metaId","meta","createdAt"]}static getUnclaimedProps(){return["otsFragment"]}static create({isotope:e,wallet:t=null,value:n=null,metaType:s=null,metaId:r=null,meta:i=null,batchId:a=null}){return i||(i=new P),i instanceof P||(i=new P(i)),t&&(i.setAtomWallet(t),a||(a=t.batchId)),new g({position:t?t.position:null,walletAddress:t?t.address:null,isotope:e,token:t?t.token:null,value:n,batchId:a,metaType:s,metaId:r,meta:i.get()})}static jsonToObject(e){const t=Object.assign(new g({}),JSON.parse(e)),n=Object.keys(new g({}));for(const s in t)Object.prototype.hasOwnProperty.call(t,s)&&!n.includes(s)&&delete t[s];return t}toJSON(e={}){const{includeOtsFragments:t=!0,validateFields:n=!1}=e;try{if(n){const r=["position","walletAddress","isotope","token"];for(const i of r)if(!this[i])throw new Error(`Required field '${i}' is missing or empty`)}const s={position:this.position??"",walletAddress:this.walletAddress??"",isotope:this.isotope,token:this.token??"",value:this.value,batchId:this.batchId,metaType:this.metaType,metaId:this.metaId,meta:this.meta||[],index:this.index,createdAt:this.createdAt,version:this.version};return t&&this.otsFragment&&(s.otsFragment=this.otsFragment),s}catch(s){throw new Error(`Atom serialization failed: ${s.message}`)}}static fromJSON(e,t={}){const{validateStructure:n=!0,strictMode:s=!1}=t;try{const r=typeof e=="string"?JSON.parse(e):e;if(s||n){const a=["position","walletAddress","isotope","token"];for(const c of a)if(!r[c])throw new Error(`Required field '${c}' is missing or empty`)}const i=new g({position:r.position,walletAddress:r.walletAddress,isotope:r.isotope,token:r.token,value:r.value,batchId:r.batchId,metaType:r.metaType,metaId:r.metaId,meta:r.meta,index:r.index,version:r.version});return r.otsFragment&&(i.otsFragment=r.otsFragment),r.createdAt&&(i.createdAt=r.createdAt),i}catch(r){throw new Error(`Atom deserialization failed: ${r.message}`)}}static hashAtoms({atoms:e,output:t="base17"}){const n=new Q("SHAKE256","TEXT"),s=g.sortAtoms(e);if(s.length===0)throw new se;if(s.map(r=>{if(!(r instanceof g))throw new se;return r}),s.every(r=>r.version&&Object.prototype.hasOwnProperty.call(De,r.version)))n.update(JSON.stringify(s.map(r=>De[r.version].create(r).view())));else{const r=String(e.length);let i=[];for(const a of s)i.push(r),i=i.concat(a.getHashableValues());for(const a of i)n.update(a)}switch(t){case"hex":return n.getHash("HEX",{outputLen:256});case"array":return n.getHash("ARRAYBUFFER",{outputLen:256});default:return zt(n.getHash("HEX",{outputLen:256}),16,17,"0123456789abcdef","0123456789abcdefg").padStart(64,"0")}}static jsonSerialization(e,t){if(!g.getUnclaimedProps().includes(e))return t}static sortAtoms(e){const t=[...e];return t.sort((n,s)=>n.index<s.index?-1:1),t}aggregatedMeta(){return de.aggregateMeta(this.meta)}getHashableValues(){const e=[];for(const t of g.getHashableProps()){const n=this[t];if(!(n===null&&!["position","walletAddress"].includes(t)))if(t==="meta")for(const s of n)typeof s.value<"u"&&s.value!==null&&(e.push(String(s.key)),e.push(String(s.value)));else e.push(n===null?"":String(n))}return e}}function ze(o=null,e=2048){if(o){const t=new Q("SHAKE256","TEXT");return t.update(o),t.getHash("HEX",{outputLen:e*4})}else return Xe(e)}function pe(o,e=null){const t=new Q("SHAKE256","TEXT");return t.update(o),t.getHash("HEX",{outputLen:256})}function je(o,e){const t=new Q("SHAKE256","TEXT");return t.update(o),t.getHash("HEX",{outputLen:e})}function qe({molecularHash:o=null,index:e=null}){return o!==null&&e!==null?pe(String(o)+String(e),"generateBatchId"):Xe(64)}class fe{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 fe(e.id,e.name,t)}static createFromDB(e){return new fe(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 it extends x{constructor(e="Attempting to create a wallet with no credentials (secret or bundle hash)",t=null,n=null){super(e,t,n),this.name="WalletCredentialException"}}const Ne=BigInt(2**32-1),Ct=BigInt(32);function As(o,e=!1){return e?{h:Number(o&Ne),l:Number(o>>Ct&Ne)}:{h:Number(o>>Ct&Ne)|0,l:Number(o&Ne)|0}}function vs(o,e=!1){const t=o.length;let n=new Uint32Array(t),s=new Uint32Array(t);for(let r=0;r<t;r++){const{h:i,l:a}=As(o[r],e);[n[r],s[r]]=[i,a]}return[n,s]}const xs=(o,e,t)=>o<<t|e>>>32-t,Is=(o,e,t)=>e<<t|o>>>32-t,Ms=(o,e,t)=>e<<t-32|o>>>64-t,Ts=(o,e,t)=>o<<t-32|e>>>64-t;function Cs(o){return o instanceof Uint8Array||ArrayBuffer.isView(o)&&o.constructor.name==="Uint8Array"}function Et(o,e=""){if(!Number.isSafeInteger(o)||o<0){const t=e&&`"${e}" `;throw new Error(`${t}expected integer >= 0, got ${o}`)}}function z(o,e,t=""){const n=Cs(o),s=o?.length,r=e!==void 0;if(!n||r&&s!==e){const i=t&&`"${t}" `,a=r?` of length ${e}`:"",c=n?`length=${s}`:`type=${typeof o}`;throw new Error(i+"expected Uint8Array"+a+", got "+c)}return o}function Rt(o,e=!0){if(o.destroyed)throw new Error("Hash instance has been destroyed");if(e&&o.finished)throw new Error("Hash#digest() has already been called")}function Es(o,e){z(o,void 0,"digestInto() output");const t=e.outputLen;if(o.length<t)throw new Error('"digestInto() output" expected to be of length >='+t)}function tn(o){return new Uint32Array(o.buffer,o.byteOffset,Math.floor(o.byteLength/4))}function nn(...o){for(let e=0;e<o.length;e++)o[e].fill(0)}const Rs=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function qs(o){return o<<24&4278190080|o<<8&16711680|o>>>8&65280|o>>>24&255}function Os(o){for(let e=0;e<o.length;e++)o[e]=qs(o[e]);return o}const qt=Rs?o=>o:Os;function sn(o,e={}){const t=(s,r)=>o(r).update(s).digest(),n=o(void 0);return t.outputLen=n.outputLen,t.blockLen=n.blockLen,t.create=s=>o(s),Object.assign(t,e),Object.freeze(t)}function Bs(o=32){const e=typeof globalThis=="object"?globalThis.crypto:null;if(typeof e?.getRandomValues!="function")throw new Error("crypto.getRandomValues must be defined");return e.getRandomValues(new Uint8Array(o))}const Ye=o=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,o])}),Ws=BigInt(0),ve=BigInt(1),Us=BigInt(2),Ps=BigInt(7),Hs=BigInt(256),Ks=BigInt(113),rn=[],on=[],an=[];for(let o=0,e=ve,t=1,n=0;o<24;o++){[t,n]=[n,(2*t+3*n)%5],rn.push(2*(5*n+t)),on.push((o+1)*(o+2)/2%64);let s=Ws;for(let r=0;r<7;r++)e=(e<<ve^(e>>Ps)*Ks)%Hs,e&Us&&(s^=ve<<(ve<<BigInt(r))-ve);an.push(s)}const ln=vs(an,!0),Ns=ln[0],Fs=ln[1],Ot=(o,e,t)=>t>32?Ms(o,e,t):xs(o,e,t),Bt=(o,e,t)=>t>32?Ts(o,e,t):Is(o,e,t);function Ls(o,e=24){const t=new Uint32Array(10);for(let n=24-e;n<24;n++){for(let i=0;i<10;i++)t[i]=o[i]^o[i+10]^o[i+20]^o[i+30]^o[i+40];for(let i=0;i<10;i+=2){const a=(i+8)%10,c=(i+2)%10,u=t[c],l=t[c+1],h=Ot(u,l,1)^t[a],p=Bt(u,l,1)^t[a+1];for(let d=0;d<50;d+=10)o[i+d]^=h,o[i+d+1]^=p}let s=o[2],r=o[3];for(let i=0;i<24;i++){const a=on[i],c=Ot(s,r,a),u=Bt(s,r,a),l=rn[i];s=o[l],r=o[l+1],o[l]=c,o[l+1]=u}for(let i=0;i<50;i+=10){for(let a=0;a<10;a++)t[a]=o[i+a];for(let a=0;a<10;a++)o[i+a]^=~t[(a+2)%10]&t[(a+4)%10]}o[0]^=Ns[n],o[1]^=Fs[n]}nn(t)}class et{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,Et(n,"outputLen"),!(0<e&&e<200))throw new Error("only keccak-f1600 function is supported");this.state=new Uint8Array(200),this.state32=tn(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){Rt(this),z(e);const{blockLen:t,state:n}=this,s=e.length;for(let r=0;r<s;){const i=Math.min(t-this.pos,s-r);for(let a=0;a<i;a++)n[this.pos++]^=e[r++];this.pos===t&&this.keccak()}return this}finish(){if(this.finished)return;this.finished=!0;const{state:e,suffix:t,pos:n,blockLen:s}=this;e[n]^=t,(t&128)!==0&&n===s-1&&this.keccak(),e[s-1]^=128,this.keccak()}writeInto(e){Rt(this,!1),z(e),this.finish();const t=this.state,{blockLen:n}=this;for(let s=0,r=e.length;s<r;){this.posOut>=n&&this.keccak();const i=Math.min(n-this.posOut,r-s);e.set(t.subarray(this.posOut,this.posOut+i),s),this.posOut+=i,s+=i}return e}xofInto(e){if(!this.enableXOF)throw new Error("XOF is not possible for this instance");return this.writeInto(e)}xof(e){return Et(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,nn(this.state)}_cloneInto(e){const{blockLen:t,suffix:n,outputLen:s,rounds:r,enableXOF:i}=this;return e||=new et(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 cn=(o,e,t,n={})=>sn(()=>new et(e,o,t),n),Qs=cn(6,136,32,Ye(8)),Ds=cn(6,72,64,Ye(10)),un=(o,e,t,n={})=>sn((s={})=>new et(e,o,s.dkLen===void 0?t:s.dkLen,!0),n),js=un(31,168,16,Ye(11)),hn=un(31,136,32,Ye(12));function It(o){if(!Number.isSafeInteger(o)||o<0||o>4294967295)throw new Error("wrong u32 integer:"+o);return o}function dn(o){return It(o),(o&o-1)===0&&o!==0}function pn(o,e){It(o);let t=0;for(let n=0;n<e;n++,o>>>=1)t=t<<1|o&1;return t}function fn(o){return It(o),31-Math.clz32(o)}function Wt(o){const e=o.length;if(e<2||!dn(e))throw new Error("n must be a power of 2 and greater than 1. Got "+e);const t=fn(e);for(let n=0;n<e;n++){const s=pn(n,t);if(n<s){const r=o[n];o[n]=o[s],o[s]=r}}return o}const Ut=(o,e)=>{const{N:t,roots:n,dit:s,invertButterflies:r=!1,skipStages:i=0,brp:a=!0}=e,c=fn(t);if(!dn(t))throw new Error("FFT: Polynomial size should be power of two");const u=s!==r;return l=>{if(l.length!==t)throw new Error("FFT: wrong Polynomial length");s&&a&&Wt(l);for(let h=0,p=1;h<c-i;h++){const d=s?h+1+i:c-h,w=1<<d,A=w>>1,R=t>>d;for(let f=0;f<t;f+=w)for(let y=0,b=p++;y<A;y++){const C=r?s?t-b:b:y*R,S=f+y,$=f+y+A,v=n[C],I=l[$],_=l[S];if(u){const H=o.mul(I,v);l[S]=o.add(_,H),l[$]=o.sub(_,H)}else r?(l[S]=o.add(I,_),l[$]=o.mul(o.sub(I,_),v)):(l[S]=o.add(_,I),l[$]=o.mul(o.sub(_,I),v))}}return!s&&a&&Wt(l),l}};const Pt=Bs;function ot(o,e){if(o.length!==e.length)return!1;let t=0;for(let n=0;n<o.length;n++)t|=o[n]^e[n];return t===0}function Vs(o){return Uint8Array.from(o)}function Ve(o,...e){const t=s=>typeof s=="number"?s:s.bytesLen,n=e.reduce((s,r)=>s+t(r),0);return{bytesLen:n,encode:s=>{const r=new Uint8Array(n);for(let i=0,a=0;i<e.length;i++){const c=e[i],u=t(c),l=typeof c=="number"?s[i]:c.encode(s[i]);z(l,u,o),r.set(l,a),typeof c!="number"&&l.fill(0),a+=u}return r},decode:s=>{z(s,n,o);const r=[];for(const i of e){const a=t(i),c=s.subarray(0,a);r.push(typeof i=="number"?c:i.decode(c)),s=s.subarray(a)}return r}}}function at(o,e){const t=e*o.bytesLen;return{bytesLen:t,encode:n=>{if(n.length!==e)throw new Error(`vecCoder.encode: wrong length=${n.length}. Expected: ${e}`);const s=new Uint8Array(t);for(let r=0,i=0;r<n.length;r++){const a=o.encode(n[r]);s.set(a,i),a.fill(0),i+=a.length}return s},decode:n=>{z(n,t);const s=[];for(let r=0;r<n.length;r+=o.bytesLen)s.push(o.decode(n.subarray(r,r+o.bytesLen)));return s}}}function X(...o){for(const e of o)if(Array.isArray(e))for(const t of e)t.fill(0);else e.fill(0)}function Ht(o){return(1<<o)-1}const zs=o=>{const{newPoly:e,N:t,Q:n,F:s,ROOT_OF_UNITY:r,brvBits:i}=o,a=(f,y=n)=>{const b=f%y|0;return(b>=0?b|0:y+b|0)|0},c=(f,y=n)=>{const b=a(f,y)|0;return(b>y>>1?b-y|0:b)|0};function u(){const f=e(t);for(let y=0;y<t;y++){const b=pn(y,i),C=BigInt(r)**BigInt(b)%BigInt(n);f[y]=Number(C)|0}return f}const l=u(),h={add:(f,y)=>a((f|0)+(y|0))|0,sub:(f,y)=>a((f|0)-(y|0))|0,mul:(f,y)=>a((f|0)*(y|0))|0,inv:f=>{throw new Error("not implemented")}},p={N:t,roots:l,invertButterflies:!0,skipStages:1,brp:!1},d=Ut(h,{dit:!1,...p}),w=Ut(h,{dit:!0,...p});return{mod:a,smod:c,nttZetas:l,NTT:{encode:f=>d(f),decode:f=>{w(f);for(let y=0;y<f.length;y++)f[y]=a(s*f[y]);return f}},bitsCoder:(f,y)=>{const b=Ht(f),C=f*(t/8);return{bytesLen:C,encode:S=>{const $=new Uint8Array(C);for(let v=0,I=0,_=0,H=0;v<S.length;v++)for(I|=(y.encode(S[v])&b)<<_,_+=f;_>=8;_-=8,I>>=8)$[H++]=I&Ht(_);return $},decode:S=>{const $=e(t);for(let v=0,I=0,_=0,H=0;v<S.length;v++)for(I|=S[v]<<_,_+=8;_>=f;_-=f,I>>=f)$[H++]=y.decode(I&b);return $}}}}},Js=o=>(e,t)=>{t||(t=o.blockLen);const n=new Uint8Array(e.length+2);n.set(e);const s=e.length,r=new Uint8Array(t);let i=o.create({}),a=0,c=0;return{stats:()=>({calls:a,xofs:c}),get:(u,l)=>(n[s+0]=u,n[s+1]=l,i.destroy(),i=o.create({}).update(n),a++,()=>(c++,i.xofInto(r))),clean:()=>{i.destroy(),X(r,n)}}},Gs=Js(js);const L=256,he=3329,Xs=3303,Zs=17,{mod:Oe,nttZetas:Ys,NTT:oe,bitsCoder:er}=zs({N:L,Q:he,F:Xs,ROOT_OF_UNITY:Zs,newPoly:o=>new Uint16Array(o),brvBits:7}),tr={768:{N:L,Q:he,K:3,ETA1:2,ETA2:2,du:10,dv:4,RBGstrength:192}},nr=o=>{if(o>=12)return{encode:t=>t,decode:t=>t};const e=2**(o-1);return{encode:t=>((t<<o)+he/2)/he,decode:t=>t*he+e>>>o}},xe=o=>er(o,nr(o));function ae(o,e){for(let t=0;t<L;t++)o[t]=Oe(o[t]+e[t])}function sr(o,e){for(let t=0;t<L;t++)o[t]=Oe(o[t]-e[t])}function rr(o,e,t,n,s){const r=Oe(e*n*s+o*t),i=Oe(o*n+e*t);return{c0:r,c1:i}}function Fe(o,e){for(let t=0;t<L/2;t++){let n=Ys[64+(t>>1)];t&1&&(n=-n);const{c0:s,c1:r}=rr(o[2*t+0],o[2*t+1],e[2*t+0],e[2*t+1],n);o[2*t+0]=s,o[2*t+1]=r}return o}function Kt(o){const e=new Uint16Array(L);for(let t=0;t<L;){const n=o();if(n.length%3)throw new Error("SampleNTT: unaligned block");for(let s=0;t<L&&s+3<=n.length;s+=3){const r=(n[s+0]>>0|n[s+1]<<8)&4095,i=(n[s+1]>>4|n[s+2]<<4)&4095;r<he&&(e[t++]=r),t<L&&i<he&&(e[t++]=i)}}return e}function Ie(o,e,t,n){const s=o(n*L/4,e,t),r=new Uint16Array(L),i=tn(s);let a=0;for(let c=0,u=0,l=0,h=0;c<i.length;c++){let p=i[c];for(let d=0;d<32;d++)l+=p&1,p>>=1,a+=1,a===n?(h=l,l=0):a===2*n&&(r[u++]=Oe(h-l),l=0,a=0)}if(a)throw new Error(`sampleCBD: leftover bits: ${a}`);return r}const ir=o=>{const{K:e,PRF:t,XOF:n,HASH512:s,ETA1:r,ETA2:i,du:a,dv:c}=o,u=xe(1),l=xe(c),h=xe(a),p=Ve("publicKey",at(xe(12),e),32),d=at(xe(12),e),w=Ve("ciphertext",at(h,e),l),A=Ve("seed",32,32);return{secretCoder:d,lengths:{secretKey:d.bytesLen,publicKey:p.bytesLen,cipherText:w.bytesLen},keygen:R=>{z(R,32,"seed");const f=new Uint8Array(33);f.set(R),f[32]=e;const y=s(f),[b,C]=A.decode(y),S=[],$=[];for(let _=0;_<e;_++)S.push(oe.encode(Ie(t,C,_,r)));const v=n(b);for(let _=0;_<e;_++){const H=oe.encode(Ie(t,C,e+_,r));for(let O=0;O<e;O++){const ye=Kt(v.get(O,_));ae(H,Fe(ye,S[O]))}$.push(H)}v.clean();const I={publicKey:p.encode([$,b]),secretKey:d.encode(S)};return X(b,C,S,$,f,y),I},encrypt:(R,f,y)=>{const[b,C]=p.decode(R),S=[];for(let O=0;O<e;O++)S.push(oe.encode(Ie(t,y,O,r)));const $=n(C),v=new Uint16Array(L),I=[];for(let O=0;O<e;O++){const ye=Ie(t,y,e+O,i),st=new Uint16Array(L);for(let Ke=0;Ke<e;Ke++){const ks=Kt($.get(O,Ke));ae(st,Fe(ks,S[Ke]))}ae(ye,oe.decode(st)),I.push(ye),ae(v,Fe(b[O],S[O])),X(st)}$.clean();const _=Ie(t,y,2*e,i);ae(_,oe.decode(v));const H=u.decode(f);return ae(H,_),X(b,S,v,_),w.encode([I,H])},decrypt:(R,f)=>{const[y,b]=w.decode(R),C=d.decode(f),S=new Uint16Array(L);for(let $=0;$<e;$++)ae(S,Fe(C[$],oe.encode(y[$])));return sr(b,oe.decode(S)),X(S,C,y),u.encode(b)}}};function or(o){const e=ir(o),{HASH256:t,HASH512:n,KDF:s}=o,{secretCoder:r,lengths:i}=e,a=Ve("secretKey",i.secretKey,i.publicKey,32,32),c=32,u=64;return{info:{type:"ml-kem"},lengths:{...i,seed:64,msg:c,msgRand:c,secretKey:a.bytesLen},keygen:(l=Pt(u))=>{z(l,u,"seed");const{publicKey:h,secretKey:p}=e.keygen(l.subarray(0,32)),d=t(h),w=a.encode([p,h,d,l.subarray(32)]);return X(p,d),{publicKey:h,secretKey:w}},getPublicKey:l=>{const[h,p]=a.decode(l);return Uint8Array.from(p)},encapsulate:(l,h=Pt(c))=>{z(l,i.publicKey,"publicKey"),z(h,c,"message");const p=l.subarray(0,384*o.K),d=r.encode(r.decode(Vs(p)));if(!ot(d,p))throw X(d),new Error("ML-KEM.encapsulate: wrong publicKey modulus");X(d);const w=n.create().update(h).update(t(l)).digest(),A=e.encrypt(l,h,w.subarray(32,64));return X(w.subarray(32)),{cipherText:A,sharedSecret:w.subarray(0,32)}},decapsulate:(l,h)=>{z(h,a.bytesLen,"secretKey"),z(l,i.cipherText,"cipherText");const p=a.bytesLen-96,d=p+32,w=t(h.subarray(p/2,d));if(!ot(w,h.subarray(d,d+32)))throw new Error("invalid secretKey: hash check failed");const[A,R,f,y]=a.decode(h),b=e.decrypt(l,A),C=n.create().update(b).update(f).digest(),S=C.subarray(0,32),$=e.encrypt(R,b,C.subarray(32,64)),v=ot(l,$),I=s.create({dkLen:32}).update(y).update(l).digest();return X(b,$,v?I:S),v?S:I}}}function ar(o,e,t){return hn.create({dkLen:o}).update(e).update(new Uint8Array([t])).digest()}const lr={HASH256:Qs,HASH512:Ds,KDF:hn,XOF:Gs,PRF:ar},lt=or({...lr,...tr[768]});class k{constructor({secret:e=null,bundle:t=null,token:n="USER",address:s=null,position:r=null,batchId:i=null,characters:a=null}){this.token=n,this.balance="0",this.molecules={},this.key=null,this.privkey=null,this.pubkey=null,this.tokenUnits=[],this.tradeRates={},this.address=s,this.position=r,this.bundle=t,this.batchId=i,this.characters=a,e&&(this.bundle=this.bundle||pe(e,"Wallet::constructor"),this.position=this.position||k.generatePosition(),this.key=k.generateKey({secret:e,token:this.token,position:this.position}),this.address=this.address||k.generateAddress(this.key),this.characters=this.characters||"BASE64",this.initializeMLKEM())}static create({secret:e=null,bundle:t=null,token:n,batchId:s=null,characters:r=null}){let i=null;if(!e&&!t)throw new it;return e&&!t&&(i=k.generatePosition(),t=pe(e,"Wallet::create")),new k({secret:e,bundle:t,token:n,position:i,batchId:s,characters:r})}static isBundleHash(e){return typeof e!="string"?!1:e.length===64&&Qe(e)}static getTokenUnits(e){const t=[];return e.forEach(n=>{t.push(fe.createFromDB(n))}),t}static generateKey({secret:e,token:t,position:n}){if(!e)throw new it("Wallet::generateKey() - Secret is required!");if(!n)throw new it("Wallet::generateKey() - Position is required!");const s=Qe(e)?e:je(e,1024),r=Qe(n)?n:je(n,256),a=BigInt(`0x${s}`)+BigInt(`0x${r}`),c=new Q("SHAKE256","TEXT");c.update(a.toString(16)),t&&c.update(t);const u=new Q("SHAKE256","TEXT");return u.update(c.getHash("HEX",{outputLen:8192})),u.getHash("HEX",{outputLen:8192})}static generateAddress(e){const t=Re(e,128),n=new Q("SHAKE256","TEXT");for(const r in t){let i=t[r];for(let a=1;a<=16;a++){const c=new Q("SHAKE256","TEXT");c.update(i),i=c.getHash("HEX",{outputLen:512})}n.update(i)}const s=new Q("SHAKE256","TEXT");return s.update(n.getHash("HEX",{outputLen:8192})),s.getHash("HEX",{outputLen:256})}static generatePosition(e=64){return Xe(e,"abcdef0123456789")}initializeMLKEM(){const e=ze(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}=lt.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 a=e[i];r.tokenUnits=this.tokenUnits.filter(c=>a.includes(c.id))}),n.tokenUnits=this.tokenUnits.filter(r=>!s.has(r.id)),this.tokenUnits=this.tokenUnits.filter(r=>s.has(r.id)))}createRemainder(e){const t=k.create({secret:e,token:this.token,characters:this.characters});return t.initBatchId({sourceWallet:this,isRemainder:!0}),t}isShadow(){return(typeof this.position>"u"||this.position===null)&&(typeof this.address>"u"||this.address===null)}initBatchId({sourceWallet:e,isRemainder:t=!1}){e.batchId&&(this.batchId=t?e.batchId:qe({}))}async encryptMessage(e,t){const n=JSON.stringify(e),s=new TextEncoder().encode(n),r=this.deserializeKey(t),i=1184;if(r.length!==i)throw new Error(`KnishIO: cannot ML-KEM-encrypt — recipient public key is ${r.length} bytes, expected ${i} (ML-KEM-768). The node likely did not advertise an ML-KEM public key (upgrade the validator to a PQ-transport build), or authenticate with { encrypt: false }.`);const{cipherText:a,sharedSecret:c}=lt.encapsulate(r),u=await this.encryptWithSharedSecret(s,c);return{cipherText:this.serializeKey(a),encryptedMessage:this.serializeKey(u)}}async decryptMessage(e){const t=await this._mlkemDecryptToString(e);return t===null?null:JSON.parse(t)}async _mlkemDecryptToString(e){const{cipherText:t,encryptedMessage:n}=e;let s;try{s=lt.decapsulate(this.deserializeKey(t),this.privkey)}catch(a){return console.error("Wallet::decryptMessage() - Decapsulation failed",a),console.info("Wallet::decryptMessage() - my public key",this.pubkey),null}let r;try{r=this.deserializeKey(n)}catch(a){return console.warn("Wallet::decryptMessage() - Deserialization failed",a),console.info("Wallet::decryptMessage() - my public key",this.pubkey),console.info("Wallet::decryptMessage() - our shared secret",s),null}let i;try{i=await this.decryptWithSharedSecret(r,s)}catch(a){return console.warn("Wallet::decryptMessage() - Decryption failed",a),console.info("Wallet::decryptMessage() - my public key",this.pubkey),console.info("Wallet::decryptMessage() - our shared secret",s),console.info("Wallet::decryptMessage() - deserialized encrypted message",r),null}try{return new TextDecoder().decode(i)}catch(a){return console.warn("Wallet::decryptMessage() - Decoding failed",a),console.info("Wallet::decryptMessage() - my public key",this.pubkey),console.info("Wallet::decryptMessage() - our shared secret",s),console.info("Wallet::decryptMessage() - deserialized encrypted message",r),console.info("Wallet::decryptMessage() - decrypted Uint8Array",i),null}}hashShare(e){const t=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),a=new Uint8Array(n.length+i.byteLength);return a.set(n),a.set(new Uint8Array(i),n.length),a}async decryptWithSharedSecret(e,t){const s={name:"AES-GCM",iv:e.slice(0,12)},r=await crypto.subtle.importKey("raw",t,{name:"AES-GCM"},!1,["decrypt"]),i=await crypto.subtle.decrypt(s,r,e.slice(12));return new Uint8Array(i)}}class be extends x{constructor(e="There is an atom without an index",t=null,n=null){super(e,t,n),this.name="AtomIndexException"}}class yn extends x{constructor(e="The molecular hash does not match",t=null,n=null){super(e,t,n),this.name="MolecularHashMismatchException"}}class mn extends x{constructor(e="The molecular hash is missing",t=null,n=null){super(e,t,n),this.name="MolecularHashMissingException"}}class ft extends x{constructor(e="",t=null,n=null){super(e,t,n),this.name="PolicyInvalidException"}}class Mt extends x{constructor(e="OTS malformed",t=null,n=null){super(e,t,n),this.name="SignatureMalformedException"}}class gn extends x{constructor(e="One-time signature (OTS) does not match!",t=null,n=null){super(e,t,n),this.name="SignatureMismatchException"}}class J extends x{constructor(e="Insufficient balance to make transfer",t=null,n=null){super(e,t,n),this.name="TransferBalanceException"}}class ke extends x{constructor(e="Token transfer atoms are malformed",t=null,n=null){super(e,t,n),this.name="TransferMalformedException"}}class yt extends x{constructor(e="Token slugs for wallets in transfer do not match!",t=null,n=null){super(e,t,n),this.name="TransferMismatchedException"}}class mt extends x{constructor(e="Invalid remainder provided",t=null,n=null){super(e,t,n),this.name="TransferRemainderException"}}class wn extends x{constructor(e="Sender and recipient(s) cannot be the same",t=null,n=null){super(e,t,n),this.name="TransferToSelfException"}}class Te extends x{constructor(e="Token transfer atoms are unbalanced",t=null,n=null){super(e,t,n),this.name="TransferUnbalancedException"}}class U extends x{constructor(e="Empty meta data.",t=null,n=null){super(e,t,n),this.name="MetaMissingException"}}class ne extends x{constructor(e="Wrong type of token for this isotope",t=null,n=null){super(e,t,n),this.name="WrongTokenTypeException"}}class Ce extends x{constructor(e="Incorrect BatchId",t=null,n=null){super(e,t,n),this.name="BatchIdException"}}class Nt{constructor(e={}){for(const t in e)this[`__${t}`]=e[t]}static toObject(e){return new this(e)}toJSON(){const e={};for(const t of Object.keys(this))t.substring(0,2)==="__"&&(e[t.substring(2,t.length)]=this[t]);return e}}class Je extends x{constructor(e="An incorrect argument!",t=null,n=null){super(e,t,n),this.name="RuleArgumentException"}}class ee extends x{constructor(e="Code exception",t=null,n=null){super(e,t,n),this.name="CodeException"}}class Ee{constructor({action:e,metaType:t=null,metaId:n=null,meta:s=null,address:r=null,token:i=null,amount:a=null,comparison:c=null}){if(s&&(this.meta=s),!e)throw new Je('Callback structure violated, missing mandatory "action" parameter.');this.__metaId=n,this.__metaType=t,this.__action=e,this.__address=r,this.__token=i,this.__amount=a,this.__comparison=c}set comparison(e){this.__comparison=e}set amount(e){if(!Zt(e))throw new ee("Parameter amount should be a string containing numbers");this.__amount=e}set token(e){this.__token=e}set address(e){this.__address=e}set meta(e){this.__meta=e instanceof Nt?e:Nt.toObject(e)}set metaType(e){this.__metaType=e}set metaId(e){this.__metaId=e}static toObject(e){const t=new Ee({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 we(Object.keys(this.toJSON()),["action","metaId","metaType","meta"]).length===4&&this._is("meta")}isCollect(){return we(Object.keys(this.toJSON()),["action","address","token","amount","comparison"]).length===5&&this._is("collect")}isBuffer(){return we(Object.keys(this.toJSON()),["action","address","token","amount","comparison"]).length===5&&this._is("buffer")}isRemit(){return we(Object.keys(this.toJSON()),["action","token","amount"]).length===3&&this._is("remit")}isBurn(){return we(Object.keys(this.toJSON()),["action","token","amount","comparison"]).length===4&&this._is("burn")}_is(e){return this.__action.toLowerCase()===e.toLowerCase()}}class ct{constructor({key:e,value:t,comparison:n}){if([e,t,n].some(s=>!s))throw new Je("Condition::constructor( { key, value, comparison } ) - not all class parameters are initialised!");this.__key=e,this.__value=t,this.__comparison=n}static toObject(e){return new this({key:e.key,value:e.value,comparison:e.comparison})}toJSON(){return{key:this.__key,value:this.__value,comparison:this.__comparison}}}class Be{constructor({condition:e=[],callback:t=[]}){for(const n of e)if(!(n instanceof ct))throw new Je;for(const n of t)if(!(n instanceof Ee))throw new Je;this.__condition=e,this.__callback=t}set comparison(e){this.__condition.push(e instanceof ct?e:ct.toObject(e))}set callback(e){this.__callback.push(e instanceof Ee?e:Ee.toObject(e))}static toObject(e){if(!e.condition)throw new U("Rule::toObject() - Incorrect rule format! There is no condition field.");if(!e.callback)throw new U("Rule::toObject() - Incorrect rule format! There is no callback field.");const t=new 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 M{static __init(e,t){this.arr=String(t).split("."),this.key=this.arr.shift();const n=Number(this.key);Number.isInteger(n)&&(this.key=n),this.__nextKey=this.arr.length,this.__next=this.__tic(e)}static __tic(e){return!Array.isArray(e)&&!(e instanceof Object)?!1:typeof e[this.key]<"u"}static has(e,t){return this.__init(e,t),this.__next?this.__nextKey===0?!0:this.has(e[this.key],this.arr.join(".")):!1}static get(e,t,n=null){return this.__init(e,t),this.__next?this.__nextKey===0?e[this.key]:this.get(e[this.key],this.arr.join("."),n):n}static set(e,t,n){const s=t.split(".");let r=e;const i=s.length-1;for(let u=0;u<i;u++){const l=s[u],h=Number(l),p=Number.isInteger(h);(p?h:l in r)||(r[p?h:l]=s[u+1].match(/^\d+$/)?[]:{}),r=r[p?h:l]}const a=s[i],c=Number(a);return r[Number.isInteger(c)?c:a]=n,e}}class _e{constructor(e){if(e.molecularHash===null)throw new mn;if(!e.atoms.length)throw new se;for(const t of e.atoms)if(t.index===null)throw new be;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 Ce;for(const s of t)if(s.batchId===null)throw new Ce}return!0}throw new Ce}isotopeI(){for(const e of this.molecule.getIsotopes("I")){if(e.token!=="USER")throw new ne(`Check::isotopeI() - "${e.token}" is not a valid Token slug for "${e.isotope}" isotope Atoms!`);if(e.index===0)throw new be(`Check::isotopeI() - Isotope "${e.isotope}" Atoms must have a non-zero index!`)}return!0}isotopeU(){for(const e of this.molecule.getIsotopes("U")){if(e.token!=="AUTH")throw new ne(`Check::isotopeU() - "${e.token}" is not a valid Token slug for "${e.isotope}" isotope Atoms!`);if(e.index!==0)throw new be(`Check::isotopeU() - Isotope "${e.isotope}" Atoms must have an index equal to 0!`)}return!0}isotopeM(){const e=["readPolicy","writePolicy"];for(const t of this.molecule.getIsotopes("M")){if(t.meta.length<1)throw new U;if(t.token!=="USER")throw new ne(`Check::isotopeM() - "${t.token}" is not a valid Token slug for "${t.isotope}" isotope Atoms!`);const n=de.aggregateMeta(t.meta);for(const s of e){let r=n[s];if(r){r=JSON.parse(r);for(const[i,a]of Object.entries(r))if(!e.includes(i)){if(!Object.keys(n).includes(i))throw new ft(`${i} is missing from the meta.`);for(const c of a)if(!k.isBundleHash(c)&&!["all","self"].includes(c))throw new ft(`${c} does not correspond to the format of the policy.`)}}}}return!0}isotopeC(){for(const e of this.molecule.getIsotopes("C")){if(e.token!=="USER")throw new ne(`Check::isotopeC() - "${e.token}" is not a valid Token slug for "${e.isotope}" isotope Atoms!`);if(e.index!==0)throw new be(`Check::isotopeC() - Isotope "${e.isotope}" Atoms must have an index equal to 0!`)}return!0}isotopeT(){for(const e of this.molecule.getIsotopes("T")){const t=e.aggregatedMeta();if(String(e.metaType).toLowerCase()==="wallet"){for(const s of["position","bundle"])if(!Object.prototype.hasOwnProperty.call(t,s)||!t[s])throw new U(`Check::isotopeT() - Required meta field "${s}" is missing!`)}for(const s of["token"])if(!Object.prototype.hasOwnProperty.call(t,s)||!t[s])throw new U(`Check::isotopeT() - Required meta field "${s}" is missing!`);if(e.token!=="USER")throw new ne(`Check::isotopeT() - "${e.token}" is not a valid Token slug for "${e.isotope}" isotope Atoms!`);if(e.index!==0)throw new be(`Check::isotopeT() - Isotope "${e.isotope}" Atoms must have an index equal to 0!`)}return!0}isotopeR(){for(const e of this.molecule.getIsotopes("R")){const t=e.aggregatedMeta();if(t.policy){const n=JSON.parse(t.policy);if(!Object.keys(n).every(s=>["read","write"].includes(s)))throw new U("Check::isotopeR() - Mixing rules with politics!")}if(t.rule){const n=JSON.parse(t.rule);if(!Array.isArray(n))throw new U("Check::isotopeR() - Incorrect rule format!");for(const s of n)Be.toObject(s);if(n.length<1)throw new U("Check::isotopeR() - No rules!")}}return!0}isotopeP(){for(const e of this.molecule.getIsotopes("P")){if(e.token!=="USER")throw new ne(`Check::isotopeP() - "${e.token}" is not a valid Token slug for "${e.isotope}" isotope Atoms!`);const t=e.aggregatedMeta();if(!Object.prototype.hasOwnProperty.call(t,"peerHost")||!t.peerHost)throw new U('Check::isotopeP() - Required meta field "peerHost" is missing!')}return!0}isotopeA(){for(const e of this.molecule.getIsotopes("A")){if(e.token!=="USER")throw new ne(`Check::isotopeA() - "${e.token}" is not a valid Token slug for "${e.isotope}" isotope Atoms!`);if(!e.metaType)throw new U('Check::isotopeA() - Required field "metaType" is missing!');if(!e.metaId)throw new U('Check::isotopeA() - Required field "metaId" is missing!');const t=e.aggregatedMeta();if(!Object.prototype.hasOwnProperty.call(t,"action")||!t.action)throw new U('Check::isotopeA() - Required meta field "action" is missing!')}return!0}isotopeB(){const e=this.molecule.getIsotopes("B");if(e.length===0)return!0;for(const n of e){if(!n.metaType||n.metaType!=="walletBundle")throw new U('Check::isotopeB() - B-isotope atoms must have metaType "walletBundle"!');if(!n.metaId)throw new U("Check::isotopeB() - B-isotope atoms must have a metaId!");const s=Number(n.value);if(Number.isNaN(s))throw new ke("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 Te("Check::isotopeB() - V+B atom values do not balance to zero!")}return!0}isotopeF(){const e=this.molecule.getIsotopes("F");if(e.length===0)return!0;for(const n of e){if(!n.metaType||n.metaType!=="walletBundle")throw new U('Check::isotopeF() - F-isotope atoms must have metaType "walletBundle"!');if(!n.metaId)throw new U("Check::isotopeF() - F-isotope atoms must have a metaId!");const s=Number(n.value);if(Number.isNaN(s))throw new ke("Check::isotopeF() - F-isotope atom value is not a valid number!");if(s<0)throw new ke("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 Te("Check::isotopeF() - V+F atom values do not balance to zero!")}return!0}isotopeV(e=null){const t=this.molecule.getIsotopes("V");if(t.length===0)return!0;const n=this.molecule.getIsotopes("B").length>0||this.molecule.getIsotopes("F").length>0,s=this.molecule.atoms[0];if(!n&&s.isotope==="V"&&t.length===2){const a=t[t.length-1];if(s.token!==a.token)throw new yt;if(a.value<0)throw new ke;if(Number(s.value)+Number(a.value)!==0)throw new Te;return!0}let r=0,i=0;for(const a in this.molecule.atoms)if(Object.prototype.hasOwnProperty.call(this.molecule.atoms,a)){const c=this.molecule.atoms[a];if(c.isotope!=="V")continue;if(i=c.value*1,Number.isNaN(i))throw new TypeError('Invalid isotope "V" values');if(c.token!==s.token)throw new yt;if(a>0){if(i<0)throw new ke;if(c.walletAddress===s.walletAddress)throw new wn}r+=i}if(!n&&r!==0)throw new Te;if(e){if(i=s.value*1,Number.isNaN(i))throw new TypeError('Invalid isotope "V" values');const a=Number(e.balance)+i;if(a<0)throw new J;if(!n&&a!==r)throw new mt}else if(i!==0)throw new mt;return!0}molecularHash(){if(this.molecule.molecularHash!==g.hashAtoms({atoms:this.molecule.atoms}))throw new yn;return!0}ots(){const e=this.molecule.normalizedHash();let t=this.molecule.atoms.map(p=>p.otsFragment).reduce((p,d)=>p+d);if(t.length!==2048&&(t=Xt(t),t.length!==2048))throw new Mt;const n=Re(t,128);let s="";for(const p in n){let d=n[p];for(let w=0,A=8+e[p];w<A;w++)d=new Q("SHAKE256","TEXT").update(d).getHash("HEX",{outputLen:512});s+=d}const r=new Q("SHAKE256","TEXT");r.update(s);const i=r.getHash("HEX",{outputLen:8192}),a=new Q("SHAKE256","TEXT");a.update(i);const c=a.getHash("HEX",{outputLen:256}),u=this.molecule.atoms[0];let l=u.walletAddress;const h=M.get(u.aggregatedMeta(),"signingWallet");if(h&&(l=M.get(JSON.parse(h),"address")),c!==l)throw new gn;return!0}static fromServerData({molecularHash:e,bundleHash:t,cellSlug:n=null,status:s=null,createdAt:r=null,atoms:i=[]}){const a=i.map(c=>{let u=[];if(c.metasJson)try{const l=JSON.parse(c.metasJson);Array.isArray(l)?u=l:l&&typeof l=="object"&&(u=Object.entries(l).map(([h,p])=>({key:h,value:p})))}catch{u=[]}return{position:c.position||null,walletAddress:c.walletAddress||null,isotope:c.isotope||null,token:c.tokenSlug||c.token||null,value:c.value!=null?String(c.value):null,batchId:c.batchId||null,metaType:c.metaType||null,metaId:c.metaId||null,meta:u,index:c.index!=null?c.index:null,otsFragment:c.otsFragment||null,createdAt:c.createdAt||null}});return V.fromJSON({molecularHash:e,bundle:t,cellSlug:n,status:s,createdAt:r,atoms:a})}static verifyFromServerData(e){try{const t=_e.fromServerData(e);return new _e(t).verify(),{molecularHash:e.molecularHash,verified:!0,error:null}}catch(t){return{molecularHash:e.molecularHash||null,verified:!1,error:t.message||String(t)}}}}class ce extends x{constructor(e="Insufficient balance for requested transfer",t=null,n=null){super(e,t,n),this.name="BalanceInsufficientException"}}class gt extends x{constructor(e="Amount cannot be negative!",t=null,n=null){super(e,t,n),this.name="NegativeAmountException"}}class V{constructor({secret:e=null,bundle:t=null,sourceWallet:n=null,remainderWallet:s=null,cellSlug:r=null,version:i=null,continuIdPosition:a=null}){this.status=null,this.molecularHash=null,this.createdAt=String(+new Date),this.cellSlugOrigin=this.cellSlug=r,this.secret=e,this.bundle=t,this.sourceWallet=n,this.continuIdPosition=a,this.atoms=[],this.parentHashes=[],i!==null&&Object.prototype.hasOwnProperty.call(De,i)&&(this.version=String(i)),(s||n)&&(this.remainderWallet=s||k.create({secret:e,bundle:t,token:n.token,batchId:n.batchId,characters:n.characters}))}withParentHashes(e){return this.parentHashes=Array.isArray(e)?[...e]:[],this}get cellSlugDelimiter(){return"."}static isotopeFilter(e,t){return Array.isArray(e)||(e=[e]),t.filter(n=>e.includes(n.isotope))}static generateNextAtomIndex(e){return e.length}static jsonToObject(e){const t=Object.assign(new V({}),JSON.parse(e)),n=Object.keys(new V({}));if(!Array.isArray(t.atoms))throw new se;for(const s in Object.keys(t.atoms)){t.atoms[s]=g.jsonToObject(JSON.stringify(t.atoms[s]));for(const r of["position","walletAddress","isotope"])if(t.atoms[s].isotope.toLowerCase()!=="r"&&(typeof t.atoms[s][r]>"u"||t.atoms[s][r]===null))throw new se("MolecularStructure::jsonToObject() - Required Atom properties are missing!")}for(const s in t)Object.prototype.hasOwnProperty.call(t,s)&&!n.includes(s)&&delete t[s];return t.atoms=g.sortAtoms(t.atoms),t}static enumerate(e){const t={0:-8,1:-7,2:-6,3:-5,4:-4,5:-3,6:-2,7:-1,8:0,9:1,a:2,b:3,c:4,d:5,e:6,f:7,g:8},n=[],s=e.toLowerCase().split("");for(let r=0,i=s.length;r<i;++r){const a=s[r];typeof t[a]<"u"&&(n[r]=t[a])}return n}static normalize(e){let t=e.reduce((s,r)=>s+r);const n=t<0;for(;t<0||t>0;)for(const s of Object.keys(e))if((n?e[s]<8:e[s]>-8)&&(n?(++e[s],++t):(--e[s],--t),t===0))break;return e}getIsotopes(e){return V.isotopeFilter(e,this.atoms)}generateIndex(){return V.generateNextAtomIndex(this.atoms)}fill(e){for(const t in Object.keys(e))this[t]=e[t]}addAtom(e){return this.molecularHash=null,e.index=this.generateIndex(),e.version=this.version,this.atoms.push(e),this.atoms=g.sortAtoms(this.atoms),this}addContinuIdAtom(){(!this.remainderWallet||this.remainderWallet.token!=="USER")&&(this.remainderWallet=k.create({secret:this.secret,bundle:this.bundle}));const e={};return this.continuIdPosition?e.previousPosition=this.continuIdPosition:this.sourceWallet&&this.sourceWallet.position&&(e.previousPosition=this.sourceWallet.position),this.remainderWallet.pubkey&&(e.pubkey=this.remainderWallet.pubkey),this.remainderWallet.characters&&(e.characters=this.remainderWallet.characters),this.addAtom(g.create({isotope:"I",wallet:this.remainderWallet,metaType:"walletBundle",metaId:this.remainderWallet.bundle,meta:new P(e)})),this}addPolicyAtom({metaType:e,metaId:t,meta:n={},policy:s={}}){const r=new P(n);return r.addPolicy(s),this.addAtom(g.create({wallet:this.sourceWallet,isotope:"R",metaType:e,metaId:t,meta:r})),this}fuseToken(e,t){const n=e.length;if(this.sourceWallet.balance-n<0)throw new ce;return this.addAtom(g.create({isotope:"V",wallet:this.sourceWallet,value:-n})),this.addAtom(g.create({isotope:"F",wallet:t,value:1,metaType:"walletBundle",metaId:t.bundle})),this.addAtom(g.create({isotope:"V",wallet:this.remainderWallet,value:this.sourceWallet.balance-n,metaType:"walletBundle",metaId:this.remainderWallet.bundle})),this}burnToken({amount:e,walletBundle:t=null}){if(e<0)throw new gt("Molecule::burnToken() - Amount to burn must be positive!");if(this.sourceWallet.balance-e<0)throw new ce;const n=new k({bundle:"0000000000000000000000000000000000000000000000000000000000000000",token:this.sourceWallet.token});return this.addAtom(g.create({isotope:"V",wallet:this.sourceWallet,value:-this.sourceWallet.balance})),this.addAtom(g.create({isotope:"V",wallet:n,value:e,metaType:"walletBundle",metaId:n.bundle})),this.addAtom(g.create({isotope:"V",wallet:this.remainderWallet,value:this.sourceWallet.balance-e,metaType:"walletBundle",metaId:this.remainderWallet.bundle})),this}replenishToken({amount:e,units:t=[]}){if(e<0)throw new gt("Molecule::replenishToken() - Amount to replenish must be positive!");if(t.length){t=k.getTokenUnits(t),this.remainderWallet.tokenUnits=this.sourceWallet.tokenUnits;for(const n of t)this.remainderWallet.tokenUnits.push(n);this.remainderWallet.balance=String(this.remainderWallet.tokenUnits.length),this.sourceWallet.tokenUnits=t,this.sourceWallet.balance=String(this.sourceWallet.tokenUnits.length)}else this.remainderWallet.balance=String(Number(this.sourceWallet.balance)+e),this.sourceWallet.balance=String(e);return this.addAtom(g.create({isotope:"V",wallet:this.sourceWallet,value:Number(this.sourceWallet.balance)})),this.addAtom(g.create({isotope:"V",wallet:this.remainderWallet,value:Number(this.remainderWallet.balance),metaType:"walletBundle",metaId:this.remainderWallet.bundle})),this}initValue({recipientWallet:e,amount:t}){if(this.sourceWallet.balance-t<0)throw new ce;return this.addAtom(g.create({isotope:"V",wallet:this.sourceWallet,value:-this.sourceWallet.balance})),this.addAtom(g.create({isotope:"V",wallet:e,value:t,metaType:"walletBundle",metaId:e.bundle})),this.addAtom(g.create({isotope:"V",wallet:this.remainderWallet,value:this.sourceWallet.balance-t,metaType:"walletBundle",metaId:this.remainderWallet.bundle})),this}initValues({recipientWallets:e,amounts:t}){const n=t.reduce((s,r)=>s+Number(r),0);if(this.sourceWallet.balance-n<0)throw new ce;return this.addAtom(g.create({isotope:"V",wallet:this.sourceWallet,value:-this.sourceWallet.balance})),e.forEach((s,r)=>{this.addAtom(g.create({isotope:"V",wallet:s,value:t[r],metaType:"walletBundle",metaId:s.bundle}))}),this.addAtom(g.create({isotope:"V",wallet:this.remainderWallet,value:this.sourceWallet.balance-n,metaType:"walletBundle",metaId:this.remainderWallet.bundle})),this}initDepositBuffer({amount:e,tradeRates:t}){if(this.sourceWallet.balance-e<0)throw new ce;const n=k.create({secret:this.secret,bundle:this.bundle,token:this.sourceWallet.token,batchId:this.sourceWallet.batchId});return n.tradeRates=t,this.addAtom(g.create({isotope:"V",wallet:this.sourceWallet,value:-this.sourceWallet.balance})),this.addAtom(g.create({isotope:"B",wallet:n,value:e,metaType:"walletBundle",metaId:this.sourceWallet.bundle})),this.addAtom(g.create({isotope:"V",wallet:this.remainderWallet,value:this.sourceWallet.balance-e,metaType:"walletBundle",metaId:this.sourceWallet.bundle})),this}initWithdrawBuffer({recipients:e,signingWallet:t=null}){let n=0;for(const r of Object.values(e||{}))n+=r;if(this.sourceWallet.balance-n<0)throw new ce;const s=new P;t&&s.setSigningWallet(t),this.addAtom(g.create({isotope:"B",wallet:this.sourceWallet,value:-this.sourceWallet.balance,meta:s,metaType:"walletBundle",metaId:this.sourceWallet.bundle}));for(const[r,i]of Object.entries(e||{}))this.addAtom(new g({isotope:"V",token:this.sourceWallet.token,value:i,batchId:this.sourceWallet.batchId?qe({}):null,metaType:"walletBundle",metaId:r}));return this.addAtom(g.create({isotope:"B",wallet:this.remainderWallet,value:this.sourceWallet.balance-n,metaType:"walletBundle",metaId:this.remainderWallet.bundle})),this}initTokenCreation({recipientWallet:e,amount:t,meta:n}){const s=new P(n);return s.setMetaWallet(e),this.addAtom(g.create({isotope:"C",wallet:this.sourceWallet,value:t,metaType:"token",metaId:e.token,meta:s,batchId:e.batchId})),this.addContinuIdAtom(),this}createRule({metaType:e,metaId:t,rule:n,policy:s={}}){const r=[];for(const a of n)r.push(a instanceof Be?a:Be.toObject(a));const i=new P({rule:JSON.stringify(r)});return i.addPolicy(s),this.addAtom(g.create({isotope:"R",wallet:this.sourceWallet,metaType:e,metaId:t,meta:i})),this.addContinuIdAtom(),this}initWalletCreation(e,t=null){t||(t=new P),t.setMetaWallet(e);const n=g.create({isotope:"C",wallet:this.sourceWallet,metaType:"wallet",metaId:e.address,meta:t,batchId:e.batchId});return this.addAtom(n),this.addContinuIdAtom(),this}initShadowWalletClaim(e){const t=new P().setShadowWalletClaim(!0);return this.initWalletCreation(e,t)}initIdentifierCreation({type:e,contact:t,code:n}){const s={code:n,hash:pe(t.trim(),"Molecule::initIdentifierCreation")};return this.addAtom(g.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(g.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(g.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(g.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(g.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(g.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(d=>!(d instanceof g)).length!==0)throw new se;!t&&!this.bundle&&(this.bundle=e||pe(this.secret,"Molecule::sign")),this.molecularHash=g.hashAtoms({atoms:this.atoms});const s=this.atoms[0];let r=s.position;const i=M.get(s.aggregatedMeta(),"signingWallet");if(i&&(r=M.get(JSON.parse(i),"position")),!r)throw new Mt("Signing wallet must have a position!");const a=k.generateKey({secret:this.secret,token:s.token,position:s.position}),c=Re(a,128),u=this.normalizedHash();let l="";for(const d in c){let w=c[d];for(let A=0,R=8-u[d];A<R;A++)w=new Q("SHAKE256","TEXT").update(w).getHash("HEX",{outputLen:512});l+=w}n&&(l=Gt(l));const h=Re(l,Math.ceil(l.length/this.atoms.length));let p=null;for(let d=0,w=h.length;d<w;d++)this.atoms[d].otsFragment=h[d],p=this.atoms[d].position;return p}signSync(e={}){return this.sign(e)}cellSlugBase(){return(this.cellSlug||"").split(this.cellSlugDelimiter)[0]}toJSON(e={}){const{includeValidationContext:t=!1,includeOtsFragments:n=!0}=e;try{const s={status:this.status,molecularHash:this.molecularHash,createdAt:this.createdAt,cellSlug:this.cellSlug,bundle:this.bundle,atoms:this.atoms.map(r=>r.toJSON({includeOtsFragments:n}))};return this.parentHashes&&this.parentHashes.length>0&&(s.parentHashes=this.parentHashes),t&&(s.cellSlugOrigin=this.cellSlugOrigin,s.version=this.version,this.sourceWallet&&(s.sourceWallet={address:this.sourceWallet.address,position:this.sourceWallet.position,token:this.sourceWallet.token,balance:this.sourceWallet.balance||"0",bundle:this.sourceWallet.bundle,batchId:this.sourceWallet.batchId||null,characters:this.sourceWallet.characters||"BASE64",pubkey:this.sourceWallet.pubkey||null,tokenUnits:this.sourceWallet.tokenUnits||[],tradeRates:this.sourceWallet.tradeRates||{},molecules:this.sourceWallet.molecules||{}}),this.remainderWallet&&(s.remainderWallet={address:this.remainderWallet.address,position:this.remainderWallet.position,token:this.remainderWallet.token,balance:this.remainderWallet.balance||"0",bundle:this.remainderWallet.bundle,batchId:this.remainderWallet.batchId||null,characters:this.remainderWallet.characters||"BASE64",pubkey:this.remainderWallet.pubkey||null,tokenUnits:this.remainderWallet.tokenUnits||[],tradeRates:this.remainderWallet.tradeRates||{},molecules:this.remainderWallet.molecules||{}})),s}catch(s){throw new Error(`Molecule serialization failed: ${s.message}`)}}static fromJSON(e,t={}){const{includeValidationContext:n=!1,validateStructure:s=!0}=t;try{const r=typeof e=="string"?JSON.parse(e):e;if(s&&(!r.molecularHash||!Array.isArray(r.atoms)))throw new Error("Invalid molecule data: missing molecularHash or atoms array");const i=new V({secret:null,bundle:r.bundle||null,cellSlug:r.cellSlug||null,version:r.version||null});return i.status=r.status,i.molecularHash=r.molecularHash,i.createdAt=r.createdAt||String(+new Date),i.cellSlugOrigin=r.cellSlugOrigin,i.parentHashes=Array.isArray(r.parentHashes)?[...r.parentHashes]:[],Array.isArray(r.atoms)&&(i.atoms=r.atoms.map((a,c)=>{try{return g.fromJSON(a)}catch(u){throw new Error(`Failed to reconstruct atom ${c}: ${u.message}`)}})),n&&(r.sourceWallet&&(i.sourceWallet=new k({secret:null,token:r.sourceWallet.token,position:r.sourceWallet.position,bundle:r.sourceWallet.bundle,batchId:r.sourceWallet.batchId,characters:r.sourceWallet.characters}),i.sourceWallet.balance=String(r.sourceWallet.balance!=null?r.sourceWallet.balance:0),i.sourceWallet.address=r.sourceWallet.address,r.sourceWallet.pubkey&&(i.sourceWallet.pubkey=r.sourceWallet.pubkey),i.sourceWallet.tokenUnits=r.sourceWallet.tokenUnits||[],i.sourceWallet.tradeRates=r.sourceWallet.tradeRates||{},i.sourceWallet.molecules=r.sourceWallet.molecules||{}),r.remainderWallet&&(i.remainderWallet=new k({secret:null,token:r.remainderWallet.token,position:r.remainderWallet.position,bundle:r.remainderWallet.bundle,batchId:r.remainderWallet.batchId,characters:r.remainderWallet.characters}),i.remainderWallet.balance=String(r.remainderWallet.balance!=null?r.remainderWallet.balance:0),i.remainderWallet.address=r.remainderWallet.address,r.remainderWallet.pubkey&&(i.remainderWallet.pubkey=r.remainderWallet.pubkey),i.remainderWallet.tokenUnits=r.remainderWallet.tokenUnits||[],i.remainderWallet.tradeRates=r.remainderWallet.tradeRates||{},i.remainderWallet.molecules=r.remainderWallet.molecules||{})),i}catch(r){throw new Error(`Molecule deserialization failed: ${r.message}`)}}check(e=null){return new _e(this).verify(e)}normalizedHash(){return V.normalize(V.enumerate(this.molecularHash))}}class $e{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 $e(e);return n.setWallet(t),n}static restore(e,t){const n=new k({secret:t,token:"AUTH",position:e.wallet.position,characters:e.wallet.characters});return $e.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 x{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 wt=new TextEncoder;function re(o){if(o instanceof Uint8Array)o.fill(0);else if(Array.isArray(o))for(let e=0;e<o.length;e++)o[e]=0}async function bn(o,e){try{return await e(o)}finally{re(o)}}async function kn(o,e){const t=wt.encode(o);try{return await e(o)}finally{re(t)}}function cr(o,e){const t=typeof o=="string"?wt.encode(o):o,n=typeof e=="string"?wt.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 o=="string"&&re(t),typeof e=="string"&&re(n),s===0}class Ge{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 kn(n.secret,t)}clear(){this.secrets.clear()}}const ut=10**18;class ie{static val(e){return Math.abs(e*ut)<1?0:e}static cmp(e,t,n=!1){const s=ie.val(e)*ut,r=ie.val(t)*ut;return Math.abs(s-r)<1?0:s>r?1:-1}static equal(e,t){return ie.cmp(e,t)===0}}class te extends x{constructor(e="GraphQL did not provide a valid response.",t=null,n=null){super(e,t,n),this.name="InvalidResponseException"}}class We extends x{constructor(e="Authorization token missing or invalid.",t=null,n=null){super(e,t,n),this.name="UnauthenticatedException"}}let E=class{constructor({query:e,json:t,dataKey:n=null}){if(this.dataKey=n,this.errorKey="exception",this.$__payload=null,this.$__query=e,this.$__originResponse=t,this.$__response=t,typeof this.$__response>"u"||this.$__response===null)throw new te;if(M.has(this.$__response,this.errorKey)){const s=M.get(this.$__response,this.errorKey);throw String(s).includes("Unauthenticated")?new We:new te}if(this.$__response.errors&&Array.isArray(this.$__response.errors)&&this.$__response.errors.length>0){const s=this.$__response.errors[0].message||"Unknown GraphQL error";throw s.includes("Unauthenticated")?new We:new te(`GraphQL Error: ${s}`)}this.init()}init(){}data(){if(!this.dataKey)return this.response();if(!this.response().data)throw new te("Response has no data field");if(!M.has(this.response(),this.dataKey))throw new te(`Missing expected field: ${this.dataKey}`);return M.get(this.response(),this.dataKey)}response(){return this.$__response}payload(){return null}query(){return this.$__query}status(){return null}success(){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 N{constructor(e,t){this.client=e,this.knishIOClient=t,this.$__variables=null,this.$__query=null,this.$__response=null,this.$__request=null}response(){return this.$__response}async createResponseRaw(e){return this.createResponse(e)}createResponse(e){return new E({query:this,json:e})}createQuery({variables:e=null}){if(this.$__variables=this.compiledVariables(e),!this.uri())throw new ee("Query::createQuery() - Node URI was not initialized for this client instance!");if(this.$__query===null)throw new ee("Query::createQuery() - GraphQL subscription was not initialized!");return{query:this.$__query,variables:this.variables()}}async execute({variables:e=null,context:t={}}){this.$__request=this.createQuery({variables:e});const n={...t,...this.createQueryContext()};try{const s=await this.client.query({...this.$__request,context:n});return this.$__response=await this.createResponseRaw(s),this.$__response}catch(s){if(s.name==="AbortError")return this.knishIOClient.log("warn","Query was cancelled"),new E({query:this,json:{data:null,errors:[{message:"Query was cancelled"}]}});throw s}}compiledVariables(e=null){return e||{}}uri(){return this.client.getUri()}variables(){return this.$__variables}createQueryContext(){return{}}}class Sn extends E{constructor({query:e,json:t}){super({query:e,json:t,dataKey:"data.ContinuId"})}payload(){let e=null;const t=this.data();return t&&(e=new k({secret:null,token:t.tokenSlug}),e.address=t.address,e.position=t.position,e.bundle=t.bundleHash,e.batchId=t.batchId,e.characters=t.characters,e.pubkey=t.pubkey,e.balance=String(t.amount!=null?t.amount:0)),e}}class _n extends N{constructor(e,t){super(e,t),this.$__query=T.gql`query ($bundle: String!) {
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,s)=>(s=n==null?{}:e(i(n)),o(r||!n||!n.__esModule||!a.call(n,`default`)?t(s,`default`,{value:n,enumerable:!0}):s,n));let c=require("jssha");c=s(c,1);let l=require("@urql/core"),u=require("graphql-ws"),d=require("wonka");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:t,output:n=`base17`}){let r=new c.default(`SHAKE256`,`TEXT`),i=e.sortAtoms(t);if(i.length===0)throw new T;if(i.map(t=>{if(!(t instanceof e))throw new T;return t}),i.every(e=>e.version&&Object.prototype.hasOwnProperty.call(oe,e.version)))r.update(JSON.stringify(i.map(e=>oe[e.version].create(e).view())));else{let e=String(t.length),n=[];for(let t of i)n.push(e),n=n.concat(t.getHashableValues());for(let e of n)r.update(e)}switch(n){case`hex`:return r.getHash(`HEX`,{outputLen:256});case`array`:return r.getHash(`ARRAYBUFFER`,{outputLen:256});default:return h(r.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,t=2048){if(e){let n=new c.default(`SHAKE256`,`TEXT`);return n.update(e),n.getHash(`HEX`,{outputLen:t*4})}return m(t)}function ce(e,t=null){let n=new c.default(`SHAKE256`,`TEXT`);return n.update(e),n.getHash(`HEX`,{outputLen:256})}function le(e,t){let n=new c.default(`SHAKE256`,`TEXT`);return n.update(e),n.getHash(`HEX`,{outputLen:t})}function ue({molecularHash:e=null,index:t=null}){return e!==null&&t!==null?ce(String(e)+String(t),`generateBatchId`):m(64)}var de=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)}}},fe=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`}},pe=BigInt(2**32-1),me=BigInt(32);function he(e,t=!1){return t?{h:Number(e&pe),l:Number(e>>me&pe)}:{h:Number(e>>me&pe)|0,l:Number(e&pe)|0}}function ge(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}=he(e[a],t);[r[a],i[a]]=[n,o]}return[r,i]}function _e(e){return e instanceof Uint8Array||ArrayBuffer.isView(e)&&e.constructor.name===`Uint8Array`&&`BYTES_PER_ELEMENT`in e&&e.BYTES_PER_ELEMENT===1}var ve=e=>e?`"${e}" `:``;function D(e,t=``){if(typeof e!=`number`)throw TypeError(ve(t)+`expected number, got `+typeof e);if(!Number.isSafeInteger(e)||e<0)throw RangeError(ve(t)+`expected integer >= 0, got `+e);return e}function ye(e,t=``){if(typeof e!=`boolean`)throw TypeError(ve(t)+`expected boolean, got type=`+typeof e);return e}function O(e,t,n=``){if(_e(e)&&(t===void 0||e.length===t))return e;t!==void 0&&D(t,`length`);let r=_e(e),i=t===void 0?``:` of length ${t}`,a=r?`length=${e.length}`:`type=${typeof e}`,o=ve(n)+`expected Uint8Array`+i+`, got `+a;throw r?RangeError(o):TypeError(o)}var be=(e,t)=>{if(typeof e!=`object`||!e||Array.isArray(e))throw TypeError((t===`object`?``:`"${t}" `)+`expected object, got type=`+typeof e)},xe=(e,t)=>{be(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 Se(e,t=!0){if(e.destroyed)throw Error(`hash was destroyed`);if(t&&e.finished)throw Error(`digest() was already called`)}function Ce(e,t){O(e,void 0,`output`);let n=t.outputLen;if(!(e.length>=n))throw RangeError(`"output" expected length >= `+n)}function we(e){return new Uint32Array(e.buffer,e.byteOffset,Math.floor(e.byteLength/4))}function Te(...e){for(let t=0;t<e.length;t++)e[t].fill(0)}var Ee=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function De(e){return e<<24&4278190080|e<<8&16711680|e>>>8&65280|e>>>24&255}function Oe(e){for(let t=0;t<e.length;t++)e[t]=De(e[t]);return e}var ke=Ee?e=>e:Oe;function Ae(e,t,n=`opts`){return xe(e,`defaults`),t!==void 0&&xe(t,n),Object.assign(Object.create(null),e,t)}function je(e,t={}){if(typeof e!=`function`)throw TypeError(`"hashCons" expected function, got type=`+typeof e);t=Ae({},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 Me(e=32){D(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 Ne=e=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,e])}),Pe=BigInt(0),Fe=BigInt(1),Ie=BigInt(2),Le=BigInt(7),Re=BigInt(256),ze=BigInt(113),Be=[],Ve=[],He=[];for(let e=0,t=Fe,n=1,r=0;e<24;e++){[n,r]=[r,(2*n+3*r)%5],Be.push(2*(5*r+n)),Ve.push((e+1)*(e+2)/2%64);let i=Pe;for(let e=0;e<7;e++)t=(t<<Fe^(t>>Le)*ze)%Re,t&Ie&&(i^=Fe<<(Fe<<BigInt(e))-Fe);He.push(i)}var Ue=ge(He,!0),We=Ue[0],Ge=Ue[1],Ke=(e,t,n)=>e<<n|t>>>32-n,qe=(e,t,n)=>t<<n|e>>>32-n,Je=(e,t,n)=>t<<n-32|e>>>64-n,Ye=(e,t,n)=>e<<n-32|t>>>64-n,Xe=(e,t,n)=>n>32?Je(e,t,n):Ke(e,t,n),Ze=(e,t,n)=>n>32?Ye(e,t,n):qe(e,t,n),Qe=new Uint32Array(10);function $e(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(D(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++)Qe[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=Qe[r],a=Qe[r+1],o=Xe(i,a,1)^Qe[n],s=Ze(i,a,1)^Qe[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=Ve[n],a=Xe(t,r,i),o=Ze(t,r,i),s=Be[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]^=We[n],e[1]^=Ge[n]}Te(Qe)}var et=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(D(e,`blockLen`),D(t,`suffix`),D(i,`rounds`),ye(r,`enableXOF`),this.blockLen=e,this.suffix=t,this.outputLen=n,this.enableXOF=r,this.canXOF=r,this.rounds=i,D(n,`outputLen`),!(0<e&&e<200))throw Error(`"blockLen" must be 1..199`);this.state=new Uint8Array(200),this.state32=we(this.state)}clone(){return this._cloneInto()}keccak(){ke(this.state32),$e(this.state32,this.rounds),ke(this.state32),this.posOut=0,this.pos=0}update(e){Se(this),O(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?we(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){Se(this,!1),O(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 D(e),this.xofInto(new Uint8Array(e))}digestInto(e){if(Ce(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,Te(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}},tt=(e,t,n,r={})=>je(()=>new et(t,e,n),r),nt=tt(6,136,32,Ne(8)),rt=tt(6,72,64,Ne(10)),it=(e,t,n,r={})=>je((r={})=>(r=Ae({},r),new et(t,e,r.dkLen===void 0?n:r.dkLen,!0)),r),at=it(31,168,16,Ne(11)),ot=it(31,136,32,Ne(12));function st(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 ct(e,t={},n={},r=`object`){st(e,r),st(t,`fields`),st(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 lt(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 ut(e){return lt(e,`x`),!(e&e-1)&&e!==0}function dt(e,t){if(lt(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 ft(e){return lt(e),31-Math.clz32(e)}function pt(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(!ut(t))throw Error(`expected positive power-of-two length, got `+t);let n=ft(t);for(let r=0;r<t;r++){let t=dt(r,n);if(r<t){let n=e[r];e[r]=e[t],e[t]=n}}return e}var mt=(e,t)=>{ct(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;lt(n,`coreOpts.N`);let c=ft(n);if(!ut(n))throw Error(`FFT: Polynomial size should be power of two`);lt(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&&pt(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&&pt(t),t}},k=O,ht=Me;function gt(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 _t(e,t){if(e=O(e),t=O(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 vt(e){return new Uint8Array(O(e))}function yt(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]);O(l,c,e),a.set(l,o),typeof s!=`number`&&l.fill(0),o+=c}return a},decode:i=>{O(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 bt(e,t){let n=e,r=t*n.bytesLen;return{bytesLen:r,encode:e=>{let i=gt(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=>{O(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 A(...e){for(let t of e)if(Array.isArray(t))for(let e of t)e.fill(0);else t.fill(0)}function xt(e){if(D(e,`bits`),e>32)throw RangeError(`"bits" expected <= 32, got `+e);return e===32?4294967295:~(-1<<e)>>>0}var St=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=dt(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=mt(p,{dit:!1,...m}),g=mt(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&&xt(r),r%=8;let i=xt(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}}}}},Ct=(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(),A(a,r)}}})(at),j=256,M=3329,N=St({N:j,Q:M,F:3303,ROOT_OF_UNITY:17,newPoly:e=>new Uint16Array(e),brvBits:7,isKyber:!0}),wt=Object.freeze({512:Object.freeze({N:j,Q:M,K:2,ETA1:3,ETA2:2,du:10,dv:4,RBGstrength:128}),768:Object.freeze({N:j,Q:M,K:3,ETA1:2,ETA2:2,du:10,dv:4,RBGstrength:192}),1024:Object.freeze({N:j,Q:M,K:4,ETA1:2,ETA2:2,du:11,dv:5,RBGstrength:256})}),Tt=e=>{if(e>=12)return{encode:e=>e,decode:e=>e>=M?e-M:e};let t=2**(e-1);return{encode:t=>((t<<e)+M/2)/M,decode:n=>n*M+t>>>e}},Et=e=>N.bitsCoder(e,e===12?{encode:e=>e,decode:e=>e>=M?e-M:e}:{encode:e=>e,decode:e=>e}),Dt=e=>e===12?Et(12):N.bitsCoder(e,Tt(e));function Ot(e,t){let n=e,r=t;for(let e=0;e<j;e++){let t=n[e]+r[e];n[e]=t>=M?t-M:t}}function kt(e,t){let n=e,r=t;for(let e=0;e<j;e++){let t=n[e]-r[e];n[e]=t<0?t+M:t}}function At(e,t,n,r,i){return{c0:N.mod(N.mod(t*r)*i+e*n),c1:N.mod(e*r+t*n)}}function jt(e,t){let n=e,r=t;for(let e=0;e<j/2;e++){let t=N.nttZetas[64+(e>>1)];e&1&&(t=-t);let{c0:i,c1:a}=At(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 Mt(e){let t=e,n=new Uint16Array(j);for(let e=0;e<j;){let r=t();if(r.length%3)throw Error(`SampleNTT: unaligned block`);for(let t=0;e<j&&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<M&&(n[e++]=i),e<j&&a<M&&(n[e++]=a)}}return n}var Nt=(e,t)=>{let n=new Uint16Array(j),r=we(e);ke(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++]=N.mod(s-o),o=0,i=0)}if(ke(r),i)throw Error(`sampleCBD: leftover bits: ${i}`);return n};function Pt(e,t,n,r){return Nt(e(r*j/4,t,n),r)}var Ft=e=>{let{K:t,PRF:n,XOF:r,HASH512:i,ETA1:a,ETA2:o,du:s,dv:c}=e,l=Dt(1),u=Dt(c),d=Dt(s),f=yt(`publicKey`,bt(Dt(12),t),32),p=bt(Dt(12),t),m=yt(`ciphertext`,bt(d,t),u),h=yt(`seed`,32,32),g=(e,r,i,s)=>{let c=[];for(let e=0;e<t;e++)c.push(N.NTT.encode(Pt(n,s,e,a)));let u=new Uint16Array(j),d=[];for(let i=0;i<t;i++){let a=Pt(n,s,t+i,o),l=new Uint16Array(j);for(let e=0;e<t;e++)Ot(l,jt(r(i,e),c[e]));Ot(a,N.NTT.decode(l)),d.push(a),Ot(u,jt(e[i],c[i])),A(l)}let f=Pt(n,s,2*t,o);Ot(f,N.NTT.decode(u));let p=l.decode(i);return Ot(p,f),A(e,c,u,f),m.encode([d,p])};return{secretCoder:p,lengths:{secretKey:p.bytesLen,publicKey:f.bytesLen,cipherText:m.bytesLen},keygen:e=>{k(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(N.NTT.encode(Pt(n,l,e,a)));let m=r(c);for(let e=0;e<t;e++){let r=N.NTT.encode(Pt(n,l,t+e,a));for(let n=0;n<t;n++)Ot(r,jt(Mt(m.get(n,e)),u[n]));d.push(r)}m.clean();let g={publicKey:f.encode([d,c]),secretKey:p.encode(u)};return A(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)=>Mt(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(Mt(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:()=>A(n,o)}},decrypt:(e,n)=>{let[r,i]=m.decode(e),a=p.decode(n),o=new Uint16Array(j);for(let e=0;e<t;e++)Ot(o,jt(a[e],N.NTT.encode(r[e])));kt(i,N.NTT.decode(o));let s=l.encode(i);return A(o,a,r,i),s}}};function It(e){let t=e,n=Ft(t),{HASH256:r,HASH512:i,KDF:a}=t,{secretCoder:o,lengths:s}=n,c=yt(`secretKey`,s.secretKey,s.publicKey,32,32),l=(e,n)=>{let r=e.subarray(0,384*t.K),i=o.encode(o.decode(vt(r))),a=_t(i,r);if(A(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?ht(64):e,a,o;try{k(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&&A(a),o!==void 0&&A(o),t&&A(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?ht(32):t,c;try{return k(e,s.publicKey,`publicKey`),k(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&&A(c.subarray(32)),a&&A(o)}},decapsulate:(e,t)=>{k(t,c.bytesLen,`secretKey`),k(e,s.cipherText,`cipherText`);let o=c.bytesLen-96,l=o+32;if(!_t(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=_t(e,_),y=a.create({dkLen:32}).update(p).update(e).digest();return A(m,_,h.subarray(32),v?y:g),v?g:y},prepare:e=>{k(e,s.publicKey,`publicKey`),l(e,`prepare`);let t=vt(e),o=r(t),u=n.prepare(t);return Object.freeze({publicKey:t,encapsulate:e=>{let t=e===void 0,n=t?ht(32):e,r;try{return k(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&&A(r.subarray(32)),t&&A(n)}},decapsulate:(e,r)=>{k(r,c.bytesLen,`secretKey`),k(e,s.cipherText,`cipherText`);let[l,d,f,p]=c.decode(r);if(!_t(d,t)||!_t(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=_t(e,_),y=a.create({dkLen:32}).update(p).update(e).digest();return A(m,_,h.subarray(32),v?y:g),v?g:y},clean:u.clean})}})}function Lt(e,t,n){return ot.create({dkLen:e}).update(t).update(new Uint8Array([n])).digest()}var Rt={HASH256:nt,HASH512:rt,KDF:ot,XOF:Ct,PRF:Lt},zt=e=>It({...Rt,...e}),Bt=zt(wt[768]),Vt={1024:{kem:zt(wt[1024]),pkBytes:1568,skBytes:3168,ctBytes:1568},768:{kem:Bt,pkBytes:1184,skBytes:2400,ctBytes:1088}},Ht=1024,P=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=Ht}){let l=Number(c);if(!Vt[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||ce(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=Ht}){let s=null;if(!t&&!n)throw new fe;return t&&!n&&(s=e.generatePosition(),n=ce(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(de.createFromDB(e))}),t}static generateKey({secret:e,token:t,position:n}){if(!e)throw new fe(`Wallet::generateKey() - Secret is required!`);if(!n)throw new fe(`Wallet::generateKey() - Position is required!`);let r=b(e)?e:le(e,1024),i=b(n)?n:le(n,256),a=BigInt(`0x${r}`)+BigInt(`0x${i}`),o=new c.default(`SHAKE256`,`TEXT`);o.update(a.toString(16)),t&&o.update(t);let s=new c.default(`SHAKE256`,`TEXT`);return s.update(o.getHash(`HEX`,{outputLen:8192})),s.getHash(`HEX`,{outputLen:8192})}static generateAddress(e){let t=p(e,128),n=new c.default(`SHAKE256`,`TEXT`);for(let e in t){let r=t[e];for(let e=1;e<=16;e++){let e=new c.default(`SHAKE256`,`TEXT`);e.update(r),r=e.getHash(`HEX`,{outputLen:512})}n.update(r)}let r=new c.default(`SHAKE256`,`TEXT`);return r.update(n.getHash(`HEX`,{outputLen:8192})),r.getHash(`HEX`,{outputLen:256})}static generatePosition(e=64){return m(e,`abcdef0123456789`)}_deriveMlKemKeypair(e){let t=Vt[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(Vt))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:ue({}))}async encryptMessage(e,t){let n=JSON.stringify(e),r=new TextEncoder().encode(n),i=this.deserializeKey(t),a=Vt[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=Vt[this.mlKemParameterSet],a=this.mlKemParameterSet===1024?768:1024,o=i,s=this.privkey;if(r.length!==i.ctBytes){if(r.length!==Vt[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=le(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)}},Ut=class extends w{constructor(e=`There is an atom without an index`,t=null,n=null){super(e,t,n),this.name=`AtomIndexException`}},Wt=class extends w{constructor(e=`The molecular hash does not match`,t=null,n=null){super(e,t,n),this.name=`MolecularHashMismatchException`}},Gt=class extends w{constructor(e=`The molecular hash is missing`,t=null,n=null){super(e,t,n),this.name=`MolecularHashMissingException`}},Kt=class extends w{constructor(e=``,t=null,n=null){super(e,t,n),this.name=`PolicyInvalidException`}},qt=class extends w{constructor(e=`OTS malformed`,t=null,n=null){super(e,t,n),this.name=`SignatureMalformedException`}},Jt=class extends w{constructor(e=`One-time signature (OTS) does not match!`,t=null,n=null){super(e,t,n),this.name=`SignatureMismatchException`}},F=class extends w{constructor(e=`Insufficient balance to make transfer`,t=null,n=null){super(e,t,n),this.name=`TransferBalanceException`}},Yt=class extends w{constructor(e=`Token transfer atoms are malformed`,t=null,n=null){super(e,t,n),this.name=`TransferMalformedException`}},Xt=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`}},Zt=class extends w{constructor(e=`Invalid remainder provided`,t=null,n=null){super(e,t,n),this.name=`TransferRemainderException`}},Qt=class extends w{constructor(e=`Sender and recipient(s) cannot be the same`,t=null,n=null){super(e,t,n),this.name=`TransferToSelfException`}},$t=class extends w{constructor(e=`Token transfer atoms are unbalanced`,t=null,n=null){super(e,t,n),this.name=`TransferUnbalancedException`}},I=class extends w{constructor(e=`Empty meta data.`,t=null,n=null){super(e,t,n),this.name=`MetaMissingException`}},en=class extends w{constructor(e=`Wrong type of token for this isotope`,t=null,n=null){super(e,t,n),this.name=`WrongTokenTypeException`}},tn=class extends w{constructor(e=`Incorrect BatchId`,t=null,n=null){super(e,t,n),this.name=`BatchIdException`}},nn=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}},rn=class extends w{constructor(e=`An incorrect argument!`,t=null,n=null){super(e,t,n),this.name=`RuleArgumentException`}},L=class extends w{constructor(e=`Code exception`,t=null,n=null){super(e,t,n),this.name=`CodeException`}},an=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 rn(`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 L(`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 nn?e:nn.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()}},on=class{constructor({key:e,value:t,comparison:n}){if([e,t,n].some(e=>!e))throw new rn(`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}}},sn=class e{constructor({condition:e=[],callback:t=[]}){for(let t of e)if(!(t instanceof on))throw new rn;for(let e of t)if(!(e instanceof an))throw new rn;this.__condition=e,this.__callback=t}set comparison(e){this.__condition.push(e instanceof on?e:on.toObject(e))}set callback(e){this.__callback.push(e instanceof an?e:an.toObject(e))}static toObject(t){if(!t.condition)throw new I(`Rule::toObject() - Incorrect rule format! There is no condition field.`);if(!t.callback)throw new I(`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}}},R=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}},cn=class e{constructor(e){if(e.molecularHash===null)throw new Gt;if(!e.atoms.length)throw new T;for(let t of e.atoms)if(t.index===null)throw new Ut;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 tn;for(let e of t)if(e.batchId===null)throw new tn}return!0}throw new tn}isotopeI(){for(let e of this.molecule.getIsotopes(`I`)){if(e.token!==`USER`)throw new en(`Check::isotopeI() - "${e.token}" is not a valid Token slug for "${e.isotope}" isotope Atoms!`);if(e.index===0)throw new Ut(`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 en(`Check::isotopeU() - "${e.token}" is not a valid Token slug for "${e.isotope}" isotope Atoms!`);if(e.index!==0)throw new Ut(`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 I;if(t.token!==`USER`)throw new en(`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 Kt(`${t} is missing from the meta.`);for(let e of i)if(!P.isBundleHash(e)&&![`all`,`self`].includes(e))throw new Kt(`${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 en(`Check::isotopeC() - "${e.token}" is not a valid Token slug for "${e.isotope}" isotope Atoms!`);if(e.index!==0)throw new Ut(`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 I(`Check::isotopeT() - Required meta field "${e}" is missing!`)}for(let e of[`token`])if(!Object.prototype.hasOwnProperty.call(t,e)||!t[e])throw new I(`Check::isotopeT() - Required meta field "${e}" is missing!`);if(e.token!==`USER`)throw new en(`Check::isotopeT() - "${e.token}" is not a valid Token slug for "${e.isotope}" isotope Atoms!`);if(e.index!==0)throw new Ut(`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 I(`Check::isotopeR() - Mixing rules with politics!`)}if(t.rule){let e=JSON.parse(t.rule);if(!Array.isArray(e))throw new I(`Check::isotopeR() - Incorrect rule format!`);for(let t of e)sn.toObject(t);if(e.length<1)throw new I(`Check::isotopeR() - No rules!`)}}return!0}isotopeP(){for(let e of this.molecule.getIsotopes(`P`)){if(e.token!==`USER`)throw new en(`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 I(`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 en(`Check::isotopeA() - "${e.token}" is not a valid Token slug for "${e.isotope}" isotope Atoms!`);if(!e.metaType)throw new I(`Check::isotopeA() - Required field "metaType" is missing!`);if(!e.metaId)throw new I(`Check::isotopeA() - Required field "metaId" is missing!`);let t=e.aggregatedMeta();if(!Object.prototype.hasOwnProperty.call(t,`action`)||!t.action)throw new I(`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 I(`Check::isotopeB() - B-isotope atoms must have metaType "walletBundle"!`);if(!t.metaId)throw new I(`Check::isotopeB() - B-isotope atoms must have a metaId!`);let e=Number(t.value);if(Number.isNaN(e))throw new Yt(`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 $t(`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 I(`Check::isotopeF() - F-isotope atoms must have metaType "walletBundle"!`);if(!t.metaId)throw new I(`Check::isotopeF() - F-isotope atoms must have a metaId!`);let e=Number(t.value);if(Number.isNaN(e))throw new Yt(`Check::isotopeF() - F-isotope atom value is not a valid number!`);if(e<0)throw new Yt(`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 $t(`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 Xt;if(e.value<0)throw new Yt;if(Number(r.value)+Number(e.value)!==0)throw new $t;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 Xt;if(e>0){if(a<0)throw new Yt;if(t.walletAddress===r.walletAddress)throw new Qt}i+=a}if(!n&&i!==0)throw new $t;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 F;if(!n&&t!==i)throw new Zt}else if(a!==0)throw new Zt;return!0}molecularHash(){if(this.molecule.molecularHash!==E.hashAtoms({atoms:this.molecule.atoms}))throw new Wt;return!0}ots(){let e=this.molecule.normalizedHash(),t=this.molecule.atoms.map(e=>e.otsFragment).reduce((e,t)=>e+t);if(t.length!==2048&&(t=y(t),t.length!==2048))throw new qt;let n=p(t,128),r=``;for(let t in n){let i=n[t];for(let n=0,r=8+e[t];n<r;n++)i=new c.default(`SHAKE256`,`TEXT`).update(i).getHash(`HEX`,{outputLen:512});r+=i}let i=new c.default(`SHAKE256`,`TEXT`);i.update(r);let a=i.getHash(`HEX`,{outputLen:8192}),o=new c.default(`SHAKE256`,`TEXT`);o.update(a);let s=o.getHash(`HEX`,{outputLen:256}),l=this.molecule.atoms[0],u=l.walletAddress,d=R.get(l.aggregatedMeta(),`signingWallet`);if(d&&(u=R.get(JSON.parse(d),`address`)),s!==u)throw new Jt;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 dn.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)}}}},ln=class extends w{constructor(e=`Insufficient balance for requested transfer`,t=null,n=null){super(e,t,n),this.name=`BalanceInsufficientException`}},un=class extends w{constructor(e=`Amount cannot be negative!`,t=null,n=null){super(e,t,n),this.name=`NegativeAmountException`}},dn=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||P.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=P.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 ln;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 un(`Molecule::burnToken() - Amount to burn must be positive!`);if(this.sourceWallet.balance-e<0)throw new ln;let n=new P({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 un(`Molecule::replenishToken() - Amount to replenish must be positive!`);if(t.length){t=P.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 ln;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 ln;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 ln;let n=P.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 ln;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?ue({}):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 sn?e:sn.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:ce(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:t=!1,compressed:n=!0}={}){if(this.atoms.length===0||this.atoms.filter(e=>!(e instanceof E)).length!==0)throw new T;!t&&!this.bundle&&(this.bundle=e||ce(this.secret,`Molecule::sign`)),this.molecularHash=E.hashAtoms({atoms:this.atoms});let r=this.atoms[0],i=r.position,a=R.get(r.aggregatedMeta(),`signingWallet`);if(a&&(i=R.get(JSON.parse(a),`position`)),!i)throw new qt(`Signing wallet must have a position!`);let o=p(P.generateKey({secret:this.secret,token:r.token,position:r.position}),128),s=this.normalizedHash(),l=``;for(let e in o){let t=o[e];for(let n=0,r=8-s[e];n<r;n++)t=new c.default(`SHAKE256`,`TEXT`).update(t).getHash(`HEX`,{outputLen:512});l+=t}n&&(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 P({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 P({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 cn(this).verify(e)}normalizedHash(){return e.normalize(e.enumerate(this.molecularHash))}},fn=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):P.mlKemParameterSetFromPubkey(e.pubkey)||768}static restore(t,n){let r=new P({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()}}},z=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}`)}static validationError(t){return new e(t)}},pn=new TextEncoder;function B(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 mn(e,t){try{return await t(e)}finally{B(e)}}async function hn(e,t){let n=pn.encode(e);try{return await t(e)}finally{B(n)}}function gn(e,t){let n=typeof e==`string`?pn.encode(e):e,r=typeof t==`string`?pn.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`&&B(n),typeof t==`string`&&B(r),i===0}var _n=`AES-GCM`,vn=1e5,yn=`knishio:secret:`,V=`knishio:recovery:`,bn=12,xn=16,Sn=new TextEncoder;function H(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 U(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}async function Cn(e,t,n=vn){if(globalThis.crypto===void 0||globalThis.crypto.subtle===void 0)throw new z(`WebCrypto API is not available`);let r=Sn.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{B(r)}}async function W(e,t,n){if(globalThis.crypto===void 0||globalThis.crypto.subtle===void 0)throw new z(`WebCrypto API is not available`);let r=new Uint8Array(xn),i=new Uint8Array(bn);globalThis.crypto.getRandomValues(r),globalThis.crypto.getRandomValues(i);let a=await Cn(t,r,vn),o=Sn.encode(e);try{let e=await globalThis.crypto.subtle.encrypt({name:_n,iv:i},a,o);return{version:1,ciphertext:H(new Uint8Array(e)),iv:H(i),salt:H(r),algorithm:_n,iterations:vn,metadata:n}}finally{B(o)}}async function G(e,t){if(globalThis.crypto===void 0||globalThis.crypto.subtle===void 0)throw new z(`WebCrypto API is not available`);let n=U(e.salt),r=U(e.iv),i=U(e.ciphertext),a=await Cn(t,n,e.iterations??1e5),o=await globalThis.crypto.subtle.decrypt({name:_n,iv:r},a,i);return new Uint8Array(o)}var wn=class{constructor(){this.providerType=`memory`,this.secrets=new Map,this.recoverySecrets=new Map}isHardwareBacked(){return!1}async isAvailable(){return!0}async storeSecret(e,t,n={}){if(!e)throw new z(`Bundle hash cannot be empty`);if(!t)throw new z(`Secret cannot be empty`);let r={bundleHash:e,label:n.label,createdAt:Date.now(),hardwareBacked:!1,providerType:this.providerType};if(this.secrets.set(e,{secret:t,metadata:r}),n.recoveryPassphrase){let r={bundleHash:e,label:n.label,createdAt:Date.now(),hardwareBacked:!1,providerType:`webcrypto-aes-gcm`},i=await W(t,n.recoveryPassphrase,r);this.recoverySecrets.set(e,JSON.stringify(i))}}async retrieveSecret(e){let t=this.secrets.get(e);return t?t.secret:null}async deleteSecret(e){return this.recoverySecrets.delete(e),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 z.notFound(e);return hn(n.secret,t)}clear(){this.secrets.clear(),this.recoverySecrets.clear()}async recoverSecret(e,t,n={}){if(!e)throw new z(`Bundle hash cannot be empty`);if(!t)throw new z(`Recovery passphrase cannot be empty`);let r=this.recoverySecrets.get(e);if(!r)throw z.notFound(e);let i;try{i=JSON.parse(r)}catch{throw z.decryptionFailed(`Corrupted recovery payload format`)}let a;try{a=await G(i,t)}catch(e){if(e instanceof z)throw e;let t=e instanceof Error?e.message:String(e);throw z.decryptionFailed(t)}let o;try{o=new TextDecoder().decode(a)}finally{B(a)}await this.storeSecret(e,o,{...n,recoveryPassphrase:t})}},Tn=10**18,En=class e{static val(e){return Math.abs(e*Tn)<1?0:e}static cmp(t,n,r=!1){let i=e.val(t)*Tn,a=e.val(n)*Tn;return Math.abs(i-a)<1?0:i>a?1:-1}static equal(t,n){return e.cmp(t,n)===0}},K=class extends w{constructor(e=`GraphQL did not provide a valid response.`,t=null,n=null){super(e,t,n),this.name=`InvalidResponseException`}},Dn=class extends w{constructor(e=`Authorization token missing or invalid.`,t=null,n=null){super(e,t,n),this.name=`UnauthenticatedException`}},q=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 K;if(R.has(this.$__response,this.errorKey)){let e=R.get(this.$__response,this.errorKey);throw String(e).includes(`Unauthenticated`)?new Dn:new K}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 Dn:new K(`GraphQL Error: ${e}`)}this.init()}init(){}data(){if(!this.dataKey)return this.response();if(!this.response().data)throw new K(`Response has no data field`);if(!R.has(this.response(),this.dataKey))throw new K(`Missing expected field: ${this.dataKey}`);return R.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}},J=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 q({query:this,json:e})}createQuery({variables:e=null}){if(this.$__variables=this.compiledVariables(e),!this.uri())throw new L(`Query::createQuery() - Node URI was not initialized for this client instance!`);if(this.$__query===null)throw new L(`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 q({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{}}},On=class extends q{constructor({query:e,json:t}){super({query:e,json:t,dataKey:`data.ContinuId`})}payload(){let e=null,t=this.data();return t&&(e=new P({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}},kn=class extends J{constructor(e,t){super(e,t),this.$__query=l.gql`query ($bundle: String!) {
5
3
  ContinuId(bundle: $bundle) {
6
4
  address,
7
5
  bundleHash,
@@ -13,7 +11,7 @@ ${this.stack}`}}class se extends x{constructor(e="The molecule does not contain
13
11
  amount,
14
12
  createdAt
15
13
  }
16
- }`}createQueryContext(){return{requestPolicy:"network-only"}}createResponse(e){return new Sn({query:this,json:e})}}class $n extends E{constructor({query:e,json:t}){super({query:e,json:t,dataKey:"data.WalletBundle"})}payload(){const e=this.data();if(!e||e.length===0)return null;const t={};return e.forEach(n=>{n.metas=de.aggregateMeta(n.metas),t[n.bundleHash]=n}),t}}class An extends N{constructor(e,t){super(e,t),this.$__query=T.gql`query( $bundleHashes: [ String! ] ) {
14
+ }`}createQueryContext(){return{requestPolicy:`network-only`}}createResponse(e){return new On({query:this,json:e})}},An=class extends q{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}},jn=class extends J{constructor(e,t){super(e,t),this.$__query=l.gql`query( $bundleHashes: [ String! ] ) {
17
15
  WalletBundle( bundleHashes: $bundleHashes ) {
18
16
  bundleHash,
19
17
  metas {
@@ -25,7 +23,7 @@ ${this.stack}`}}class se extends x{constructor(e="The molecule does not contain
25
23
  },
26
24
  createdAt
27
25
  }
28
- }`}createResponse(e){return new $n({query:this,json:e})}}class Pe extends E{constructor({query:e,json:t}){super({query:e,json:t,dataKey:"data.Wallet"})}static toClientWallet({data:e,secret:t=null}){let n;if(e.position===null||typeof e.position>"u"?n=k.create({bundle:e.bundleHash,token:e.tokenSlug,batchId:e.batchId,characters:e.characters}):(n=new k({secret:t,token:e.tokenSlug,position:e.position,batchId:e.batchId,characters:e.characters}),n.address=e.address,n.bundle=e.bundleHash),e.token&&(n.tokenName=e.token.name,n.tokenAmount=e.token.amount,n.tokenSupply=e.token.supply,n.tokenFungibility=e.token.fungibility),e.tokenUnits.length)for(const s of e.tokenUnits)n.tokenUnits.push(fe.createFromGraphQL(s));if(e.tradeRates.length)for(const s of e.tradeRates)n.tradeRates[s.tokenSlug]=s.amount;return n.balance=String(e.amount!=null?e.amount:0),n.pubkey=e.pubkey,n.createdAt=e.createdAt,n}getWallets(e=null){const t=this.data();if(!t)return null;const n=[];for(const s of t)n.push(Pe.toClientWallet({data:s,secret:e}));return n}payload(){return this.getWallets()}}class vn extends N{constructor(e,t){super(e,t),this.$__query=T.gql`query( $bundleHash: String, $token: String ) {
26
+ }`}createResponse(e){return new An({query:this,json:e})}},Mn=class e extends q{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=P.create({bundle:e.bundleHash,token:e.tokenSlug,batchId:e.batchId,characters:e.characters}):(n=new P({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(de.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()}},Nn=class extends J{constructor(e,t){super(e,t),this.$__query=l.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 x{constructor(e="The molecule does not contain
52
50
  amount
53
51
  }
54
52
  }
55
- }`}createResponse(e){return new Pe({query:this,json:e})}}class xn extends E{constructor({query:e,json:t}){super({query:e,json:t,dataKey:"data.Balance"})}payload(){let e=this.data();return Array.isArray(e)&&(e=e.length>0?e[0]:null),!e||!e.bundleHash||!e.tokenSlug?null:Pe.toClientWallet({data:e})}}class In extends N{constructor(e,t){super(e,t),this.$__query=T.gql`query( $address: String, $bundleHash: String, $type: String, $token: String, $position: String ) {
53
+ }`}createResponse(e){return new Mn({query:this,json:e})}},Pn=class extends q{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:Mn.toClientWallet({data:e})}},Fn=class extends J{constructor(e,t){super(e,t),this.$__query=l.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 x{constructor(e="The molecule does not contain
74
72
  amount
75
73
  }
76
74
  }
77
- }`}createResponse(e){return new xn({query:this,json:e})}}class Mn extends E{constructor({query:e,json:t}){super({query:e,json:t,dataKey:"data.MetaType"})}payload(){const e=this.data();if(!e||e.length===0)return null;const t={instances:{},instanceCount:{},paginatorInfo:{}},n=e.pop();return n.instances&&(t.instances=n.instances),n.instanceCount&&(t.instanceCount=n.instanceCount),n.paginatorInfo&&(t.paginatorInfo=n.paginatorInfo),t}}class bt extends N{constructor(e,t){super(e,t),this.$__query=T.gql`query( $metaType: String, $metaTypes: [ String! ], $metaId: String, $metaIds: [ String! ], $key: String, $keys: [ String! ], $value: String, $values: [ String! ], $count: String, $latest: Boolean, $filter: [ MetaFilter! ], $queryArgs: QueryArgs, $countBy: String, $cellSlug: String ) {
75
+ }`}createResponse(e){return new Pn({query:this,json:e})}},In=class extends q{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}},Ln=class extends J{constructor(e,t){super(e,t),this.$__query=l.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 x{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:s=null,latest:r=null,filter:i=null,queryArgs:a=null,count:c=null,countBy:u=null,cellSlug:l=null}){const h={};return e&&(h[typeof e=="string"?"metaType":"metaTypes"]=e),t&&(h[typeof t=="string"?"metaId":"metaIds"]=t),n&&(h[typeof n=="string"?"key":"keys"]=n),s&&(h[typeof s=="string"?"value":"values"]=s),h.latest=r===!0,i&&(h.filter=i),a&&((typeof a.limit>"u"||a.limit===0)&&(a.limit="*"),h.queryArgs=a),c&&(h.count=c),u&&(h.countBy=u),l&&(h.cellSlug=l),h}createResponse(e){return new Mn({query:this,json:e})}}class Ae extends N{constructor(e,t){super(e,t),this.$__query=T.gql`query( $batchId: String ) {
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 In({query:this,json:e})}},Rn=class e extends J{constructor(t,n){super(t,n),this.$__query=l.gql`query( $batchId: String ) {
102
100
  Batch( batchId: $batchId ) {
103
- ${Ae.getFields()},
101
+ ${e.getFields()},
104
102
  children {
105
- ${Ae.getFields()}
103
+ ${e.getFields()}
106
104
  }
107
105
  }
108
106
  }`}static getFields(){return`batchId,
@@ -154,11 +152,11 @@ ${this.stack}`}}class se extends x{constructor(e="The molecule does not contain
154
152
  throughMetas {
155
153
  key,
156
154
  value
157
- }`}createResponse(e){const t=new E({query:this,json:e});return t.dataKey="data.Batch",t}}class Tn extends N{constructor(e,t){super(e,t),this.$__query=T.gql`query( $batchId: String ) {
155
+ }`}createResponse(e){let t=new q({query:this,json:e});return t.dataKey=`data.Batch`,t}},zn=class extends J{constructor(e,t){super(e,t),this.$__query=l.gql`query( $batchId: String ) {
158
156
  BatchHistory( batchId: $batchId ) {
159
- ${Ae.getFields()}
157
+ ${Rn.getFields()}
160
158
  }
161
- }`}createResponse(e){const t=new E({query:this,json:e});return t.dataKey="data.BatchHistory",t}}class D extends E{constructor({query:e,json:t}){super({query:e,json:t,dataKey:"data.ProposeMolecule"}),this.$__clientMolecule=e.molecule()}init(){const e=M.get(this.data(),"payload");try{this.$__payload=Object.prototype.toString.call(e)==="[object String]"?JSON.parse(e):e}catch{this.$__payload=null}}clientMolecule(){return this.$__clientMolecule}molecule(){const e=this.data();if(!e)return null;const t=new V({});return t.molecularHash=M.get(e,"molecularHash"),t.status=M.get(e,"status"),t.createdAt=M.get(e,"createdAt"),t}success(){return this.status()==="accepted"}status(){return M.get(this.data(),"status","rejected")}reason(){return M.get(this.data(),"reason","Invalid response from server")}payload(){return this.$__payload}}class He extends N{createQuery({variables:e=null}){const t=super.createQuery({variables:e});return t.mutation=t.query,delete t.query,t}async execute({variables:e={},context:t={}}){this.$__request=this.createQuery({variables:e});const n={...t,...this.createQueryContext()};try{const s={...this.$__request,context:n},r=await this.client.mutate(s);return this.$__response=await this.createResponseRaw(r),this.$__response}catch(s){if(s.name==="AbortError")return this.knishIOClient.log("warn","Mutation was cancelled"),new E({query:this,json:{data:null,errors:[{message:"Mutation was cancelled"}]}});throw s}}createQueryContext(){return{}}}class W extends He{constructor(e,t,n){super(e,t),this.$__molecule=n,this.$__remainderWallet=null,this.$__query=T.gql`mutation( $molecule: MoleculeInput! ) {
159
+ }`}createResponse(e){let t=new q({query:this,json:e});return t.dataKey=`data.BatchHistory`,t}},Y=class extends q{constructor({query:e,json:t}){super({query:e,json:t,dataKey:`data.ProposeMolecule`}),this.$__clientMolecule=e.molecule()}init(){let e=R.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 dn({});return t.molecularHash=R.get(e,`molecularHash`),t.status=R.get(e,`status`),t.createdAt=R.get(e,`createdAt`),t}success(){return this.status()===`accepted`}status(){return R.get(this.data(),`status`,`rejected`)}reason(){return R.get(this.data(),`reason`,`Invalid response from server`)}payload(){return this.$__payload}},Bn=class extends J{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 q({query:this,json:{data:null,errors:[{message:`Mutation was cancelled`}]}});throw e}}createQueryContext(){return{}}},X=class extends Bn{constructor(e,t,n){super(e,t),this.$__molecule=n,this.$__remainderWallet=null,this.$__query=l.gql`mutation( $molecule: MoleculeInput! ) {
162
160
  ProposeMolecule( molecule: $molecule ) {
163
161
  molecularHash,
164
162
  height,
@@ -171,7 +169,7 @@ ${this.stack}`}}class se extends x{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 D({query:this,json:e})}async execute({variables:e=null}){return e=e||{},e.molecule=this.molecule(),super.execute({variables:e})}remainderWallet(){return this.$__remainderWallet}molecule(){return this.$__molecule}}class Cn extends D{payloadKey(e){if(!M.has(this.payload(),e))throw new te(`ResponseRequestAuthorization::payloadKey() - '${e}' key was not found in the payload!`);return M.get(this.payload(),e)}token(){return this.payloadKey("token")}time(){return this.payloadKey("time")}expiresAt(){try{const t=this.payloadKey("expiresAt");if(t)return Number(t)}catch{}const e=Number(this.time());return e>=1577836800?e:Math.floor(Date.now()/1e3)+Math.floor(e/1e3)}encrypt(){return this.payloadKey("encrypt")}pubKey(){return this.payloadKey("key")}}class En extends W{fillMolecule({meta:e}){this.$__molecule.initAuthorization({meta:e}),this.$__molecule.sign({}),this.$__molecule.check()}createResponse(e){return new Cn({query:this,json:e})}}class Rn extends D{}class qn extends W{fillMolecule({recipientWallet:e,amount:t,meta:n=null}){this.$__molecule.initTokenCreation({recipientWallet:e,amount:t,meta:n||{}}),this.$__molecule.sign({bundle:e.bundle}),this.$__molecule.check()}createResponse(e){return new Rn({query:this,json:e})}}class On extends D{}class Bn extends W{fillMolecule({token:e,amount:t,metaType:n,metaId:s,meta:r=null,batchId:i=null}){this.$__molecule.initTokenRequest({token:e,amount:t,metaType:n,metaId:s,meta:r||{},batchId:i}),this.$__molecule.sign({}),this.$__molecule.check()}createResponse(e){return new On({query:this,json:e})}}class Wn extends D{payload(){const e={reason:null,status:null},t=this.data();return e.reason=typeof t.reason>"u"?"Invalid response from server":t.reason,e.status=typeof t.status>"u"?"rejected":t.status,e}}class kt extends W{fillMolecule({recipientWallet:e,amount:t}){this.$__molecule.initValue({recipientWallet:e,amount:t}),this.$__molecule.sign({}),this.$__molecule.check(this.$__molecule.sourceWallet)}fillMoleculeMulti({recipientWallets:e,amounts:t}){this.$__molecule.initValues({recipientWallets:e,amounts:t}),this.$__molecule.sign({}),this.$__molecule.check(this.$__molecule.sourceWallet)}createResponse(e){return new Wn({query:this,json:e})}}class Un extends D{}class Pn extends W{fillMolecule({type:e,contact:t,code:n}){this.$__molecule.initIdentifierCreation({type:e,contact:t,code:n}),this.$__molecule.sign({}),this.$__molecule.check()}createResponse(e){return new Un({query:this,json:e})}}class Hn extends D{}class Kn extends W{fillMolecule({token:e,batchId:t=null}){const n=k.create({secret:this.$__molecule.secret,bundle:this.$__molecule.bundle,token:e,batchId:t});this.$__molecule.initShadowWalletClaim(n),this.$__molecule.sign({}),this.$__molecule.check()}createResponse(e){return new Hn({query:this,json:e})}}class Nn extends D{}class Fn extends W{fillMolecule({metaType:e,metaId:t,meta:n,policy:s}){this.$__molecule.initMeta({meta:n,metaType:e,metaId:t,policy:s}),this.$__molecule.sign({}),this.$__molecule.check()}createResponse(e){return new Nn({query:this,json:e})}}class Ln extends D{}class Qn extends W{fillMolecule({host:e}){this.$__molecule.initPeering({host:e}),this.$__molecule.sign({}),this.$__molecule.check()}createResponse(e){return new Ln({query:this,json:e})}}class Dn extends D{}class jn extends W{fillMolecule({metaType:e,metaId:t,action:n,meta:s={}}){this.$__molecule.initAppendRequest({metaType:e,metaId:t,action:n,meta:s}),this.$__molecule.sign({}),this.$__molecule.check()}createResponse(e){return new Dn({query:this,json:e})}}class Vn extends E{constructor({query:e,json:t}){super({query:e,json:t,dataKey:"data.LinkIdentifier"})}success(){return M.get(this.data(),"set")}message(){return M.get(this.data(),"message")}}class zn extends He{constructor(e,t){super(e,t),this.$__query=T.gql`mutation( $bundle: String!, $type: String!, $content: String! ) {
172
+ }`}compiledVariables(e){return{...super.compiledVariables(e),molecule:this.molecule()}}createResponse(e){return new Y({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}},Vn=class extends Y{payloadKey(e){if(!R.has(this.payload(),e))throw new K(`ResponseRequestAuthorization::payloadKey() - '${e}' key was not found in the payload!`);return R.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`)}},Hn=class extends X{fillMolecule({meta:e}){this.$__molecule.initAuthorization({meta:e}),this.$__molecule.sign({}),this.$__molecule.check()}createResponse(e){return new Vn({query:this,json:e})}},Un=class extends Y{},Wn=class extends X{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 Un({query:this,json:e})}},Gn=class extends Y{},Kn=class extends X{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 Gn({query:this,json:e})}},qn=class extends Y{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}},Jn=class extends X{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 qn({query:this,json:e})}},Yn=class extends Y{},Xn=class extends X{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 Yn({query:this,json:e})}},Zn=class extends Y{},Qn=class extends X{fillMolecule({token:e,batchId:t=null}){let n=P.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 Zn({query:this,json:e})}},$n=class extends Y{},er=class extends X{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 $n({query:this,json:e})}},tr=class extends Y{},nr=class extends X{fillMolecule({host:e}){this.$__molecule.initPeering({host:e}),this.$__molecule.sign({}),this.$__molecule.check()}createResponse(e){return new tr({query:this,json:e})}},rr=class extends Y{},ir=class extends X{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 rr({query:this,json:e})}},ar=class extends q{constructor({query:e,json:t}){super({query:e,json:t,dataKey:`data.LinkIdentifier`})}success(){return R.get(this.data(),`set`)}message(){return R.get(this.data(),`message`)}},or=class extends Bn{constructor(e,t){super(e,t),this.$__query=l.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 x{constructor(e="The molecule does not contain
179
177
  set,
180
178
  message
181
179
  }
182
- }`}createResponse(e){return new Vn({query:this,json:e})}}class Jn extends D{}class Gn extends W{fillMolecule(e){this.$__molecule.initWalletCreation(e),this.$__molecule.sign({}),this.$__molecule.check()}createResponse(e){return new Jn({query:this,json:e})}}class Xn extends E{constructor({query:e,json:t}){super({query:e,json:t,dataKey:"data.AccessToken"})}reason(){return"Invalid response from server"}success(){return this.payload()!==null}payload(){return this.data()}payloadKey(e){if(!M.has(this.payload(),e))throw new te(`ResponseAuthorizationGuest::payloadKey() - '${e}' key is not found in the payload!`);return M.get(this.payload(),e)}token(){return this.payloadKey("token")}time(){return this.payloadKey("time")}expiresAt(){try{const t=this.payloadKey("expiresAt");if(t)return Number(t)}catch{}const e=Number(this.time());return e>=1577836800?e:Math.floor(Date.now()/1e3)+Math.floor(e/1e3)}pubKey(){return this.payloadKey("key")}encrypt(){return this.payloadKey("encrypt")}}class Zn extends He{constructor(e,t){super(e,t),this.$__query=T.gql`mutation( $cellSlug: String, $pubkey: String, $encrypt: Boolean ) {
180
+ }`}createResponse(e){return new ar({query:this,json:e})}},sr=class extends Y{},cr=class extends X{fillMolecule(e){this.$__molecule.initWalletCreation(e),this.$__molecule.sign({}),this.$__molecule.check()}createResponse(e){return new sr({query:this,json:e})}},lr=class extends q{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(!R.has(this.payload(),e))throw new K(`ResponseAuthorizationGuest::payloadKey() - '${e}' key is not found in the payload!`);return R.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`)}},ur=class extends Bn{constructor(e,t){super(e,t),this.$__query=l.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 Xn({query:this,json:e})}}class St extends x{constructor(e="The shadow wallet does not exist",t=null,n=null){super(e,t,n),this.name="WalletShadowException"}}class Yn extends x{constructor(e="Stackable tokens with unit IDs cannot have decimal places!",t=null,n=null){super(e,t,n),this.name="StackableUnitDecimalsException"}}class Se extends x{constructor(e="Stackable tokens with unit IDs cannot have an amount!",t=null,n=null){super(e,t,n),this.name="StackableUnitAmountException"}}class tt{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 ee("Subscribe::createSubscribe() - Node URI was not initialized for this client instance!");if(this.$__subscribe===null)throw new ee("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 ee(`${this.constructor.name}::execute() - closure parameter is required!`);return this.$__request=this.createSubscribe({variables:e}),this.client.subscribe(this.$__request,t)}compiledVariables(e=null){return e||{}}uri(){return this.client.getUri()}variables(){return this.$__variables}}class ur extends tt{constructor(e){super(e),this.$__subscribe=T.gql`
186
+ }`}createResponse(e){return new lr({query:this,json:e})}},dr=class extends w{constructor(e=`The shadow wallet does not exist`,t=null,n=null){super(e,t,n),this.name=`WalletShadowException`}},fr=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`}},pr=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`}},mr=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 L(`Subscribe::createSubscribe() - Node URI was not initialized for this client instance!`);if(this.$__subscribe===null)throw new L(`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 L(`${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}},hr=class extends mr{constructor(e){super(e),this.$__subscribe=l.gql`
189
187
  subscription onCreateMolecule ( $bundle: String! ) {
190
188
  CreateMolecule( bundle: $bundle ) {
191
189
  molecularHash,
@@ -230,7 +228,7 @@ ${this.stack}`}}class se extends x{constructor(e="The molecule does not contain
230
228
  }
231
229
  }
232
230
  }
233
- `}}class hr extends tt{constructor(e){super(e),this.$__subscribe=T.gql`
231
+ `}},gr=class extends mr{constructor(e){super(e),this.$__subscribe=l.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 x{constructor(e="The molecule does not contain
239
237
  balance,
240
238
  }
241
239
  }
242
- `}}class dr extends tt{constructor(e){super(e),this.$__subscribe=T.gql`
240
+ `}},_r=class extends mr{constructor(e){super(e),this.$__subscribe=l.gql`
243
241
  subscription onActiveWallet ( $bundle: String! ) {
244
242
  ActiveWallet( bundle: $bundle ) {
245
243
  address,
@@ -277,7 +275,7 @@ ${this.stack}`}}class se extends x{constructor(e="The molecule does not contain
277
275
  }
278
276
  }
279
277
  }
280
- `}}class pr extends tt{constructor(e){super(e),this.$__subscribe=T.gql`
278
+ `}},vr=class extends mr{constructor(e){super(e),this.$__subscribe=l.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 x{constructor(e="The molecule does not contain
287
285
  createdAt,
288
286
  updatedAt
289
287
  }
290
- }`}}class es extends E{constructor({query:e,json:t}){super({query:e,json:t,dataKey:"data.ActiveSession"})}}class ts extends He{constructor(e,t){super(e,t),this.$__query=T.gql`mutation(
288
+ }`}},yr=class extends q{constructor({query:e,json:t}){super({query:e,json:t,dataKey:`data.ActiveSession`})}},br=class extends Bn{constructor(e,t){super(e,t),this.$__query=l.gql`mutation(
291
289
  $bundleHash: String!,
292
290
  $metaType: String!,
293
291
  $metaId: String!,
@@ -315,7 +313,7 @@ ${this.stack}`}}class se extends x{constructor(e="The molecule does not contain
315
313
  createdAt,
316
314
  updatedAt
317
315
  }
318
- }`}createResponse(e){return new es({query:this,json:e})}}class ns extends E{constructor({query:e,json:t}){super({query:e,json:t,dataKey:"data.ActiveUser"})}payload(){const e=this.data();if(!e)return null;const t=[];for(const n of e){const s={...n};s.jsonData&&(s.jsonData=JSON.parse(s.jsonData)),s.createdAt&&(s.createdAt=new Date(s.createdAt)),s.updatedAt&&(s.updatedAt=new Date(s.updatedAt)),t.push(s)}return t}}class ss extends N{constructor(e,t){super(e,t),this.$__query=T.gql`query ActiveUserQuery ($bundleHash:String, $metaType: String, $metaId: String) {
316
+ }`}createResponse(e){return new yr({query:this,json:e})}},xr=class extends q{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}},Sr=class extends J{constructor(e,t){super(e,t),this.$__query=l.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 x{constructor(e="The molecule does not contain
324
322
  createdAt,
325
323
  updatedAt
326
324
  }
327
- }`}createResponse(e){return new ns({query:this,json:e})}}class rs extends N{constructor(e,t){super(e,t),this.$__query=T.gql`query( $slug: String, $slugs: [ String! ], $limit: Int, $order: String ) {
325
+ }`}createResponse(e){return new xr({query:this,json:e})}},Cr=class extends J{constructor(e,t){super(e,t),this.$__query=l.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 x{constructor(e="The molecule does not contain
334
332
  amount,
335
333
  icon,
336
334
  }
337
- }`}createResponse(e){return new E({query:this,json:e,dataKey:"data.Token"})}}class _t extends x{constructor(e="Authorization attempt rejected by ledger.",t=null,n=null){super(e,t,n),this.name="AuthorizationRejectedException"}}class is extends E{constructor({query:e,json:t}){super({query:e,json:t,dataKey:"data.Atom"})}payload(){const e=this.data();if(!e)return null;const t={instances:[],instanceCount:{},paginatorInfo:{}};if(e.instances){t.instances=e.instances;for(const n in t.instances){const s=t.instances[n];s.metasJson&&(t.instances[n].metas=JSON.parse(s.metasJson))}}return e.instanceCount&&(t.instanceCount=e.instanceCount),e.paginatorInfo&&(t.paginatorInfo=e.paginatorInfo),t}metas(){const e=this.payload(),t=[];if(e&&e.instances)for(const n of e.instances)n.metasJson&&t.push(JSON.parse(n.metasJson));return t}}class $t extends N{constructor(e,t){super(e,t),this.$__query=T.gql`query(
335
+ }`}createResponse(e){return new q({query:this,json:e,dataKey:`data.Token`})}},wr=class extends w{constructor(e=`Authorization attempt rejected by ledger.`,t=null,n=null){super(e,t,n),this.name=`AuthorizationRejectedException`}},Tr=class extends q{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}},Er=class extends J{constructor(e,t){super(e,t),this.$__query=l.gql`query(
338
336
  $molecularHashes: [String!],
339
337
  $bundleHashes: [String!],
340
338
  $positions:[String!],
@@ -390,7 +388,7 @@ ${this.stack}`}}class se extends x{constructor(e="The molecule does not contain
390
388
  total
391
389
  }
392
390
  }
393
- }`}static createVariables({molecularHashes:e,molecularHash:t,bundleHashes:n,bundleHash:s,positions:r,position:i,walletAddresses:a,walletAddress:c,isotopes:u,isotope:l,tokenSlugs:h,tokenSlug:p,cellSlugs:d,cellSlug:w,batchIds:A,batchId:R,values:f,value:y,metaTypes:b,metaType:C,metaIds:S,metaId:$,indexes:v,index:I,filter:_,latest:H,queryArgs:O}){return t&&(e=e||[],e.push(t)),s&&(n=n||[],n.push(s)),i&&(r=r||[],r.push(i)),c&&(a=a||[],a.push(c)),l&&(u=u||[],u.push(l)),p&&(h=h||[],h.push(p)),w&&(d=d||[],d.push(w)),R&&(A=A||[],A.push(R)),y&&(f=f||[],f.push(y)),C&&(b=b||[],b.push(C)),$&&(S=S||[],S.push($)),I&&(v=v||[],v.push(I)),{molecularHashes:e,bundleHashes:n,positions:r,walletAddresses:a,isotopes:u,tokenSlugs:h,cellSlugs:d,batchIds:A,values:f,metaTypes:b,metaIds:S,indexes:v,filter:_,latest:H,queryArgs:O}}createResponse(e){return new is({query:this,json:e})}}class os extends E{constructor({query:e,json:t}){super({query:e,json:t}),this.dataKey="data.Policy",this.init()}payload(){const e=this.data();return e&&e.callback?JSON.parse(e.callback):null}}class as extends N{constructor(e,t){super(e,t),this.$__query=T.gql`query( $metaType: String, $metaId: String, ) {
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 Tr({query:this,json:e})}},Dr=class extends q{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}},Or=class extends J{constructor(e,t){super(e,t),this.$__query=l.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 x{constructor(e="The molecule does not contain
401
399
  rule,
402
400
  createdAt
403
401
  }
404
- }`}createResponse(e){return new os({query:this,json:e})}}class ls extends E{constructor({query:e,json:t}){super({query:e,json:t,dataKey:"data.MetaTypeViaAtom"})}payload(){const e=this.data();if(!e||e.length===0)return null;const t={instances:{},instanceCount:{},paginatorInfo:{}},n=e.pop();return n.instances&&(t.instances=n.instances),n.instanceCount&&(t.instanceCount=n.instanceCount),n.paginatorInfo&&(t.paginatorInfo=n.paginatorInfo),t}}class At extends N{constructor(e,t){super(e,t),this.$__query=T.gql`query ($metaTypes: [String!], $metaIds: [String!], $values: [String!], $keys: [String!], $latest: Boolean, $filter: [MetaFilter!], $queryArgs: QueryArgs, $countBy: String, $atomValues: [String!], $cellSlugs: [String!] ) {
402
+ }`}createResponse(e){return new Dr({query:this,json:e})}},kr=class extends q{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}},Ar=class extends J{constructor(e,t){super(e,t),this.$__query=l.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 x{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:s=null,keys:r=null,values:i=null,atomValues:a=null,latest:c=null,filter:u=null,queryArgs:l=null,countBy:h=null,cellSlug:p=null}){const d={};return a&&(d.atomValues=a),r&&(d.keys=r),i&&(d.values=i),e&&(d.metaTypes=typeof e=="string"?[e]:e),t&&(d.metaIds=typeof t=="string"?[t]:t),p&&(d.cellSlugs=typeof p=="string"?[p]:p),h&&(d.countBy=h),u&&(d.filter=u),n&&s&&(d.filter=d.filter||[],d.filter.push({key:n,value:s,comparison:"="})),d.latest=c===!0,l&&((typeof l.limit>"u"||l.limit===0)&&(l.limit="*"),d.queryArgs=l),d}createResponse(e){return new ls({query:this,json:e})}}class nt extends E{constructor({query:e,json:t}){super({query:e,json:t,dataKey:"data.MetaTypeViaAtom"})}static extractMetasFromMolecule(e,t,n){if(!e||!e.atoms)return[];const s=[];for(const r of e.atoms){if(r.metaType!==t||r.metaId!==n||!r.metasJson)continue;let i;try{if(i=JSON.parse(r.metasJson),!Array.isArray(i))continue}catch{continue}for(const a of i)s.push({molecularHash:e.molecularHash,position:r.position,key:a.key,value:a.value,createdAt:r.createdAt})}return s}payload(){const e=this.data();if(!e||e.length===0)return null;const t={instances:{},instanceCount:{},paginatorInfo:{}},n=e.pop();return n.instances&&(t.instances=n.instances.map(s=>{let r=s.metas;return(!r||r.length===0)&&(r=nt.extractMetasFromMolecule(s.molecule,s.metaType,s.metaId)),{...s,metas:r}})),n.instanceCount&&(t.instanceCount=n.instanceCount),n.paginatorInfo&&(t.paginatorInfo=n.paginatorInfo),t}verifyIntegrity(){const e=[],t=this.data();if(!t||t.length===0)return{verified:!0,molecules:e};const n=t[t.length-1]?.instances||[];for(const s of n)s.molecule&&e.push(_e.verifyFromServerData(s.molecule));return{verified:e.length===0||e.every(s=>s.verified),molecules:e}}}class vt extends N{constructor(e,t){super(e,t),this.$__query=T.gql`query ($metaTypes: [String!], $metaIds: [String!], $values: [String!], $keys: [String!], $latest: Boolean, $filter: [MetaFilter!], $queryArgs: QueryArgs, $countBy: String, $atomValues: [String!], $cellSlugs: [String!] ) {
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 kr({query:this,json:e})}},jr=class e extends q{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(cn.verifyFromServerData(t.molecule));return{verified:e.length===0||e.every(e=>e.verified),molecules:e}}},Mr=class extends J{constructor(e,t){super(e,t),this.$__query=l.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 x{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:s=null,keys:r=null,values:i=null,atomValues:a=null,latest:c=null,filter:u=null,queryArgs:l=null,countBy:h=null,cellSlug:p=null}){const d={};return a&&(d.atomValues=a),r&&(d.keys=r),i&&(d.values=i),e&&(d.metaTypes=typeof e=="string"?[e]:e),t&&(d.metaIds=typeof t=="string"?[t]:t),p&&(d.cellSlugs=typeof p=="string"?[p]:p),h&&(d.countBy=h),u&&(d.filter=u),n&&s&&(d.filter=d.filter||[],d.filter.push({key:n,value:s,comparison:"="})),d.latest=c===!0,l&&((typeof l.limit>"u"||l.limit===0)&&(l.limit="*"),d.queryArgs=l),d}createResponse(e){return new nt({query:this,json:e})}}class cs extends E{constructor({query:e,json:t}){super({query:e,json:t,dataKey:"data.embeddingStatus"})}payload(){const e=this.data();return!e||!Array.isArray(e)||e.length===0?null:e}}class xt extends N{constructor(e,t){super(e,t),this.$__query=T.gql`query( $metaType: String, $metaId: String, $instances: [EmbeddingStatusInput!] ) {
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 jr({query:this,json:e})}},Nr=class extends q{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}},Pr=class extends J{constructor(e,t){super(e,t),this.$__query=l.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 x{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 cs({query:this,json:e})}}class us extends D{}class hs extends W{fillMolecule({metaType:e,metaId:t,rule:n,policy:s}){this.$__molecule.createRule({metaType:e,metaId:t,rule:n,policy:s}),this.$__molecule.sign({}),this.$__molecule.check()}createResponse(e){return new us({query:this,json:e})}}class ds extends W{fillMolecule({amount:e,tradeRates:t}){this.$__molecule.initDepositBuffer({amount:e,tradeRates:t}),this.$__molecule.sign({}),this.$__molecule.check(this.$__molecule.sourceWallet)}}class ps extends W{fillMolecule({recipients:e,signingWallet:t}){this.$__molecule.initWithdrawBuffer({recipients:e,signingWallet:t}),this.$__molecule.sign({}),this.$__molecule.check(this.$__molecule.sourceWallet)}}function Z(o,e,t,n){return new(t||(t=Promise))((function(s,r){function i(u){try{c(n.next(u))}catch(l){r(l)}}function a(u){try{c(n.throw(u))}catch(l){r(l)}}function c(u){var l;u.done?s(u.value):(l=u.value,l instanceof t?l:new t((function(h){h(l)}))).then(i,a)}c((n=n.apply(o,[])).next())}))}function Y(o,e){var t,n,s,r,i={label:0,sent:function(){if(1&s[0])throw s[1];return s[1]},trys:[],ops:[]};return r={next:a(0),throw:a(1),return:a(2)},typeof Symbol=="function"&&(r[Symbol.iterator]=function(){return this}),r;function a(c){return function(u){return(function(l){if(t)throw new TypeError("Generator is already executing.");for(;r&&(r=0,l[0]&&(i=0)),i;)try{if(t=1,n&&(s=2&l[0]?n.return:l[0]?n.throw||((s=n.return)&&s.call(n),0):n.next)&&!(s=s.call(n,l[1])).done)return s;switch(n=0,s&&(l=[2&l[0],s.value]),l[0]){case 0:case 1:s=l;break;case 4:return i.label++,{value:l[1],done:!1};case 5:i.label++,n=l[1],l=[0];continue;case 7:l=i.ops.pop(),i.trys.pop();continue;default:if(s=i.trys,!((s=s.length>0&&s[s.length-1])||l[0]!==6&&l[0]!==2)){i=0;continue}if(l[0]===3&&(!s||l[1]>s[0]&&l[1]<s[3])){i.label=l[1];break}if(l[0]===6&&i.label<s[1]){i.label=s[1],s=l;break}if(s&&i.label<s[2]){i.label=s[2],i.ops.push(l);break}s[2]&&i.ops.pop(),i.trys.pop();continue}l=e.call(o,i)}catch(h){l=[6,h],n=0}finally{t=s=0}if(5&l[0])throw l[1];return{value:l[0]?l[1]:void 0,done:!0}})([c,u])}}}var B={exclude:[],include:[],logging:!0},fs={},fr={timeout:"true"},G=function(o,e){typeof window<"u"&&(fs[o]=e)},yr=function(){return Object.fromEntries(Object.entries(fs).filter((function(o){var e,t=o[0];return!(!((e=B?.exclude)===null||e===void 0)&&e.includes(t))})).filter((function(o){var e,t,n,s,r=o[0];return!((e=B?.include)===null||e===void 0)&&e.some((function(i){return i.includes(".")}))?(t=B?.include)===null||t===void 0?void 0:t.some((function(i){return i.startsWith(r)})):((n=B?.include)===null||n===void 0?void 0:n.length)===0||((s=B?.include)===null||s===void 0?void 0:s.includes(r))})).map((function(o){return[o[0],(0,o[1])()]})))};function Le(o){return o^=o>>>16,o=Math.imul(o,2246822507),o^=o>>>13,o=Math.imul(o,3266489909),(o^=o>>>16)>>>0}var K=new Uint32Array([597399067,2869860233,951274213,2716044179]);function j(o,e){return o<<e|o>>>32-e}function Tt(o,e){var t;if(e===void 0&&(e=0),e=e?0|e:0,typeof o=="string"&&(t=o,o=new TextEncoder().encode(t).buffer),!(o instanceof ArrayBuffer))throw new TypeError("Expected key to be ArrayBuffer or string");var n=new Uint32Array([e,e,e,e]);(function(r,i){for(var a=r.byteLength/16|0,c=new Uint32Array(r,0,4*a),u=0;u<a;u++){var l=c.subarray(4*u,4*(u+1));l[0]=Math.imul(l[0],K[0]),l[0]=j(l[0],15),l[0]=Math.imul(l[0],K[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],K[1]),l[1]=j(l[1],16),l[1]=Math.imul(l[1],K[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],K[2]),l[2]=j(l[2],17),l[2]=Math.imul(l[2],K[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],K[3]),l[3]=j(l[3],18),l[3]=Math.imul(l[3],K[0]),i[3]=i[3]^l[3],i[3]=j(i[3],13),i[3]=i[3]+i[0],i[3]=Math.imul(i[3],5)+850148119}})(o,n),(function(r,i){var a=r.byteLength/16|0,c=r.byteLength%16,u=new Uint32Array(4),l=new Uint8Array(r,16*a,c);switch(c){case 15:u[3]=u[3]^l[14]<<16;case 14:u[3]=u[3]^l[13]<<8;case 13:u[3]=u[3]^l[12]<<0,u[3]=Math.imul(u[3],K[3]),u[3]=j(u[3],18),u[3]=Math.imul(u[3],K[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],K[2]),u[2]=j(u[2],17),u[2]=Math.imul(u[2],K[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],K[1]),u[1]=j(u[1],16),u[1]=Math.imul(u[1],K[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],K[0]),u[0]=j(u[0],15),u[0]=Math.imul(u[0],K[1]),i[0]=i[0]^u[0]}})(o,n),(function(r,i){i[0]=i[0]^r.byteLength,i[1]=i[1]^r.byteLength,i[2]=i[2]^r.byteLength,i[3]=i[3]^r.byteLength,i[0]=i[0]+i[1]|0,i[0]=i[0]+i[2]|0,i[0]=i[0]+i[3]|0,i[1]=i[1]+i[0]|0,i[2]=i[2]+i[0]|0,i[3]=i[3]+i[0]|0,i[0]=Le(i[0]),i[1]=Le(i[1]),i[2]=Le(i[2]),i[3]=Le(i[3]),i[0]=i[0]+i[1]|0,i[0]=i[0]+i[2]|0,i[0]=i[0]+i[3]|0,i[1]=i[1]+i[0]|0,i[2]=i[2]+i[0]|0,i[3]=i[3]+i[0]|0})(o,n);var s=new Uint8Array(n.buffer);return Array.from(s).map((function(r){return r.toString(16).padStart(2,"0")})).join("")}function mr(o,e){return new Promise((function(t){setTimeout((function(){return t(e)}),o)}))}function gr(o,e,t){return Promise.all(o.map((function(n){return Promise.race([n,mr(e,t)])})))}var wr="0.19.1";function br(){return wr}function ys(){return Z(this,void 0,void 0,(function(){var o,e,t,n,s;return Y(this,(function(r){switch(r.label){case 0:return r.trys.push([0,2,,3]),o=yr(),e=Object.keys(o),[4,gr(Object.values(o),B?.timeout||1e3,fr)];case 1:return t=r.sent(),n=t.filter((function(i){return i!==void 0})),s={},n.forEach((function(i,a){s[e[a]]=i})),[2,ms(s,B.exclude||[],B.include||[],"")];case 2:throw r.sent();case 3:return[2]}}))}))}function ms(o,e,t,n){n===void 0&&(n="");for(var s={},r=function(u,l){var h=n+u+".";if(typeof l!="object"||Array.isArray(l)){var p=e.some((function(A){return h.startsWith(A)})),d=t.some((function(A){return h.startsWith(A)}));p&&!d||(s[u]=l)}else{var w=ms(l,e,t,h);Object.keys(w).length>0&&(s[u]=w)}},i=0,a=Object.entries(o);i<a.length;i++){var c=a[i];r(c[0],c[1])}return s}function kr(o){return Z(this,void 0,void 0,(function(){var e,t;return Y(this,(function(n){switch(n.label){case 0:return n.trys.push([0,2,,3]),[4,ys()];case 1:return e=n.sent(),t=Tt(JSON.stringify(e)),Math.random()<.001&&B.logging&&(function(s,r){Z(this,void 0,void 0,(function(){var i,a;return Y(this,(function(c){switch(c.label){case 0:if(i="https://logging.thumbmarkjs.com/v1/log",a={thumbmark:s,components:r,version:br()},sessionStorage.getItem("_tmjs_l"))return[3,4];sessionStorage.setItem("_tmjs_l","1"),c.label=1;case 1:return c.trys.push([1,3,,4]),[4,fetch(i,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)})];case 2:case 3:return c.sent(),[3,4];case 4:return[2]}}))}))})(t,e),[2,t.toString()];case 2:throw n.sent();case 3:return[2]}}))}))}function Sr(o){for(var e=0,t=0;t<o.length;++t)e+=Math.abs(o[t]);return e}function gs(o,e,t){for(var n=[],s=0;s<o[0].data.length;s++){for(var r=[],i=0;i<o.length;i++)r.push(o[i].data[s]);n.push(_r(r))}var a=new Uint8ClampedArray(n);return new ImageData(a,e,t)}function _r(o){if(o.length===0)return 0;for(var e={},t=0,n=o;t<n.length;t++)e[r=n[t]]=(e[r]||0)+1;var s=o[0];for(var r in e)e[r]>e[s]&&(s=parseInt(r,10));return s}function Ue(){if(typeof navigator>"u")return{name:"unknown",version:"unknown"};for(var o=navigator.userAgent,e={Edg:"Edge",OPR:"Opera"},t=0,n=[/(?<name>Edge|Edg)\/(?<version>\d+(?:\.\d+)?)/,/(?<name>(?:Chrome|Chromium|OPR|Opera|Vivaldi|Brave))\/(?<version>\d+(?:\.\d+)?)/,/(?<name>(?:Firefox|Waterfox|Iceweasel|IceCat))\/(?<version>\d+(?:\.\d+)?)/,/(?<name>Safari)\/(?<version>\d+(?:\.\d+)?)/,/(?<name>MSIE|Trident|IEMobile).+?(?<version>\d+(?:\.\d+)?)/,/(?<name>[A-Za-z]+)\/(?<version>\d+(?:\.\d+)?)/,/(?<name>SamsungBrowser)\/(?<version>\d+(?:\.\d+)?)/];t<n.length;t++){var s=n[t],r=o.match(s);if(r&&r.groups)return{name:e[r.groups.name]||r.groups.name,version:r.groups.version}}return{name:"unknown",version:"unknown"}}G("audio",(function(){return Z(this,void 0,void 0,(function(){return Y(this,(function(o){return[2,new Promise((function(e,t){try{var n=new(window.OfflineAudioContext||window.webkitOfflineAudioContext)(1,5e3,44100),s=n.createBufferSource(),r=n.createOscillator();r.frequency.value=1e3;var i,a=n.createDynamicsCompressor();a.threshold.value=-50,a.knee.value=40,a.ratio.value=12,a.attack.value=0,a.release.value=.2,r.connect(a),a.connect(n.destination),r.start(),n.oncomplete=function(c){i=c.renderedBuffer.getChannelData(0),e({sampleHash:Sr(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 $r=Ue().name!=="SamsungBrowser"?1:3,Ft=280,Lt=20;Ue().name!="Firefox"&&G("canvas",(function(){return document.createElement("canvas").getContext("2d"),new Promise((function(o){var e=Array.from({length:$r},(function(){return(function(){var t=document.createElement("canvas"),n=t.getContext("2d");if(!n)return new ImageData(1,1);t.width=Ft,t.height=Lt;var s=n.createLinearGradient(0,0,t.width,t.height);s.addColorStop(0,"red"),s.addColorStop(.16666666666666666,"orange"),s.addColorStop(.3333333333333333,"yellow"),s.addColorStop(.5,"green"),s.addColorStop(.6666666666666666,"blue"),s.addColorStop(.8333333333333334,"indigo"),s.addColorStop(1,"violet"),n.fillStyle=s,n.fillRect(0,0,t.width,t.height);var r="Random Text WMwmil10Oo";n.font="23.123px Arial",n.fillStyle="black",n.fillText(r,-5,15),n.fillStyle="rgba(0, 0, 255, 0.5)",n.fillText(r,-3.3,17.7),n.beginPath(),n.moveTo(0,0),n.lineTo(2*t.width/7,t.height),n.strokeStyle="white",n.lineWidth=2,n.stroke();var i=n.getImageData(0,0,t.width,t.height);return i})()}));o({commonImageDataHash:Tt(gs(e,Ft,Lt).data.toString()).toString()})}))}));var ht,Ar=["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"],vr=["monospace","sans-serif","serif"];function Qt(o,e){if(!o)throw new Error("Canvas context not supported");return o.font,o.font="72px ".concat(e),o.measureText("WwMmLli0Oo").width}function xr(){var o,e=document.createElement("canvas"),t=(o=e.getContext("webgl"))!==null&&o!==void 0?o:e.getContext("experimental-webgl");if(t&&"getParameter"in t)try{var n=(t.getParameter(t.VENDOR)||"").toString(),s=(t.getParameter(t.RENDERER)||"").toString(),r={vendor:n,renderer:s,version:(t.getParameter(t.VERSION)||"").toString(),shadingLanguageVersion:(t.getParameter(t.SHADING_LANGUAGE_VERSION)||"").toString()};if(!s.length||!n.length){var i=t.getExtension("WEBGL_debug_renderer_info");if(i){var a=(t.getParameter(i.UNMASKED_VENDOR_WEBGL)||"").toString(),c=(t.getParameter(i.UNMASKED_RENDERER_WEBGL)||"").toString();a&&(r.vendorUnmasked=a),c&&(r.rendererUnmasked=c)}}return r}catch{}return"undefined"}function Ir(){var o=new Float32Array(1),e=new Uint8Array(o.buffer);return o[0]=1/0,o[0]=o[0]-o[0],e[3]}function Mr(o,e){var t={};return e.forEach((function(n){var s=(function(r){if(r.length===0)return null;var i={};r.forEach((function(u){var l=String(u);i[l]=(i[l]||0)+1}));var a=r[0],c=1;return Object.keys(i).forEach((function(u){i[u]>c&&(a=u,c=i[u])})),a})(o.map((function(r){return n in r?r[n]:void 0})).filter((function(r){return r!==void 0})));s&&(t[n]=s)})),t}function Tr(){var o=[],e={"prefers-contrast":["high","more","low","less","forced","no-preference"],"any-hover":["hover","none"],"any-pointer":["none","coarse","fine"],pointer:["none","coarse","fine"],hover:["hover","none"],update:["fast","slow"],"inverted-colors":["inverted","none"],"prefers-reduced-motion":["reduce","no-preference"],"prefers-reduced-transparency":["reduce","no-preference"],scripting:["none","initial-only","enabled"],"forced-colors":["active","none"]};return Object.keys(e).forEach((function(t){e[t].forEach((function(n){matchMedia("(".concat(t,": ").concat(n,")")).matches&&o.push("".concat(t,": ").concat(n))}))})),o}function Cr(){if(window.location.protocol==="https:"&&typeof window.ApplePaySession=="function")try{for(var o=window.ApplePaySession.supportsVersion,e=15;e>0;e--)if(o(e))return e}catch{return 0}return 0}Ue().name!="Firefox"&&G("fonts",(function(){var o=this;return new Promise((function(e,t){try{(function(n){var s;Z(this,void 0,void 0,(function(){var r,i,a;return Y(this,(function(c){switch(c.label){case 0:return document.body?[3,2]:[4,(u=50,new Promise((function(h){return setTimeout(h,u,l)})))];case 1:return c.sent(),[3,0];case 2:if((r=document.createElement("iframe")).setAttribute("frameBorder","0"),(i=r.style).setProperty("position","fixed"),i.setProperty("display","block","important"),i.setProperty("visibility","visible"),i.setProperty("border","0"),i.setProperty("opacity","0"),r.src="about:blank",document.body.appendChild(r),!(a=r.contentDocument||((s=r.contentWindow)===null||s===void 0?void 0:s.document)))throw new Error("Iframe document is not accessible");return n({iframe:a}),setTimeout((function(){document.body.removeChild(r)}),0),[2]}var u,l}))}))})((function(n){var s=n.iframe;return Z(o,void 0,void 0,(function(){var r,i,a,c;return Y(this,(function(u){return r=s.createElement("canvas"),i=r.getContext("2d"),a=vr.map((function(l){return Qt(i,l)})),c={},Ar.forEach((function(l){var h=Qt(i,l);a.includes(h)||(c[l]=h)})),e(c),[2]}))}))}))}catch{t({error:"unsupported"})}}))})),G("hardware",(function(){return new Promise((function(o,e){var t=navigator.deviceMemory!==void 0?navigator.deviceMemory:0,n=window.performance&&window.performance.memory?window.performance.memory:0;o({videocard:xr(),architecture:Ir(),deviceMemory:t.toString()||"undefined",jsHeapSizeLimit:n.jsHeapSizeLimit||0})}))})),G("locales",(function(){return new Promise((function(o){o({languages:navigator.language,timezone:Intl.DateTimeFormat().resolvedOptions().timeZone})}))})),G("permissions",(function(){return Z(this,void 0,void 0,(function(){var o;return Y(this,(function(e){return ht=B?.permissions_to_check||["accelerometer","accessibility","accessibility-events","ambient-light-sensor","background-fetch","background-sync","bluetooth","camera","clipboard-read","clipboard-write","device-info","display-capture","gyroscope","geolocation","local-fonts","magnetometer","microphone","midi","nfc","notifications","payment-handler","persistent-storage","push","speaker","storage-access","top-level-storage-access","window-management","query"],o=Array.from({length:B?.retries||3},(function(){return(function(){return Z(this,void 0,void 0,(function(){var t,n,s,r,i;return Y(this,(function(a){switch(a.label){case 0:t={},n=0,s=ht,a.label=1;case 1:if(!(n<s.length))return[3,6];r=s[n],a.label=2;case 2:return a.trys.push([2,4,,5]),[4,navigator.permissions.query({name:r})];case 3:return i=a.sent(),t[r]=i.state.toString(),[3,5];case 4:return a.sent(),[3,5];case 5:return n++,[3,1];case 6:return[2,t]}}))}))})()})),[2,Promise.all(o).then((function(t){return Mr(t,ht)}))]}))}))})),G("plugins",(function(){var o=[];if(navigator.plugins)for(var e=0;e<navigator.plugins.length;e++){var t=navigator.plugins[e];o.push([t.name,t.filename,t.description].join("|"))}return new Promise((function(n){n({plugins:o})}))})),G("screen",(function(){return new Promise((function(o){o({is_touchscreen:navigator.maxTouchPoints>0,maxTouchPoints:navigator.maxTouchPoints,colorDepth:screen.colorDepth,mediaMatches:Tr()})}))})),G("system",(function(){return new Promise((function(o){var e=Ue();o({platform:window.navigator.platform,cookieEnabled:window.navigator.cookieEnabled,productSub:navigator.productSub,product:navigator.product,useragent:navigator.userAgent,hardwareConcurrency:navigator.hardwareConcurrency,browser:{name:e.name,version:e.version},applePayVersion:Cr()})}))}));var F,Er=Ue().name!=="SamsungBrowser"?1:3,m=null;G("webgl",(function(){return Z(this,void 0,void 0,(function(){var o;return Y(this,(function(e){typeof document<"u"&&((F=document.createElement("canvas")).width=200,F.height=100,m=F.getContext("webgl"));try{if(!m)throw new Error("WebGL not supported");return o=Array.from({length:Er},(function(){return(function(){try{if(!m)throw new Error("WebGL not supported");var t=`
502
- attribute vec2 position;
503
- void main() {
504
- gl_Position = vec4(position, 0.0, 1.0);
505
- }
506
- `,n=`
507
- precision mediump float;
508
- void main() {
509
- gl_FragColor = vec4(0.812, 0.195, 0.553, 0.921); // Set line color
510
- }
511
- `,s=m.createShader(m.VERTEX_SHADER),r=m.createShader(m.FRAGMENT_SHADER);if(!s||!r)throw new Error("Failed to create shaders");if(m.shaderSource(s,t),m.shaderSource(r,n),m.compileShader(s),!m.getShaderParameter(s,m.COMPILE_STATUS))throw new Error("Vertex shader compilation failed: "+m.getShaderInfoLog(s));if(m.compileShader(r),!m.getShaderParameter(r,m.COMPILE_STATUS))throw new Error("Fragment shader compilation failed: "+m.getShaderInfoLog(r));var i=m.createProgram();if(!i)throw new Error("Failed to create shader program");if(m.attachShader(i,s),m.attachShader(i,r),m.linkProgram(i),!m.getProgramParameter(i,m.LINK_STATUS))throw new Error("Shader program linking failed: "+m.getProgramInfoLog(i));m.useProgram(i);for(var a=137,c=new Float32Array(4*a),u=2*Math.PI/a,l=0;l<a;l++){var h=l*u;c[4*l]=0,c[4*l+1]=0,c[4*l+2]=Math.cos(h)*(F.width/2),c[4*l+3]=Math.sin(h)*(F.height/2)}var p=m.createBuffer();m.bindBuffer(m.ARRAY_BUFFER,p),m.bufferData(m.ARRAY_BUFFER,c,m.STATIC_DRAW);var d=m.getAttribLocation(i,"position");m.enableVertexAttribArray(d),m.vertexAttribPointer(d,2,m.FLOAT,!1,0,0),m.viewport(0,0,F.width,F.height),m.clearColor(0,0,0,1),m.clear(m.COLOR_BUFFER_BIT),m.drawArrays(m.LINES,0,2*a);var w=new Uint8ClampedArray(F.width*F.height*4);return m.readPixels(0,0,F.width,F.height,m.RGBA,m.UNSIGNED_BYTE,w),new ImageData(w,F.width,F.height)}catch{return new ImageData(1,1)}finally{m&&(m.bindBuffer(m.ARRAY_BUFFER,null),m.useProgram(null),m.viewport(0,0,m.drawingBufferWidth,m.drawingBufferHeight),m.clearColor(0,0,0,0))}})()})),[2,{commonImageHash:Tt(gs(o,F.width,F.height).data.toString()).toString()}]}catch{return[2,{webgl:"unsupported"}]}return[2]}))}))}));var le=function(o,e,t,n){for(var s=(t-e)/n,r=0,i=0;i<n;i++)r+=o(e+(i+.5)*s);return r*s};G("math",(function(){return Z(void 0,void 0,void 0,(function(){return Y(this,(function(o){return[2,{acos:Math.acos(.5),asin:le(Math.asin,-1,1,97),atan:le(Math.atan,-1,1,97),cos:le(Math.cos,0,Math.PI,97),cosh:Math.cosh(9/7),e:Math.E,largeCos:Math.cos(1e20),largeSin:Math.sin(1e20),largeTan:Math.tan(1e20),log:Math.log(1e3),pi:Math.PI,sin:le(Math.sin,-Math.PI,Math.PI,97),sinh:le(Math.sinh,-9/7,7/9,97),sqrt:Math.sqrt(2),tan:le(Math.tan,0,2*Math.PI,97),tanh:le(Math.tanh,-9/7,7/9,97)}]}))}))}));const Rr="query ( $Hash: String! ) { CipherHash ( Hash: $Hash ) { hash } }";function qr(o){const e=(o||"").match(/\b(query|mutation|subscription)\b/i),t=e?e[1].toLowerCase():"query",n=(o||"").indexOf("{"),s=n>=0?o.slice(n+1).match(/[A-Za-z_][A-Za-z0-9_]*/):null;return{type:t,name:s?s[0]:""}}class Or{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:a=>({unsubscribe:r.subscribe(i,a)})})}))}return T.createClient({url:e,exchanges:s,...n?{fetch:(r,i)=>this.cipherFetch(r,i)}:{},fetchOptions:()=>({headers:{"X-Auth-Token":this.$__authToken},signal:AbortSignal.timeout(6e4)})})}shouldEncrypt(e){let t;try{t=JSON.parse(e)}catch{return!1}const{type:n,name:s}=qr(t.query);return!(n==="query"&&(s==="__schema"||s==="ContinuId")||n==="mutation"&&s==="AccessToken"||n==="mutation"&&s==="ProposeMolecule"&&(t.variables&&t.variables.molecule&&t.variables.molecule.atoms&&t.variables.molecule.atoms[0]&&t.variables.molecule.atoms[0].isotope)==="U")}async cipherFetch(e,t){const n=this.getWallet(),s=this.getPubKey();let r=!1,i=t;if(n&&s&&t&&typeof t.body=="string"&&this.shouldEncrypt(t.body)){const d=await n.encryptStringML768(t.body,s);i={...t,body:JSON.stringify({query:Rr,variables:{Hash:d}})},r=!0}const a=await fetch(e,i);if(!r)return a;const c=await a.text(),u={status:a.status,statusText:a.statusText,headers:a.headers};let l;try{l=JSON.parse(c)}catch{return new Response(c,u)}const h=l&&l.data&&l.data.CipherHash&&l.data.CipherHash.hash;if(typeof h!="string")return new Response(c,u);const p=await n.decryptMyMessageML768(JSON.parse(h));return new Response(p??c,u)}setAuthData({token:e,pubkey:t,wallet:n}){this.$__authToken=e,this.$__pubkey=t,this.$__wallet=n,this.$__client=this.createUrqlClient({serverUri:this.serverUri,socket:this.soketi,encrypt:!!this.cipherLink})}buildRequestOptions(e){if(!e)return;const t={};e.requestPolicy&&(t.requestPolicy=e.requestPolicy);const n=e.fetchOptions&&e.fetchOptions.signal;if(n){const s=typeof AbortSignal<"u"&&typeof AbortSignal.any=="function"?AbortSignal.any([n,AbortSignal.timeout(6e4)]):n;t.fetchOptions={headers:{"X-Auth-Token":this.$__authToken},signal:s}}return Object.keys(t).length?t:void 0}async query(e){const{query:t,variables:n,context:s}=e,r=this.buildRequestOptions(s),i=await this.$__client.query(t,n||{},r).toPromise();return this.formatResponse(i)}async mutate(e){const{mutation:t,variables:n,context:s}=e,r=this.buildRequestOptions(s),i=await this.$__client.mutation(t,n||{},r).toPromise();return this.formatResponse(i)}subscribe(e,t){const{query:n,variables:s,operationName:r}=e,i=rt.pipe(this.$__client.subscription(n,s),rt.map(a=>{t(this.formatResponse(a))}),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 Br{constructor({uri:e,cellSlug:t=null,client:n=null,socket:s=null,serverSdkVersion:r=3,logging:i=!1,defaultRequestPolicy:a=null,secretStorage:c=null}){this.initialize({uri:e,cellSlug:t,socket:s,client:n,serverSdkVersion:r,logging:i,defaultRequestPolicy:a,secretStorage:c})}initialize({uri:e,cellSlug:t=null,socket:n=null,client:s=null,serverSdkVersion:r=3,logging:i=!1,defaultRequestPolicy:a=null,secretStorage:c=null}){this.reset(),this.$__secretStorage=c,this.$__logging=i,this.$__defaultRequestPolicy=a,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 Or({socket:{socketUri:null,appKey:"knishio",...n||{}},serverUri:this.getRandomUri()}),this.$__serverSdkVersion=r}getRandomUri(){const e=Math.floor(Math.random()*this.$__uris.length);return this.$__uris[e]}switchEncryption(e){return this.$__encrypt===e?!1:(this.log("info",`KnishIOClient::switchEncryption() - Forcing encryption ${e?"on":"off"} to match node...`),this.$__encrypt=e,this.$__client.setEncryption(e),!0)}deinitialize(){this.log("info","KnishIOClient::deinitialize() - Clearing the Knish.IO client session..."),this.reset()}subscribe(){if(!this.client().getSocketUri())throw new ee("KnishIOClient::subscribe() - Socket client not initialized!");return this.client()}getServerSdkVersion(){return this.$__serverSdkVersion}getDefaultRequestPolicy(){return this.$__defaultRequestPolicy||null}setDefaultRequestPolicy(e){this.$__defaultRequestPolicy=e}reset(){this.$__secret="",this.$__bundle="",this.$__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 Ge;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...`),pe(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 kr()}getFingerprintData(){return ys()}async getSourceWallet(){let e=(await this.queryContinuId({bundle:this.getBundle()})).payload();return e?e.key=k.generateKey({secret:this.getSecret(),token:e.token,position:e.position}):e=new k({secret:this.getSecret()}),e}getRemainderWallet(){return this.remainderWallet}async createMolecule({secret:e=null,bundle:t=null,sourceWallet:n=null,remainderWallet:s=null}){this.log("info","KnishIOClient::createMolecule() - Creating a new molecule..."),e||(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||k.create({secret:e,bundle:t,token:"USER",batchId:n.batchId,characters:n.characters}),new V({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 W))throw new ee(`${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 a=await e.execute({variables:t,context:{fetchOptions:{signal:s.signal},...i}});return this.abortControllers.delete(r),a}catch(i){if(i.name==="AbortError")this.log("warn","Query was cancelled");else throw i}}cancelQuery(e,t=null){const n=JSON.stringify({query:e.$__query,variables:t}),s=this.abortControllers.get(n);s&&(s.abort(),this.abortControllers.delete(n))}cancelAllQueries(){for(const e of this.abortControllers.values())e.abort();this.abortControllers.clear()}async queryBalance({token:e,bundle:t=null,type:n="regular"}){const s=this.createQuery(In);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||ie.cmp(s.balance,t)<0)throw new J;if(!s.position||!s.address)throw new J("Source wallet can not be a shadow wallet.");return s}async subscribeCreateMolecule({bundle:e,closure:t}){return await this.createSubscribe(ur).execute({variables:{bundle:e||this.getBundle()},closure:t})}subscribeWalletStatus({bundle:e,token:t,closure:n}){if(!t)throw new ee(`${this.constructor.name}::subscribeWalletStatus() - Token parameter is required!`);return this.createSubscribe(hr).execute({variables:{bundle:e||this.getBundle(),token:t},closure:n})}subscribeActiveWallet({bundle:e,closure:t}){return this.createSubscribe(dr).execute({variables:{bundle:e||this.getBundle()},closure:t})}subscribeActiveSession({metaType:e,metaId:t,closure:n}){return this.createSubscribe(pr).execute({variables:{metaType:e,metaId:t},closure:n})}unsubscribe(e){this.subscribe().unsubscribe(e)}unsubscribeAll(){this.subscribe().unsubscribeAll()}queryMeta({metaType:e,metaId:t=null,key:n=null,value:s=null,latest:r=!0,fields:i=null,filter:a=null,queryArgs:c=null,count:u=null,countBy:l=null,throughAtom:h=!0,throughMolecule:p=!1,values:d=null,keys:w=null,atomValues:A=null,requestPolicy:R=null}){this.log("info",`KnishIOClient::queryMeta() - Querying metaType: ${e}, metaId: ${t}...`);let f,y;return p?(f=this.createQuery(vt),y=vt.createVariables({metaType:e,metaId:t,key:n,value:s,latest:r,filter:a,queryArgs:c,countBy:l,values:d,keys:w,atomValues:A,cellSlug:this.getCellSlug()})):h?(f=this.createQuery(At),y=At.createVariables({metaType:e,metaId:t,key:n,value:s,latest:r,filter:a,queryArgs:c,countBy:l,values:d,keys:w,atomValues:A,cellSlug:this.getCellSlug()})):(f=this.createQuery(bt),y=bt.createVariables({metaType:e,metaId:t,key:n,value:s,latest:r,filter:a,queryArgs:c,count:u,countBy:l,cellSlug:this.getCellSlug()})),this.executeQuery(f,y,R?{requestPolicy:R}:{})}async queryMetaVerified(e){const t=await this.queryMeta(e),n=t.payload();return n&&(n.integrity=t.verifyIntegrity()),t}async hasQueryField(e){const n=`${this.getUri()}::${e}`;if(typeof this.$__capabilityCache[n]=="boolean")return this.$__capabilityCache[n];try{const i=((await this.$__client.query({query:"{ __schema { queryType { fields { name } } } }",variables:{}}))?.data?.__schema?.queryType?.fields||[]).some(a=>a.name===e);return this.$__capabilityCache[n]=i,i}catch(s){return this.log("warn",`KnishIOClient::hasQueryField() - Capability probe for '${e}' failed: ${s.message}`),this.$__capabilityCache[n]=!1,!1}}async queryEmbeddingStatus({metaType:e=null,metaId:t=null,instances:n=null}){if(this.log("info",`KnishIOClient::queryEmbeddingStatus() - Checking embedding status for metaType: ${e||"(bulk)"}...`),!await this.hasQueryField("embeddingStatus"))return this.log("warn","KnishIOClient::queryEmbeddingStatus() - Server does not support embeddingStatus query. Returning null."),null;const r=this.createQuery(xt),i=xt.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(Ae);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(Tn);return await this.executeQuery(t,{batchId:e})}async queryAtom({molecularHashes:e,molecularHash:t,bundleHashes:n,bundleHash:s,positions:r,position:i,walletAddresses:a,walletAddress:c,isotopes:u,isotope:l,tokenSlugs:h,tokenSlug:p,cellSlugs:d,cellSlug:w,batchIds:A,batchId:R,values:f,value:y,metaTypes:b,metaType:C,metaIds:S,metaId:$,indexes:v,index:I,filter:_,latest:H,queryArgs:O={limit:15,offset:1}}){this.log("info","KnishIOClient::queryAtom() - Querying atom instances");const ye=this.createQuery($t);return await this.executeQuery(ye,$t.createVariables({molecularHashes:e,molecularHash:t,bundleHashes:n,bundleHash:s,positions:r,position:i,walletAddresses:a,walletAddress:c,isotopes:u,isotope:l,tokenSlugs:h,tokenSlug:p,cellSlugs:d,cellSlug:w,batchIds:A,batchId:R,values:f,value:y,metaTypes:b,metaType:C,metaIds:S,metaId:$,indexes:v,index:I,filter:_,latest:H,queryArgs:O}))}async createWallet({token:e}){const t=new k({secret:this.getSecret(),token:e}),n=await this.createMoleculeMutation({mutationClass:Gn});return n.fillMolecule(t),await this.executeQuery(n)}async queryActiveSession({bundleHash:e,metaType:t,metaId:n}){const s=this.createQuery(ss);return await this.executeQuery(s,{bundleHash:e,metaType:t,metaId:n})}async activeSession({bundle:e,metaType:t,metaId:n,ipAddress:s,browser:r,osCpu:i,resolution:a,timeZone:c,json:u={}}){const l=this.createQuery(ts);return await this.executeQuery(l,{bundleHash:e,metaType:t,metaId:n,ipAddress:s,browser:r,osCpu:i,resolution:a,timeZone:c,json:JSON.stringify(u)})}async createToken({token:e,amount:t=null,meta:n=null,batchId:s=null,units:r=[]}){const i=M.get(n||{},"fungibility");if(i==="stackable"&&(n.batchId=s||qe({})),["nonfungible","stackable"].includes(i)&&r.length>0){if(M.get(n||{},"decimals")>0)throw new Yn;if(t>0)throw new Se;t=r.length,n.splittable=1,n.decimals=0,n.tokenUnits=JSON.stringify(r)}const a=new k({secret:this.getSecret(),bundle:this.getBundle(),token:e,batchId:s}),c=await this.createMoleculeMutation({mutationClass:qn});return c.fillMolecule({recipientWallet:a,amount:t,meta:n||{}}),await this.executeQuery(c)}async createRule({metaType:e,metaId:t,rule:n,policy:s={}}){const r=await this.createMoleculeMutation({mutationClass:hs,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:Fn,molecule:await this.createMolecule({secret:this.getSecret()})}),i=n||{};return r.fillMolecule({metaType:e,metaId:t,meta:i,policy:s}),await this.executeQuery(r)}async registerPeer({host:e}){const t=await this.createMoleculeMutation({mutationClass:Qn,molecule:await this.createMolecule({secret:this.getSecret()})});return t.fillMolecule({host:e}),await this.executeQuery(t)}async appendRequest({metaType:e,metaId:t,action:n,meta:s={}}){const r=await this.createMoleculeMutation({mutationClass:jn,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:Pn});return s.fillMolecule({type:e,contact:t,code:n}),await this.executeQuery(s)}async linkIdentifier({type:e,contact:t}){const n=this.createQuery(zn);return await this.executeQuery(n,{bundle:this.getBundle(),type:e,content:t})}async createPolicy({metaType:e,metaId:t,policy:n={}}){const s=await this.createMolecule({});s.addPolicyAtom({metaType:e,metaId:t,meta:{},policy:n}),s.addContinuIdAtom(),s.sign({bundle:this.getBundle()}),s.check();const r=await this.createMoleculeMutation({mutationClass:W,molecule:s});return await this.executeQuery(r)}async queryPolicy({metaType:e,metaId:t}){const n=this.createQuery(as);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(vn);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(An);return this.executeQuery(s,{bundleHashes:e}).then(r=>n?r:r.payload())}async queryContinuId({bundle:e}){const t=this.createQuery(_n);return this.executeQuery(t,{bundle:e})}async requestTokens({token:e,to:t,amount:n=null,units:s=[],meta:r=null,batchId:i=null}){let a,c;r=r||{};const u=this.createQuery(rs),l=await this.executeQuery(u,{slug:e}),h=M.get(l.data(),"0.fungibility")==="stackable";if(!h&&i!==null)throw new Ce("Expected Batch ID = null for non-stackable tokens.");if(h&&i===null&&(i=qe({})),s.length>0){if(n>0)throw new Se;n=s.length,r.tokenUnits=JSON.stringify(s)}t?(Object.prototype.toString.call(t)==="[object String]"&&(k.isBundleHash(t)?(a="walletBundle",c=t):t=k.create({secret:t,token:e})),t instanceof k&&(a="wallet",r.position=t.position,r.bundle=t.bundle,c=t.address)):(a="walletBundle",c=this.getBundle());const p=await this.createMoleculeMutation({mutationClass:Bn});return p.fillMolecule({token:e,amount:n,metaType:a,metaId:c,meta:r,batchId:i}),await this.executeQuery(p)}async claimShadowWallet({token:e,batchId:t=null,molecule:n=null}){const s=await this.createMoleculeMutation({mutationClass:Kn,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 Se;n=s.length}if(i===null&&(i=await this.querySourceWallet({token:t,amount:n})),i===null||ie.cmp(i.balance,n)<0)throw new J;const a=k.create({bundle:e,token:t});r!==null?a.batchId=r:a.initBatchId({sourceWallet:i});const c=i.createRemainder(this.getSecret());i.splitUnits(s,c,a);const u=await this.createMolecule({sourceWallet:i,remainderWallet:c}),l=await this.createMoleculeMutation({mutationClass:kt,molecule:u});return l.fillMolecule({recipientWallet:a,amount:n}),await this.executeQuery(l)}async transferTokens({token:e,recipients:t,sourceWallet:n=null}){const s=t.map(l=>{const h=l.units||[];if(h.length>0){if(l.amount>0)throw new Se;return h.length}return l.amount||0}),r=s.reduce((l,h)=>l+h,0);if(n===null&&(n=await this.querySourceWallet({token:e,amount:r})),n===null||ie.cmp(n.balance,r)<0)throw new J;const i=t.map(l=>{const h=k.create({bundle:l.bundleHash,token:e});return l.batchId!==void 0&&l.batchId!==null?h.batchId=l.batchId:h.initBatchId({sourceWallet:n}),h}),a=n.createRemainder(this.getSecret());n.splitUnitsMulti(t.map(l=>l.units||[]),i,a);const c=await this.createMolecule({sourceWallet:n,remainderWallet:a}),u=await this.createMoleculeMutation({mutationClass: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}),a=await this.createMoleculeMutation({mutationClass:ds,molecule:i});return a.fillMolecule({amount:t,tradeRates:n}),await this.executeQuery(a)}async withdrawBufferToken({tokenSlug:e,amount:t,sourceWallet:n=null,signingWallet:s=null}){n===null&&(n=await this.querySourceWallet({token:e,amount:t,type:"buffer"}));const r=n,i=await this.createMolecule({sourceWallet:n,remainderWallet:r}),a=await this.createMoleculeMutation({mutationClass:ps,molecule:i}),c={};return c[this.getBundle()]=t,a.fillMolecule({recipients:c,signingWallet:s}),await this.executeQuery(a)}async burnTokens({token:e,amount:t=null,units:n=[],sourceWallet:s=null}){s===null&&(s=await this.querySourceWallet({token:e,amount:t}));const r=s.createRemainder(this.getSecret());if(n.length>0){if(t>0)throw new Se;t=n.length,s.splitUnits(n,r)}const i=await this.createMolecule({sourceWallet:s,remainderWallet:r});i.burnToken({amount:t}),i.sign({bundle:this.getBundle()}),i.check(s);const a=await this.createMoleculeMutation({mutationClass:W,molecule:i});return this.executeQuery(a)}async replenishToken({token:e,amount:t=null,units:n=[],sourceWallet:s=null}){if(s===null&&(s=(await this.queryBalance({token:e})).payload()),!s)throw new J("Source wallet is missing or invalid.");const r=s.createRemainder(this.getSecret()),i=await this.createMolecule({sourceWallet:s,remainderWallet:r});i.replenishToken({amount:t,units:n}),i.sign({bundle:this.getBundle()}),i.check();const a=await this.createMoleculeMutation({mutationClass:W,molecule:i});return this.executeQuery(a)}async fuseToken({bundleHash:e,tokenSlug:t,newTokenUnit:n,fusedTokenUnitIds:s,sourceWallet:r=null}){if(r===null&&(r=(await this.queryBalance({token:t})).payload()),r===null)throw new J("Source wallet is missing or invalid.");if(!r.tokenUnits||!r.tokenUnits.length)throw new J("Source wallet does not have token units.");if(!s.length)throw new J("Fused token unit list is empty.");const i=[];r.tokenUnits.forEach(h=>{i.push(h.id)}),s.forEach(h=>{if(!i.includes(h))throw new J(`Fused token unit ID = ${h} does not found in the source wallet.`)});const a=k.create({bundle:e,token:t});a.initBatchId({sourceWallet:r});const c=r.createRemainder(this.getSecret());r.splitUnits(s,c),typeof n=="string"&&(n=new fe(n,n,{})),n.metas.fusedTokenUnits=r.getTokenUnitsData(),a.tokenUnits=[n];const u=await this.createMolecule({sourceWallet:r,remainderWallet:c});u.fuseToken(r.tokenUnits,a),u.sign({bundle:this.getBundle()}),u.check();const l=await this.createMoleculeMutation({mutationClass:W,molecule:u});return this.executeQuery(l)}async requestGuestAuthToken({cellSlug:e,encrypt:t}){this.setCellSlug(e);const n=new k({secret:ze(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 a=$e.create({token:i.token(),expiresAt:i.expiresAt(),pubkey:i.pubKey(),encrypt:i.encrypt()},n);this.setAuthToken(a)}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 k({secret:e,token:"AUTH"}),s=await this.createMolecule({secret:e,sourceWallet:n}),r=await this.createMoleculeMutation({mutationClass:En,molecule:s}),i={encrypt:t?"true":"false"};n.pubkey&&(i.walletPubkey=n.pubkey),r.fillMolecule({meta:i});const a=await r.execute({});if(a.success()){const c=$e.create({token:a.token(),expiresAt:a.expiresAt(),pubkey:a.pubKey(),encrypt:a.encrypt()},n);this.setAuthToken(c)}else throw new _t(`KnishIOClient::requestProfileAuthToken() - Authorization attempt rejected by ledger. Reason: ${a.reason()}`);return a}async requestAuthToken({secret:e=null,seed:t=null,cellSlug:n=null,encrypt:s=!1}){if(this.$__serverSdkVersion<3)return this.log("warn","KnishIOClient::authorize() - Server SDK version does not require an authorization..."),null;e===null&&t&&(e=ze(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 Wr extends E{constructor({query:e,json:t}){super({query:e,json:t,dataKey:"data.AccessToken"})}reason(){return"Invalid response from server"}success(){return this.payload()!==null}payload(){return this.data()}payloadKey(e){if(!M.has(this.payload(),e))throw new te(`ResponseAuthorizationGuest::payloadKey() - '${e}' key is not found in the payload!`);return M.get(this.payload(),e)}token(){return this.payloadKey("token")}time(){return this.payloadKey("time")}}class ws{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 dt(o){let e="";const t=o.byteLength;for(let n=0;n<t;n++){const s=o[n];s!==void 0&&(e+=String.fromCharCode(s))}return btoa(e)}function me(o){const e=atob(o),t=e.length,n=new Uint8Array(t);for(let s=0;s<t;s++)n[s]=e.charCodeAt(s);return n}const Dt=new TextEncoder,jt=new TextDecoder,ge="knishio:secret:",Me=1e5;class bs{constructor(e={}){this.providerType="webcrypto-aes-gcm",this.backend=e.backend||new ws,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=Me){if(!await this.isAvailable())throw q.unavailable(this.providerType,"WebCrypto API is not available");const s=Dt.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{re(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 a=await this.deriveKey(s,r,Me),c=Dt.encode(t);try{const u=await globalThis.crypto.subtle.encrypt({name:"AES-GCM",iv:i},a,c),l=dt(new Uint8Array(u)),h={bundleHash:e,label:n.label,createdAt:Date.now(),hardwareBacked:this.hardwareBacked,providerType:this.providerType},p={version:1,ciphertext:l,iv:dt(i),salt:dt(r),algorithm:"AES-GCM",iterations:Me,metadata:h};await this.backend.setItem(`${ge}${e}`,JSON.stringify(p))}catch(u){const l=u instanceof Error?u.message:String(u);throw new q(`Encryption failed: ${l}`)}finally{re(c)}}async retrieveSecret(e,t={}){const n=await this.backend.getItem(`${ge}${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=me(s.salt),a=me(s.iv),c=me(s.ciphertext);try{const u=await this.deriveKey(r,i,s.iterations||Me),l=await globalThis.crypto.subtle.decrypt({name:"AES-GCM",iv:a},u,c),h=new Uint8Array(l);try{return jt.decode(h)}finally{re(h)}}catch(u){const l=u instanceof Error?u.message:String(u);throw q.decryptionFailed(l)}}async deleteSecret(e){const t=`${ge}${e}`;return await this.backend.removeItem(t)!==!1}async hasSecret(e){return await this.backend.getItem(`${ge}${e}`)!==null}async listSecrets(){const t=(await this.backend.keys()).filter(s=>s.startsWith(ge)),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(`${ge}${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 a=me(r.salt),c=me(r.iv),u=me(r.ciphertext);try{const l=await this.deriveKey(i,a,r.iterations||Me),h=await globalThis.crypto.subtle.decrypt({name:"AES-GCM",iv:c},l,u),p=new Uint8Array(h);return await bn(p,async d=>{const w=jt.decode(d);return await t(w)})}catch(l){if(l instanceof q)throw l;const h=l instanceof Error?l.message:String(l);throw q.decryptionFailed(h)}}}function Ur(o={}){return o.type==="memory"?new Ge:typeof globalThis.crypto<"u"&&typeof globalThis.crypto.subtle<"u"?new bs({backend:o.backend,defaultPassphrase:o.defaultPassphrase,hardwareBacked:o.hardwareBacked}):new Ge}exports.Atom=g;exports.AtomIndexException=be;exports.AtomMeta=P;exports.AtomsMissingException=se;exports.AuthToken=$e;exports.AuthorizationRejectedException=_t;exports.BalanceInsufficientException=ce;exports.BatchIdException=Ce;exports.CheckMolecule=_e;exports.CodeException=ee;exports.Decimal=ie;exports.Dot=M;exports.InvalidResponseException=te;exports.KnishIOClient=Br;exports.MemorySecretStorageProvider=Ge;exports.MemoryStorageBackend=ws;exports.Meta=de;exports.MetaMissingException=U;exports.MolecularHashMismatchException=yn;exports.MolecularHashMissingException=mn;exports.Molecule=V;exports.Mutation=He;exports.MutationActiveSession=ts;exports.MutationAppendRequest=jn;exports.MutationClaimShadowWallet=Kn;exports.MutationCreateIdentifier=Pn;exports.MutationCreateMeta=Fn;exports.MutationCreateRule=hs;exports.MutationCreateToken=qn;exports.MutationCreateWallet=Gn;exports.MutationDepositBufferToken=ds;exports.MutationLinkIdentifier=zn;exports.MutationPeering=Qn;exports.MutationProposeMolecule=W;exports.MutationRequestAuthorization=En;exports.MutationRequestAuthorizationGuest=Zn;exports.MutationRequestTokens=Bn;exports.MutationTransferTokens=kt;exports.MutationWithdrawBufferToken=ps;exports.NegativeAmountException=gt;exports.PolicyInvalidException=ft;exports.PolicyMeta=Ze;exports.Query=N;exports.QueryActiveSession=ss;exports.QueryAtom=$t;exports.QueryBalance=In;exports.QueryBatch=Ae;exports.QueryBatchHistory=Tn;exports.QueryContinuId=_n;exports.QueryEmbeddingStatus=xt;exports.QueryMetaType=bt;exports.QueryMetaTypeViaAtom=At;exports.QueryMetaTypeViaMolecule=vt;exports.QueryPolicy=as;exports.QueryToken=rs;exports.QueryWalletBundle=An;exports.QueryWalletList=vn;exports.Response=E;exports.ResponseActiveSession=es;exports.ResponseAppendRequest=Dn;exports.ResponseAtom=is;exports.ResponseAuthorizationGuest=Wr;exports.ResponseBalance=xn;exports.ResponseClaimShadowWallet=Hn;exports.ResponseContinuId=Sn;exports.ResponseCreateIdentifier=Un;exports.ResponseCreateMeta=Nn;exports.ResponseCreateRule=us;exports.ResponseCreateToken=Rn;exports.ResponseCreateWallet=Jn;exports.ResponseEmbeddingStatus=cs;exports.ResponseLinkIdentifier=Vn;exports.ResponseMetaType=Mn;exports.ResponseMetaTypeViaAtom=ls;exports.ResponseMetaTypeViaMolecule=nt;exports.ResponsePeering=Ln;exports.ResponsePolicy=os;exports.ResponseProposeMolecule=D;exports.ResponseQueryActiveSession=ns;exports.ResponseRequestAuthorization=Cn;exports.ResponseRequestAuthorizationGuest=Xn;exports.ResponseRequestTokens=On;exports.ResponseTransferTokens=Wn;exports.ResponseWalletBundle=$n;exports.ResponseWalletList=Pe;exports.SecretStorageException=q;exports.SignatureMalformedException=Mt;exports.SignatureMismatchException=gn;exports.StackableUnitAmountException=Se;exports.StackableUnitDecimalsException=Yn;exports.TokenUnit=fe;exports.TransferBalanceException=J;exports.TransferMalformedException=ke;exports.TransferMismatchedException=yt;exports.TransferRemainderException=mt;exports.TransferToSelfException=wn;exports.TransferUnbalancedException=Te;exports.UnauthenticatedException=We;exports.Wallet=k;exports.WalletShadowException=St;exports.WebCryptoSecretStorageProvider=bs;exports.WrongTokenTypeException=ne;exports.base64ToHex=Xt;exports.bufferToHexString=pt;exports.charsetBaseConvert=zt;exports.chunkArray=_s;exports.chunkSubstr=Re;exports.constantTimeCompare=cr;exports.createDefaultSecretStorage=Ur;exports.deepCloning=Yt;exports.diff=en;exports.generateBatchId=qe;exports.generateBundleHash=pe;exports.generateSecret=ze;exports.hexStringToBuffer=Jt;exports.hexToBase64=Gt;exports.intersect=we;exports.isHex=Qe;exports.isNumeric=Zt;exports.randomString=Xe;exports.shake256=je;exports.withSecureBytes=bn;exports.withSecureString=kn;exports.zeroizeBytes=re;
512
- //# sourceMappingURL=client.cjs.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 Nr({query:this,json:e})}},Fr=class extends Y{},Ir=class extends X{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 Fr({query:this,json:e})}},Lr=class extends X{fillMolecule({amount:e,tradeRates:t}){this.$__molecule.initDepositBuffer({amount:e,tradeRates:t}),this.$__molecule.sign({}),this.$__molecule.check(this.$__molecule.sourceWallet)}},Rr=class extends X{fillMolecule({recipients:e,signingWallet:t}){this.$__molecule.initWithdrawBuffer({recipients:e,signingWallet:t}),this.$__molecule.sign({}),this.$__molecule.check(this.$__molecule.sourceWallet)}},zr=2592e5,Br=`thumbmark`,Vr=`https://api.thumbmarkjs.com`,Hr={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=>`${Br}_${e}`},Ur={...Hr},Wr={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`]}]},Gr=typeof window<`u`?window.OfflineAudioContext||window.webkitOfflineAudioContext:null;function Kr(e){let t=0;for(let n=0;n<e.length;++n)t+=Math.abs(e[n]);return t}function qr(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(Jr(n))}let i=new Uint8ClampedArray(r);return new ImageData(i,t,n)}function Jr(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 Yr(e){return e^=e>>>16,e=Math.imul(e,2246822507),e^=e>>>13,e=Math.imul(e,3266489909),(e^=e>>>16)>>>0}var Z=new Uint32Array([597399067,2869860233,951274213,2716044179]);function Q(e,t){return e<<t|e>>>32-t}function $(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],Z[0]),n[0]=Q(n[0],15),n[0]=Math.imul(n[0],Z[1]),t[0]^=n[0],t[0]=Q(t[0],19),t[0]+=t[1],t[0]=Math.imul(t[0],5)+1444728091,n[1]=Math.imul(n[1],Z[1]),n[1]=Q(n[1],16),n[1]=Math.imul(n[1],Z[2]),t[1]^=n[1],t[1]=Q(t[1],17),t[1]+=t[2],t[1]=Math.imul(t[1],5)+197830471,n[2]=Math.imul(n[2],Z[2]),n[2]=Q(n[2],17),n[2]=Math.imul(n[2],Z[3]),t[2]^=n[2],t[2]=Q(t[2],15),t[2]+=t[3],t[2]=Math.imul(t[2],5)+2530024501,n[3]=Math.imul(n[3],Z[3]),n[3]=Q(n[3],18),n[3]=Math.imul(n[3],Z[0]),t[3]^=n[3],t[3]=Q(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],Z[3]),i[3]=Q(i[3],18),i[3]=Math.imul(i[3],Z[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],Z[2]),i[2]=Q(i[2],17),i[2]=Math.imul(i[2],Z[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],Z[1]),i[1]=Q(i[1],16),i[1]=Math.imul(i[1],Z[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],Z[0]),i[0]=Q(i[0],15),i[0]=Math.imul(i[0],Z[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]=Yr(t[0]),t[1]=Yr(t[1]),t[2]=Yr(t[2]),t[3]=Yr(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 Xr=280;function Zr(e,t){return new Promise((n=>setTimeout(n,e,t)))}var Qr=`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(`.`),$r=[`monospace`,`sans-serif`,`serif`];function ei(e,t){return e.font=`72px ${t}`,e.measureText(`WwMmLli0Oo`).width}function ti(){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 ni(){let e=new Float32Array(1),t=new Uint8Array(e.buffer);return e[0]=1/0,e[0]-=e[0],t[3]}var ri=(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 ii(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 ai=`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(`.`),oi=new Map;function si(){if(typeof navigator>`u`)return{name:`unknown`,version:`unknown`};let e=!!navigator.brave,t=(e?`B|`:`N|`)+navigator.userAgent,n=oi.get(t);if(n)return n;let r=[{name:`Brave`,detect:()=>e}],i;for(let e of r)if(e.detect()){let n=ci(navigator.userAgent);return i={name:e.name,version:n.version},oi.set(t,i),i}return i=ci(navigator.userAgent),oi.set(t,i),i}function ci(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 li(){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 ui(){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 di(){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 fi=si().name===`SamsungBrowser`?3:1,pi=si().name!==`Brave`,mi=137,hi=(()=>{let e=new Float32Array(548),t=2*Math.PI/mi;for(let n=0;n<mi;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})(),gi=null;function _i(){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(),gi=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,hi,t.STATIC_DRAW),t.bindBuffer(t.ARRAY_BUFFER,null),{canvas:e,gl:t,program:i,buffer:a}):null}catch{return null}}function vi(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 yi={audio:async function(){return Gr?async function(){return new Promise(((e,t)=>{try{let t=new Gr(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:Kr(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=Xr,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:$(qr(t,Xr,20).data.toString()).toString()})}))},fonts:async function(e){return new Promise((e=>{try{(async function(e){for(;!document.body;)await Zr(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=$r.map((e=>ei(n,e))),i={};Qr.forEach((e=>{let t=ei(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:ti(),architecture:ni(),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:ri(Math.asin,-1,1,97),cos:ri(Math.cos,0,Math.PI,97),largeCos:Math.cos(0x56bc75e2d63100000),largeSin:Math.sin(0x56bc75e2d63100000),largeTan:Math.tan(0x56bc75e2d63100000),sin:ri(Math.sin,-Math.PI,Math.PI,97),tan:ri(Math.tan,0,2*Math.PI,97)})}))},permissions:async function(e){let t=e?.permissions_to_check||ai;return ii(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:ui()};li()&&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=si();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:li(),applePayVersion:di(),cookieEnabled:window.navigator.cookieEnabled})}))},webgl:async function(){let e=pi?(gi||=_i(),gi):_i();if(!e)return{webgl:`unsupported`};try{return{commonPixelsHash:$(qr(Array.from({length:fi},(()=>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 gi=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:$(vi(s))},video:{count:c.length,hash:$(vi(c))},extensionsHash:$(vi(i))};r.close();let u={supported:!0,...l,candidateType:`host`};e({details:u,hash:$(vi(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:$(vi(t))};e({details:n,hash:$(vi(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}`})}}))}},bi={},xi={timeout:`true`};function Si(e,t){var n;let r=si();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=Wr[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 Ci(e,t){let n=Si(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 wi=`https://experimental.thumbmarkjs.com/experimental.min.js`,Ti=131072;function Ei(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 Di(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function Oi(e){return e instanceof Error?e.message:void 0}async function ki(){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(wi,{method:`GET`});if(!t.ok)return Ei(`http`,`HTTP ${t.status}`);e=await t.text()}catch(e){return Ei(`fetch`,Oi(e))}if(!e)return Ei(`empty`);if(e.length>Ti)return Ei(`oversized`,`${e.length} chars`);try{let n=eval;t=await Promise.resolve(n(e))}catch(e){return Ei(function(e){return e instanceof SyntaxError?`syntax`:e instanceof EvalError?`eval_blocked`:`threw`}(e),Oi(e))}return function(e){return!!Di(e)&&!(typeof e.schema!=`number`||e.schema<1)&&typeof e.payload_id==`string`&&Di(e.signals)}(t)?{...t,errors:Array.isArray(t.errors)?t.errors:[]}:Ei(`malformed`)}(),2e3)??Ei(`timeout`,`exceeded 2000ms`)}catch(e){return Ei(`threw`,Oi(e))}}var Ai=`visitor_id`;function ji(e){return e.storage_property_name?e.storage_property_name:e.property_name_factory(Ai)}var Mi=`${Br}_${Ai}`;function Ni(e,t){try{localStorage.setItem(ji(t),e)}catch{}}var Pi=`cache`;function Fi(e){try{let t=localStorage.getItem(e.property_name_factory(Pi));return JSON.parse(t)||{}}catch{}return{}}function Ii(e){return e.cache_lifetime_in_ms>zr?Date.now()+zr:Date.now()+e.cache_lifetime_in_ms}var Li=class extends Error{constructor(e){super(`HTTP error! status: ${e}`),this.status=e}},Ri=null,zi=null;async function Bi(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 Li(a.status);let o=await a.json();return o.visitorId&&o.visitorId!==r&&Ni(o.visitorId,n),zi=o,function(e,t){e.cache_api_call&&e.cache_lifetime_in_ms&&(function(e,t){let n={...Fi(e),...t};try{localStorage.setItem(e.property_name_factory(Pi),JSON.stringify(n))}catch{}})(e,{apiResponseExpiry:Ii(e),apiResponse:t})}(n,o),o}var Vi=(e,t)=>{if(e.cache_api_call){if(zi)return Promise.resolve(zi);let t=function(e){let t=Fi(e);if(t&&t.apiResponse&&t.apiResponseExpiry&&Date.now()<=t.apiResponseExpiry)return t.apiResponse}(e);if(t)return Promise.resolve(t);if(Ri)return Ri}let n=e.api_endpoint||Vr,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=ji(e),n=localStorage.getItem(t);return n||t===Mi||(n=localStorage.getItem(Mi),n&&Ni(n,e)),n}catch{return null}}(e),{api_key:a,...o}=e,s={components:t,options:o,clientHash:$(vi(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 Bi(e,t,n,r)}catch(e){if(e instanceof Li||i===2)throw e}}throw Error(`Unreachable`)}(r,s,e,i).finally((()=>{Ri=null})),u=new Promise((t=>{setTimeout((()=>{t(Fi(e)?.apiResponse||{info:{timed_out:!0},...i&&{visitorId:i}})}),c)}));return Ri=Promise.race([l,u]),Ri};async function Hi(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={...Hr,...e},i=[],a=r.logging&&!sessionStorage.getItem(`_tmjs_l`)&&Math.random()<1e-4,{elapsed:o,resolvedComponents:s,errors:c,pipelineTimings:l}=await Ui({...yi,...bi,...t},r);i.push(...c);let u=r.api_key||r.simple_request?Vi(r,s):null,d=null;if(u)try{d=await u}catch(e){if(e instanceof Li&&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 Li?`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=Ci(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=vi(h);v=performance.now()-e;let n=performance.now();_=$(t),y=performance.now()-n}a&&async function(e,t,n,r=[]){let i=`${Vr}/log`;sessionStorage.setItem(`_tmjs_l`,`1`);let a={thumbmark:e,components:t,experimental:await ki(),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 Ui(e,t){let n={...Hr,...t},r=Si(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,xi),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:Ci(m,n),errors:h,pipelineTimings:{"_pipeline.dispatch":l,"_pipeline.resolve":f,"_pipeline.filter":performance.now()-g,...o}}}async function Wi(){return(await Hi(Ur)).components}async function Gi(e){try{let t=await Hi(Ur);return e?{hash:t.thumbmark.toString(),data:t.components}:t.thumbmark.toString()}catch(e){throw e}}var Ki=`query ( $Hash: String! ) { CipherHash ( Hash: $Hash ) { hash } }`;function qi(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 Ji=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:n}){let r=[l.cacheExchange,l.fetchExchange];if(t&&t.socketUri){let e=(0,u.createClient)({url:t.socketUri,connectionParams:()=>({authToken:this.$__authToken})});r.push((0,l.subscriptionExchange)({forwardSubscription:t=>({subscribe:n=>({unsubscribe:e.subscribe(t,n)})})}))}return(0,l.createClient)({url:e,exchanges:r,preferGetMethod:!1,...n?{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}=qi(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:Ki,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:i}=e,a=(0,d.pipe)(this.$__client.subscription(n,r),(0,d.map)(e=>{t(this.formatResponse(e))}),(0,d.subscribe)(()=>{}));return this.$__subscriptionManager.set(i,a),{unsubscribe:()=>this.unsubscribe(i)}}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})}},Yi=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 Ji({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 L(`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 wn;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 Dn(`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 Dn(`KnishIOClient::getBundle() - Unable to find a stored bundle! Have you set a secret?`);return this.$__bundle}getFingerprint(){return Gi()}getFingerprintData(){return Wi()}async getSourceWallet(){let e=(await this.queryContinuId({bundle:this.getBundle()})).payload();return e?e.key=P.generateKey({secret:this.getSecret(),token:e.token,position:e.position}):e=new P({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||P.create({secret:e,bundle:t,token:`USER`,batchId:n.batchId,characters:n.characters,mlKemParameterSet:this.getMlKemParameterSet()}),new dn({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 X))throw new L(`${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(Fn);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||En.cmp(r.balance,t)<0)throw new F;if(!r.position||!r.address)throw new F(`Source wallet can not be a shadow wallet.`);return r}async subscribeCreateMolecule({bundle:e,closure:t}){return await this.createSubscribe(hr).execute({variables:{bundle:e||this.getBundle()},closure:t})}subscribeWalletStatus({bundle:e,token:t,closure:n}){if(!t)throw new L(`${this.constructor.name}::subscribeWalletStatus() - Token parameter is required!`);return this.createSubscribe(gr).execute({variables:{bundle:e||this.getBundle(),token:t},closure:n})}subscribeActiveWallet({bundle:e,closure:t}){return this.createSubscribe(_r).execute({variables:{bundle:e||this.getBundle()},closure:t})}subscribeActiveSession({metaType:e,metaId:t,closure:n}){return this.createSubscribe(vr).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(Mr),_=Mr.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(Ar),_=Ar.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(Ln),_=Ln.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(Pr),i=Pr.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(Rn);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(zn);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(Er);return await this.executeQuery(ie,Er.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 P({secret:this.getSecret(),token:e,mlKemParameterSet:this.getMlKemParameterSet()}),n=await this.createMoleculeMutation({mutationClass:cr});return n.fillMolecule(t),await this.executeQuery(n)}async queryActiveSession({bundleHash:e,metaType:t,metaId:n}){let r=this.createQuery(Sr);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(br);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=R.get(n||{},`fungibility`);if(a===`stackable`&&(n.batchId=r||ue({})),[`nonfungible`,`stackable`].includes(a)&&i.length>0){if(R.get(n||{},`decimals`)>0)throw new fr;if(t>0)throw new pr;t=i.length,n.splittable=1,n.decimals=0,n.tokenUnits=JSON.stringify(i)}let o=new P({secret:this.getSecret(),bundle:this.getBundle(),token:e,batchId:r,mlKemParameterSet:this.getMlKemParameterSet()}),s=await this.createMoleculeMutation({mutationClass:Wn});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:Ir,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:er,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:nr,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:ir,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:Xn});return r.fillMolecule({type:e,contact:t,code:n}),await this.executeQuery(r)}async linkIdentifier({type:e,contact:t}){let n=this.createQuery(or);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:X,molecule:r});return await this.executeQuery(i)}async queryPolicy({metaType:e,metaId:t}){let n=this.createQuery(Or);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(Nn);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(jn);return this.executeQuery(r,{bundleHashes:e}).then(e=>n?e:e.payload())}async queryContinuId({bundle:e}){let t=this.createQuery(kn);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(Cr),l=await this.executeQuery(c,{slug:e}),u=R.get(l.data(),`0.fungibility`)===`stackable`;if(!u&&a!==null)throw new tn(`Expected Batch ID = null for non-stackable tokens.`);if(u&&a===null&&(a=ue({})),r.length>0){if(n>0)throw new pr;n=r.length,i.tokenUnits=JSON.stringify(r)}t?(Object.prototype.toString.call(t)===`[object String]`&&(P.isBundleHash(t)?(o=`walletBundle`,s=t):t=P.create({secret:t,token:e,mlKemParameterSet:this.getMlKemParameterSet()})),t instanceof P&&(o=`wallet`,i.position=t.position,i.bundle=t.bundle,s=t.address)):(o=`walletBundle`,s=this.getBundle());let d=await this.createMoleculeMutation({mutationClass:Kn});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:Qn,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 dr;t.forEach(e=>{if(!e.isShadow())throw new dr});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 pr;n=r.length}if(a===null&&(a=await this.querySourceWallet({token:t,amount:n})),a===null||En.cmp(a.balance,n)<0)throw new F;let o=P.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:Jn,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 pr;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||En.cmp(n.balance,i)<0)throw new F;let a=t.map(t=>{let r=P.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:Jn,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:Lr,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:Rr,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 pr;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:X,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 F(`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:X,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 F(`Source wallet is missing or invalid.`);if(!i.tokenUnits||!i.tokenUnits.length)throw new F(`Source wallet does not have token units.`);if(!r.length)throw new F(`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 F(`Fused token unit ID = ${e} does not found in the source wallet.`)});let o=P.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 de(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:X,molecule:c});return this.executeQuery(l)}async requestGuestAuthToken({cellSlug:e,encrypt:t}){this.setCellSlug(e);let n=new P({secret:se(await this.getFingerprint()),token:`AUTH`,mlKemParameterSet:this.getMlKemParameterSet()}),r=await this.createQuery(ur),i={cellSlug:e,pubkey:n.pubkey,encrypt:t},a=await r.execute({variables:i});if(a.success()){let e=fn.create({token:a.token(),expiresAt:a.expiresAt(),pubkey:a.pubKey(),encrypt:a.encrypt()},n);this.setAuthToken(e)}else throw new wr(`KnishIOClient::requestGuestAuthToken() - Authorization attempt rejected by ledger. Reason: ${a.reason()}`);return a}async requestProfileAuthToken({secret:e,encrypt:t}){this.setSecret(e);let n=new P({secret:e,token:`AUTH`,mlKemParameterSet:this.getMlKemParameterSet()}),r=await this.createMolecule({secret:e,sourceWallet:n}),i=await this.createMoleculeMutation({mutationClass:Hn,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=fn.create({token:o.token(),expiresAt:o.expiresAt(),pubkey:o.pubKey(),encrypt:o.encrypt()},n);this.setAuthToken(e)}else throw new wr(`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)}}},Xi=class extends q{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(!R.has(this.payload(),e))throw new K(`ResponseAuthorizationGuest::payloadKey() - '${e}' key is not found in the payload!`);return R.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())}},Qi=new TextDecoder,$i=yn,ea=class{constructor(e={}){this.providerType=`webcrypto-aes-gcm`,this.backend=e.backend||new Zi,this.defaultPassphrase=e.defaultPassphrase}isHardwareBacked(){return!1}async isAvailable(){return globalThis.crypto!==void 0&&globalThis.crypto.subtle!==void 0}async deriveKey(e,t,n=vn){if(!await this.isAvailable())throw z.unavailable(this.providerType,`WebCrypto API is not available`);return await Cn(e,t,n)}async storeSecret(e,t,n={}){if(!e)throw new z(`Bundle hash cannot be empty`);if(!t)throw new z(`Secret cannot be empty`);let r=n.passphrase||this.defaultPassphrase;if(!r)throw new z(`Passphrase required for envelope encryption`);if(!await this.isAvailable())throw z.unavailable(this.providerType,`WebCrypto API is not available`);try{let i=await W(t,r,{bundleHash:e,label:n.label,createdAt:Date.now(),hardwareBacked:!1,providerType:this.providerType});if(await this.backend.setItem(`${$i}${e}`,JSON.stringify(i)),n.recoveryPassphrase){let r={bundleHash:e,label:n.label,createdAt:Date.now(),hardwareBacked:!1,providerType:`webcrypto-aes-gcm`},i=await W(t,n.recoveryPassphrase,r);await this.backend.setItem(`${V}${e}`,JSON.stringify(i))}}catch(e){throw e instanceof z?e:new z(`Encryption failed: ${e instanceof Error?e.message:String(e)}`)}}async retrieveSecret(e,t={}){let n=await this.backend.getItem(`${$i}${e}`);if(!n)return null;let r;try{r=JSON.parse(n)}catch{throw z.decryptionFailed(`Corrupted payload format`)}let i=t.passphrase||this.defaultPassphrase;if(!i)throw new z(`Passphrase required for secret decryption`);if(!await this.isAvailable())throw z.unavailable(this.providerType,`WebCrypto API is not available`);try{let e=await G(r,i);try{return Qi.decode(e)}finally{B(e)}}catch(e){if(e instanceof z)throw e;let t=e instanceof Error?e.message:String(e);throw z.decryptionFailed(t)}}async deleteSecret(e){let t=`${$i}${e}`,n=`${V}${e}`,r=await this.backend.removeItem(t);return await this.backend.removeItem(n),r!==!1}async hasSecret(e){return await this.backend.getItem(`${$i}${e}`)!==null}async listSecrets(){let e=(await this.backend.keys()).filter(e=>e.startsWith($i)&&!e.startsWith(`knishio:recovery:`)),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(`${$i}${e}`);if(!r)throw z.notFound(e);let i;try{i=JSON.parse(r)}catch{throw z.decryptionFailed(`Corrupted payload format`)}let a=n.passphrase||this.defaultPassphrase;if(!a)throw new z(`Passphrase required for secret decryption`);if(!await this.isAvailable())throw z.unavailable(this.providerType,`WebCrypto API is not available`);try{return await mn(await G(i,a),async e=>await t(Qi.decode(e)))}catch(e){if(e instanceof z)throw e;let t=e instanceof Error?e.message:String(e);throw z.decryptionFailed(t)}}async recoverSecret(e,t,n={}){if(!e)throw new z(`Bundle hash cannot be empty`);if(!t)throw new z(`Recovery passphrase cannot be empty`);let r=await this.backend.getItem(`${V}${e}`);if(!r)throw z.notFound(e);let i;try{i=JSON.parse(r)}catch{throw z.decryptionFailed(`Corrupted recovery payload format`)}let a;try{a=await G(i,t)}catch(e){if(e instanceof z)throw e;let t=e instanceof Error?e.message:String(e);throw z.decryptionFailed(t)}let o;try{o=Qi.decode(a)}finally{B(a)}let s=n.passphrase||this.defaultPassphrase||t;await this.storeSecret(e,o,{...n,passphrase:s,recoveryPassphrase:t})}},ta=class{constructor(e){if(!e)throw new z(`Storage file path cannot be empty`);this.filePath=e,this.store=new Map,this.loaded=!1}async getFs(){try{return{fs:await import(`node:fs/promises`),path:await import(`node:path`)}}catch{throw z.unavailable(`file-storage`,`FileStorageBackend is only supported in Node.js environments with node:fs access`)}}async ensureLoaded(){if(this.loaded)return this.store;let{fs:e}=await this.getFs();try{let t=await e.readFile(this.filePath,`utf8`),n;try{n=JSON.parse(t)}catch{throw z.decryptionFailed(`Corrupted storage file format`)}n&&typeof n==`object`&&(this.store=new Map(Object.entries(n).map(([e,t])=>[e,String(t)])))}catch(e){if(e instanceof z)throw e;if(e?.code!==`ENOENT`)throw new z(`Failed to read storage file: ${e instanceof Error?e.message:String(e)}`);this.store=new Map}return this.loaded=!0,this.store}async persist(){let{fs:e,path:t}=await this.getFs(),n=t.dirname(this.filePath);n&&n!==`.`&&await e.mkdir(n,{recursive:!0});let r=`${this.filePath}.tmp.${Date.now()}_${Math.random().toString(36).slice(2)}`,i=JSON.stringify(Object.fromEntries(this.store),null,2);try{if(await e.writeFile(r,i,{mode:384,encoding:`utf8`}),typeof process<`u`&&process.platform!==`win32`)try{await e.chmod(r,384)}catch{}await e.rename(r,this.filePath)}catch(t){try{await e.unlink(r)}catch{}throw new z(`Failed to persist storage file: ${t instanceof Error?t.message:String(t)}`)}}async getItem(e){return await this.ensureLoaded(),this.store.get(e)??null}async setItem(e,t){await this.ensureLoaded(),this.store.set(e,t),await this.persist()}async removeItem(e){await this.ensureLoaded();let t=this.store.delete(e);return t&&await this.persist(),t}async keys(){return await this.ensureLoaded(),Array.from(this.store.keys())}},na=class{constructor(e,t=`knishio:`){if(e)this.storage=e;else if(typeof globalThis<`u`&&globalThis.localStorage)this.storage=globalThis.localStorage;else throw z.unavailable(`web-storage`,`WebStorageBackend requires a Storage object or global localStorage`);this.prefix=t}getItem(e){return this.storage.getItem(e)}setItem(e,t){this.storage.setItem(e,t)}removeItem(e){let t=this.storage.getItem(e)!==null;return this.storage.removeItem(e),t}keys(){let e=[],t=this.storage.length;for(let n=0;n<t;n++){let t=this.storage.key(n);t!==null&&(!this.prefix||t.startsWith(this.prefix))&&e.push(t)}return e}},ra=`knishio:secret-storage:webauthn-prf:v1`,ia=`knishio:secret-storage:kek:v1`,aa=yn,oa=12,sa=new TextEncoder,ca=new TextDecoder;function la(e){return H(e).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/,``)}function ua(e){let t=e.replace(/-/g,`+`).replace(/_/g,`/`);for(;t.length%4!=0;)t+=`=`;return U(t)}function da(e){return e instanceof Uint8Array?e:ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength):new Uint8Array(e)}async function fa(){let e=await globalThis.crypto.subtle.digest(`SHA-256`,sa.encode(ra));return new Uint8Array(e)}async function pa(e,t){let n=await globalThis.crypto.subtle.importKey(`raw`,e,`HKDF`,!1,[`deriveKey`]);return await globalThis.crypto.subtle.deriveKey({name:`HKDF`,hash:`SHA-256`,salt:t,info:sa.encode(ia)},n,{name:`AES-GCM`,length:256},!1,[`encrypt`,`decrypt`])}var ma=class{constructor(e){this.providerType=`webauthn-prf`,this.backend=e.backend,this.rp=e.rp,this.user=e.user,this.credentialsContainer=e.credentials,this.alias=e.alias||`default`,this.cachedPassphrase=void 0}get credentials(){if(this.credentialsContainer)return this.credentialsContainer;if(globalThis.navigator!==void 0&&globalThis.navigator.credentials)return globalThis.navigator.credentials;throw z.unavailable(this.providerType,`WebAuthn credentials container is not available`)}get recordKey(){return`knishio:webauthn-prf:${this.alias}`}isHardwareBacked(){return!1}async isAvailable(){let e=globalThis.crypto!==void 0&&globalThis.crypto.subtle!==void 0,t=!!(this.credentialsContainer||globalThis.navigator!==void 0&&globalThis.navigator.credentials&&globalThis.PublicKeyCredential!==void 0);return e&&t}async enroll(){if(await this.backend.getItem(this.recordKey))return;if(!await this.isAvailable())throw z.unavailable(this.providerType,`WebAuthn PRF is not available`);let e=new Uint8Array(32);globalThis.crypto.getRandomValues(e);let t=await this.credentials.create({publicKey:{rp:this.rp,user:{id:this.user.id,name:this.user.name,displayName:this.user.displayName},challenge:e,pubKeyCredParams:[{type:`public-key`,alg:-7},{type:`public-key`,alg:-257}],authenticatorSelection:{residentKey:`required`,userVerification:`required`},extensions:{prf:{}}}});if(!t)throw z.unavailable(this.providerType,`Authenticator creation returned null`);if((t.getClientExtensionResults?.())?.prf?.enabled!==!0)throw z.unavailable(this.providerType,`authenticator does not support the PRF extension`);let n=new Uint8Array(t.rawId),r=await fa(),i=new Uint8Array(32);globalThis.crypto.getRandomValues(i);let a;try{a=await this.credentials.get({publicKey:{challenge:i,rpId:this.rp.id,allowCredentials:[{type:`public-key`,id:n}],userVerification:`required`,extensions:{prf:{eval:{first:r}}}}})}catch(e){throw e?.name===`NotAllowedError`?z.unavailable(this.providerType,`authenticator refused or credential missing`):e}if(!a)throw z.unavailable(this.providerType,`authenticator refused or credential missing`);let o=(a?.getClientExtensionResults?.())?.prf?.results?.first;if(!o)throw z.unavailable(this.providerType,`authenticator returned no PRF result`);let s=await pa(da(o),r),c=new Uint8Array(32);globalThis.crypto.getRandomValues(c);let l=H(c),u=new Uint8Array(oa);globalThis.crypto.getRandomValues(u);let d=sa.encode(l);try{let e=await globalThis.crypto.subtle.encrypt({name:`AES-GCM`,iv:u},s,d),t={version:1,credentialId:la(n),iv:H(u),ciphertext:H(new Uint8Array(e))};await this.backend.setItem(this.recordKey,JSON.stringify(t)),this.cachedPassphrase=l}finally{B(d),B(c)}}async unlock(){if(this.cachedPassphrase)return this.cachedPassphrase;let e=await this.backend.getItem(this.recordKey);if(!e)throw z.unavailable(this.providerType,`no enrolled credential; call enroll() first`);let t;try{t=JSON.parse(e)}catch{throw z.decryptionFailed(`Corrupted PRF record format`)}let n=ua(t.credentialId),r=await fa(),i=new Uint8Array(32);globalThis.crypto.getRandomValues(i);let a;try{a=await this.credentials.get({publicKey:{challenge:i,rpId:this.rp.id,allowCredentials:[{type:`public-key`,id:n}],userVerification:`required`,extensions:{prf:{eval:{first:r}}}}})}catch(e){throw e?.name===`NotAllowedError`?z.unavailable(this.providerType,`authenticator refused or credential missing`):e}if(!a)throw z.unavailable(this.providerType,`authenticator refused or credential missing`);let o=(a?.getClientExtensionResults?.())?.prf?.results?.first;if(!o)throw z.unavailable(this.providerType,`authenticator returned no PRF result`);let s=await pa(da(o),r),c=U(t.iv),l=U(t.ciphertext);try{let e=await globalThis.crypto.subtle.decrypt({name:`AES-GCM`,iv:c},s,l),t=new Uint8Array(e);try{return this.cachedPassphrase=ca.decode(t),this.cachedPassphrase}finally{B(t)}}catch{throw z.decryptionFailed(`wrapped device passphrase failed authentication under the enrolled credential`)}}lock(){this.cachedPassphrase=void 0}async unenroll(){this.lock(),await this.backend.removeItem(this.recordKey)}async storeSecret(e,t,n={}){if(!e)throw new z(`Bundle hash cannot be empty`);if(!t)throw new z(`Secret cannot be empty`);if(n.passphrase)throw new z(`WebAuthnPrfSecretStorageProvider derives its passphrase from the authenticator; options.passphrase is not accepted`);if(!n.recoveryPassphrase&&!n.allowUnrecoverable)throw z.validationError(`Recovery passphrase required for non-exportable hardware key unless allowUnrecoverable is true`);let r=await W(t,await this.unlock(),{bundleHash:e,label:n.label,createdAt:Date.now(),hardwareBacked:!1,providerType:this.providerType});if(await this.backend.setItem(`${aa}${e}`,JSON.stringify(r)),n.recoveryPassphrase){let r={bundleHash:e,label:n.label,createdAt:Date.now(),hardwareBacked:!1,providerType:`webcrypto-aes-gcm`},i=await W(t,n.recoveryPassphrase,r);await this.backend.setItem(`${V}${e}`,JSON.stringify(i))}}async retrieveSecret(e,t={}){if(t.passphrase)throw new z(`WebAuthnPrfSecretStorageProvider derives its passphrase from the authenticator; options.passphrase is not accepted`);let n=await this.backend.getItem(`${aa}${e}`);if(!n)return null;let r;try{r=JSON.parse(n)}catch{throw z.decryptionFailed(`Corrupted payload format`)}let i=await this.unlock();try{let e=await G(r,i);try{return ca.decode(e)}finally{B(e)}}catch(e){if(e instanceof z)throw e;let t=e instanceof Error?e.message:String(e);throw z.decryptionFailed(t)}}async withSecret(e,t,n={}){if(n.passphrase)throw new z(`WebAuthnPrfSecretStorageProvider derives its passphrase from the authenticator; options.passphrase is not accepted`);let r=await this.backend.getItem(`${aa}${e}`);if(!r)throw z.notFound(e);let i;try{i=JSON.parse(r)}catch{throw z.decryptionFailed(`Corrupted payload format`)}let a=await this.unlock();try{return await mn(await G(i,a),async e=>await t(ca.decode(e)))}catch(e){if(e instanceof z)throw e;let t=e instanceof Error?e.message:String(e);throw z.decryptionFailed(t)}}async deleteSecret(e){let t=`${aa}${e}`,n=`${V}${e}`,r=await this.backend.removeItem(t);return await this.backend.removeItem(n),r!==!1}async hasSecret(e){return await this.backend.getItem(`${aa}${e}`)!==null}async listSecrets(){let e=(await this.backend.keys()).filter(e=>e.startsWith(aa)&&!e.startsWith(`knishio:recovery:`)),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 recoverSecret(e,t,n={}){if(!e)throw new z(`Bundle hash cannot be empty`);if(!t)throw new z(`Recovery passphrase cannot be empty`);let r=await this.backend.getItem(`${V}${e}`);if(!r)throw z.notFound(e);let i;try{i=JSON.parse(r)}catch{throw z.decryptionFailed(`Corrupted recovery payload format`)}let a;try{a=await G(i,t)}catch(e){if(e instanceof z)throw e;let t=e instanceof Error?e.message:String(e);throw z.decryptionFailed(t)}let o;try{o=ca.decode(a)}finally{B(a)}await this.storeSecret(e,o,{...n,recoveryPassphrase:t})}},ha=yn,ga=12,_a=new TextEncoder,va=new TextDecoder,ya=class{constructor(){this.keys=new Map}async get(e){return this.keys.get(e)}async put(e,t){this.keys.set(e,t)}async delete(e){return this.keys.delete(e)}},ba=class{constructor(e=`knishio-secret-storage`){this.dbName=e,this.storeName=`keys`}async getDb(){if(globalThis.indexedDB===void 0)throw z.unavailable(`webcrypto-nonextractable`,`IndexedDB is not available`);return new Promise((e,t)=>{let n=globalThis.indexedDB.open(this.dbName,1);n.onupgradeneeded=()=>{let e=n.result;e.objectStoreNames.contains(this.storeName)||e.createObjectStore(this.storeName)},n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error)})}async get(e){let t=await this.getDb();return new Promise((n,r)=>{let i=t.transaction(this.storeName,`readonly`).objectStore(this.storeName).get(e);i.onsuccess=()=>n(i.result),i.onerror=()=>r(i.error)})}async put(e,t){let n=await this.getDb();return new Promise((r,i)=>{let a=n.transaction(this.storeName,`readwrite`).objectStore(this.storeName).put(t,e);a.onsuccess=()=>r(),a.onerror=()=>i(a.error)})}async delete(e){let t=await this.getDb();return new Promise((n,r)=>{let i=t.transaction(this.storeName,`readwrite`).objectStore(this.storeName).delete(e);i.onsuccess=()=>n(!0),i.onerror=()=>r(i.error)})}},xa=class{constructor(e){this.providerType=`webcrypto-nonextractable`,this.backend=e.backend,this.keyStore=e.keyStore||new ba,this.alias=e.alias||`default`,this.cachedPassphrase=void 0}get recordKey(){return`knishio:kek:webcrypto-nonextractable:${this.alias}`}get kekStoreKey(){return`knishio:kek:${this.alias}`}isHardwareBacked(){return!1}async isAvailable(){return globalThis.crypto!==void 0&&globalThis.crypto.subtle!==void 0}async unlock(){if(this.cachedPassphrase)return this.cachedPassphrase;if(!await this.isAvailable())throw z.unavailable(this.providerType,`WebCrypto API is not available`);let e=await this.backend.getItem(this.recordKey);if(!e){let e=await this.keyStore.get(this.kekStoreKey);e||(e=await globalThis.crypto.subtle.generateKey({name:`AES-GCM`,length:256},!1,[`encrypt`,`decrypt`]),await this.keyStore.put(this.kekStoreKey,e));let t=new Uint8Array(32);globalThis.crypto.getRandomValues(t);let n=H(t),r=new Uint8Array(ga);globalThis.crypto.getRandomValues(r);let i=_a.encode(n);try{let t=await globalThis.crypto.subtle.encrypt({name:`AES-GCM`,iv:r},e,i),a={version:1,iv:H(r),ciphertext:H(new Uint8Array(t))};return await this.backend.setItem(this.recordKey,JSON.stringify(a)),this.cachedPassphrase=n,n}finally{B(i),B(t)}}let t;try{t=JSON.parse(e)}catch{throw z.decryptionFailed(`Corrupted key record format`)}let n=await this.keyStore.get(this.kekStoreKey);if(!n)throw z.unavailable(this.providerType,`no non-extractable key found for alias '${this.alias}'`);let r=U(t.iv),i=U(t.ciphertext);try{let e=await globalThis.crypto.subtle.decrypt({name:`AES-GCM`,iv:r},n,i),t=new Uint8Array(e);try{return this.cachedPassphrase=va.decode(t),this.cachedPassphrase}finally{B(t)}}catch{throw z.decryptionFailed(`wrapped device passphrase failed authentication under non-extractable key`)}}lock(){this.cachedPassphrase=void 0}async unenroll(){this.lock(),await this.backend.removeItem(this.recordKey),await this.keyStore.delete(this.kekStoreKey)}async storeSecret(e,t,n={}){if(!e)throw new z(`Bundle hash cannot be empty`);if(!t)throw new z(`Secret cannot be empty`);if(n.passphrase)throw new z(`NonExtractableKeySecretStorageProvider derives its passphrase from the non-extractable device key; options.passphrase is not accepted`);if(!n.recoveryPassphrase&&!n.allowUnrecoverable)throw z.validationError(`Recovery passphrase required for non-exportable hardware key unless allowUnrecoverable is true`);let r=await W(t,await this.unlock(),{bundleHash:e,label:n.label,createdAt:Date.now(),hardwareBacked:!1,providerType:this.providerType});if(await this.backend.setItem(`${ha}${e}`,JSON.stringify(r)),n.recoveryPassphrase){let r={bundleHash:e,label:n.label,createdAt:Date.now(),hardwareBacked:!1,providerType:`webcrypto-aes-gcm`},i=await W(t,n.recoveryPassphrase,r);await this.backend.setItem(`${V}${e}`,JSON.stringify(i))}}async retrieveSecret(e,t={}){if(t.passphrase)throw new z(`NonExtractableKeySecretStorageProvider derives its passphrase from the non-extractable device key; options.passphrase is not accepted`);let n=await this.backend.getItem(`${ha}${e}`);if(!n)return null;let r;try{r=JSON.parse(n)}catch{throw z.decryptionFailed(`Corrupted payload format`)}let i=await this.unlock();try{let e=await G(r,i);try{return va.decode(e)}finally{B(e)}}catch(e){if(e instanceof z)throw e;let t=e instanceof Error?e.message:String(e);throw z.decryptionFailed(t)}}async withSecret(e,t,n={}){if(n.passphrase)throw new z(`NonExtractableKeySecretStorageProvider derives its passphrase from the non-extractable device key; options.passphrase is not accepted`);let r=await this.backend.getItem(`${ha}${e}`);if(!r)throw z.notFound(e);let i;try{i=JSON.parse(r)}catch{throw z.decryptionFailed(`Corrupted payload format`)}let a=await this.unlock();try{return await mn(await G(i,a),async e=>await t(va.decode(e)))}catch(e){if(e instanceof z)throw e;let t=e instanceof Error?e.message:String(e);throw z.decryptionFailed(t)}}async deleteSecret(e){let t=`${ha}${e}`,n=`${V}${e}`,r=await this.backend.removeItem(t);return await this.backend.removeItem(n),r!==!1}async hasSecret(e){return await this.backend.getItem(`${ha}${e}`)!==null}async listSecrets(){let e=(await this.backend.keys()).filter(e=>e.startsWith(ha)&&!e.startsWith(`knishio:recovery:`)),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 recoverSecret(e,t,n={}){if(!e)throw new z(`Bundle hash cannot be empty`);if(!t)throw new z(`Recovery passphrase cannot be empty`);let r=await this.backend.getItem(`${V}${e}`);if(!r)throw z.notFound(e);let i;try{i=JSON.parse(r)}catch{throw z.decryptionFailed(`Corrupted recovery payload format`)}let a;try{a=await G(i,t)}catch(e){if(e instanceof z)throw e;let t=e instanceof Error?e.message:String(e);throw z.decryptionFailed(t)}let o;try{o=va.decode(a)}finally{B(a)}await this.storeSecret(e,o,{...n,recoveryPassphrase:t})}};function Sa(e={}){return e.type===`memory`?new wn:globalThis.crypto!==void 0&&globalThis.crypto.subtle!==void 0?new ea({backend:e.backend,defaultPassphrase:e.defaultPassphrase}):new wn}exports.Atom=E,exports.AtomIndexException=Ut,exports.AtomMeta=C,exports.AtomsMissingException=T,exports.AuthToken=fn,exports.AuthorizationRejectedException=wr,exports.BalanceInsufficientException=ln,exports.BatchIdException=tn,exports.CheckMolecule=cn,exports.CodeException=L,exports.Decimal=En,exports.Dot=R,exports.FileStorageBackend=ta,exports.IndexedDbKeyStore=ba,exports.InvalidResponseException=K,exports.KnishIOClient=Yi,exports.MemoryKeyStore=ya,exports.MemorySecretStorageProvider=wn,exports.MemoryStorageBackend=Zi,exports.Meta=x,exports.MetaMissingException=I,exports.MolecularHashMismatchException=Wt,exports.MolecularHashMissingException=Gt,exports.Molecule=dn,exports.Mutation=Bn,exports.MutationActiveSession=br,exports.MutationAppendRequest=ir,exports.MutationClaimShadowWallet=Qn,exports.MutationCreateIdentifier=Xn,exports.MutationCreateMeta=er,exports.MutationCreateRule=Ir,exports.MutationCreateToken=Wn,exports.MutationCreateWallet=cr,exports.MutationDepositBufferToken=Lr,exports.MutationLinkIdentifier=or,exports.MutationPeering=nr,exports.MutationProposeMolecule=X,exports.MutationRequestAuthorization=Hn,exports.MutationRequestAuthorizationGuest=ur,exports.MutationRequestTokens=Kn,exports.MutationTransferTokens=Jn,exports.MutationWithdrawBufferToken=Rr,exports.NegativeAmountException=un,exports.NonExtractableKeySecretStorageProvider=xa,exports.PolicyInvalidException=Kt,exports.PolicyMeta=ie,exports.Query=J,exports.QueryActiveSession=Sr,exports.QueryAtom=Er,exports.QueryBalance=Fn,exports.QueryBatch=Rn,exports.QueryBatchHistory=zn,exports.QueryContinuId=kn,exports.QueryEmbeddingStatus=Pr,exports.QueryMetaType=Ln,exports.QueryMetaTypeViaAtom=Ar,exports.QueryMetaTypeViaMolecule=Mr,exports.QueryPolicy=Or,exports.QueryToken=Cr,exports.QueryWalletBundle=jn,exports.QueryWalletList=Nn,exports.RECOVERY_KEY_PREFIX=V,exports.Response=q,exports.ResponseActiveSession=yr,exports.ResponseAppendRequest=rr,exports.ResponseAtom=Tr,exports.ResponseAuthorizationGuest=Xi,exports.ResponseBalance=Pn,exports.ResponseClaimShadowWallet=Zn,exports.ResponseContinuId=On,exports.ResponseCreateIdentifier=Yn,exports.ResponseCreateMeta=$n,exports.ResponseCreateRule=Fr,exports.ResponseCreateToken=Un,exports.ResponseCreateWallet=sr,exports.ResponseEmbeddingStatus=Nr,exports.ResponseLinkIdentifier=ar,exports.ResponseMetaType=In,exports.ResponseMetaTypeViaAtom=kr,exports.ResponseMetaTypeViaMolecule=jr,exports.ResponsePeering=tr,exports.ResponsePolicy=Dr,exports.ResponseProposeMolecule=Y,exports.ResponseQueryActiveSession=xr,exports.ResponseRequestAuthorization=Vn,exports.ResponseRequestAuthorizationGuest=lr,exports.ResponseRequestTokens=Gn,exports.ResponseTransferTokens=qn,exports.ResponseWalletBundle=An,exports.ResponseWalletList=Mn,exports.SECRET_KEY_PREFIX=yn,exports.SecretStorageException=z,exports.SignatureMalformedException=qt,exports.SignatureMismatchException=Jt,exports.StackableUnitAmountException=pr,exports.StackableUnitDecimalsException=fr,exports.TokenUnit=de,exports.TransferBalanceException=F,exports.TransferMalformedException=Yt,exports.TransferMismatchedException=Xt,exports.TransferRemainderException=Zt,exports.TransferToSelfException=Qt,exports.TransferUnbalancedException=$t,exports.UnauthenticatedException=Dn,exports.Wallet=P,exports.WalletShadowException=dr,exports.WebAuthnPrfSecretStorageProvider=ma,exports.WebCryptoSecretStorageProvider=ea,exports.WebStorageBackend=na,exports.WrongTokenTypeException=en,exports.base64ToHex=y,exports.bufferToHexString=g,exports.charsetBaseConvert=h,exports.chunkArray=te,exports.chunkSubstr=p,exports.constantTimeCompare=gn,exports.createDefaultSecretStorage=Sa,exports.deepCloning=ne,exports.diff=re,exports.generateBatchId=ue,exports.generateBundleHash=ce,exports.generateSecret=se,exports.hexStringToBuffer=_,exports.hexToBase64=v,exports.intersect=S,exports.isHex=b,exports.isNumeric=ee,exports.openEnvelope=G,exports.randomString=m,exports.sealEnvelope=W,exports.shake256=le,exports.withSecureBytes=mn,exports.withSecureString=hn,exports.zeroizeBytes=B;
510
+ //# sourceMappingURL=client.cjs.js.map