edge-currency-plugins 3.8.1 → 3.8.3

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.
@@ -58,23 +58,23 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
58
58
  `],wif:[239],legacyXPriv:[70615956],legacyXPub:[70617039],wrappedSegwitXPriv:[71978536],wrappedSegwitXPub:[71979618],segwitXPriv:[73341116],segwitXPub:[73342198],pubkeyHash:[111],scriptHash:[196],bech32:["btg"]}},yu={currencyInfo:gu,engineInfo:mu,coinInfo:Fn};var zi=Object.defineProperty,Za=Object.defineProperties,bu=Object.getOwnPropertyDescriptors,qo=Object.getOwnPropertySymbols,wu=Object.prototype.hasOwnProperty,xu=Object.prototype.propertyIsEnumerable,Ya=(T,B,j)=>B in T?zi(T,B,{enumerable:!0,configurable:!0,writable:!0,value:j}):T[B]=j,Eu=(T,B)=>{for(var j in B||(B={}))wu.call(B,j)&&Ya(T,j,B[j]);if(qo)for(var j of qo(B))xu.call(B,j)&&Ya(T,j,B[j]);return T},Mu=(T,B)=>Za(T,bu(B));const bn=Mu(Eu({assetDisplayName:"Bitcoin SV",chainDisplayName:"Bitcoin SV",currencyCode:"BSV",customFeeTemplate:Ze,memoOptions:it,pluginId:"bitcoinsv",walletType:"wallet:bitcoinsv",blockExplorer:"https://whatsonchain.com/block/%s",addressExplorer:"https://whatsonchain.com/address/%s",transactionExplorer:"https://whatsonchain.com/tx/%s",denominations:[{name:"BSV",multiplier:"100000000",symbol:"\u20BF"},{name:"mBSV",multiplier:"100000",symbol:"m\u20BF"},{name:"cash",multiplier:"100",symbol:"\u0180"}]},Lt),{defaultSettings:{customFeeSettings:["satPerByte"],blockbookServers:["wss://blockbook.siftbitcoin.com:9146"],enableCustomServers:!1},displayName:"Bitcoin SV",metaTokens:[]}),ji={formats:["bip44","bip32"],uriPrefix:"bitcoin",gapLimit:10,feeUpdateInterval:6e4,defaultFeeInfo:{lowFeeFudgeFactor:void 0,standardFeeLowFudgeFactor:void 0,standardFeeHighFudgeFactor:void 0,highFeeFudgeFactor:void 0,highFee:"20",lowFee:"3",standardFeeLow:"5",standardFeeHigh:"10",standardFeeLowAmount:"1000000",standardFeeHighAmount:"65000000",maximumFeeRate:nt(bn,33.61)},asBlockbookAddress:k(T=>{const B=p(T);try{const j=B.replace("bitcoincash:",""),le=Rr({address:j,coin:"bitcoincash"});return Xn({scriptPubkey:le,coin:"bitcoinsv",addressType:kt.p2pkh}).address}catch{return B}},T=>T)},$a={name:"bitcoinsv",segwit:!1,sighash:ze.iL.BCH_SIGHASH_ALL,coinType:236,prefixes:{messagePrefix:[`Bitcoin Signed Message:
59
59
  `],wif:[128],legacyXPriv:[76066276],legacyXPub:[76067358],pubkeyHash:[0],scriptHash:[5]}},mo={currencyInfo:bn,engineInfo:ji,coinInfo:$a};var Ja=Object.defineProperty,Su=Object.defineProperties,ku=Object.getOwnPropertyDescriptors,yi=Object.getOwnPropertySymbols,fn=Object.prototype.hasOwnProperty,yo=Object.prototype.propertyIsEnumerable,Wn=(T,B,j)=>B in T?Ja(T,B,{enumerable:!0,configurable:!0,writable:!0,value:j}):T[B]=j,Xo=(T,B)=>{for(var j in B||(B={}))fn.call(B,j)&&Wn(T,j,B[j]);if(yi)for(var j of yi(B))yo.call(B,j)&&Wn(T,j,B[j]);return T},Ki=(T,B)=>Su(T,ku(B));const Qa={currencyInfo:Ki(Xo({assetDisplayName:"Bitcoin Testnet",chainDisplayName:"Bitcoin Testnet",canReplaceByFee:!0,currencyCode:"TESTBTC",customFeeTemplate:Ze,memoOptions:it,pluginId:"bitcointestnet",walletType:"wallet:bitcointestnet",blockExplorer:"https://blockchair.com/bitcoin/testnet/block/%s",addressExplorer:"https://blockchair.com/bitcoin/testnet/address/%s",transactionExplorer:"https://blockchair.com/bitcoin/testnet/transaction/%s",denominations:[{name:"TESTBTC",multiplier:"100000000",symbol:"\u20BF"},{name:"mTESTBTC",multiplier:"100000",symbol:"m\u20BF"},{name:"bits",multiplier:"100",symbol:"\u0180"},{name:"sats",multiplier:"1",symbol:"s"}]},Lt),{defaultSettings:{customFeeSettings:["satPerByte"],blockbookServers:["wss://tbtc1.trezor.io","wss://tbtc2.trezor.io"],enableCustomServers:!1},displayName:"Bitcoin Testnet",metaTokens:[]}),engineInfo:{formats:["bip49","bip84","bip44","bip32"],forks:["bitcoincash","bitcoingold"],gapLimit:25,feeUpdateInterval:6e4,mempoolSpaceFeeInfoServer:"https://mempool.space/api/v1/fees/recommended",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"}},coinInfo:{name:"bitcointestnet",segwit:!0,coinType:1,prefixes:{messagePrefix:[`Bitcoin Signed Message:
60
60
  `],wif:[239],legacyXPriv:[70615956],legacyXPub:[70617039],wrappedSegwitXPriv:[71978536],wrappedSegwitXPub:[71979618],segwitXPriv:[73341116],segwitXPub:[73342198],pubkeyHash:[111],scriptHash:[196],bech32:["tb"]}}};var es=Object.defineProperty,ts=Object.defineProperties,rs=Object.getOwnPropertyDescriptors,bo=Object.getOwnPropertySymbols,ns=Object.prototype.hasOwnProperty,_u=Object.prototype.propertyIsEnumerable,Wi=(T,B,j)=>B in T?es(T,B,{enumerable:!0,configurable:!0,writable:!0,value:j}):T[B]=j,Au=(T,B)=>{for(var j in B||(B={}))ns.call(B,j)&&Wi(T,j,B[j]);if(bo)for(var j of bo(B))_u.call(B,j)&&Wi(T,j,B[j]);return T},is=(T,B)=>ts(T,rs(B));const Tu={currencyInfo:is(Au({assetDisplayName:"Bitcoin Testnet4",chainDisplayName:"Bitcoin Testnet4",canReplaceByFee:!0,currencyCode:"TESTBTC",customFeeTemplate:Ze,memoOptions:it,pluginId:"bitcointestnet4",walletType:"wallet:bitcointestnet4",blockExplorer:"https://mempool.space/testnet4/block/%s",addressExplorer:"https://mempool.space/testnet4/address/%s",transactionExplorer:"https://mempool.space/testnet4/tx/%s",denominations:[{name:"TESTBTC",multiplier:"100000000",symbol:"\u20BF"},{name:"mTESTBTC",multiplier:"100000",symbol:"m\u20BF"},{name:"bits",multiplier:"100",symbol:"\u0180"},{name:"sats",multiplier:"1",symbol:"s"}]},Lt),{defaultSettings:{customFeeSettings:["satPerByte"],blockbookServers:["wss://blockbook.tbtc-1.zelcore.io","wss://testnet4-explorer.wakiyamap.dev"],enableCustomServers:!1},displayName:"Bitcoin Testnet4",metaTokens:[]}),engineInfo:{formats:["bip49","bip84","bip44","bip32"],forks:["bitcoincash","bitcoingold"],gapLimit:25,feeUpdateInterval:6e4,mempoolSpaceFeeInfoServer:"https://mempool.space/testnet4/api/v1/fees/recommended",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"}},coinInfo:{name:"bitcointestnet4",segwit:!0,coinType:1,prefixes:{messagePrefix:[`Bitcoin Signed Message:
61
- `],wif:[239],legacyXPriv:[70615956],legacyXPub:[70617039],wrappedSegwitXPriv:[71978536],wrappedSegwitXPub:[71979618],segwitXPriv:[73341116],segwitXPub:[73342198],pubkeyHash:[111],scriptHash:[196],bech32:["tb"]}}};var Pu=Object.defineProperty,Ou=Object.defineProperties,os=Object.getOwnPropertyDescriptors,wo=Object.getOwnPropertySymbols,as=Object.prototype.hasOwnProperty,ss=Object.prototype.propertyIsEnumerable,fs=(T,B,j)=>B in T?Pu(T,B,{enumerable:!0,configurable:!0,writable:!0,value:j}):T[B]=j,Bu=(T,B)=>{for(var j in B||(B={}))as.call(B,j)&&fs(T,j,B[j]);if(wo)for(var j of wo(B))ss.call(B,j)&&fs(T,j,B[j]);return T},Cu=(T,B)=>Ou(T,os(B));const Nn=Cu(Bu({assetDisplayName:"Dash",chainDisplayName:"Dash",currencyCode:"DASH",customFeeTemplate:Ze,memoOptions:it,pluginId:"dash",walletType:"wallet:dash",addressExplorer:"https://blockchair.com/dash/address/%s?from=edgeapp",blockExplorer:"https://blockchair.com/dash/block/%s?from=edgeapp",transactionExplorer:"https://blockchair.com/dash/transaction/%s?from=edgeapp",denominations:[{name:"DASH",multiplier:"100000000",symbol:"\xD0"},{name:"mDASH",multiplier:"100000",symbol:"m\xD0"}]},Lt),{defaultSettings:{customFeeSettings:["satPerByte"],blockbookServers:["wss://dash1.trezor.io","wss://dash2.trezor.io","wss://dash3.trezor.io","wss://dash4.trezor.io","wss://dash5.trezor.io","wss://dash-wusa1.edge.app","wss://dash.nownodes.io/wss/%{nowNodesApiKey}"],enableCustomServers:!1},displayName:"Dash",metaTokens:[]}),Zo={serverConfigs:[{type:"blockbook-nownode",uris:["https://dash-wusa1.edge.app"]},{type:"blockbook-nownode",uris:["https://dashbook.nownodes.io"]}],formats:["bip44","bip32"],gapLimit:10,feeUpdateInterval:6e4,defaultFeeInfo:{lowFeeFudgeFactor:void 0,standardFeeLowFudgeFactor:void 0,standardFeeHighFudgeFactor:void 0,highFeeFudgeFactor:void 0,highFee:"300",lowFee:"100",standardFeeLow:"150",standardFeeHigh:"200",standardFeeLowAmount:"20000000",standardFeeHighAmount:"981000000",maximumFeeRate:nt(Nn,25.8)},txSpecificHandling:(T,B)=>{const j=E({instantlock:b(S)}),le=x(j)(B);return(le==null?void 0:le.instantlock)===!0&&(T.confirmations="confirmed"),T}},Eo={currencyInfo:Nn,engineInfo:Zo,coinInfo:{name:"dash",segwit:!1,coinType:5,prefixes:{messagePrefix:["unused"],wif:[204],legacyXPriv:[50221816],legacyXPub:[50221772],pubkeyHash:[76],scriptHash:[16]}}};var Sn=Object.defineProperty,Ru=Object.defineProperties,us=Object.getOwnPropertyDescriptors,wi=Object.getOwnPropertySymbols,xi=Object.prototype.hasOwnProperty,Yo=Object.prototype.propertyIsEnumerable,$o=(T,B,j)=>B in T?Sn(T,B,{enumerable:!0,configurable:!0,writable:!0,value:j}):T[B]=j,Fu=(T,B)=>{for(var j in B||(B={}))xi.call(B,j)&&$o(T,j,B[j]);if(wi)for(var j of wi(B))Yo.call(B,j)&&$o(T,j,B[j]);return T},Jo=(T,B)=>Ru(T,us(B));const Gi=Jo(Fu({assetDisplayName:"DigiByte",chainDisplayName:"DigiByte",currencyCode:"DGB",customFeeTemplate:Ze,memoOptions:it,pluginId:"digibyte",walletType:"wallet:digibyte",addressExplorer:"https://digiexplorer.info/address/%s",blockExplorer:"https://digiexplorer.info/block/%s",transactionExplorer:"https://digiexplorer.info/tx/%s",denominations:[{name:"DGB",multiplier:"100000000",symbol:"\u018A"},{name:"mDGB",multiplier:"100000",symbol:"m\u018A"}]},Lt),{defaultSettings:{customFeeSettings:["satPerByte"],blockbookServers:["wss://dgb1.trezor.io","wss://dgb2.trezor.io","wss://dgbbook.nownodes.io/wss/%{nowNodesApiKey}"],enableCustomServers:!1},displayName:"DigiByte",metaTokens:[]}),Nu={serverConfigs:[{type:"blockbook-nownode",uris:["https://dgbbook.nownodes.io"]}],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(Gi,.006176)}},cs={currencyInfo:Gi,engineInfo:Nu,coinInfo:{name:"digibyte",segwit:!0,coinType:20,prefixes:{messagePrefix:[`Digibyte Signed Message:
61
+ `],wif:[239],legacyXPriv:[70615956],legacyXPub:[70617039],wrappedSegwitXPriv:[71978536],wrappedSegwitXPub:[71979618],segwitXPriv:[73341116],segwitXPub:[73342198],pubkeyHash:[111],scriptHash:[196],bech32:["tb"]}}};var Pu=Object.defineProperty,Ou=Object.defineProperties,os=Object.getOwnPropertyDescriptors,wo=Object.getOwnPropertySymbols,as=Object.prototype.hasOwnProperty,ss=Object.prototype.propertyIsEnumerable,fs=(T,B,j)=>B in T?Pu(T,B,{enumerable:!0,configurable:!0,writable:!0,value:j}):T[B]=j,Bu=(T,B)=>{for(var j in B||(B={}))as.call(B,j)&&fs(T,j,B[j]);if(wo)for(var j of wo(B))ss.call(B,j)&&fs(T,j,B[j]);return T},Cu=(T,B)=>Ou(T,os(B));const Nn=Cu(Bu({assetDisplayName:"Dash",chainDisplayName:"Dash",currencyCode:"DASH",customFeeTemplate:Ze,memoOptions:it,pluginId:"dash",walletType:"wallet:dash",addressExplorer:"https://blockchair.com/dash/address/%s?from=edgeapp",blockExplorer:"https://blockchair.com/dash/block/%s?from=edgeapp",transactionExplorer:"https://blockchair.com/dash/transaction/%s?from=edgeapp",denominations:[{name:"DASH",multiplier:"100000000",symbol:"\xD0"},{name:"mDASH",multiplier:"100000",symbol:"m\xD0"}]},Lt),{defaultSettings:{customFeeSettings:["satPerByte"],blockbookServers:["wss://dash1.trezor.io","wss://dash2.trezor.io","wss://dash3.trezor.io","wss://dash4.trezor.io","wss://dash5.trezor.io","wss://dash-eusa1.edge.app","wss://dash.nownodes.io/wss/%{nowNodesApiKey}"],enableCustomServers:!1},displayName:"Dash",metaTokens:[]}),Zo={serverConfigs:[{type:"blockbook-nownode",uris:["https://dash-wusa1.edge.app"]},{type:"blockbook-nownode",uris:["https://dashbook.nownodes.io"]}],formats:["bip44","bip32"],gapLimit:10,feeUpdateInterval:6e4,defaultFeeInfo:{lowFeeFudgeFactor:void 0,standardFeeLowFudgeFactor:void 0,standardFeeHighFudgeFactor:void 0,highFeeFudgeFactor:void 0,highFee:"300",lowFee:"100",standardFeeLow:"150",standardFeeHigh:"200",standardFeeLowAmount:"20000000",standardFeeHighAmount:"981000000",maximumFeeRate:nt(Nn,25.8)},txSpecificHandling:(T,B)=>{const j=E({instantlock:b(S)}),le=x(j)(B);return(le==null?void 0:le.instantlock)===!0&&(T.confirmations="confirmed"),T}},Eo={currencyInfo:Nn,engineInfo:Zo,coinInfo:{name:"dash",segwit:!1,coinType:5,prefixes:{messagePrefix:["unused"],wif:[204],legacyXPriv:[50221816],legacyXPub:[50221772],pubkeyHash:[76],scriptHash:[16]}}};var Sn=Object.defineProperty,Ru=Object.defineProperties,us=Object.getOwnPropertyDescriptors,wi=Object.getOwnPropertySymbols,xi=Object.prototype.hasOwnProperty,Yo=Object.prototype.propertyIsEnumerable,$o=(T,B,j)=>B in T?Sn(T,B,{enumerable:!0,configurable:!0,writable:!0,value:j}):T[B]=j,Fu=(T,B)=>{for(var j in B||(B={}))xi.call(B,j)&&$o(T,j,B[j]);if(wi)for(var j of wi(B))Yo.call(B,j)&&$o(T,j,B[j]);return T},Jo=(T,B)=>Ru(T,us(B));const Gi=Jo(Fu({assetDisplayName:"DigiByte",chainDisplayName:"DigiByte",currencyCode:"DGB",customFeeTemplate:Ze,memoOptions:it,pluginId:"digibyte",walletType:"wallet:digibyte",addressExplorer:"https://digiexplorer.info/address/%s",blockExplorer:"https://digiexplorer.info/block/%s",transactionExplorer:"https://digiexplorer.info/tx/%s",denominations:[{name:"DGB",multiplier:"100000000",symbol:"\u018A"},{name:"mDGB",multiplier:"100000",symbol:"m\u018A"}]},Lt),{defaultSettings:{customFeeSettings:["satPerByte"],blockbookServers:["wss://dgb1.trezor.io","wss://dgb2.trezor.io","wss://dgbbook.nownodes.io/wss/%{nowNodesApiKey}"],enableCustomServers:!1},displayName:"DigiByte",metaTokens:[]}),Nu={serverConfigs:[{type:"blockbook-nownode",uris:["https://dgbbook.nownodes.io"]}],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(Gi,.006176)}},cs={currencyInfo:Gi,engineInfo:Nu,coinInfo:{name:"digibyte",segwit:!0,coinType:20,prefixes:{messagePrefix:[`Digibyte Signed Message:
62
62
  `],wif:[128,158],legacyXPriv:[76066276],legacyXPub:[76067358],wrappedSegwitXPriv:[77428856],wrappedSegwitXPub:[77429938],segwitXPriv:[78791436],segwitXPub:[78792518],pubkeyHash:[30],scriptHash:[63,5],bech32:["dgb"]}}};var Qo=gr(8287).Buffer;const fi=4,ea=1,Mo=72,Du=33,Pr=22,ta=36,Uu=4,kn=T=>T<253?1:T<=65535?3:T<=4294967295?5:9,ra=T=>kn(T)+T,Hu=(()=>{const T=ra(ea+Mo+ea+Du),B=(T+kn(1))/fi,j=ra(Pr),le=B+j;return{p2pkh:T,p2wpkh:B,p2wpkhp2sh:le,replayprotection:284,replayprotectionp2sh:284}})();function na(T){const B=Hu[T.scriptType];if(B==null)throw new Error(`${T.scriptType} script type not supported, yet`);return ta+B+Uu}function ia(T){const j=kn(T.script.length),le=T.script.length;return 8+j+le}function zu(T,B){return ia(T)*B}function ls(T){return T.reduce((B,j)=>((j.scriptType===Ft.p2wsh||j.scriptType===Ft.p2wpkhp2sh||j.scriptType===Ft.p2wpkh)&&B++,B),0)}function ui(T,B){const le=kn(T.length),xe=kn(B.length);let be=4+le+xe+4;ls(T)>0&&(be+=Math.ceil(2/fi));const Ie=T.reduce((Ge,Ve)=>Ge+na(Ve),0),ke=B.reduce((Ge,Ve)=>Ge+ia(Ve),0);return be+Ie+ke}const ju=T=>ze.ZX.fromHex(T).virtualSize();function Vi(T){return isFinite(T)?Math.floor(T)!==T?NaN:T<0?NaN:T:NaN}function v0(T){return T.reduce((B,j)=>B+(isFinite(j.value)?j.value:0),0)}function Ln(T){return T.reduce((B,j)=>B+Vi(j.value),0)}function oa(T,B,j,le){const xe=Ln(T),Re=Ln(B);let be=ui(T,B),Me=Math.ceil(j*be);const Ie=xe-(Re+Me),ke={script:Qo.from(le,"hex"),scriptPubkey:Qo.from(le,"hex"),value:Ie},Ge=ia(ke);be+=Ge;const Ve=j*Ge;ke.value-=Ve;let st=!1;return ke.value>zu(ke,j)?(B.push(ke),Me+=Ve,st=!0):Me+=Ie,{inputs:T,outputs:B,changeUsed:st,fee:Me}}var aa=gr(8287).Buffer,sa=Object.defineProperty,fa=Object.defineProperties,Ku=Object.getOwnPropertyDescriptors,hs=Object.getOwnPropertySymbols,ds=Object.prototype.hasOwnProperty,ps=Object.prototype.propertyIsEnumerable,vs=(T,B,j)=>B in T?sa(T,B,{enumerable:!0,configurable:!0,writable:!0,value:j}):T[B]=j,Wu=(T,B)=>{for(var j in B||(B={}))ds.call(B,j)&&vs(T,j,B[j]);if(hs)for(var j of hs(B))ps.call(B,j)&&vs(T,j,B[j]);return T},Gu=(T,B)=>fa(T,Ku(B));function gs(T){const{utxos:B,targets:j,feeRate:le,changeScript:xe}=T;if(!isFinite(Vi(le)))throw new Error("No rate provided");const Re=j.map(ke=>Gu(Wu({},ke),{script:aa.from(ke.script,"hex"),scriptPubkey:aa.from(ke.script,"hex")}));let be=0;const Me=[],Ie=Ln(j);for(let ke=0;ke<B.length;++ke){const Ge=B[ke];if(le*na(Ge)>Ge.value){if(ke===B.length-1)break;continue}Me.push(Ge),be+=Ge.value;const at=ui(Me,Re)*le;if(!(be<Ie+at))return oa(Me,Re,le,xe)}return{changeUsed:!1,fee:Math.ceil(le*ui(Me,Re)),inputs:Me}}var ms=gr(8287).Buffer,Gn=Object.defineProperty,Vu=Object.defineProperties,ua=Object.getOwnPropertyDescriptors,ca=Object.getOwnPropertySymbols,ys=Object.prototype.hasOwnProperty,bs=Object.prototype.propertyIsEnumerable,ws=(T,B,j)=>B in T?Gn(T,B,{enumerable:!0,configurable:!0,writable:!0,value:j}):T[B]=j,qu=(T,B)=>{for(var j in B||(B={}))ys.call(B,j)&&ws(T,j,B[j]);if(ca)for(var j of ca(B))bs.call(B,j)&&ws(T,j,B[j]);return T},Xu=(T,B)=>Vu(T,ua(B));function Ei(T){const{utxos:B,useUtxos:j,targets:le,feeRate:xe,changeScript:Re}=T;if(!isFinite(Vi(xe)))throw new Error("No rate provided");const be=le.map(st=>Xu(qu({},st),{script:ms.from(st.script,"hex"),scriptPubkey:ms.from(st.script,"hex")})),Me=j!=null?j:[];let Ie=Me.reduce((st,{value:at})=>st+at,0);const ke=Ln(le),Ve=ui(Me,be)*xe;if(Ie>=ke+Ve)return oa(Me,be,xe,Re);for(let st=0;st<B.length;++st){const at=B[st];if(xe*na(at)>at.value){if(st===B.length-1)break;continue}Me.push(at),Ie+=at.value;const Pt=ui(Me,be)*xe;if(!(Ie<ke+Pt))return oa(Me,be,xe,Re)}return{changeUsed:!1,fee:Math.ceil(xe*ui(Me,be)),inputs:Me}}var la=gr(8287).Buffer,xs=Object.defineProperty,Mi=Object.defineProperties,Zu=Object.getOwnPropertyDescriptors,ci=Object.getOwnPropertySymbols,Es=Object.prototype.hasOwnProperty,Yu=Object.prototype.propertyIsEnumerable,Ms=(T,B,j)=>B in T?xs(T,B,{enumerable:!0,configurable:!0,writable:!0,value:j}):T[B]=j,$u=(T,B)=>{for(var j in B||(B={}))Es.call(B,j)&&Ms(T,j,B[j]);if(ci)for(var j of ci(B))Yu.call(B,j)&&Ms(T,j,B[j]);return T},Ss=(T,B)=>Mi(T,Zu(B));function ks(T){const{utxos:B,targets:j,feeRate:le}=T,xe=j.map(Me=>Ss($u({},Me),{script:la.from(Me.script,"hex"),scriptPubkey:la.from(Me.script,"hex")})),Re=Math.ceil(le*ui(B,xe));j[0].value-=Re,xe[0].value-=Re;const be=Ln(j);return isNaN(be)||Re>be?{inputs:B,fee:Re,changeUsed:!1}:{inputs:B,outputs:xe,fee:Re,changeUsed:!1}}function Ju(){return{forceUseUtxo:B=>(B.feeRate<1e3&&(B.feeRate=1e3),Ei(B)),subtractFee:B=>(B.feeRate<1e3&&(B.feeRate=1e3),ks(B)),accumulative:B=>(B.feeRate<1e3&&(B.feeRate=1e3),gs(B))}}var Is=Object.defineProperty,ha=Object.defineProperties,Qu=Object.getOwnPropertyDescriptors,Si=Object.getOwnPropertySymbols,ec=Object.prototype.hasOwnProperty,tc=Object.prototype.propertyIsEnumerable,_s=(T,B,j)=>B in T?Is(T,B,{enumerable:!0,configurable:!0,writable:!0,value:j}):T[B]=j,rc=(T,B)=>{for(var j in B||(B={}))ec.call(B,j)&&_s(T,j,B[j]);if(Si)for(var j of Si(B))tc.call(B,j)&&_s(T,j,B[j]);return T},nc=(T,B)=>ha(T,Qu(B));const As=nc(rc({assetDisplayName:"Dogecoin",chainDisplayName:"Dogecoin",currencyCode:"DOGE",customFeeTemplate:Ze,memoOptions:it,pluginId:"dogecoin",walletType:"wallet:dogecoin",addressExplorer:"https://blockchair.com/dogecoin/address/%s?from=edgeapp",blockExplorer:"https://blockchair.com/dogecoin/block/%s?from=edgeapp",transactionExplorer:"https://blockchair.com/dogecoin/transaction/%s?from=edgeapp",denominations:[{name:"DOGE",multiplier:"100000000",symbol:"\xD0"}]},Lt),{defaultSettings:{customFeeSettings:["satPerByte"],blockbookServers:["wss://doge1.trezor.io","wss://doge2.trezor.io","wss://doge3.trezor.io","wss://doge4.trezor.io","wss://doge5.trezor.io","wss://doge-wusa1.edge.app","wss://dogebook.nownodes.io/wss/%{nowNodesApiKey}"],enableCustomServers:!1},displayName:"Dogecoin",metaTokens:[]}),Ts={serverConfigs:[{type:"blockbook-nownode",uris:["https://doge-wusa1.edge.app"]},{type:"blockbook-nownode",uris:["https://dogebook.nownodes.io"]}],formats:["bip44","bip32"],gapLimit:10,feeUpdateInterval:1e4,defaultFeeInfo:{lowFeeFudgeFactor:void 0,standardFeeLowFudgeFactor:void 0,standardFeeHighFudgeFactor:void 0,highFeeFudgeFactor:void 0,highFee:"526316",lowFee:"526316",standardFeeLow:"526316",standardFeeHigh:"526316",standardFeeLowAmount:"2000000000",standardFeeHighAmount:"98100000000",maximumFeeRate:nt(As,.05938)}},ic={name:"dogecoin",segwit:!1,coinType:3,utxoPicker:Ju(),prefixes:{messagePrefix:[`Dogecoin Signed Message:
63
63
  `],wif:[158],legacyXPriv:[49988504],legacyXPub:[49990397],pubkeyHash:[30],scriptHash:[22]}},Ps={currencyInfo:As,engineInfo:Ts,coinInfo:ic};var oc=Object.defineProperty,ac=Object.defineProperties,Os=Object.getOwnPropertyDescriptors,Bs=Object.getOwnPropertySymbols,sc=Object.prototype.hasOwnProperty,fc=Object.prototype.propertyIsEnumerable,Cs=(T,B,j)=>B in T?oc(T,B,{enumerable:!0,configurable:!0,writable:!0,value:j}):T[B]=j,uc=(T,B)=>{for(var j in B||(B={}))sc.call(B,j)&&Cs(T,j,B[j]);if(Bs)for(var j of Bs(B))fc.call(B,j)&&Cs(T,j,B[j]);return T},cc=(T,B)=>ac(T,Os(B));const Rs=cc(uc({assetDisplayName:"eBoost",chainDisplayName:"eBoost",currencyCode:"EBST",customFeeTemplate:Ze,memoOptions:it,pluginId:"eboost",walletType:"wallet:eboost",addressExplorer:"https://www.blockexperts.com/ebst/address/%s",blockExplorer:"https://www.blockexperts.com/ebst/hash/%s",transactionExplorer:"https://www.blockexperts.com/ebst/tx/%s",denominations:[{name:"EBST",multiplier:"100000000",symbol:"EBST"},{name:"mEBST",multiplier:"100000",symbol:"mEBST"}]},Lt),{defaultSettings:{customFeeSettings:["satPerByte"],blockbookServers:[],enableCustomServers:!1},displayName:"eBoost",metaTokens:[]}),lc={formats:["bip44","bip32"],gapLimit:10,feeUpdateInterval:6e4,defaultFeeInfo:{lowFeeFudgeFactor:void 0,standardFeeLowFudgeFactor:void 0,standardFeeHighFudgeFactor:void 0,highFeeFudgeFactor:void 0,highFee:"300",lowFee:"100",standardFeeLow:"150",standardFeeHigh:"200",standardFeeLowAmount:"20000000",standardFeeHighAmount:"981000000",maximumFeeRate:nt(Rs,.0033)}},Fs={currencyInfo:Rs,engineInfo:lc,coinInfo:{name:"eboost",segwit:!1,coinType:324,prefixes:{messagePrefix:[`Bitcoin Signed Message:
64
64
  `],wif:[220],legacyXPriv:[76066276],legacyXPub:[76067358],pubkeyHash:[92],scriptHash:[5]}}};var qi=Object.defineProperty,Ns=Object.defineProperties,Xi=Object.getOwnPropertyDescriptors,Ls=Object.getOwnPropertySymbols,hc=Object.prototype.hasOwnProperty,dc=Object.prototype.propertyIsEnumerable,da=(T,B,j)=>B in T?qi(T,B,{enumerable:!0,configurable:!0,writable:!0,value:j}):T[B]=j,pa=(T,B)=>{for(var j in B||(B={}))hc.call(B,j)&&da(T,j,B[j]);if(Ls)for(var j of Ls(B))dc.call(B,j)&&da(T,j,B[j]);return T},Ds=(T,B)=>Ns(T,Xi(B));const Us=Ds(pa({assetDisplayName:"eCash",chainDisplayName:"eCash",currencyCode:"XEC",customFeeTemplate:Ze,memoOptions:it,pluginId:"ecash",walletType:"wallet:ecash",blockExplorer:"https://blockchair.com/ecash/block/%s",addressExplorer:"https://blockchair.com/ecash/address/%s",transactionExplorer:"https://blockchair.com/ecash/tx/%s",denominations:[{name:"XEC",multiplier:"100",symbol:"e"},{name:"sats",multiplier:"1",symbol:"s"}]},Lt),{defaultSettings:{customFeeSettings:["satPerByte"],blockbookServers:["wss://blockbook.fabien.cash/websocket"],enableCustomServers:!1},displayName:"eCash",metaTokens:[]}),Hs={serverConfigs:[{type:"blockbook-nownode",uris:["https://xec-blockbook.nownodes.io"]}],formats:["bip44","bip32"],gapLimit:10,feeUpdateInterval:6e4,defaultFeeInfo:{lowFeeFudgeFactor:"1",standardFeeLowFudgeFactor:"1",standardFeeHighFudgeFactor:"1",highFeeFudgeFactor:"1",highFee:"20",lowFee:"1",standardFeeLow:"2",standardFeeHigh:"20",standardFeeLowAmount:"400000000",standardFeeHighAmount:"650000000",maximumFeeRate:nt(Us,3e-5)},asBlockbookAddress:k(T=>{const B=p(T);return B.startsWith("ecash:")?B.split(":")[1]:B},T=>T.startsWith("ecash:")?T:`ecash:${T}`)},zs={name:"ecash",segwit:!1,sighash:ze.iL.BCH_SIGHASH_ALL,coinType:899,includeCashaddrPrefix:!0,prefixes:{messagePrefix:[`Bitcoin Signed Message::
65
65
  `],wif:[128],legacyXPriv:[76066276],legacyXPub:[76067358],pubkeyHash:[0],scriptHash:[5],cashaddr:["ecash"]}},pc={currencyInfo:Us,engineInfo:Hs,coinInfo:zs};var js=Object.defineProperty,Zi=Object.defineProperties,ki=Object.getOwnPropertyDescriptors,li=Object.getOwnPropertySymbols,Ks=Object.prototype.hasOwnProperty,Ws=Object.prototype.propertyIsEnumerable,Gs=(T,B,j)=>B in T?js(T,B,{enumerable:!0,configurable:!0,writable:!0,value:j}):T[B]=j,Vs=(T,B)=>{for(var j in B||(B={}))Ks.call(B,j)&&Gs(T,j,B[j]);if(li)for(var j of li(B))Ws.call(B,j)&&Gs(T,j,B[j]);return T},va=(T,B)=>Zi(T,ki(B));const ga=va(Vs({assetDisplayName:"Feathercoin",chainDisplayName:"Feathercoin",currencyCode:"FTC",customFeeTemplate:Ze,memoOptions:it,pluginId:"feathercoin",walletType:"wallet:feathercoin",addressExplorer:"https://fsight.chain.tips/address/%s",blockExplorer:"https://fsight.chain.tips/block/%s",transactionExplorer:"https://fsight.chain.tips/tx/%s",denominations:[{name:"FTC",multiplier:"100000000",symbol:"F"},{name:"mFTC",multiplier:"100000",symbol:"mF"}]},Lt),{defaultSettings:{customFeeSettings:["satPerByte"],blockbookServers:["wss://blockbook.feathercoin.com"],enableCustomServers:!1},displayName:"Feathercoin",metaTokens:[]}),vc={formats:["bip49","bip84","bip44","bip32"],gapLimit:10,feeUpdateInterval:6e4,defaultFeeInfo:{lowFeeFudgeFactor:void 0,standardFeeLowFudgeFactor:void 0,standardFeeHighFudgeFactor:void 0,highFeeFudgeFactor:void 0,highFee:"1200",lowFee:"400",standardFeeLow:"600",standardFeeHigh:"800",standardFeeLowAmount:"2000000000",standardFeeHighAmount:"98100000000",maximumFeeRate:nt(ga,.002275)}},So={currencyInfo:ga,engineInfo:vc,coinInfo:{name:"feathercoin",segwit:!0,coinType:8,prefixes:{messagePrefix:[`Feathercoin Signed Message:
66
66
  `],wif:[142],legacyXPriv:[76077806],legacyXPub:[76069926],wrappedSegwitXPriv:[77428856],wrappedSegwitXPub:[77429938],segwitXPriv:[78791436],segwitXPub:[78792518],pubkeyHash:[14],scriptHash:[5],bech32:["fc"]}}};var Yi=gr(9596),qs=gr(3929),gc=gr(625),mc=Object.defineProperty,yc=Object.defineProperties,bc=Object.getOwnPropertyDescriptors,Xs=Object.getOwnPropertySymbols,ma=Object.prototype.hasOwnProperty,ko=Object.prototype.propertyIsEnumerable,Io=(T,B,j)=>B in T?mc(T,B,{enumerable:!0,configurable:!0,writable:!0,value:j}):T[B]=j,ya=(T,B)=>{for(var j in B||(B={}))ma.call(B,j)&&Io(T,j,B[j]);if(Xs)for(var j of Xs(B))ko.call(B,j)&&Io(T,j,B[j]);return T},wc=(T,B)=>yc(T,bc(B));const Zs=wc(ya({assetDisplayName:"Groestlcoin",chainDisplayName:"Groestlcoin",currencyCode:"GRS",customFeeTemplate:Ze,memoOptions:it,pluginId:"groestlcoin",walletType:"wallet:groestlcoin",addressExplorer:"https://blockchair.com/groestlcoin/address/%s?from=edgeapp?from=edgeapp",blockExplorer:"https://blockchair.com/groestlcoin/block/%s?from=edgeapp",transactionExplorer:"https://blockchair.com/groestlcoin/transaction/%s?from=edgeapp",denominations:[{name:"GRS",multiplier:"100000000",symbol:"G"},{name:"mGRS",multiplier:"100000",symbol:"mG"}]},Lt),{defaultSettings:{customFeeSettings:["satPerByte"],blockbookServers:["wss://blockbook.groestlcoin.org","wss://grsbook.nownodes.io/wss/%{nowNodesApiKey}"],enableCustomServers:!1},displayName:"Groestlcoin",metaTokens:[]}),xc={serverConfigs:[{type:"blockbook-nownode",uris:["https://grs.nownodes.io"]}],formats:["bip49","bip84","bip44","bip32"],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(Zs,.4705)}},Ec={name:"groestlcoin",segwit:!0,coinType:17,sighashFunction:ze.Et.sha256,txHashFunction:ze.Et.sha256,bs58DecodeFunc:qs.decode,bs58EncodeFunc:qs.encode,wifEncodeFunc:gc.encode,bip32FromBase58Func:Yi.n3,bip32FromSeedFunc:Yi.CC,prefixes:{messagePrefix:[`GroestlCoin Signed Message:
67
- `],wif:[128],legacyXPriv:[76066276],legacyXPub:[76067358],wrappedSegwitXPriv:[77428856],wrappedSegwitXPub:[77429938],segwitXPriv:[78791436],segwitXPub:[78792518],pubkeyHash:[36],scriptHash:[5],bech32:["grs"]}},Ys={currencyInfo:Zs,engineInfo:xc,coinInfo:Ec};var Mc=Object.defineProperty,$s=Object.defineProperties,ba=Object.getOwnPropertyDescriptors,Js=Object.getOwnPropertySymbols,_o=Object.prototype.hasOwnProperty,Qs=Object.prototype.propertyIsEnumerable,ef=(T,B,j)=>B in T?Mc(T,B,{enumerable:!0,configurable:!0,writable:!0,value:j}):T[B]=j,Sc=(T,B)=>{for(var j in B||(B={}))_o.call(B,j)&&ef(T,j,B[j]);if(Js)for(var j of Js(B))Qs.call(B,j)&&ef(T,j,B[j]);return T},kc=(T,B)=>$s(T,ba(B));const tf=kc(Sc({canReplaceByFee:!1,assetDisplayName:"Litecoin",chainDisplayName:"Litecoin",currencyCode:"LTC",customFeeTemplate:Ze,memoOptions:it,pluginId:"litecoin",walletType:"wallet:litecoin",blockExplorer:"https://blockchair.com/litecoin/block/%s",addressExplorer:"https://blockchair.com/litecoin/address/%s",transactionExplorer:"https://blockchair.com/litecoin/transaction/%s",denominations:[{name:"LTC",multiplier:"100000000",symbol:"\u0141"},{name:"mLTC",multiplier:"100000",symbol:"m\u0141"}]},Lt),{defaultSettings:{customFeeSettings:["satPerByte"],blockbookServers:["wss://ltc1.trezor.io","wss://ltc2.trezor.io","wss://ltc3.trezor.io","wss://ltc4.trezor.io","wss://ltc5.trezor.io","wss://ltc-wusa1.edge.app","wss://ltcbook.nownodes.io/wss/%{nowNodesApiKey}"],enableCustomServers:!1},displayName:"Litecoin",metaTokens:[]}),Ic={serverConfigs:[{type:"blockbook-nownode",uris:["https://ltc-wusa1.edge.app"]},{type:"blockbook-nownode",uris:["https://ltcbook.nownodes.io"]}],formats:["bip49","bip84","bip44","bip32"],forks:["bitcoin"],gapLimit:10,feeUpdateInterval:6e4,defaultFeeInfo:{lowFeeFudgeFactor:void 0,standardFeeLowFudgeFactor:void 0,standardFeeHighFudgeFactor:void 0,highFeeFudgeFactor:void 0,highFee:"300",lowFee:"100",standardFeeLow:"150",standardFeeHigh:"200",standardFeeLowAmount:"20000000",standardFeeHighAmount:"981000000",maximumFeeRate:nt(tf,63.64)}},rf={currencyInfo:tf,engineInfo:Ic,coinInfo:{name:"litecoin",segwit:!0,coinType:2,prefixes:{messagePrefix:[`Litecoin Signed Message:
68
- `],wif:[176],legacyXPriv:[76066276],legacyXPub:[76067358],wrappedSegwitXPriv:[28469138],wrappedSegwitXPub:[28471030],segwitXPriv:[78791436],segwitXPub:[78792518],pubkeyHash:[48],scriptHash:[50,5],bech32:["ltc"]}}};var _c=Object.defineProperty,Ac=Object.defineProperties,Tc=Object.getOwnPropertyDescriptors,wa=Object.getOwnPropertySymbols,Pc=Object.prototype.hasOwnProperty,nf=Object.prototype.propertyIsEnumerable,of=(T,B,j)=>B in T?_c(T,B,{enumerable:!0,configurable:!0,writable:!0,value:j}):T[B]=j,Oc=(T,B)=>{for(var j in B||(B={}))Pc.call(B,j)&&of(T,j,B[j]);if(wa)for(var j of wa(B))nf.call(B,j)&&of(T,j,B[j]);return T},af=(T,B)=>Ac(T,Tc(B));const hi=af(Oc({assetDisplayName:"PIVX",chainDisplayName:"PIVX",currencyCode:"PIVX",customFeeTemplate:Ze,memoOptions:it,pluginId:"pivx",walletType:"wallet:pivx",addressExplorer:"https://zkbitcoin.com/address/%s",blockExplorer:"https://zkbitcoin.com/block/%s",transactionExplorer:"https://zkbitcoin.com/tx/%s",denominations:[{name:"PIVX",multiplier:"100000000",symbol:"\u2C63"}]},Lt),{defaultSettings:{customFeeSettings:["satPerByte"],blockbookServers:["wss://zkbitcoin.com"],enableCustomServers:!1},displayName:"PIVX",metaTokens:[]}),Bc={serverConfigs:[{type:"blockbook-nownode",uris:["https://btc-wusa1.edge.app"]},{type:"blockbook-nownode",uris:["https://pivxbook.nownodes.io"]}],formats:["bip44","bip32"],gapLimit:10,feeUpdateInterval:6e4,defaultFeeInfo:{lowFeeFudgeFactor:void 0,standardFeeLowFudgeFactor:void 0,standardFeeHighFudgeFactor:void 0,highFeeFudgeFactor:void 0,highFee:"200",lowFee:"50",standardFeeLow:"100",standardFeeHigh:"150",standardFeeLowAmount:"10000000",standardFeeHighAmount:"100000000",maximumFeeRate:nt(hi,.6)}},xa={currencyInfo:hi,engineInfo:Bc,coinInfo:{name:"pivx",segwit:!1,coinType:119,prefixes:{messagePrefix:[`PIVX Signed Message:
67
+ `],wif:[128],legacyXPriv:[76066276],legacyXPub:[76067358],wrappedSegwitXPriv:[77428856],wrappedSegwitXPub:[77429938],segwitXPriv:[78791436],segwitXPub:[78792518],pubkeyHash:[36],scriptHash:[5],bech32:["grs"]}},Ys={currencyInfo:Zs,engineInfo:xc,coinInfo:Ec};var Mc=Object.defineProperty,$s=Object.defineProperties,ba=Object.getOwnPropertyDescriptors,Js=Object.getOwnPropertySymbols,_o=Object.prototype.hasOwnProperty,Qs=Object.prototype.propertyIsEnumerable,ef=(T,B,j)=>B in T?Mc(T,B,{enumerable:!0,configurable:!0,writable:!0,value:j}):T[B]=j,Sc=(T,B)=>{for(var j in B||(B={}))_o.call(B,j)&&ef(T,j,B[j]);if(Js)for(var j of Js(B))Qs.call(B,j)&&ef(T,j,B[j]);return T},kc=(T,B)=>$s(T,ba(B));const tf=kc(Sc({canReplaceByFee:!1,assetDisplayName:"Litecoin",chainDisplayName:"Litecoin",currencyCode:"LTC",customFeeTemplate:Ze,memoOptions:it,pluginId:"litecoin",walletType:"wallet:litecoin",blockExplorer:"https://blockchair.com/litecoin/block/%s",addressExplorer:"https://blockchair.com/litecoin/address/%s",transactionExplorer:"https://blockchair.com/litecoin/transaction/%s",denominations:[{name:"LTC",multiplier:"100000000",symbol:"\u0141"},{name:"mLTC",multiplier:"100000",symbol:"m\u0141"}]},Lt),{defaultSettings:{customFeeSettings:["satPerByte"],blockbookServers:["wss://ltc1.trezor.io","wss://ltc2.trezor.io","wss://ltc3.trezor.io","wss://ltc4.trezor.io","wss://ltc5.trezor.io","wss://ltc-eusa1.edge.app","wss://ltcbook.nownodes.io/wss/%{nowNodesApiKey}"],enableCustomServers:!1},displayName:"Litecoin",metaTokens:[]}),Ic={serverConfigs:[{type:"blockbook-nownode",uris:["https://ltc-wusa1.edge.app"]},{type:"blockbook-nownode",uris:["https://ltcbook.nownodes.io"]}],formats:["bip49","bip84","bip44","bip32"],forks:["bitcoin"],gapLimit:10,feeUpdateInterval:6e4,defaultFeeInfo:{lowFeeFudgeFactor:void 0,standardFeeLowFudgeFactor:void 0,standardFeeHighFudgeFactor:void 0,highFeeFudgeFactor:void 0,highFee:"300",lowFee:"100",standardFeeLow:"150",standardFeeHigh:"200",standardFeeLowAmount:"20000000",standardFeeHighAmount:"981000000",maximumFeeRate:nt(tf,63.64)}},rf={currencyInfo:tf,engineInfo:Ic,coinInfo:{name:"litecoin",segwit:!0,coinType:2,prefixes:{messagePrefix:[`Litecoin Signed Message:
68
+ `],wif:[176],legacyXPriv:[76066276],legacyXPub:[76067358],wrappedSegwitXPriv:[28469138],wrappedSegwitXPub:[28471030],segwitXPriv:[78791436],segwitXPub:[78792518],pubkeyHash:[48],scriptHash:[50,5],bech32:["ltc"]}}};var _c=Object.defineProperty,Ac=Object.defineProperties,Tc=Object.getOwnPropertyDescriptors,wa=Object.getOwnPropertySymbols,Pc=Object.prototype.hasOwnProperty,nf=Object.prototype.propertyIsEnumerable,of=(T,B,j)=>B in T?_c(T,B,{enumerable:!0,configurable:!0,writable:!0,value:j}):T[B]=j,Oc=(T,B)=>{for(var j in B||(B={}))Pc.call(B,j)&&of(T,j,B[j]);if(wa)for(var j of wa(B))nf.call(B,j)&&of(T,j,B[j]);return T},af=(T,B)=>Ac(T,Tc(B));const hi=af(Oc({assetDisplayName:"PIVX",chainDisplayName:"PIVX",currencyCode:"PIVX",customFeeTemplate:Ze,memoOptions:it,pluginId:"pivx",walletType:"wallet:pivx",addressExplorer:"https://zkbitcoin.com/address/%s",blockExplorer:"https://zkbitcoin.com/block/%s",transactionExplorer:"https://zkbitcoin.com/tx/%s",denominations:[{name:"PIVX",multiplier:"100000000",symbol:"\u2C63"}]},Lt),{defaultSettings:{customFeeSettings:["satPerByte"],blockbookServers:["wss://pivx-eusa1.edge.app","wss://zkbitcoin.com"],enableCustomServers:!1},displayName:"PIVX",metaTokens:[]}),Bc={serverConfigs:[{type:"blockbook-nownode",uris:["https://btc-wusa1.edge.app"]},{type:"blockbook-nownode",uris:["https://pivxbook.nownodes.io"]}],formats:["bip44","bip32"],gapLimit:10,feeUpdateInterval:6e4,defaultFeeInfo:{lowFeeFudgeFactor:void 0,standardFeeLowFudgeFactor:void 0,standardFeeHighFudgeFactor:void 0,highFeeFudgeFactor:void 0,highFee:"200",lowFee:"50",standardFeeLow:"100",standardFeeHigh:"150",standardFeeLowAmount:"10000000",standardFeeHighAmount:"100000000",maximumFeeRate:nt(hi,.6)}},xa={currencyInfo:hi,engineInfo:Bc,coinInfo:{name:"pivx",segwit:!1,coinType:119,prefixes:{messagePrefix:[`PIVX Signed Message:
69
69
  `],wif:[212],legacyXPriv:[35729707],legacyXPub:[36513075],pubkeyHash:[30],scriptHash:[13]}}};var sf=Object.defineProperty,Cc=Object.defineProperties,Rc=Object.getOwnPropertyDescriptors,Ea=Object.getOwnPropertySymbols,ff=Object.prototype.hasOwnProperty,uf=Object.prototype.propertyIsEnumerable,Ma=(T,B,j)=>B in T?sf(T,B,{enumerable:!0,configurable:!0,writable:!0,value:j}):T[B]=j,Fc=(T,B)=>{for(var j in B||(B={}))ff.call(B,j)&&Ma(T,j,B[j]);if(Ea)for(var j of Ea(B))uf.call(B,j)&&Ma(T,j,B[j]);return T},Nc=(T,B)=>Cc(T,Rc(B));const cf=Nc(Fc({assetDisplayName:"Qtum",chainDisplayName:"Qtum",currencyCode:"QTUM",customFeeTemplate:Ze,memoOptions:it,pluginId:"qtum",walletType:"wallet:qtum",addressExplorer:"https://explorer.qtum.org/address/%s",blockExplorer:"https://explorer.qtum.org/block/%s",transactionExplorer:"https://explorer.qtum.org/tx/%s",denominations:[{name:"QTUM",multiplier:"100000000",symbol:"Q"}]},Lt),{defaultSettings:{customFeeSettings:["satPerByte"],blockbookServers:["wss://qtum-eusa1.edge.app","wss://blockv3.qtum.info","wss://qtum.atomicwallet.io"],enableCustomServers:!1},displayName:"Qtum",metaTokens:[]}),Lc={formats:["bip44","bip32"],gapLimit:10,feeUpdateInterval:6e4,defaultFeeInfo:{lowFeeFudgeFactor:void 0,standardFeeLowFudgeFactor:void 0,standardFeeHighFudgeFactor:void 0,highFeeFudgeFactor:void 0,highFee:"1000",lowFee:"400",standardFeeLow:"450",standardFeeHigh:"700",standardFeeLowAmount:"20000000",standardFeeHighAmount:"981000000",maximumFeeRate:nt(cf,2.13)}},Uc={currencyInfo:cf,engineInfo:Lc,coinInfo:{name:"qtum",segwit:!1,coinType:2301,prefixes:{messagePrefix:[`Bitcoin Signed Message:
70
70
  `],wif:[128],legacyXPriv:[76066276],legacyXPub:[76067358],pubkeyHash:[58],scriptHash:[50]}}};var Hc=Object.defineProperty,zc=Object.defineProperties,lf=Object.getOwnPropertyDescriptors,hf=Object.getOwnPropertySymbols,df=Object.prototype.hasOwnProperty,Vn=Object.prototype.propertyIsEnumerable,Sa=(T,B,j)=>B in T?Hc(T,B,{enumerable:!0,configurable:!0,writable:!0,value:j}):T[B]=j,pf=(T,B)=>{for(var j in B||(B={}))df.call(B,j)&&Sa(T,j,B[j]);if(hf)for(var j of hf(B))Vn.call(B,j)&&Sa(T,j,B[j]);return T},jc=(T,B)=>zc(T,lf(B));const ka=jc(pf({assetDisplayName:"Ravencoin",chainDisplayName:"Ravencoin",currencyCode:"RVN",customFeeTemplate:Ze,memoOptions:it,pluginId:"ravencoin",walletType:"wallet:ravencoin",addressExplorer:"https://rvn.cryptoscope.io/address/?address=%s",blockExplorer:"https://rvn.cryptoscope.io/block/?blockheight=%s",transactionExplorer:"https://rvn.cryptoscope.io/tx/?txid=%s",denominations:[{name:"RVN",multiplier:"100000000",symbol:"R"}]},Lt),{defaultSettings:{customFeeSettings:["satPerByte"],blockbookServers:["wss://blockbook.ravencoin.org"],enableCustomServers:!1},displayName:"Ravencoin",metaTokens:[]}),vf={formats:["bip44","bip32"],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(ka,.01419)}},Wc={currencyInfo:ka,engineInfo:vf,coinInfo:{name:"ravencoin",segwit:!1,coinType:175,prefixes:{messagePrefix:[`Bitcoin Signed Message:
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","wss://firo.nownodes.io/wss/%{nowNodesApiKey}"],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:
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)}
78
78
  ${nr}`),Ct(Vt)}})}if(!mt){const{nowNodesApiKey:Rt}=j,Yt=Ie.filter(Vt=>Vt.type==="blockbook-nownode").map(Vt=>Vt.uris).flat(1);if(Yt.length<1){Ct(new Error("No available connections. Check your internet signal."));return}if(Rt==null){Ct(new Error("Missing connection key for fallback servers."));return}for(const Vt of Yt)xe.warn("Falling back to NOWNode server broadcast over HTTP:",Vt),le.fetchCors(`${Vt}/api/v2/sendtx/`,{method:"POST",headers:{"api-key":Rt},body:vt.signedTx}).then(nr=>cu(this,null,function*(){if(!nr.ok)throw new Error(`Failed to broadcast transaction via Blockbook: HTTP ${nr.status}`);const qt=yield nr.json();return $n(_d)(qt)})).then(nr=>{At||(At=!0,Et(nr.result))}).catch(nr=>{if(++It===Yt.length){const qt=nr!=null?`With error ${nr.message}`:"";xe.error(`broadcastTx fail: ${JSON.stringify(vt)}
79
79
  ${qt}`),Ct(nr)}})}})})},getBlockHeight(vt){return ke[vt].blockHeight},getServerList(){return Ve},getServerState(vt){return ke[vt]},refillServers(){xe("refilling servers..."),Ge=!0,Bd({id:Me.id,updateFunc:()=>{rr()}})},setPickNextTaskCB(vt){bt=vt},setServerList(vt){Ve=vt},serverCanGetTx(vt,Et){const Ct=ke[vt];if(Ct==null)return!1;if(Ct.txids.has(Et))return!0;for(const At of Object.values(ke))if(At.txids.has(Et))return!1;return!0},serverCanGetAddress(vt,Et){const Ct=ke[vt];if(Ct==null)return!1;if(Ct.addresses.has(Et))return!0;for(const At of Object.values(ke))if(At.addresses.has(Et))return!1;return!0},serverIsAwareOfAddress(vt,Et){const Ct=ke[vt];return Ct==null?!1:!!Ct.addresses.has(Et)},stop(){return cu(this,null,function*(){Ge=!1,xe("stopping server states"),Cd(Me.id),clearTimeout(at);for(const vt of Object.keys(ke)){const Et=ke[vt],{blockbook:Ct}=Et;Ct!=null&&(yield Ct.disconnect(),Jr(ke,vt))}})},watchAddresses(vt,Et,Ct){const At=ke[vt];if(At==null)throw new Error(`No blockbook connection with ${vt}`);const{blockbook:It}=At;for(const mt of Et)At.addresses.add(mt);const Dt=new su;Dt.promise.catch(mt=>{for(const Rt of Et)At.addresses.delete(Rt);Ct==null||Ct.reject(mt)}),It.watchAddresses(Array.from(At.addresses),dr(vt,Dt))},watchBlocks(vt){const Et=ke[vt];if(Et==null)throw new Error(`No blockbook connection with ${vt}`);const{blockbook:Ct}=Et;Et.blockSubscriptionStatus="subscribing";const At=new su;At.promise.then(()=>{Et.blockSubscriptionStatus="subscribed"}).catch(()=>{Et.blockSubscriptionStatus="unsubscribed"}),Ct.watchBlocks(dr(vt,At))},addressQueryTask:function*(vt,Et,Ct){const At=ke[vt];if(At==null)throw new Error(`No blockbook connection with ${vt}`);return yield*Pi(Kt(vt,function*(){return yield*Pi(At.blockbook.addressQueryTask(Et,{asBlockbookAddress:Re.engineInfo.asBlockbookAddress,lastQueriedBlockHeight:Ct.lastQueriedBlockHeight,page:Ct.page}))}()))},transactionQueryTask:function*(vt,Et){const Ct=ke[vt];if(Ct==null)throw new Error(`No blockbook connection with ${vt}`);return yield*Pi(Kt(vt,function*(){return yield*Pi(Ct.blockbook.transactionQueryTask(Et))}()))},transactionSpecialQueryTask:function*(vt,Et){const Ct=ke[vt];if(Ct==null)throw new Error(`No blockbook connection with ${vt}`);return yield*Pi(Kt(vt,function*(){return Ct.blockbook.transactionSpecialQueryTask(Et)}()))},utxoListQueryTask:function*(vt,Et){const Ct=ke[vt];if(Ct==null)throw new Error(`No blockbook connection with ${vt}`);return yield*Pi(Kt(vt,function*(){return yield*Pi(Ct.blockbook.utxoListQueryTask(Et,{asBlockbookAddress:Re.engineInfo.asBlockbookAddress}))}()))}};return Ut}var _m=Object.defineProperty,Am=Object.defineProperties,Tm=Object.getOwnPropertyDescriptors,Gd=Object.getOwnPropertySymbols,Pm=Object.prototype.hasOwnProperty,Om=Object.prototype.propertyIsEnumerable,lu=(T,B)=>(B=Symbol[T])?B:Symbol.for("Symbol."+T),Vd=(T,B,j)=>B in T?_m(T,B,{enumerable:!0,configurable:!0,writable:!0,value:j}):T[B]=j,Oi=(T,B)=>{for(var j in B||(B={}))Pm.call(B,j)&&Vd(T,j,B[j]);if(Gd)for(var j of Gd(B))Om.call(B,j)&&Vd(T,j,B[j]);return T},Bi=(T,B)=>Am(T,Tm(B)),Xr=(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())}),Gr=function(T,B){this[0]=T,this[1]=B},Fo=(T,B,j)=>{var le=(be,Me,Ie,ke)=>{try{var Ge=j[be](Me),Ve=(Me=Ge.value)instanceof Gr,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[lu("asyncIterator")]=()=>Re,xe("next"),xe("throw"),xe("return"),Re},Jn=T=>{var B=T[lu("asyncIterator")],j=!1,le,xe={};return B==null?(B=T[lu("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 Gr(new Promise(Me=>{var Ie=B[Re](be);if(!(Ie instanceof Object))throw TypeError("Object expected");Me(Ie)}),1)}}),xe[lu("iterator")]=()=>xe,le("next"),"throw"in B?le("throw"):xe.throw=Re=>{throw Re},"return"in B&&le("return"),xe};function qd(T){const{dataLayer:B,initOptions:j,io:le,emitter:xe,engineOptions:Re,pluginState:be,pluginInfo:Me,seenTxCheckpoint:Ie,walletInfo:ke,walletTools:Ge}=T,{log:Ve}=Re,{walletFormats:st}=ke.keys,at={addressForTransactionsCache:{},addressForUtxosCache:{},addressSubscribeCache:{},blockbookUtxoCache:{},dataLayerUtxoCache:{},transactionSpecificUpdateCache:{},transactionUpdateCache:{}},xt=()=>{for(const It of Object.keys(at.addressForTransactionsCache))Jr(at.addressForTransactionsCache,It);for(const It of Object.keys(at.addressForUtxosCache))Jr(at.addressForUtxosCache,It);for(const It of Object.keys(at.addressSubscribeCache))Jr(at.addressSubscribeCache,It);for(const It of Object.keys(at.blockbookUtxoCache))Jr(at.blockbookUtxoCache,It);for(const It of Object.keys(at.dataLayerUtxoCache))Jr(at.dataLayerUtxoCache,It);for(const It of Object.keys(at.transactionSpecificUpdateCache))Jr(at.transactionSpecificUpdateCache,It);for(const It of Object.keys(at.transactionUpdateCache))Jr(at.transactionUpdateCache,It)},bt=2;let Pt=0,Gt=0;const rr=()=>Xr(this,null,function*(){if(Gt>=1)return;const It=Object.keys(at.addressSubscribeCache).length*bt;if(Pt=Pt+1,It===0)throw new Error("No addresses to process");const Dt=Pt/It;(Dt-Gt>yg||Dt===1)&&(Ve(`processed changed, percent: ${Dt}, processedCount: ${Pt}, totalCount: ${It}`),Gt=Dt,vt.updateSeenTxCheckpoint(),xe.emit(Ur.ADDRESSES_CHECKED,Dt))}),dr=()=>{if(Gt<1)return;const It=vt.seenTxCheckpoint(),Dt=It!=null?parseInt(It):void 0;if(Dt==null||vt.maxSeenTxBlockHeight>Dt){const mt=vt.maxSeenTxBlockHeight.toString();vt.emitter.emit(Ur.SEEN_TX_CHECKPOINT,mt)}},Kt=new qh,Ut=Im({engineEmitter:xe,initOptions:j,io:le,log:Ve,pluginInfo:Me,pluginState:be,walletInfo:ke}),vt={pluginInfo:Me,walletInfo:ke,walletTools:Ge,dataLayer:B,emitter:xe,taskCache:at,updateProgressRatio:rr,updateSeenTxCheckpoint:dr,io:le,log:Ve,maxSeenTxBlockHeight:0,seenTxCheckpoint:Ie,serverStates:Ut,walletFormats:st,lock:Kt};Ut.setPickNextTaskCB(It=>Cm(vt,It));let Et=!1;const Ct=()=>Xr(this,null,function*(){Et||(Et=!0,yield At(),yield hu(vt))});xe.on(Ur.BLOCK_HEIGHT_CHANGED,(It,Dt)=>Xr(this,null,function*(){const mt=yield B.fetchTransactions({blockHeight:0});for(const Rt of mt)Rt!=null&&(at.transactionUpdateCache[Rt.txid]={processing:!1})})),xe.on(Ur.NEW_ADDRESS_TRANSACTION,(It,Dt)=>Xr(this,null,function*(){const mt=at.addressSubscribeCache[Dt.address];if(mt!=null){const{path:Rt}=mt;at.addressForUtxosCache[Dt.address]={processing:!1,path:Rt},Zd(vt,{address:Dt.address,changePath:Rt,blockHeight:0,addressForTransactionsCache:at.addressForTransactionsCache}).catch(()=>{throw new Error("failed to add to transaction cache")}),hu(vt).catch(Yt=>{Ve(Yt)})}}));const At=()=>Xr(this,null,function*(){const It=[];for(const Dt of st){const mt=dd(Me.engineInfo,Dt);for(const Rt of mt){const Yt=new Set,Vt={format:Dt,changeIndex:Rt},nr=B.numAddressesByFormatPath(Vt);for(let qt=0;qt<nr;qt++){const ir=yield B.fetchAddress({format:Dt,changeIndex:Rt,addressIndex:qt});if(ir==null)throw new Error(`Missing data-layer address with '${Dt}/${Rt}/${qt}' path during initialization`);const{address:sr}=Ge.scriptPubkeyToAddress({changePath:Vt,scriptPubkey:ir.scriptPubkey});Yt.add(sr),ir.balance!=null&&It.push({scriptPubkey:ir.scriptPubkey,balance:ir.balance})}a0(vt.taskCache,Yt,{format:Dt,changeIndex:Rt})}}xe.emit(Ur.ADDRESS_BALANCE_CHANGED,Me.currencyInfo.currencyCode,It)});return{processedPercent:Gt,start(){return Xr(this,null,function*(){Pt=0,Gt=0,yield Ct(),Ut.refillServers()})},stop(){return Xr(this,null,function*(){Ut.stop(),xt(),Et=!1})},getFreshAddress(It){return Xr(this,arguments,function*({branch:Dt=0,forceIndex:mt}){const{privateKeyFormat:Rt}=ke.keys;Rt==="bip32"&&(Dt=0);const{address:Yt,nativeBalance:Vt="0",legacyAddress:nr}=yield Xd(vt,{forceIndex:mt,changePath:{format:Rt,changeIndex:Dt}}),qt={publicAddress:Yt,nativeBalance:Vt,legacyAddress:nr!==Yt?nr:void 0,legacyNativeBalance:nr!==Yt?Vt:void 0},ir=iu(Me.engineInfo,ke.keys.privateKeyFormat).filter(sr=>sr!==Rt);for(const sr of ir)if(sr==="bip84"){const{address:Sr,nativeBalance:Cr="0"}=yield Xd(vt,{forceIndex:mt,changePath:{format:sr,changeIndex:Dt}});qt.segwitAddress=Sr,qt.segwitNativeBalance=Cr}return qt})},deriveScriptAddress(It){return Xr(this,null,function*(){const{address:Dt}=yield Bm({walletTools:vt.walletTools,engineInfo:vt.pluginInfo.engineInfo,dataLayer:vt.dataLayer,taskCache:vt.taskCache,format:ke.keys.privateKeyFormat,script:It});return{publicAddress:Dt}})},addGapLimitAddresses(It){return Xr(this,null,function*(){const Dt=It.map(mt=>Xr(this,null,function*(){const Rt=Ge.addressToScriptPubkey(mt);yield B.saveAddress(Jf({scriptPubkey:Rt,used:!0}))}));yield Promise.all(Dt),yield Ct()})},broadcastTx(It){return Xr(this,null,function*(){return yield Ut.broadcastTx(It),It.txid})},refillServers(){Ut.refillServers()},getServerList(){return Ut.getServerList()},setServerList(It){Ut.setServerList(It)},loadWifs(It){return Xr(this,null,function*(){for(const Dt of It)for(const mt of st){const Rt={format:mt,changeIndex:0},Yt=Bi(Oi({},Rt),{addressIndex:0}),{scriptPubkey:Vt,redeemScript:nr}=Ge.getScriptPubkeyFromWif(Dt,mt),{address:qt}=Ge.scriptPubkeyToAddress({changePath:Yt,scriptPubkey:Vt});yield B.saveAddress(Jf({scriptPubkey:Vt,redeemScript:nr,path:Yt})),at.addressSubscribeCache[qt]={path:Rt,processing:!1}}})},processUtxos(It){return Xr(this,null,function*(){var Dt;const mt=new Map,Rt=new Set;for(const Yt of It){const Vt=(Dt=mt.get(Yt.scriptPubkey))!=null?Dt:[];mt.has(Yt.scriptPubkey)||mt.set(Yt.scriptPubkey,Vt),Vt.push(Yt),Rt.add(Yt.id)}for(const[Yt,Vt]of mt.entries()){const ir=[...(yield B.fetchUtxos({scriptPubkey:Yt})).filter(sr=>sr!=null&&!Rt.has(sr==null?void 0:sr.id)),...Vt];yield $d(vt,{scriptPubkey:Yt,utxos:ir})}})}}}const Bm=T=>Xr(void 0,null,function*(){const{walletTools:B,engineInfo:j,dataLayer:le,format:xe,taskCache:Re,script:be}=T;if(j.scriptTemplates==null)throw new Error(`cannot derive script address ${be} without defined script template`);const Me=j.scriptTemplates[be],Ie={format:xe,changeIndex:nn(Me),addressIndex:0},{address:ke,scriptPubkey:Ge,redeemScript:Ve}=B.getScriptAddress({path:Ie,scriptTemplate:Me});yield le.saveAddress(Jf({scriptPubkey:Ge,redeemScript:Ve,path:Ie}));const st=new Set;return st.add(ke),a0(Re,st,{format:Ie.format,changeIndex:Ie.changeIndex}),{address:ke,scriptPubkey:Ge,redeemScript:Ve}}),Xd=(T,B)=>Xr(void 0,null,function*(){var j;const{changePath:le,forceIndex:xe}=B,Re=T.dataLayer.numAddressesByFormatPath(le),be={format:le.format,changeIndex:le.changeIndex,addressIndex:Math.max(Re-T.pluginInfo.engineInfo.gapLimit,0)};xe!=null&&(be.addressIndex=xe);const Me=yield T.dataLayer.fetchAddress(be),Ie=(j=Me==null?void 0:Me.balance)!=null?j:"0",{scriptPubkey:ke}=Me!=null?Me:yield T.walletTools.getScriptPubkey(be);if(ke==null)throw new Error("Unknown address path");const Ge=T.walletTools.scriptPubkeyToAddress({changePath:be,scriptPubkey:ke});return Bi(Oi({},Ge),{nativeBalance:Ie})}),hu=T=>Xr(void 0,null,function*(){yield T.lock.acquireAsync();try{for(const j of T.walletFormats){const le=dd(T.pluginInfo.engineInfo,j);for(const xe of le)yield B({format:j,changeIndex:xe})}}finally{T.lock.release()}function B(j){return Xr(this,null,function*(){const le=new Set,xe=T.dataLayer.numAddressesByFormatPath(j);let Re=yield T.dataLayer.lastUsedIndexByFormatPath(j),be=Re+T.pluginInfo.engineInfo.gapLimit,Me=xe;for(;Me<=be;){const Ie=Bi(Oi({},j),{addressIndex:Me}),{scriptPubkey:ke,redeemScript:Ge}=T.walletTools.getScriptPubkey(Ie),{address:Ve}=T.walletTools.scriptPubkeyToAddress({changePath:Ie,scriptPubkey:ke});yield T.dataLayer.saveAddress(Jf({scriptPubkey:ke,redeemScript:Ge,path:Ie})),le.add(Ve),Re=yield T.dataLayer.lastUsedIndexByFormatPath(j),be=Re+T.pluginInfo.engineInfo.gapLimit,Me=T.dataLayer.numAddressesByFormatPath(j)}a0(T.taskCache,le,j)})}}),a0=(T,B,j)=>{B.forEach(le=>{T.addressSubscribeCache[le]={path:j,processing:!1}})},Zd=(T,B)=>Xr(void 0,null,function*(){var j;const{address:le,changePath:xe,addressForTransactionsCache:Re}=B;let{blockHeight:be}=B;const Me=T.walletTools.addressToScriptPubkey(le);if(be===0){const{lastQueriedBlockHeight:Ie=0}=(j=yield T.dataLayer.fetchAddress(Me))!=null?j:{};be=Ie}Re[le]={processing:!1,path:xe,page:1,blockHeight:be}}),Yd=T=>T.pluginInfo.engineInfo.txSpecificHandling!=null;function Cm(T,B){return Fo(this,null,function*(){const{addressForTransactionsCache:j,addressForUtxosCache:le,addressSubscribeCache:xe,blockbookUtxoCache:Re,dataLayerUtxoCache:be,transactionSpecificUpdateCache:Me,transactionUpdateCache:Ie}=T.taskCache,ke=T.serverStates.getServerState(B);if(ke==null)return!1;if(ke.blockSubscriptionStatus==="unsubscribed")return T.serverStates.watchBlocks(B),!0;if(Object.keys(be).length>0){for(const[Ge,Ve]of Object.entries(be))if(!Ve.processing&&Ve.full)return Ve.processing=!0,yield new Gr($d(T,{scriptPubkey:Ge,utxos:Ve.utxos})),Jr(be,Ge),!0}for(const[Ge,Ve]of Object.entries(Re)){const st=Ve.blockbookUtxo;if(!Ve.processing){const at=no(Ve.path,T.pluginInfo.engineInfo.scriptTemplates);if((at===gt.Airbitz||at===gt.Legacy||at===gt.ReplayProtection)&&!T.serverStates.serverCanGetTx(B,st.txid))return!1;Ve.processing=!0,Jr(Re,Ge),yield*Jn(Dm(T,{serverUri:B,cacheItem:Ve}))}}for(const[Ge,Ve]of Object.entries(le))!Ve.processing&&T.serverStates.serverCanGetAddress(B,Ge)&&(Ve.processing=!0,Jr(le,Ge),yield*Jn(Lm(T,{address:Ge,cacheItem:Ve,serverState:ke,serverUri:B})));if(Object.keys(xe).length>0){const Ge=[],Ve=T.serverStates.getBlockHeight(B);for(const[st,at]of Object.entries(xe)){const xt=!T.serverStates.serverIsAwareOfAddress(B,st);xt&&Ge.push(st),!at.processing&&(xt&&(le[st]={processing:!1,path:at.path}),yield new Gr(Zd(T,{address:st,changePath:at.path,blockHeight:Ve,addressForTransactionsCache:j})),at.processing=!0)}if(Ge.length>0)return T.serverStates.watchAddresses(B,Ge),!0}if(Object.keys(Me).length>0){let Ge=!1;for(const[Ve,st]of Object.entries(Me))!st.processing&&T.serverStates.serverCanGetTx(B,Ve)&&(Ge=!0,st.processing=!0,Jr(Me,Ve),yield*Jn(Rm(T,{serverState:ke,serverUri:B,txId:Ve})));if(Ge)return!0}if(Object.keys(Ie).length>0){let Ge=!1;for(const[Ve,st]of Object.entries(Ie))!st.processing&&T.serverStates.serverCanGetTx(B,Ve)&&(Ge=!0,st.processing=!0,Jr(Ie,Ve),yield*Jn(Fm(T,{serverState:ke,serverUri:B,txId:Ve})));if(Ge)return!0}for(const[Ge,Ve]of Object.entries(j))!Ve.processing&&T.serverStates.serverCanGetAddress(B,Ge)&&(Ve.processing=!0,Jr(j,Ge),yield*Jn(Nm(T,{address:Ge,cacheItem:Ve,serverState:ke,serverUri:B})));return!1})}function Rm(T,B){return Fo(this,null,function*(){const{serverState:j,serverUri:le,txId:xe}=B;try{const Re=yield*Jn(T.serverStates.transactionSpecialQueryTask(le,xe));let Me=(yield new Gr(T.dataLayer.fetchTransactions({txId:xe})))[0];if(Me==null)return!0;T.pluginInfo.engineInfo.txSpecificHandling!=null&&(Me=T.pluginInfo.engineInfo.txSpecificHandling(Me,Re));const Ie=yield new Gr(T.dataLayer.saveTransaction({tx:Me})),ke=yield new Gr(Ua({dataLayer:T.dataLayer,pluginInfo:T.pluginInfo,tx:Ie,walletId:T.walletInfo.id,walletTools:T.walletTools}));return T.emitter.emit(Ur.TRANSACTIONS,[{isNew:!1,transaction:ke}]),j.txids.add(xe),!0}catch(Re){return console.error(Re),T.log("error while processing transaction specific update:",Re),T.taskCache.transactionSpecificUpdateCache[xe]={processing:!1},!1}})}function Fm(T,B){return Fo(this,null,function*(){const{serverState:j,serverUri:le,txId:xe}=B;try{const Re=yield*Jn(T.serverStates.transactionQueryTask(le,xe));if(Re.blockHeight<1)return!1;const be=s0(T,{txResponse:Re});for(const Ve of be.inputs)yield new Gr(T.dataLayer.removeUtxos([`${Ve.txId}_${Ve.outputIndex}`]));const Me=be.outputs.map(Ve=>`${be.txid}_${Ve.n}`),Ie=yield new Gr(T.dataLayer.fetchUtxos({utxoIds:Me}));for(const Ve of Ie)Ve!=null&&(Ve.blockHeight=be.blockHeight,yield new Gr(T.dataLayer.saveUtxo(Ve)));const ke=yield new Gr(T.dataLayer.saveTransaction({tx:be})),Ge=yield new Gr(Ua({dataLayer:T.dataLayer,pluginInfo:T.pluginInfo,tx:ke,walletId:T.walletInfo.id,walletTools:T.walletTools}));return T.emitter.emit(Ur.TRANSACTIONS,[{isNew:!1,transaction:Ge}]),Yd(T)&&(T.taskCache.transactionSpecificUpdateCache[xe]={processing:!1}),j.txids.add(xe),!0}catch(Re){return console.error(Re),T.log("error while processing transaction update:",Re),T.taskCache.transactionUpdateCache[xe]={processing:!1},!1}})}function Nm(T,B){return Fo(this,null,function*(){const{address:j,cacheItem:le,serverState:xe,serverUri:Re}=B,{page:be=1,blockHeight:Me}=le,Ie=T.taskCache.addressForTransactionsCache,ke=T.walletTools.addressToScriptPubkey(j),Ge=yield new Gr(T.dataLayer.fetchAddress(ke));if(Ge==null)throw new Error(`could not find address with script pubkey ${ke}`);try{const Ve=yield*Jn(T.serverStates.addressQueryTask(Re,j,{lastQueriedBlockHeight:Ge.lastQueriedBlockHeight,page:be})),{transactions:st=[],txs:at,unconfirmedTxs:xt,totalPages:bt}=Ve,Pt=at>0||xt>0;!Ge.used&&Pt&&be===1&&(Ge.used=!0);const Gt=T.seenTxCheckpoint(),rr=Gt!=null?parseInt(Gt):void 0;for(const dr of st){const[Kt]=yield new Gr(T.dataLayer.fetchTransactions({txId:dr.txid})),Ut=s0(T,{txResponse:dr}),vt=yield new Gr(T.dataLayer.saveTransaction({tx:Ut,scriptPubkeys:[ke]})),Et=yield new Gr(Ua({dataLayer:T.dataLayer,pluginInfo:T.pluginInfo,tx:vt,walletId:T.walletInfo.id,walletTools:T.walletTools})),Ct=rr!=null&&Kt==null&&(Ut.blockHeight===0||Ut.blockHeight>rr);T.emitter.emit(Ur.TRANSACTIONS,[{isNew:Ct,transaction:Et}]),Et.blockHeight>T.maxSeenTxBlockHeight&&(T.maxSeenTxBlockHeight=Et.blockHeight),Yd(T)&&(T.taskCache.transactionSpecificUpdateCache[Ut.txid]={processing:!1})}return T.updateSeenTxCheckpoint(),be<bt?(Ie[j]=Bi(Oi({},le),{processing:!1,page:be+1}),!0):(Ge.lastQueriedBlockHeight=Me,yield new Gr(T.dataLayer.saveAddress(Ge)),yield new Gr(T.updateProgressRatio()),yield new Gr(hu(T)),xe.addresses.add(j),!0)}catch(Ve){return console.error(Ve),T.log("error while processing address for transactions:",Ve),Ie[j]=Bi(Oi({},le),{processing:!1}),!1}})}const s0=(T,B)=>{const{txResponse:j}=B;let le="0";const xe=j.vout.map(be=>{var Me;const Ie=(Me=be.hex)!=null?Me:x(ke=>hd(ke),"unknown")({address:be.addresses[0],coin:T.pluginInfo.coinInfo.name});return le=(0,ue.add)(le,be.value),{n:be.n,scriptPubkey:Ie,amount:be.value}}),Re=j.vin.map(be=>{if(be.coinbase!=null)return{amount:le,n:0,outputIndex:4294967295,scriptPubkey:"",sequence:be.sequence,txId:"0000000000000000000000000000000000000000000000000000000000000000"};if(be.txid==null)throw new Error("Unexpected null txid when processing transaction inputs");const Me=x(Ie=>hd(Ie),"unknown")({address:be.addresses[0],coin:T.pluginInfo.coinInfo.name});return{txId:be.txid,outputIndex:be.vout,n:be.n,scriptPubkey:Me,sequence:be.sequence,amount:be.value}});return{txid:j.txid,hex:j.hex,blockHeight:j.blockHeight>0?j.blockHeight:0,date:j.blockTime,fees:j.fees,inputs:Re,outputs:xe,ourIns:[],ourOuts:[],ourAmount:"0"}};function Lm(T,B){return Fo(this,null,function*(){const{address:j,cacheItem:le,serverState:xe,serverUri:Re}=B,{addressForUtxosCache:be,blockbookUtxoCache:Me,dataLayerUtxoCache:Ie}=T.taskCache;try{const ke=yield*Jn(T.serverStates.utxoListQueryTask(Re,j)),Ge=T.walletTools.addressToScriptPubkey(j),Ve=yield new Gr(T.dataLayer.fetchAddress(Ge));if(Ve==null||Ve.path==null)return!0;if(ke.length===0)return Jd(Ie,le.path,Ge,0),!0;for(const st of ke){const at=`${st.txid}_${st.vout}`;Me[at]={blockbookUtxo:st,processing:!1,requiredCount:ke.length,path:le.path,address:Bi(Oi({},Ve),{path:Ve.path})}}return xe.addresses.add(j),!0}catch(ke){return console.error(ke),T.log("error while processing address for UTXOs:",ke),be[j]=Bi(Oi({},le),{processing:!1}),!1}})}const $d=(T,B)=>Xr(void 0,null,function*(){const{utxos:j,scriptPubkey:le}=B,xe=Object.fromEntries([...j].map(ke=>[ke.id,ke])),Re=[],be=yield T.dataLayer.fetchUtxos({scriptPubkey:le});let Me="0";for(const ke of be){if(ke==null)throw new Error("Unexpected undefined utxo when processing unspent transactions");ke.spent||(Me=(0,ue.add)(ke.value,Me)),xe[ke.id]==null&&Re.push(ke.id)}yield T.dataLayer.removeUtxos(Re);let Ie="0";for(const ke of Object.values(xe))ke.spent||(Ie=(0,ue.add)(ke.value,Ie)),yield T.dataLayer.saveUtxo(ke);if(Ie!==Me){T.log("address balance changed:",{scriptPubkey:le,oldBalance:Me,newBalance:Ie}),T.emitter.emit(Ur.ADDRESS_BALANCE_CHANGED,T.pluginInfo.currencyInfo.currencyCode,[{scriptPubkey:le,balance:Ie}]);const ke=yield T.dataLayer.fetchAddress(le);if(ke==null)throw new Error("address not found when processing UTXO transactions");yield T.dataLayer.saveAddress(Bi(Oi({},ke),{balance:Ie,used:!0}))}yield T.updateProgressRatio(),yield hu(T).catch(ke=>{throw T.log.error(ke),ke})});function Dm(T,B){return Fo(this,null,function*(){const{serverUri:j,cacheItem:le}=B,{blockbookUtxoCache:xe,dataLayerUtxoCache:Re}=T.taskCache,be=no(le.path,T.pluginInfo.engineInfo.scriptTemplates),Me=au(be);let Ie,ke;const Ge=()=>{var Ve;const st={id:`${le.blockbookUtxo.txid}_${le.blockbookUtxo.vout}`,txid:le.blockbookUtxo.txid,vout:le.blockbookUtxo.vout,value:le.blockbookUtxo.value,scriptPubkey:le.address.scriptPubkey,script:Ie,redeemScript:ke,scriptType:Me,blockHeight:(Ve=le.blockbookUtxo.height)!=null?Ve:-1,spent:!1};Jd(Re,le.path,le.address.scriptPubkey,le.requiredCount,st)};switch(be){case gt.Airbitz:case gt.Legacy:case gt.ReplayProtection:ke=le.address.redeemScript;{const[Ve]=yield new Gr(T.dataLayer.fetchTransactions({txId:le.blockbookUtxo.txid}));if(Ve==null)try{const st=yield*Jn(T.serverStates.transactionQueryTask(j,le.blockbookUtxo.txid));return Ie=s0(T,{txResponse:st}).hex,Ge(),!0}catch(st){T.log("error while processing Blockbook UTXO:",st);const at=`${le.blockbookUtxo.txid}_${le.blockbookUtxo.vout}`;return xe[at]={blockbookUtxo:le.blockbookUtxo,processing:!1,path:le.path,address:le.address,requiredCount:le.requiredCount},!1}else Ie=Ve.hex}break;case gt.WrappedSegwit:if(Ie=le.address.scriptPubkey,le.address.redeemScript==null)throw new Error("Address redeem script not defined, but required for p2sh wrapped segwit utxo processing");ke=le.address.redeemScript;break;case gt.Segwit:Ie=le.address.scriptPubkey;break}return Ge(),!0})}const Jd=(T,B,j,le,xe)=>{var Re;const be=(Re=T[j])!=null?Re:{utxos:[],processing:!1,path:B,full:!1};xe!=null&&be.utxos.push(xe),T[j]=be,be.full=be.utxos.length>=le};function Qd(T){const{pluginInfo:B,publicKey:j}=T,{engineInfo:le}=B,{name:xe}=B.coinInfo,Re=j.publicKeys,be={getPubkey(Me){var Ie;if(Re[Me.format]==null)throw new Error(`wallet tools: xpub with format ${Me.format} does not exist`);return An({xpub:(Ie=Re[Me.format])!=null?Ie:"",coin:xe,type:Ai(Me.format),bip44ChangeIndex:Me.changeIndex,bip44AddressIndex:Me.addressIndex})},getScriptPubkey(Me){const Ie=no(Me,le.scriptTemplates),ke=au(Ie);return Hn({pubkey:be.getPubkey(Me),scriptTemplates:le.scriptTemplates,scriptType:ke})},getScriptPubkeyFromWif(Me,Ie){const ke=Ai(Ie),Ge=au(ke),Ve=Zf({wifKey:Me,coin:xe});[gt.Segwit,gt.WrappedSegwit].includes(ke)&&!Ve.compressed&&(Ve.compressed=!0);const st=wl(Ve);return Hn({pubkey:st,scriptTemplates:le.scriptTemplates,scriptType:Ge})},getAddress(Me){const Ie=no(Me,B.engineInfo.scriptTemplates),{scriptPubkey:ke}=be.getScriptPubkey(Me),Ge=n0(Ie);return Xn({scriptPubkey:ke,addressType:Ge,coin:xe})},addressToScriptPubkey(Me){return Rr({address:Me,coin:xe})},scriptPubkeyToAddress(Me){const{changePath:Ie}=Me,ke=no(Ie,B.engineInfo.scriptTemplates),Ge=n0(ke);return Xn({scriptPubkey:Me.scriptPubkey,addressType:Ge,coin:xe,includeCashaddrPrefix:B.coinInfo.includeCashaddrPrefix})},getPrivateKey(Me){const{path:Ie,xprivKeys:ke}=Me,Ge=ke[Ie.format];if(Ge==null)throw new Error(`wallet tools: xpriv with format ${Ie.format} does not exist`);return Xf({xpriv:Ge,type:Ai(Ie.format),coin:xe,bip44ChangeIndex:Ie.changeIndex,bip44AddressIndex:Ie.addressIndex})},getPrivateKeyEncodingFromWif(Me){return Zf({wifKey:Me,coin:xe})},getScriptAddress({path:Me,scriptTemplate:Ie}){const ke=be.getPubkey(Me),Ge=Ie(ke),{address:Ve,scriptPubkey:st,redeemScript:at}=Zn({coin:xe,scriptPubkey:Ge});if(Ve==null)throw new Error("Failed to derive address for script");return{address:Ve,scriptPubkey:st,redeemScript:at}},signMessageBase64({path:Me,message:Ie,xprivKeys:ke}){const Ge=be.getPrivateKey({path:Me,xprivKeys:ke});return xl(Ie,Ge)}};return be}var ep=gr(8287).Buffer,Um=Object.defineProperty,Hm=Object.defineProperties,zm=Object.getOwnPropertyDescriptors,tp=Object.getOwnPropertySymbols,jm=Object.prototype.hasOwnProperty,Km=Object.prototype.propertyIsEnumerable,rp=(T,B,j)=>B in T?Um(T,B,{enumerable:!0,configurable:!0,writable:!0,value:j}):T[B]=j,Ci=(T,B)=>{for(var j in B||(B={}))jm.call(B,j)&&rp(T,j,B[j]);if(tp)for(var j of tp(B))Km.call(B,j)&&rp(T,j,B[j]);return T},Ri=(T,B)=>Hm(T,zm(B)),Br=(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 Wm(T){return Br(this,null,function*(){const{pluginInfo:B,pluginDisklet:j,emitter:le,engineOptions:xe,io:Re,pluginState:be}=T,{walletLocalDisklet:Me,walletLocalEncryptedDisklet:Ie,log:ke}=xe,{currencyInfo:Ge,engineInfo:Ve,coinInfo:st}=B,at=Ml(xe.userSettings);be.updateServers(at).catch(mt=>{ke.error(mt)});const xt=e0(st.name,st.coinType),bt=x(xt),Pt=ud(B)(T.walletInfo),{privateKeyFormat:Gt,publicKey:rr,walletFormats:dr}=Pt.keys;if(!Ve.formats.includes(Gt)){const mt=`Wallet format is not supported: ${Gt}`;throw ke.error(mt),new Error(mt)}const Kt=Qd({pluginInfo:B,publicKey:rr}),Ut=yield Yp({disklet:j,pluginInfo:B,io:Re,log:T.engineOptions.log}),vt=yield Xh({disklet:Me,emitter:le,log:ke}),Et=yield id({disklet:Me});let Ct;const At=(mt=>Rt=>(Rt!=null&&(mt=Rt),mt))();At(T.engineOptions.seenTxCheckpoint),le.on(Ur.SEEN_TX_CHECKPOINT,mt=>{At(mt)});const It=qd(Ri(Ci({},T),{dataLayer:Et,pluginState:be,seenTxCheckpoint:At,walletTools:Kt,walletInfo:Pt})),Dt={accelerate(mt){return Br(this,null,function*(){var Rt;const{canReplaceByFee:Yt=!1}=Ge;if(!Yt||Gt==="bip32"||Gt==="bip44")return null;const Vt=mt.txid,[nr]=yield Et.fetchTransactions({txId:Vt});if(nr==null||nr.inputs.every(Nr=>Nr.sequence>4294967293)||nr.blockHeight!==0)return null;const qt=ju(nr.hex),ir=Math.round(parseInt(nr.fees)/qt*2),sr=nr.inputs,Sr=yield Promise.all(sr.map((Nr,Kr)=>Br(this,null,function*(){const Qn=yield rg(Et,nr,Kr);return Qn.spent=!1,Qn}))),Cr=Sr.reduce((Nr,Kr)=>Kr.value>Nr.value?Kr:Nr),zr=[],Zr=[];let Fr;for(const Nr of nr.outputs){const Kr=yield Et.fetchAddress(Nr.scriptPubkey);if(Kr==null){zr.push({scriptPubkey:Nr.scriptPubkey,value:parseInt(Nr.amount)});continue}if(Kr.path==null)throw new Error("Expecting path for address");const Qn=no(Kr.path,Ve.scriptTemplates),fo=n0(Qn),{address:gn}=Xn({scriptPubkey:Kr.scriptPubkey,addressType:fo,coin:st.name,redeemScript:Kr.redeemScript});Zr.push(gn),Kr.path.changeIndex===1?Fr=gn:zr.push({scriptPubkey:Nr.scriptPubkey,value:parseInt(Nr.amount)})}const jr=Fr==null?yield It.getFreshAddress({branch:1}):{publicAddress:Fr},Bn=(Rt=jr.segwitAddress)!=null?Rt:jr.publicAddress,Fi=kl(yield Et.fetchUtxos({utxoIds:[]})).filter(Nr=>Nr.txid!==Vt),wn={utxos:[...Sr,...Fi],forceUseUtxo:[Cr],targets:zr,memos:mt.memos,feeRate:ir,coin:st.name,currencyCode:Ge.currencyCode,enableRbf:!0,freshChangeAddress:Bn,subtractFee:!1,log:ke,outputSort:"bip69"},on=(()=>{try{return Fa(wn)}catch(Nr){const Kr=O(Nr);if((Kr==null?void 0:Kr.networkFeeShortage)!=null){let Qn=parseInt(Kr.networkFeeShortage);for(const fo of zr){if(fo.value==null)continue;const gn=Math.min(fo.value,Qn);fo.value-=gn,Qn-=gn}return Fa(wn)}throw Nr}})();on.changeUsed&&Zr.push(Bn);const xn=on.inputs.map(Nr=>Nr.scriptPubkey.toString("hex"));let un="0";for(const Nr of on.outputs){const Kr=Nr.scriptPubkey.toString("hex");(yield Et.fetchAddress(Kr))==null?un=ue.sub(un,Nr.value.toString()):xn.push(Kr)}const Ni=on.fee.toString();un=ue.sub(un,Ni);const Uo={unsignedTx:on.hex,psbt:{base64:on.psbtBase64,inputs:on.inputs,outputs:on.outputs},ourScriptPubkeys:xn,replacedTxid:Vt};return Ri(Ci({},mt),{blockHeight:0,currencyCode:Ge.currencyCode,date:La(),feeRateUsed:{satPerVByte:ir},isSend:!0,nativeAmount:un,networkFee:Ni,otherParams:Uo,ourReceiveAddresses:Zr,parentNetworkFee:void 0,signedTx:"",txid:"",walletId:Pt.id})})},startEngine(){return Br(this,null,function*(){le.emit(Ur.WALLET_BALANCE_CHANGED,Ge.currencyCode,vt.state.balance),be.addEngine(It),yield Ut.start(),yield It.start()})},killEngine(){return Br(this,null,function*(){yield It.stop(),Ut.stop(),be.removeEngine(It)})},getBalance(mt){return vt.state.balance},getBlockHeight(){return vt.state.lastSeenBlockHeight},addCustomToken(mt){return Br(this,null,function*(){return yield Promise.resolve(void 0)})},addGapLimitAddresses(mt){return Br(this,null,function*(){return yield It.addGapLimitAddresses(mt)})},broadcastTx(mt){return Br(this,null,function*(){var Rt,Yt;const{otherParams:Vt}=mt;if(((Rt=Vt==null?void 0:Vt.paymentProtocolInfo)==null?void 0:Rt.payment)!=null&&((Yt=Vt==null?void 0:Vt.paymentProtocolInfo)==null?void 0:Yt.paymentUrl)!=null&&typeof(yield sg(Re.fetch,Vt.paymentProtocolInfo.paymentUrl,Vt.paymentProtocolInfo.payment))>"u")throw new Error(`Error when sending to ${Vt.paymentProtocolInfo.paymentUrl}`);if((yield It.broadcastTx(mt).catch(qt=>{throw String(qt).includes("Error: Blockbook Error: -26: dust")?new Lp:qt}))!==mt.txid)throw new Error("broadcast response txid does not match original");return mt})},changeUserSettings(mt){return Br(this,null,function*(){yield be.updateServers(Ml(mt))})},disableTokens(mt){return Br(this,null,function*(){return yield Promise.resolve(void 0)})},dumpData(){return Br(this,null,function*(){return{walletId:Pt.id.split(" - ")[0],walletType:Pt.type,data:{walletInfo:{pluginType:Ge.pluginId,privateKeyFormat:Gt,walletFormats:dr},metadataState:vt.state,storageState:yield Et.dumpData(),pluginState:be.dumpData()}}})},enableTokens(mt){return Br(this,null,function*(){return yield Promise.resolve(void 0)})},getDisplayPrivateSeed(mt){const Rt=bt(mt);return Rt==null?null:Rt.format==="bip32"?ep.from(Rt.seed,"base64").toString("hex"):Rt.seed},getDisplayPublicSeed(){const mt=rr.publicKeys;return Object.values(mt).filter(Rt=>Rt!=null).join(`
80
- `)},getFreshAddress(mt){return Br(this,null,function*(){const{forceIndex:Rt}=mt;return yield It.getFreshAddress({forceIndex:Rt})})},getNumTransactions(mt){return Et.numTransactions()},getPaymentProtocolInfo(mt){return Br(this,null,function*(){return yield og(mt,Ge.currencyCode,Re.fetch)})},getTransactions(mt){return Br(this,null,function*(){const Rt=kl(yield Et.fetchTransactions({options:mt}));return yield Promise.all(Rt.map(Yt=>Br(this,null,function*(){return yield Ua({walletId:Pt.id,tx:Yt,walletTools:Kt,dataLayer:Et,pluginInfo:B})})))})},isAddressUsed(mt){return Br(this,null,function*(){const Rt=Kt.addressToScriptPubkey(mt),Yt=yield Et.fetchAddress(Rt);if(Yt==null)throw new Error("Address not found in wallet");return Yt.used})},makeSpend(mt){return Br(this,null,function*(){var Rt,Yt,Vt,nr,qt,ir,sr;const Sr=Ct!=null?Ct:Et;Ct!=null&&(Ct=void 0),mt=vv(mt,Ge);const{memos:Cr=[],spendTargets:zr}=mt,Zr=Np((Rt=mt.otherParams)!=null?Rt:{}),Fr=(Yt=Zr.txOptions)!=null?Yt:{},{outputSort:jr,utxoSourceAddress:Bn,forceChangeAddress:Fi}=Zr;let so;if(Bn!=null&&(so=Kt.addressToScriptPubkey(Bn)),Fr.CPFP==null&&zr.length<1)throw new Error("Need to provide Spend Targets");const wn=zr.reduce((Wr,{nativeAmount:En})=>ue.add(Wr,En!=null?En:"0"),"0"),on=(Vt=Fr.utxos)!=null?Vt:kl(yield Sr.fetchUtxos({scriptPubkey:so,utxoIds:[]}));if(ue.gt(wn,`${tg(on)}`)||on.length===0)throw new Dp({tokenId:null});let xn=[];const un=[];for(const Wr of zr){if(Wr.publicAddress==null||Wr.nativeAmount==null)throw new Error("Invalid spend target");if(((nr=Wr.otherParams)==null?void 0:nr.script)!=null){const{script:En}=Wr.otherParams;if(En.type==="replayProtection"){const{publicAddress:uo}=yield It.deriveScriptAddress(En.type);xn.push({address:uo,value:Wr.nativeAmount==null?void 0:parseInt(Wr.nativeAmount)})}}else{if(Wr.publicAddress!=null){const En=Kt.addressToScriptPubkey(Wr.publicAddress);(yield Sr.fetchAddress(En))!=null&&un.push(Wr.publicAddress)}xn.push({address:Wr.publicAddress,value:Wr.nativeAmount==null?void 0:parseInt(Wr.nativeAmount)})}}if(xn.length+Cr.length<1)throw new Error("Need to provide Spend Targets");const Ni=yield It.getFreshAddress({branch:1}),Uo=(qt=Fi!=null?Fi:Ni.segwitAddress)!=null?qt:Ni.publicAddress,Nr=parseInt(yield Ut.getRate(mt));let Kr;if(Fr.CPFP!=null){const[Wr]=yield Sr.fetchTransactions({txId:Fr.CPFP});if(Wr==null)throw new Error("transaction not found");const En=[];for(const uo of Wr.ourOuts){const[ja]=yield Sr.fetchUtxos({utxoIds:[uo]});ja!=null&&En.push(ja)}Kr=En.reduce((uo,ja)=>ue.gt(uo.value,ja.value)?uo:ja),xn=[]}const Qn=Ge.canReplaceByFee===!0?(sr=(ir=mt.enableRbf)!=null?ir:Zr.enableRbf)!=null?sr:!0:!1;ke.warn(`spend: Using fee rate ${Nr} sat/B`);const fo=Fr.subtractFee!=null?Fr.subtractFee:!1,gn=Fa({utxos:on,forceUseUtxo:Kr!=null?[Kr]:[],targets:xn,memos:Cr,feeRate:Nr,coin:st.name,currencyCode:Ge.currencyCode,enableRbf:Qn,freshChangeAddress:Uo,subtractFee:fo,log:ke,outputSort:jr});gn.changeUsed&&un.push(Uo);let za="0";const pp=gn.inputs.map(Wr=>Wr.scriptPubkey.toString("hex"));for(const Wr of gn.outputs){const En=Wr.scriptPubkey.toString("hex");(yield Sr.fetchAddress(En))==null?za=ue.sub(za,Wr.value.toString()):pp.push(En)}const l0=gn.fee.toString();za=ue.sub(za,l0);const f1={unsignedTx:gn.hex,psbt:{base64:gn.psbtBase64,inputs:gn.inputs,outputs:gn.outputs},edgeSpendInfo:mt,ourScriptPubkeys:pp};return{blockHeight:0,currencyCode:Ge.currencyCode,date:La(),feeRateUsed:{satPerVByte:Nr},isSend:!0,memos:Cr,nativeAmount:za,networkFee:l0,networkFees:[{tokenId:null,nativeAmount:l0}],otherParams:f1,ourReceiveAddresses:un,signedTx:"",tokenId:null,txid:"",walletId:Pt.id}})},resyncBlockchain(){return Br(this,null,function*(){yield Dt.killEngine(),yield Et.clearAll(),yield be.clearCache(),yield vt.clear(),yield Ut.clearCache(),yield be.refreshServers(),yield Dt.startEngine()})},saveTx(mt){return Br(this,null,function*(){var Rt,Yt;const Vt=(Rt=mt.otherParams)==null?void 0:Rt.replacedTxid;if(Vt!=null){const[ir]=yield Et.fetchTransactions({txId:Vt});if(ir!=null){ir.blockHeight=-1,yield Et.saveTransaction({tx:ir});const sr=yield Ua({dataLayer:Et,pluginInfo:B,tx:ir,walletId:Pt.id,walletTools:Kt});le.emit(Ur.TRANSACTIONS,[{isNew:!1,transaction:sr}])}}const nr=Lv(mt);yield Et.saveTransaction({tx:nr,scriptPubkeys:(Yt=mt.otherParams)==null?void 0:Yt.ourScriptPubkeys});const qt=yield gg(Ve,Et,nr);yield It.processUtxos(qt)})},signMessage(mt,Rt,Yt){return Br(this,null,function*(){const Vt=Rp(Yt.otherParams),{publicAddress:nr}=Vt,qt=Kt.addressToScriptPubkey(nr),ir=yield Et.fetchAddress(qt);if((ir==null?void 0:ir.path)==null)throw new Error("Missing data-layer address to sign with");const sr=bt(Rt);if(sr==null)throw new Error("Cannot sign a message for a read-only wallet");const Sr=yield pd({privateKey:sr,walletLocalEncryptedDisklet:Ie,coin:st.name});return yield Kt.signMessageBase64({path:ir==null?void 0:ir.path,message:mt,xprivKeys:Sr})})},signTx(mt,Rt){return Br(this,null,function*(){var Yt,Vt,nr;const qt=mt.otherParams;if(qt==null)throw new Error("Invalid transaction data");const{psbt:ir,edgeSpendInfo:sr}=qt;if(ir==null)throw new Error("Invalid transaction data");const Sr=bt(Rt);if(Sr==null)throw new Error("Cannot sign a transaction for a read-only wallet");const Cr=yield pd({privateKey:Sr,walletLocalEncryptedDisklet:Ie,coin:st.name}),zr=yield Br(this,null,function*(){return(sr==null?void 0:sr.privateKeys)!=null?sr.privateKeys.map(jr=>Kt.getPrivateKeyEncodingFromWif(jr)):yield Promise.all(ir.inputs.map(jr=>Br(this,[jr],function*({hash:Bn,index:Fi}){const so=ep.from(Bn).reverse().toString("hex"),[wn]=yield Et.fetchTransactions({txId:so});if(wn==null)throw new Error("Unable to find previous transaction data for input");const on=wn.outputs.find(Uo=>Uo.n===Fi);if(on==null)throw new Error("Unable to find prevout in transaction");const{scriptPubkey:xn}=on,un=yield Et.fetchAddress(xn);if(un==null)throw new Error(`Address for scriptPubkey '${xn}' not found`);if(un.path==null)throw new Error(`Invalid scriptPubkey ${un.scriptPubkey}; Missing path`);return{hex:Kt.getPrivateKey({path:un.path,xprivKeys:Cr}),compressed:!0}})))}),Zr=yield vp({coin:st.name,feeInfo:Ut.feeInfo,privateKeyEncodings:zr,psbtBase64:ir.base64});mt.txid=Zr.id,mt.signedTx=Zr.hex;const{paymentProtocolInfo:Fr}=(nr=(Vt=(Yt=mt.otherParams)==null?void 0:Yt.edgeSpendInfo)==null?void 0:Vt.otherParams)!=null?nr:{};if(Fr!=null){const jr=ag(mt.signedTx,mt.currencyCode);mt.otherParams==null&&(mt.otherParams={}),Object.assign(mt.otherParams,{paymentProtocolInfo:Ri(Ci({},Fr),{payment:jr})})}return mt.date=La(),mt})},sweepPrivateKeys(mt){return Br(this,null,function*(){var Rt;const Yt=Ve.formats,Vt={id:Pt.id,type:Pt.type,keys:{privateKeyFormat:Pt.keys.privateKeyFormat,walletFormats:Yt,publicKey:{publicKeys:{}}}},nr=(Rt=mt.privateKeys)!=null?Rt:[];if(nr.length<1)throw new Error("No private keys given");const qt=(0,Sl.cQ)(),ir=(0,Sl.cQ)(),sr=new Vh,Sr={disklet:qt,emitter:sr,log:ke},Cr=yield Xh(Sr),zr=yield id(Sr),Zr=Qd({pluginInfo:B,publicKey:Vt.keys.publicKey}),Fr=new Promise((Bn,Fi)=>{sr.on(Ur.ADDRESSES_CHECKED,so=>Br(this,null,function*(){if(so===1)try{yield jr.stop();const wn=yield zr.fetchUtxos({utxoIds:[]});if(wn===null||wn.length<1)throw new Error("Private key has no funds");const on=yield this.getFreshAddress({tokenId:null}),xn=Cr.state.balance,un={utxos:wn,subtractFee:!0};mt.spendTargets=[{publicAddress:on.publicAddress,nativeAmount:xn}],mt.otherParams=Ri(Ci({},mt.otherParams),{txOptions:un}),Ct=zr;const Ni=yield Dt.makeSpend(mt);Bn(Ni)}catch(wn){Fi(wn)}}))}),jr=qd(Ri(Ci({},T),{dataLayer:zr,emitter:sr,engineOptions:Ri(Ci({},T.engineOptions),{walletLocalDisklet:qt,walletLocalEncryptedDisklet:ir}),pluginInfo:Ri(Ci({},B),{engineInfo:Ri(Ci({},Ve),{gapLimit:0})}),seenTxCheckpoint:()=>"0",walletTools:Zr,walletInfo:Vt}));return yield jr.loadWifs(nr),yield jr.start(),yield Fr})},otherMethods:{}};return Dt})}var np=gr(8287).Buffer,No=(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 Gm(T,B){const{currencyInfo:j,engineInfo:le,coinInfo:xe}=B,Re=e0(xe.name,xe.coinType),be=C(Re),Me=ud(B);return{checkPublicKey(ke){return No(this,null,function*(){const Ge=x(sd)(ke);if(Ge==null)return!1;const Ve=fd(Ge);return iu(le,Ve).every(at=>Ge.publicKeys[at]!=null)})},createPrivateKey(ke,Ge){return No(this,null,function*(){var Ve,st,at,xt;const Pt={imported:!1,seed:ce.VF(np.from(T.random(32))),format:(st=(Ve=Ge==null?void 0:Ge.format)!=null?Ve:le.formats[0])!=null?st:"bip44",coinType:(xt=(at=Ge==null?void 0:Ge.coinType)!=null?at:xe.coinType)!=null?xt:0};return be(Pt)})},importPrivateKey(ke,Ge){return No(this,null,function*(){var Ve,st,at,xt,bt;if(!ce.JB(ke))throw np.from(ke,"base64").length===32?new Error("Import for Airbitz seeds is unsupported."):new Error("Invalid mnemonic");const Gt={imported:!0,seed:ke,format:(at=(st=Ge==null?void 0:Ge.format)!=null?st:(Ve=le.formats)==null?void 0:Ve[0])!=null?at:"bip44",coinType:(bt=(xt=Ge==null?void 0:Ge.coinType)!=null?xt:xe.coinType)!=null?bt:0};return be(Gt)})},derivePublicKey(ke){return No(this,null,function*(){return Me(ke).keys.publicKey})},parseUri(ke){return No(this,null,function*(){const Ge=ke.toLocaleLowerCase().startsWith(`${xe.name}://`);Ge&&(ke=ke.replace("//",""));const Ve=i0()(ke,{},!0),st=Ve.protocol.replace(":","").toLowerCase();if(st!==""&&st!==j.pluginId&&st!==le.uriPrefix&&st!=="pay")throw new Error("InvalidUriError");const{pathname:at,query:xt}=Ve;if(at===""&&xt.r==null)throw new Error("InvalidUriError");const bt={};if(at!==""){const rr=eg({pathname:Ve.pathname,coin:xe.name});if(rr==null)throw new Error("InvalidUriError");Object.assign(bt,rr)}const Pt={};xt.label!=null&&(Pt.name=xt.label),xt.message!=null&&(Pt.notes=xt.message),xt.category!=null&&(Pt.category=xt.category),xt.r!=null&&(bt.paymentProtocolUrl=xt.r),Ge&&(Pt.gateway=!0),Object.assign(bt,{metadata:Pt});const Gt=j.denominations.find(({name:rr})=>rr===j.currencyCode);if(Gt!=null&&xt.amount!=null){const{multiplier:rr="1"}=Gt,dr=ue.mul(xt.amount,rr.toString());bt.currencyCode=j.currencyCode,bt.nativeAmount=ue.toFixed(dr,0,0)}return bt})},encodeUri(ke,Ge){return No(this,null,function*(){var Ve,st,at;let xt=ke.publicAddress;if(xt==="")throw new Error("InvalidPublicAddressError");((Ve=xe.prefixes.cashaddr)==null?void 0:Ve.some(Gt=>xt.startsWith(`${Gt}:`)))===!0&&(xt=xt.split(":")[1]);const bt=[];if(ke.nativeAmount!=null){const Gt=(st=ke.currencyCode)!=null?st:j.currencyCode,rr=j.denominations.find(({name:Kt})=>Kt===Gt);if(rr==null)throw new Error("InvalidDenominationError");const dr=ue.div(ke.nativeAmount,rr.multiplier,8);bt.push(`amount=${dr}`)}ke.label!=null&&bt.push(`label=${ke.label}`),ke.message!=null&&bt.push(`message=${ke.message}`);const Pt=ke.metadata;return Pt!=null&&(Pt.name!=null&&bt.push(`label=${Pt.name}`),Pt.notes!=null&&bt.push(`message=${Pt.notes}`)),bt.length>0?xd.serialize({scheme:(at=le.uriPrefix)!=null?at:j.pluginId,path:xt,query:bt.join("&")}):xt})},getSplittableTypes(ke){var Ge;const{keys:{format:Ve="bip32"}={}}=ke;return((Ge=le.forks)!=null?Ge:[]).filter(at=>nv(at).includes(Ve)).map(at=>`wallet:${at}`)}}}const Vm=E({serverUrl:p,serverScore:m,responseTime:m,numResponseTimes:m}),ip=E(Vm),qm=E({customServers:ip,enableCustomServers:x(S,!1),internalServers:ip}),Lo=999999999,du=500,f0=-100,op=-100,ap=-10;class Xm{constructor(B){const{log:j,onDirtyServer:le=()=>{}}=B;this.log=j,this.scoresLastLoaded=Date.now(),this.lastScoreUpTime=Date.now(),this.onDirtyServer=le}serverScoresLoad(B,j=[]){for(const le of j)if(B[le]===void 0){const xe={serverUrl:le,serverScore:0,responseTime:Lo,numResponseTimes:0};B[le]=xe}for(const le in B){const xe=B[le];let Re=!1;for(const Ie of j)if(Ie===le){Re=!0;break}let be=xe.serverScore;Re?be<ap&&(be=ap):be>op&&(be=op),this.scoresLastLoaded===0&&(be=Math.min(be,du-100)),le.startsWith("ws")&&be>0&&(be=0,xe.responseTime=Lo),Td(le).length>0&&(be=be-(du+f0)),xe.serverScore=be,this.onDirtyServer(le)}}clearServerScoreTimes(){this.scoresLastLoaded=Date.now(),this.lastScoreUpTime=Date.now()}printServers(B){this.log("**** printServers ****");const j=[];for(const le in B)j.push(B[le]);j.sort((le,xe)=>xe.serverScore-le.serverScore);for(const le of j){const xe=le.serverScore.toString(),Re=le.responseTime.toString(),be=le.numResponseTimes.toString(),Me=le.serverUrl;this.log(`ServerInfo ${xe} ${Re}ms ${be} ${Me}`)}this.log("**************************")}serverScoreUp(B,j,le,xe=1){const Re=B[j];Re.serverScore+=xe,Re.serverScore>du&&(Re.serverScore=du),this.lastScoreUpTime=Date.now(),le!==0&&this.setResponseTime(B,j,le),this.log(`${j}: score UP to ${Re.serverScore} ${le}ms`),this.onDirtyServer(j)}serverScoreDown(B,j,le=10){if(Date.now()-this.lastScoreUpTime>6e4){this.log(`${j}: score DOWN cancelled`);return}const Re=B[j];Re.serverScore-=le,Re.serverScore<f0&&(Re.serverScore=f0),Re.numResponseTimes===0&&this.setResponseTime(B,j,9999),this.log(`${j}: score DOWN to ${Re.serverScore}`),this.onDirtyServer(j)}setResponseTime(B,j,le){const xe=B[j];xe.numResponseTimes++;const Re=xe.responseTime;let be=0;Lo===Re?be=le:xe.numResponseTimes%10===0?be=(Re+le*4)/5:be=(Re+le)/2,xe.responseTime=be,this.onDirtyServer(j)}getServers(B,j,le=[]){if(B==null||Object.keys(B).length===0)return[];let xe=[],Re=[];for(const at in B){const xt=B[at];xe.push(xt),xt.responseTime===Lo&&xt.serverScore===0&&Re.push(xt)}if(xe.length===0)return[];if(le.length>0){const at=xt=>{for(const bt of le)if(typeof bt=="string"&&xt.serverUrl.indexOf(bt)===0||bt instanceof RegExp&&bt.test(xt.serverUrl))return!0;return!1};xe=xe.filter(at),Re=Re.filter(at)}xe.sort((at,xt)=>xt.serverScore-at.serverScore);const be=xe[0];let Me=0,Ie=0;for(let at=0;at<xe.length;at++){const xt=xe[at];xt.serverScore<be.serverScore-100||xt.serverScore<5||xt.responseTime>=Lo||(Me++,!(Me<j)&&(Me>=xe.length/2||(Ie=at)))}let ke=xe.slice(0,Ie);ke.sort((at,xt)=>at.responseTime-xt.responseTime),ke=ke.concat(xe.slice(Ie));const Ge=[];let Ve=0,st=0;for(const at of ke)if(Ve++,Ge.push(at.serverUrl),at.responseTime===Lo&&at.serverScore===0&&st++,Ve>=j||Ve>=j/2&&st===0&&Re.length>=j-Ve)break;if(st===0){for(const at of Re)if(Ge.unshift(at.serverUrl),Ve++,Ve>=j)break}return Ge}removeServers(B,j){for(const le of j)delete B[le]}}var Zm=Object.defineProperty,Ym=Object.defineProperties,$m=Object.getOwnPropertyDescriptors,sp=Object.getOwnPropertySymbols,Jm=Object.prototype.hasOwnProperty,Qm=Object.prototype.propertyIsEnumerable,fp=(T,B,j)=>B in T?Zm(T,B,{enumerable:!0,configurable:!0,writable:!0,value:j}):T[B]=j,e1=(T,B)=>{for(var j in B||(B={}))Jm.call(B,j)&&fp(T,j,B[j]);if(sp)for(var j of sp(B))Qm.call(B,j)&&fp(T,j,B[j]);return T},t1=(T,B)=>Ym(T,$m(B)),Do=(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 u0="serverCache.json";function r1(T){const{defaultSettings:B,log:j,pluginDisklet:le,pluginId:xe}=T;let Re=[];const be=t(le);let Me={customServers:{},enableCustomServers:B.enableCustomServers,internalServers:{}},Ie=!1;const ke=()=>{const bt=Me.enableCustomServers?"customServers":"internalServers";return Me[bt]},Ge=()=>Do(this,null,function*(){st.printServers(ke()),Ie&&(yield be.setJson(u0,Me).catch(bt=>{j(`${xe} - ${JSON.stringify(bt.toString())}`)}),Ie=!1,st.scoresLastLoaded=Date.now(),j(`${xe} - Saved server cache`))}),Ve=bt=>{Ie=!0;for(const Pt of Re)if(Pt.processedPercent===1&&Pt.getServerList().includes(bt)){Ge().catch(rr=>{j(`${xe} - ${JSON.stringify(rr.toString())}`)});return}},st=new Xm({log:j,onDirtyServer:Ve}),at=()=>Do(this,null,function*(){if(xt.infoPayload==null)return j.warn("info server list list empty"),[];const bt=Object.keys(xt.infoPayload.blockbookServers);return j.warn("info server list",bt),bt}),xt={infoPayload:T.infoPayload,addEngine(bt){Re.push(bt)},removeEngine(bt){Re=Re.filter(Pt=>Pt!==bt)},dumpData(){return{"pluginState.servers_":ke()}},load(){return Do(this,null,function*(){try{Me=qm(yield be.getJson(u0))}catch(bt){j(`${xe}: Failed to load server cache: ${JSON.stringify(bt)}`)}return xt.refreshServers().catch(bt=>{j(`${xe} - ${JSON.stringify(bt.toString())}`)}),this})},serverScoreDown(bt){st.serverScoreDown(ke(),bt)},serverScoreUp(bt,Pt){st.serverScoreUp(ke(),bt,Pt)},clearCache(){return Do(this,null,function*(){st.clearServerScoreTimes(),Ie=!0,yield be.delete(u0)})},getLocalServers(bt,Pt=[]){return st.getServers(ke(),bt,Pt)},refreshServers(bt){return Do(this,null,function*(){var Pt;const Gt=ke();let rr;if(Me.enableCustomServers)rr=(Pt=bt!=null?bt:Object.keys(Me.customServers))!=null?Pt:B.blockbookServers;else{const dr=yield at();rr=dr.length>0?dr:B.blockbookServers;const Kt=Object.keys(Gt).filter(Ut=>!rr.includes(Ut));st.removeServers(Gt,Kt)}st.serverScoresLoad(Gt,rr),yield Ge();for(const dr of Re)dr.refillServers()})},updateServers(bt){return Do(this,null,function*(){const Pt=()=>{const Kt=Object.keys(Me.customServers),Ut=new Set(bt.blockbookServers),vt=new Set(Kt);if(Ut.size!==vt.size)return!1;for(const Et of bt.blockbookServers)if(!vt.has(Et))return!1;return!0};if(bt.enableCustomServers===Me.enableCustomServers&&Pt())return;const Gt=bt.enableCustomServers&&bt.blockbookServers.length!==0,rr=[],dr=[];for(const Kt of Re)rr.push(Kt),Kt.setServerList([]),dr.push(Kt.stop());yield Promise.all(dr),st.clearServerScoreTimes(),Me=t1(e1({},Me),{enableCustomServers:Gt,customServers:{}}),Ie=!0,yield Ge(),yield xt.refreshServers(bt.blockbookServers);for(const Kt of rr)yield Kt.start()})}};return xt}var n1=Object.defineProperty,up=Object.getOwnPropertySymbols,i1=Object.prototype.hasOwnProperty,o1=Object.prototype.propertyIsEnumerable,cp=(T,B,j)=>B in T?n1(T,B,{enumerable:!0,configurable:!0,writable:!0,value:j}):T[B]=j,a1=(T,B)=>{for(var j in B||(B={}))i1.call(B,j)&&cp(T,j,B[j]);if(up)for(var j of up(B))o1.call(B,j)&&cp(T,j,B[j]);return T},c0=(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 lp=!1;function s1(T,B){const{currencyInfo:j}=B,{initOptions:le,io:xe,log:Re,nativeIo:be,pluginDisklet:Me}=T,Ie=Gm(xe,B),{defaultSettings:ke,pluginId:Ge,currencyCode:Ve}=j,st=r1({defaultSettings:Ml(ke),currencyCode:Ve,infoPayload:x(Hh)(T.infoPayload),io:xe,log:Re,pluginId:Ge,pluginDisklet:Me});if(!lp){const{memletConfig:xt}=be["edge-currency-plugins"];xt!=null&&(lp=!0,a(xt))}return{currencyInfo:j,makeCurrencyEngine(xt,bt){return c0(this,null,function*(){const Pt=tv(bt.callbacks),Gt={walletInfo:xt,pluginInfo:B,pluginDisklet:Me,currencyTools:Ie,initOptions:Cp(le),io:xe,emitter:Pt,engineOptions:a1({},bt),pluginState:st};return yield Wm(Gt)})},makeCurrencyTools(){return c0(this,null,function*(){return st.load().catch(xt=>{throw xt}),Ie})},updateInfoPayload(xt){return c0(this,null,function*(){try{st.infoPayload=Hh(xt)}catch{Re.warn("invalid infoPayload",xt)}})}}}var hp;const dp={};for(const T of Oo)dp[T.currencyInfo.pluginId]=B=>s1(B,T);typeof window<"u"&&((hp=window.addEdgeCorePlugins)==null||hp.call(window,dp));const pb=null})()})();})();
80
+ `)},getFreshAddress(mt){return Br(this,null,function*(){const{forceIndex:Rt}=mt;return yield It.getFreshAddress({forceIndex:Rt})})},getNumTransactions(mt){return Et.numTransactions()},getPaymentProtocolInfo(mt){return Br(this,null,function*(){return yield og(mt,Ge.currencyCode,Re.fetch)})},getTransactions(mt){return Br(this,null,function*(){const Rt=kl(yield Et.fetchTransactions({options:mt}));return yield Promise.all(Rt.map(Yt=>Br(this,null,function*(){return yield Ua({walletId:Pt.id,tx:Yt,walletTools:Kt,dataLayer:Et,pluginInfo:B})})))})},isAddressUsed(mt){return Br(this,null,function*(){const Rt=Kt.addressToScriptPubkey(mt),Yt=yield Et.fetchAddress(Rt);if(Yt==null)throw new Error("Address not found in wallet");return Yt.used})},makeSpend(mt){return Br(this,null,function*(){var Rt,Yt,Vt,nr,qt,ir,sr;const Sr=Ct!=null?Ct:Et;Ct!=null&&(Ct=void 0),mt=vv(mt,Ge);const{memos:Cr=[],spendTargets:zr}=mt,Zr=Np((Rt=mt.otherParams)!=null?Rt:{}),Fr=(Yt=Zr.txOptions)!=null?Yt:{},{outputSort:jr,utxoSourceAddress:Bn,forceChangeAddress:Fi}=Zr;let so;if(Bn!=null&&(so=Kt.addressToScriptPubkey(Bn)),Fr.CPFP==null&&zr.length<1)throw new Error("Need to provide Spend Targets");const wn=zr.reduce((Wr,{nativeAmount:En})=>ue.add(Wr,En!=null?En:"0"),"0"),on=(Vt=Fr.utxos)!=null?Vt:kl(yield Sr.fetchUtxos({scriptPubkey:so,utxoIds:[]}));if(ue.gt(wn,`${tg(on)}`)||on.length===0)throw new Dp({tokenId:null});let xn=[];const un=[];for(const Wr of zr){if(Wr.publicAddress==null||Wr.nativeAmount==null)throw new Error("Invalid spend target");if(((nr=Wr.otherParams)==null?void 0:nr.script)!=null){const{script:En}=Wr.otherParams;if(En.type==="replayProtection"){const{publicAddress:uo}=yield It.deriveScriptAddress(En.type);xn.push({address:uo,value:Wr.nativeAmount==null?void 0:parseInt(Wr.nativeAmount)})}}else{if(Wr.publicAddress!=null){const En=Kt.addressToScriptPubkey(Wr.publicAddress);(yield Sr.fetchAddress(En))!=null&&un.push(Wr.publicAddress)}xn.push({address:Wr.publicAddress,value:Wr.nativeAmount==null?void 0:parseInt(Wr.nativeAmount)})}}if(xn.length+Cr.length<1)throw new Error("Need to provide Spend Targets");const Ni=yield It.getFreshAddress({branch:1}),Uo=(qt=Fi!=null?Fi:Ni.segwitAddress)!=null?qt:Ni.publicAddress,Nr=parseInt(yield Ut.getRate(mt));let Kr;if(Fr.CPFP!=null){const[Wr]=yield Sr.fetchTransactions({txId:Fr.CPFP});if(Wr==null)throw new Error("transaction not found");const En=[];for(const uo of Wr.ourOuts){const[ja]=yield Sr.fetchUtxos({utxoIds:[uo]});ja!=null&&En.push(ja)}Kr=En.reduce((uo,ja)=>ue.gt(uo.value,ja.value)?uo:ja),xn=[]}const Qn=Ge.canReplaceByFee===!0?(sr=(ir=mt.enableRbf)!=null?ir:Zr.enableRbf)!=null?sr:!0:!1;ke.warn(`spend: Using fee rate ${Nr} sat/B`);const fo=Fr.subtractFee!=null?Fr.subtractFee:!1,gn=Fa({utxos:on,forceUseUtxo:Kr!=null?[Kr]:[],targets:xn,memos:Cr,feeRate:Nr,coin:st.name,currencyCode:Ge.currencyCode,enableRbf:Qn,freshChangeAddress:Uo,subtractFee:fo,log:ke,outputSort:jr});gn.changeUsed&&un.push(Uo);let za="0";const pp=gn.inputs.map(Wr=>Wr.scriptPubkey.toString("hex"));for(const Wr of gn.outputs){const En=Wr.scriptPubkey.toString("hex");(yield Sr.fetchAddress(En))==null?za=ue.sub(za,Wr.value.toString()):pp.push(En)}const l0=gn.fee.toString();za=ue.sub(za,l0);const f1={unsignedTx:gn.hex,psbt:{base64:gn.psbtBase64,inputs:gn.inputs,outputs:gn.outputs},edgeSpendInfo:mt,ourScriptPubkeys:pp};return{blockHeight:0,currencyCode:Ge.currencyCode,date:La(),feeRateUsed:{satPerVByte:Nr},isSend:!0,memos:Cr,nativeAmount:za,networkFee:l0,networkFees:[{tokenId:null,nativeAmount:l0}],otherParams:f1,ourReceiveAddresses:un,signedTx:"",tokenId:null,txid:"",walletId:Pt.id}})},resyncBlockchain(){return Br(this,null,function*(){yield Dt.killEngine(),yield Et.clearAll(),yield be.clearCache(),yield vt.clear(),yield Ut.clearCache(),yield be.refreshServers(),yield Dt.startEngine()})},saveTx(mt){return Br(this,null,function*(){var Rt,Yt;const Vt=(Rt=mt.otherParams)==null?void 0:Rt.replacedTxid;if(Vt!=null){const[ir]=yield Et.fetchTransactions({txId:Vt});if(ir!=null){ir.blockHeight=-1,yield Et.saveTransaction({tx:ir});const sr=yield Ua({dataLayer:Et,pluginInfo:B,tx:ir,walletId:Pt.id,walletTools:Kt});le.emit(Ur.TRANSACTIONS,[{isNew:!1,transaction:sr}])}}const nr=Lv(mt);yield Et.saveTransaction({tx:nr,scriptPubkeys:(Yt=mt.otherParams)==null?void 0:Yt.ourScriptPubkeys});const qt=yield gg(Ve,Et,nr);yield It.processUtxos(qt)})},signMessage(mt,Rt,Yt){return Br(this,null,function*(){const Vt=Rp(Yt.otherParams),{publicAddress:nr}=Vt,qt=Kt.addressToScriptPubkey(nr),ir=yield Et.fetchAddress(qt);if((ir==null?void 0:ir.path)==null)throw new Error("Missing data-layer address to sign with");const sr=bt(Rt);if(sr==null)throw new Error("Cannot sign a message for a read-only wallet");const Sr=yield pd({privateKey:sr,walletLocalEncryptedDisklet:Ie,coin:st.name});return yield Kt.signMessageBase64({path:ir==null?void 0:ir.path,message:mt,xprivKeys:Sr})})},signTx(mt,Rt){return Br(this,null,function*(){var Yt,Vt,nr;const qt=mt.otherParams;if(qt==null)throw new Error("Invalid transaction data");const{psbt:ir,edgeSpendInfo:sr}=qt;if(ir==null)throw new Error("Invalid transaction data");const Sr=bt(Rt);if(Sr==null)throw new Error("Cannot sign a transaction for a read-only wallet");const Cr=yield pd({privateKey:Sr,walletLocalEncryptedDisklet:Ie,coin:st.name}),zr=yield Br(this,null,function*(){return(sr==null?void 0:sr.privateKeys)!=null?sr.privateKeys.map(jr=>Kt.getPrivateKeyEncodingFromWif(jr)):yield Promise.all(ir.inputs.map(jr=>Br(this,[jr],function*({hash:Bn,index:Fi}){const so=ep.from(Bn).reverse().toString("hex"),[wn]=yield Et.fetchTransactions({txId:so});if(wn==null)throw new Error("Unable to find previous transaction data for input");const on=wn.outputs.find(Uo=>Uo.n===Fi);if(on==null)throw new Error("Unable to find prevout in transaction");const{scriptPubkey:xn}=on,un=yield Et.fetchAddress(xn);if(un==null)throw new Error(`Address for scriptPubkey '${xn}' not found`);if(un.path==null)throw new Error(`Invalid scriptPubkey ${un.scriptPubkey}; Missing path`);return{hex:Kt.getPrivateKey({path:un.path,xprivKeys:Cr}),compressed:!0}})))}),Zr=yield vp({coin:st.name,feeInfo:Ut.feeInfo,privateKeyEncodings:zr,psbtBase64:ir.base64});mt.txid=Zr.id,mt.signedTx=Zr.hex;const{paymentProtocolInfo:Fr}=(nr=(Vt=(Yt=mt.otherParams)==null?void 0:Yt.edgeSpendInfo)==null?void 0:Vt.otherParams)!=null?nr:{};if(Fr!=null){const jr=ag(mt.signedTx,mt.currencyCode);mt.otherParams==null&&(mt.otherParams={}),Object.assign(mt.otherParams,{paymentProtocolInfo:Ri(Ci({},Fr),{payment:jr})})}return mt.date=La(),mt})},sweepPrivateKeys(mt){return Br(this,null,function*(){var Rt;const Yt=Ve.formats,Vt={id:Pt.id,type:Pt.type,keys:{privateKeyFormat:Pt.keys.privateKeyFormat,walletFormats:Yt,publicKey:{publicKeys:{}}}},nr=(Rt=mt.privateKeys)!=null?Rt:[];if(nr.length<1)throw new Error("No private keys given");const qt=(0,Sl.cQ)(),ir=(0,Sl.cQ)(),sr=new Vh,Sr={disklet:qt,emitter:sr,log:ke},Cr=yield Xh(Sr),zr=yield id(Sr),Zr=Qd({pluginInfo:B,publicKey:Vt.keys.publicKey}),Fr=new Promise((Bn,Fi)=>{sr.on(Ur.ADDRESSES_CHECKED,so=>Br(this,null,function*(){if(so===1)try{yield jr.stop();const wn=yield zr.fetchUtxos({utxoIds:[]});if(wn===null||wn.length<1)throw new Error("Private key has no funds");const on=yield this.getFreshAddress({tokenId:null}),xn=Cr.state.balance,un={utxos:wn,subtractFee:!0};mt.spendTargets=[{publicAddress:on.publicAddress,nativeAmount:xn}],mt.otherParams=Ri(Ci({},mt.otherParams),{txOptions:un}),Ct=zr;const Ni=yield Dt.makeSpend(mt);Bn(Ni)}catch(wn){Fi(wn)}}))}),jr=qd(Ri(Ci({},T),{dataLayer:zr,emitter:sr,engineOptions:Ri(Ci({},T.engineOptions),{walletLocalDisklet:qt,walletLocalEncryptedDisklet:ir}),pluginInfo:Ri(Ci({},B),{engineInfo:Ri(Ci({},Ve),{gapLimit:0})}),seenTxCheckpoint:()=>"0",walletTools:Zr,walletInfo:Vt}));return yield jr.loadWifs(nr),yield jr.start(),yield Fr})},otherMethods:{}};return Dt})}var np=gr(8287).Buffer,No=(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 Gm(T,B){const{currencyInfo:j,engineInfo:le,coinInfo:xe}=B,Re=e0(xe.name,xe.coinType),be=C(Re),Me=ud(B);return{checkPublicKey(ke){return No(this,null,function*(){const Ge=x(sd)(ke);if(Ge==null)return!1;const Ve=fd(Ge);return iu(le,Ve).every(at=>Ge.publicKeys[at]!=null)})},createPrivateKey(ke,Ge){return No(this,null,function*(){var Ve,st,at,xt;const Pt={imported:!1,seed:ce.VF(np.from(T.random(32))),format:(st=(Ve=Ge==null?void 0:Ge.format)!=null?Ve:le.formats[0])!=null?st:"bip44",coinType:(xt=(at=Ge==null?void 0:Ge.coinType)!=null?at:xe.coinType)!=null?xt:0};return be(Pt)})},importPrivateKey(ke,Ge){return No(this,null,function*(){var Ve,st,at,xt,bt;if(!ce.JB(ke))throw np.from(ke,"base64").length===32?new Error("Import for Airbitz seeds is unsupported."):new Error("Invalid mnemonic");const Gt={imported:!0,seed:ke,format:(at=(st=Ge==null?void 0:Ge.format)!=null?st:(Ve=le.formats)==null?void 0:Ve[0])!=null?at:"bip44",coinType:(bt=(xt=Ge==null?void 0:Ge.coinType)!=null?xt:xe.coinType)!=null?bt:0};return be(Gt)})},derivePublicKey(ke){return No(this,null,function*(){return Me(ke).keys.publicKey})},parseUri(ke){return No(this,null,function*(){const Ge=ke.toLocaleLowerCase().startsWith(`${xe.name}://`);Ge&&(ke=ke.replace("//",""));const Ve=i0()(ke,{},!0),st=Ve.protocol.replace(":","").toLowerCase();if(st!==""&&st!==j.pluginId&&st!==le.uriPrefix&&st!=="pay")throw new Error("InvalidUriError");const{pathname:at,query:xt}=Ve;if(at===""&&xt.r==null)throw new Error("InvalidUriError");const bt={};if(at!==""){const rr=eg({pathname:Ve.pathname,coin:xe.name});if(rr==null)throw new Error("InvalidUriError");Object.assign(bt,rr)}const Pt={};xt.label!=null&&(Pt.name=xt.label),xt.message!=null&&(Pt.notes=xt.message),xt.category!=null&&(Pt.category=xt.category),xt.r!=null&&(bt.paymentProtocolUrl=xt.r),Ge&&(Pt.gateway=!0),Object.assign(bt,{metadata:Pt});const Gt=j.denominations.find(({name:rr})=>rr===j.currencyCode);if(Gt!=null&&xt.amount!=null){const{multiplier:rr="1"}=Gt,dr=ue.mul(xt.amount,rr.toString());bt.currencyCode=j.currencyCode,bt.nativeAmount=ue.toFixed(dr,0,0)}return bt})},encodeUri(ke,Ge){return No(this,null,function*(){var Ve,st,at;let xt=ke.publicAddress;if(xt==="")throw new Error("InvalidPublicAddressError");((Ve=xe.prefixes.cashaddr)==null?void 0:Ve.some(Gt=>xt.startsWith(`${Gt}:`)))===!0&&(xt=xt.split(":")[1]);const bt=[];if(ke.nativeAmount!=null){const Gt=(st=ke.currencyCode)!=null?st:j.currencyCode,rr=j.denominations.find(({name:Kt})=>Kt===Gt);if(rr==null)throw new Error("InvalidDenominationError");const dr=ue.div(ke.nativeAmount,rr.multiplier,8);bt.push(`amount=${dr}`)}ke.label!=null&&bt.push(`label=${ke.label}`),ke.message!=null&&bt.push(`message=${ke.message}`);const Pt=ke.metadata;return Pt!=null&&(Pt.name!=null&&bt.push(`label=${Pt.name}`),Pt.notes!=null&&bt.push(`message=${Pt.notes}`)),bt.length>0?xd.serialize({scheme:(at=le.uriPrefix)!=null?at:j.pluginId,path:xt,query:bt.join("&")}):xt})},getSplittableTypes(ke){var Ge;const{keys:{format:Ve="bip32"}={}}=ke;return((Ge=le.forks)!=null?Ge:[]).filter(at=>nv(at).includes(Ve)).map(at=>`wallet:${at}`)}}}const Vm=E({serverUrl:p,serverScore:m,responseTime:m,numResponseTimes:m}),ip=E(Vm),qm=E({customServers:ip,enableCustomServers:x(S,!1),internalServers:ip}),Lo=999999999,du=500,f0=-100,op=-100,ap=-10;class Xm{constructor(B){const{log:j,onDirtyServer:le=()=>{}}=B;this.log=j,this.scoresLastLoaded=Date.now(),this.lastScoreUpTime=Date.now(),this.onDirtyServer=le}serverScoresLoad(B,j=[]){for(const le of j)if(B[le]===void 0){const xe={serverUrl:le,serverScore:0,responseTime:Lo,numResponseTimes:0};B[le]=xe}for(const le in B){const xe=B[le];let Re=!1;for(const Ie of j)if(Ie===le){Re=!0;break}let be=xe.serverScore;Re?be<ap&&(be=ap):be>op&&(be=op),this.scoresLastLoaded===0&&(be=Math.min(be,du-100)),le.startsWith("ws")&&be>0&&(be=0,xe.responseTime=Lo),Td(le).length>0&&(be=be-(du+f0)),xe.serverScore=be,this.onDirtyServer(le)}}clearServerScoreTimes(){this.scoresLastLoaded=Date.now(),this.lastScoreUpTime=Date.now()}printServers(B){this.log("**** printServers ****");const j=[];for(const le in B)j.push(B[le]);j.sort((le,xe)=>xe.serverScore-le.serverScore);for(const le of j){const xe=le.serverScore.toString(),Re=le.responseTime.toString(),be=le.numResponseTimes.toString(),Me=le.serverUrl;this.log(`ServerInfo ${xe} ${Re}ms ${be} ${Me}`)}this.log("**************************")}serverScoreUp(B,j,le,xe=1){const Re=B[j];Re.serverScore+=xe,Re.serverScore>du&&(Re.serverScore=du),this.lastScoreUpTime=Date.now(),le!==0&&this.setResponseTime(B,j,le),this.log(`${j}: score UP to ${Re.serverScore} ${le}ms`),this.onDirtyServer(j)}serverScoreDown(B,j,le=10){if(Date.now()-this.lastScoreUpTime>6e4){this.log(`${j}: score DOWN cancelled`);return}const Re=B[j];Re.serverScore-=le,Re.serverScore<f0&&(Re.serverScore=f0),Re.numResponseTimes===0&&this.setResponseTime(B,j,9999),this.log(`${j}: score DOWN to ${Re.serverScore}`),this.onDirtyServer(j)}setResponseTime(B,j,le){const xe=B[j];xe.numResponseTimes++;const Re=xe.responseTime;let be=0;Lo===Re?be=le:xe.numResponseTimes%10===0?be=(Re+le*4)/5:be=(Re+le)/2,xe.responseTime=be,this.onDirtyServer(j)}getServers(B,j,le=[]){if(B==null||Object.keys(B).length===0)return[];let xe=[],Re=[];for(const at in B){const xt=B[at];xe.push(xt),xt.responseTime===Lo&&xt.serverScore===0&&Re.push(xt)}if(xe.length===0)return[];if(le.length>0){const at=xt=>{for(const bt of le)if(typeof bt=="string"&&xt.serverUrl.indexOf(bt)===0||bt instanceof RegExp&&bt.test(xt.serverUrl))return!0;return!1};xe=xe.filter(at),Re=Re.filter(at)}xe.sort((at,xt)=>xt.serverScore-at.serverScore);const be=xe[0];let Me=0,Ie=0;for(let at=0;at<xe.length;at++){const xt=xe[at];xt.serverScore<be.serverScore-100||xt.serverScore<5||xt.responseTime>=Lo||(Me++,!(Me<j)&&(Me>=xe.length/2||(Ie=at)))}let ke=xe.slice(0,Ie);ke.sort((at,xt)=>at.responseTime-xt.responseTime),ke=ke.concat(xe.slice(Ie));const Ge=[];let Ve=0,st=0;for(const at of ke)if(Ve++,Ge.push(at.serverUrl),at.responseTime===Lo&&at.serverScore===0&&st++,Ve>=j||Ve>=j/2&&st===0&&Re.length>=j-Ve)break;if(st===0){for(const at of Re)if(Ge.unshift(at.serverUrl),Ve++,Ve>=j)break}return Ge}removeServers(B,j){for(const le of j)delete B[le]}}var Zm=Object.defineProperty,Ym=Object.defineProperties,$m=Object.getOwnPropertyDescriptors,sp=Object.getOwnPropertySymbols,Jm=Object.prototype.hasOwnProperty,Qm=Object.prototype.propertyIsEnumerable,fp=(T,B,j)=>B in T?Zm(T,B,{enumerable:!0,configurable:!0,writable:!0,value:j}):T[B]=j,e1=(T,B)=>{for(var j in B||(B={}))Jm.call(B,j)&&fp(T,j,B[j]);if(sp)for(var j of sp(B))Qm.call(B,j)&&fp(T,j,B[j]);return T},t1=(T,B)=>Ym(T,$m(B)),Do=(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 u0="serverCache.json";function r1(T){const{defaultSettings:B,log:j,pluginDisklet:le,pluginId:xe}=T;let Re=[];const be=t(le);let Me={customServers:{},enableCustomServers:B.enableCustomServers,internalServers:{}},Ie=!1;const ke=()=>{const bt=Me.enableCustomServers?"customServers":"internalServers";return Me[bt]},Ge=()=>Do(this,null,function*(){st.printServers(ke()),Ie&&(yield be.setJson(u0,Me).catch(bt=>{j(`${xe} - ${JSON.stringify(bt.toString())}`)}),Ie=!1,st.scoresLastLoaded=Date.now(),j(`${xe} - Saved server cache`))}),Ve=bt=>{Ie=!0;for(const Pt of Re)if(Pt.processedPercent===1&&Pt.getServerList().includes(bt)){Ge().catch(rr=>{j(`${xe} - ${JSON.stringify(rr.toString())}`)});return}},st=new Xm({log:j,onDirtyServer:Ve}),at=()=>Do(this,null,function*(){if(xt.infoPayload==null)return j.warn("info server list list empty"),[];const bt=Object.keys(xt.infoPayload.blockbookServers);return j.warn("info server list",bt),bt}),xt={infoPayload:T.infoPayload,addEngine(bt){Re.push(bt)},removeEngine(bt){Re=Re.filter(Pt=>Pt!==bt)},dumpData(){return{"pluginState.servers_":ke()}},load(){return Do(this,null,function*(){try{Me=qm(yield be.getJson(u0))}catch(bt){j(`${xe}: Failed to load server cache: ${JSON.stringify(bt)}`)}return xt.refreshServers().catch(bt=>{j(`${xe} - ${JSON.stringify(bt.toString())}`)}),this})},serverScoreDown(bt){st.serverScoreDown(ke(),bt)},serverScoreUp(bt,Pt){st.serverScoreUp(ke(),bt,Pt)},clearCache(){return Do(this,null,function*(){st.clearServerScoreTimes(),Ie=!0,yield be.delete(u0)})},getLocalServers(bt,Pt=[]){return st.getServers(ke(),bt,Pt)},refreshServers(bt){return Do(this,null,function*(){var Pt;const Gt=ke();let rr;if(Me.enableCustomServers)rr=(Pt=bt!=null?bt:Object.keys(Me.customServers))!=null?Pt:B.blockbookServers;else{const dr=yield at();rr=dr.length>0?dr:B.blockbookServers;const Kt=Object.keys(Gt).filter(Ut=>!rr.includes(Ut));st.removeServers(Gt,Kt)}st.serverScoresLoad(Gt,rr),yield Ge();for(const dr of Re)dr.refillServers()})},updateServers(bt){return Do(this,null,function*(){const Pt=()=>{const Kt=Object.keys(Me.customServers),Ut=new Set(bt.blockbookServers),vt=new Set(Kt);if(Ut.size!==vt.size)return!1;for(const Et of bt.blockbookServers)if(!vt.has(Et))return!1;return!0};if(bt.enableCustomServers===Me.enableCustomServers&&Pt())return;const Gt=bt.enableCustomServers&&bt.blockbookServers.length!==0,rr=[],dr=[];for(const Kt of Re)rr.push(Kt),Kt.setServerList([]),dr.push(Kt.stop());yield Promise.all(dr),st.clearServerScoreTimes(),Me=t1(e1({},Me),{enableCustomServers:Gt,customServers:{}}),Ie=!0,yield Ge(),yield xt.refreshServers(bt.blockbookServers);for(const Kt of rr)yield Kt.start()})}};return xt}var n1=Object.defineProperty,up=Object.getOwnPropertySymbols,i1=Object.prototype.hasOwnProperty,o1=Object.prototype.propertyIsEnumerable,cp=(T,B,j)=>B in T?n1(T,B,{enumerable:!0,configurable:!0,writable:!0,value:j}):T[B]=j,a1=(T,B)=>{for(var j in B||(B={}))i1.call(B,j)&&cp(T,j,B[j]);if(up)for(var j of up(B))o1.call(B,j)&&cp(T,j,B[j]);return T},c0=(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 lp=!1;function s1(T,B){const{currencyInfo:j}=B,{initOptions:le,io:xe,log:Re,nativeIo:be,pluginDisklet:Me}=T,Ie=Gm(xe,B),{defaultSettings:ke,pluginId:Ge,currencyCode:Ve}=j,st=r1({defaultSettings:Ml(ke),currencyCode:Ve,infoPayload:x(Hh)(T.infoPayload),io:xe,log:Re,pluginId:Ge,pluginDisklet:Me});if(!lp){const xt=be["edge-currency-plugins"],bt=xt==null?void 0:xt.memletConfig;bt!=null?a(bt):a({maxMemoryUsage:50*1024*1024}),lp=!0}return{currencyInfo:j,makeCurrencyEngine(xt,bt){return c0(this,null,function*(){const Pt=tv(bt.callbacks),Gt={walletInfo:xt,pluginInfo:B,pluginDisklet:Me,currencyTools:Ie,initOptions:Cp(le),io:xe,emitter:Pt,engineOptions:a1({},bt),pluginState:st};return yield Wm(Gt)})},makeCurrencyTools(){return c0(this,null,function*(){return st.load().catch(xt=>{throw xt}),Ie})},updateInfoPayload(xt){return c0(this,null,function*(){try{st.infoPayload=Hh(xt)}catch{Re.warn("invalid infoPayload",xt)}})}}}var hp;const dp={};for(const T of Oo)dp[T.currencyInfo.pluginId]=B=>s1(B,T);typeof window<"u"&&((hp=window.addEdgeCorePlugins)==null||hp.call(window,dp));const pb=null})()})();})();
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _cleaners = require('cleaners');
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _cleaners = require('cleaners');
2
2
 
3
3
 
4
4
 
@@ -42,14 +42,20 @@ let hasMemletBeenSet = false
42
42
  })
43
43
 
44
44
  if (!hasMemletBeenSet) {
45
- const { memletConfig } = nativeIo[
45
+ const pluginConfig = nativeIo[
46
46
  'edge-currency-plugins'
47
47
  ]
48
48
 
49
+ const memletConfig = _optionalChain([pluginConfig, 'optionalAccess', _2 => _2.memletConfig])
50
+
49
51
  if (memletConfig != null) {
50
- hasMemletBeenSet = true
51
52
  _memlet.setMemletConfig.call(void 0, memletConfig)
53
+ } else {
54
+ _memlet.setMemletConfig.call(void 0, {
55
+ maxMemoryUsage: 50 * 1024 * 1024 // 50MB
56
+ })
52
57
  }
58
+ hasMemletBeenSet = true
53
59
  }
54
60
 
55
61
  const instance = {
@@ -40,7 +40,7 @@ const currencyInfo = {
40
40
  'wss://dash3.trezor.io',
41
41
  'wss://dash4.trezor.io',
42
42
  'wss://dash5.trezor.io',
43
- 'wss://dash-wusa1.edge.app',
43
+ 'wss://dash-eusa1.edge.app',
44
44
  'wss://dash.nownodes.io/wss/%{nowNodesApiKey}'
45
45
  ],
46
46
  enableCustomServers: false
@@ -38,7 +38,7 @@ var _commonInfo = require('./commonInfo');
38
38
  'wss://ltc3.trezor.io',
39
39
  'wss://ltc4.trezor.io',
40
40
  'wss://ltc5.trezor.io',
41
- 'wss://ltc-wusa1.edge.app',
41
+ 'wss://ltc-eusa1.edge.app',
42
42
  'wss://ltcbook.nownodes.io/wss/%{nowNodesApiKey}'
43
43
  ],
44
44
  enableCustomServers: false
@@ -34,9 +34,7 @@ const currencyInfo = {
34
34
  ..._commonInfo.legacyMemoInfo,
35
35
  defaultSettings: {
36
36
  customFeeSettings: ['satPerByte'],
37
- blockbookServers: [
38
- /* 'wss://pivx-eusa1.edge.app', */ 'wss://zkbitcoin.com'
39
- ],
37
+ blockbookServers: ['wss://pivx-eusa1.edge.app', 'wss://zkbitcoin.com'],
40
38
  enableCustomServers: false
41
39
  },
42
40
  displayName: 'PIVX',
@@ -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.1",
3
+ "version": "3.8.3",
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",