edge-currency-plugins 3.8.1 → 3.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -71,7 +71,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
|
|
|
71
71
|
`],wif:[128],legacyXPriv:[76066276],legacyXPub:[76067358],pubkeyHash:[60],scriptHash:[122]}}};var Ia=gr(8736),Gc=gr(4325),gf=Object.defineProperty,mf=Object.defineProperties,yf=Object.getOwnPropertyDescriptors,$i=Object.getOwnPropertySymbols,bf=Object.prototype.hasOwnProperty,wf=Object.prototype.propertyIsEnumerable,xf=(T,B,j)=>B in T?gf(T,B,{enumerable:!0,configurable:!0,writable:!0,value:j}):T[B]=j,Vc=(T,B)=>{for(var j in B||(B={}))bf.call(B,j)&&xf(T,j,B[j]);if($i)for(var j of $i(B))wf.call(B,j)&&xf(T,j,B[j]);return T},Ef=(T,B)=>mf(T,yf(B));const Mf=Ef(Vc({assetDisplayName:"SmartCash",chainDisplayName:"SmartCash",currencyCode:"SMART",customFeeTemplate:Ze,memoOptions:it,pluginId:"smartcash",walletType:"wallet:smartcash",addressExplorer:"https://insight.smartcash.cc/address/%s",blockExplorer:"https://insight.smartcash.cc/block/%s",transactionExplorer:"https://insight.smartcash.cc/tx/%s",denominations:[{name:"SMART",multiplier:"100000000",symbol:"S"},{name:"mSMART",multiplier:"100000",symbol:"mS"}]},Lt),{defaultSettings:{customFeeSettings:["satPerByte"],blockbookServers:[],enableCustomServers:!1},displayName:"SmartCash",metaTokens:[]}),qc={formats:["bip44","bip32"],gapLimit:10,feeUpdateInterval:6e4,defaultFeeInfo:{lowFeeFudgeFactor:void 0,standardFeeLowFudgeFactor:void 0,standardFeeHighFudgeFactor:void 0,highFeeFudgeFactor:void 0,highFee:"1500",lowFee:"200",standardFeeLow:"500",standardFeeHigh:"1000",standardFeeLowAmount:"1732000",standardFeeHighAmount:"86700000",maximumFeeRate:nt(Mf,2171e-7)}},Sf={name:"smartcash",segwit:!1,coinType:224,sighashFunction:ze.Et.sha256,txHashFunction:ze.Et.sha256,bs58DecodeFunc:Ia.decode,bs58EncodeFunc:Ia.encode,wifEncodeFunc:Gc.encode,prefixes:{messagePrefix:[`Bitcoin Signed Message:
|
|
72
72
|
`],wif:[191],legacyXPriv:[76066276],legacyXPub:[76067358],pubkeyHash:[63],scriptHash:[18]}},kf={currencyInfo:Mf,engineInfo:qc,coinInfo:Sf};var If=Object.defineProperty,Xc=Object.defineProperties,Zc=Object.getOwnPropertyDescriptors,_a=Object.getOwnPropertySymbols,_f=Object.prototype.hasOwnProperty,Af=Object.prototype.propertyIsEnumerable,Aa=(T,B,j)=>B in T?If(T,B,{enumerable:!0,configurable:!0,writable:!0,value:j}):T[B]=j,Yc=(T,B)=>{for(var j in B||(B={}))_f.call(B,j)&&Aa(T,j,B[j]);if(_a)for(var j of _a(B))Af.call(B,j)&&Aa(T,j,B[j]);return T},$c=(T,B)=>Xc(T,Zc(B));const Tf=$c(Yc({assetDisplayName:"UFO",chainDisplayName:"UFO",currencyCode:"UFO",customFeeTemplate:Ze,memoOptions:it,pluginId:"ufo",walletType:"wallet:ufo",addressExplorer:"https://explorer.ufobject.com/address/%s",blockExplorer:"https://explorer.ufobject.com/block/%s",transactionExplorer:"https://explorer.ufobject.com/tx/%s",denominations:[{name:"UFO",multiplier:"100000000",symbol:"\u0244"},{name:"kUFO",multiplier:"100000000000",symbol:"k\u0244"}]},Lt),{defaultSettings:{customFeeSettings:["satPerByte"],blockbookServers:["wss://blockbook.ufobject.com"],enableCustomServers:!1},displayName:"UFO",metaTokens:[]}),Ji={formats:["bip49","bip84","bip44","bip32"],gapLimit:10,feeUpdateInterval:6e4,defaultFeeInfo:{lowFeeFudgeFactor:void 0,standardFeeLowFudgeFactor:void 0,standardFeeHighFudgeFactor:void 0,highFeeFudgeFactor:void 0,highFee:"2250",lowFee:"1000",standardFeeLow:"1100",standardFeeHigh:"2000",standardFeeLowAmount:"51282051282051",standardFeeHighAmount:"5128205128205100",maximumFeeRate:nt(Tf,137e-6)}},Pf={currencyInfo:Tf,engineInfo:Ji,coinInfo:{name:"uniformfiscalobject",segwit:!0,coinType:202,prefixes:{messagePrefix:[`Bitcoin Signed Message:
|
|
73
73
|
`],wif:[155],legacyXPriv:[76066276],legacyXPub:[76067358],wrappedSegwitXPriv:[77428856],wrappedSegwitXPub:[77429938],segwitXPriv:[78791436],segwitXPub:[78792518],pubkeyHash:[27],scriptHash:[68,5],bech32:["uf"]}}};var Jc=Object.defineProperty,Of=Object.defineProperties,Bf=Object.getOwnPropertyDescriptors,Ao=Object.getOwnPropertySymbols,Cf=Object.prototype.hasOwnProperty,Rf=Object.prototype.propertyIsEnumerable,Ff=(T,B,j)=>B in T?Jc(T,B,{enumerable:!0,configurable:!0,writable:!0,value:j}):T[B]=j,Nf=(T,B)=>{for(var j in B||(B={}))Cf.call(B,j)&&Ff(T,j,B[j]);if(Ao)for(var j of Ao(B))Rf.call(B,j)&&Ff(T,j,B[j]);return T},Lf=(T,B)=>Of(T,Bf(B));const Df=Lf(Nf({assetDisplayName:"Vertcoin",chainDisplayName:"Vertcoin",currencyCode:"VTC",customFeeTemplate:Ze,memoOptions:it,pluginId:"vertcoin",walletType:"wallet:vertcoin",addressExplorer:"https://insight.vertcoin.org/address/%s",blockExplorer:"https://insight.vertcoin.org/block/%s",transactionExplorer:"https://insight.vertcoin.org/tx/%s",denominations:[{name:"VTC",multiplier:"100000000",symbol:"V"},{name:"mVTC",multiplier:"100000",symbol:"mV"}]},Lt),{defaultSettings:{customFeeSettings:["satPerByte"],blockbookServers:["wss://vtc1.trezor.io","wss://vtc2.trezor.io","wss://vtc3.trezor.io","wss://vtc4.trezor.io","wss://vtc5.trezor.io"],enableCustomServers:!1},displayName:"Vertcoin",metaTokens:[]}),Qc={formats:["bip49","bip84","bip44","bip32"],forks:[],gapLimit:10,feeUpdateInterval:6e4,defaultFeeInfo:{lowFeeFudgeFactor:void 0,standardFeeLowFudgeFactor:void 0,standardFeeHighFudgeFactor:void 0,highFeeFudgeFactor:void 0,highFee:"150",lowFee:"20",standardFeeLow:"50",standardFeeHigh:"100",standardFeeLowAmount:"173200",standardFeeHighAmount:"8670000",maximumFeeRate:nt(Df,.04662)}},Uf={currencyInfo:Df,engineInfo:Qc,coinInfo:{name:"vertcoin",segwit:!0,coinType:28,prefixes:{messagePrefix:[`Bitcoin Signed Message:
|
|
74
|
-
`],wif:[128],legacyXPriv:[76066276],legacyXPub:[76067358],wrappedSegwitXPriv:[76066276],wrappedSegwitXPub:[76067358],segwitXPriv:[76066276],segwitXPub:[76067358],pubkeyHash:[71],scriptHash:[5],bech32:["vtc"]}}};var tl=Object.defineProperty,rl=Object.defineProperties,To=Object.getOwnPropertyDescriptors,Ta=Object.getOwnPropertySymbols,Hf=Object.prototype.hasOwnProperty,nl=Object.prototype.propertyIsEnumerable,Po=(T,B,j)=>B in T?tl(T,B,{enumerable:!0,configurable:!0,writable:!0,value:j}):T[B]=j,il=(T,B)=>{for(var j in B||(B={}))Hf.call(B,j)&&Po(T,j,B[j]);if(Ta)for(var j of Ta(B))nl.call(B,j)&&Po(T,j,B[j]);return T},ol=(T,B)=>rl(T,To(B));const Pa=ol(il({assetDisplayName:"Firo",chainDisplayName:"Firo",currencyCode:"FIRO",customFeeTemplate:Ze,memoOptions:it,pluginId:"zcoin",walletType:"wallet:zcoin",addressExplorer:"https://insight.zcoin.io/address/%s",blockExplorer:"https://insight.zcoin.io/block/%s",transactionExplorer:"https://insight.zcoin.io/tx/%s",denominations:[{name:"FIRO",multiplier:"100000000",symbol:"\u0192"},{name:"mFIRO",multiplier:"100000",symbol:"m\u0192"}]},Lt),{defaultSettings:{customFeeSettings:["satPerByte"],blockbookServers:["wss://firo-wusa1.edge.app"
|
|
74
|
+
`],wif:[128],legacyXPriv:[76066276],legacyXPub:[76067358],wrappedSegwitXPriv:[76066276],wrappedSegwitXPub:[76067358],segwitXPriv:[76066276],segwitXPub:[76067358],pubkeyHash:[71],scriptHash:[5],bech32:["vtc"]}}};var tl=Object.defineProperty,rl=Object.defineProperties,To=Object.getOwnPropertyDescriptors,Ta=Object.getOwnPropertySymbols,Hf=Object.prototype.hasOwnProperty,nl=Object.prototype.propertyIsEnumerable,Po=(T,B,j)=>B in T?tl(T,B,{enumerable:!0,configurable:!0,writable:!0,value:j}):T[B]=j,il=(T,B)=>{for(var j in B||(B={}))Hf.call(B,j)&&Po(T,j,B[j]);if(Ta)for(var j of Ta(B))nl.call(B,j)&&Po(T,j,B[j]);return T},ol=(T,B)=>rl(T,To(B));const Pa=ol(il({assetDisplayName:"Firo",chainDisplayName:"Firo",currencyCode:"FIRO",customFeeTemplate:Ze,memoOptions:it,pluginId:"zcoin",walletType:"wallet:zcoin",addressExplorer:"https://insight.zcoin.io/address/%s",blockExplorer:"https://insight.zcoin.io/block/%s",transactionExplorer:"https://insight.zcoin.io/tx/%s",denominations:[{name:"FIRO",multiplier:"100000000",symbol:"\u0192"},{name:"mFIRO",multiplier:"100000",symbol:"m\u0192"}]},Lt),{defaultSettings:{customFeeSettings:["satPerByte"],blockbookServers:["wss://firo-wusa1.edge.app"],enableCustomServers:!1},displayName:"Firo",metaTokens:[]}),al={serverConfigs:[{type:"blockbook-nownode",uris:["https://firo-wusa1.edge.app"]},{type:"blockbook-nownode",uris:["https://firobook.nownodes.io"]}],formats:["bip44","bip32"],uriPrefix:"firo",gapLimit:10,feeUpdateInterval:6e4,defaultFeeInfo:{lowFeeFudgeFactor:void 0,standardFeeLowFudgeFactor:void 0,standardFeeHighFudgeFactor:void 0,highFeeFudgeFactor:void 0,highFee:"150",lowFee:"20",standardFeeLow:"50",standardFeeHigh:"100",standardFeeLowAmount:"173200",standardFeeHighAmount:"8670000",maximumFeeRate:nt(Pa,1.39)}},Oo=[rt,cr,ho,Lr,Xa,yu,mo,Qa,Tu,Eo,cs,Ps,Fs,pc,So,Ys,rf,xa,Uc,Wc,kf,Pf,Uf,{currencyInfo:Pa,engineInfo:al,coinInfo:{name:"zcoin",segwit:!1,coinType:136,prefixes:{messagePrefix:[`Zcoin Signed Message:
|
|
75
75
|
`],wif:[210],legacyXPriv:[76066276],legacyXPub:[76067358],pubkeyHash:[82],scriptHash:[7]}}}];function tn(T){const B=Oo.find(j=>j.coinInfo.name===T);if(B==null)throw new Error("Could not find coin info "+T);return B.coinInfo}var jt=gr(3689);const E0=jt.WK,M0=jt.DE,Oa=jt.k5,S0=jt.Dr,jf=jt.ef,Kf=jt.GY,k0=jt.WM,I0=jt.Kz,_0=jt.uX,A0=jt.IK,T0=jt.gw,P0=jt.WU,O0=jt.G8,B0=jt.xQ,Ba=jt.D7,C0=jt.hi,Wf=jt.zU,R0=jt.dq,F0=jt.m$,N0=jt.MU,L0=jt.ID,D0=jt.k0,U0=jt.D4,H0=jt.kL,z0=jt.jx,j0=jt.A_,K0=jt.v1,Gf=jt.TL,W0=jt.Og,G0=jt.mq,V0=jt.ft,q0=jt.KU,qn=jt.ZU,X0=jt.sF,Z0=jt.ye,Y0=jt.Xj,$0=jt.Rn,J0=jt.bo,Q0=jt.KL,sl=jt.rW,eh=jt.U3,fl=jt.$Y,th=jt.EJ,Vf=jt.XY,rh=jt.v7,ul=jt.up,nh=jt.h,ih=jt.Cx,Bo=jt.Zz,cl=jt.CU,Ir=jt.ib,rn=jt.eT,Qi=jt._0,xr=jt.UR,In=jt.Up,oh=jt.y0,eo=jt.A2,Or=jt.ql,Ca=jt.FX,ah=jt.Jr,ln=jt.zS,ll=jt.pK,hl=jt.ud,dl=jt.Zk,sh=jt.Mf,pl=jt.U0,fh=jt.CX,uh=jt.l4,vl=jt.Jv,ch=jt.T0,gl=jt.z8,lh=jt.Gt,ml=jt.Fm,hh=jt.b4,dh=jt.N2,ph=jt.K8,vh=jt.gB,Ra=jt.bd,gh=jt.z2,mh=jt.GG,yh=jt.V$,bh=jt.CC,wh=jt.dT,yl=jt.uT,xh=jt._j,Eh=jt.p4,Mh=jt.W0,Sh=jt.zk,kh=jt.AB,Ih=jt.sn,_h=jt._u,Ah=jt.Py,Th=jt.iu,Ph=jt.l7,qf=jt.JU,Oh=jt.O6;class bl extends Oa{constructor(B){super(B);const{networkFeeShortage:j}=B;this.networkFeeShortage=j}}function I(T){return function(j){if(j instanceof Error&&j.name===T)return j}}const O=I("InsufficientFundsError"),W={forceUseUtxo:Ei,subtractFee:ks,accumulative:gs};var Y=gr(8287).Buffer,ie=Object.defineProperty,ae=Object.defineProperties,de=Object.getOwnPropertyDescriptors,Pe=Object.getOwnPropertySymbols,Oe=Object.prototype.hasOwnProperty,Fe=Object.prototype.propertyIsEnumerable,We=(T,B,j)=>B in T?ie(T,B,{enumerable:!0,configurable:!0,writable:!0,value:j}):T[B]=j,et=(T,B)=>{for(var j in B||(B={}))Oe.call(B,j)&&We(T,j,B[j]);if(Pe)for(var j of Pe(B))Fe.call(B,j)&&We(T,j,B[j]);return T},Xe=(T,B)=>ae(T,de(B)),ft=(T,B,j)=>new Promise((le,xe)=>{var Re=Ie=>{try{Me(j.next(Ie))}catch(ke){xe(ke)}},be=Ie=>{try{Me(j.throw(Ie))}catch(ke){xe(ke)}},Me=Ie=>Ie.done?le(Ie.value):Promise.resolve(Ie.value).then(Re,be);Me((j=j.apply(T,B)).next())});let Mt;const dt=()=>{if(Mt!=null)return Mt;const T=gr(3513);return(0,ze.f0)(T),Mt=(0,ut.dg)(T),console.log("loaded ECPair!"),Mt};var gt=(T=>(T.Airbitz="airbitz",T.Legacy="legacy",T.Segwit="segwit",T.WrappedSegwit="wrappedSegwit",T.ReplayProtection="replayProtection",T))(gt||{}),kt=(T=>(T.p2pkh="p2pkh",T.p2sh="p2sh",T.p2wpkh="p2wpkh",T.p2wsh="p2wsh",T.p2tr="p2tr",T))(kt||{}),Ft=(T=>(T.p2wpkh="p2wpkh",T.p2wpkhp2sh="p2wpkhp2sh",T.p2wsh="p2wsh",T.p2pk="p2pk",T.p2pkh="p2pkh",T.p2sh="p2sh",T.p2tr="p2tr",T.replayProtection="replayprotection",T.replayProtectionP2SH="replayprotectionp2sh",T))(Ft||{});const $t=P("p2wpkh","p2wpkhp2sh","p2wsh","p2pk","p2pkh","p2sh","p2tr","replayprotection","replayprotectionp2sh");var er=(T=>(T.Legacy="legacy",T.Segwit="segwit",T))(er||{}),vr=(T=>(T.good="good",T.legacy="legacy",T.bad="bad",T))(vr||{});function or(T){switch(T){case 32:return"airbitz";case 44:return"legacy";case 49:return"wrappedSegwit";case 84:return"segwit";default:throw new Error("InvalidPurposeNumber")}}const Er=(T,B)=>{const j=tn(B.coin),le=pn({coinString:B.coin,prefixIndex:T}),xe=El(j);if(xe.length>0){try{return Bt(B.address,xe),"good"}catch{}return Yf(B.address,le,B.coin,void 0),"legacy"}return Yf(B.address,le,B.coin,void 0),T===0?"good":"legacy"},_r=T=>{const B=to(T.coin,j=>Er(j,T),[`Could not determine address type of ${T.address}`]);return B!=null?B:"bad"},mr=(T,B)=>{const j=to(B,le=>{const xe=pn({coinString:B,prefixIndex:le});return Yf(T,xe,B)},[`Could not determine address type of ${T}`]);if(j==null)throw new Error("Could not determine address type");return j};function kr(T){var B,j,le;const xe=T.seed.includes(" "),Re=xe?ce.kw(T.seed):Y.from(T.seed,"base64"),be=pn({coinString:T.coin,sigType:T.type,prefixIndex:0}),Me=tn(T.coin),Ie=mp(T.type),ke=(B=T.coinType)!=null?B:Me.coinType,Ge=(j=T.account)!=null?j:0,st=((le=Me.bip32FromSeedFunc)!=null?le:ne.CC)(Re);return st.network=be,Ie===32||!xe?st.derive(0).toBase58():st.deriveHardened(Ie).deriveHardened(ke).deriveHardened(Ge).toBase58()}const Mr=(T,B)=>{var j;const le=pn({coinString:B.coin,sigType:B.type,prefixIndex:T});return((j=tn(B.coin).bip32FromBase58Func)!=null?j:ne.n3)(B.xpriv,le).neutered().toBase58()},$r=T=>{const B=to(T.coin,j=>Mr(j,T),["Invalid private key"]);if(B==null)throw Error("unable to convert xpriv to xpub");return B};function nn(T){let B="0000";return B=ze.Et.hash160(Y.from(T(""),"hex")).slice(0,4).toString("hex"),parseInt(B,16)}const _n=(T,B)=>B.changeIndex===nn(T),Dn=(T,B)=>{var j;const le=tn(B.coin),xe=pn({coinString:B.coin,sigType:B.type,prefixIndex:T});return((j=le.bip32FromBase58Func)!=null?j:ne.n3)(B.xpub,xe).derive(B.bip44ChangeIndex).derive(B.bip44AddressIndex).publicKey.toString("hex")},An=T=>{const B=to(T.coin,j=>Dn(j,T),["Invalid network version"]);if(B==null)throw Error("unable to derive pubkey from xpub");return B},Un=(T,B)=>{const j=tn(B.coin),le=El(j),xe=pn({coinString:B.coin,prefixIndex:T}),Re=Na(j.prefixes,T),be=Yf(B.address,xe,B.coin,B.addressType);let Me;const Ie=()=>{try{return Bt(B.address,le).scriptHash.toString("hex")}catch{}};switch(be){case"p2pkh":if(Re.cashaddr!=null){const Ge=Ie();if(Ge!=null){const Ve=Ch({scriptHash:Ge,scriptType:"p2pkh",coin:B.coin});if(Ve==null)throw new Error(`unable to convert address ${B.address} to script pubkey`);return Ve}}Me=ze.KT.p2pkh;break;case"p2sh":if(Re.cashaddr!=null){const Ge=Ie();if(Ge!=null){const Ve=Ch({scriptHash:Ge,scriptType:"p2sh",coin:B.coin});if(Ve==null)throw new Error(`unable to convert address ${B.address} to script pubkey`);return Ve}}Me=ze.KT.p2sh;break;case"p2wpkh":Me=ze.KT.p2wpkh;break;case"p2wsh":Me=ze.KT.p2wsh;break;case"p2tr":Me=ze.KT.p2tr;break;default:throw new Error("invalid address type in address to script pubkey")}let ke;try{ke=Me({address:B.address,network:xe,bs58DecodeFunc:j.bs58DecodeFunc,bs58EncodeFunc:j.bs58EncodeFunc}).output}catch(Ge){throw console.trace(Ge),Ge}if(ke==null)throw new Error("failed converting address to scriptPubkey");return ke.toString("hex")},Rr=T=>{const B=to(T.coin,j=>Un(j,T),["Invalid version or Network mismatch","Invalid prefix or Network mismatch",`InvalidArgument: ${T.address} has Mixed case`,`Could not determine address type of ${T.address}`]);if(B==null)throw new Error(`unable to convert address ${T.address} to script pubkey`);return B};function Xn(T){const B=pn({coinString:T.coin,prefixIndex:0}),j=pn({coinString:T.coin,prefixIndex:1}),le=tn(T.coin),xe=le.prefixes,Re=Na(xe,0),be=Na(xe,1);let Me,Ie,ke;switch(T.addressType){case"p2pkh":Re.cashaddr!=null&&(Me=Ye(Tn({scriptPubkey:T.scriptPubkey,scriptType:"p2pkh",coin:T.coin}),Qe.pubkeyhash,Re.cashaddr,T.includeCashaddrPrefix)),be.cashaddr!=null&&(Ie=Ye(Tn({scriptPubkey:T.scriptPubkey,scriptType:"p2pkh",coin:T.coin}),Qe.pubkeyhash,be.cashaddr,T.includeCashaddrPrefix)),ke=ze.KT.p2pkh;break;case"p2sh":Re.cashaddr!=null&&(Me=Ye(Tn({scriptPubkey:T.scriptPubkey,scriptType:"p2sh",coin:T.coin}),Qe.scripthash,Re.cashaddr,T.includeCashaddrPrefix)),be.cashaddr!=null&&(Ie=Ye(Tn({scriptPubkey:T.scriptPubkey,scriptType:"p2sh",coin:T.coin}),Qe.scripthash,be.cashaddr,T.includeCashaddrPrefix)),ke=ze.KT.p2sh;break;case"p2wpkh":ke=ze.KT.p2wpkh;break;case"p2wsh":ke=ze.KT.p2wsh;break;case"p2tr":ke=ze.KT.p2tr;break;default:throw new Error("invalid address type in address to script pubkey")}try{Me=Me!=null?Me:ke({output:Y.from(T.scriptPubkey,"hex"),network:B,bs58DecodeFunc:le.bs58DecodeFunc,bs58EncodeFunc:le.bs58EncodeFunc}).address,Ie=Ie!=null?Ie:ke({output:Y.from(T.scriptPubkey,"hex"),network:j,bs58DecodeFunc:le.bs58DecodeFunc,bs58EncodeFunc:le.bs58EncodeFunc}).address}catch(Ge){throw console.trace(Ge),Ge}if(Me==null||Ie==null)throw new Error("failed converting scriptPubkey to address");return{address:Me,legacyAddress:Ie}}function Tn(T){const B=pn({coinString:T.coin,prefixIndex:0});let j;switch(T.scriptType){case"p2pkh":j=ze.KT.p2pkh;break;case"p2sh":j=ze.KT.p2sh;break;case"p2wpkh":j=ze.KT.p2wpkh;break;case"p2tr":j=ze.KT.p2tr;break;default:throw new Error("invalid address type in address to script pubkey")}let le;try{le=j({output:Y.from(T.scriptPubkey,"hex"),network:B}).hash}catch(xe){throw console.trace(xe),xe}if(le==null)throw new Error("failed converting scriptPubkey to address");return le.toString("hex")}function Zn(T){var B,j,le,xe;const{scriptPubkey:Re,coin:be}=T;let Me;be!=null&&(Me=pn({coinString:be,prefixIndex:0}));const Ie=ze.KT.p2sh(Xe(et({},Me!=null?{network:Me}:{}),{redeem:{output:Y.from(Re,"hex")}})),ke=(B=Ie.output)==null?void 0:B.toString("hex"),Ge=(le=(j=Ie.redeem)==null?void 0:j.output)==null?void 0:le.toString("hex"),Ve=(xe=Ie.hash)==null?void 0:xe.toString("hex");if(ke==null||Ge==null)throw new Error("unable to convert script to p2sh");let st=Ie.address;if(be!=null&&Ve!=null){const xt=tn(be).prefixes,bt=Na(xt,0);bt.cashaddr!=null&&(st=Ye(Ve,Qe.scripthash,bt.cashaddr))}return{scriptPubkey:ke,redeemScript:Ge,address:st}}function Hn(T){let B;switch(T.scriptType){case"p2pkh":{if(B=ze.KT.p2pkh({pubkey:Y.from(T.pubkey,"hex")}),B.output==null)throw new Error("failed converting pubkey to script pubkey");return{scriptPubkey:B.output.toString("hex")}}case"p2wpkhp2sh":return Zn({scriptPubkey:Hn({pubkey:T.pubkey,scriptType:"p2wpkh"}).scriptPubkey});case"p2wpkh":{if(B=ze.KT.p2wpkh({pubkey:Y.from(T.pubkey,"hex")}),B.output==null)throw new Error("failed converting pubkey to script pubkey");return{scriptPubkey:B.output.toString("hex")}}case"p2tr":{if(B=ze.KT.p2tr({pubkey:Y.from(T.pubkey,"hex")}),B.output==null)throw new Error("failed converting pubkey to script pubkey");return{scriptPubkey:B.output.toString("hex")}}case"replayprotection":{if(T.scriptTemplates==null)throw new Error("Missing replayProtection script template");const j=T.scriptTemplates.replayProtection(T.pubkey);return Zn({scriptPubkey:j})}default:throw new Error("invalid address type in pubkey to script pubkey")}}const Co=(T,B)=>{const j=mr(T,B);return Xn({scriptPubkey:Rr({address:T,coin:B}),addressType:j,coin:B}).address},zn=(T,B)=>{var j,le;const xe=tn(B.coin),Re=pn({coinString:B.coin,sigType:B.type,prefixIndex:T});return(le=((j=xe.bip32FromBase58Func)!=null?j:ne.n3)(B.xpriv,Re).derive(B.bip44ChangeIndex).derive(B.bip44AddressIndex).privateKey)==null?void 0:le.toString("hex")},Xf=T=>{const B=to(T.coin,j=>zn(j,T),["Invalid network version"]);if(B==null)throw new Error("Failed to generate private key from xpriv");return B};function Bh(T){const B=pn({coinString:T.coin,forWIF:!0,prefixIndex:0}),j=getCoinFromString(T.coin);return dt().fromPrivateKey(Y.from(T.privateKey,"hex"),{network:B}).toWIF(j.wifEncodeFunc)}const Yn=(T,B)=>{const j=tn(B.coin),le=pn({coinString:B.coin,forWIF:!0,prefixIndex:T}),Re=dt().fromWIF(B.wifKey,le,j.bs58DecodeFunc);if(Re.privateKey!=null)return{hex:Re.privateKey.toString("hex"),compressed:Re.compressed}},Zf=T=>{const B=to(T.coin,j=>Yn(j,T),["Invalid network version"]);if(B==null)throw new Error("Failed to convert WIF key to private key");return B};function wl(T){const{hex:B,compressed:j}=T;return dt().fromPrivateKey(Y.from(B,"hex"),{compressed:j}).publicKey.toString("hex")}function xl(T,B){const le=dt().fromPrivateKey(Y.from(B,"hex"));if(le.privateKey==null)throw new Error("Address could not sign message");return Ce().sign(T,le.privateKey,le.compressed).toString("base64")}function Fa(T){var B,j,le,xe,Re,be;const{log:Me,outputSort:Ie,memos:ke}=T;let Ge=4294967295;T.enableRbf&&(Ge-=2);let Ve=ze.ZX.SIGHASH_ALL;const st=tn(T.coin);st.sighash!=null&&(Ve=st.sighash);const at=[],xt=[],Pt=[...[...T.utxos,...T.forceUseUtxo].filter(At=>!At.spent).reduce((At,It)=>At.set(It.id,It),new Map).values()].sort((At,It)=>At.blockHeight<=0&&It.blockHeight>0?1:It.blockHeight<=0&&At.blockHeight>0?-1:(0,ue.lt)(At.value,It.value)?1:(0,ue.gt)(At.value,It.value)?-1:0);for(const At of Pt){if(At.script==null)continue;const It={hash:Y.from(At.txid,"hex").reverse(),index:At.vout,value:parseInt(At.value),script:Y.from(At.script,"hex"),scriptPubkey:Y.from(At.scriptPubkey,"hex"),scriptType:At.scriptType,sequence:Ge,sighashType:Ve};switch(At.scriptType){case"p2pk":case"p2pkh":case"p2sh":case"replayprotection":case"replayprotectionp2sh":{It.nonWitnessUtxo=It.script;break}case"p2wpkh":case"p2wpkhp2sh":case"p2wsh":{It.witnessUtxo={script:It.script,value:parseInt(At.value)};break}default:throw new Error(`unknown script type ${At.scriptType}`)}At.redeemScript!=null&&(It.redeemScript=Y.from(At.redeemScript,"hex"));let Dt=!1;for(const mt of T.forceUseUtxo)mt.id===At.id&&(at.push(It),Dt=!0);Dt||xt.push(It)}const Gt=[];for(const At of T.targets){if(At.value==null)continue;const It=At.address==null?At.scriptPubkey:Rr({address:At.address,coin:st.name});It!=null&&Gt.push({script:It,value:At.value})}for(const At of ke){const It=At.type==="text"?Y.from(At.value,"utf8"):Y.from(At.value,"hex"),Dt=ze.K$.compile([ze.Ez.OP_RETURN,It]).toString("hex");Gt.push({script:Dt,value:0})}const rr=Rr({address:T.freshChangeAddress,coin:st.name}),dr=(B=st.utxoPicker)!=null?B:W,Ut=(T.forceUseUtxo.length>0?dr.forceUseUtxo:(j=T.subtractFee)!=null&&j?dr.subtractFee:dr.accumulative)({utxos:xt,useUtxos:at,targets:Gt,feeRate:T.feeRate,changeScript:rr});if(Ut.outputs==null){const At=Ln(Gt),It=Ln(Ut.inputs),Dt=Ut.fee-(It-At);throw new bl({tokenId:null,networkFee:Ut.fee.toString(),networkFeeShortage:Dt.toString()})}const vt=se(Ut.inputs),Et=(()=>{switch(Ie){case"bip69":return pe(Ut.outputs);case"targets":return Ut.outputs}})(),Ct=new ze.iL;try{Ct.addInputs(vt),Ct.addOutputs(Et)}catch(At){throw Me==null||Me.error(`Failed makeTx: ${String(At)}`),At}return{inputs:vt,outputs:Et,changeUsed:Ut.changeUsed,fee:Ut.fee,psbtBase64:Ct.toBase64(),hex:(be=(Re=(xe=(le=Ct.data)==null?void 0:le.globalMap)==null?void 0:xe.unsignedTx)==null?void 0:Re.toBuffer())==null?void 0:be.toString("hex")}}function vp(T){return ft(this,null,function*(){var B;const{maximumFeeRate:j}=T.feeInfo,le=j!=null?{maximumFeeRate:parseInt(j)}:{},xe=ze.iL.fromBase64(T.psbtBase64,le),Re=tn(T.coin),be=dt(),Me=(ke,Ge,Ve)=>be.fromPublicKey(ke).verify(Ge,Ve);for(let ke=0;ke<xe.inputCount;ke++){const Ge=(B=T.privateKeyEncodings[ke])!=null?B:T.privateKeyEncodings[T.privateKeyEncodings.length-1],{hex:Ve,compressed:st}=Ge;xe.signInput(ke,be.fromPrivateKey(Y.from(Ve,"hex"),{compressed:st}),ze.iL.DEFAULT_SIGHASHES,Re.sighashFunction),xe.validateSignaturesOfInput(ke,Me),xe.finalizeInput(ke)}const Ie=xe.extractTransaction();return{id:Ie.getId(Re.txHashFunction),hex:Ie.toHex()}})}const pn=T=>{var B,j;const le=(B=T.sigType)!=null?B:"legacy",xe=(j=T.forWIF)!=null?j:!1,Re=tn(T.coinString);return gp(le,Re.prefixes,Re.segwit,xe,T.prefixIndex)},gp=(T,B,j,le,xe)=>{var Re;let be;const Me=Na(B,xe);switch(T){case"segwit":if(Me.segwitXPub==null||Me.segwitXPriv==null)throw new Error("segwit xpub prefix is undefined");be={public:Me.segwitXPub,private:Me.segwitXPriv};break;case"wrappedSegwit":if(Me.wrappedSegwitXPub==null||Me.wrappedSegwitXPriv==null)throw new Error("wrapped segwit xpub prefix is undefined");be={public:Me.wrappedSegwitXPub,private:Me.wrappedSegwitXPriv};break;case"legacy":case"airbitz":be={public:Me.legacyXPub,private:Me.legacyXPriv};break;default:throw new Error("invalid bip43 purpose type")}const Ie=(Re=Me.bech32)!=null?Re:"";return le?{messagePrefix:Me.messagePrefix,wif:Me.wif,bip32:be,bech32:Ie,pubKeyHash:Me.pubkeyHash,scriptHash:Me.scriptHash}:{messagePrefix:Me.messagePrefix,wif:128,bip32:be,bech32:Ie,pubKeyHash:Me.pubkeyHash,scriptHash:Me.scriptHash}},mp=T=>{switch(T){case"airbitz":return 32;case"legacy":return 44;case"wrappedSegwit":return 49;case"segwit":return 84;case"replayProtection":return 44}},to=(T,B,j=[])=>{const le=tn(T).prefixes,xe=Object.values(le).reduce((be,Me)=>Math.max(Me.length,be),0);let Re;for(let be=0;be<xe;be++){try{Re=B(be)}catch(Me){if(j.includes(Me.message))continue;throw Me}if(Re!=null)break}return Re},El=T=>{var B;return(B=T.prefixes.cashaddr)!=null?B:[]},Yf=(T,B,j,le)=>{if(le!=null)return le;const xe=tn(j);try{return ze.KT.p2pkh({address:T,network:B,bs58DecodeFunc:xe.bs58DecodeFunc,bs58EncodeFunc:xe.bs58EncodeFunc}),"p2pkh"}catch{}try{return ze.KT.p2sh({address:T,network:B,bs58DecodeFunc:xe.bs58DecodeFunc,bs58EncodeFunc:xe.bs58EncodeFunc}),"p2sh"}catch{}try{return ze.KT.p2wsh({address:T,network:B}),"p2wsh"}catch{}try{return ze.KT.p2wpkh({address:T,network:B}),"p2wpkh"}catch{}try{return ze.KT.p2tr({address:T,network:B}),"p2tr"}catch{}const Re=El(xe);if(Re.length>0)try{return Bt(T,Re).type===Qe.pubkeyhash?"p2pkh":"p2sh"}catch{}throw new Error(`Could not determine address type of ${T}`)},Na=(T,B)=>{var j;return{messagePrefix:Le(T.messagePrefix,B),wif:Le(T.wif,B),legacyXPriv:Le(T.legacyXPriv,B),legacyXPub:Le(T.legacyXPub,B),wrappedSegwitXPriv:Le(T.wrappedSegwitXPriv,B),wrappedSegwitXPub:Le(T.wrappedSegwitXPub,B),segwitXPriv:Le(T.segwitXPriv,B),segwitXPub:Le(T.segwitXPub,B),pubkeyHash:Le(T.pubkeyHash,B),scriptHash:Le(T.scriptHash,B),bech32:Le(T.bech32,B),cashaddr:je(((j=T.cashaddr)!=null?j:[])[B])}},Ch=T=>{const B=pn({coinString:T.coin,prefixIndex:0});let j;switch(T.scriptType){case"p2pkh":j=ze.KT.p2pkh;break;case"p2sh":j=ze.KT.p2sh;break;case"p2wpkh":j=ze.KT.p2wpkh;break;case"p2tr":j=ze.KT.p2tr;break;default:throw new Error("invalid address type in address to script pubkey")}let le;try{le=j({hash:Y.from(T.scriptHash,"hex"),network:B}).output}catch(xe){throw console.trace(xe),xe}if(le==null)throw new Error("failed converting scriptPubkey to address");return le.toString("hex")};var yp=Object.defineProperty,$f=Object.getOwnPropertySymbols,Rh=Object.prototype.hasOwnProperty,Fh=Object.prototype.propertyIsEnumerable,Nh=(T,B,j)=>B in T?yp(T,B,{enumerable:!0,configurable:!0,writable:!0,value:j}):T[B]=j,bp=(T,B)=>{for(var j in B||(B={}))Rh.call(B,j)&&Nh(T,j,B[j]);if($f)for(var j of $f(B))Fh.call(B,j)&&Nh(T,j,B[j]);return T},wp=(T,B)=>{var j={};for(var le in T)Rh.call(T,le)&&B.indexOf(le)<0&&(j[le]=T[le]);if(T!=null&&$f)for(var le of $f(T))B.indexOf(le)<0&&Fh.call(T,le)&&(j[le]=T[le]);return j};const Jf=T=>{const B=T,{scriptPubkey:j,used:le=!1}=B,xe=wp(B,["scriptPubkey","used"]);return bp({scriptPubkey:j,used:le,lastQueriedBlockHeight:0,lastQuery:0,lastTouched:0},xe)},xp=E({id:p,txid:p,vout:m,value:p,scriptPubkey:p,script:p,redeemScript:b(p),scriptType:$t,blockHeight:m,spent:S});var Ep=Object.defineProperty,Mp=Object.defineProperties,Sp=Object.getOwnPropertyDescriptors,Lh=Object.getOwnPropertySymbols,kp=Object.prototype.hasOwnProperty,Ip=Object.prototype.propertyIsEnumerable,Dh=(T,B,j)=>B in T?Ep(T,B,{enumerable:!0,configurable:!0,writable:!0,value:j}):T[B]=j,_p=(T,B)=>{for(var j in B||(B={}))kp.call(B,j)&&Dh(T,j,B[j]);if(Lh)for(var j of Lh(B))Ip.call(B,j)&&Dh(T,j,B[j]);return T},Ap=(T,B)=>Mp(T,Sp(B));const Tp=P("bip32","bip44","bip49","bip84"),Pp=E({utxos:b(M(xp)),subtractFee:b(S),CPFP:b(p)}),Op=E({lowFee:p,standardFeeLow:p,standardFeeHigh:p,highFee:p}),Uh=T=>E(Ap(_p({},Op.shape),{lowFeeFudgeFactor:x(p,T==null?void 0:T.lowFeeFudgeFactor),standardFeeLowFudgeFactor:x(p,T==null?void 0:T.standardFeeLowFudgeFactor),standardFeeHighFudgeFactor:x(p,T==null?void 0:T.standardFeeHighFudgeFactor),highFeeFudgeFactor:x(p,T==null?void 0:T.highFeeFudgeFactor),standardFeeLowAmount:p,standardFeeHighAmount:p,maximumFeeRate:b(p,T==null?void 0:T.maximumFeeRate)})).withRest,Bp=E({balance:p,addressBalances:E(p),lastSeenBlockHeight:m}),Hh=E({blockbookServers:E(S)}),Cp=E({nowNodesApiKey:b(p)}),Ml=E({blockbookServers:x(M(p),[]),enableCustomServers:x(S,!1)}),Rp=E({publicAddress:p}),Fp=P("bip69","targets"),Np=E({enableRbf:b(S),forceChangeAddress:b(p),outputSort:b(Fp,"bip69"),txOptions:b(Pp),utxoSourceAddress:b(p)});var Sl=gr(9939),Ht=gr(8405);const h1=Ht.WK,Lp=Ht.DE,Dp=Ht.k5,d1=Ht.Dr,p1=Ht.ef,v1=Ht.GY,g1=Ht.WM,m1=Ht.Kz,y1=Ht.uX,b1=Ht.IK,w1=Ht.gw,x1=Ht.WU,E1=Ht.G8,M1=Ht.xQ,S1=Ht.D7,k1=Ht.hi,I1=Ht.mJ,_1=Ht.zU,A1=Ht.dq,T1=Ht.m$,P1=Ht.MU,O1=Ht.ID,B1=Ht.k0,C1=Ht.D4,R1=Ht.kL,F1=Ht.jx,N1=Ht.A_,L1=Ht.v1,D1=Ht.TL,U1=Ht.Og,H1=Ht.mq,z1=Ht.ft,j1=Ht.KU,K1=Ht.ZU,W1=Ht.sF,G1=Ht.ye,V1=Ht.Xj,q1=Ht.Rn,X1=Ht.bo,Z1=Ht.KL,Y1=Ht.rW,$1=Ht.U3,J1=Ht.$Y,Q1=Ht.EJ,ey=Ht.XY,ty=Ht.v7,ry=Ht.up,ny=Ht.h,iy=Ht.Cx,oy=Ht.Zz,ay=Ht.CU,sy=Ht.ib,fy=Ht.eT,uy=Ht._0,cy=Ht.UR,ly=Ht.Up,hy=Ht.y0,dy=Ht.A2,py=Ht.ql,vy=Ht.FX,gy=Ht.Jr,my=Ht.zS,yy=Ht.pK,by=Ht.ud,wy=Ht.Zk,xy=Ht.Mf,Ey=Ht.U0,My=Ht.CX,Sy=Ht.l4,ky=Ht.gU,Iy=Ht.M3,_y=Ht.Xv,Ay=Ht.vN,Ty=Ht.g_,Py=Ht.BN,Oy=Ht.Jv,By=Ht.T0,Cy=Ht.z8,Ry=Ht.Gt,Fy=Ht.Fm,Ny=Ht.b4,Ly=Ht.N2,Dy=Ht.K8,Uy=Ht.gB,Hy=Ht.bd,zy=Ht.z2,jy=Ht.GG,Ky=Ht.V$,Wy=Ht.CC,Gy=Ht.dT,Vy=Ht.uT,qy=Ht._j,Xy=Ht.p4,Zy=Ht.W0,Yy=Ht.zk,$y=Ht.AB,Jy=Ht.sn,Qy=Ht._u,eb=Ht.Py,tb=Ht.iu,rb=Ht.l7,nb=Ht.JU,ib=Ht.O6,kl=T=>T.filter(B=>B!==void 0),Up=T=>{const B={};for(const j in T)T[j]!==void 0&&(B[j]=T[j]);return B},La=(T=Date.now())=>Math.round(T/1e3),Hp="https://info1.edge.app",Il="fees.json",ob=999999999,Qf=2,ab=200,sb=6,fb=2,ub=1,zp=(T,B,j,le)=>{const{highFeeFudgeFactor:xe="1",lowFeeFudgeFactor:Re="1",standardFeeHighAmount:be,standardFeeHighFudgeFactor:Me="1",standardFeeLowAmount:Ie,standardFeeLowFudgeFactor:ke="1"}=B;let{highFee:Ge,lowFee:Ve,standardFeeHigh:st,standardFeeLow:at}=B;switch(Ge=(0,ue.round)((0,ue.mul)(Ge,xe),0),Ve=(0,ue.round)((0,ue.mul)(Ve,Re),0),st=(0,ue.round)((0,ue.mul)(st,Me),0),at=(0,ue.round)((0,ue.mul)(at,ke),0),j){case"low":return Ve;case"standard":{if((0,ue.gte)(T,be))return st;if((0,ue.lte)(T,Ie))return at;const xt=(0,ue.sub)(be,Ie),bt=(0,ue.sub)(st,at),Pt=(0,ue.sub)(T,Ie),Gt=(0,ue.mul)(Pt,bt),rr=(0,ue.div)(Gt,xt);return(0,ue.add)(at,rr)}case"high":return Ge;case"custom":if(le==null||le==="0")throw new Error(`Invalid custom network fee: ${le}`);return le;default:throw new Error(`Invalid networkFeeOption: ${j}`)}},jp=E({fastestFee:m,halfHourFee:m,hourFee:m}),Kp=1.3,Wp=2,Gp=T=>{let B;try{B=jp(T)}catch{return null}const{fastestFee:j,halfHourFee:le}=B,xe=le.toString(),Re=j.toString(),be=Math.round(j*Kp).toString(),Me=Math.round(j*Wp).toString();return{lowFee:ue.max(xe,Qf.toString()),standardFeeLow:ue.max(Re,Qf.toString()),standardFeeHigh:ue.max(be,Qf.toString()),highFee:ue.max(Me,Qf.toString())}};var Vp=Object.defineProperty,qp=Object.defineProperties,Xp=Object.getOwnPropertyDescriptors,eu=Object.getOwnPropertySymbols,zh=Object.prototype.hasOwnProperty,jh=Object.prototype.propertyIsEnumerable,Kh=(T,B,j)=>B in T?Vp(T,B,{enumerable:!0,configurable:!0,writable:!0,value:j}):T[B]=j,_l=(T,B)=>{for(var j in B||(B={}))zh.call(B,j)&&Kh(T,j,B[j]);if(eu)for(var j of eu(B))jh.call(B,j)&&Kh(T,j,B[j]);return T},Al=(T,B)=>qp(T,Xp(B)),Zp=(T,B)=>{var j={};for(var le in T)zh.call(T,le)&&B.indexOf(le)<0&&(j[le]=T[le]);if(T!=null&&eu)for(var le of eu(T))B.indexOf(le)<0&&jh.call(T,le)&&(j[le]=T[le]);return j},di=(T,B,j)=>new Promise((le,xe)=>{var Re=Ie=>{try{Me(j.next(Ie))}catch(ke){xe(ke)}},be=Ie=>{try{Me(j.throw(Ie))}catch(ke){xe(ke)}},Me=Ie=>Ie.done?le(Ie.value):Promise.resolve(Ie.value).then(Re,be);Me((j=j.apply(T,B)).next())});const Yp=T=>di(void 0,null,function*(){const B=T,{disklet:j,pluginInfo:le}=B,xe=Zp(B,["disklet","pluginInfo"]),{currencyInfo:Re,engineInfo:be}=le,Me=t(j),Ie=yield $p(Me,be.defaultFeeInfo);let ke=0,Ge;const Ve=()=>di(void 0,null,function*(){if(Date.now()-ke<=be.feeUpdateInterval)return;const st=yield ev(Al(_l({},xe),{mempoolSpaceFeeInfoServer:be.mempoolSpaceFeeInfoServer})),at=Up(st!=null?st:{});Object.assign(Ie,at),ke=Date.now(),yield Jp(Me,Ie)});return{start(){return di(this,null,function*(){const st=yield Wh(Al(_l({},xe),{uri:`${Hp}/v1/networkFees/${Re.pluginId}`,cleaner:x(Uh(Ie),null)}));Object.assign(Ie,st),yield Ve(),Ge=setInterval(Ve,be.feeUpdateInterval)})},stop(){clearInterval(Ge)},clearCache(){return di(this,null,function*(){yield Me.delete(Il)})},getRate(st){return di(this,null,function*(){var at,xt,bt;const{spendTargets:Pt,networkFeeOption:Gt="standard",customNetworkFee:rr={},otherParams:dr={}}=st,Kt=(xt=(at=dr.paymentProtocolInfo)==null?void 0:at.merchant)==null?void 0:xt.requiredFeeRate;if(Kt!=null){const Et=ue.add(ue.mul(`${Kt}`,"1.5"),"1");return ue.toFixed(Et,0,0)}const Ut=((bt=Re.customFeeTemplate)!=null?bt:[])[0];if(Ut==null)throw new Error("No custom fee template");return zp(Qp(Pt),Ie,Gt,rr[Ut.key])})},get feeInfo(){return Ie}}}),$p=(T,B)=>di(void 0,null,function*(){const j=yield T.getJson(Il).catch(()=>{});return x(Uh(B),B)(j)}),Jp=(T,B)=>di(void 0,null,function*(){return yield T.setJson(Il,B)}),Qp=T=>T.reduce((B,{nativeAmount:j})=>{if(j==null)throw new Error(`Invalid spend target amount: ${j}`);return ue.add(B,j)},"0"),Wh=T=>di(void 0,null,function*(){const{uri:B,cleaner:j,io:le,log:xe}=T;try{const Re=yield le.fetch(B);if(!Re.ok)throw new Error(`Error fetching fees from ${B}`);const be=yield Re.json();return j(be)}catch(Re){return xe(Re.message),null}}),ev=T=>di(void 0,null,function*(){if(T.mempoolSpaceFeeInfoServer!=null){const B=yield Wh(Al(_l({},T),{uri:T.mempoolSpaceFeeInfoServer,cleaner:Gp}));if(B!=null)return B}return{}});var Gh=gr(7007);class Vh extends Gh.EventEmitter{}var Ur=(T=>(T.SEEN_TX_CHECKPOINT="seen:tx:checkpoint",T.TRANSACTIONS="transactions",T.TRANSACTIONS_CHANGED="transactions:changed",T.WALLET_BALANCE_CHANGED="wallet:balance:changed",T.ADDRESS_BALANCE_CHANGED="address:balance:changed",T.BLOCK_HEIGHT_CHANGED="block:height:changed",T.NEW_ADDRESS_TRANSACTION="address:transaction:changed",T.ADDRESSES_CHECKED="addresses:checked",T.TXIDS_CHANGED="txids:changed",T.CONNECTION_OPEN="connection:open",T.CONNECTION_CLOSE="connection:close",T.CONNECTION_TIMER="connection:timer",T))(Ur||{});const tv=T=>{const B=new Vh;return B.on("addresses:checked",T.onAddressesChecked),B.on("block:height:changed",(j,le)=>{T.onBlockHeightChanged(le)}),B.on("seen:tx:checkpoint",T.onSeenTxCheckpoint),B.on("transactions",T.onTransactions),B.on("transactions:changed",T.onTransactionsChanged),B.on("txids:changed",T.onTxidsChanged),B.on("wallet:balance:changed",T.onBalanceChanged),B};var rv=(T,B,j)=>new Promise((le,xe)=>{var Re=Ie=>{try{Me(j.next(Ie))}catch(ke){xe(ke)}},be=Ie=>{try{Me(j.throw(Ie))}catch(ke){xe(ke)}},Me=Ie=>Ie.done?le(Ie.value):Promise.resolve(Ie.value).then(Re,be);Me((j=j.apply(T,B)).next())});class qh{constructor(){this._acquired=!1,this._waitingResolvers=[]}get acquired(){return this._acquired}acquireAsync(){return rv(this,null,function*(){return this._acquired?yield new Promise(B=>{this._waitingResolvers.push(B)}):(this._acquired=!0,yield Promise.resolve())})}tryAcquire(){return this._acquired?!1:(this._acquired=!0,!0)}release(){if(!this._acquired)throw new Error("Cannot release an unacquired lock");if(this._waitingResolvers.length>0){const B=this._waitingResolvers.shift();if(B==null)throw new Error("Cannot release null lock");B()}else this._acquired=!1}}const nv=T=>{for(const B of Oo)if(B.coinInfo.name===T)return B.engineInfo.formats;return[]},Jr=(T,B)=>{delete T[B]};var Ii=(T,B,j)=>new Promise((le,xe)=>{var Re=Ie=>{try{Me(j.next(Ie))}catch(ke){xe(ke)}},be=Ie=>{try{Me(j.throw(Ie))}catch(ke){xe(ke)}},Me=Ie=>Ie.done?le(Ie.value):Promise.resolve(Ie.value).then(Re,be);Me((j=j.apply(T,B)).next())});const tu="metadata.json",Xh=T=>Ii(void 0,null,function*(){const{disklet:B,emitter:j,log:le}=T,xe=t(B),Re=new qh,be={get state(){return Ve},clear:()=>Ii(void 0,null,function*(){yield xe.delete(tu);const st=yield ke();Object.assign(Ve,st)})},Me=st=>Ii(void 0,null,function*(){const at=Object.values(Ve.addressBalances).reduce((xt,bt)=>(0,ue.add)(xt,bt),"0");Ve.balance=at,yield Ge(Ve),j.emit(Ur.WALLET_BALANCE_CHANGED,st,at)});j.on(Ur.ADDRESS_BALANCE_CHANGED,(st,at)=>Ii(void 0,null,function*(){yield Re.acquireAsync();try{at.forEach(({scriptPubkey:xt,balance:bt})=>{bt==="0"?Jr(Ve.addressBalances,xt):Ve.addressBalances[xt]=bt}),yield Me(st)}catch(xt){le.error(xt)}finally{Re.release()}})),j.on(Ur.BLOCK_HEIGHT_CHANGED,(st,at)=>Ii(void 0,null,function*(){at>Ve.lastSeenBlockHeight&&(Ve.lastSeenBlockHeight=at,yield Ge(Ve))}));const Ie=()=>Ii(void 0,null,function*(){try{const st=yield xe.getJson(tu);return Bp(st)}catch(st){return le.error(st),yield ke()}}),ke=()=>Ii(void 0,null,function*(){const st={balance:"0",addressBalances:{},lastSeenBlockHeight:0};return yield xe.setJson(tu,st),st}),Ge=st=>Ii(void 0,null,function*(){yield xe.setJson(tu,st)}),Ve=yield Ie();return be});var Zh=gr(5828);const iv=k(T=>Zh.xn.parse(p(T)),T=>Zh.xn.stringify(T).toLowerCase());function ov(T){const B=p(T);if(!/^\d+$/.test(B))throw new Error("Expected an integer string");return B}function av(T,B){var j;const{memos:le=[]}=T,{displayName:xe,memoMaxLength:Re,memoMaxValue:be,memoOptions:Me=[],multipleMemos:Ie=!1,memoType:ke}=B,Ge=[...Me];ke==="text"&&Ge.push({type:"text",maxLength:Re}),ke==="number"&&Ge.push({type:"number",maxValue:be}),ke==="hex"&&Ge.push({type:"hex",maxBytes:Re==null?void 0:Re/2});const{memoName:Ve="memo"}=(j=Me[0])!=null?j:{};for(const st of le){const at=Ge.filter(bt=>st.type===bt.type);if(at.length<1)throw new Error(`${xe} ${Ve}: cannot be type ${st.type}`);const xt=at.map(bt=>sv(st,bt)).find(bt=>bt!=null);if(xt!=null)throw new Error(`${xe} {memoName}: ${xt}`)}if(!Ie&&le.length>1)throw new Error(`${xe} only supports one ${Ve}`)}function sv(T,B){if(B.type==="text"&&B.maxLength!=null&&T.value.length>B.maxLength)return`cannot be longer than ${B.maxLength}`;if(B.type==="number"){const j=x(ov)(T.value);if(j==null)return"is not a valid number";if(B.maxValue!=null&&(0,ue.gt)(j,B.maxValue))return`cannot be greater than ${B.maxValue}`}if(B.type==="hex"){const j=x(iv)(T.value);if(j==null)return"is not valid hexadecimal";if(B.maxBytes!=null&&j.length>B.maxBytes)return`cannot be longer than ${B.maxBytes} bytes`;if(B.minBytes!=null&&j.length<B.minBytes)return`cannot be shorter than ${B.minBytes} bytes`}}var fv=Object.defineProperty,uv=Object.defineProperties,cv=Object.getOwnPropertyDescriptors,Yh=Object.getOwnPropertySymbols,lv=Object.prototype.hasOwnProperty,hv=Object.prototype.propertyIsEnumerable,$h=(T,B,j)=>B in T?fv(T,B,{enumerable:!0,configurable:!0,writable:!0,value:j}):T[B]=j,dv=(T,B)=>{for(var j in B||(B={}))lv.call(B,j)&&$h(T,j,B[j]);if(Yh)for(var j of Yh(B))hv.call(B,j)&&$h(T,j,B[j]);return T},pv=(T,B)=>uv(T,cv(B));function vv(T,B){var j,le;const{memoType:xe}=B,Re=[];if(xe==="hex"||xe==="number"||xe==="text")for(const Me of T.spendTargets)Me.memo!=null?Re.push({type:xe,value:Me.memo}):Me.uniqueIdentifier!=null?Re.push({type:xe,value:Me.uniqueIdentifier}):typeof((j=Me.otherParams)==null?void 0:j.uniqueIdentifier)=="string"&&Re.push({type:xe,value:Me.otherParams.uniqueIdentifier});const be=pv(dv({},T),{memos:(le=T.memos)!=null?le:Re});return av(be,B),be}var jn;(function(T){T.CountBase="COUNT_BASE",T.HashBase="HASH_BASE",T.RangeBase="RANGE_BASE"})(jn||(jn={}));function Jh(T,B,j,le,xe,Re,be){try{var Me=T[Re](be),Ie=Me.value}catch(ke){j(ke);return}Me.done?B(Ie):Promise.resolve(Ie).then(le,xe)}function wr(T){return function(){var B=this,j=arguments;return new Promise(function(le,xe){var Re=T.apply(B,j);function be(Ie){Jh(Re,le,xe,be,Me,"next",Ie)}function Me(Ie){Jh(Re,le,xe,be,Me,"throw",Ie)}be(void 0)})}}function ru(){return ru=Object.assign||function(T){for(var B=1;B<arguments.length;B++){var j=arguments[B];for(var le in j)Object.prototype.hasOwnProperty.call(j,le)&&(T[le]=j[le])}return T},ru.apply(this,arguments)}function gv(T){return Object.prototype.hasOwnProperty.call(T,"getJson")||Object.prototype.hasOwnProperty.call(T,"setJson")}function pi(T){return gv(T)?T:t(T)}function nu(T,B){return T+"/"+Cl(B)}function Ro(T,B,j){return nu(T,B)+"/"+j+".json"}function Tl(T){return T+"/config.json"}function Pl(T,B){return Ol.apply(this,arguments)}function Ol(){return Ol=wr(function*(T,B){return yield T.getJson(Tl(B))}),Ol.apply(this,arguments)}function _i(T,B,j){return Bl.apply(this,arguments)}function Bl(){return Bl=wr(function*(T,B,j){yield T.setJson(Tl(B),j)}),Bl.apply(this,arguments)}function Cl(T){T===void 0&&(T="");var B=/^[a-z0-9_]*$/i,j=T.trim();if(!B.test(j))throw new Error("partitions may only contain alphanumeric and underscore characters");return j}function Rl(T){if(T==="")throw new Error("database name cannot be empty");var B=/^[a-z0-9_]*$/i,j=T.trim();if(!B.test(j))throw new Error("database name may only contain alphanumeric and underscore characters");return j}function Fl(T,B){return Nl.apply(this,arguments)}function Nl(){return Nl=wr(function*(T,B){return yield T.list("./").then(function(j){return j[B]==="folder"})}),Nl.apply(this,arguments)}function Ll(T){return Number.isInteger(T)&&T>=1}function Dl(T,B){return Ul.apply(this,arguments)}function Ul(){return Ul=wr(function*(T,B){var j=pi(T),le=yield Pl(j,B);if(le.type!==jn.CountBase)throw new Error("Tried to open CountBase, but type is "+String(le.type));var xe={databaseName:B,insert:function(be,Me,Ie){return wr(function*(){var ke=Cl(be),Ge=!1,Ve=le.partitions[ke];Ve===void 0&&(Ve={length:0},Ge=!0);var st=Ve.length;if(Number.isNaN(Me)||Me<0)throw new Error("index must be a Number greater than 0");if(Me>st)throw new Error("index is larger than next index in partition");Me===st&&(++Ve.length,Ge=!0);var at=Math.floor(Me/le.bucketSize),xt=Ro(B,be,at),bt=yield j.getJson(xt).catch(function(){return[]}),Pt=Me%le.bucketSize;bt[Pt]=Ie,yield j.setJson(xt,bt),Ge&&(le.partitions[ke]=Ve),yield _i(j,B,le)})()},query:function(be,Me,Ie){return wr(function*(){Me===void 0&&(Me=0),Ie===void 0&&(Ie=Me);for(var ke=[],Ge=Math.floor(Me/le.bucketSize);Ge<=Math.floor(Ie/le.bucketSize);Ge++){var Ve=Ro(B,be,Ge);ke.push(j.getJson(Ve).catch(function(){return[]}))}for(var st=yield Promise.all(ke),at=[],xt=Me;xt<=Ie;xt++){var bt=Math.floor(xt/le.bucketSize),Pt=xt%le.bucketSize,Gt=bt-Math.floor(Me/le.bucketSize);at.push(st[Gt][Pt])}return at})()},length:function(be){var Me,Ie=Cl(be),ke=le.partitions[Ie];return(Me=ke==null?void 0:ke.length)!=null?Me:0},dumpData:function(){return wr(function*(){for(var be={},Me=0,Ie=Object.keys(le.partitions);Me<Ie.length;Me++){var ke=Ie[Me];be[ke]=yield xe.query(ke,0,xe.length(ke)-1)}return{config:le,data:be}})()}};return xe}),Ul.apply(this,arguments)}function mv(T,B){return Hl.apply(this,arguments)}function Hl(){return Hl=wr(function*(T,B){var j=pi(T),le=B.name,xe=B.bucketSize;if(!Ll(xe))throw new Error("bucketSize must be a number greater than 0");var Re=Rl(le),be=yield Fl(j,Re);if(be)throw new Error("database "+Re+" already exists");var Me={type:jn.CountBase,bucketSize:Math.floor(xe),partitions:{}};return yield _i(j,Re,Me),yield Dl(j,Re)}),Hl.apply(this,arguments)}function yv(T,B){return zl.apply(this,arguments)}function zl(){return zl=wr(function*(T,B){var j=pi(T);try{return yield mv(j,B)}catch(le){if(le instanceof Error&&!le.message.includes("already exists"))throw le;return yield Dl(j,B.name)}}),zl.apply(this,arguments)}function jl(T,B){return Kl.apply(this,arguments)}function Kl(){return Kl=wr(function*(T,B){var j=pi(T),le=yield Pl(j,B);if(le.type!==jn.HashBase)throw new Error("Tried to open HashBase, but type is "+String(le.type));function xe(Me,Ie,ke){return Re.apply(this,arguments)}function Re(){return Re=wr(function*(Me,Ie,ke){if(ke===void 0&&(ke=!1),Ie.length===0)return[];for(var Ge=le.prefixSize,Ve=[],st={},at=function(At){var It=Ie[At];if(It.length<Ge)return"continue";var Dt=It.substring(0,Ge);if(st[Dt]===void 0){var mt=Ro(B,Me,Dt),Rt=j.getJson(mt).then(function(Yt){return st[Dt].bucketData=Yt},function(){});st[Dt]={bucketFetcher:Rt,bucketPath:mt,bucketData:{}},Ve.push(Rt)}},xt=0;xt<Ie.length;xt++)var bt=at(xt);yield Promise.all(Ve);for(var Pt=[],Gt=new Set,rr=0;rr<Ie.length;rr++){var dr=Ie[rr].substring(0,Ge);Gt.add(dr);var Kt=st[dr].bucketData,Ut=Kt[Ie[rr]];ke&&delete Kt[Ie[rr]],Pt.push(Ut)}var vt=Promise.resolve();if(ke){var Et=Array.from(Gt).map(function(){var Ct=wr(function*(At){var It=st[At],Dt=It.bucketPath,mt=It.bucketData;return yield j.setJson(Dt,mt)});return function(At){return Ct.apply(this,arguments)}}());vt=Promise.all(Et)}return yield vt,Pt}),Re.apply(this,arguments)}var be={databaseName:B,insert:function(Ie,ke,Ge){return wr(function*(){var Ve=le.prefixSize;if(ke.length<Ve)throw new Error("hash must be a string of length at least "+Ve);var st=ke.substring(0,Ve),at=Ro(B,Ie,st),xt=function(){var bt=wr(function*(Pt){var Gt;return Pt===void 0&&(Pt={}),yield j.setJson(at,ru(Pt,(Gt={},Gt[ke]=Ge,Gt)))});return function(Gt){return bt.apply(this,arguments)}}();yield j.getJson(at).then(function(){var bt=wr(function*(Pt){return yield xt(Pt)});return function(Pt){return bt.apply(this,arguments)}}(),wr(function*(){return yield xt()}))})()},query:function(Ie,ke){return wr(function*(){return yield xe(Ie,ke)})()},delete:function(){var Me=wr(function*(ke,Ge){return yield xe(ke,Ge,!0)});function Ie(ke,Ge){return Me.apply(this,arguments)}return Ie}(),dumpData:function(Ie){return wr(function*(){Ie===void 0&&(Ie="");var ke={},Ge=function(){var st=wr(function*(at,xt){xt===void 0&&(xt="");var bt=yield at.list(),Pt=Object.keys(bt).map(function(){var Gt=wr(function*(rr){if(!Tl(B).includes(rr)){var dr=bt[rr];if(dr==="folder"){if(xt!=="")throw new Error("Unexpected partition hierarchy");return yield Ge(r(at,rr),rr)}if(dr==="file"){var Kt=yield at.getJson(rr);ke[xt]=ru({},ke[xt],Kt);return}throw new Error("Unknown listing type "+String(dr))}});return function(rr){return Gt.apply(this,arguments)}}());yield Promise.all(Pt)});return function(xt,bt){return st.apply(this,arguments)}}(),Ve=r(j,nu(B,Ie));return yield Ge(Ve,Ie),{config:le,data:ke}})()}};return be}),Kl.apply(this,arguments)}function bv(T,B){return Wl.apply(this,arguments)}function Wl(){return Wl=wr(function*(T,B){var j=pi(T),le=B.prefixSize,xe=Rl(B.name);if(!Ll(le))throw new Error("prefixSize must be a number greater than 0");var Re=yield Fl(j,xe);if(Re)throw new Error("database "+xe+" already exists");var be={type:jn.HashBase,prefixSize:le};return yield _i(j,xe,be),yield jl(j,xe)}),Wl.apply(this,arguments)}function Da(T,B){return Gl.apply(this,arguments)}function Gl(){return Gl=wr(function*(T,B){var j=pi(T);try{return yield bv(j,B)}catch(le){if(le instanceof Error&&!le.message.includes("already exists"))throw le;return yield jl(j,B.name)}}),Gl.apply(this,arguments)}function Vl(T,B){return ql.apply(this,arguments)}function ql(){return ql=wr(function*(T,B){var j=pi(T);function le(Kt,Ut,vt,Et,Ct,At){if(Et===void 0&&(Et=0),Ct===void 0&&(Ct=vt.length-1),At===void 0&&(At=!1),vt.length===0)return{found:!1,index:0};var It=Et,Dt=Ct,mt=0,Rt;if(!Number.isInteger(Et)||!Number.isInteger(Ct)||Et<0||Ct>vt.length-1||Ct<Et)throw new Error("indices must be valid bucket index values and endIndex >= startIndex");for(;It<=Dt;)if(mt=~~((It+Dt)/2),Rt=vt[mt][Ut],Rt<Kt)It=mt+1;else if(Rt>Kt)Dt=mt-1;else if(At){var Yt=mt===Dt||vt[mt+1][Ut]!==Kt;if(Yt)return{found:!0,index:mt};It=mt+1}else{var Vt=mt===It||vt[mt-1][Ut]!==Kt;if(Vt)return{found:!0,index:mt};Dt=mt-1}return{found:!1,index:Rt!=null&&Rt<Kt?mt+1:mt}}var xe=yield Pl(j,B);if(xe.type!==jn.RangeBase)throw new Error("Tried to open RangeBase, but type is "+String(xe.type));function Re(Kt,Ut){return be.apply(this,arguments)}function be(){return be=wr(function*(Kt,Ut){var vt=xe.rangeKey,Et=nu(B,Kt),Ct=yield j.list(Et),At;for(var It in Ct)if(!/config\.json$/.test(It)){var Dt=It.split("/"),mt=Number(Dt[Dt.length-1].split(".")[0]);At==null?At=mt:Ut?mt>At&&(At=mt):mt<At&&(At=mt)}if(At!=null){var Rt=yield bt(Kt,At),Yt=Ut?Rt.length-1:0;return Number(Rt[Yt][vt])}}),be.apply(this,arguments)}function Me(Kt,Ut,vt){return Ie.apply(this,arguments)}function Ie(){return Ie=wr(function*(Kt,Ut,vt){var Et,Ct=xe.rangeKey,At=xe.limits,It=Ut[Ct],Dt=(Et=At[Kt])!=null?Et:At[Kt]={};if(vt){var mt=It===Dt.minRange,Rt=It===Dt.maxRange;if(mt||Rt)return yield dr.query(Kt,It).then(function(nr){if(nr.length===0)return Re(Kt,Rt).then(function(){var qt=wr(function*(ir){return mt&&(Dt.minRange=ir),Rt&&(Dt.maxRange=ir),yield _i(j,B,xe)});return function(ir){return qt.apply(this,arguments)}}())})}else{var Yt=Dt.minRange,Vt=Dt.maxRange;return(Yt==null||It<Yt)&&(Dt.minRange=It),(Vt==null||It>Vt)&&(Dt.maxRange=It),yield _i(j,B,xe)}}),Ie.apply(this,arguments)}function ke(Kt,Ut,vt,Et){return Ge.apply(this,arguments)}function Ge(){return Ge=wr(function*(Kt,Ut,vt,Et){Et===void 0&&(Et=!1);var Ct=xe.bucketSize,At=xe.rangeKey,It=xe.idKey,Dt=Math.floor(Ut/Ct),mt=yield bt(Kt,Dt),Rt=le(Ut,At,mt);if(Rt.found){var Yt=le(Ut,At,mt,Rt.index,mt.length-1,!0),Vt=le(vt,It,mt,Rt.index,Yt.index);if(Vt.found)if(Et){var nr=mt.splice(Vt.index,1),qt=nr[0];return yield Gt(Kt,Dt,mt),yield Me(Kt,qt,!0),qt}else return mt[Vt.index]}}),Ge.apply(this,arguments)}function Ve(Kt,Ut,vt){return st.apply(this,arguments)}function st(){return st=wr(function*(Kt,Ut,vt){var Et=yield at(Kt),Ct=[],At=vt;function It(mt){return Dt.apply(this,arguments)}function Dt(){return Dt=wr(function*(mt){if(Ut===Ct.length||mt===Et.length)return yield Promise.resolve();var Rt=yield bt(Kt,Et[mt]);if(Rt.length<=At)return At-=Rt.length,yield It(++mt);var Yt=Rt.length-At,Vt=Yt+Ct.length-Ut,nr=Vt>0?Vt:0;return Ct=[].concat(Ct,Rt.slice(nr,Yt).reverse()),At=0,yield It(++mt)}),Dt.apply(this,arguments)}return yield It(0),Ct}),st.apply(this,arguments)}function at(Kt){return xt.apply(this,arguments)}function xt(){return xt=wr(function*(Kt){var Ut=nu(B,Kt),vt=yield j.list(Ut),Et={};for(var Ct in vt)if(Object.hasOwnProperty.call(vt,Ct)&&vt[Ct]!=="folder"&&!/config\.json$/.test(Ct)){var At=Ct.split("/"),It=Number(At[At.length-1].split(".")[0]);Et[It]=!0}return Object.keys(Et).sort(function(Dt,mt){return Dt<mt?1:-1})}),xt.apply(this,arguments)}function bt(Kt,Ut){return Pt.apply(this,arguments)}function Pt(){return Pt=wr(function*(Kt,Ut){var vt=Ro(B,Kt,Ut);return yield j.getJson(vt).catch(function(){return[]})}),Pt.apply(this,arguments)}function Gt(Kt,Ut,vt){return rr.apply(this,arguments)}function rr(){return rr=wr(function*(Kt,Ut,vt){var Et=Ro(B,Kt,Ut);return vt.length===0?yield j.delete(Et):yield j.setJson(Et,vt)}),rr.apply(this,arguments)}var dr={rangeKey:xe.rangeKey,idKey:xe.idKey,databaseName:B,insert:function(Ut,vt){return wr(function*(){var Et,Ct=xe.bucketSize,At=xe.rangeKey,It=xe.idKey;if(!(Object.prototype.hasOwnProperty.call(vt,At)&&Object.prototype.hasOwnProperty.call(vt,It)))throw new Error("data must have properties "+At+" and "+It);var Dt=yield ke(Ut,vt[At],vt[It]);if(Dt!=null)throw new Error("Cannot insert data because id already exists");var mt=Math.floor(vt[At]/Ct);yield bt(Ut,mt).then(function(){var Yt=wr(function*(Vt){var nr=le(vt[At],At,Vt);if(!nr.found)Vt.splice(nr.index,0,vt);else{var qt=le(vt[At],At,Vt,nr.index,Vt.length-1,!0),ir=le(vt[It],It,Vt,nr.index,qt.index);Vt.splice(ir.index,0,vt)}return yield Gt(Ut,mt,Vt)});return function(Vt){return Yt.apply(this,arguments)}}(),wr(function*(){return yield Gt(Ut,mt,[vt])})),yield Me(Ut,vt,!1);var Rt=(Et=xe.sizes[Ut])!=null?Et:0;xe.sizes[Ut]=Rt+1,yield _i(j,B,xe)})()},query:function(Ut,vt,Et){return wr(function*(){Ut===void 0&&(Ut="/"),Et===void 0&&(Et=vt);var Ct=xe.bucketSize,At=xe.rangeKey,It=[];if(Et<vt)throw new Error("rangeStart must be larger than rangeEnd");for(var Dt=Math.floor(vt/Ct);Dt<=Math.floor(Et/Ct);Dt++)It.push(bt(Ut,Dt));var mt=yield Promise.all(It),Rt=[];if(mt.length===1){var Yt=le(vt,At,mt[0]),Vt=le(Et,At,mt[0],0,mt[0].length-1,!0);Rt=mt[0].slice(Yt.index,Vt.found?Vt.index+1:Vt.index)}else for(var nr=0;nr<mt.length;nr++)if(nr===0){var qt=le(vt,At,mt[nr]);Rt=mt[nr].slice(qt.index)}else if(nr===mt.length-1){var ir=le(Et,At,mt[nr],0,mt[nr].length-1,!0);Array.prototype.push.apply(Rt,mt[nr].slice(0,ir.found?ir.index+1:ir.index))}else Rt.push.apply(Rt,mt[nr]);return Rt})()},queryById:function(Ut,vt,Et){return wr(function*(){return yield ke(Ut,vt,Et)})()},queryByCount:function(Ut,vt,Et){return wr(function*(){return Et===void 0&&(Et=0),yield Ve(Ut,vt,Et)})()},delete:function(){var Kt=wr(function*(vt,Et,Ct){return yield ke(vt,Et,Ct,!0).then(function(){var At=wr(function*(It){var Dt,mt=(Dt=xe.sizes[vt])!=null?Dt:0;return xe.sizes[vt]=mt-1,yield _i(j,B,xe).then(function(){return It})});return function(It){return At.apply(this,arguments)}}())});function Ut(vt,Et,Ct){return Kt.apply(this,arguments)}return Ut}(),update:function(Ut,vt,Et){return wr(function*(){var Ct=yield dr.delete(Ut,vt,Et[xe.idKey]);if(Ct==null)throw new Error("Cannot update a non-existing element");yield dr.insert(Ut,Et)})()},min:function(Ut){var vt,Et;return(vt=(Et=xe.limits[Ut])==null?void 0:Et.minRange)!=null?vt:0},max:function(Ut){var vt,Et;return(vt=(Et=xe.limits[Ut])==null?void 0:Et.maxRange)!=null?vt:0},size:function(Ut){var vt;return(vt=xe.sizes[Ut])!=null?vt:0},dumpData:function(){return wr(function*(){for(var Ut={},vt=0,Et=Object.keys(xe.sizes);vt<Et.length;vt++){var Ct,At=Et[vt],It=(Ct=dr.min(At))!=null?Ct:0;Ut[At]=yield dr.query(At,It,dr.max(At))}return{config:xe,data:Ut}})()}};return dr}),ql.apply(this,arguments)}function wv(T,B){return Xl.apply(this,arguments)}function Xl(){return Xl=wr(function*(T,B){var j=pi(T),le=B.name,xe=B.bucketSize,Re=B.rangeKey,be=B.idKey,Me=B.idPrefixLength,Ie=Me===void 0?1:Me;if(!Ll(xe))throw new Error("bucketSize must be a number greater than 0");var ke=Rl(le),Ge=yield Fl(j,ke);if(Ge)throw new Error("database "+ke+" already exists");var Ve={type:jn.RangeBase,bucketSize:Math.floor(xe),rangeKey:Re,idKey:be,idPrefixLength:Ie,limits:{},sizes:{}};return yield _i(j,ke,Ve),yield Vl(j,ke)}),Xl.apply(this,arguments)}function Qh(T,B){return Zl.apply(this,arguments)}function Zl(){return Zl=wr(function*(T,B){var j=pi(T);try{return yield wv(j,B)}catch(le){if(le instanceof Error&&!le.message.includes("already exists"))throw le;return yield Vl(j,B.name)}}),Zl.apply(this,arguments)}function cb(T,B){return Yl.apply(this,arguments)}function Yl(){return Yl=wr(function*(T,B){var j=yield T.getText(B+"/config.json").then(function(xe){return JSON.parse(xe)});switch(j.type){case jn.CountBase:return yield Dl(T,B);case jn.HashBase:return yield jl(T,B);case jn.RangeBase:return yield Vl(T,B);default:{var le=j==null?void 0:j.type;throw new Error("Unknown base type: "+le)}}}),Yl.apply(this,arguments)}var xv=function(T,B,j,le){function xe(Re){return Re instanceof j?Re:new j(function(be){be(Re)})}return new(j||(j=Promise))(function(Re,be){function Me(Ge){try{ke(le.next(Ge))}catch(Ve){be(Ve)}}function Ie(Ge){try{ke(le.throw(Ge))}catch(Ve){be(Ve)}}function ke(Ge){Ge.done?Re(Ge.value):xe(Ge.value).then(Me,Ie)}ke((le=le.apply(T,B||[])).next())})};class Ev{constructor(B){if(this._maxConcurrency=B,this._queue=[],B<=0)throw new Error("semaphore must be initialized to a positive value");this._value=B}acquire(){const B=this.isLocked(),j=new Promise(le=>this._queue.push(le));return B||this._dispatch(),j}runExclusive(B){return xv(this,void 0,void 0,function*(){const[j,le]=yield this.acquire();try{return yield B(j)}finally{le()}})}isLocked(){return this._value<=0}release(){if(this._maxConcurrency>1)throw new Error("this method is unavailabel on semaphores with concurrency > 1; use the scoped release returned by acquire instead");if(this._currentReleaser){const B=this._currentReleaser;this._currentReleaser=void 0,B()}}_dispatch(){const B=this._queue.shift();if(!B)return;let j=!1;this._currentReleaser=()=>{j||(j=!0,this._value++,this._dispatch())},B([this._value--,this._currentReleaser])}}var Mv=function(T,B,j,le){function xe(Re){return Re instanceof j?Re:new j(function(be){be(Re)})}return new(j||(j=Promise))(function(Re,be){function Me(Ge){try{ke(le.next(Ge))}catch(Ve){be(Ve)}}function Ie(Ge){try{ke(le.throw(Ge))}catch(Ve){be(Ve)}}function ke(Ge){Ge.done?Re(Ge.value):xe(Ge.value).then(Me,Ie)}ke((le=le.apply(T,B||[])).next())})};class $l{constructor(){this._semaphore=new Ev(1)}acquire(){return Mv(this,void 0,void 0,function*(){const[,B]=yield this._semaphore.acquire();return B})}runExclusive(B){return this._semaphore.runExclusive(()=>B())}isLocked(){return this._semaphore.isLocked()}release(){this._semaphore.release()}}var ed=function(T,B,j,le){function xe(Re){return Re instanceof j?Re:new j(function(be){be(Re)})}return new(j||(j=Promise))(function(Re,be){function Me(Ge){try{ke(le.next(Ge))}catch(Ve){be(Ve)}}function Ie(Ge){try{ke(le.throw(Ge))}catch(Ve){be(Ve)}}function ke(Ge){Ge.done?Re(Ge.value):xe(Ge.value).then(Me,Ie)}ke((le=le.apply(T,B||[])).next())})};function lb(T,B,j=new Error("timeout")){return{acquire:()=>new Promise((le,xe)=>ed(this,void 0,void 0,function*(){let Re=!1;setTimeout(()=>{Re=!0,xe(j)},B);const be=yield T.acquire();Re?(Array.isArray(be)?be[1]:be)():le(be)})),runExclusive(le){return ed(this,void 0,void 0,function*(){let xe=()=>{};try{const Re=yield this.acquire();return Array.isArray(Re)?(xe=Re[1],yield le(Re[0])):(xe=Re,yield le())}finally{xe()}})},release(){T.release()},isLocked:()=>T.isLocked()}}const vi=T=>`${T.format}_${T.changeIndex}`,Sv={name:"scriptPubkeyByPath",bucketSize:50},kv={name:"addressByScriptPubkey",prefixSize:4},Iv={name:"lastUsedByFormatPath",prefixSize:2},_v={name:"txIdByBlockHeight",bucketSize:1e5,rangeKey:"blockHeight",idKey:"txid"},Av={name:"txById",prefixSize:2},Tv={name:"txIdsByDate",bucketSize:30*24*60*60,rangeKey:"date",idKey:"txid"},Pv={name:"utxoById",prefixSize:2},Ov={name:"utxoIdsByScriptPubkey",prefixSize:4};var Bv=Object.defineProperty,td=Object.getOwnPropertySymbols,Cv=Object.prototype.hasOwnProperty,Rv=Object.prototype.propertyIsEnumerable,rd=(T,B,j)=>B in T?Bv(T,B,{enumerable:!0,configurable:!0,writable:!0,value:j}):T[B]=j,Jl=(T,B)=>{for(var j in B||(B={}))Cv.call(B,j)&&rd(T,j,B[j]);if(td)for(var j of td(B))Rv.call(B,j)&&rd(T,j,B[j]);return T},ro=(T,B,j)=>new Promise((le,xe)=>{var Re=Ie=>{try{Me(j.next(Ie))}catch(ke){xe(ke)}},be=Ie=>{try{Me(j.throw(Ie))}catch(ke){xe(ke)}},Me=Ie=>Ie.done?le(Ie.value):Promise.resolve(Ie.value).then(Re,be);Me((j=j.apply(T,B)).next())});const nd=T=>ro(void 0,null,function*(){const B={addressByScriptPubkey:yield Da(T.storage,kv),scriptPubkeyByPath:yield yv(T.storage,Sv),lastUsedByFormatPath:yield Da(T.storage,Iv)},j={txById:yield Da(T.storage,Av),txIdsByBlockHeight:yield Qh(T.storage,_v),txIdsByDate:yield Qh(T.storage,Tv)},le={utxoById:yield Da(T.storage,Pv),utxoIdsByScriptPubkey:yield Da(T.storage,Ov)},xe=new $l,Re=new $l,be=new $l;return{address(Me){return ro(this,null,function*(){return yield xe.runExclusive(()=>ro(this,null,function*(){return yield Me(B)}))})},tx(Me){return ro(this,null,function*(){return yield Re.runExclusive(()=>ro(this,null,function*(){return yield Me(j)}))})},utxo(Me){return ro(this,null,function*(){return yield be.runExclusive(()=>ro(this,null,function*(){return yield Me(le)}))})},all:Jl(Jl(Jl({},B),j),le)}});var Hr=(T,B,j)=>new Promise((le,xe)=>{var Re=Ie=>{try{Me(j.next(Ie))}catch(ke){xe(ke)}},be=Ie=>{try{Me(j.throw(Ie))}catch(ke){xe(ke)}},Me=Ie=>Ie.done?le(Ie.value):Promise.resolve(Ie.value).then(Re,be);Me((j=j.apply(T,B)).next())});const Fv="tables";function id(T){return Hr(this,null,function*(){const B=(0,Sl.my)(T.disklet,Fv);let j=t(B),le=yield nd({storage:j}).catch(be=>Hr(this,null,function*(){throw yield j.delete("."),be}));const xe=be=>{let Me="0",Ie={};for(const ke of be.inputs)Ie[ke.n.toString()]=ke;for(const ke of be.ourIns){const Ge=Ie[ke];Me=ue.sub(Me,Ge.amount)}Ie={};for(const ke of be.outputs)Ie[ke.n.toString()]=ke;for(const ke of be.ourOuts){const Ge=Ie[ke];Me=ue.add(Me,Ge.amount)}return Me};return{clearAll(){return Hr(this,null,function*(){yield j.onFlush.next().value,yield y(),yield B.delete("."),j=t(B),le=yield nd({storage:j})})},dumpData(){return Hr(this,null,function*(){const be=Object.values(le.all);return yield Promise.all(be.map(Me=>Hr(this,null,function*(){return{databaseName:Me.databaseName,data:yield Me.dumpData()}})))})},saveUtxo(be){return Hr(this,null,function*(){return yield le.utxo(Me=>Hr(this,null,function*(){const[Ie=[]]=yield Me.utxoIdsByScriptPubkey.query("",[be.scriptPubkey]);Ie.includes(be.id)||(Ie.push(be.id),yield Me.utxoIdsByScriptPubkey.insert("",be.scriptPubkey,Ie)),yield Me.utxoById.insert("",be.id,be)}))})},removeUtxos(be){return Hr(this,null,function*(){return yield le.utxo(Me=>Hr(this,null,function*(){var Ie;if(be.length===0)return;const ke=(yield Me.utxoById.query("",be)).filter(Ve=>Ve!=null),Ge={};for(const Ve of ke)Ge[Ve.scriptPubkey]=[...(Ie=Ge[Ve.scriptPubkey])!=null?Ie:[],Ve.id];for(const Ve of Object.keys(Ge)){const st=Ge[Ve],[at=[]]=yield Me.utxoIdsByScriptPubkey.query("",[Ve]);for(const xt of st)at.splice(at.indexOf(xt),1);at.length>0?yield Me.utxoIdsByScriptPubkey.insert("",Ve,at):yield Me.utxoIdsByScriptPubkey.delete("",[Ve])}yield Me.utxoById.delete("",be)}))})},fetchUtxos(be){return Hr(this,null,function*(){const{scriptPubkey:Me,utxoIds:Ie=[]}=be;return yield le.utxo(ke=>Hr(this,null,function*(){var Ge;if(Me!=null){const[Ve]=yield ke.utxoIdsByScriptPubkey.query("",[Me]);if(Ve!=null&&Ie.push(...Ve),Ie.length===0)return[]}if(Ie.length===0){const{data:Ve}=yield ke.utxoById.dumpData("");return Object.values((Ge=Ve[""])!=null?Ge:{})}return yield ke.utxoById.query("",Ie)}))})},saveTransaction(be){return Hr(this,null,function*(){const{scriptPubkeys:Me=[],tx:Ie}=be;return yield le.tx(ke=>Hr(this,null,function*(){const Ge=yield ke.txById.query("",[Ie.txid]).then(st=>st[0]).catch(st=>{}),Ve=Ge!=null?Ge:Ie;for(const st of Me){for(const at of Ve.inputs)at.scriptPubkey===st&&(Ve.ourIns.includes(at.n.toString())||Ve.ourIns.push(at.n.toString()));for(const at of Ve.outputs)at.scriptPubkey===st&&(Ve.ourOuts.includes(at.n.toString())||Ve.ourOuts.push(at.n.toString()));Ve.ourAmount=xe(Ve)}return Ve.blockHeight!==Ie.blockHeight?(yield ke.txIdsByBlockHeight.delete("",Ve.blockHeight,Ve.txid),Ve.blockHeight=Ie.blockHeight,yield ke.txIdsByBlockHeight.insert("",{txid:Ve.txid,blockHeight:Ve.blockHeight})):(yield(yield ke.txIdsByBlockHeight.query("",Ve.blockHeight)).reverse().map(({txid:at})=>at)).includes(Ve.txid)||(yield ke.txIdsByBlockHeight.insert("",{txid:Ve.txid,blockHeight:Ve.blockHeight})),yield ke.txById.insert("",Ve.txid,Ve),Ge==null&&(yield ke.txIdsByDate.insert("",{txid:Ie.txid,date:Ie.date})),Ve}))})},numTransactions(){return le.all.txIdsByDate.size("")},removeTransaction(be){return Hr(this,null,function*(){})},fetchTransactions(be){return Hr(this,null,function*(){const{blockHeightMax:Me,txId:Ie,options:ke}=be;let{blockHeight:Ge}=be;const Ve=[];return yield le.tx(st=>Hr(this,null,function*(){if(Ie!=null){const at=yield st.txById.query("",[Ie]);Ve.push(...at)}if(Me!=null&&Ge==null&&(Ge=0),Ge!=null){const at=yield(yield st.txIdsByBlockHeight.query("",Ge,Me)).reverse().map(({txid:bt})=>bt),xt=yield st.txById.query("",at);Ve.push(...xt)}if(ke!=null){const{startEntries:at,startIndex:xt,startDate:bt=new Date(0),endDate:Pt=new Date}=ke;let Gt;at!=null&&xt!=null?Gt=yield st.txIdsByDate.queryByCount("",at,xt):Gt=yield st.txIdsByDate.query("",La(bt.getTime()),La(Pt.getTime()));const rr=yield Gt.reverse().map(({txid:Kt})=>Kt),dr=yield st.txById.query("",rr);Ve.push(...dr.filter(Kt=>Kt!=null))}})),Ve})},saveAddress(be){return Hr(this,null,function*(){yield le.address(Me=>Hr(this,null,function*(){let Ie;const[ke]=yield Me.addressByScriptPubkey.query("",[be.scriptPubkey]);if(be.path!=null){const[Ge]=yield Me.scriptPubkeyByPath.query(vi(be.path),be.path.addressIndex);if(Ge!=null&&Ge!==be.scriptPubkey)throw new Error("Attempted to save address with an existing path, but different script pubkey");if(Ie={path:be.path,scriptPubkey:be.scriptPubkey},be.used||(ke==null?void 0:ke.used)===!0){let[Ve]=yield Me.lastUsedByFormatPath.query("",[vi(be.path)]);Ve==null&&(Ve=-1),Ve<be.path.addressIndex&&(yield Me.lastUsedByFormatPath.insert("",vi(be.path),be.path.addressIndex))}}if(ke!=null){if(be.lastQueriedBlockHeight>ke.lastQueriedBlockHeight&&(ke.lastQueriedBlockHeight=be.lastQueriedBlockHeight),be.lastQuery>ke.lastQuery&&(ke.lastQuery=be.lastQuery),be.lastTouched>ke.lastTouched&&(ke.lastTouched=be.lastTouched),be.balance!=null&&(ke.balance=be.balance),be.path!=null&&ke.path==null&&(ke.path=be.path,Ie={path:ke.path,scriptPubkey:ke.scriptPubkey}),be.used&&!ke.used&&(ke.used=!0),ke.path!=null&&ke.used){let[Ge]=yield Me.lastUsedByFormatPath.query("",[vi(ke.path)]);Ge==null&&(Ge=-1),Ge<ke.path.addressIndex&&(yield Me.lastUsedByFormatPath.insert("",vi(ke.path),ke.path.addressIndex))}yield Me.addressByScriptPubkey.insert("",ke.scriptPubkey,ke)}ke==null&&(yield Me.addressByScriptPubkey.insert("",be.scriptPubkey,be)),Ie!=null&&(yield Me.scriptPubkeyByPath.insert(vi(Ie.path),Ie.path.addressIndex,Ie.scriptPubkey))}))})},numAddressesByFormatPath(be){return le.all.scriptPubkeyByPath.length(vi(be))},lastUsedIndexByFormatPath(be){return Hr(this,null,function*(){const[Me]=yield le.address(Ie=>Hr(this,null,function*(){return yield Ie.lastUsedByFormatPath.query("",[vi(be)])}));return Me!=null?Me:-1})},fetchAddress(be){return Hr(this,null,function*(){return yield le.address(Me=>Hr(this,null,function*(){if(typeof be=="string"){const Ve=be,[st]=yield Me.addressByScriptPubkey.query("",[Ve]);return st}const Ie=be,[ke]=yield Me.scriptPubkeyByPath.query(vi(Ie),Ie.addressIndex);if(ke==null)return;const[Ge]=yield Me.addressByScriptPubkey.query("",[ke]);return Ge}))})}}})}var Ql=gr(8287).Buffer,Nv=(T,B,j)=>new Promise((le,xe)=>{var Re=Ie=>{try{Me(j.next(Ie))}catch(ke){xe(ke)}},be=Ie=>{try{Me(j.throw(Ie))}catch(ke){xe(ke)}},Me=Ie=>Ie.done?le(Ie.value):Promise.resolve(Ie.value).then(Re,be);Me((j=j.apply(T,B)).next())});const Lv=T=>{var B;const j=T.otherParams;if(j==null)throw new Error("Invalid transaction data");if(j.psbt==null)throw new Error("Missing PSBT in edge transaction data");const le=j.psbt.inputs.map((Re,be)=>({amount:Re.value.toString(),scriptPubkey:Ql.from(Re.scriptPubkey).toString("hex"),sequence:Re.sequence,n:be,txId:Ql.from(Re.hash).reverse().toString("hex"),outputIndex:Re.index})),xe=j.psbt.outputs.map((Re,be)=>({amount:Re.value.toString(),scriptPubkey:Ql.from(Re.scriptPubkey).toString("hex"),n:be}));return{txid:T.txid,hex:T.signedTx,blockHeight:T.blockHeight,date:T.date,fees:T.networkFee,inputs:le,outputs:xe,ourIns:[],ourOuts:[],ourAmount:(B=T.nativeAmount)!=null?B:"0"}},Ua=T=>Nv(void 0,null,function*(){const{tx:B,dataLayer:j,walletTools:le,pluginInfo:xe,walletId:Re}=T,{currencyInfo:be}=xe,Me=[];for(const ke of B.ourOuts){const{scriptPubkey:Ge}=B.outputs[parseInt(ke)],Ve=yield j.fetchAddress(Ge);if((Ve==null?void 0:Ve.path)!=null){const{address:st}=le.scriptPubkeyToAddress({changePath:Ve.path,scriptPubkey:Ge});Me.push(st)}}let Ie;try{const Ge=ze.ZX.fromHex(B.hex).virtualSize();Ie={satPerVByte:new(ge())(B.fees,10).div(new(ge())(Ge,10)).toNumber()}}catch{}return{blockHeight:B.blockHeight,confirmations:B.confirmations,currencyCode:be.currencyCode,date:B.date,feeRateUsed:Ie,isSend:(0,ue.lt)(B.ourAmount,"0"),memos:[],nativeAmount:B.ourAmount,networkFee:B.fees,networkFees:[{tokenId:null,nativeAmount:B.fees}],ourReceiveAddresses:Me,signedTx:B.hex,tokenId:null,txid:B.txid,walletId:Re}});var Dv=Object.defineProperty,Uv=Object.defineProperties,Hv=Object.getOwnPropertyDescriptors,od=Object.getOwnPropertySymbols,zv=Object.prototype.hasOwnProperty,jv=Object.prototype.propertyIsEnumerable,ad=(T,B,j)=>B in T?Dv(T,B,{enumerable:!0,configurable:!0,writable:!0,value:j}):T[B]=j,Kv=(T,B)=>{for(var j in B||(B={}))zv.call(B,j)&&ad(T,j,B[j]);if(od)for(var j of od(B))jv.call(B,j)&&ad(T,j,B[j]);return T},Wv=(T,B)=>Uv(T,Hv(B));const Gv=P("bip32","bip44","bip49"),Vv=b(Gv,"bip32");function e0(T,B=0){return k(j=>{if(j==null||typeof j!="object")throw new TypeError("Private keys must be objects");return E({coinType:b(m,B),format:Vv,imported:b(S),seed:p})(Wv(Kv({},j),{seed:j[`${T}Key`]}))},j=>{const{coinType:le,format:xe,imported:Re,seed:be}=j;return{coinType:le,format:xe,imported:Re,[`${T}Key`]:be}})}const sd=E({publicKeys:E({bip32:b(p),bip44:b(p),bip49:b(p),bip84:b(p)})}),iu=(T,B)=>{const j=(()=>{switch(B){case"bip32":return["bip32"];case"bip44":return["bip44"];case"bip49":return["bip49","bip84"]}})(),le=T.formats;return j.filter(xe=>le.includes(xe))},fd=T=>{const B=[];for(const[j,le]of Object.entries(T.publicKeys))le!=null&&B.push(j);return B.includes("bip49")?"bip49":B.includes("bip44")?"bip44":(B.includes("bip32"),"bip32")},ud=T=>B=>{const{coinInfo:j,engineInfo:le}=T,{id:xe,type:Re}=B,be=e0(j.name,j.coinType),Me=x(sd)(B.keys);if(Me!=null){const ke=Object.entries(Me.publicKeys).filter(([,Ve])=>Ve!=null).map(([Ve])=>x(Tp)(Ve)).filter(Ve=>Ve!=null);if(ke.length===0)throw new Error("Missing wallet public keys");const Ge=fd(Me);return{id:xe,type:Re,keys:{privateKeyFormat:Ge,walletFormats:ke,publicKey:Me}}}const Ie=x(be)(B.keys);if(Ie!=null){const ke=Qv({engineInfo:le,privateKey:Ie,coin:j.name}),Ge=iu(le,Ie.format);return{id:xe,type:Re,keys:{privateKeyFormat:Ie.format,walletFormats:Ge,publicKey:{publicKeys:ke}}}}throw new Error("Either a public or private key are required")};var qv=Object.defineProperty,Xv=Object.defineProperties,Zv=Object.getOwnPropertyDescriptors,cd=Object.getOwnPropertySymbols,Yv=Object.prototype.hasOwnProperty,$v=Object.prototype.propertyIsEnumerable,ld=(T,B,j)=>B in T?qv(T,B,{enumerable:!0,configurable:!0,writable:!0,value:j}):T[B]=j,ou=(T,B)=>{for(var j in B||(B={}))Yv.call(B,j)&&ld(T,j,B[j]);if(cd)for(var j of cd(B))$v.call(B,j)&&ld(T,j,B[j]);return T},t0=(T,B)=>Xv(T,Zv(B)),Jv=(T,B,j)=>new Promise((le,xe)=>{var Re=Ie=>{try{Me(j.next(Ie))}catch(ke){xe(ke)}},be=Ie=>{try{Me(j.throw(Ie))}catch(ke){xe(ke)}},Me=Ie=>Ie.done?le(Ie.value):Promise.resolve(Ie.value).then(Re,be);Me((j=j.apply(T,B)).next())});const r0=T=>{switch(T){case gt.Airbitz:return"bip32";case gt.Legacy:return"bip44";case gt.WrappedSegwit:return"bip49";case gt.Segwit:return"bip84";case gt.ReplayProtection:return"bip44"}},n0=T=>{switch(T){case gt.Airbitz:case gt.Legacy:return kt.p2pkh;case gt.WrappedSegwit:return kt.p2sh;case gt.Segwit:return kt.p2wpkh;case gt.ReplayProtection:return kt.p2sh}},au=T=>{switch(T){case gt.Airbitz:case gt.Legacy:return Ft.p2pkh;case gt.WrappedSegwit:return Ft.p2wpkhp2sh;case gt.Segwit:return Ft.p2wpkh;case gt.ReplayProtection:return Ft.replayProtection}},hd=T=>Rr(ou({},T)),dd=(T,B)=>{const j=[0];return Ai(B)!==gt.Airbitz&&j.push(1),T.scriptTemplates!=null&&T.scriptTemplates.replayProtection!=null&&j.push(nn(T.scriptTemplates.replayProtection)),j},no=(T,B)=>B!=null&&B.replayProtection!=null&&_n(B.replayProtection,T)?gt.ReplayProtection:Ai(T.format),Ai=T=>or(parseInt(T.replace("bip",""))),pd=T=>Jv(void 0,null,function*(){const B="walletKeys.json";let j;try{const le=yield T.walletLocalEncryptedDisklet.getText(B);j=JSON.parse(le)}catch{j=vd(T),yield T.walletLocalEncryptedDisklet.setText(B,JSON.stringify(j))}return j}),vd=T=>{const B={},j={seed:T.privateKey.seed,coinType:T.privateKey.coinType,coin:T.coin},le=Ai(T.privateKey.format);return le===gt.Segwit||le===gt.WrappedSegwit?(B[r0(gt.Segwit)]=kr(t0(ou({},j),{type:gt.Segwit})),B[r0(gt.WrappedSegwit)]=kr(t0(ou({},j),{type:gt.WrappedSegwit}))):B[r0(le)]=kr(t0(ou({},j),{type:le})),B},Qv=T=>{const{engineInfo:B,privateKey:j,coin:le}=T,xe={};for(const Re of iu(B,j.format)){const be=vd({coin:le,privateKey:j})[Re];if(be==null)throw new Error("Cannot derive xpub: no private key exists");xe[Re]=$r({coin:le,type:Ai(Re),xpriv:be})}return xe},eg=T=>{const B={};try{Zf({wifKey:T.pathname,coin:T.coin}),B.privateKeys=[T.pathname]}catch{const le=_r({address:T.pathname,coin:T.coin});if(le===vr.bad)throw new Error("InvalidPublicAddressError");B.publicAddress=Co(T.pathname,T.coin),le===vr.legacy&&(B.legacyAddress=T.pathname)}return B},tg=T=>T.reduce((B,{spent:j,value:le})=>j?B:ue.add(B,le),"0");var gd=(T,B,j)=>new Promise((le,xe)=>{var Re=Ie=>{try{Me(j.next(Ie))}catch(ke){xe(ke)}},be=Ie=>{try{Me(j.throw(Ie))}catch(ke){xe(ke)}},Me=Ie=>Ie.done?le(Ie.value):Promise.resolve(Ie.value).then(Re,be);Me((j=j.apply(T,B)).next())});const rg=(T,B,j)=>gd(void 0,null,function*(){const le=B.inputs[j],xe=yield T.fetchAddress(le.scriptPubkey);if(xe==null)throw new Error(`Cannot find address for ${le.scriptPubkey}`);if(xe.path==null)throw new Error("Address has no derivation path information");const Re=xe.redeemScript,be=Ai(xe.path.format),Me=()=>gd(void 0,null,function*(){switch(be){case gt.Airbitz:case gt.Legacy:return{script:B.hex,scriptType:Re!=null?Ft.p2sh:Ft.p2pkh};case gt.WrappedSegwit:return{script:le.scriptPubkey,scriptType:Ft.p2wpkhp2sh};case gt.Segwit:return{script:le.scriptPubkey,scriptType:Ft.p2wpkh};default:throw new Error(`Unknown purpose type ${be}`)}}),{script:Ie,scriptType:ke}=yield Me();return{id:`${le.txId}_${le.outputIndex}`,txid:le.txId,vout:le.outputIndex,value:le.amount,scriptPubkey:le.scriptPubkey,script:Ie,redeemScript:Re,scriptType:ke,blockHeight:B.blockHeight,spent:!0}});var ng=gr(1160),i0=gr.n(ng),md=(T,B,j)=>new Promise((le,xe)=>{var Re=Ie=>{try{Me(j.next(Ie))}catch(ke){xe(ke)}},be=Ie=>{try{Me(j.throw(Ie))}catch(ke){xe(ke)}},Me=Ie=>Ie.done?le(Ie.value):Promise.resolve(Ie.value).then(Re,be);Me((j=j.apply(T,B)).next())});function ig(T){let B=0;const j=[];for(const le of T)B+=le.amount,j.push({publicAddress:le.address,nativeAmount:`${le.amount}`});return{nativeAmount:B,spendTargets:j}}function og(T,B,j){return md(this,null,function*(){const xe=yield j(T,{headers:{Accept:"application/payment-request","x-currency":B}});if(xe.status!==200){const bt=yield xe.text();throw new Error(bt)}const Re=yield xe.json(),{outputs:be,memo:Me,paymentUrl:Ie,paymentId:ke,requiredFeeRate:Ge}=Re,{nativeAmount:Ve,spendTargets:st}=ig(be),at=i0()(Ie,{}).hostname;return{nativeAmount:`${Ve}`,merchant:`{ ${JSON.stringify(ke)}, ${JSON.stringify(Ge)} }`,memo:Me,domain:at,spendTargets:st}})}function ag(T,B){return{currency:B,transactions:[T]}}function sg(T,B,j){return md(this,null,function*(){const xe=yield T(B,{method:"POST",headers:{"Content-Type":"application/payment"},body:JSON.stringify(j)});if(xe.status!==200){const be=yield xe.text();throw new Error(be)}return yield xe.json()})}var fg=Object.defineProperty,ug=Object.defineProperties,cg=Object.getOwnPropertyDescriptors,yd=Object.getOwnPropertySymbols,lg=Object.prototype.hasOwnProperty,hg=Object.prototype.propertyIsEnumerable,bd=(T,B,j)=>B in T?fg(T,B,{enumerable:!0,configurable:!0,writable:!0,value:j}):T[B]=j,dg=(T,B)=>{for(var j in B||(B={}))lg.call(B,j)&&bd(T,j,B[j]);if(yd)for(var j of yd(B))hg.call(B,j)&&bd(T,j,B[j]);return T},pg=(T,B)=>ug(T,cg(B)),vg=(T,B,j)=>new Promise((le,xe)=>{var Re=Ie=>{try{Me(j.next(Ie))}catch(ke){xe(ke)}},be=Ie=>{try{Me(j.throw(Ie))}catch(ke){xe(ke)}},Me=Ie=>Ie.done?le(Ie.value):Promise.resolve(Ie.value).then(Re,be);Me((j=j.apply(T,B)).next())});const gg=(T,B,j)=>vg(void 0,null,function*(){const le=[],xe=j.inputs.map(be=>`${be.txId}_${be.outputIndex}`),Re=yield B.fetchUtxos({utxoIds:xe});for(const be of Re)be!=null&&le.push(pg(dg({},be),{spent:!0}));for(const be of j.outputs){const Me=be.scriptPubkey,Ie=yield B.fetchAddress(Me);if(Ie!=null){const ke=`${j.txid}_${be.n}`,Ge=Ie.path;if(Ge!=null){const Ve=Ie.redeemScript,st=no(Ge,T.scriptTemplates),at=[gt.Airbitz,gt.Legacy,gt.ReplayProtection].includes(st),xt=au(st),bt=at?j.hex:Ie.scriptPubkey,Pt={id:ke,txid:j.txid,vout:be.n,value:be.amount,scriptPubkey:Me,script:bt,redeemScript:Ve,scriptType:xt,blockHeight:j.blockHeight,spent:!1};le.push(Pt)}}}return le}),mg=100,yg=.05,bg=2,wd=8;var xd=gr(6579),wg=Object.defineProperty,xg=Object.defineProperties,Eg=Object.getOwnPropertyDescriptors,Ed=Object.getOwnPropertySymbols,Mg=Object.prototype.hasOwnProperty,Sg=Object.prototype.propertyIsEnumerable,Md=(T,B,j)=>B in T?wg(T,B,{enumerable:!0,configurable:!0,writable:!0,value:j}):T[B]=j,Sd=(T,B)=>{for(var j in B||(B={}))Mg.call(B,j)&&Md(T,j,B[j]);if(Ed)for(var j of Ed(B))Sg.call(B,j)&&Md(T,j,B[j]);return T},kg=(T,B)=>xg(T,Eg(B));const Ig=(T=p)=>E({txid:p,vout:m,value:p,confirmations:b(m),coinbase:b(S),height:b(m),lockTime:b(m),address:b(T),path:b(p)}),o0=(T=p)=>E({txid:p,hex:p,blockHeight:m,confirmations:m,blockTime:m,fees:p,vin:M(E({addresses:b(M(p),()=>[]),isAddress:b(S),n:m,sequence:b(m,0),txid:b(p),value:b(p,"0"),vout:b(m,0),coinbase:b(p),isOwn:b(S),hex:b(p),asm:b(p)})),vout:M(E({n:m,value:p,addresses:M(T),hex:b(p)}))}),_g=E({error:E({message:p})}),$n=T=>B=>{const j=x(_g)(B);if(j!=null)throw new Error(`Blockbook Error: ${j.error.message}`);return T(B)},Ag=()=>({method:"ping",params:void 0,cleaner:$n(Tg)}),Tg=E({}),Pg=()=>({method:"getInfo",params:{},cleaner:$n(Og)}),Og=E({name:p,shortcut:p,decimals:m,version:p,bestHeight:m,bestHash:p,block0Hash:p,testnet:S,backend:x(E({version:p,subversion:p}))}),kd=(T,B=p)=>({method:"getAccountUtxo",params:{descriptor:C(B)(T)},cleaner:$n(Bg(B))}),Bg=(T=p)=>M(Ig(T)),Id=(T,B=p)=>({method:"getTransaction",params:{txid:T},cleaner:$n(Cg(B))}),Cg=o0,Rg=T=>({method:"getTransactionSpecific",params:{txid:T},cleaner:$n(g)}),Fg=T=>({method:"sendTransaction",params:{hex:T},cleaner:$n(_d)}),_d=E({result:p}),Ad=(T,B=p,j={})=>{const le=C(B);return{method:"getAccountInfo",params:kg(Sd({},Sd({details:"basic",page:1,pageSize:100},j)),{descriptor:le(T)}),cleaner:$n(Ng(B))}},Ng=(T=p)=>E({address:T,balance:p,totalReceived:p,totalSent:p,txs:m,unconfirmedBalance:p,unconfirmedTxs:m,txids:b(M(p),[]),transactions:b(M(o0(T)),[]),page:b(m,NaN),totalPages:b(m,NaN),itemsOnPage:b(m,NaN)}),Lg=()=>({method:"subscribeNewBlock",params:{},cleaner:$n(Dg)}),Dg=E({height:m,hash:p}),Ug=(T,B=p)=>{const j=C(B);return{method:"subscribeAddresses",params:{addresses:T.map(j)},cleaner:$n(Hg(B))}},Hg=(T=p)=>E({address:T,tx:o0(T)});class su{constructor(){this._resolve=()=>{},this._reject=()=>{},this._promise=new Promise((B,j)=>{this._reject=j,this._resolve=B})}get promise(){return this._promise}resolve(B){this._resolve(B)}reject(B){this._reject(B)}}function Td(T){const B=T.match(/%\{(\w|\d)+\}/g);return B!=null?B:[]}function zg(T,B){const j=Td(T);for(const le of j){const xe=le.replace(/%|{|}/g,""),Re=B[xe];if(Re==null)throw new Error(`Missing key for connection URI ${T}`);T=T.replace(le,Re)}return T}var jg=gr(7689),io=gr.n(jg),vn=(T=>(T[T.CONNECTING=0]="CONNECTING",T[T.OPEN=1]="OPEN",T[T.CLOSING=2]="CLOSING",T[T.CLOSED=3]="CLOSED",T))(vn||{});function Kg(T,B){const j=new(io())(T,{headers:{"User-Agent":"NodeJS-WS-agent"}});return j.on("open",()=>{B.onOpen()}),j.on("message",le=>{B.onMessage(le.toString())}),j.on("error",le=>{B.onError(le)}),j.on("close",(le,xe)=>{B.onClose(le,xe)}),{get readyState(){switch(j.readyState){case io().CONNECTING:return vn.CONNECTING;case io().OPEN:return vn.OPEN;case io().CLOSING:return vn.CLOSING;case io().CLOSED:default:return vn.CLOSED}},disconnect(){j==null||j.readyState===io().CLOSING||j.readyState===io().CLOSED||(j.removeAllListeners(),j.close())},send(le){j.send(le)}}}class Wg extends Gh.EventEmitter{}var oo=(T=>(T.CONNECTION_OPEN="connection:open",T.CONNECTION_CLOSE="connection:close",T.CONNECTION_TIMER="connection:timer",T))(oo||{});const Pd=3,Gg=1e3,Pn=[];let Od;function Bd(T){const B=Pn.length===0;let j=!1;for(const le of Pn)if(le.id===T.id&&le.action===T.action){le.updateFunc=T.updateFunc,j=!0;break}j||Pn.push(T),B&&Rd()}function Cd(T){for(let B=0;B<Pn.length;B++){const j=Pn[B];if(T===j.id){Pn.splice(B,1);break}}Pn.length===0&&clearTimeout(Od)}function Rd(){const T=Pd<Pn.length?Pd:Pn.length;for(let B=0;B<T;B++)if(Pn.length>0){const j=Pn.shift();j==null||j.updateFunc()}Pn.length>0&&(Od=setTimeout(()=>{Rd()},Gg))}function Vg(T,B){if(window.WebSocket==null)throw Error("Native browser WebSocket does not exists");const j=new window.WebSocket(T);return j.onopen=()=>{B.onOpen()},j.onmessage=le=>{B.onMessage(le.data.toString())},j.onerror=le=>{B.onError(le)},j.onclose=le=>{B.onClose(le.code,le.reason)},{get readyState(){switch(j.readyState){case WebSocket.CONNECTING:return vn.CONNECTING;case WebSocket.OPEN:return vn.OPEN;case WebSocket.CLOSING:return vn.CLOSING;case WebSocket.CLOSED:default:return vn.CLOSED}},disconnect(){j==null||j.readyState===WebSocket.CLOSING||j.readyState===WebSocket.CLOSED||j.close()},send(le){j.send(le)}}}var Fd=(T,B,j)=>new Promise((le,xe)=>{var Re=Ie=>{try{Me(j.next(Ie))}catch(ke){xe(ke)}},be=Ie=>{try{Me(j.throw(Ie))}catch(ke){xe(ke)}},Me=Ie=>Ie.done?le(Ie.value):Promise.resolve(Ie.value).then(Re,be);Me((j=j.apply(T,B)).next())});const Nd=500,qg=5e4,Xg=5e3,Zg=E({subscribed:S}),Yg=F(E({id:p,data:b(g),error:b(v(E({message:p}),E({connected:p})))})),$g=T=>[Yg(T)];function Jg(T,B){var j;let le;const{asResponse:xe=$g,emitter:Re,log:be,queueSize:Me=50,walletId:Ie}=B;be("makeSocket connects to",T);const ke="",Ge=Ie+"=="+T,Ve={};let st={},at=0,xt=0,bt=0,Pt=!1,Gt=!1;const rr=1e3*((j=B.timeout)!=null?j:30);let dr,Kt;const Ut=qt=>{dr==null&&(dr=qt),Pt&&le!=null&&le.readyState===vn.OPEN?vt():Gt=!0,be.error("handled error!",qt)},vt=()=>{be.warn("disconnecting from socket",T),clearTimeout(Kt),Pt=!1,le!=null&&le.disconnect(),Cd(Ge)},Et=qt=>{const ir=dr==null?new Error("Socket closed without error"):dr instanceof Error?dr:new Error(String(dr));be.warn(`onSocketClose with server ${T}: ${qt} ${ir.message}`),clearTimeout(Kt),Pt=!1,le=null,Gt=!1,dr=void 0;for(const sr of Object.values(st))sr.generator.throw(ir).catch(Sr=>{be.error(Sr.message)});st={};try{Re.emit(oo.CONNECTION_CLOSE,T,ir)}catch(sr){be.error(String(sr))}},Ct=()=>{if(be(`onSocketConnect with server ${T}`),Gt){le!=null&&le.disconnect();return}Pt=!0,xt=Date.now();try{Re.emit(oo.CONNECTION_OPEN,T)}catch(qt){Ut(qt)}for(const[qt,ir]of Object.entries(st))mt(qt,ir);At(),Gt=!1},At=()=>{be(`wakeUp socket with server ${T}`),Bd({id:Ge,updateFunc:()=>{It().catch(qt=>{throw new Error(`wake up error from: ${qt.message}`)})}})},It=()=>Fd(this,null,function*(){if(be(`doWakeUp socket with server ${T}`),bt=Date.now(),Pt&&ke!=null)for(;Object.keys(st).length<Me;){const qt=yield B.taskGeneratorFn(T),sr=(yield qt.next()).value;if(typeof sr=="boolean"){if(sr)continue;break}nr.submitTask(sr,qt)}}),Dt=qt=>{var ir;if(le!=null&&le.readyState===vn.OPEN&&Pt){const sr=qt.method,Sr={id:sr,method:qt.method,params:(ir=qt.params)!=null?ir:{}};Ve[sr]=qt,le.send(JSON.stringify(Sr))}},mt=(qt,ir)=>{var sr;const Sr=Date.now();if(le!=null&&le.readyState===vn.OPEN&&Pt&&!Gt){ir.startTime=Sr;const Cr={id:qt,method:ir.task.method,params:(sr=ir.task.params)!=null?sr:{}};le.send(JSON.stringify(Cr)+`
|
|
76
76
|
`)}},Rt=()=>{be(`socket timer with server ${T} expired, check if healthCheck needed`);const qt=Date.now()-Nd;xt+qg<qt&&(be(`submitting healthCheck to server ${T}`),xt=qt,B.healthCheck().then(()=>{Re.emit(oo.CONNECTION_TIMER,T,qt)}).catch(ir=>Ut(ir)));for(const[ir,sr]of Object.entries(st))sr.startTime+rr<qt&&(sr.generator.throw(new Error(`Timeout for request ${ir}`)).catch(Sr=>{be.error(Sr.message)}),Jr(st,ir));At(),Yt()},Yt=()=>{be(`setupTimer with server ${T}`);let qt=bt+Xg;for(const Sr of Object.values(st)){const Cr=Sr.startTime+rr;Cr<qt&&(qt=Cr)}const ir=Date.now()-Nd,sr=qt<ir?0:qt-ir;Kt=setTimeout(()=>Rt(),sr)},Vt=qt=>{try{const ir=xe(qt);for(const sr of ir)if(sr.id!=null){const Sr=sr.id.toString(),Cr=Ve[Sr];if(Cr!=null){const Zr=x(Zg)(sr.data);if((Zr==null?void 0:Zr.subscribed)!=null){Cr.subscribed=!0,Cr.deferred.resolve(sr.data);continue}Cr.subscribed||Cr.deferred.reject();try{Cr.cb(Cr.cleaner(sr.data))}catch(Fr){throw console.log({uri:T,error:Fr,response:sr,subscription:Cr}),Fr}continue}const zr=st[Sr];if(zr!=null){Jr(st,Sr);const{error:Zr}=sr;try{if(Zr!=null){const jr="message"in Zr?Zr.message:Zr.connected;throw new Error(jr)}let Fr;zr.task.cleaner!=null?Fr=zr.task.cleaner(sr.data):Fr=sr.data,zr.generator.next(Fr).then(jr=>{const Bn=jr.value;typeof Bn!="boolean"&&nr.submitTask(Bn,zr.generator)}).catch(jr=>{be.error(jr.message)})}catch(Fr){console.log({uri:T,error:Fr,response:sr,request:zr}),zr.generator.throw(Fr).catch(jr=>{be.error(jr.message)})}continue}throw new Error(`Unknown message id from incoming ws message: ${qt}`)}}catch(ir){Ut(ir)}At()};Yt();const nr={get readyState(){var qt;return(qt=le==null?void 0:le.readyState)!=null?qt:vn.CLOSED},connect(){return Fd(this,null,function*(){return le==null||le.disconnect(),yield new Promise(qt=>{const ir={onOpen:()=>{Ct(),qt()},onMessage:Vt,onError:Sr=>{dr=Sr},onClose:Et};let sr=T;(T.startsWith("wss:")||T.startsWith("ws:"))&&!T.endsWith("/")&&i0()(T).pathname==="/"&&(sr=T+"/websocket"),sr=zg(sr,B.initOptions),T.startsWith("electrumwss:")&&(sr=T.replace(/^electrumwss:/,"wss:")),T.startsWith("electrumws:")&&(sr=T.replace(/^electrumws:/,"ws:"));try{le=Vg(sr,ir)}catch{le=Kg(sr,ir)}})})},disconnect(){le==null||le.disconnect(),le=null,vt()},isConnected(){return(le==null?void 0:le.readyState)===vn.OPEN},submitTask:(qt,ir)=>{const sr=(at++).toString(),Sr={task:qt,startTime:Date.now(),generator:ir};st[sr]=Sr,mt(sr,Sr)},subscribe:Dt};return nr}var Qg=Object.defineProperty,em=Object.defineProperties,tm=Object.getOwnPropertyDescriptors,Ld=Object.getOwnPropertySymbols,rm=Object.prototype.hasOwnProperty,nm=Object.prototype.propertyIsEnumerable,im=(T,B)=>(B=Symbol[T])?B:Symbol.for("Symbol."+T),Dd=(T,B,j)=>B in T?Qg(T,B,{enumerable:!0,configurable:!0,writable:!0,value:j}):T[B]=j,ao=(T,B)=>{for(var j in B||(B={}))rm.call(B,j)&&Dd(T,j,B[j]);if(Ld)for(var j of Ld(B))nm.call(B,j)&&Dd(T,j,B[j]);return T},Ud=(T,B)=>em(T,tm(B)),On=(T,B,j)=>new Promise((le,xe)=>{var Re=Ie=>{try{Me(j.next(Ie))}catch(ke){xe(ke)}},be=Ie=>{try{Me(j.throw(Ie))}catch(ke){xe(ke)}},Me=Ie=>Ie.done?le(Ie.value):Promise.resolve(Ie.value).then(Re,be);Me((j=j.apply(T,B)).next())}),om=function(T,B){this[0]=T,this[1]=B},am=(T,B,j)=>{var le=(be,Me,Ie,ke)=>{try{var Ge=j[be](Me),Ve=(Me=Ge.value)instanceof om,st=Ge.done;Promise.resolve(Ve?Me[0]:Me).then(at=>Ve?le(be==="return"?be:"next",Me[1]?{done:at.done,value:at.value}:at,Ie,ke):Ie({value:at,done:st})).catch(at=>le("throw",at,Ie,ke))}catch(at){ke(at)}},xe=be=>Re[be]=Me=>new Promise((Ie,ke)=>le(be,Me,Ie,ke)),Re={};return j=j.apply(T,B),Re[im("asyncIterator")]=()=>Re,xe("next"),xe("throw"),xe("return"),Re};function Hd(T){var B;const{asAddress:j,asResponse:le,connectionUri:xe,engineEmitter:Re,log:be,taskGeneratorFn:Me,socketEmitter:Ie,walletId:ke}=T;be(`makeBlockbook with uri ${xe}`);const Ge={isConnected:!1,broadcastTx(at){return On(this,null,function*(){return yield Ge.promisifyWsMessage(Fg(at.signedTx))})},connect(){return On(this,null,function*(){be(`connecting to blockbook socket with uri ${xe}`),!Ge.isConnected&&(yield Ve.connect(),Ge.isConnected=Ve.isConnected())})},disconnect(){return On(this,null,function*(){be(`disconnecting from blockbook socket with uri ${xe}, currently connected: ${Ge.isConnected}`),Ge.isConnected&&(Ve.disconnect(),Ge.isConnected=!1)})},fetchAddress(at){return On(this,arguments,function*(xt,bt={}){return yield Ge.promisifyWsMessage(Ad(xt,j,bt))})},fetchAddressUtxos(at){return On(this,null,function*(){return yield Ge.promisifyWsMessage(kd(at))})},fetchInfo(){return On(this,null,function*(){return yield Ge.promisifyWsMessage(Pg())})},fetchTransaction(at){return On(this,null,function*(){return yield Ge.promisifyWsMessage(Id(at))})},promisifyWsMessage(at){return On(this,null,function*(){const xt=new su,Pt=function(){return am(this,null,function*(){const rr=yield ao({},at);return xt.resolve(rr),!1})}(),Gt=yield Pt.next();if(Gt.done!==!0){const rr=Gt.value;Ve.submitTask(rr,Pt)}return yield xt.promise})},watchAddresses(at,xt){const bt=Pt=>On(this,null,function*(){Re.emit(Ur.NEW_ADDRESS_TRANSACTION,xe,Pt)});Ve.subscribe(Ud(ao({},Ug(at,j)),{cb:bt,deferred:xt,subscribed:!1}))},watchBlocks(at){return On(this,null,function*(){const xt=bt=>On(this,null,function*(){Re.emit(Ur.BLOCK_HEIGHT_CHANGED,xe,bt.height)});Ve.subscribe(Ud(ao({},Lg()),{cb:xt,deferred:at,subscribed:!1}))})},addressQueryTask:function*(at,xt){return yield ao({},Ad(at,xt.asBlockbookAddress,{details:"txs",from:xt.lastQueriedBlockHeight,pageSize:mg,page:xt.page}))},transactionQueryTask:function*(at){return yield ao({},Id(at))},transactionSpecialQueryTask:function*(at){return yield ao({},Rg(at))},utxoListQueryTask:function*(at,xt){return yield ao({},kd(at,xt.asBlockbookAddress))}},Ve=Jg(xe,{asResponse:le,healthCheck:(B=T.ping)!=null?B:st,initOptions:T.initOptions,taskGeneratorFn:Me,log:be,emitter:Ie,walletId:ke});function st(){return On(this,null,function*(){yield Ge.promisifyWsMessage(Ag())})}return Ge}const sm=E({tx_pos:m,value:m,tx_hash:p,height:m}),hb=(T=asString)=>asObject({blockhash:asString,blocktime:asNumber,confirmations:asNumber,hash:asString,hex:asString,locktime:asNumber,size:asNumber,time:asNumber,txid:asString,version:asNumber,vin:asArray(asObject({scriptSig:asObject({asm:asString,hex:asString}),sequence:asNumber,txid:asString,vout:asNumber})),vout:asArray(asObject({n:asNumber,scriptPubKey:asObject({addresses:asArray(T),asm:asString,hex:asString,reqSigs:asNumber,type:asString}),value:asNumber}))}),fm=E({error:E({message:p})}),fu=T=>B=>{const j=x(fm)(B);if(j!=null)throw new Error(`Electrum Error: ${j.error.message}`);return T(B)},um=()=>({method:"server.ping",params:void 0,cleaner:fu(cm)}),cm=x(o),lm=T=>({method:"blockchain.scripthash.listunspent",params:[T],cleaner:fu(hm)}),hm=M(sm),dm=T=>({method:"blockchain.scripthash.get_history",params:[T],cleaner:fu(pm)}),pm=M(E({height:m,tx_hash:p})),db=(T,B=asString)=>({method:"blockchain.transaction.get",params:[T,!0],cleaner:fu(vm(B))}),vm=null;var gm=gr(8287).Buffer,mm=Object.defineProperty,zd=Object.getOwnPropertySymbols,ym=Object.prototype.hasOwnProperty,bm=Object.prototype.propertyIsEnumerable,wm=(T,B)=>(B=Symbol[T])?B:Symbol.for("Symbol."+T),jd=(T,B,j)=>B in T?mm(T,B,{enumerable:!0,configurable:!0,writable:!0,value:j}):T[B]=j,Kd=(T,B)=>{for(var j in B||(B={}))ym.call(B,j)&&jd(T,j,B[j]);if(zd)for(var j of zd(B))bm.call(B,j)&&jd(T,j,B[j]);return T},Ti=(T,B,j)=>new Promise((le,xe)=>{var Re=Ie=>{try{Me(j.next(Ie))}catch(ke){xe(ke)}},be=Ie=>{try{Me(j.throw(Ie))}catch(ke){xe(ke)}},Me=Ie=>Ie.done?le(Ie.value):Promise.resolve(Ie.value).then(Re,be);Me((j=j.apply(T,B)).next())}),Wd=function(T,B){this[0]=T,this[1]=B},xm=(T,B,j)=>{var le=(be,Me,Ie,ke)=>{try{var Ge=j[be](Me),Ve=(Me=Ge.value)instanceof Wd,st=Ge.done;Promise.resolve(Ve?Me[0]:Me).then(at=>Ve?le(be==="return"?be:"next",Me[1]?{done:at.done,value:at.value}:at,Ie,ke):Ie({value:at,done:st})).catch(at=>le("throw",at,Ie,ke))}catch(at){ke(at)}},xe=be=>Re[be]=Me=>new Promise((Ie,ke)=>le(be,Me,Ie,ke)),Re={};return j=j.apply(T,B),Re[wm("asyncIterator")]=()=>Re,xe("next"),xe("throw"),xe("return"),Re};const Em=T=>{const B=F(E({id:p,result:g,error:b(v(E({message:p}),E({connected:p})))}))(T);return{id:B.id,data:B.result,error:B.error}},Mm=T=>p(T).trimEnd().split(`
|
|
77
77
|
`).map(Em);function Sm(T){const{asAddress:B,connectionUri:j,engineEmitter:le,initOptions:xe,log:Re,taskGeneratorFn:be,pluginInfo:Me,socketEmitter:Ie,walletId:ke}=T;Re(`makeBlockbookElectrum with uri ${j}`);const Ge=st=>{const at=Rr({address:st,coin:Me.coinInfo.name});return ze.Et.sha256(gm.from(at,"hex")).reverse().toString("hex")},Ve=Hd({asAddress:B,asResponse:Mm,connectionUri:j,engineEmitter:le,initOptions:xe,log:Re,taskGeneratorFn:function(st){return xm(this,null,function*(){const at=be(st);let xt;for(;;){const bt=yield new Wd(at.next(xt)),Pt=bt.value;if((bt==null?void 0:bt.done)===!0)return bt.value;if(typeof Pt=="boolean")return Pt;if(Pt.method==="getAccountUtxo"){const Gt=Pt.params,rr=B!=null?B(Gt.descriptor):Gt.descriptor,dr=Ge(rr);xt=(yield Kd({},lm(dr))).map(vt=>({txid:vt.tx_hash,vout:vt.tx_pos,value:vt.value.toString(),height:vt.height}));continue}if(Pt.method==="getAccountInfo"){const Gt=Pt.params,rr=B!=null?B(Gt.descriptor):Gt.descriptor,dr=Ge(rr),Kt=yield Kd({},dm(dr));xt={address:rr,balance:"0",totalReceived:"0",totalSent:"0",txs:Kt.length,unconfirmedBalance:"0",unconfirmedTxs:Kt.reduce((vt,Et)=>vt+Et.height>=0?1:0,0),txids:[],transactions:[],page:0,totalPages:1,itemsOnPage:0};continue}}})},ping:()=>Ti(this,null,function*(){return yield Ve.promisifyWsMessage(um())}),socketEmitter:Ie,walletId:ke});return Ve.broadcastTx=()=>Ti(this,null,function*(){throw new Error("broadcastTx not supported for Electrum connections")}),Ve.fetchAddress=()=>Ti(this,null,function*(){throw new Error("fetchAddress not supported for Electrum connections")}),Ve.fetchAddressUtxos=()=>Ti(this,null,function*(){throw new Error("fetchAddressUtxos not supported for Electrum connections")}),Ve.fetchInfo=()=>Ti(this,null,function*(){throw new Error("fetchInfo not supported for Electrum connections")}),Ve.fetchTransaction=()=>Ti(this,null,function*(){throw new Error("fetchTransaction not supported for Electrum connections")}),Ve.watchAddresses=()=>Ti(this,null,function*(){}),Ve.watchBlocks=()=>Ti(this,null,function*(){}),Ve}var uu=(T,B)=>(B=Symbol[T])?B:Symbol.for("Symbol."+T),cu=(T,B,j)=>new Promise((le,xe)=>{var Re=Ie=>{try{Me(j.next(Ie))}catch(ke){xe(ke)}},be=Ie=>{try{Me(j.throw(Ie))}catch(ke){xe(ke)}},Me=Ie=>Ie.done?le(Ie.value):Promise.resolve(Ie.value).then(Re,be);Me((j=j.apply(T,B)).next())}),Ha=function(T,B){this[0]=T,this[1]=B},km=(T,B,j)=>{var le=(be,Me,Ie,ke)=>{try{var Ge=j[be](Me),Ve=(Me=Ge.value)instanceof Ha,st=Ge.done;Promise.resolve(Ve?Me[0]:Me).then(at=>Ve?le(be==="return"?be:"next",Me[1]?{done:at.done,value:at.value}:at,Ie,ke):Ie({value:at,done:st})).catch(at=>le("throw",at,Ie,ke))}catch(at){ke(at)}},xe=be=>Re[be]=Me=>new Promise((Ie,ke)=>le(be,Me,Ie,ke)),Re={};return j=j.apply(T,B),Re[uu("asyncIterator")]=()=>Re,xe("next"),xe("throw"),xe("return"),Re},Pi=T=>{var B=T[uu("asyncIterator")],j=!1,le,xe={};return B==null?(B=T[uu("iterator")](),le=Re=>xe[Re]=be=>B[Re](be)):(B=B.call(T),le=Re=>xe[Re]=be=>{if(j){if(j=!1,Re==="throw")throw be;return be}return j=!0,{done:!1,value:new Ha(new Promise(Me=>{var Ie=B[Re](be);if(!(Ie instanceof Object))throw TypeError("Object expected");Me(Ie)}),1)}}),xe[uu("iterator")]=()=>xe,le("next"),"throw"in B?le("throw"):xe.throw=Re=>{throw Re},"return"in B&&le("return"),xe};function Im(T){const{engineEmitter:B,initOptions:j,io:le,log:xe,pluginInfo:Re,pluginState:be,walletInfo:Me}=T,{serverConfigs:Ie=[]}=Re.engineInfo;xe("Making server states");const ke={};let Ge=!0,Ve=[],st=0,at=setTimeout(()=>{},0);const xt=new Wg;xt.on(oo.CONNECTION_OPEN,vt=>{st=0,xe(`${vt} ** Connected **`)}),xt.on(oo.CONNECTION_CLOSE,(vt,Et)=>{Jr(ke,vt);const Ct=Et!=null?` !! Connection ERROR !! ${Et.message}`:"";xe(`${vt} onClose ${Ct}`),Et!=null&&be.serverScoreDown(vt),Gt()}),xt.on(oo.CONNECTION_TIMER,(vt,Et)=>{const Ct=Date.now()-Et;xe(`${vt} returned healthCheck in ${Ct}ms`),be.serverScoreUp(vt,Ct)}),B.on(Ur.NEW_ADDRESS_TRANSACTION,(vt,Et)=>{xe(`${vt} received received new transaction with id ${Et.tx.txid} to address ${Et.address}`);const Ct=ke[vt];Ct!=null&&Ct.txids.add(Et.tx.txid)}),B.on(Ur.BLOCK_HEIGHT_CHANGED,(vt,Et)=>{xe(`${vt} block height changed to ${Et}`),ke[vt].blockHeight=Et});let bt;const Pt=vt=>({blockbook:vt,blockSubscriptionStatus:"unsubscribed",txids:new Set,addresses:new Set,blockHeight:0}),Gt=()=>{if(Ge){xe(`attempting server reconnect number ${st}`);const vt=Math.max(5,st++)*1e3;at=setTimeout(()=>{clearTimeout(at),Ut.refillServers()},vt)}},rr=()=>{const vt=["wss:","ws:","electrumwss:","electrumws:"];Ve.length===0&&(Ve=be.getLocalServers(wd,vt)),xe(`refillServers: Top ${wd} servers:`,Ve);let Et=1.25;for(;Object.keys(ke).length<bg;){let Dt=function(){return km(this,null,function*(){if(Ct==null||!(Ct in ke))return!1;const mt=bt(Ct);let Rt=yield new Ha(mt.next());for(;;){if((Rt==null?void 0:Rt.done)===!0)return Rt.value;const Yt=Rt.value;if(typeof Yt!="boolean"){const Vt=`${Yt.method} params: ${JSON.stringify(Yt.params)}`;xe(`${Ct} nextTask: ${Vt}`)}try{const Vt=yield Yt;Rt=yield new Ha(mt.next(Vt))}catch(Vt){Rt=yield new Ha(mt.throw(Vt).catch(nr=>(xe.error(nr),{done:!0,value:!1})))}}})};if(Ve.length===0)break;const Ct=Ve.shift();if(Ct==null){Gt();break}if(ke[Ct]!=null)continue;const At=(0,xd.parse)(Ct);if(At.scheme==null||At.scheme.length<2||At.host==null)continue;if(Et-=Et>.5?.25:0,Math.random()>Et){Ve.push(Ct);continue}let It;["electrumwss","electrumws"].includes(At.scheme)?It=Sm({asAddress:Re.engineInfo.asBlockbookAddress,connectionUri:Ct,engineEmitter:B,initOptions:j,log:xe,taskGeneratorFn:Dt,pluginInfo:Re,socketEmitter:xt,walletId:Me.id}):It=Hd({asAddress:Re.engineInfo.asBlockbookAddress,connectionUri:Ct,engineEmitter:B,initOptions:j,log:xe,taskGeneratorFn:Dt,socketEmitter:xt,walletId:Me.id}),ke[Ct]=Pt(It),It.connect().then(()=>cu(this,null,function*(){const mt=Date.now(),{bestHeight:Rt}=yield It.fetchInfo();xe("height:",Rt),ke[Ct].blockHeight=Rt,B.emit(Ur.BLOCK_HEIGHT_CHANGED,Ct,Rt);const Yt=Date.now()-mt;be.serverScoreUp(Ct,Yt)})).catch(mt=>{xe.error(`${JSON.stringify(mt.message)}`)})}},dr=(vt,Et)=>{if(ke[vt]==null)throw new Error(`No blockbook connection with ${vt}`);const At=Date.now(),It=new su;return It.promise.then(Dt=>{be.serverScoreUp(vt,Date.now()-At),Et.resolve(Dt)},Dt=>{be.serverScoreDown(vt),Et.reject(Dt)}),It};function*Kt(vt,Et){if(ke[vt]==null)throw new Error(`No blockbook connection with ${vt}`);const At=Date.now();let It;try{It=yield*Pi(Et),be.serverScoreUp(vt,Date.now()-At)}catch(Dt){throw be.serverScoreDown(vt),Dt}return It}const Ut={broadcastTx(vt){return cu(this,null,function*(){return yield new Promise((Et,Ct)=>{let At=!1,It=0;const Dt=Object.keys(ke).filter(Rt=>ke[Rt].blockbook!=null);if(Dt.length<1){Ct(new Error("Unexpected error. Missing WebSocket connections."));return}const mt=Dt.some(Rt=>ke[Rt].blockbook.isConnected);if(mt)for(const Rt of Dt){const{blockbook:Yt}=ke[Rt];Yt!=null&&Yt.broadcastTx(vt).then(Vt=>{At||(At=!0,Et(Vt.result))}).catch(Vt=>{if(++It===Dt.length){const nr=Vt!=null?`With error ${Vt.message}`:"";xe.error(`broadcastTx fail: ${JSON.stringify(vt)}
|
|
@@ -33,8 +33,8 @@ var _commonInfo = require('./commonInfo');
|
|
|
33
33
|
customFeeSettings: ['satPerByte'],
|
|
34
34
|
blockbookServers: [
|
|
35
35
|
// 'wss://blockbook.firo.org',
|
|
36
|
-
'wss://firo-wusa1.edge.app'
|
|
37
|
-
'wss://firo.nownodes.io/wss/%{nowNodesApiKey}'
|
|
36
|
+
'wss://firo-wusa1.edge.app'
|
|
37
|
+
// 'wss://firo.nownodes.io/wss/%{nowNodesApiKey}'
|
|
38
38
|
],
|
|
39
39
|
enableCustomServers: false
|
|
40
40
|
},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "edge-currency-plugins",
|
|
3
|
-
"version": "3.8.
|
|
3
|
+
"version": "3.8.2",
|
|
4
4
|
"description": "Edge currency plugins to fetch and process wallet accounts, balances and transactions.",
|
|
5
5
|
"homepage": "https://edge.app/",
|
|
6
6
|
"repository": "https://github.com/EdgeApp/edge-currency-plugins",
|