UNPKG

@dfinity/ckbtc

Version:

A library for interfacing with ckBTC.

8 lines (6 loc) • 11.4 kB
import{a as Ft,b as jt,c as dt}from"./chunk-M2DS6MT4.js";import{a as Dt,b as Wt,c as St,d as Vt,e as $t,f as qt,g as Gt,h as zt,i as Xt,j as Kt,k as Jt,l as Qt,m as Yt,n as bt}from"./chunk-NTLM4OSY.js";import{a as y,b as G}from"./chunk-FW4363Y4.js";var O=y((pe,Z)=>{"use strict";var At="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";Z.exports=At});var et=y((xe,tt)=>{"use strict";var _t=O(),Et=e=>{if(!e||typeof e!="string")throw new Error(`Expected base58 string but got \u201C${e}\u201D`);if(e.match(/[IOl0]/gmu))throw new Error(`Invalid base58 character \u201C${e.match(/[IOl0]/gmu)}\u201D`);let t=e.match(/^1+/gmu),o=t?t[0].length:0,r=(e.length-o)*(Math.log(58)/Math.log(256))+1>>>0;return new Uint8Array([...new Uint8Array(o),...e.match(/.{1}/gmu).map(s=>_t.indexOf(s)).reduce((s,c)=>(s=s.map(n=>{let i=n*58+c;return c=i>>8,i}),s),new Uint8Array(r)).reverse().filter((s=>c=>s=s||c)(!1))])};tt.exports=Et});var ot=y((le,nt)=>{"use strict";var rt=O(),Ct=()=>{let e=Array(256).fill(-1);for(let t=0;t<rt.length;++t)e[rt.charCodeAt(t)]=t;return e};nt.exports=Ct});var it=y((de,ct)=>{"use strict";var st=O(),kt=ot(),Ut=kt(),Bt=e=>{let t=[];for(let o of e){let r=o;for(let s=0;s<t.length;++s){let c=(Ut[t[s]]<<8)+r;t[s]=st.charCodeAt(c%58),r=c/58|0}for(;r;)t.push(st.charCodeAt(r%58)),r=r/58|0}for(let o of e){if(o)break;t.push(49)}return t.reverse(),String.fromCharCode(...t)};ct.exports=Bt});var ft=y($=>{"use strict";$.base58_to_binary=et();$.binary_to_base58=it()});var pt=y(E=>{"use strict";Object.defineProperty(E,"__esModule",{value:!0});E.bech32m=E.bech32=void 0;var F="qpzry9x8gf2tvdw0s3jn54khce6mua7l",ht={};for(let e=0;e<F.length;e++){let t=F.charAt(e);ht[t]=e}function _(e){let t=e>>25;return(e&33554431)<<5^-(t>>0&1)&996825010^-(t>>1&1)&642813549^-(t>>2&1)&513874426^-(t>>3&1)&1027748829^-(t>>4&1)&705979059}function at(e){let t=1;for(let o=0;o<e.length;++o){let r=e.charCodeAt(o);if(r<33||r>126)return"Invalid prefix ("+e+")";t=_(t)^r>>5}t=_(t);for(let o=0;o<e.length;++o){let r=e.charCodeAt(o);t=_(t)^r&31}return t}function q(e,t,o,r){let s=0,c=0,n=(1<<o)-1,i=[];for(let a=0;a<e.length;++a)for(s=s<<t|e[a],c+=t;c>=o;)c-=o,i.push(s>>c&n);if(r)c>0&&i.push(s<<o-c&n);else{if(c>=t)return"Excess padding";if(s<<o-c&n)return"Non-zero padding"}return i}function Lt(e){return q(e,8,5,!0)}function Pt(e){let t=q(e,5,8,!1);if(Array.isArray(t))return t}function Tt(e){let t=q(e,5,8,!1);if(Array.isArray(t))return t;throw new Error(t)}function ut(e){let t;e==="bech32"?t=1:t=734539939;function o(n,i,a){if(a=a||90,n.length+7+i.length>a)throw new TypeError("Exceeds length limit");n=n.toLowerCase();let u=at(n);if(typeof u=="string")throw new Error(u);let h=n+"1";for(let f=0;f<i.length;++f){let p=i[f];if(p>>5!==0)throw new Error("Non 5-bit word");u=_(u)^p,h+=F.charAt(p)}for(let f=0;f<6;++f)u=_(u);u^=t;for(let f=0;f<6;++f){let p=u>>(5-f)*5&31;h+=F.charAt(p)}return h}function r(n,i){if(i=i||90,n.length<8)return n+" too short";if(n.length>i)return"Exceeds length limit";let a=n.toLowerCase(),u=n.toUpperCase();if(n!==a&&n!==u)return"Mixed-case string "+n;n=a;let h=n.lastIndexOf("1");if(h===-1)return"No separator character for "+n;if(h===0)return"Missing prefix for "+n;let f=n.slice(0,h),p=n.slice(h+1);if(p.length<6)return"Data too short";let x=at(f);if(typeof x=="string")return x;let w=[];for(let l=0;l<p.length;++l){let L=p.charAt(l),C=ht[L];if(C===void 0)return"Unknown character "+L;x=_(x)^C,!(l+6>=p.length)&&w.push(C)}return x!==t?"Invalid checksum for "+n:{prefix:f,words:w}}function s(n,i){let a=r(n,i);if(typeof a=="object")return a}function c(n,i){let a=r(n,i);if(typeof a=="object")return a;throw new Error(a)}return{decodeUnsafe:s,decode:c,encode:o,toWords:Lt,fromWordsUnsafe:Pt,fromWords:Tt}}E.bech32=ut("bech32");E.bech32m=ut("bech32m")});var z=(r=>(r[r.Mainnet=0]="Mainnet",r[r.Regtest=1]="Regtest",r[r.Testnet=2]="Testnet",r))(z||{}),X=(c=>(c[c.P2wpkhV0=0]="P2wpkhV0",c[c.P2pkh=1]="P2pkh",c[c.P2sh=2]="P2sh",c[c.P2wsh=3]="P2wsh",c[c.P2tr=4]="P2tr",c))(X||{});var b=class extends Error{},k=class extends b{},P=class extends b{},U=class extends b{},T=class extends b{},v=class extends b{},I=class extends b{},A=class extends b{},N=class extends b{};import{isNullish as xt}from"@dfinity/utils";function wt(e){return e instanceof Uint8Array||e!=null&&typeof e=="object"&&e.constructor.name==="Uint8Array"}function j(e,...t){if(!wt(e))throw new Error("Uint8Array expected");if(t.length>0&&!t.includes(e.length))throw new Error(`Uint8Array expected of length ${t}, not of length=${e.length}`)}function D(e,t=!0){if(e.destroyed)throw new Error("Hash instance has been destroyed");if(t&&e.finished)throw new Error("Hash#digest() has already been called")}function K(e,t){j(e);let o=t.outputLen;if(e.length<o)throw new Error(`digestInto() expects output buffer of length at least ${o}`)}var H=e=>new DataView(e.buffer,e.byteOffset,e.byteLength),d=(e,t)=>e<<32-t|e>>>t;var ne=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function gt(e){if(typeof e!="string")throw new Error(`utf8ToBytes expected string, got ${typeof e}`);return new Uint8Array(new TextEncoder().encode(e))}function W(e){return typeof e=="string"&&(e=gt(e)),j(e),e}var R=class{clone(){return this._cloneInto()}},oe={}.toString;function J(e){let t=r=>e().update(W(r)).digest(),o=e();return t.outputLen=o.outputLen,t.blockLen=o.blockLen,t.create=()=>e(),t}function mt(e,t,o,r){if(typeof e.setBigUint64=="function")return e.setBigUint64(t,o,r);let s=BigInt(32),c=BigInt(4294967295),n=Number(o>>s&c),i=Number(o&c),a=r?4:0,u=r?0:4;e.setUint32(t+a,n,r),e.setUint32(t+u,i,r)}var Q=(e,t,o)=>e&t^~e&o,Y=(e,t,o)=>e&t^e&o^t&o,M=class extends R{constructor(t,o,r,s){super(),this.blockLen=t,this.outputLen=o,this.padOffset=r,this.isLE=s,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(t),this.view=H(this.buffer)}update(t){D(this);let{view:o,buffer:r,blockLen:s}=this;t=W(t);let c=t.length;for(let n=0;n<c;){let i=Math.min(s-this.pos,c-n);if(i===s){let a=H(t);for(;s<=c-n;n+=s)this.process(a,n);continue}r.set(t.subarray(n,n+i),this.pos),this.pos+=i,n+=i,this.pos===s&&(this.process(o,0),this.pos=0)}return this.length+=t.length,this.roundClean(),this}digestInto(t){D(this),K(t,this),this.finished=!0;let{buffer:o,view:r,blockLen:s,isLE:c}=this,{pos:n}=this;o[n++]=128,this.buffer.subarray(n).fill(0),this.padOffset>s-n&&(this.process(r,0),n=0);for(let f=n;f<s;f++)o[f]=0;mt(r,s-8,BigInt(this.length*8),c),this.process(r,0);let i=H(t),a=this.outputLen;if(a%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let u=a/4,h=this.get();if(u>h.length)throw new Error("_sha2: outputLen bigger than state");for(let f=0;f<u;f++)i.setUint32(4*f,h[f],c)}digest(){let{buffer:t,outputLen:o}=this;this.digestInto(t);let r=t.slice(0,o);return this.destroy(),r}_cloneInto(t){t||(t=new this.constructor),t.set(...this.get());let{blockLen:o,buffer:r,length:s,finished:c,destroyed:n,pos:i}=this;return t.length=s,t.pos=i,t.finished=c,t.destroyed=n,s%o&&t.buffer.set(r),t}};var yt=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),g=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),m=new Uint32Array(64),S=class extends M{constructor(){super(64,32,8,!1),this.A=g[0]|0,this.B=g[1]|0,this.C=g[2]|0,this.D=g[3]|0,this.E=g[4]|0,this.F=g[5]|0,this.G=g[6]|0,this.H=g[7]|0}get(){let{A:t,B:o,C:r,D:s,E:c,F:n,G:i,H:a}=this;return[t,o,r,s,c,n,i,a]}set(t,o,r,s,c,n,i,a){this.A=t|0,this.B=o|0,this.C=r|0,this.D=s|0,this.E=c|0,this.F=n|0,this.G=i|0,this.H=a|0}process(t,o){for(let f=0;f<16;f++,o+=4)m[f]=t.getUint32(o,!1);for(let f=16;f<64;f++){let p=m[f-15],x=m[f-2],w=d(p,7)^d(p,18)^p>>>3,l=d(x,17)^d(x,19)^x>>>10;m[f]=l+m[f-7]+w+m[f-16]|0}let{A:r,B:s,C:c,D:n,E:i,F:a,G:u,H:h}=this;for(let f=0;f<64;f++){let p=d(i,6)^d(i,11)^d(i,25),x=h+p+Q(i,a,u)+yt[f]+m[f]|0,l=(d(r,2)^d(r,13)^d(r,22))+Y(r,s,c)|0;h=u,u=a,a=i,i=n+x|0,n=c,c=s,s=r,r=x+l|0}r=r+this.A|0,s=s+this.B|0,c=c+this.C|0,n=n+this.D|0,i=i+this.E|0,a=a+this.F|0,u=u+this.G|0,h=h+this.H|0,this.set(r,s,c,n,i,a,u,h)}roundClean(){m.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var V=J(()=>new S);var lt=G(ft()),B=G(pt());var vt=0,It=5,Nt=111,Rt=196,Ht={[vt]:{type:1,networks:[0]},[Nt]:{type:1,networks:[2,1]},[It]:{type:2,networks:[0]},[Rt]:{type:2,networks:[2,1]}},Mt=({address:e,network:t})=>{let r=(h=>{try{return(0,lt.base58_to_binary)(h)}catch{throw new k}})(e),{length:s}=r;if(s!==25)throw new A(`Expected the address to be 25 bytes, got ${s}.`);(h=>{let f=h.slice(s-4,s),p=h.slice(0,s-4),x=V.create();x.update(p);let w=V.create();w.update(x.digest());let l=w.digest().slice(0,4);if(f.some((L,C)=>L!==l[C]))throw new A(`Checksum mismatch expected ${f}, got ${l}.`)})(r);let n=r[0],i=Ht[n];if(xt(i))throw new U;let{type:a,networks:u}=i;if(!u.includes(t))throw new N;return{address:e,network:t,type:a,parser:"base58"}},Ot=({address:e,network:t})=>{let o=h=>{try{return h.startsWith("bc1p")||h.startsWith("tb1p")||h.startsWith("bcrt1p")?B.bech32m.decode(h):B.bech32.decode(h)}catch{throw new A}},{prefix:r,words:s}=o(e),n={bc:0,tb:2,bcrt:1}[r];if(xt(n))throw new k;if(n!==t)throw new I;let[i,...a]=s;if(i>1)throw new v;switch(B.bech32.fromWords(a).length){case 20:return{address:e,network:t,type:0,parser:"bip-173"};case 32:return{address:e,network:t,type:i===0?3:4,parser:"bip-173"};default:throw new T}},_e=({address:e,network:t=0})=>{switch(e.charAt(0)){case"1":case"2":case"3":case"m":case"n":return Mt({address:e,network:t});case"b":case"B":case"t":case"T":return Ot({address:e,network:t});case"":throw new P;default:throw new U}};export{dt as BitcoinCanister,X as BtcAddressType,z as BtcNetwork,bt as CkBTCMinterCanister,St as MinterAlreadyProcessingError,zt as MinterAmountTooLowError,Dt as MinterGenericError,Kt as MinterInsufficientAllowanceError,Xt as MinterInsufficientFundsError,Gt as MinterMalformedAddressError,$t as MinterNoNewUtxosError,qt as MinterRetrieveBtcError,Wt as MinterTemporaryUnavailableError,Vt as MinterUpdateBalanceError,T as ParseBtcAddressBadWitnessLengthError,b as ParseBtcAddressError,k as ParseBtcAddressInvalidError,A as ParseBtcAddressMalformedAddressError,P as ParseBtcAddressNoDataError,I as ParseBtcAddressUnexpectedHumanReadablePartError,U as ParseBtcAddressUnsupportedAddressTypeError,v as ParseBtcAddressUnsupportedWitnessVersionError,N as ParseBtcAddressWrongNetworkError,Qt as createRetrieveBtcError,Yt as createRetrieveBtcWithApprovalError,Jt as createUpdateBalanceError,_e as parseBtcAddress,jt as toGetBalanceParams,Ft as toGetUtxosParams}; /*! Bundled license information: @noble/hashes/esm/utils.js: (*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) *) */ //# sourceMappingURL=index.js.map