diff --git a/bns-browser.js b/bns-browser.js index b7134a8..be08fca 100644 --- a/bns-browser.js +++ b/bns-browser.js @@ -1,4 +1,4 @@ -(()=>{var zn=Object.create;var Ze=Object.defineProperty;var Wn=Object.getOwnPropertyDescriptor;var Zn=Object.getOwnPropertyNames;var $n=Object.getPrototypeOf,ei=Object.prototype.hasOwnProperty;var I=(e,r)=>Ze(e,"name",{value:r,configurable:!0}),Br=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(r,t)=>(typeof require<"u"?require:r)[t]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var S=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports),vt=(e,r)=>{for(var t in r)Ze(e,t,{get:r[t],enumerable:!0})},ti=(e,r,t,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let s of Zn(r))!ei.call(e,s)&&s!==t&&Ze(e,s,{get:()=>r[s],enumerable:!(n=Wn(r,s))||n.enumerable});return e};var Ke=(e,r,t)=>(t=e!=null?zn($n(e)):{},ti(r||!e||!e.__esModule?Ze(t,"default",{value:e,enumerable:!0}):t,e));var Ft=S((po,pr)=>{pr.exports=Qr;var $e=class extends Error{static{I(this,"AssertionError")}};$e.prototype.name="AssertionError";function Qr(e,r){if(!e){var t=new $e(r);throw Error.captureStackTrace&&Error.captureStackTrace(t,Qr),t}}I(Qr,"assert")});var mr=S((Do,Dr)=>{function br(e){return e.length}I(br,"byteLength");function ri(e){let r=e.byteLength,t="";for(let n=0;n{var ye="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Ae=new Uint8Array(256);for(let e=0;e1&&e.charCodeAt(r-1)===61&&r--,r*3>>>2}I(Sr,"byteLength");function ii(e){let r=e.byteLength,t="";for(let n=0;n>2]+ye[(e[n]&3)<<4|e[n+1]>>4]+ye[(e[n+1]&15)<<2|e[n+2]>>6]+ye[e[n+2]&63];return r%3===2?t=t.substring(0,t.length-1)+"=":r%3===1&&(t=t.substring(0,t.length-2)+"=="),t}I(ii,"toString");function oi(e,r,t=0,n=Sr(r)){let s=Math.min(n,e.byteLength-t);for(let g=0,l=0;l>4,e[l++]=(w&15)<<4|B>>2,e[l++]=(B&3)<<6|b&63}return s}I(oi,"write");Ur.exports={byteLength:Sr,toString:ii,write:oi}});var kr=S((vo,Yr)=>{function Kr(e){return e.length>>>1}I(Kr,"byteLength");function Ai(e){let r=e.byteLength;e=new DataView(e.buffer,e.byteOffset,r);let t="",n=0;for(let s=r-r%4;n=48&&e<=57)return e-48;if(e>=65&&e<=70)return e-65+10;if(e>=97&&e<=102)return e-97+10}I(Fr,"hexValue")});var Mr=S((Ko,Lr)=>{function Kt(e){let r=0;for(let t=0,n=e.length;t=55296&&s<=56319&&t+1=56320&&g<=57343){r+=4,t++;continue}}s<=127?r+=1:s<=2047?r+=2:r+=3}return r}I(Kt,"byteLength");var Yt;if(typeof TextDecoder<"u"){let e=new TextDecoder;Yt=I(function(t){return e.decode(t)},"toString")}else Yt=I(function(r){let t=r.byteLength,n="",s=0;for(;s0){let w=0;for(;w>B,B-=6;B>=0;)r[_++]=128|w>>B&63,B-=6;l+=w>=65536?2:1}return g},"write");Lr.exports={byteLength:Kt,toString:Yt,write:kt}});var Vr=S((ko,Pr)=>{function Hr(e){return e.length*2}I(Hr,"byteLength");function si(e){let r=e.byteLength,t="";for(let n=0;n>8,B=_%256;e[t+l*2]=B,e[t+l*2+1]=w}return s}I(Ii,"write");Pr.exports={byteLength:Hr,toString:si,write:Ii}});var Tr=S((Mt,Rr)=>{var hi=mr(),ci=vr(),gi=kr(),fi=Mr(),ui=Vr(),et=new Uint8Array(Uint16Array.of(255).buffer)[0]===255;function Ye(e){switch(e){case"ascii":return hi;case"base64":return ci;case"hex":return gi;case"utf8":case"utf-8":case void 0:return fi;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return ui;default:throw new Error(`Unknown encoding: ${e}`)}}I(Ye,"codecFor");function Or(e){return e instanceof Uint8Array}I(Or,"isBuffer");function Ci(e){try{return Ye(e),!0}catch{return!1}}I(Ci,"isEncoding");function li(e,r,t){let n=new Uint8Array(e);return r!==void 0&&Mt.fill(n,r,0,n.byteLength,t),n}I(li,"alloc");function yi(e){return new Uint8Array(e)}I(yi,"allocUnsafe");function _i(e){return new Uint8Array(e)}I(_i,"allocUnsafeSlow");function di(e,r){return Ye(r).byteLength(e)}I(di,"byteLength");function wi(e,r){if(e===r)return 0;let t=Math.min(e.byteLength,r.byteLength);e=new DataView(e.buffer,e.byteOffset,e.byteLength),r=new DataView(r.buffer,r.byteOffset,r.byteLength);let n=0;for(let s=t-t%4;ng)return 1}return e.byteLength>r.byteLength?1:e.byteLengths+g.byteLength,0));let t=new Uint8Array(r),n=0;for(let s of e){if(n+s.byteLength>t.byteLength){let g=s.subarray(0,t.byteLength-n);return t.set(g,n),t}t.set(s,n),n+=s.byteLength}return t}I(Ei,"concat");function xi(e,r,t=0,n=0,s=e.byteLength){if(s>0&&s=e.byteLength)throw new RangeError("sourceStart is out of range");if(s<0)throw new RangeError("sourceEnd is out of range");t>=r.byteLength&&(t=r.byteLength),s>e.byteLength&&(s=e.byteLength),r.byteLength-t=e.byteLength){if(s)return-1;t=e.byteLength-1}else if(t<0)if(s)t=0;else return-1;if(typeof r=="string")r=Lt(r,n);else if(typeof r=="number")return r=r&255,s?e.indexOf(r,t):e.lastIndexOf(r,t);if(r.byteLength===0)return-1;if(s){let g=-1;for(let l=t;le.byteLength&&(t=e.byteLength-r.byteLength);for(let g=t;g>=0;g--){let l=!0;for(let _=0;_=s||n<=t?"":(t<0&&(t=0),n>s&&(n=s),(t!==0||n{var Ti=I((e,r)=>I(function(){return r||(0,e[Object.keys(e)[0]])((r={exports:{}}).exports,r),r.exports},"__require"),"__commonJS"),ji=(()=>{for(var e=new Uint8Array(128),r=0;r<64;r++)e[r<26?r+65:r<52?r+71:r<62?r-4:r*4-205]=r;return t=>{for(var n=t.length,s=new Uint8Array((n-(t[n-1]=="=")-(t[n-2]=="="))*3/4|0),g=0,l=0;g>4,s[l++]=w<<4|B>>2,s[l++]=B<<6|b}return s}})(),Ji=Ti({"wasm-binary:./blake2b.wat"(e,r){r.exports=ji("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")}}),Xi=Ji(),qi=WebAssembly.compile(Xi);jr.exports=async e=>(await WebAssembly.instantiate(await qi,e)).exports});var tn=S((Go,J)=>{var M=Ft(),zi=Tr(),W=null,Xr=typeof WebAssembly<"u"&&Jr()().then(e=>{W=e}),z=64,tt=[];J.exports=Y;var qr=J.exports.BYTES_MIN=16,zr=J.exports.BYTES_MAX=64,Vo=J.exports.BYTES=32,Wr=J.exports.KEYBYTES_MIN=16,Zr=J.exports.KEYBYTES_MAX=64,Oo=J.exports.KEYBYTES=32,$r=J.exports.SALTBYTES=16,en=J.exports.PERSONALBYTES=16;function Y(e,r,t,n,s){if(!(this instanceof Y))return new Y(e,r,t,n,s);if(!W)throw new Error("WASM not loaded. Wait for Blake2b.ready(cb)");e||(e=32),s!==!0&&(M(e>=qr,"digestLength must be at least "+qr+", was given "+e),M(e<=zr,"digestLength must be at most "+zr+", was given "+e),r!=null&&(M(r instanceof Uint8Array,"key must be Uint8Array or Buffer"),M(r.length>=Wr,"key must be at least "+Wr+", was given "+r.length),M(r.length<=Zr,"key must be at least "+Zr+", was given "+r.length)),t!=null&&(M(t instanceof Uint8Array,"salt must be Uint8Array or Buffer"),M(t.length===$r,"salt must be exactly "+$r+", was given "+t.length)),n!=null&&(M(n instanceof Uint8Array,"personal must be Uint8Array or Buffer"),M(n.length===en,"personal must be exactly "+en+", was given "+n.length))),tt.length||(tt.push(z),z+=216),this.digestLength=e,this.finalized=!1,this.pointer=tt.pop(),this._memory=new Uint8Array(W.memory.buffer),this._memory.fill(0,0,64),this._memory[0]=this.digestLength,this._memory[1]=r?r.length:0,this._memory[2]=1,this._memory[3]=1,t&&this._memory.set(t,32),n&&this._memory.set(n,48),this.pointer+216>this._memory.length&&this._realloc(this.pointer+216),W.blake2b_init(this.pointer,this.digestLength),r&&(this.update(r),this._memory.fill(0,z,z+r.length),this._memory[this.pointer+200]=128)}I(Y,"Blake2b");Y.prototype._realloc=function(e){W.memory.grow(Math.max(0,Math.ceil(Math.abs(e-this._memory.length)/65536))),this._memory=new Uint8Array(W.memory.buffer)};Y.prototype.update=function(e){return M(this.finalized===!1,"Hash instance finalized"),M(e instanceof Uint8Array,"input must be Uint8Array or Buffer"),z+e.length>this._memory.length&&this._realloc(z+e.length),this._memory.set(e,z),W.blake2b_update(this.pointer,z,z+e.length),this};Y.prototype.digest=function(e){if(M(this.finalized===!1,"Hash instance finalized"),this.finalized=!0,tt.push(this.pointer),W.blake2b_final(this.pointer),!e||e==="binary")return this._memory.slice(this.pointer+128,this.pointer+128+this.digestLength);if(typeof e=="string")return zi.toString(this._memory,e,this.pointer+128,this.pointer+128+this.digestLength);M(e instanceof Uint8Array&&e.length>=this.digestLength,"input must be Uint8Array or Buffer");for(var r=0;re(),e):e(new Error("WebAssembly not supported"))};Y.prototype.ready=Y.ready;Y.prototype.getPartialHash=function(){return this._memory.slice(this.pointer,this.pointer+216)};Y.prototype.setPartialHash=function(e){this._memory.set(e,this.pointer)};function Wi(){}I(Wi,"noop")});var Ht=S((jo,k)=>{var P=Ft(),Le=tn();function rt(e,r,t){var n=e[r]+e[t],s=e[r+1]+e[t+1];n>=4294967296&&s++,e[r]=n,e[r+1]=s}I(rt,"ADD64AA");function rn(e,r,t,n){var s=e[r]+t;t<0&&(s+=4294967296);var g=e[r+1]+n;s>=4294967296&&g++,e[r]=s,e[r+1]=g}I(rn,"ADD64AC");function hn(e,r){return e[r]^e[r+1]<<8^e[r+2]<<16^e[r+3]<<24}I(hn,"B2B_GET32");function te(e,r,t,n,s,g){var l=ke[s],_=ke[s+1],w=ke[g],B=ke[g+1];rt(x,e,r),rn(x,e,l,_);var b=x[n]^x[e],m=x[n+1]^x[e+1];x[n]=m,x[n+1]=b,rt(x,t,n),b=x[r]^x[t],m=x[r+1]^x[t+1],x[r]=b>>>24^m<<8,x[r+1]=m>>>24^b<<8,rt(x,e,r),rn(x,e,w,B),b=x[n]^x[e],m=x[n+1]^x[e+1],x[n]=b>>>16^m<<16,x[n+1]=m>>>16^b<<16,rt(x,t,n),b=x[r]^x[t],m=x[r+1]^x[t+1],x[r]=m>>>31^b<<1,x[r+1]=b>>>31^m<<1}I(te,"B2B_G");var cn=new Uint32Array([4089235720,1779033703,2227873595,3144134277,4271175723,1013904242,1595750129,2773480762,2917565137,1359893119,725511199,2600822924,4215389547,528734635,327033209,1541459225]),Zi=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3],v=new Uint8Array(Zi.map(function(e){return e*2})),x=new Uint32Array(32),ke=new Uint32Array(32);function gn(e,r){var t=0;for(t=0;t<16;t++)x[t]=e.h[t],x[t+16]=cn[t];for(x[24]=x[24]^e.t,x[25]=x[25]^e.t/4294967296,r&&(x[28]=~x[28],x[29]=~x[29]),t=0;t<32;t++)ke[t]=hn(e.b,4*t);for(t=0;t<12;t++)te(0,8,16,24,v[t*16+0],v[t*16+1]),te(2,10,18,26,v[t*16+2],v[t*16+3]),te(4,12,20,28,v[t*16+4],v[t*16+5]),te(6,14,22,30,v[t*16+6],v[t*16+7]),te(0,10,20,30,v[t*16+8],v[t*16+9]),te(2,12,22,24,v[t*16+10],v[t*16+11]),te(4,14,16,26,v[t*16+12],v[t*16+13]),te(6,8,18,28,v[t*16+14],v[t*16+15]);for(t=0;t<16;t++)e.h[t]=e.h[t]^x[t]^x[t+16]}I(gn,"blake2bCompress");var re=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);function _e(e,r,t,n){re.fill(0),this.b=new Uint8Array(128),this.h=new Uint32Array(16),this.t=0,this.c=0,this.outlen=e,re[0]=e,r&&(re[1]=r.length),re[2]=1,re[3]=1,t&&re.set(t,32),n&&re.set(n,48);for(var s=0;s<16;s++)this.h[s]=cn[s]^hn(re,s*4);r&&(fn(this,r),this.c=128)}I(_e,"Blake2b");_e.prototype.update=function(e){return P(e instanceof Uint8Array,"input must be Uint8Array or Buffer"),fn(this,e),this};_e.prototype.digest=function(e){var r=!e||e==="binary"||e==="hex"?new Uint8Array(this.outlen):e;return P(r instanceof Uint8Array,'out must be "binary", "hex", Uint8Array, or Buffer'),P(r.length>=this.outlen,"out must have at least outlen bytes of space"),$i(this,r),e==="hex"?eo(r):r};_e.prototype.final=_e.prototype.digest;_e.ready=function(e){Le.ready(function(){e()})};function fn(e,r){for(var t=0;t>2]>>8*(t&3);return r}I($i,"blake2bFinal");function eo(e){for(var r="",t=0;t=nn,"outlen must be at least "+nn+", was given "+r),P(r<=on,"outlen must be at most "+on+", was given "+r),t!=null&&(P(t instanceof Uint8Array,"key must be Uint8Array or Buffer"),P(t.length>=An,"key must be at least "+An+", was given "+t.length),P(t.length<=an,"key must be at most "+an+", was given "+t.length)),n!=null&&(P(n instanceof Uint8Array,"salt must be Uint8Array or Buffer"),P(n.length===sn,"salt must be exactly "+sn+", was given "+n.length)),s!=null&&(P(s instanceof Uint8Array,"personal must be Uint8Array or Buffer"),P(s.length===In,"personal must be exactly "+In+", was given "+s.length))),new ro(r,t,n,s)},"createHash");k.exports.ready=function(e){Le.ready(function(){e()})};k.exports.WASM_SUPPORTED=Le.SUPPORTED;k.exports.WASM_LOADED=!1;var nn=k.exports.BYTES_MIN=16,on=k.exports.BYTES_MAX=64,Ro=k.exports.BYTES=32,An=k.exports.KEYBYTES_MIN=16,an=k.exports.KEYBYTES_MAX=64,To=k.exports.KEYBYTES=32,sn=k.exports.SALTBYTES=16,In=k.exports.PERSONALBYTES=16;Le.ready(function(e){e||(k.exports.WASM_LOADED=!0,k.exports=Le)})});var un=S((Xo,nt)=>{(function(e){"use strict";let r=Ht();var t=I(function(i,A){this.hi=i|0,this.lo=A|0},"u64"),n=I(function(i){var A,o=new Float64Array(16);if(i)for(A=0;A>>32-A}I(ee,"L32");function he(i,A){var o=i[A+3]&255;return o=o<<8|i[A+2]&255,o=o<<8|i[A+1]&255,o<<8|i[A+0]&255}I(he,"ld32");function er(i,A){var o=i[A]<<24|i[A+1]<<16|i[A+2]<<8|i[A+3],a=i[A+4]<<24|i[A+5]<<16|i[A+6]<<8|i[A+7];return new t(o,a)}I(er,"dl64");function gt(i,A,o){var a;for(a=0;a<4;a++)i[A+a]=o&255,o>>>=8}I(gt,"st32");function tr(i,A,o){i[A]=o.hi>>24&255,i[A+1]=o.hi>>16&255,i[A+2]=o.hi>>8&255,i[A+3]=o.hi&255,i[A+4]=o.lo>>24&255,i[A+5]=o.lo>>16&255,i[A+6]=o.lo>>8&255,i[A+7]=o.lo&255}I(tr,"ts64");function ft(i,A,o,a,h){var c,C=0;for(c=0;c>>8)-1}I(ft,"vn");function rr(i,A,o,a){return ft(i,A,o,a,16)}I(rr,"crypto_verify_16");function ut(i,A,o,a){return ft(i,A,o,a,32)}I(ut,"crypto_verify_32");function nr(i,A,o,a,h){var c=new Uint32Array(16),C=new Uint32Array(16),y=new Uint32Array(16),f=new Uint32Array(4),u,d,p;for(u=0;u<4;u++)C[5*u]=he(a,4*u),C[1+u]=he(o,4*u),C[6+u]=he(A,4*u),C[11+u]=he(o,16+4*u);for(u=0;u<16;u++)y[u]=C[u];for(u=0;u<20;u++){for(d=0;d<4;d++){for(p=0;p<4;p++)f[p]=C[(5*d+4*p)%16];for(f[1]^=ee(f[0]+f[3]|0,7),f[2]^=ee(f[1]+f[0]|0,9),f[3]^=ee(f[2]+f[1]|0,13),f[0]^=ee(f[3]+f[2]|0,18),p=0;p<4;p++)c[4*d+(d+p)%4]=f[p]}for(p=0;p<16;p++)C[p]=c[p]}if(h){for(u=0;u<16;u++)C[u]=C[u]+y[u]|0;for(u=0;u<4;u++)C[5*u]=C[5*u]-he(a,4*u)|0,C[6+u]=C[6+u]-he(A,4*u)|0;for(u=0;u<4;u++)gt(i,4*u,C[5*u]),gt(i,16+4*u,C[6+u])}else for(u=0;u<16;u++)gt(i,4*u,C[u]+y[u]|0)}I(nr,"core");function ir(i,A,o,a){return nr(i,A,o,a,!1),0}I(ir,"crypto_core_salsa20");function Ge(i,A,o,a){return nr(i,A,o,a,!0),0}I(Ge,"crypto_core_hsalsa20");var pe=new Uint8Array([101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107]);function Ct(i,A,o,a,h,c,C){var y=new Uint8Array(16),f=new Uint8Array(64),u,d;if(!h)return 0;for(d=0;d<16;d++)y[d]=0;for(d=0;d<8;d++)y[d]=c[d];for(;h>=64;){for(ir(f,y,C,pe),d=0;d<64;d++)i[A+d]=(o?o[a+d]:0)^f[d];for(u=1,d=8;d<16;d++)u=u+(y[d]&255)|0,y[d]=u&255,u>>>=8;h-=64,A+=64,o&&(a+=64)}if(h>0)for(ir(f,y,C,pe),d=0;d>>=8}I(yt,"add1305");var Yn=new Uint32Array([5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252]);function _t(i,A,o,a,h,c){var C,y,f,u,d=new Uint32Array(17),p=new Uint32Array(17),D=new Uint32Array(17),N=new Uint32Array(17),le=new Uint32Array(17);for(f=0;f<17;f++)p[f]=D[f]=0;for(f=0;f<16;f++)p[f]=c[f];for(p[3]&=15,p[4]&=252,p[7]&=15,p[8]&=252,p[11]&=15,p[12]&=252,p[15]&=15;h>0;){for(f=0;f<17;f++)N[f]=0;for(f=0;f<16&&f>>=8;for(u=u+D[16]|0,D[16]=u&3,u=5*(u>>>2)|0,f=0;f<16;f++)u=u+D[f]|0,D[f]=u&255,u>>>=8;u=u+D[16]|0,D[16]=u}for(f=0;f<17;f++)le[f]=D[f];for(yt(D,Yn),C=-(D[16]>>>7)|0,f=0;f<17;f++)D[f]^=C&(le[f]^D[f]);for(f=0;f<16;f++)N[f]=c[f+16];for(N[16]=0,yt(D,N),f=0;f<16;f++)i[A+f]=D[f];return 0}I(_t,"crypto_onetimeauth");function ar(i,A,o,a,h,c){var C=new Uint8Array(16);return _t(C,0,o,a,h,c),rr(i,A,C,0)}I(ar,"crypto_onetimeauth_verify");function dt(i,A,o,a,h){var c;if(o<32)return-1;for(lt(i,0,A,0,o,a,h),_t(i,16,i,32,o-32,i),c=0;c<16;c++)i[c]=0;return 0}I(dt,"crypto_secretbox");function wt(i,A,o,a,h){var c,C=new Uint8Array(32);if(o<32||(Ar(C,0,32,a,h),ar(A,16,A,32,o-32,C)!==0))return-1;for(lt(i,0,A,0,o,a,h),c=0;c<32;c++)i[c]=0;return 0}I(wt,"crypto_secretbox_open");function X(i,A){var o;for(o=0;o<16;o++)i[o]=A[o]|0}I(X,"set25519");function be(i){var A,o;for(o=0;o<16;o++)i[o]+=65536,A=Math.floor(i[o]/65536),i[(o+1)*(o<15?1:0)]+=A-1+37*(A-1)*(o===15?1:0),i[o]-=A*65536}I(be,"car25519");function ce(i,A,o){for(var a,h=~(o-1),c=0;c<16;c++)a=h&(i[c]^A[c]),i[c]^=a,A[c]^=a}I(ce,"sel25519");function ge(i,A){var o,a,h,c=n(),C=n();for(o=0;o<16;o++)C[o]=A[o];for(be(C),be(C),be(C),a=0;a<2;a++){for(c[0]=C[0]-65517,o=1;o<15;o++)c[o]=C[o]-65535-(c[o-1]>>16&1),c[o-1]&=65535;c[15]=C[15]-32767-(c[14]>>16&1),h=c[15]>>16&1,c[14]&=65535,ce(C,c,1-h)}for(o=0;o<16;o++)i[2*o]=C[o]&255,i[2*o+1]=C[o]>>8}I(ge,"pack25519");function sr(i,A){var o=new Uint8Array(32),a=new Uint8Array(32);return ge(o,i),ge(a,A),ut(o,0,a,0)}I(sr,"neq25519");function Ir(i){var A=new Uint8Array(32);return ge(A,i),A[0]&1}I(Ir,"par25519");function Et(i,A){var o;for(o=0;o<16;o++)i[o]=A[2*o]+(A[2*o+1]<<8);i[15]&=32767}I(Et,"unpack25519");function O(i,A,o){var a;for(a=0;a<16;a++)i[a]=A[a]+o[a]|0}I(O,"A");function G(i,A,o){var a;for(a=0;a<16;a++)i[a]=A[a]-o[a]|0}I(G,"Z");function Q(i,A,o){var a,h,c=new Float64Array(31);for(a=0;a<31;a++)c[a]=0;for(a=0;a<16;a++)for(h=0;h<16;h++)c[a+h]+=A[a]*o[h];for(a=0;a<15;a++)c[a]+=38*c[a+16];for(a=0;a<16;a++)i[a]=c[a];be(i),be(i)}I(Q,"M");function H(i,A){Q(i,A,A)}I(H,"S");function hr(i,A){var o=n(),a;for(a=0;a<16;a++)o[a]=A[a];for(a=253;a>=0;a--)H(o,o),a!==2&&a!==4&&Q(o,o,A);for(a=0;a<16;a++)i[a]=o[a]}I(hr,"inv25519");function cr(i,A){var o=n(),a;for(a=0;a<16;a++)o[a]=A[a];for(a=250;a>=0;a--)H(o,o),a!==1&&Q(o,o,A);for(a=0;a<16;a++)i[a]=o[a]}I(cr,"pow2523");function Ne(i,A,o){var a=new Uint8Array(32),h=new Float64Array(80),c,C,y=n(),f=n(),u=n(),d=n(),p=n(),D=n();for(C=0;C<31;C++)a[C]=A[C];for(a[31]=A[31]&127|64,a[0]&=248,Et(h,o),C=0;C<16;C++)f[C]=h[C],d[C]=y[C]=u[C]=0;for(y[0]=d[0]=1,C=254;C>=0;--C)c=a[C>>>3]>>>(C&7)&1,ce(y,f,c),ce(u,d,c),O(p,y,u),G(y,y,u),O(u,f,d),G(f,f,d),H(d,p),H(D,y),Q(y,u,y),Q(u,f,p),O(p,y,u),G(y,y,u),H(f,y),G(u,d,D),Q(y,u,B),O(y,y,d),Q(u,u,y),Q(y,d,D),Q(d,f,h),H(f,p),ce(y,f,c),ce(u,d,c);for(C=0;C<16;C++)h[C+16]=y[C],h[C+32]=u[C],h[C+48]=f[C],h[C+64]=d[C];var N=h.subarray(32),le=h.subarray(16);return hr(N,N),Q(le,le,N),ge(i,le),0}I(Ne,"crypto_scalarmult");function Re(i,A){return Ne(i,A,l)}I(Re,"crypto_scalarmult_base");function gr(i,A){return s(A,32),Re(i,A)}I(gr,"crypto_box_keypair");function Te(i,A,o){var a=new Uint8Array(32);return Ne(a,o,A),Ge(i,g,a,pe)}I(Te,"crypto_box_beforenm");var fr=dt,kn=wt;function Ln(i,A,o,a,h,c){var C=new Uint8Array(32);return Te(C,h,c),fr(i,A,o,a,C)}I(Ln,"crypto_box");function Mn(i,A,o,a,h,c){var C=new Uint8Array(32);return Te(C,h,c),kn(i,A,o,a,C)}I(Mn,"crypto_box_open");function De(){var i=0,A=0,o=0,a=0,h=65535,c,C,y;for(y=0;y>>16,o+=C&h,a+=C>>>16;return A+=i>>>16,o+=A>>>16,a+=o>>>16,new t(o&h|a<<16,i&h|A<<16)}I(De,"add64");function ur(i,A){return new t(i.hi>>>A,i.lo>>>A|i.hi<<32-A)}I(ur,"shr64");function je(){var i=0,A=0,o;for(o=0;o>>A|i.lo<>>A|i.hi<>>A|i.hi<>>A|i.lo<=128;){for(f=0;f<16;f++)C[f]=er(A,8*f+d);for(f=0;f<80;f++){for(u=0;u<8;u++)h[u]=c[u];for(y=De(c[7],On(c[4]),Hn(c[4],c[5],c[6]),Rn[f],C[f%16]),h[7]=De(y,Vn(c[0]),Pn(c[0],c[1],c[2])),h[3]=De(h[3],y),u=0;u<8;u++)c[(u+1)%8]=h[u];if(f%16===15)for(u=0;u<16;u++)C[u]=De(C[u],C[(u+9)%16],Gn(C[(u+1)%16]),Nn(C[(u+14)%16]))}for(f=0;f<8;f++)c[f]=De(c[f],a[f]),a[f]=c[f];d+=128,o-=128}for(f=0;f<8;f++)tr(i,8*f,a[f]);return o}I(Cr,"crypto_hashblocks");let fe=I((i,A)=>r(A).update(i).digest(),"crypto_hash_blake2b");var Tn=new Uint8Array([106,9,230,103,243,188,201,8,187,103,174,133,132,202,167,59,60,110,243,114,254,148,248,43,165,79,245,58,95,29,54,241,81,14,82,127,173,230,130,209,155,5,104,140,43,62,108,31,31,131,217,171,251,65,189,107,91,224,205,25,19,126,33,121]);function lr(i,A,o){var a=new Uint8Array(64),h=new Uint8Array(256),c,C=o;for(c=0;c<64;c++)a[c]=Tn[c];for(Cr(a,A,o),o%=128,c=0;c<256;c++)h[c]=0;for(c=0;c=0;--h)a=o[h/8|0]>>(h&7)&1,yr(i,A,a),Je(A,i),Je(i,i),yr(i,A,a)}I(xt,"scalarmult");function me(i,A){var o=[n(),n(),n(),n()];X(o[0],K),X(o[1],$),X(o[2],w),Q(o[3],K,$),xt(i,o,A)}I(me,"scalarbase");function Bt(i,A,o){var a=new Uint8Array(64),h=[n(),n(),n(),n()],c;o||s(A,32);a=fe(A,64),a[0]&=248,a[31]&=127,a[31]|=64,me(h,a),Xe(i,h);return 0}I(Bt,"crypto_sign_keypair");var qe=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function Qt(i,A){var o,a,h,c;for(a=63;a>=32;--a){for(o=0,h=a-32,c=a-12;h>4)*qe[h],o=A[h]>>8,A[h]&=255;for(h=0;h<32;h++)A[h]-=o*qe[h];for(a=0;a<32;a++)A[a+1]+=A[a]>>8,i[a]=A[a]&255}I(Qt,"modL");function pt(i){var A=new Float64Array(64),o;for(o=0;o<64;o++)A[o]=i[o];for(o=0;o<64;o++)i[o]=0;Qt(i,A)}I(pt,"reduce");function _r(i,A,o,a){var h=new Uint8Array(64),c=new Uint8Array(64),C=new Uint8Array(64),y,f,u=new Float64Array(64),d=[n(),n(),n(),n()];let p=xr(a);h=fe(a,64),h[0]&=248,h[31]&=127,h[31]|=64;var D=o+64;for(y=0;y>7&&G(i[0],_,i[0]),Q(i[3],i[0],i[1]),0)}I(jn,"unpackneg");function bt(i,A,o,a){var h,c=new Uint8Array(32),C=new Uint8Array(64),y=[n(),n(),n(),n()],f=[n(),n(),n(),n()];if(o<64||jn(f,a))return-1;for(h=0;h=0};function xr(i){let A=new Uint8Array(64),o=[n(),n(),n(),n()],a,h=new Uint8Array(32);return A=fe(i,64),A[0]&=248,A[31]&=127,A[31]|=64,me(o,A),Xe(h,o),h}I(xr,"derivePublicFromSecret"),e.sign.keyPair=function(){var i=new Uint8Array(oe),A=new Uint8Array(Ce);return Bt(i,A),{publicKey:i,secretKey:A}},e.sign.keyPair.fromSecretKey=function(i){if(L(i),i.length!==Ce)throw new Error("bad secret key size");var A=new Uint8Array(oe);return A=xr(i),{publicKey:A,secretKey:new Uint8Array(i)}},e.sign.keyPair.fromSeed=function(i){if(L(i),i.length!==St)throw new Error("bad seed size");for(var A=new Uint8Array(oe),o=new Uint8Array(Ce),a=0;a<32;a++)o[a]=i[a];return Bt(A,o,!0),{publicKey:A,secretKey:o}},e.sign.publicKeyLength=oe,e.sign.secretKeyLength=Ce,e.sign.seedLength=St,e.sign.signatureLength=q,e.hash=function(i){L(i);var A=new Uint8Array(Ut);return lr(A,i,i.length),A},e.hash.hashLength=Ut,e.verify=function(i,A){return L(i,A),i.length===0||A.length===0||i.length!==A.length?!1:ft(i,0,A,0,i.length)===0},e.setPRNG=function(i){s=i},function(){var i=typeof self<"u"?self.crypto||self.msCrypto:null;if(i&&i.getRandomValues){var A=65536;e.setPRNG(function(o,a){var h,c=new Uint8Array(a);for(h=0;h{"use strict";var no=E&&E.__createBinding||(Object.create?function(e,r,t,n){n===void 0&&(n=t);var s=Object.getOwnPropertyDescriptor(r,t);(!s||("get"in s?!r.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:I(function(){return r[t]},"get")}),Object.defineProperty(e,n,s)}:function(e,r,t,n){n===void 0&&(n=t),e[n]=r[t]}),io=E&&E.__setModuleDefault||(Object.create?function(e,r){Object.defineProperty(e,"default",{enumerable:!0,value:r})}:function(e,r){e.default=r}),oo=E&&E.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var t in e)t!=="default"&&Object.prototype.hasOwnProperty.call(e,t)&&no(r,e,t);return io(r,e),r},Ao=E&&E.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(E,"__esModule",{value:!0});E.verify_signed_message=E.sign_message=E.construct_message_block_and_hash=E.verify_block_hash=E.sign_block_hash=E.hash_block=E.get_public_key_from_address=E.get_address_from_public_key=E.get_public_key_from_private_key=E.get_private_key_from_seed=E.raw_to_whole=E.whole_to_raw=E.utf8_to_uint8array=E.base32_to_uint8array=E.uint8array_to_base32=E.int_to_uint8array=E.hex_to_uint8array=E.uint8array_to_hex=void 0;var Vt=oo(un()),ot=Ao(Ht()),ao="0000000000000000000000000000000000000000000000000000000000000006",Ot="62616E616E6F6D73672D",Me=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"];function He(e){let r="";for(let t=0;t0;g--)s-=t[r-g]*16**(2*(g-1));t[r-n]=Math.floor(s/16**(2*(n-1)))}return t}I(Cn,"int_to_uint8array");E.int_to_uint8array=Cn;var ln=["1","3","4","5","6","7","8","9","a","b","c","d","e","f","g","h","i","j","k","m","n","o","p","q","r","s","t","u","w","x","y","z"];function Pt(e){let r="";for(let t=0;t=5)l=e[s]>>_-5&31;else{let w=5-_;l=(e[s]<>8-w&2**(8-w)-1)}r+=ln[l]}return r}I(Pt,"uint8array_to_base32");E.uint8array_to_base32=Pt;function so(e,r){let t="",n=e;for(let s=0;s=2**(r-1-s)?(t+="1",n-=2**(r-1-s)):t+="0";return t}I(so,"int_to_binary");function Io(e){let r=0;for(let t=0;tso(ln.indexOf(n),5)).join(""),t=new Uint8Array(Math.ceil(e.length*5/8));for(let n=0;nr-n[1].length)throw Error(`Too many decimals, cannot exceed ${r}`);t=BigInt(n[0])*BigInt(10)**BigInt(r)+BigInt(n[1])*BigInt(10)**BigInt(r-n[1].length)}else t=BigInt(e)*BigInt(10)**BigInt(r);return t}I(ho,"whole_to_raw");E.whole_to_raw=ho;function co(e,r=dn){let t=e.toString(),n;if(t.length>r)n=t.slice(0,-r)+"."+t.slice(-r);else{let g=r-t.length;n="0."+"0".repeat(g>0?g:0)+t}let s=n.length;for(let g=0;g{"use strict";Object.defineProperty(de,"__esModule",{value:!0});de.RPCWithBackup=de.RPC=void 0;var Co=At(),at=class{static{I(this,"RPC")}constructor(r,t=!1){this.DECIMALS=void 0,this.debug=!1,this.rpc_url=r,this.use_pending=t}async call(r){this.debug&&console.log(JSON.stringify(r));let t=await fetch(this.rpc_url,{method:"POST",headers:this.headers??{"Content-Type":"application/json"},body:JSON.stringify(r)});if(!t.ok&&this.debug&&console.log(await t.text()),!t.ok)throw Error(`Request to RPC node failed with status code ${t.status}`);let n=await t.json();if(n.error)throw Error(`RPC node response: ${n.error}`);return n}async get_block_count(){return await this.call({action:"block_count"})}async get_block_info(r){return await this.call({action:"block_info",hash:r,json_block:!0})}async get_blocks(r){return await this.call({action:"blocks",hashes:r,json_block:!0})}async get_blocks_info(r){return await this.call({action:"blocks_info",hashes:r,json_block:!0})}async get_representatives(){return await this.call({action:"representatives"})}async get_representatives_online(r){return await this.call({action:"representatives_online",weight:r?!0:void 0})}async get_account_history(r,t,n,s,g,l,_){return await this.call({action:"account_history",account:r,count:`${t}`,raw:n?!0:void 0,head:s,offset:g?`${g}`:void 0,reverse:l?!0:void 0,account_filter:_})}async get_account_info(r,t,n,s,g){return await this.call({action:"account_info",account:r,representative:n?!0:void 0,weight:s?!0:void 0,pending:g?!0:void 0})}async get_account_balance(r){return await this.call({action:"account_balance",account:r})}async get_accounts_balances(r){return await this.call({action:"accounts_balances",accounts:r})}async get_account_representative(r){return await this.call({action:"account_representative",account:r})}async get_accounts_representatives(r){return await this.call({action:"accounts_representatives",account:r})}async get_account_weight(r){return await this.call({action:"account_weight",account:r})}async get_account_receivable(r,t,n,s){return await this.call({action:this.use_pending?"pending":"receivable",account:r,count:t?`${t}`:void 0,threshold:n?(0,Co.whole_to_raw)(n,this.DECIMALS).toString():void 0,source:s?!0:void 0})}async get_delegators(r,t,n,s){return await this.call({action:"delegators",account:r,threshold:t?`${t}`:void 0,count:n?`${n}`:void 0,start:s})}async get_delegators_count(r){return await this.call({action:"account_weight",account:r})}};de.RPC=at;var Rt=class extends at{static{I(this,"RPCWithBackup")}constructor(r,t,n=!1){if(r.length<2)throw Error("Must provide at least two RPC URLs");super(r[0],n),this.rpc_urls=r,this.timeout=t}async call(r){let t=0;for(;;)try{let n=await fetch(this.rpc_urls[t],{method:"POST",headers:this.headers??{"Content-Type":"application/json"},body:JSON.stringify(r),signal:AbortSignal.timeout(this.timeout)});if(!n.ok)throw Error(`Request to RPC node failed with status code ${n.status}`);let s=await n.json();if(s.error)throw Error(`RPC node response: ${s.error}`);return s}catch(n){if(!this.rpc_urls[++t])throw Error(n)}}};de.RPCWithBackup=Rt});var bn=S(pn=>{"use strict";Object.defineProperty(pn,"__esModule",{value:!0})});var Dn=S(V=>{"use strict";var lo=V&&V.__createBinding||(Object.create?function(e,r,t,n){n===void 0&&(n=t);var s=Object.getOwnPropertyDescriptor(r,t);(!s||("get"in s?!r.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:I(function(){return r[t]},"get")}),Object.defineProperty(e,n,s)}:function(e,r,t,n){n===void 0&&(n=t),e[n]=r[t]}),yo=V&&V.__setModuleDefault||(Object.create?function(e,r){Object.defineProperty(e,"default",{enumerable:!0,value:r})}:function(e,r){e.default=r}),_o=V&&V.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var t in e)t!=="default"&&Object.prototype.hasOwnProperty.call(e,t)&&lo(r,e,t);return yo(r,e),r};Object.defineProperty(V,"__esModule",{value:!0});V.PrivateKeyAccount=V.Wallet=void 0;var F=_o(At()),st=class e{static{I(this,"Wallet")}constructor(r,t,n=0,s){if(this.add_do_work=!0,this.rpc=r,typeof t!="string"||t?.length!==64)throw Error("Seed needs to be 64 character (hex) string");this.seed=t,this.index=n,this.work_function=s}static gen_random_wallet(r){let t=new Uint8Array(32);crypto.getRandomValues(t);let n=F.uint8array_to_hex(t);return new e(r,n)}get private_key(){return F.get_private_key_from_seed(this.seed,this.index)}get public_key(){return F.get_public_key_from_private_key(this.private_key)}get address(){return F.get_address_from_public_key(this.public_key)}async send_process(r,t){return(await this.rpc.call({action:"process",json_block:"true",subtype:t,block:r,do_work:!r.work&&this.add_do_work?!0:void 0})).hash}async send(r,t,n,s,g){let l=F.whole_to_raw(t,this.rpc.DECIMALS),_=g??await this.get_account_info(void 0,!0),w=F.get_public_key_from_address(r);s||(s=_.representative);let B=BigInt(_.balance),b=B-l;if(b<0n)throw Error(`Insufficient funds to send. Cannot send more than balance; ie, Before balance (raw: ${B}) less than send amount (raw: ${l})`);let m={type:"state",account:this.address,previous:_.frontier,representative:s,balance:b.toString(),link:w,link_as_account:r},K=F.hash_block(m),$;n&&($=await this.work_function(K));let Qe=F.sign_block_hash(this.private_key,K),ee={...m,signature:Qe,work:$};return await this.send_process(ee,"send")}async send_all(r,t,n){let s=await this.get_account_info(void 0,!0);return await this.send(r,F.raw_to_whole(BigInt(s.balance),this.rpc.DECIMALS),t,n,s)}async receive(r,t,n){let s=await this.rpc.get_block_info(r),g=0n;n||(n=this.address);let l;try{let K=await this.get_account_info(void 0,!0);l=K.frontier,n=K.representative,g=BigInt(K.balance)}catch{l="0".repeat(64)}let _={type:"state",account:this.address,previous:l,representative:n,balance:(g+BigInt(s.amount)).toString(),link:r},w=F.hash_block(_),B;t&&(B=await this.work_function(w));let b=F.sign_block_hash(this.private_key,w),m={..._,signature:b,work:B};return await this.send_process(m,"receive")}async receive_all(r=20,t,n){let s=(await this.get_account_receivable(r,t,!0)).blocks,g,l,_;try{let B=await this.get_account_info(void 0,!0);g=B.frontier,l=B.representative,_=BigInt(B.balance)}catch{g="0".repeat(64),l=this.address,_=BigInt(0)}let w=[];for(let B of Object.keys(s)){let b=(_+BigInt(s[B].amount)).toString(),m={type:"state",account:this.address,previous:g,representative:l,balance:b,link:B},K=F.hash_block(m),$;n&&($=await this.work_function(K));let Qe=F.sign_block_hash(this.private_key,K),ee={...m,signature:Qe,work:$};await this.send_process(ee,"receive"),w.push(K),g=K,_=BigInt(b)}return w}async change_representative(r,t){let n=await this.get_account_info(),s={type:"state",account:this.address,previous:n.frontier,representative:r,balance:n.balance,link:"0".repeat(64)},g=F.hash_block(s),l;t&&(l=await this.work_function(g));let _=F.sign_block_hash(this.private_key,g),w={...s,signature:_,work:l};return await this.send_process(w,"change")}async change_rep(r,t){return await this.change_representative(r,t)}async get_account_info(r,t,n,s){return await this.rpc.get_account_info(this.address,r,t,n,s)}async get_account_receivable(r,t,n){return await this.rpc.get_account_receivable(this.address,r,t,n)}sign_message(r){return F.sign_message(this.private_key,r)}};V.Wallet=st;var Tt=class extends st{static{I(this,"PrivateKeyAccount")}constructor(r,t,n){if(typeof t!="string"||t?.length!==64)throw Error("Priv key needs to be 64 character (hex) string");super(r,t,0,n),this._private_key=t}get private_key(){return this._private_key}};V.PrivateKeyAccount=Tt});var mn=S(It=>{"use strict";Object.defineProperty(It,"__esModule",{value:!0});It.RPCWorkProvider=void 0;var jt=class{static{I(this,"RPCWorkProvider")}constructor(r){this.extra_payload={},this.rpc=r}async request_work(r){return(await this.rpc.call({action:"work_generate",hash:r,...this.extra_payload})).work}};It.RPCWorkProvider=jt});var we=S(R=>{"use strict";var wo=R&&R.__createBinding||(Object.create?function(e,r,t,n){n===void 0&&(n=t);var s=Object.getOwnPropertyDescriptor(r,t);(!s||("get"in s?!r.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:I(function(){return r[t]},"get")}),Object.defineProperty(e,n,s)}:function(e,r,t,n){n===void 0&&(n=t),e[n]=r[t]}),Pe=R&&R.__exportStar||function(e,r){for(var t in e)t!=="default"&&!Object.prototype.hasOwnProperty.call(r,t)&&wo(r,e,t)};Object.defineProperty(R,"__esModule",{value:!0});Pe(At(),R);Pe(Qn(),R);Pe(bn(),R);Pe(Dn(),R);Pe(mn(),R)});var Jt={};vt(Jt,{LOG:()=>Ve,address_to_cid_v0:()=>xo,base58_to_hex:()=>Fn,bigint_to_uint8array:()=>vn,cid_v0_to_address:()=>Eo,decode_domain_name:()=>Ee,encode_domain_name:()=>ht,hex_to_base58:()=>Un});var Z=Ke(we());var Ve=!0;function ht(e){if(e.includes(".")||e.includes("\0")||e.includes('"'))throw new Error(`Domain name cannot include '.' or '"' or '\\u0000'`);let r=(0,Z.uint8array_to_hex)(new TextEncoder().encode(e));if(r.length>64)throw new Error("Cannot be more than 32 bytes");return r.length<64&&(r="0".repeat(64-r.length)+r),r}I(ht,"encode_domain_name");function Ee(e){return new TextDecoder().decode((0,Z.hex_to_uint8array)(e)).replaceAll("\0","")}I(Ee,"decode_domain_name");var Sn="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";function Un(e){let r=BigInt(`0x${e}`),t="";for(;t+=Sn[Number(r%BigInt(58))],r=r/BigInt(58),r!==0n;);return t.split("").reverse().join("")}I(Un,"hex_to_base58");function vn(e,r){let t=new Uint8Array(r),n=e;for(let s=1;s<=r;s++)t[r-s]=Number(n%256n),n/=256n;return t}I(vn,"bigint_to_uint8array");function Fn(e){let r=0n;for(let t=0;tBe,Resolver:()=>qt,TLDAccount:()=>xe});var T=Ke(we());var ct=class{static{I(this,"Account")}constructor(r,t){this.rpc=r,this.address=t}async get_open_and_frontier(){let r=await this.rpc.get_account_info(this.address,!0);return[r.open_block,r.confirmation_height_frontier??r.frontier]}async get_history_from_open(r,t){return await this.rpc.get_account_history(this.address,t,!0,r,void 0,!0)}},xe=class extends ct{static{I(this,"TLDAccount")}constructor(r,t){super(r,t),this.all_issued=[]}async get_specific(r){let[t,n]=await this.get_open_and_frontier(),s=t;for(;;){let{history:g}=await this.get_history_from_open(s,100);for(let l of g){let _=BigInt(l.amount??0);if(l.subtype==="send"&&_>=se&&_<=ne){let w=Ee((0,T.get_public_key_from_address)(l.representative));if(r===w)return{tld:this.address,name:r,history:[{type:"transfer",block:l,to:(0,T.get_address_from_public_key)(l.link)}]}}if(l.representative===Ie&&l.subtype==="change"||l.hash===n)return}s=g[g.length-1].hash}}async get_all_issued(){let[r,t]=await this.get_open_and_frontier(),n=r,s={};for(;;){let{history:g}=await this.get_history_from_open(n,100);for(let l of g){let _=BigInt(l.amount??0);if(l.subtype==="send"&&_>=se&&_<=ne){let w=Ee((0,T.get_public_key_from_address)(l.representative));s[w]?Ve&&console.log(`"${w}" already issued but TLD tried to issue again. Invalid.`):s[w]={tld:this.address,name:w,history:[{type:"transfer",block:l,to:(0,T.get_address_from_public_key)(l.link)}]}}if(l.representative===Ie&&l.subtype==="change"||l.hash===t)return this.all_issued=Object.values(s),this.all_issued}n=g[g.length-1].hash}}},Be=class extends ct{static{I(this,"DomainAccount")}constructor(r,t,n){super(r,t),this.domain=n}async crawl(){let r,t;try{[r,t]=await this.get_open_and_frontier()}catch{return Ve&&console.log("Not yet received"),this.domain}let n=r;for(;;){let{history:s}=await this.get_history_from_open(n,1e3);for(let g of s){let l=BigInt(g.amount??0);if(g.height==="1"){if(g.link!==this.domain.history[this.domain.history.length-1]?.block.hash)return Ve&&console.log("Domain burned"),this.domain.burned=!0,this.domain;this.domain.history.push({type:"receive",block:g})}else if(g.subtype==="send"&&l>=se&&l<=ne){let _=Ee((0,T.get_public_key_from_address)(g.representative));if(this.domain.name===_)return this.domain.resolved_address=void 0,this.domain.metadata_hash=void 0,this.domain.history.push({type:"transfer",block:g,to:(0,T.get_address_from_public_key)(g.link)}),this.domain}else{if(g.subtype==="change"&&g.representative===Ie)return this.domain.history.push({type:"freeze",block:g}),this.domain;g.subtype==="change"?(this.domain.metadata_hash=(0,T.get_public_key_from_address)(g.representative),this.domain.history.push({type:"metadata",block:g,metadata_hash:this.domain.metadata_hash})):g.subtype==="send"&&l===4224n&&(this.domain.resolved_address=(0,T.get_address_from_public_key)(g.link),this.domain.history.push({type:"resolver",block:g,resolved_address:this.domain.resolved_address}))}if(g.hash===t)return this.domain}n=s[s.length-1].hash}}},qt=class{static{I(this,"Resolver")}constructor(r,t){this.rpc=r,this.tld_mapping=t}async resolve(r,t){if(r=r.toLowerCase(),!this.tld_mapping[t])throw new Error("No TLD Account found for that TLD");let s=await new xe(this.rpc,this.tld_mapping[t]).get_specific(r);if(!s)return s;for(;;){let g=s.history[s.history.length-1].to,l=new Be(this.rpc,g,s),_=s.history.length;if(s=await l.crawl(),s.history[s.history.length-1].type!=="transfer"||s.burned||_===s.history.length)break}return s}async resolve_backwards_ish(r,t){let n=(await this.rpc.get_account_info(r,!0)).open_block,s=(await this.rpc.get_block_info(n)).contents.link,g=await this.rpc.get_block_info(s),l=Ee((0,T.get_public_key_from_address)(g.contents.representative)),_=await this.resolve(l,t);if((_?.history.slice().reverse().find(B=>B.type==="transfer")).to===r)return _}};var $t={};vt($t,{DomainAccountManager:()=>Zt,TLDAccountManager:()=>Wt});var ie=Ke(we());var Wt=class extends xe{static{I(this,"TLDAccountManager")}constructor(r,t){super(r,t.address),this.wallet=t}async issue_domain_name(r,t){if(r=r.toLowerCase(),this.all_issued.some(s=>s.name===r))throw new Error("Cannot issue a domain name that is already issued");return await this.wallet.send(t,"0.00120703011",void 0,(0,ie.get_address_from_public_key)(ht(r)))}async freeze(){await this.wallet.change_representative(Ie)}async receive(){await this.wallet.receive_all()}},Zt=class extends Be{static{I(this,"DomainAccountManager")}constructor(r,t,n){super(r,t.address),this.wallet=t,this.domain=n}async receive_domain(r,t,n){let s=!1,{history:g}=await this.rpc.get_account_history(this.address,1);if(g.length>1&&!n)throw s=!0,new Error("`allow_burning` must be true in order to receive this domain");let l=await this.rpc.get_block_info(r),_=BigInt(l.amount);if(_ne)throw new Error("`receive_hash` is not a Domain Transfer block");await this.wallet.receive(r,void 0,t)}async transfer_domain(r,t){let n=(await this.wallet.get_account_info()).balance,s=(0,ie.raw_to_whole)(ne);return ne>BigInt(n)&&se<=BigInt(n)&&(s=(0,ie.raw_to_whole)(BigInt(n))),await this.wallet.send(t,s,void 0,(0,ie.get_address_from_public_key)(ht(r)))}async declare_domain_metadata(r){if(r===Xt)throw new Error("A metadata hash of all 1s freezes the domain");await this.wallet.change_representative((0,ie.get_address_from_public_key)(r))}async declare_domain_resolve_to(r){await this.wallet.send(r,(0,ie.raw_to_whole)(4224n))}async freeze(){await this.wallet.change_representative(Ie)}};var Kn={};var Bo=Ke(we());window.bns={...Jt,...zt,...$t,...Kn,banani:Bo};})(); +(()=>{var Zn=Object.create;var Ze=Object.defineProperty;var $n=Object.getOwnPropertyDescriptor;var ei=Object.getOwnPropertyNames;var ti=Object.getPrototypeOf,ri=Object.prototype.hasOwnProperty;var I=(e,r)=>Ze(e,"name",{value:r,configurable:!0}),Qr=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(r,t)=>(typeof require<"u"?require:r)[t]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var S=(e,r)=>()=>(r||e((r={exports:{}}).exports,r),r.exports),Ft=(e,r)=>{for(var t in r)Ze(e,t,{get:r[t],enumerable:!0})},ni=(e,r,t,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let s of ei(r))!ri.call(e,s)&&s!==t&&Ze(e,s,{get:()=>r[s],enumerable:!(n=$n(r,s))||n.enumerable});return e};var Ke=(e,r,t)=>(t=e!=null?Zn(ti(e)):{},ni(r||!e||!e.__esModule?Ze(t,"default",{value:e,enumerable:!0}):t,e));var Kt=S((Uo,Dr)=>{Dr.exports=br;var $e=class extends Error{static{I(this,"AssertionError")}};$e.prototype.name="AssertionError";function br(e,r){if(!e){var t=new $e(r);throw Error.captureStackTrace&&Error.captureStackTrace(t,br),t}}I(br,"assert")});var Ur=S((Fo,Sr)=>{function mr(e){return e.length}I(mr,"byteLength");function ii(e){let r=e.byteLength,t="";for(let n=0;n{var ye="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Ae=new Uint8Array(256);for(let e=0;e1&&e.charCodeAt(r-1)===61&&r--,r*3>>>2}I(vr,"byteLength");function Ai(e){let r=e.byteLength,t="";for(let n=0;n>2]+ye[(e[n]&3)<<4|e[n+1]>>4]+ye[(e[n+1]&15)<<2|e[n+2]>>6]+ye[e[n+2]&63];return r%3===2?t=t.substring(0,t.length-1)+"=":r%3===1&&(t=t.substring(0,t.length-2)+"=="),t}I(Ai,"toString");function ai(e,r,t=0,n=vr(r)){let s=Math.min(n,e.byteLength-t);for(let g=0,l=0;l>4,e[l++]=(w&15)<<4|B>>2,e[l++]=(B&3)<<6|b&63}return s}I(ai,"write");Fr.exports={byteLength:vr,toString:Ai,write:ai}});var Mr=S((Lo,Lr)=>{function kr(e){return e.length>>>1}I(kr,"byteLength");function si(e){let r=e.byteLength;e=new DataView(e.buffer,e.byteOffset,r);let t="",n=0;for(let s=r-r%4;n=48&&e<=57)return e-48;if(e>=65&&e<=70)return e-65+10;if(e>=97&&e<=102)return e-97+10}I(Yr,"hexValue")});var Pr=S((Ho,Hr)=>{function Yt(e){let r=0;for(let t=0,n=e.length;t=55296&&s<=56319&&t+1=56320&&g<=57343){r+=4,t++;continue}}s<=127?r+=1:s<=2047?r+=2:r+=3}return r}I(Yt,"byteLength");var kt;if(typeof TextDecoder<"u"){let e=new TextDecoder;kt=I(function(t){return e.decode(t)},"toString")}else kt=I(function(r){let t=r.byteLength,n="",s=0;for(;s0){let w=0;for(;w>B,B-=6;B>=0;)r[_++]=128|w>>B&63,B-=6;l+=w>=65536?2:1}return g},"write");Hr.exports={byteLength:Yt,toString:kt,write:Lt}});var Gr=S((Vo,Or)=>{function Vr(e){return e.length*2}I(Vr,"byteLength");function hi(e){let r=e.byteLength,t="";for(let n=0;n>8,B=_%256;e[t+l*2]=B,e[t+l*2+1]=w}return s}I(ci,"write");Or.exports={byteLength:Vr,toString:hi,write:ci}});var Jr=S((Ht,jr)=>{var gi=Ur(),fi=Kr(),ui=Mr(),Ci=Pr(),li=Gr(),et=new Uint8Array(Uint16Array.of(255).buffer)[0]===255;function Ye(e){switch(e){case"ascii":return gi;case"base64":return fi;case"hex":return ui;case"utf8":case"utf-8":case void 0:return Ci;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return li;default:throw new Error(`Unknown encoding: ${e}`)}}I(Ye,"codecFor");function Rr(e){return e instanceof Uint8Array}I(Rr,"isBuffer");function yi(e){try{return Ye(e),!0}catch{return!1}}I(yi,"isEncoding");function _i(e,r,t){let n=new Uint8Array(e);return r!==void 0&&Ht.fill(n,r,0,n.byteLength,t),n}I(_i,"alloc");function di(e){return new Uint8Array(e)}I(di,"allocUnsafe");function wi(e){return new Uint8Array(e)}I(wi,"allocUnsafeSlow");function Ei(e,r){return Ye(r).byteLength(e)}I(Ei,"byteLength");function xi(e,r){if(e===r)return 0;let t=Math.min(e.byteLength,r.byteLength);e=new DataView(e.buffer,e.byteOffset,e.byteLength),r=new DataView(r.buffer,r.byteOffset,r.byteLength);let n=0;for(let s=t-t%4;ng)return 1}return e.byteLength>r.byteLength?1:e.byteLengths+g.byteLength,0));let t=new Uint8Array(r),n=0;for(let s of e){if(n+s.byteLength>t.byteLength){let g=s.subarray(0,t.byteLength-n);return t.set(g,n),t}t.set(s,n),n+=s.byteLength}return t}I(Bi,"concat");function pi(e,r,t=0,n=0,s=e.byteLength){if(s>0&&s=e.byteLength)throw new RangeError("sourceStart is out of range");if(s<0)throw new RangeError("sourceEnd is out of range");t>=r.byteLength&&(t=r.byteLength),s>e.byteLength&&(s=e.byteLength),r.byteLength-t=e.byteLength){if(s)return-1;t=e.byteLength-1}else if(t<0)if(s)t=0;else return-1;if(typeof r=="string")r=Mt(r,n);else if(typeof r=="number")return r=r&255,s?e.indexOf(r,t):e.lastIndexOf(r,t);if(r.byteLength===0)return-1;if(s){let g=-1;for(let l=t;le.byteLength&&(t=e.byteLength-r.byteLength);for(let g=t;g>=0;g--){let l=!0;for(let _=0;_=s||n<=t?"":(t<0&&(t=0),n>s&&(n=s),(t!==0||n{var Ji=I((e,r)=>I(function(){return r||(0,e[Object.keys(e)[0]])((r={exports:{}}).exports,r),r.exports},"__require"),"__commonJS"),Xi=(()=>{for(var e=new Uint8Array(128),r=0;r<64;r++)e[r<26?r+65:r<52?r+71:r<62?r-4:r*4-205]=r;return t=>{for(var n=t.length,s=new Uint8Array((n-(t[n-1]=="=")-(t[n-2]=="="))*3/4|0),g=0,l=0;g>4,s[l++]=w<<4|B>>2,s[l++]=B<<6|b}return s}})(),qi=Ji({"wasm-binary:./blake2b.wat"(e,r){r.exports=Xi("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")}}),zi=qi(),Wi=WebAssembly.compile(zi);Xr.exports=async e=>(await WebAssembly.instantiate(await Wi,e)).exports});var nn=S((Jo,J)=>{var M=Kt(),Zi=Jr(),W=null,zr=typeof WebAssembly<"u"&&qr()().then(e=>{W=e}),z=64,tt=[];J.exports=Y;var Wr=J.exports.BYTES_MIN=16,Zr=J.exports.BYTES_MAX=64,To=J.exports.BYTES=32,$r=J.exports.KEYBYTES_MIN=16,en=J.exports.KEYBYTES_MAX=64,jo=J.exports.KEYBYTES=32,tn=J.exports.SALTBYTES=16,rn=J.exports.PERSONALBYTES=16;function Y(e,r,t,n,s){if(!(this instanceof Y))return new Y(e,r,t,n,s);if(!W)throw new Error("WASM not loaded. Wait for Blake2b.ready(cb)");e||(e=32),s!==!0&&(M(e>=Wr,"digestLength must be at least "+Wr+", was given "+e),M(e<=Zr,"digestLength must be at most "+Zr+", was given "+e),r!=null&&(M(r instanceof Uint8Array,"key must be Uint8Array or Buffer"),M(r.length>=$r,"key must be at least "+$r+", was given "+r.length),M(r.length<=en,"key must be at least "+en+", was given "+r.length)),t!=null&&(M(t instanceof Uint8Array,"salt must be Uint8Array or Buffer"),M(t.length===tn,"salt must be exactly "+tn+", was given "+t.length)),n!=null&&(M(n instanceof Uint8Array,"personal must be Uint8Array or Buffer"),M(n.length===rn,"personal must be exactly "+rn+", was given "+n.length))),tt.length||(tt.push(z),z+=216),this.digestLength=e,this.finalized=!1,this.pointer=tt.pop(),this._memory=new Uint8Array(W.memory.buffer),this._memory.fill(0,0,64),this._memory[0]=this.digestLength,this._memory[1]=r?r.length:0,this._memory[2]=1,this._memory[3]=1,t&&this._memory.set(t,32),n&&this._memory.set(n,48),this.pointer+216>this._memory.length&&this._realloc(this.pointer+216),W.blake2b_init(this.pointer,this.digestLength),r&&(this.update(r),this._memory.fill(0,z,z+r.length),this._memory[this.pointer+200]=128)}I(Y,"Blake2b");Y.prototype._realloc=function(e){W.memory.grow(Math.max(0,Math.ceil(Math.abs(e-this._memory.length)/65536))),this._memory=new Uint8Array(W.memory.buffer)};Y.prototype.update=function(e){return M(this.finalized===!1,"Hash instance finalized"),M(e instanceof Uint8Array,"input must be Uint8Array or Buffer"),z+e.length>this._memory.length&&this._realloc(z+e.length),this._memory.set(e,z),W.blake2b_update(this.pointer,z,z+e.length),this};Y.prototype.digest=function(e){if(M(this.finalized===!1,"Hash instance finalized"),this.finalized=!0,tt.push(this.pointer),W.blake2b_final(this.pointer),!e||e==="binary")return this._memory.slice(this.pointer+128,this.pointer+128+this.digestLength);if(typeof e=="string")return Zi.toString(this._memory,e,this.pointer+128,this.pointer+128+this.digestLength);M(e instanceof Uint8Array&&e.length>=this.digestLength,"input must be Uint8Array or Buffer");for(var r=0;re(),e):e(new Error("WebAssembly not supported"))};Y.prototype.ready=Y.ready;Y.prototype.getPartialHash=function(){return this._memory.slice(this.pointer,this.pointer+216)};Y.prototype.setPartialHash=function(e){this._memory.set(e,this.pointer)};function $i(){}I($i,"noop")});var Pt=S((Wo,k)=>{var P=Kt(),Le=nn();function rt(e,r,t){var n=e[r]+e[t],s=e[r+1]+e[t+1];n>=4294967296&&s++,e[r]=n,e[r+1]=s}I(rt,"ADD64AA");function on(e,r,t,n){var s=e[r]+t;t<0&&(s+=4294967296);var g=e[r+1]+n;s>=4294967296&&g++,e[r]=s,e[r+1]=g}I(on,"ADD64AC");function gn(e,r){return e[r]^e[r+1]<<8^e[r+2]<<16^e[r+3]<<24}I(gn,"B2B_GET32");function te(e,r,t,n,s,g){var l=ke[s],_=ke[s+1],w=ke[g],B=ke[g+1];rt(x,e,r),on(x,e,l,_);var b=x[n]^x[e],m=x[n+1]^x[e+1];x[n]=m,x[n+1]=b,rt(x,t,n),b=x[r]^x[t],m=x[r+1]^x[t+1],x[r]=b>>>24^m<<8,x[r+1]=m>>>24^b<<8,rt(x,e,r),on(x,e,w,B),b=x[n]^x[e],m=x[n+1]^x[e+1],x[n]=b>>>16^m<<16,x[n+1]=m>>>16^b<<16,rt(x,t,n),b=x[r]^x[t],m=x[r+1]^x[t+1],x[r]=m>>>31^b<<1,x[r+1]=b>>>31^m<<1}I(te,"B2B_G");var fn=new Uint32Array([4089235720,1779033703,2227873595,3144134277,4271175723,1013904242,1595750129,2773480762,2917565137,1359893119,725511199,2600822924,4215389547,528734635,327033209,1541459225]),eo=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3],v=new Uint8Array(eo.map(function(e){return e*2})),x=new Uint32Array(32),ke=new Uint32Array(32);function un(e,r){var t=0;for(t=0;t<16;t++)x[t]=e.h[t],x[t+16]=fn[t];for(x[24]=x[24]^e.t,x[25]=x[25]^e.t/4294967296,r&&(x[28]=~x[28],x[29]=~x[29]),t=0;t<32;t++)ke[t]=gn(e.b,4*t);for(t=0;t<12;t++)te(0,8,16,24,v[t*16+0],v[t*16+1]),te(2,10,18,26,v[t*16+2],v[t*16+3]),te(4,12,20,28,v[t*16+4],v[t*16+5]),te(6,14,22,30,v[t*16+6],v[t*16+7]),te(0,10,20,30,v[t*16+8],v[t*16+9]),te(2,12,22,24,v[t*16+10],v[t*16+11]),te(4,14,16,26,v[t*16+12],v[t*16+13]),te(6,8,18,28,v[t*16+14],v[t*16+15]);for(t=0;t<16;t++)e.h[t]=e.h[t]^x[t]^x[t+16]}I(un,"blake2bCompress");var re=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);function _e(e,r,t,n){re.fill(0),this.b=new Uint8Array(128),this.h=new Uint32Array(16),this.t=0,this.c=0,this.outlen=e,re[0]=e,r&&(re[1]=r.length),re[2]=1,re[3]=1,t&&re.set(t,32),n&&re.set(n,48);for(var s=0;s<16;s++)this.h[s]=fn[s]^gn(re,s*4);r&&(Cn(this,r),this.c=128)}I(_e,"Blake2b");_e.prototype.update=function(e){return P(e instanceof Uint8Array,"input must be Uint8Array or Buffer"),Cn(this,e),this};_e.prototype.digest=function(e){var r=!e||e==="binary"||e==="hex"?new Uint8Array(this.outlen):e;return P(r instanceof Uint8Array,'out must be "binary", "hex", Uint8Array, or Buffer'),P(r.length>=this.outlen,"out must have at least outlen bytes of space"),to(this,r),e==="hex"?ro(r):r};_e.prototype.final=_e.prototype.digest;_e.ready=function(e){Le.ready(function(){e()})};function Cn(e,r){for(var t=0;t>2]>>8*(t&3);return r}I(to,"blake2bFinal");function ro(e){for(var r="",t=0;t=An,"outlen must be at least "+An+", was given "+r),P(r<=an,"outlen must be at most "+an+", was given "+r),t!=null&&(P(t instanceof Uint8Array,"key must be Uint8Array or Buffer"),P(t.length>=sn,"key must be at least "+sn+", was given "+t.length),P(t.length<=In,"key must be at most "+In+", was given "+t.length)),n!=null&&(P(n instanceof Uint8Array,"salt must be Uint8Array or Buffer"),P(n.length===hn,"salt must be exactly "+hn+", was given "+n.length)),s!=null&&(P(s instanceof Uint8Array,"personal must be Uint8Array or Buffer"),P(s.length===cn,"personal must be exactly "+cn+", was given "+s.length))),new io(r,t,n,s)},"createHash");k.exports.ready=function(e){Le.ready(function(){e()})};k.exports.WASM_SUPPORTED=Le.SUPPORTED;k.exports.WASM_LOADED=!1;var An=k.exports.BYTES_MIN=16,an=k.exports.BYTES_MAX=64,qo=k.exports.BYTES=32,sn=k.exports.KEYBYTES_MIN=16,In=k.exports.KEYBYTES_MAX=64,zo=k.exports.KEYBYTES=32,hn=k.exports.SALTBYTES=16,cn=k.exports.PERSONALBYTES=16;Le.ready(function(e){e||(k.exports.WASM_LOADED=!0,k.exports=Le)})});var ln=S(($o,nt)=>{(function(e){"use strict";let r=Pt();var t=I(function(i,A){this.hi=i|0,this.lo=A|0},"u64"),n=I(function(i){var A,o=new Float64Array(16);if(i)for(A=0;A>>32-A}I(ee,"L32");function he(i,A){var o=i[A+3]&255;return o=o<<8|i[A+2]&255,o=o<<8|i[A+1]&255,o<<8|i[A+0]&255}I(he,"ld32");function rr(i,A){var o=i[A]<<24|i[A+1]<<16|i[A+2]<<8|i[A+3],a=i[A+4]<<24|i[A+5]<<16|i[A+6]<<8|i[A+7];return new t(o,a)}I(rr,"dl64");function ft(i,A,o){var a;for(a=0;a<4;a++)i[A+a]=o&255,o>>>=8}I(ft,"st32");function nr(i,A,o){i[A]=o.hi>>24&255,i[A+1]=o.hi>>16&255,i[A+2]=o.hi>>8&255,i[A+3]=o.hi&255,i[A+4]=o.lo>>24&255,i[A+5]=o.lo>>16&255,i[A+6]=o.lo>>8&255,i[A+7]=o.lo&255}I(nr,"ts64");function ut(i,A,o,a,h){var c,C=0;for(c=0;c>>8)-1}I(ut,"vn");function ir(i,A,o,a){return ut(i,A,o,a,16)}I(ir,"crypto_verify_16");function Ct(i,A,o,a){return ut(i,A,o,a,32)}I(Ct,"crypto_verify_32");function or(i,A,o,a,h){var c=new Uint32Array(16),C=new Uint32Array(16),y=new Uint32Array(16),f=new Uint32Array(4),u,d,Q;for(u=0;u<4;u++)C[5*u]=he(a,4*u),C[1+u]=he(o,4*u),C[6+u]=he(A,4*u),C[11+u]=he(o,16+4*u);for(u=0;u<16;u++)y[u]=C[u];for(u=0;u<20;u++){for(d=0;d<4;d++){for(Q=0;Q<4;Q++)f[Q]=C[(5*d+4*Q)%16];for(f[1]^=ee(f[0]+f[3]|0,7),f[2]^=ee(f[1]+f[0]|0,9),f[3]^=ee(f[2]+f[1]|0,13),f[0]^=ee(f[3]+f[2]|0,18),Q=0;Q<4;Q++)c[4*d+(d+Q)%4]=f[Q]}for(Q=0;Q<16;Q++)C[Q]=c[Q]}if(h){for(u=0;u<16;u++)C[u]=C[u]+y[u]|0;for(u=0;u<4;u++)C[5*u]=C[5*u]-he(a,4*u)|0,C[6+u]=C[6+u]-he(A,4*u)|0;for(u=0;u<4;u++)ft(i,4*u,C[5*u]),ft(i,16+4*u,C[6+u])}else for(u=0;u<16;u++)ft(i,4*u,C[u]+y[u]|0)}I(or,"core");function Ar(i,A,o,a){return or(i,A,o,a,!1),0}I(Ar,"crypto_core_salsa20");function Ge(i,A,o,a){return or(i,A,o,a,!0),0}I(Ge,"crypto_core_hsalsa20");var Qe=new Uint8Array([101,120,112,97,110,100,32,51,50,45,98,121,116,101,32,107]);function lt(i,A,o,a,h,c,C){var y=new Uint8Array(16),f=new Uint8Array(64),u,d;if(!h)return 0;for(d=0;d<16;d++)y[d]=0;for(d=0;d<8;d++)y[d]=c[d];for(;h>=64;){for(Ar(f,y,C,Qe),d=0;d<64;d++)i[A+d]=(o?o[a+d]:0)^f[d];for(u=1,d=8;d<16;d++)u=u+(y[d]&255)|0,y[d]=u&255,u>>>=8;h-=64,A+=64,o&&(a+=64)}if(h>0)for(Ar(f,y,C,Qe),d=0;d>>=8}I(_t,"add1305");var Ln=new Uint32Array([5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252]);function dt(i,A,o,a,h,c){var C,y,f,u,d=new Uint32Array(17),Q=new Uint32Array(17),D=new Uint32Array(17),R=new Uint32Array(17),le=new Uint32Array(17);for(f=0;f<17;f++)Q[f]=D[f]=0;for(f=0;f<16;f++)Q[f]=c[f];for(Q[3]&=15,Q[4]&=252,Q[7]&=15,Q[8]&=252,Q[11]&=15,Q[12]&=252,Q[15]&=15;h>0;){for(f=0;f<17;f++)R[f]=0;for(f=0;f<16&&f>>=8;for(u=u+D[16]|0,D[16]=u&3,u=5*(u>>>2)|0,f=0;f<16;f++)u=u+D[f]|0,D[f]=u&255,u>>>=8;u=u+D[16]|0,D[16]=u}for(f=0;f<17;f++)le[f]=D[f];for(_t(D,Ln),C=-(D[16]>>>7)|0,f=0;f<17;f++)D[f]^=C&(le[f]^D[f]);for(f=0;f<16;f++)R[f]=c[f+16];for(R[16]=0,_t(D,R),f=0;f<16;f++)i[A+f]=D[f];return 0}I(dt,"crypto_onetimeauth");function Ir(i,A,o,a,h,c){var C=new Uint8Array(16);return dt(C,0,o,a,h,c),ir(i,A,C,0)}I(Ir,"crypto_onetimeauth_verify");function wt(i,A,o,a,h){var c;if(o<32)return-1;for(yt(i,0,A,0,o,a,h),dt(i,16,i,32,o-32,i),c=0;c<16;c++)i[c]=0;return 0}I(wt,"crypto_secretbox");function Et(i,A,o,a,h){var c,C=new Uint8Array(32);if(o<32||(sr(C,0,32,a,h),Ir(A,16,A,32,o-32,C)!==0))return-1;for(yt(i,0,A,0,o,a,h),c=0;c<32;c++)i[c]=0;return 0}I(Et,"crypto_secretbox_open");function X(i,A){var o;for(o=0;o<16;o++)i[o]=A[o]|0}I(X,"set25519");function be(i){var A,o;for(o=0;o<16;o++)i[o]+=65536,A=Math.floor(i[o]/65536),i[(o+1)*(o<15?1:0)]+=A-1+37*(A-1)*(o===15?1:0),i[o]-=A*65536}I(be,"car25519");function ce(i,A,o){for(var a,h=~(o-1),c=0;c<16;c++)a=h&(i[c]^A[c]),i[c]^=a,A[c]^=a}I(ce,"sel25519");function ge(i,A){var o,a,h,c=n(),C=n();for(o=0;o<16;o++)C[o]=A[o];for(be(C),be(C),be(C),a=0;a<2;a++){for(c[0]=C[0]-65517,o=1;o<15;o++)c[o]=C[o]-65535-(c[o-1]>>16&1),c[o-1]&=65535;c[15]=C[15]-32767-(c[14]>>16&1),h=c[15]>>16&1,c[14]&=65535,ce(C,c,1-h)}for(o=0;o<16;o++)i[2*o]=C[o]&255,i[2*o+1]=C[o]>>8}I(ge,"pack25519");function hr(i,A){var o=new Uint8Array(32),a=new Uint8Array(32);return ge(o,i),ge(a,A),Ct(o,0,a,0)}I(hr,"neq25519");function cr(i){var A=new Uint8Array(32);return ge(A,i),A[0]&1}I(cr,"par25519");function xt(i,A){var o;for(o=0;o<16;o++)i[o]=A[2*o]+(A[2*o+1]<<8);i[15]&=32767}I(xt,"unpack25519");function O(i,A,o){var a;for(a=0;a<16;a++)i[a]=A[a]+o[a]|0}I(O,"A");function G(i,A,o){var a;for(a=0;a<16;a++)i[a]=A[a]-o[a]|0}I(G,"Z");function p(i,A,o){var a,h,c=new Float64Array(31);for(a=0;a<31;a++)c[a]=0;for(a=0;a<16;a++)for(h=0;h<16;h++)c[a+h]+=A[a]*o[h];for(a=0;a<15;a++)c[a]+=38*c[a+16];for(a=0;a<16;a++)i[a]=c[a];be(i),be(i)}I(p,"M");function H(i,A){p(i,A,A)}I(H,"S");function gr(i,A){var o=n(),a;for(a=0;a<16;a++)o[a]=A[a];for(a=253;a>=0;a--)H(o,o),a!==2&&a!==4&&p(o,o,A);for(a=0;a<16;a++)i[a]=o[a]}I(gr,"inv25519");function fr(i,A){var o=n(),a;for(a=0;a<16;a++)o[a]=A[a];for(a=250;a>=0;a--)H(o,o),a!==1&&p(o,o,A);for(a=0;a<16;a++)i[a]=o[a]}I(fr,"pow2523");function Re(i,A,o){var a=new Uint8Array(32),h=new Float64Array(80),c,C,y=n(),f=n(),u=n(),d=n(),Q=n(),D=n();for(C=0;C<31;C++)a[C]=A[C];for(a[31]=A[31]&127|64,a[0]&=248,xt(h,o),C=0;C<16;C++)f[C]=h[C],d[C]=y[C]=u[C]=0;for(y[0]=d[0]=1,C=254;C>=0;--C)c=a[C>>>3]>>>(C&7)&1,ce(y,f,c),ce(u,d,c),O(Q,y,u),G(y,y,u),O(u,f,d),G(f,f,d),H(d,Q),H(D,y),p(y,u,y),p(u,f,Q),O(Q,y,u),G(y,y,u),H(f,y),G(u,d,D),p(y,u,B),O(y,y,d),p(u,u,y),p(y,d,D),p(d,f,h),H(f,Q),ce(y,f,c),ce(u,d,c);for(C=0;C<16;C++)h[C+16]=y[C],h[C+32]=u[C],h[C+48]=f[C],h[C+64]=d[C];var R=h.subarray(32),le=h.subarray(16);return gr(R,R),p(le,le,R),ge(i,le),0}I(Re,"crypto_scalarmult");function Ne(i,A){return Re(i,A,l)}I(Ne,"crypto_scalarmult_base");function ur(i,A){return s(A,32),Ne(i,A)}I(ur,"crypto_box_keypair");function Te(i,A,o){var a=new Uint8Array(32);return Re(a,o,A),Ge(i,g,a,Qe)}I(Te,"crypto_box_beforenm");var Cr=wt,Mn=Et;function Hn(i,A,o,a,h,c){var C=new Uint8Array(32);return Te(C,h,c),Cr(i,A,o,a,C)}I(Hn,"crypto_box");function Pn(i,A,o,a,h,c){var C=new Uint8Array(32);return Te(C,h,c),Mn(i,A,o,a,C)}I(Pn,"crypto_box_open");function De(){var i=0,A=0,o=0,a=0,h=65535,c,C,y;for(y=0;y>>16,o+=C&h,a+=C>>>16;return A+=i>>>16,o+=A>>>16,a+=o>>>16,new t(o&h|a<<16,i&h|A<<16)}I(De,"add64");function lr(i,A){return new t(i.hi>>>A,i.lo>>>A|i.hi<<32-A)}I(lr,"shr64");function je(){var i=0,A=0,o;for(o=0;o>>A|i.lo<>>A|i.hi<>>A|i.hi<>>A|i.lo<=128;){for(f=0;f<16;f++)C[f]=rr(A,8*f+d);for(f=0;f<80;f++){for(u=0;u<8;u++)h[u]=c[u];for(y=De(c[7],Rn(c[4]),Vn(c[4],c[5],c[6]),jn[f],C[f%16]),h[7]=De(y,Gn(c[0]),On(c[0],c[1],c[2])),h[3]=De(h[3],y),u=0;u<8;u++)c[(u+1)%8]=h[u];if(f%16===15)for(u=0;u<16;u++)C[u]=De(C[u],C[(u+9)%16],Nn(C[(u+1)%16]),Tn(C[(u+14)%16]))}for(f=0;f<8;f++)c[f]=De(c[f],a[f]),a[f]=c[f];d+=128,o-=128}for(f=0;f<8;f++)nr(i,8*f,a[f]);return o}I(yr,"crypto_hashblocks");let fe=I((i,A)=>r(A).update(i).digest(),"crypto_hash_blake2b");var Jn=new Uint8Array([106,9,230,103,243,188,201,8,187,103,174,133,132,202,167,59,60,110,243,114,254,148,248,43,165,79,245,58,95,29,54,241,81,14,82,127,173,230,130,209,155,5,104,140,43,62,108,31,31,131,217,171,251,65,189,107,91,224,205,25,19,126,33,121]);function _r(i,A,o){var a=new Uint8Array(64),h=new Uint8Array(256),c,C=o;for(c=0;c<64;c++)a[c]=Jn[c];for(yr(a,A,o),o%=128,c=0;c<256;c++)h[c]=0;for(c=0;c=0;--h)a=o[h/8|0]>>(h&7)&1,dr(i,A,a),Je(A,i),Je(i,i),dr(i,A,a)}I(Bt,"scalarmult");function me(i,A){var o=[n(),n(),n(),n()];X(o[0],K),X(o[1],$),X(o[2],w),p(o[3],K,$),Bt(i,o,A)}I(me,"scalarbase");function pt(i,A,o){var a=new Uint8Array(64),h=[n(),n(),n(),n()],c;o||s(A,32);a=fe(A,64),a[0]&=248,a[31]&=127,a[31]|=64,me(h,a),Xe(i,h);return 0}I(pt,"crypto_sign_keypair");var qe=new Float64Array([237,211,245,92,26,99,18,88,214,156,247,162,222,249,222,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16]);function Qt(i,A){var o,a,h,c;for(a=63;a>=32;--a){for(o=0,h=a-32,c=a-12;h>4)*qe[h],o=A[h]>>8,A[h]&=255;for(h=0;h<32;h++)A[h]-=o*qe[h];for(a=0;a<32;a++)A[a+1]+=A[a]>>8,i[a]=A[a]&255}I(Qt,"modL");function bt(i){var A=new Float64Array(64),o;for(o=0;o<64;o++)A[o]=i[o];for(o=0;o<64;o++)i[o]=0;Qt(i,A)}I(bt,"reduce");function wr(i,A,o,a){var h=new Uint8Array(64),c=new Uint8Array(64),C=new Uint8Array(64),y,f,u=new Float64Array(64),d=[n(),n(),n(),n()];let Q=pr(a);h=fe(a,64),h[0]&=248,h[31]&=127,h[31]|=64;var D=o+64;for(y=0;y>7&&G(i[0],_,i[0]),p(i[3],i[0],i[1]),0)}I(Xn,"unpackneg");function Dt(i,A,o,a){var h,c=new Uint8Array(32),C=new Uint8Array(64),y=[n(),n(),n(),n()],f=[n(),n(),n(),n()];if(o<64||Xn(f,a))return-1;for(h=0;h=0};function pr(i){let A=new Uint8Array(64),o=[n(),n(),n(),n()],a,h=new Uint8Array(32);return A=fe(i,64),A[0]&=248,A[31]&=127,A[31]|=64,me(o,A),Xe(h,o),h}I(pr,"derivePublicFromSecret"),e.sign.keyPair=function(){var i=new Uint8Array(oe),A=new Uint8Array(Ce);return pt(i,A),{publicKey:i,secretKey:A}},e.sign.keyPair.fromSecretKey=function(i){if(L(i),i.length!==Ce)throw new Error("bad secret key size");var A=new Uint8Array(oe);return A=pr(i),{publicKey:A,secretKey:new Uint8Array(i)}},e.sign.keyPair.fromSeed=function(i){if(L(i),i.length!==Ut)throw new Error("bad seed size");for(var A=new Uint8Array(oe),o=new Uint8Array(Ce),a=0;a<32;a++)o[a]=i[a];return pt(A,o,!0),{publicKey:A,secretKey:o}},e.sign.publicKeyLength=oe,e.sign.secretKeyLength=Ce,e.sign.seedLength=Ut,e.sign.signatureLength=q,e.hash=function(i){L(i);var A=new Uint8Array(vt);return _r(A,i,i.length),A},e.hash.hashLength=vt,e.verify=function(i,A){return L(i,A),i.length===0||A.length===0||i.length!==A.length?!1:ut(i,0,A,0,i.length)===0},e.setPRNG=function(i){s=i},function(){var i=typeof self<"u"?self.crypto||self.msCrypto:null;if(i&&i.getRandomValues){var A=65536;e.setPRNG(function(o,a){var h,c=new Uint8Array(a);for(h=0;h{"use strict";var oo=E&&E.__createBinding||(Object.create?function(e,r,t,n){n===void 0&&(n=t);var s=Object.getOwnPropertyDescriptor(r,t);(!s||("get"in s?!r.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:I(function(){return r[t]},"get")}),Object.defineProperty(e,n,s)}:function(e,r,t,n){n===void 0&&(n=t),e[n]=r[t]}),Ao=E&&E.__setModuleDefault||(Object.create?function(e,r){Object.defineProperty(e,"default",{enumerable:!0,value:r})}:function(e,r){e.default=r}),ao=E&&E.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var t in e)t!=="default"&&Object.prototype.hasOwnProperty.call(e,t)&&oo(r,e,t);return Ao(r,e),r},so=E&&E.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(E,"__esModule",{value:!0});E.verify_signed_message=E.sign_message=E.construct_message_block_and_hash=E.verify_block_hash=E.sign_block_hash=E.hash_block=E.get_public_key_from_address=E.get_address_from_public_key=E.get_public_key_from_private_key=E.get_private_key_from_seed=E.raw_to_whole=E.whole_to_raw=E.utf8_to_uint8array=E.base32_to_uint8array=E.uint8array_to_base32=E.int_to_uint8array=E.hex_to_uint8array=E.uint8array_to_hex=void 0;var Ot=ao(ln()),ot=so(Pt()),Io="0000000000000000000000000000000000000000000000000000000000000006",Gt="62616E616E6F6D73672D",Me=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"];function He(e){let r="";for(let t=0;t0;g--)s-=t[r-g]*16**(2*(g-1));t[r-n]=Math.floor(s/16**(2*(n-1)))}return t}I(yn,"int_to_uint8array");E.int_to_uint8array=yn;var _n=["1","3","4","5","6","7","8","9","a","b","c","d","e","f","g","h","i","j","k","m","n","o","p","q","r","s","t","u","w","x","y","z"];function Vt(e){let r="";for(let t=0;t=5)l=e[s]>>_-5&31;else{let w=5-_;l=(e[s]<>8-w&2**(8-w)-1)}r+=_n[l]}return r}I(Vt,"uint8array_to_base32");E.uint8array_to_base32=Vt;function ho(e,r){let t="",n=e;for(let s=0;s=2**(r-1-s)?(t+="1",n-=2**(r-1-s)):t+="0";return t}I(ho,"int_to_binary");function co(e){let r=0;for(let t=0;tho(_n.indexOf(n),5)).join(""),t=new Uint8Array(Math.ceil(e.length*5/8));for(let n=0;nr-n[1].length)throw Error(`Too many decimals, cannot exceed ${r}`);t=BigInt(n[0])*BigInt(10)**BigInt(r)+BigInt(n[1])*BigInt(10)**BigInt(r-n[1].length)}else t=BigInt(e)*BigInt(10)**BigInt(r);return t}I(go,"whole_to_raw");E.whole_to_raw=go;function fo(e,r=En){let t=e.toString(),n;if(t.length>r)n=t.slice(0,-r)+"."+t.slice(-r);else{let g=r-t.length;n="0."+"0".repeat(g>0?g:0)+t}let s=n.length;for(let g=0;g{"use strict";Object.defineProperty(de,"__esModule",{value:!0});de.RPCWithBackup=de.RPC=void 0;var yo=At(),at=class{static{I(this,"RPC")}constructor(r,t=!1){this.DECIMALS=void 0,this.debug=!1,this.rpc_url=r,this.use_pending=t}async call(r){this.debug&&console.log(JSON.stringify(r));let t=await fetch(this.rpc_url,{method:"POST",headers:this.headers??{"Content-Type":"application/json"},body:JSON.stringify(r)});if(!t.ok&&this.debug&&console.log(await t.text()),!t.ok)throw Error(`Request to RPC node failed with status code ${t.status}`);let n=await t.json();if(n.error)throw Error(`RPC node response: ${n.error}`);return n}async get_block_count(){return await this.call({action:"block_count"})}async get_block_info(r){return await this.call({action:"block_info",hash:r,json_block:!0})}async get_blocks(r){return await this.call({action:"blocks",hashes:r,json_block:!0})}async get_blocks_info(r){return await this.call({action:"blocks_info",hashes:r,json_block:!0})}async get_representatives(){return await this.call({action:"representatives"})}async get_representatives_online(r){return await this.call({action:"representatives_online",weight:r?!0:void 0})}async get_account_history(r,t,n,s,g,l,_){return await this.call({action:"account_history",account:r,count:`${t}`,raw:n?!0:void 0,head:s,offset:g?`${g}`:void 0,reverse:l?!0:void 0,account_filter:_})}async get_account_info(r,t,n,s,g){return await this.call({action:"account_info",account:r,representative:n?!0:void 0,weight:s?!0:void 0,pending:g?!0:void 0})}async get_account_balance(r){return await this.call({action:"account_balance",account:r})}async get_accounts_balances(r){return await this.call({action:"accounts_balances",accounts:r})}async get_account_representative(r){return await this.call({action:"account_representative",account:r})}async get_accounts_representatives(r){return await this.call({action:"accounts_representatives",account:r})}async get_account_weight(r){return await this.call({action:"account_weight",account:r})}async get_account_receivable(r,t,n,s){return await this.call({action:this.use_pending?"pending":"receivable",account:r,count:t?`${t}`:void 0,threshold:n?(0,yo.whole_to_raw)(n,this.DECIMALS).toString():void 0,source:s?!0:void 0})}async get_delegators(r,t,n,s){return await this.call({action:"delegators",account:r,threshold:t?`${t}`:void 0,count:n?`${n}`:void 0,start:s})}async get_delegators_count(r){return await this.call({action:"account_weight",account:r})}};de.RPC=at;var Tt=class extends at{static{I(this,"RPCWithBackup")}constructor(r,t,n=!1){if(r.length<2)throw Error("Must provide at least two RPC URLs");super(r[0],n),this.rpc_urls=r,this.timeout=t}async call(r){let t=0;for(;;)try{let n=await fetch(this.rpc_urls[t],{method:"POST",headers:this.headers??{"Content-Type":"application/json"},body:JSON.stringify(r),signal:AbortSignal.timeout(this.timeout)});if(!n.ok)throw Error(`Request to RPC node failed with status code ${n.status}`);let s=await n.json();if(s.error)throw Error(`RPC node response: ${s.error}`);return s}catch(n){if(!this.rpc_urls[++t])throw Error(n)}}};de.RPCWithBackup=Tt});var mn=S(Dn=>{"use strict";Object.defineProperty(Dn,"__esModule",{value:!0})});var Sn=S(V=>{"use strict";var _o=V&&V.__createBinding||(Object.create?function(e,r,t,n){n===void 0&&(n=t);var s=Object.getOwnPropertyDescriptor(r,t);(!s||("get"in s?!r.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:I(function(){return r[t]},"get")}),Object.defineProperty(e,n,s)}:function(e,r,t,n){n===void 0&&(n=t),e[n]=r[t]}),wo=V&&V.__setModuleDefault||(Object.create?function(e,r){Object.defineProperty(e,"default",{enumerable:!0,value:r})}:function(e,r){e.default=r}),Eo=V&&V.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var t in e)t!=="default"&&Object.prototype.hasOwnProperty.call(e,t)&&_o(r,e,t);return wo(r,e),r};Object.defineProperty(V,"__esModule",{value:!0});V.PrivateKeyAccount=V.Wallet=void 0;var F=Eo(At()),st=class e{static{I(this,"Wallet")}constructor(r,t,n=0,s){if(this.add_do_work=!0,this.rpc=r,typeof t!="string"||t?.length!==64)throw Error("Seed needs to be 64 character (hex) string");this.seed=t,this.index=n,this.work_function=s}static gen_random_wallet(r){let t=new Uint8Array(32);crypto.getRandomValues(t);let n=F.uint8array_to_hex(t);return new e(r,n)}get private_key(){return F.get_private_key_from_seed(this.seed,this.index)}get public_key(){return F.get_public_key_from_private_key(this.private_key)}get address(){return F.get_address_from_public_key(this.public_key)}async send_process(r,t){return(await this.rpc.call({action:"process",json_block:"true",subtype:t,block:r,do_work:!r.work&&this.add_do_work?!0:void 0})).hash}async send(r,t,n,s,g){let l=F.whole_to_raw(t,this.rpc.DECIMALS),_=g??await this.get_account_info(void 0,!0),w=F.get_public_key_from_address(r);s||(s=_.representative);let B=BigInt(_.balance),b=B-l;if(b<0n)throw Error(`Insufficient funds to send. Cannot send more than balance; ie, Before balance (raw: ${B}) less than send amount (raw: ${l})`);let m={type:"state",account:this.address,previous:_.frontier,representative:s,balance:b.toString(),link:w,link_as_account:r},K=F.hash_block(m),$;n&&($=await this.work_function(K));let pe=F.sign_block_hash(this.private_key,K),ee={...m,signature:pe,work:$};return await this.send_process(ee,"send")}async send_all(r,t,n){let s=await this.get_account_info(void 0,!0);return await this.send(r,F.raw_to_whole(BigInt(s.balance),this.rpc.DECIMALS),t,n,s)}async receive(r,t,n){let s=await this.rpc.get_block_info(r),g=0n;n||(n=this.address);let l;try{let K=await this.get_account_info(void 0,!0);l=K.frontier,n=K.representative,g=BigInt(K.balance)}catch{l="0".repeat(64)}let _={type:"state",account:this.address,previous:l,representative:n,balance:(g+BigInt(s.amount)).toString(),link:r},w=F.hash_block(_),B;t&&(B=await this.work_function(w));let b=F.sign_block_hash(this.private_key,w),m={..._,signature:b,work:B};return await this.send_process(m,"receive")}async receive_all(r=20,t,n){let s=(await this.get_account_receivable(r,t,!0)).blocks,g,l,_;try{let B=await this.get_account_info(void 0,!0);g=B.frontier,l=B.representative,_=BigInt(B.balance)}catch{g="0".repeat(64),l=this.address,_=BigInt(0)}let w=[];for(let B of Object.keys(s)){let b=(_+BigInt(s[B].amount)).toString(),m={type:"state",account:this.address,previous:g,representative:l,balance:b,link:B},K=F.hash_block(m),$;n&&($=await this.work_function(K));let pe=F.sign_block_hash(this.private_key,K),ee={...m,signature:pe,work:$};await this.send_process(ee,"receive"),w.push(K),g=K,_=BigInt(b)}return w}async change_representative(r,t){let n=await this.get_account_info(),s={type:"state",account:this.address,previous:n.frontier,representative:r,balance:n.balance,link:"0".repeat(64)},g=F.hash_block(s),l;t&&(l=await this.work_function(g));let _=F.sign_block_hash(this.private_key,g),w={...s,signature:_,work:l};return await this.send_process(w,"change")}async change_rep(r,t){return await this.change_representative(r,t)}async get_account_info(r,t,n,s){return await this.rpc.get_account_info(this.address,r,t,n,s)}async get_account_receivable(r,t,n){return await this.rpc.get_account_receivable(this.address,r,t,n)}sign_message(r){return F.sign_message(this.private_key,r)}};V.Wallet=st;var jt=class extends st{static{I(this,"PrivateKeyAccount")}constructor(r,t,n){if(typeof t!="string"||t?.length!==64)throw Error("Priv key needs to be 64 character (hex) string");super(r,t,0,n),this._private_key=t}get private_key(){return this._private_key}};V.PrivateKeyAccount=jt});var Un=S(It=>{"use strict";Object.defineProperty(It,"__esModule",{value:!0});It.RPCWorkProvider=void 0;var Jt=class{static{I(this,"RPCWorkProvider")}constructor(r){this.extra_payload={},this.rpc=r}async request_work(r){return(await this.rpc.call({action:"work_generate",hash:r,...this.extra_payload})).work}};It.RPCWorkProvider=Jt});var we=S(N=>{"use strict";var xo=N&&N.__createBinding||(Object.create?function(e,r,t,n){n===void 0&&(n=t);var s=Object.getOwnPropertyDescriptor(r,t);(!s||("get"in s?!r.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:I(function(){return r[t]},"get")}),Object.defineProperty(e,n,s)}:function(e,r,t,n){n===void 0&&(n=t),e[n]=r[t]}),Pe=N&&N.__exportStar||function(e,r){for(var t in e)t!=="default"&&!Object.prototype.hasOwnProperty.call(r,t)&&xo(r,e,t)};Object.defineProperty(N,"__esModule",{value:!0});Pe(At(),N);Pe(bn(),N);Pe(mn(),N);Pe(Sn(),N);Pe(Un(),N)});var qt={};Ft(qt,{BSF_HEX_CHARS:()=>ct,HEX_CHARS:()=>Xt,LOG:()=>Ve,address_to_cid_v0:()=>Do,base58_to_hex:()=>Yn,bigint_to_uint8array:()=>Kn,bns_seed_format_to_hex:()=>po,cid_v0_to_address:()=>bo,decode_domain_name:()=>Ee,encode_domain_name:()=>ht,hex_to_base58:()=>Fn,hex_to_bns_seed_format:()=>Bo,is_bns_seed_format:()=>Qo});var Z=Ke(we());var Ve=!0;function ht(e){if(e.includes(".")||e.includes("\0")||e.includes('"'))throw new Error(`Domain name cannot include '.' or '"' or '\\u0000'`);let r=(0,Z.uint8array_to_hex)(new TextEncoder().encode(e));if(r.length>64)throw new Error("Cannot be more than 32 bytes");return r.length<64&&(r="0".repeat(64-r.length)+r),r}I(ht,"encode_domain_name");function Ee(e){return new TextDecoder().decode((0,Z.hex_to_uint8array)(e)).replaceAll("\0","")}I(Ee,"decode_domain_name");var vn="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";function Fn(e){let r=BigInt(`0x${e}`),t="";for(;t+=vn[Number(r%BigInt(58))],r=r/BigInt(58),r!==0n;);return t.split("").reverse().join("")}I(Fn,"hex_to_base58");var Xt="0123456789ABCDEF",ct="ghijklmnopqrstuv";function Bo(e){return e.split("").map(r=>ct[Xt.indexOf(r.toUpperCase())]).join("")}I(Bo,"hex_to_bns_seed_format");function po(e){return e.split("").map(r=>Xt[ct.indexOf(r.toLowerCase())]).join("")}I(po,"bns_seed_format_to_hex");function Qo(e){return e.split("").every(r=>ct.includes(r.toLowerCase()))}I(Qo,"is_bns_seed_format");function Kn(e,r){let t=new Uint8Array(r),n=e;for(let s=1;s<=r;s++)t[r-s]=Number(n%256n),n/=256n;return t}I(Kn,"bigint_to_uint8array");function Yn(e){let r=0n;for(let t=0;tBe,Resolver:()=>Wt,TLDAccount:()=>xe});var T=Ke(we());var gt=class{static{I(this,"Account")}constructor(r,t){this.rpc=r,this.address=t}async get_open_and_frontier(){let r=await this.rpc.get_account_info(this.address,!0);return[r.open_block,r.confirmation_height_frontier??r.frontier]}async get_history_from_open(r,t){return await this.rpc.get_account_history(this.address,t,!0,r,void 0,!0)}},xe=class extends gt{static{I(this,"TLDAccount")}constructor(r,t){super(r,t),this.all_issued=[]}async get_specific(r){let[t,n]=await this.get_open_and_frontier(),s=t;for(;;){let{history:g}=await this.get_history_from_open(s,100);for(let l of g){let _=BigInt(l.amount??0);if(l.subtype==="send"&&_>=se&&_<=ne){let w=Ee((0,T.get_public_key_from_address)(l.representative));if(r===w)return{tld:this.address,name:r,history:[{type:"transfer",block:l,to:(0,T.get_address_from_public_key)(l.link)}]}}if(l.representative===Ie&&l.subtype==="change"||l.hash===n)return}s=g[g.length-1].hash}}async get_all_issued(){let[r,t]=await this.get_open_and_frontier(),n=r,s={};for(;;){let{history:g}=await this.get_history_from_open(n,100);for(let l of g){let _=BigInt(l.amount??0);if(l.subtype==="send"&&_>=se&&_<=ne){let w=Ee((0,T.get_public_key_from_address)(l.representative));s[w]?Ve&&console.log(`"${w}" already issued but TLD tried to issue again. Invalid.`):s[w]={tld:this.address,name:w,history:[{type:"transfer",block:l,to:(0,T.get_address_from_public_key)(l.link)}]}}if(l.representative===Ie&&l.subtype==="change"||l.hash===t)return this.all_issued=Object.values(s),this.all_issued}n=g[g.length-1].hash}}},Be=class extends gt{static{I(this,"DomainAccount")}constructor(r,t,n){super(r,t),this.domain=n}async crawl(){let r,t;try{[r,t]=await this.get_open_and_frontier()}catch{return Ve&&console.log("Not yet received"),this.domain}let n=r;for(;;){let{history:s}=await this.get_history_from_open(n,1e3);for(let g of s){let l=BigInt(g.amount??0);if(g.height==="1"){if(g.link!==this.domain.history[this.domain.history.length-1]?.block.hash)return Ve&&console.log("Domain burned"),this.domain.burned=!0,this.domain;this.domain.history.push({type:"receive",block:g})}else if(g.subtype==="send"&&l>=se&&l<=ne){let _=Ee((0,T.get_public_key_from_address)(g.representative));if(this.domain.name===_)return this.domain.resolved_address=void 0,this.domain.metadata_hash=void 0,this.domain.history.push({type:"transfer",block:g,to:(0,T.get_address_from_public_key)(g.link)}),this.domain}else{if(g.subtype==="change"&&g.representative===Ie)return this.domain.history.push({type:"freeze",block:g}),this.domain;g.subtype==="change"?(this.domain.metadata_hash=(0,T.get_public_key_from_address)(g.representative),this.domain.history.push({type:"metadata",block:g,metadata_hash:this.domain.metadata_hash})):g.subtype==="send"&&l===4224n&&(this.domain.resolved_address=(0,T.get_address_from_public_key)(g.link),this.domain.history.push({type:"resolver",block:g,resolved_address:this.domain.resolved_address}))}if(g.hash===t)return this.domain}n=s[s.length-1].hash}}},Wt=class{static{I(this,"Resolver")}constructor(r,t){this.rpc=r,this.tld_mapping=t}async resolve(r,t){if(r=r.toLowerCase(),!this.tld_mapping[t])throw new Error("No TLD Account found for that TLD");let s=await new xe(this.rpc,this.tld_mapping[t]).get_specific(r);if(!s)return s;for(;;){let g=s.history[s.history.length-1].to,l=new Be(this.rpc,g,s),_=s.history.length;if(s=await l.crawl(),s.history[s.history.length-1].type!=="transfer"||s.burned||_===s.history.length)break}return s}async resolve_backwards_ish(r,t){let n=(await this.rpc.get_account_info(r,!0)).open_block,s=(await this.rpc.get_block_info(n)).contents.link,g=await this.rpc.get_block_info(s),l=Ee((0,T.get_public_key_from_address)(g.contents.representative)),_=await this.resolve(l,t);if((_?.history.slice().reverse().find(B=>B.type==="transfer")).to===r)return _}};var tr={};Ft(tr,{DomainAccountManager:()=>er,TLDAccountManager:()=>$t});var ie=Ke(we());var $t=class extends xe{static{I(this,"TLDAccountManager")}constructor(r,t){super(r,t.address),this.wallet=t}async issue_domain_name(r,t){if(r=r.toLowerCase(),this.all_issued.some(s=>s.name===r))throw new Error("Cannot issue a domain name that is already issued");return await this.wallet.send(t,"0.00120703011",void 0,(0,ie.get_address_from_public_key)(ht(r)))}async freeze(){await this.wallet.change_representative(Ie)}async receive(){await this.wallet.receive_all()}},er=class extends Be{static{I(this,"DomainAccountManager")}constructor(r,t,n){super(r,t.address),this.wallet=t,this.domain=n}async receive_domain(r,t,n){let s=!1,{history:g}=await this.rpc.get_account_history(this.address,1);if(g.length>1&&!n)throw s=!0,new Error("`allow_burning` must be true in order to receive this domain");let l=await this.rpc.get_block_info(r),_=BigInt(l.amount);if(_ne)throw new Error("`receive_hash` is not a Domain Transfer block");await this.wallet.receive(r,void 0,t)}async transfer_domain(r,t){let n=(await this.wallet.get_account_info()).balance,s=(0,ie.raw_to_whole)(ne);return ne>BigInt(n)&&se<=BigInt(n)&&(s=(0,ie.raw_to_whole)(BigInt(n))),await this.wallet.send(t,s,void 0,(0,ie.get_address_from_public_key)(ht(r)))}async declare_domain_metadata(r){if(r===zt)throw new Error("A metadata hash of all 1s freezes the domain");await this.wallet.change_representative((0,ie.get_address_from_public_key)(r))}async declare_domain_resolve_to(r){await this.wallet.send(r,(0,ie.raw_to_whole)(4224n))}async freeze(){await this.wallet.change_representative(Ie)}};var kn={};var mo=Ke(we());window.bns={...qt,...Zt,...tr,...kn,banani:mo};})(); /*! Bundled license information: banani/tweetnacl_mod.js: diff --git a/bns_protocol.md b/bns_protocol.md index 2d2b36a..9e468e5 100644 --- a/bns_protocol.md +++ b/bns_protocol.md @@ -1,4 +1,4 @@ -*Version 1.0.0 release-candidate* +*Version 1.0.0 release-candidate 2* Very similar to [Airtune's Banano NFT protocol](https://github.com/Airtune/73-meta-tokens) @@ -142,9 +142,11 @@ Also, for the convenience of the user (so they can do a Domain Resovler and Doma Domain owners will need some specialised software to manage domains. Generating/storing Domain Accounts, transferring domains, and setting/changing their resolved address are all simple. Changing domain metadata is a bit more complicated and involves uploading the metadata file to IPFS. The demo client supports converting IPFS Cid v0 into metadata hashes, and then declaring that metadata hash. +As BNS domains can be burned if sent/received improperly, **it is important that TLD and Domain Accounts are not imported into regular wallets** which may do things like auto-receive. As such, it is recommended that BNS wallets (and wallet-like software) generate seeds for TLD and Domain Accounts in a unique (that is, not 64 hex characters) format, so that those seeds cannot be easily imported into regular wallets by uninformed users. Obviously, BNS wallets should also accept that unique seed format. Arbitrarily, because base32 is annoying, the recommended unique seed format is a simple change of the hex characters 0-9 to g-p and A-F to q-v. This will be called the "BNS Seed Format", or the "BSF Hex". + ## Non-BNS wallets -Non-BNS wallets are regular Banano wallets like Kalium, Dagchat, Bananostand, etc, that will likely not add support for minting and managing BNS domains. +Non-BNS wallets are regular Banano wallets like Kalium, Dagchat, Bananostand, Banano Keeper, etc, that will likely not add support for minting and managing BNS domains. However, they can still integrate BNS by keeping a user-editable mapping of TLDs to addresses, and then supporting domain -> address translation for sending Banano or changing representatives. diff --git a/browser_test/index.html b/browser_test/index.html index b7437e4..4a7ad17 100644 --- a/browser_test/index.html +++ b/browser_test/index.html @@ -31,7 +31,7 @@

Click 'Create TLD Account' if you want to issue domain names, and click 'Create Domain Account' if you want to own a domain.

-

Enter an existing seed here:

+

Enter an existing seed here (accepts both BNS Seed Format and regular seeds):



Quick Guide

@@ -52,7 +52,7 @@

Special thanks to airtune and yusuf. Protocol Specification

Parameters

  • address: `ban_${string}` | `nano_${string}`

Returns string

\ No newline at end of file diff --git a/docs/functions/base58_to_hex.html b/docs/functions/base58_to_hex.html index 0c37ebd..d246965 100644 --- a/docs/functions/base58_to_hex.html +++ b/docs/functions/base58_to_hex.html @@ -1 +1 @@ -base58_to_hex | bns

Function base58_to_hex

  • Parameters

    • base58: string

    Returns string

\ No newline at end of file +base58_to_hex | bns

Function base58_to_hex

  • Parameters

    • base58: string

    Returns string

\ No newline at end of file diff --git a/docs/functions/bigint_to_uint8array.html b/docs/functions/bigint_to_uint8array.html index 08c24d7..b7dc74b 100644 --- a/docs/functions/bigint_to_uint8array.html +++ b/docs/functions/bigint_to_uint8array.html @@ -1 +1 @@ -bigint_to_uint8array | bns

Function bigint_to_uint8array

  • Parameters

    • bint: bigint
    • len: number

    Returns Uint8Array

\ No newline at end of file +bigint_to_uint8array | bns

Function bigint_to_uint8array

  • Parameters

    • bint: bigint
    • len: number

    Returns Uint8Array

\ No newline at end of file diff --git a/docs/functions/bns_seed_format_to_hex.html b/docs/functions/bns_seed_format_to_hex.html new file mode 100644 index 0000000..45384b6 --- /dev/null +++ b/docs/functions/bns_seed_format_to_hex.html @@ -0,0 +1 @@ +bns_seed_format_to_hex | bns

Function bns_seed_format_to_hex

  • Parameters

    • bsf_hex: string

    Returns string

\ No newline at end of file diff --git a/docs/functions/cid_v0_to_address.html b/docs/functions/cid_v0_to_address.html index 6c886be..3d21be4 100644 --- a/docs/functions/cid_v0_to_address.html +++ b/docs/functions/cid_v0_to_address.html @@ -1,2 +1,2 @@ cid_v0_to_address | bns

Function cid_v0_to_address

  • IPFS CID v0 to Banano address

    -

    Parameters

    • cid_v0: string

    Returns Address

\ No newline at end of file +

Parameters

  • cid_v0: string

Returns Address

\ No newline at end of file diff --git a/docs/functions/decode_domain_name.html b/docs/functions/decode_domain_name.html index bfffe92..35c8e84 100644 --- a/docs/functions/decode_domain_name.html +++ b/docs/functions/decode_domain_name.html @@ -1 +1 @@ -decode_domain_name | bns

Function decode_domain_name

  • Parameters

    • encoded_domain_name: string

    Returns string

\ No newline at end of file +decode_domain_name | bns

Function decode_domain_name

  • Parameters

    • encoded_domain_name: string

    Returns string

\ No newline at end of file diff --git a/docs/functions/encode_domain_name.html b/docs/functions/encode_domain_name.html index 56a45e1..f38b97d 100644 --- a/docs/functions/encode_domain_name.html +++ b/docs/functions/encode_domain_name.html @@ -1 +1 @@ -encode_domain_name | bns

Function encode_domain_name

  • Parameters

    • domain_name: string

    Returns string

\ No newline at end of file +encode_domain_name | bns

Function encode_domain_name

  • Parameters

    • domain_name: string

    Returns string

\ No newline at end of file diff --git a/docs/functions/hex_to_base58.html b/docs/functions/hex_to_base58.html index 6a8f7b5..d12d1bb 100644 --- a/docs/functions/hex_to_base58.html +++ b/docs/functions/hex_to_base58.html @@ -1 +1 @@ -hex_to_base58 | bns

Function hex_to_base58

  • Parameters

    • hex: string

    Returns string

\ No newline at end of file +hex_to_base58 | bns

Function hex_to_base58

  • Parameters

    • hex: string

    Returns string

\ No newline at end of file diff --git a/docs/functions/hex_to_bns_seed_format.html b/docs/functions/hex_to_bns_seed_format.html new file mode 100644 index 0000000..354d9a3 --- /dev/null +++ b/docs/functions/hex_to_bns_seed_format.html @@ -0,0 +1 @@ +hex_to_bns_seed_format | bns

Function hex_to_bns_seed_format

  • Parameters

    • hex: string

    Returns string

\ No newline at end of file diff --git a/docs/functions/is_bns_seed_format.html b/docs/functions/is_bns_seed_format.html new file mode 100644 index 0000000..0ddf7c7 --- /dev/null +++ b/docs/functions/is_bns_seed_format.html @@ -0,0 +1 @@ +is_bns_seed_format | bns

Function is_bns_seed_format

  • Parameters

    • maybe_bsf_hex: string

    Returns boolean

\ No newline at end of file diff --git a/docs/interfaces/Domain.html b/docs/interfaces/Domain.html index 9b1e0dd..2066024 100644 --- a/docs/interfaces/Domain.html +++ b/docs/interfaces/Domain.html @@ -1,7 +1,7 @@ -Domain | bns

Interface Domain

interface Domain {
    burned?: boolean;
    history: DomainBlocks[];
    metadata_hash?: string;
    name: string;
    resolved_address?: `ban_${string}` | `nano_${string}`;
    tld: `ban_${string}` | `nano_${string}`;
}

Properties

burned? +Domain | bns

Interface Domain

interface Domain {
    burned?: boolean;
    history: DomainBlocks[];
    metadata_hash?: string;
    name: string;
    resolved_address?: `ban_${string}` | `nano_${string}`;
    tld: `ban_${string}` | `nano_${string}`;
}

Properties

burned?: boolean
history: DomainBlocks[]
metadata_hash?: string
name: string
resolved_address?: `ban_${string}` | `nano_${string}`
tld: `ban_${string}` | `nano_${string}`
\ No newline at end of file +

Properties

burned?: boolean
history: DomainBlocks[]
metadata_hash?: string
name: string
resolved_address?: `ban_${string}` | `nano_${string}`
tld: `ban_${string}` | `nano_${string}`
\ No newline at end of file diff --git a/docs/interfaces/DomainBlock.html b/docs/interfaces/DomainBlock.html index 79781a0..b7e8afb 100644 --- a/docs/interfaces/DomainBlock.html +++ b/docs/interfaces/DomainBlock.html @@ -1,3 +1,3 @@ -DomainBlock | bns

Interface DomainBlock

interface DomainBlock {
    block: AccountHistoryRawBlock;
    type: "receive" | "transfer" | "metadata" | "resolver" | "freeze";
}

Hierarchy (view full)

Properties

block +DomainBlock | bns

Interface DomainBlock

interface DomainBlock {
    block: AccountHistoryRawBlock;
    type: "receive" | "transfer" | "metadata" | "resolver" | "freeze";
}

Hierarchy (view full)

Properties

Properties

type: "receive" | "transfer" | "metadata" | "resolver" | "freeze"
\ No newline at end of file +

Properties

type: "receive" | "transfer" | "metadata" | "resolver" | "freeze"
\ No newline at end of file diff --git a/docs/interfaces/DomainFreeze.html b/docs/interfaces/DomainFreeze.html index a39f3b5..c14279f 100644 --- a/docs/interfaces/DomainFreeze.html +++ b/docs/interfaces/DomainFreeze.html @@ -1,3 +1,3 @@ -DomainFreeze | bns

Interface DomainFreeze

interface DomainFreeze {
    block: AccountHistoryRawBlock;
    type: "freeze";
}

Hierarchy (view full)

Properties

block +DomainFreeze | bns

Interface DomainFreeze

interface DomainFreeze {
    block: AccountHistoryRawBlock;
    type: "freeze";
}

Hierarchy (view full)

Properties

Properties

type: "freeze"
\ No newline at end of file +

Properties

type: "freeze"
\ No newline at end of file diff --git a/docs/interfaces/DomainMetadata.html b/docs/interfaces/DomainMetadata.html index ab307b3..fe364aa 100644 --- a/docs/interfaces/DomainMetadata.html +++ b/docs/interfaces/DomainMetadata.html @@ -1,4 +1,4 @@ -DomainMetadata | bns

Interface DomainMetadata

interface DomainMetadata {
    block: AccountHistoryRawBlock;
    metadata_hash: string;
    type: "metadata";
}

Hierarchy (view full)

Properties

block +DomainMetadata | bns

Interface DomainMetadata

interface DomainMetadata {
    block: AccountHistoryRawBlock;
    metadata_hash: string;
    type: "metadata";
}

Hierarchy (view full)

Properties

metadata_hash: string
type: "metadata"
\ No newline at end of file +

Properties

metadata_hash: string
type: "metadata"
\ No newline at end of file diff --git a/docs/interfaces/DomainReceive.html b/docs/interfaces/DomainReceive.html index 1325bd8..454f900 100644 --- a/docs/interfaces/DomainReceive.html +++ b/docs/interfaces/DomainReceive.html @@ -1,3 +1,3 @@ -DomainReceive | bns

Interface DomainReceive

interface DomainReceive {
    block: AccountHistoryRawBlock;
    type: "receive";
}

Hierarchy (view full)

Properties

block +DomainReceive | bns

Interface DomainReceive

interface DomainReceive {
    block: AccountHistoryRawBlock;
    type: "receive";
}

Hierarchy (view full)

Properties

Properties

type: "receive"
\ No newline at end of file +

Properties

type: "receive"
\ No newline at end of file diff --git a/docs/interfaces/DomainResolver.html b/docs/interfaces/DomainResolver.html index f55067d..9512dc4 100644 --- a/docs/interfaces/DomainResolver.html +++ b/docs/interfaces/DomainResolver.html @@ -1,4 +1,4 @@ -DomainResolver | bns

Interface DomainResolver

interface DomainResolver {
    block: AccountHistoryRawBlock;
    resolved_address: `ban_${string}` | `nano_${string}`;
    type: "resolver";
}

Hierarchy (view full)

Properties

block +DomainResolver | bns

Interface DomainResolver

interface DomainResolver {
    block: AccountHistoryRawBlock;
    resolved_address: `ban_${string}` | `nano_${string}`;
    type: "resolver";
}

Hierarchy (view full)

Properties

resolved_address: `ban_${string}` | `nano_${string}`
type: "resolver"
\ No newline at end of file +

Properties

resolved_address: `ban_${string}` | `nano_${string}`
type: "resolver"
\ No newline at end of file diff --git a/docs/interfaces/DomainTransfer.html b/docs/interfaces/DomainTransfer.html index f5a933c..099f21e 100644 --- a/docs/interfaces/DomainTransfer.html +++ b/docs/interfaces/DomainTransfer.html @@ -1,4 +1,4 @@ -DomainTransfer | bns

Interface DomainTransfer

interface DomainTransfer {
    block: AccountHistoryRawBlock;
    to: `ban_${string}` | `nano_${string}`;
    type: "transfer";
}

Hierarchy (view full)

Properties

block +DomainTransfer | bns

Interface DomainTransfer

interface DomainTransfer {
    block: AccountHistoryRawBlock;
    to: `ban_${string}` | `nano_${string}`;
    type: "transfer";
}

Hierarchy (view full)

Properties

Properties

to: `ban_${string}` | `nano_${string}`
type: "transfer"
\ No newline at end of file +

Properties

to: `ban_${string}` | `nano_${string}`
type: "transfer"
\ No newline at end of file diff --git a/docs/modules.html b/docs/modules.html index ee5040f..844a284 100644 --- a/docs/modules.html +++ b/docs/modules.html @@ -12,16 +12,21 @@ DomainResolver DomainTransfer

Type Aliases

Variables

Variables

Functions

\ No newline at end of file diff --git a/docs/types/DomainBlocks.html b/docs/types/DomainBlocks.html index 38bd6f4..154174e 100644 --- a/docs/types/DomainBlocks.html +++ b/docs/types/DomainBlocks.html @@ -1 +1 @@ -DomainBlocks | bns
\ No newline at end of file +DomainBlocks | bns
\ No newline at end of file diff --git a/docs/variables/BSF_HEX_CHARS.html b/docs/variables/BSF_HEX_CHARS.html new file mode 100644 index 0000000..d300c57 --- /dev/null +++ b/docs/variables/BSF_HEX_CHARS.html @@ -0,0 +1 @@ +BSF_HEX_CHARS | bns

Variable BSF_HEX_CHARSConst

BSF_HEX_CHARS: "ghijklmnopqrstuv" = "ghijklmnopqrstuv"
\ No newline at end of file diff --git a/docs/variables/FREEZE_PUB_KEY.html b/docs/variables/FREEZE_PUB_KEY.html index 298930d..63afb6b 100644 --- a/docs/variables/FREEZE_PUB_KEY.html +++ b/docs/variables/FREEZE_PUB_KEY.html @@ -1 +1 @@ -FREEZE_PUB_KEY | bns

Variable FREEZE_PUB_KEYConst

FREEZE_PUB_KEY: string = ...
\ No newline at end of file +FREEZE_PUB_KEY | bns

Variable FREEZE_PUB_KEYConst

FREEZE_PUB_KEY: string = ...
\ No newline at end of file diff --git a/docs/variables/FREEZE_REP.html b/docs/variables/FREEZE_REP.html index fee5518..f95a068 100644 --- a/docs/variables/FREEZE_REP.html +++ b/docs/variables/FREEZE_REP.html @@ -1 +1 @@ -FREEZE_REP | bns

Variable FREEZE_REPConst

FREEZE_REP: `ban_${string}` | `nano_${string}` = ...
\ No newline at end of file +FREEZE_REP | bns

Variable FREEZE_REPConst

FREEZE_REP: `ban_${string}` | `nano_${string}` = ...
\ No newline at end of file diff --git a/docs/variables/HEX_CHARS.html b/docs/variables/HEX_CHARS.html new file mode 100644 index 0000000..30a7d6e --- /dev/null +++ b/docs/variables/HEX_CHARS.html @@ -0,0 +1 @@ +HEX_CHARS | bns

Variable HEX_CHARSConst

HEX_CHARS: "0123456789ABCDEF" = "0123456789ABCDEF"
\ No newline at end of file diff --git a/docs/variables/LOG.html b/docs/variables/LOG.html index b2c9bc7..5450698 100644 --- a/docs/variables/LOG.html +++ b/docs/variables/LOG.html @@ -1 +1 @@ -LOG | bns

Variable LOGConst

LOG: boolean = true
\ No newline at end of file +LOG | bns

Variable LOGConst

LOG: boolean = true
\ No newline at end of file diff --git a/docs/variables/TRANS_MAX.html b/docs/variables/TRANS_MAX.html index cc31a45..a88ca1c 100644 --- a/docs/variables/TRANS_MAX.html +++ b/docs/variables/TRANS_MAX.html @@ -1 +1 @@ -TRANS_MAX | bns

Variable TRANS_MAXConst

TRANS_MAX: bigint = ...
\ No newline at end of file +TRANS_MAX | bns

Variable TRANS_MAXConst

TRANS_MAX: bigint = ...
\ No newline at end of file diff --git a/docs/variables/TRANS_MIN.html b/docs/variables/TRANS_MIN.html index d6e0ee0..89b427e 100644 --- a/docs/variables/TRANS_MIN.html +++ b/docs/variables/TRANS_MIN.html @@ -1 +1 @@ -TRANS_MIN | bns

Variable TRANS_MINConst

TRANS_MIN: bigint = ...
\ No newline at end of file +TRANS_MIN | bns

Variable TRANS_MINConst

TRANS_MIN: bigint = ...
\ No newline at end of file diff --git a/util.ts b/util.ts index bb7d931..889b770 100644 --- a/util.ts +++ b/util.ts @@ -32,6 +32,25 @@ export function hex_to_base58(hex: string): string { return base58.split("").reverse().join(""); } +//see the "Domain owners / BNS wallets" section of the bns protocol specification for an explanation of what the "bns seed format" is + +export const HEX_CHARS = "0123456789ABCDEF"; + +export const BSF_HEX_CHARS = "ghijklmnopqrstuv"; + +export function hex_to_bns_seed_format(hex: string): string { + return hex.split("").map((c) => BSF_HEX_CHARS[HEX_CHARS.indexOf(c.toUpperCase())]).join(""); +} + +export function bns_seed_format_to_hex(bsf_hex: string): string { + return bsf_hex.split("").map((c) => HEX_CHARS[BSF_HEX_CHARS.indexOf(c.toLowerCase())]).join(""); +} + +//doesn't check length +export function is_bns_seed_format(maybe_bsf_hex: string): boolean { + return maybe_bsf_hex.split("").every((c) => BSF_HEX_CHARS.includes(c.toLowerCase())); +} + //lmao export function bigint_to_uint8array(bint: bigint, len: number): Uint8Array { let uint8array: Uint8Array = new Uint8Array(len);