@swapkit/toolboxes 4.3.8 → 4.3.10
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.
- package/dist/src/cosmos/index.cjs +2 -2
- package/dist/src/cosmos/index.cjs.map +3 -3
- package/dist/src/cosmos/index.js +2 -2
- package/dist/src/cosmos/index.js.map +3 -3
- package/dist/src/index.cjs +3 -3
- package/dist/src/index.cjs.map +4 -4
- package/dist/src/index.js +3 -3
- package/dist/src/index.js.map +4 -4
- package/dist/src/utxo/index.cjs +3 -3
- package/dist/src/utxo/index.cjs.map +3 -3
- package/dist/src/utxo/index.js +3 -3
- package/dist/src/utxo/index.js.map +3 -3
- package/dist/types/cosmos/toolbox/cosmos.d.ts.map +1 -1
- package/dist/types/utxo/toolbox/zcash.d.ts +1 -1
- package/dist/types/utxo/toolbox/zcash.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/cosmos/__tests__/toolbox.test.ts +8 -4
- package/src/cosmos/toolbox/cosmos.ts +6 -1
- package/src/sui/__tests__/toolbox.test.ts +9 -5
- package/src/ton/__tests__/toolbox.test.ts +9 -5
- package/src/utxo/toolbox/zcash.ts +13 -13
package/dist/src/utxo/index.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
var zZ=Object.create;var{getPrototypeOf:CZ,defineProperty:r,getOwnPropertyNames:SX,getOwnPropertyDescriptor:IZ}=Object,xX=Object.prototype.hasOwnProperty;var m=(X,Z,B)=>{B=X!=null?zZ(CZ(X)):{};let G=Z||!X||!X.__esModule?r(B,"default",{value:X,enumerable:!0}):B;for(let $ of SX(X))if(!xX.call(G,$))r(G,$,{get:()=>X[$],enumerable:!0});return G},KX=new WeakMap,MZ=(X)=>{var Z=KX.get(X),B;if(Z)return Z;if(Z=r({},"__esModule",{value:!0}),X&&typeof X==="object"||typeof X==="function")SX(X).map((G)=>!xX.call(Z,G)&&r(Z,G,{get:()=>X[G],enumerable:!(B=IZ(X,G))||B.enumerable}));return KX.set(X,Z),Z};var _Z=(X,Z)=>{for(var B in Z)r(X,B,{get:Z[B],enumerable:!0,configurable:!0,set:(G)=>Z[B]=()=>G})};var N=(X,Z)=>()=>(X&&(Z=X(X=0)),Z);function mX(){function X(){let Z=Date.now(),B=zX||Z;return zX=B,Z>zX?Z:B+1}return HZ+X().toString(36)}function lX(X){return async function(B,G=!0){let $=await gX.SwapKitApi.getChainBalance({address:B,chain:X,scamFilter:G}),{baseDecimal:Q}=d.getChainConfig(X),J=$.map(({identifier:q,value:W,decimal:T})=>{return new d.AssetValue({decimal:T||Q,identifier:q,value:W})});if(!J.some((q)=>q.isGasAsset))return[d.AssetValue.from({chain:X}),...J];return J}}var d,gX,HZ,zX=0;var CX=N(()=>{d=require("@swapkit/helpers"),gX=require("@swapkit/helpers/api"),HZ=typeof process<"u"&&process.pid?process.pid.toString(36):""});async function vZ({chain:X,txHash:Z}){let B=`${GX(X)}/push/transaction`,G=JSON.stringify({data:Z});try{let $=await U.RequestClient.post(B,{body:G,headers:{"Content-Type":"application/json"}});if($.context.code!==200)throw new U.SwapKitError("toolbox_utxo_broadcast_failed",{error:$.context.error||"Transaction broadcast failed"});return $.data?.transaction_hash||Z}catch($){let Q=await U.getRPCUrl(X);if(Q){let J=JSON.stringify({id:mX(),jsonrpc:"2.0",method:"sendrawtransaction",params:[Z]}),j=await U.RequestClient.post(Q,{body:J,headers:{"Content-Type":"application/json"}});if(j.error)throw new U.SwapKitError("toolbox_utxo_broadcast_failed",{error:j.error?.message});if(j.result.includes('"code":-26'))throw new U.SwapKitError("toolbox_utxo_invalid_transaction",{error:"Transaction amount was too low"});return j.result}throw $}}function GX(X){return`https://api.blockchair.com/${NZ(X)}`}function hX(X){switch(X){case U.Chain.Bitcoin:return 5;case U.Chain.Dogecoin:return 1e4;case U.Chain.Litecoin:return 1;case U.Chain.Zcash:return 1;default:return 2}}function NZ(X){switch(X){case U.Chain.BitcoinCash:return"bitcoin-cash";case U.Chain.Litecoin:return"litecoin";case U.Chain.Dash:return"dash";case U.Chain.Dogecoin:return"dogecoin";case U.Chain.Zcash:return"zcash";case U.Chain.Polkadot:return"polkadot";default:return"bitcoin"}}async function OZ(X){try{let{feePerKb:Z}=await U.RequestClient.get(`https://app.bitgo.com/api/v2/${X.toLowerCase()}/tx/fee`),B=Z/1000;return Math.max(B,hX(X))}catch{return hX(X)}}async function IX(X,Z){let B=await U.RequestClient.get(`${X}${Z?`${X.includes("?")?"&":"?"}key=${Z}`:""}`);if(!B||B.context.code!==200)throw new U.SwapKitError("toolbox_utxo_api_error",{error:`Failed to query ${X}`});return B.data}async function nX({address:X,chain:Z,apiKey:B}){if(!X)throw new U.SwapKitError("toolbox_utxo_invalid_params",{error:"Address is required"});try{return(await IX(`${GX(Z)}/dashboards/address/${X}?transaction_details=true`,B))[X]}catch{return{address:{balance:0,transaction_count:0},utxo:[]}}}async function yZ({address:X,chain:Z,apiKey:B}){return(await nX({address:X,apiKey:B,chain:Z}))?.address.balance||0}async function uX({chain:X,apiKey:Z,txHash:B}){if(!B)throw new U.SwapKitError("toolbox_utxo_invalid_params",{error:"TxHash is required"});try{return(await IX(`${GX(X)}/raw/transaction/${B}`,Z))?.[B]?.raw_transaction||""}catch(G){let $=G instanceof Error?G.message:String(G);return console.error(`Failed to fetch raw transaction: ${$}`),""}}async function FZ({chain:X,address:Z,apiKey:B,offset:G=0,limit:$=30}){return(await IX(`${GX(X)}/outputs?q=recipient(${Z}),is_spent(false),value(..2000000000000000)&s=value(desc)&fields=is_spent,transaction_hash,index,value,script_hex,block_id,spending_signature_hex&limit=${$}&offset=${G}`,B)).map(({is_spent:q,script_hex:W,block_id:T,transaction_hash:Y,index:z,value:D,spending_signature_hex:C})=>({hash:Y,index:z,is_confirmed:T!==-1,is_spent:q,script_hex:W,txHex:C,value:D}))}function AZ(X){return X.reduce((Z,B)=>Z+B.value,0)}function cX(X,Z){let B=[...X].sort((G,$)=>$.value-G.value);if(Z){let G=[],$=0;for(let Q of B)if(G.push(Q),$+=Q.value,$>=Z)break;return G}return B}async function rX({chain:X,address:Z,apiKey:B,targetValue:G,accumulativeValue:$=0,offset:Q=0,limit:J=30}){if(!Z)throw new U.SwapKitError("toolbox_utxo_invalid_params",{error:"Address is required"});try{let j=await FZ({address:Z,apiKey:B,chain:X,limit:J,offset:Q,targetValue:G}),W=j.length<J,T=j.filter(({is_spent:_})=>!_),Y=AZ(T),z=$+Y,D=G&&z>=G;if(W||D)return cX(T,G);let C=await rX({accumulativeValue:z,address:Z,apiKey:B,chain:X,limit:J,offset:Q+J,targetValue:G}),H=[...T,...C];return cX(H,G)}catch(j){let q=j instanceof Error?j.message:String(j);return console.error(`Failed to fetch unspent UTXOs: ${q}`),[]}}async function kZ({address:X,chain:Z,apiKey:B,fetchTxHex:G=!0,targetValue:$}){let Q=await rX({address:X,apiKey:B,chain:Z,targetValue:$}),J=[];for(let{hash:j,index:q,script_hex:W,value:T}of Q){let Y;if(G)Y=await uX({apiKey:B,chain:Z,txHash:j});J.push({address:X,hash:j,index:q,txHex:Y,value:T,witnessUtxo:{script:Buffer.from(W,"hex"),value:T}})}return J}function v(X){let Z=U.SKConfig.get("apiKeys").blockchair||"";return U.warnOnce({condition:!Z,id:"no_blockchair_api_key_warning",warning:"No Blockchair API key found. Functionality will be limited."}),{broadcastTx:(B)=>vZ({chain:X,txHash:B}),getAddressData:(B)=>nX({address:B,apiKey:Z,chain:X}),getBalance:(B)=>yZ({address:B,apiKey:Z,chain:X}),getRawTx:(B)=>uX({apiKey:Z,chain:X,txHash:B}),getSuggestedTxFee:()=>OZ(X),getUtxos:(B)=>kZ({...B,apiKey:Z,chain:X})}}function EZ(X){return X}function F(){return function(Z){switch(Z){case U.Chain.Bitcoin:return oX.networks.bitcoin;case U.Chain.BitcoinCash:return l.default.bitcoincash.main.toBitcoinJS();case U.Chain.Dash:return l.default.dash.main.toBitcoinJS();case U.Chain.Litecoin:return l.default.litecoin.main.toBitcoinJS();case U.Chain.Dogecoin:{let B={private:70615956,public:70617039},G=l.default.dogecoin.test;return G.versions.bip32=B,l.default.dogecoin.main.toBitcoinJS()}case U.Chain.Zcash:return pX.networks.zcash;default:throw new U.SwapKitError("toolbox_utxo_not_supported",{chain:Z})}}}var pX,U,oX,l;var dX=N(()=>{CX();pX=require("@bitgo/utxo-lib"),U=require("@swapkit/helpers"),oX=require("bitcoinjs-lib"),l=m(require("coininfo"))});function NX(X){try{return JX(X),!0}catch{return!1}}function OX(X){return JX(X)?.network}function h(X){let Z=JX(X);if(Z?.format==="legacy")return X;return wZ(Z)}function i(X){let Z=JX(X);return PZ(Z)}function JX(X){try{let Z=fZ(X);if(Z)return Z}catch{}try{let Z=RZ(X);if(Z)return Z}catch{}throw new MX.SwapKitError("toolbox_utxo_invalid_address",{address:X})}function fZ(X){try{let Z=_X.default.decode(X);if(Z.length!==21)throw new MX.SwapKitError("toolbox_utxo_invalid_address",{address:X});let B=Z[0],G=Array.prototype.slice.call(Z,1);switch(B){case K.legacy.mainnet.p2pkh:return{format:"legacy",hash:G,network:"mainnet",type:"p2pkh"};case K.legacy.mainnet.p2sh:return{format:"legacy",hash:G,network:"mainnet",type:"p2sh"};case K.legacy.testnet.p2pkh:return{format:"legacy",hash:G,network:"testnet",type:"p2pkh"};case K.legacy.testnet.p2sh:return{format:"legacy",hash:G,network:"testnet",type:"p2sh"};case K.bitpay.mainnet.p2pkh:return{format:"bitpay",hash:G,network:"mainnet",type:"p2pkh"};case K.bitpay.mainnet.p2sh:return{format:"bitpay",hash:G,network:"mainnet",type:"p2sh"};default:return}}catch{return}}function RZ(X){if(X.indexOf(":")!==-1)try{return iX(X)}catch{}else{let Z=["bitcoincash","bchtest","bchreg"];for(let B of Z)try{return iX(`${B}:${X}`)}catch{}}return}function iX(X){try{let{hash:Z,prefix:B,type:G}=HX.default.decode(X);return{format:"cashaddr",hash:Array.prototype.slice.call(Z,0),network:B==="bitcoincash"?"mainnet":"testnet",type:G==="P2PKH"?"p2pkh":"p2sh"}}catch{return}}function wZ(X){let Z=K.legacy[X.network][X.type],B=Buffer.alloc(1+X.hash.length);return B[0]=Z,B.set(X.hash,1),_X.default.encode(B)}function PZ(X){let Z=X.network==="mainnet"?"bitcoincash":"bchtest",B=X.type==="p2pkh"?"P2PKH":"P2SH",G=new Uint8Array(X.hash);return HX.default.encode(Z,B,G)}var MX,_X,HX,vX,K;var sX=N(()=>{MX=require("@swapkit/helpers"),_X=m(require("bs58check")),HX=m(require("cashaddrjs"));((B)=>{B.Mainnet="mainnet";B.Testnet="testnet"})(vX||={});K={["legacy"]:{["mainnet"]:{["p2pkh"]:0,["p2sh"]:5},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}},["bitpay"]:{["mainnet"]:{["p2pkh"]:28,["p2sh"]:40},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}}}});function A(X){let Z=Buffer.from(X,"utf8");return jX.script.compile([jX.opcodes.OP_RETURN,Z])}var aX,jX,VZ=1000,qX=10,tX=10,bZ=41,KZ=107,WX,QX,$X,s=(X)=>{if(X.startsWith("bc1")||X.startsWith("tb1")||X.startsWith("ltc1")||X.startsWith("tltc1"))return"P2WPKH";if(X.startsWith("1")||X.startsWith("m")||X.startsWith("n")||X.startsWith("bitcoincash:q")||X.startsWith("bitcoincash:p")||X.startsWith("q")||X.startsWith("p")||X.startsWith("L")||X.startsWith("M")||X.startsWith("3")||X.startsWith("D")||X.startsWith("A")||X.startsWith("9")||X.startsWith("X")||X.startsWith("7")||X.startsWith("y")||X.startsWith("t1")||X.startsWith("t3")||X.startsWith("tm"))return"P2PKH";throw new aX.SwapKitError("toolbox_utxo_invalid_address",{address:X})},c=({inputs:X,outputs:Z,feeRate:B})=>{let G=X[0]&&"address"in X[0]&&X[0].address?s(X[0].address):"P2PKH",$=X.filter((J)=>J.value>=QX["type"in J?J.type:"P2PKH"]*Math.ceil(B)).reduce((J,j)=>J+w(j),0),Q=Z?.reduce((J,j)=>J+a(j),0)||$X[G];return qX+$+Q},w=(X)=>{if("type"in X)return QX[X.type];if("address"in X&&X.address)return QX[s(X.address)];return bZ+KZ},a=(X,Z)=>{if(X?.script)return tX+X.script.length+(X.script.length>=74?2:1);if(Z)return $X[Z];return $X.P2PKH};var yX=N(()=>{aX=require("@swapkit/helpers"),jX=require("bitcoinjs-lib");((B)=>{B.P2PKH="P2PKH";B.P2WPKH="P2WPKH"})(WX||={});QX={["P2PKH"]:148,["P2WPKH"]:68},$X={["P2PKH"]:34,["P2WPKH"]:31}});function LX(X){switch(X){case k.Chain.Bitcoin:case k.Chain.BitcoinCash:return 550;case k.Chain.Dash:case k.Chain.Litecoin:return 5500;case k.Chain.Dogecoin:return 1e5;case k.Chain.Zcash:return 546;default:throw new k.SwapKitError("toolbox_utxo_not_supported",{chain:X})}}function E({inputs:X,outputs:Z,feeRate:B=1,chain:G=k.Chain.Bitcoin,changeAddress:$=""}){let Q=Math.ceil(B),J=X[0]&&"address"in X[0]&&X[0].address?s(X[0].address):"P2PKH",j=X.filter((D)=>w(D)*Q<=D.value),q=qX+Z.reduce((D,C)=>D+a(C,J),0),W=Z.reduce((D,C)=>D+C.value,0),T=q*Q,Y=0,z=[];for(let D of j){let C=w(D),H=Q*C;T+=H,Y+=D.value,z.push(D);let _=T+W;if(Y<_)continue;let V=Y-_,b=Q*a({address:"",value:0},J);if(V>b){let VX=b+T,bX=Y-(W+VX);if(bX>Math.max(w({})*Q,LX(G)))return{fee:VX,inputs:z,outputs:Z.concat({address:$,value:bX})}}return{fee:T,inputs:z,outputs:Z}}return{fee:Q*c({feeRate:Q,inputs:X,outputs:Z})}}var k;var eX=N(()=>{yX();k=require("@swapkit/helpers")});var p=N(()=>{dX();sX();eX();yX()});function S(X){return X.replace(/(bchtest:|bitcoincash:)/,"")}function P(X){let Z=S(X);return NX(Z)&&OX(Z)==="mainnet"}function o(X){try{if(X.startsWith("z"))return console.warn("Shielded Zcash addresses (z-addresses) are not supported. Use transparent addresses (t1/t3) only."),!1;let Z=TX.networks.zcash;try{return TX.address.toOutputScript(X,Z),!0}catch{let B=XZ.default.decode(X);if(B.length<21)return!1;let G=B[0];return G===Z.pubKeyHash||G===Z.scriptHash}}catch{return!1}}var TX,XZ;var t=N(()=>{p();TX=require("@bitgo/utxo-lib"),XZ=m(require("bs58check"))});function GZ({inputs:X,outputs:Z,chain:B,psbt:G,sender:$,compiledMemo:Q}){for(let J of X){let j=!!J.witnessUtxo&&!e.includes(B)&&{witnessUtxo:J.witnessUtxo},q=e.includes(B)&&{nonWitnessUtxo:J.txHex?Buffer.from(J.txHex,"hex"):void 0};G.addInput({hash:J.hash,index:J.index,...j,...q})}for(let J of Z){let j="address"in J&&J.address?J.address:$,q=J.script;if(q&&!Q)continue;let W=q?{script:Q,value:0}:{address:j,value:J.value};f.initEccLib(YX.default),G.addOutput(W)}return{inputs:X,psbt:G}}async function JZ({assetValue:X,recipient:Z,memo:B,feeRate:G,sender:$,fetchTxHex:Q=!1}){let J=X.chain,j=B?await A(B):null,q=await jZ({assetValue:X,fetchTxHex:Q,memo:B,recipient:Z,sender:$}),{inputs:W,outputs:T}=E({...q,chain:J,feeRate:G});if(!(W&&T))throw new L.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue:X,sender:$});let Y=await F(),z=new f.Psbt({network:Y(J)});if(J===L.Chain.Dogecoin)z.setMaximumFeeRate(650000000);let{psbt:D,inputs:C}=await GZ({chain:J,compiledMemo:j,inputs:W,outputs:T,psbt:z,sender:$});return{inputs:C,psbt:D,utxos:q.inputs}}async function QZ(){let X=await F();return function({address:B,chain:G}){if(G===L.Chain.BitcoinCash)return P(B);if(G===L.Chain.Zcash)return o(B);try{return f.initEccLib(YX.default),f.address.toOutputScript(B,X(G)),!0}catch{return!1}}}async function SZ({chain:X,phrase:Z,derivationPath:B}){let G=(await XX(X))({derivationPath:B,phrase:Z});async function $(J){return await J.signAllInputs(G),J}function Q(){return AX(X)(G)}return{getAddress:Q,signTransaction:$}}async function x({chain:X,...Z}){let B="phrase"in Z?Z.phrase:void 0,G="index"in Z?Z.index||0:0,$=L.derivationPathToString("derivationPath"in Z&&Z.derivationPath?Z.derivationPath:L.updateDerivationPath(L.NetworkDerivationPath[X],{index:G})),Q=B?await SZ({chain:X,derivationPath:$,phrase:B}):("signer"in Z)?Z.signer:void 0;function J(){return Promise.resolve(Q?.getAddress())}let j=await QZ(),q=await XX(X);return{accumulative:E,broadcastTx:(W)=>v(X).broadcastTx(W),calculateTxSize:c,createKeysForPath:q,createTransaction:JZ,estimateMaxSendableAmount:xZ(X),estimateTransactionFee:gZ(X),getAddress:J,getAddressFromKeys:AX(X),getBalance:lX(X),getFeeRates:()=>ZX(X),getInputsOutputsFee:$Z,getPrivateKeyFromMnemonic:(W)=>{return q(W).toWIF()},transfer:mZ(Q),validateAddress:(W)=>j({address:W,chain:X})}}async function $Z({assetValue:X,feeOptionKey:Z=L.FeeOption.Fast,feeRate:B,memo:G,sender:$,recipient:Q}){let J=X.chain,j=await jZ({assetValue:X,memo:G,recipient:Q,sender:$}),q=B?Math.floor(B):(await ZX(J))[Z];return E({...j,chain:J,feeRate:q})}function xZ(X){return async function({from:B,memo:G,feeRate:$,feeOptionKey:Q=L.FeeOption.Fast,recipients:J=1}){let j=await v(X).getAddressData(B),q=$?Math.ceil($):(await ZX(X))[Q],W=j?.utxo.map((C)=>({...C,hash:"",type:"P2PKH"})).filter((C)=>C.value>Math.max(LX(X),w(C)*q));if(!W?.length)return L.AssetValue.from({chain:X});let T=L.AssetValue.from({chain:X,value:W.reduce((C,H)=>C+H.value,0)}),Y=typeof J==="number"?Array.from({length:J},()=>({address:B,value:0})):J;if(G){let C=await A(G);Y.push({address:B,script:C,value:0})}let D=c({feeRate:q,inputs:W,outputs:Y})*q;return T.sub(D)}}function gZ(X){return async(Z)=>{let B=await $Z(Z);return L.AssetValue.from({chain:X,value:L.SwapKitNumber.fromBigInt(BigInt(B.fee),8).getValue("string")})}}async function XX(X){let Z=await F();switch(X){case L.Chain.BitcoinCash:return function({phrase:G,derivationPath:$=`${L.DerivationPath.BCH}/0`,wif:Q}){let J=Z(X);if(Q)return DX.ECPair.fromWIF(Q,J);if(!G)throw new L.SwapKitError("toolbox_utxo_invalid_params",{error:"No phrase provided"});return DX.HDNode.fromSeedBuffer(Buffer.from(FX.mnemonicToSeedSync(G)),J).derivePath($).keyPair};case L.Chain.Bitcoin:case L.Chain.Dogecoin:case L.Chain.Litecoin:case L.Chain.Zcash:case L.Chain.Dash:return function({phrase:G,wif:$,derivationPath:Q}){if(!($||G))throw new L.SwapKitError("toolbox_utxo_invalid_params",{error:"Either phrase or wif must be provided"});let J=BZ.ECPairFactory(YX.default),j=Z(X);if($)return J.fromWIF($,j);let q=FX.mnemonicToSeedSync(G),W=ZZ.HDKey.fromMasterSeed(q,j).derive(Q);if(!W.privateKey)throw new L.SwapKitError("toolbox_utxo_invalid_params",{error:"Could not get private key from phrase"});return J.fromPrivateKey(Buffer.from(W.privateKey),{network:j})};default:throw new L.SwapKitError("toolbox_utxo_not_supported",{chain:X})}}function AX(X){let Z=F();return function(G){if(!G)throw new L.SwapKitError("toolbox_utxo_invalid_params",{error:"Keys must be provided"});let $=e.includes(X)?f.payments.p2pkh:f.payments.p2wpkh,{address:Q}=$({network:Z(X),pubkey:G.publicKey});if(!Q)throw new L.SwapKitError("toolbox_utxo_invalid_address",{error:"Address not defined"});return Q}}function mZ(X){return async function({memo:B,recipient:G,feeOptionKey:$,feeRate:Q,assetValue:J}){let j=await X?.getAddress(),q=J.chain;if(!(X&&j))throw new L.SwapKitError("toolbox_utxo_no_signer");if(!G)throw new L.SwapKitError("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});let W=Q||(await ZX(q))[$||L.FeeOption.Fast],{psbt:T}=await JZ({assetValue:J,feeRate:W,memo:B,recipient:G,sender:j}),Y=await X.signTransaction(T);return Y.finalizeAllInputs(),v(q).broadcastTx(Y.extractTransaction().toHex())}}async function ZX(X){let Z=await v(X).getSuggestedTxFee();return{[L.FeeOption.Average]:Z,[L.FeeOption.Fast]:L.applyFeeMultiplier(Z,L.FeeOption.Fast),[L.FeeOption.Fastest]:L.applyFeeMultiplier(Z,L.FeeOption.Fastest)}}async function jZ({assetValue:X,recipient:Z,memo:B,sender:G,fetchTxHex:$=!1}){let Q=X.chain,J=(await ZX(Q))[L.FeeOption.Fastest],j=$||e.includes(Q),q=X.getBaseValue("number"),W=Math.ceil(q+J*5000);return{inputs:await v(Q).getUtxos({address:G,fetchTxHex:j,targetValue:W}),outputs:[{address:Z,value:q},...B?[{address:"",script:await A(B),value:0}]:[]]}}var YX,DX,ZZ,FX,L,f,BZ,e;var BX=N(()=>{CX();p();t();YX=m(require("@bitcoinerlab/secp256k1")),DX=require("@psf/bitcoincashjs-lib"),ZZ=require("@scure/bip32"),FX=require("@scure/bip39"),L=require("@swapkit/helpers"),f=require("bitcoinjs-lib"),BZ=require("ecpair"),e=[L.Chain.Dash,L.Chain.Dogecoin,L.Chain.Zcash,L.Chain.BitcoinCash]});function g(X){return S(i(X))}function lZ(X){function Z({builder:G,utxos:$}){return $.forEach((Q,J)=>{G.sign(J,X,void 0,65,Q.witnessUtxo?.value)}),G.build()}return{getAddress:()=>{let G=X.getAddress(0);return Promise.resolve(g(G))},signTransaction:Z}}async function kX(X){let Z="phrase"in X?X.phrase:void 0,B="index"in X?X.index||0:0,G=M.derivationPathToString("derivationPath"in X&&X.derivationPath?X.derivationPath:M.updateDerivationPath(M.NetworkDerivationPath[O],{index:B})),$=Z?(await XX(O))({derivationPath:G,phrase:Z}):void 0,Q=$?lZ($):("signer"in X)?X.signer:void 0;function J(){return Promise.resolve(Q?.getAddress())}let{getBalance:j,getFeeRates:q,broadcastTx:W,...T}=await x({chain:O});function Y(z,D=!0){return j(S(i(z)))}return{...T,broadcastTx:W,buildTx:cZ,createTransaction:WZ,getAddress:J,getAddressFromKeys:pZ,getBalance:Y,getFeeRates:q,stripPrefix:S,stripToCashAddress:g,transfer:hZ({broadcastTx:W,getFeeRates:q,signer:Q}),validateAddress:P}}async function WZ({assetValue:X,recipient:Z,memo:B,feeRate:G,sender:$}){if(!P(Z))throw new M.SwapKitError("toolbox_utxo_invalid_address",{address:Z});let Q=Math.ceil(X.getBaseValue("number")+G*7500),J=await v(O).getUtxos({address:g($),fetchTxHex:!0,targetValue:Q}),j=B?await A(B):null,q=[];q.push({address:Z,value:X.getBaseValue("number")});let{inputs:W,outputs:T}=E({chain:O,feeRate:G,inputs:J,outputs:q});if(!(W&&T))throw new M.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue:X,sender:$});let Y=await F(),z=new n.TransactionBuilder(Y(O));await Promise.all(W.map(async(D)=>{let C=await v(O).getRawTx(D.hash);z.addInput(n.Transaction.fromBuffer(Buffer.from(C,"hex")),D.index)}));for(let D of T){let C="address"in D&&D.address?D.address:h($),H=await F(),_=n.address.toOutputScript(h(C),H(O));z.addOutput(_,D.value)}if(j)z.addOutput(j,0);return{builder:z,utxos:W}}function hZ({broadcastTx:X,getFeeRates:Z,signer:B}){return async function({recipient:$,assetValue:Q,feeOptionKey:J=M.FeeOption.Fast,...j}){let q=await B?.getAddress();if(!(B&&q))throw new M.SwapKitError("toolbox_utxo_no_signer");if(!$)throw new M.SwapKitError("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});let W=j.feeRate||(await Z())[J],{builder:T,utxos:Y}=await WZ({...j,assetValue:Q,feeRate:W,recipient:$,sender:q}),D=(await B.signTransaction({builder:T,utxos:Y})).toHex();return X(D)}}async function cZ({assetValue:X,recipient:Z,memo:B,feeRate:G,sender:$,setSigHashType:Q}){let J=i(Z);if(!P(J))throw new M.SwapKitError("toolbox_utxo_invalid_address",{address:J});let j=Math.ceil(X.getBaseValue("number")+G*7500),q=await v(O).getUtxos({address:g($),fetchTxHex:!1,targetValue:j}),W=Number(G.toFixed(0)),T=B?await A(B):null,Y=[];if(Y.push({address:h(Z),value:X.getBaseValue("number")}),T)Y.push({script:T,value:0});let{inputs:z,outputs:D}=E({chain:O,feeRate:W,inputs:q,outputs:Y});if(!(z&&D))throw new M.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue:X,sender:$});let C=await F(),H=new qZ.Psbt({network:C(O)});for(let{hash:_,index:V,witnessUtxo:b}of z)H.addInput({hash:_,index:V,sighashType:Q?65:void 0,witnessUtxo:b});for(let _ of D){let V="address"in _&&_.address?_.address:h($),b=_.script?T?{script:T,value:0}:void 0:{address:V,value:_.value};if(b)H.addOutput(b)}return{inputs:z,psbt:H,utxos:q}}function pZ(X){let Z=X.getAddress(0);return g(Z)}var n,M,qZ,O;var UX=N(()=>{p();BX();t();n=require("@psf/bitcoincashjs-lib"),M=require("@swapkit/helpers"),qZ=require("bitcoinjs-lib"),O=M.Chain.BitcoinCash});function YZ(){return y.networks.zcash}function DZ(){return{bech32:void 0,bip32:{private:76066276,public:76067358},messagePrefix:`\x18ZCash Signed Message:
|
|
2
|
-
`,pubKeyHash:28,scriptHash:28,wif:128}}function
|
|
1
|
+
var CB=Object.create;var{getPrototypeOf:IB,defineProperty:r,getOwnPropertyNames:gX,getOwnPropertyDescriptor:_B}=Object,mX=Object.prototype.hasOwnProperty;var g=(X,B,Z)=>{Z=X!=null?CB(IB(X)):{};let G=B||!X||!X.__esModule?r(Z,"default",{value:X,enumerable:!0}):Z;for(let $ of gX(X))if(!mX.call(G,$))r(G,$,{get:()=>X[$],enumerable:!0});return G},xX=new WeakMap,MB=(X)=>{var B=xX.get(X),Z;if(B)return B;if(B=r({},"__esModule",{value:!0}),X&&typeof X==="object"||typeof X==="function")gX(X).map((G)=>!mX.call(B,G)&&r(B,G,{get:()=>X[G],enumerable:!(Z=_B(X,G))||Z.enumerable}));return xX.set(X,B),B};var HB=(X,B)=>{for(var Z in B)r(X,Z,{get:B[Z],enumerable:!0,configurable:!0,set:(G)=>B[Z]=()=>G})};var N=(X,B)=>()=>(X&&(B=X(X=0)),B);function hX(){function X(){let B=Date.now(),Z=zX||B;return zX=Z,B>zX?B:Z+1}return vB+X().toString(36)}function cX(X){return async function(Z,G=!0){let $=await lX.SwapKitApi.getChainBalance({address:Z,chain:X,scamFilter:G}),{baseDecimal:Q}=d.getChainConfig(X),J=$.map(({identifier:q,value:W,decimal:Y})=>{return new d.AssetValue({decimal:Y||Q,identifier:q,value:W})});if(!J.some((q)=>q.isGasAsset))return[d.AssetValue.from({chain:X}),...J];return J}}var d,lX,vB,zX=0;var CX=N(()=>{d=require("@swapkit/helpers"),lX=require("@swapkit/helpers/api"),vB=typeof process<"u"&&process.pid?process.pid.toString(36):""});async function NB({chain:X,txHash:B}){let Z=`${GX(X)}/push/transaction`,G=JSON.stringify({data:B});try{let $=await U.RequestClient.post(Z,{body:G,headers:{"Content-Type":"application/json"}});if($.context.code!==200)throw new U.SwapKitError("toolbox_utxo_broadcast_failed",{error:$.context.error||"Transaction broadcast failed"});return $.data?.transaction_hash||B}catch($){let Q=await U.getRPCUrl(X);if(Q){let J=JSON.stringify({id:hX(),jsonrpc:"2.0",method:"sendrawtransaction",params:[B]}),j=await U.RequestClient.post(Q,{body:J,headers:{"Content-Type":"application/json"}});if(j.error)throw new U.SwapKitError("toolbox_utxo_broadcast_failed",{error:j.error?.message});if(j.result.includes('"code":-26'))throw new U.SwapKitError("toolbox_utxo_invalid_transaction",{error:"Transaction amount was too low"});return j.result}throw $}}function GX(X){return`https://api.blockchair.com/${OB(X)}`}function pX(X){switch(X){case U.Chain.Bitcoin:return 5;case U.Chain.Dogecoin:return 1e4;case U.Chain.Litecoin:return 1;case U.Chain.Zcash:return 1;default:return 2}}function OB(X){switch(X){case U.Chain.BitcoinCash:return"bitcoin-cash";case U.Chain.Litecoin:return"litecoin";case U.Chain.Dash:return"dash";case U.Chain.Dogecoin:return"dogecoin";case U.Chain.Zcash:return"zcash";case U.Chain.Polkadot:return"polkadot";default:return"bitcoin"}}async function yB(X){try{let{feePerKb:B}=await U.RequestClient.get(`https://app.bitgo.com/api/v2/${X.toLowerCase()}/tx/fee`),Z=B/1000;return Math.max(Z,pX(X))}catch{return pX(X)}}async function IX(X,B){let Z=await U.RequestClient.get(`${X}${B?`${X.includes("?")?"&":"?"}key=${B}`:""}`);if(!Z||Z.context.code!==200)throw new U.SwapKitError("toolbox_utxo_api_error",{error:`Failed to query ${X}`});return Z.data}async function rX({address:X,chain:B,apiKey:Z}){if(!X)throw new U.SwapKitError("toolbox_utxo_invalid_params",{error:"Address is required"});try{return(await IX(`${GX(B)}/dashboards/address/${X}?transaction_details=true`,Z))[X]}catch{return{address:{balance:0,transaction_count:0},utxo:[]}}}async function AB({address:X,chain:B,apiKey:Z}){return(await rX({address:X,apiKey:Z,chain:B}))?.address.balance||0}async function dX({chain:X,apiKey:B,txHash:Z}){if(!Z)throw new U.SwapKitError("toolbox_utxo_invalid_params",{error:"TxHash is required"});try{return(await IX(`${GX(X)}/raw/transaction/${Z}`,B))?.[Z]?.raw_transaction||""}catch(G){let $=G instanceof Error?G.message:String(G);return console.error(`Failed to fetch raw transaction: ${$}`),""}}async function FB({chain:X,address:B,apiKey:Z,offset:G=0,limit:$=30}){return(await IX(`${GX(X)}/outputs?q=recipient(${B}),is_spent(false),value(..2000000000000000)&s=value(desc)&fields=is_spent,transaction_hash,index,value,script_hex,block_id,spending_signature_hex&limit=${$}&offset=${G}`,Z)).map(({is_spent:q,script_hex:W,block_id:Y,transaction_hash:T,index:z,value:D,spending_signature_hex:C})=>({hash:T,index:z,is_confirmed:Y!==-1,is_spent:q,script_hex:W,txHex:C,value:D}))}function EB(X){return X.reduce((B,Z)=>B+Z.value,0)}function oX(X,B){let Z=[...X].sort((G,$)=>$.value-G.value);if(B){let G=[],$=0;for(let Q of Z)if(G.push(Q),$+=Q.value,$>=B)break;return G}return Z}async function iX({chain:X,address:B,apiKey:Z,targetValue:G,accumulativeValue:$=0,offset:Q=0,limit:J=30}){if(!B)throw new U.SwapKitError("toolbox_utxo_invalid_params",{error:"Address is required"});try{let j=await FB({address:B,apiKey:Z,chain:X,limit:J,offset:Q,targetValue:G}),W=j.length<J,Y=j.filter(({is_spent:M})=>!M),T=EB(Y),z=$+T,D=G&&z>=G;if(W||D)return oX(Y,G);let C=await iX({accumulativeValue:z,address:B,apiKey:Z,chain:X,limit:J,offset:Q+J,targetValue:G}),H=[...Y,...C];return oX(H,G)}catch(j){let q=j instanceof Error?j.message:String(j);return console.error(`Failed to fetch unspent UTXOs: ${q}`),[]}}async function kB({address:X,chain:B,apiKey:Z,fetchTxHex:G=!0,targetValue:$}){let Q=await iX({address:X,apiKey:Z,chain:B,targetValue:$}),J=[];for(let{hash:j,index:q,script_hex:W,value:Y}of Q){let T;if(G)T=await dX({apiKey:Z,chain:B,txHash:j});J.push({address:X,hash:j,index:q,txHex:T,value:Y,witnessUtxo:{script:Buffer.from(W,"hex"),value:Y}})}return J}function v(X){let B=U.SKConfig.get("apiKeys").blockchair||"";return U.warnOnce({condition:!B,id:"no_blockchair_api_key_warning",warning:"No Blockchair API key found. Functionality will be limited."}),{broadcastTx:(Z)=>NB({chain:X,txHash:Z}),getAddressData:(Z)=>rX({address:Z,apiKey:B,chain:X}),getBalance:(Z)=>AB({address:Z,apiKey:B,chain:X}),getRawTx:(Z)=>dX({apiKey:B,chain:X,txHash:Z}),getSuggestedTxFee:()=>yB(X),getUtxos:(Z)=>kB({...Z,apiKey:B,chain:X})}}function fB(X){return X}function A(){return function(B){switch(B){case U.Chain.Bitcoin:return uX.networks.bitcoin;case U.Chain.BitcoinCash:return m.default.bitcoincash.main.toBitcoinJS();case U.Chain.Dash:return m.default.dash.main.toBitcoinJS();case U.Chain.Litecoin:return m.default.litecoin.main.toBitcoinJS();case U.Chain.Dogecoin:{let Z={private:70615956,public:70617039},G=m.default.dogecoin.test;return G.versions.bip32=Z,m.default.dogecoin.main.toBitcoinJS()}case U.Chain.Zcash:return nX.networks.zcash;default:throw new U.SwapKitError("toolbox_utxo_not_supported",{chain:B})}}}var nX,U,uX,m;var sX=N(()=>{CX();nX=require("@bitgo/utxo-lib"),U=require("@swapkit/helpers"),uX=require("bitcoinjs-lib"),m=g(require("coininfo"))});function NX(X){try{return JX(X),!0}catch{return!1}}function OX(X){return JX(X)?.network}function l(X){let B=JX(X);if(B?.format==="legacy")return X;return VB(B)}function i(X){let B=JX(X);return wB(B)}function JX(X){try{let B=RB(X);if(B)return B}catch{}try{let B=PB(X);if(B)return B}catch{}throw new _X.SwapKitError("toolbox_utxo_invalid_address",{address:X})}function RB(X){try{let B=MX.default.decode(X);if(B.length!==21)throw new _X.SwapKitError("toolbox_utxo_invalid_address",{address:X});let Z=B[0],G=Array.prototype.slice.call(B,1);switch(Z){case K.legacy.mainnet.p2pkh:return{format:"legacy",hash:G,network:"mainnet",type:"p2pkh"};case K.legacy.mainnet.p2sh:return{format:"legacy",hash:G,network:"mainnet",type:"p2sh"};case K.legacy.testnet.p2pkh:return{format:"legacy",hash:G,network:"testnet",type:"p2pkh"};case K.legacy.testnet.p2sh:return{format:"legacy",hash:G,network:"testnet",type:"p2sh"};case K.bitpay.mainnet.p2pkh:return{format:"bitpay",hash:G,network:"mainnet",type:"p2pkh"};case K.bitpay.mainnet.p2sh:return{format:"bitpay",hash:G,network:"mainnet",type:"p2sh"};default:return}}catch{return}}function PB(X){if(X.indexOf(":")!==-1)try{return aX(X)}catch{}else{let B=["bitcoincash","bchtest","bchreg"];for(let Z of B)try{return aX(`${Z}:${X}`)}catch{}}return}function aX(X){try{let{hash:B,prefix:Z,type:G}=HX.default.decode(X);return{format:"cashaddr",hash:Array.prototype.slice.call(B,0),network:Z==="bitcoincash"?"mainnet":"testnet",type:G==="P2PKH"?"p2pkh":"p2sh"}}catch{return}}function VB(X){let B=K.legacy[X.network][X.type],Z=Buffer.alloc(1+X.hash.length);return Z[0]=B,Z.set(X.hash,1),MX.default.encode(Z)}function wB(X){let B=X.network==="mainnet"?"bitcoincash":"bchtest",Z=X.type==="p2pkh"?"P2PKH":"P2SH",G=new Uint8Array(X.hash);return HX.default.encode(B,Z,G)}var _X,MX,HX,vX,K;var tX=N(()=>{_X=require("@swapkit/helpers"),MX=g(require("bs58check")),HX=g(require("cashaddrjs"));((Z)=>{Z.Mainnet="mainnet";Z.Testnet="testnet"})(vX||={});K={["legacy"]:{["mainnet"]:{["p2pkh"]:0,["p2sh"]:5},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}},["bitpay"]:{["mainnet"]:{["p2pkh"]:28,["p2sh"]:40},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}}}});function F(X){let B=Buffer.from(X,"utf8");return jX.script.compile([jX.opcodes.OP_RETURN,B])}var eX,jX,KB=1000,qX=10,XB=10,SB=41,bB=107,WX,QX,$X,s=(X)=>{if(X.startsWith("bc1")||X.startsWith("tb1")||X.startsWith("ltc1")||X.startsWith("tltc1"))return"P2WPKH";if(X.startsWith("1")||X.startsWith("m")||X.startsWith("n")||X.startsWith("bitcoincash:q")||X.startsWith("bitcoincash:p")||X.startsWith("q")||X.startsWith("p")||X.startsWith("L")||X.startsWith("M")||X.startsWith("3")||X.startsWith("D")||X.startsWith("A")||X.startsWith("9")||X.startsWith("X")||X.startsWith("7")||X.startsWith("y")||X.startsWith("t1")||X.startsWith("t3")||X.startsWith("tm"))return"P2PKH";throw new eX.SwapKitError("toolbox_utxo_invalid_address",{address:X})},h=({inputs:X,outputs:B,feeRate:Z})=>{let G=X[0]&&"address"in X[0]&&X[0].address?s(X[0].address):"P2PKH",$=X.filter((J)=>J.value>=QX["type"in J?J.type:"P2PKH"]*Math.ceil(Z)).reduce((J,j)=>J+P(j),0),Q=B?.reduce((J,j)=>J+a(j),0)||$X[G];return qX+$+Q},P=(X)=>{if("type"in X)return QX[X.type];if("address"in X&&X.address)return QX[s(X.address)];return SB+bB},a=(X,B)=>{if(X?.script)return XB+X.script.length+(X.script.length>=74?2:1);if(B)return $X[B];return $X.P2PKH};var yX=N(()=>{eX=require("@swapkit/helpers"),jX=require("bitcoinjs-lib");((Z)=>{Z.P2PKH="P2PKH";Z.P2WPKH="P2WPKH"})(WX||={});QX={["P2PKH"]:148,["P2WPKH"]:68},$X={["P2PKH"]:34,["P2WPKH"]:31}});function LX(X){switch(X){case E.Chain.Bitcoin:case E.Chain.BitcoinCash:return 550;case E.Chain.Dash:case E.Chain.Litecoin:return 5500;case E.Chain.Dogecoin:return 1e5;case E.Chain.Zcash:return 546;default:throw new E.SwapKitError("toolbox_utxo_not_supported",{chain:X})}}function k({inputs:X,outputs:B,feeRate:Z=1,chain:G=E.Chain.Bitcoin,changeAddress:$=""}){let Q=Math.ceil(Z),J=X[0]&&"address"in X[0]&&X[0].address?s(X[0].address):"P2PKH",j=X.filter((D)=>P(D)*Q<=D.value),q=qX+B.reduce((D,C)=>D+a(C,J),0),W=B.reduce((D,C)=>D+C.value,0),Y=q*Q,T=0,z=[];for(let D of j){let C=P(D),H=Q*C;Y+=H,T+=D.value,z.push(D);let M=Y+W;if(T<M)continue;let u=T-M,w=Q*a({address:"",value:0},J);if(u>w){let SX=w+Y,bX=T-(W+SX);if(bX>Math.max(P({})*Q,LX(G)))return{fee:SX,inputs:z,outputs:B.concat({address:$,value:bX})}}return{fee:Y,inputs:z,outputs:B}}return{fee:Q*h({feeRate:Q,inputs:X,outputs:B})}}var E;var BB=N(()=>{yX();E=require("@swapkit/helpers")});var c=N(()=>{sX();tX();BB();yX()});function S(X){return X.replace(/(bchtest:|bitcoincash:)/,"")}function V(X){let B=S(X);return NX(B)&&OX(B)==="mainnet"}function p(X){try{if(X.startsWith("z"))return console.warn("Shielded Zcash addresses (z-addresses) are not supported. Use transparent addresses (t1/t3) only."),!1;let B=YX.networks.zcash;try{return YX.address.toOutputScript(X,B),!0}catch{let Z=ZB.default.decode(X);if(Z.length<21)return!1;let G=Z[0];return G===B.pubKeyHash||G===B.scriptHash}}catch{return!1}}var YX,ZB;var t=N(()=>{c();YX=require("@bitgo/utxo-lib"),ZB=g(require("bs58check"))});function QB({inputs:X,outputs:B,chain:Z,psbt:G,sender:$,compiledMemo:Q}){for(let J of X){let j=!!J.witnessUtxo&&!e.includes(Z)&&{witnessUtxo:J.witnessUtxo},q=e.includes(Z)&&{nonWitnessUtxo:J.txHex?Buffer.from(J.txHex,"hex"):void 0};G.addInput({hash:J.hash,index:J.index,...j,...q})}for(let J of B){let j="address"in J&&J.address?J.address:$,q=J.script;if(q&&!Q)continue;let W=q?{script:Q,value:0}:{address:j,value:J.value};f.initEccLib(TX.default),G.addOutput(W)}return{inputs:X,psbt:G}}async function $B({assetValue:X,recipient:B,memo:Z,feeRate:G,sender:$,fetchTxHex:Q=!1}){let J=X.chain,j=Z?await F(Z):null,q=await WB({assetValue:X,fetchTxHex:Q,memo:Z,recipient:B,sender:$}),{inputs:W,outputs:Y}=k({...q,chain:J,feeRate:G});if(!(W&&Y))throw new L.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue:X,sender:$});let T=await A(),z=new f.Psbt({network:T(J)});if(J===L.Chain.Dogecoin)z.setMaximumFeeRate(650000000);let{psbt:D,inputs:C}=await QB({chain:J,compiledMemo:j,inputs:W,outputs:Y,psbt:z,sender:$});return{inputs:C,psbt:D,utxos:q.inputs}}async function jB(){let X=await A();return function({address:Z,chain:G}){if(G===L.Chain.BitcoinCash)return V(Z);if(G===L.Chain.Zcash)return p(Z);try{return f.initEccLib(TX.default),f.address.toOutputScript(Z,X(G)),!0}catch{return!1}}}async function xB({chain:X,phrase:B,derivationPath:Z}){let G=(await XX(X))({derivationPath:Z,phrase:B});async function $(J){return await J.signAllInputs(G),J}function Q(){return FX(X)(G)}return{getAddress:Q,signTransaction:$}}async function b({chain:X,...B}){let Z="phrase"in B?B.phrase:void 0,G="index"in B?B.index||0:0,$=L.derivationPathToString("derivationPath"in B&&B.derivationPath?B.derivationPath:L.updateDerivationPath(L.NetworkDerivationPath[X],{index:G})),Q=Z?await xB({chain:X,derivationPath:$,phrase:Z}):("signer"in B)?B.signer:void 0;function J(){return Promise.resolve(Q?.getAddress())}let j=await jB(),q=await XX(X);return{accumulative:k,broadcastTx:(W)=>v(X).broadcastTx(W),calculateTxSize:h,createKeysForPath:q,createTransaction:$B,estimateMaxSendableAmount:gB(X),estimateTransactionFee:mB(X),getAddress:J,getAddressFromKeys:FX(X),getBalance:cX(X),getFeeRates:()=>BX(X),getInputsOutputsFee:qB,getPrivateKeyFromMnemonic:(W)=>{return q(W).toWIF()},transfer:lB(Q),validateAddress:(W)=>j({address:W,chain:X})}}async function qB({assetValue:X,feeOptionKey:B=L.FeeOption.Fast,feeRate:Z,memo:G,sender:$,recipient:Q}){let J=X.chain,j=await WB({assetValue:X,memo:G,recipient:Q,sender:$}),q=Z?Math.floor(Z):(await BX(J))[B];return k({...j,chain:J,feeRate:q})}function gB(X){return async function({from:Z,memo:G,feeRate:$,feeOptionKey:Q=L.FeeOption.Fast,recipients:J=1}){let j=await v(X).getAddressData(Z),q=$?Math.ceil($):(await BX(X))[Q],W=j?.utxo.map((C)=>({...C,hash:"",type:"P2PKH"})).filter((C)=>C.value>Math.max(LX(X),P(C)*q));if(!W?.length)return L.AssetValue.from({chain:X});let Y=L.AssetValue.from({chain:X,value:W.reduce((C,H)=>C+H.value,0)}),T=typeof J==="number"?Array.from({length:J},()=>({address:Z,value:0})):J;if(G){let C=await F(G);T.push({address:Z,script:C,value:0})}let D=h({feeRate:q,inputs:W,outputs:T})*q;return Y.sub(D)}}function mB(X){return async(B)=>{let Z=await qB(B);return L.AssetValue.from({chain:X,value:L.SwapKitNumber.fromBigInt(BigInt(Z.fee),8).getValue("string")})}}async function XX(X){let B=await A();switch(X){case L.Chain.BitcoinCash:return function({phrase:G,derivationPath:$=`${L.DerivationPath.BCH}/0`,wif:Q}){let J=B(X);if(Q)return DX.ECPair.fromWIF(Q,J);if(!G)throw new L.SwapKitError("toolbox_utxo_invalid_params",{error:"No phrase provided"});return DX.HDNode.fromSeedBuffer(Buffer.from(AX.mnemonicToSeedSync(G)),J).derivePath($).keyPair};case L.Chain.Bitcoin:case L.Chain.Dogecoin:case L.Chain.Litecoin:case L.Chain.Zcash:case L.Chain.Dash:return function({phrase:G,wif:$,derivationPath:Q}){if(!($||G))throw new L.SwapKitError("toolbox_utxo_invalid_params",{error:"Either phrase or wif must be provided"});let J=JB.ECPairFactory(TX.default),j=B(X);if($)return J.fromWIF($,j);let q=AX.mnemonicToSeedSync(G),W=GB.HDKey.fromMasterSeed(q,j).derive(Q);if(!W.privateKey)throw new L.SwapKitError("toolbox_utxo_invalid_params",{error:"Could not get private key from phrase"});return J.fromPrivateKey(Buffer.from(W.privateKey),{network:j})};default:throw new L.SwapKitError("toolbox_utxo_not_supported",{chain:X})}}function FX(X){let B=A();return function(G){if(!G)throw new L.SwapKitError("toolbox_utxo_invalid_params",{error:"Keys must be provided"});let $=e.includes(X)?f.payments.p2pkh:f.payments.p2wpkh,{address:Q}=$({network:B(X),pubkey:G.publicKey});if(!Q)throw new L.SwapKitError("toolbox_utxo_invalid_address",{error:"Address not defined"});return Q}}function lB(X){return async function({memo:Z,recipient:G,feeOptionKey:$,feeRate:Q,assetValue:J}){let j=await X?.getAddress(),q=J.chain;if(!(X&&j))throw new L.SwapKitError("toolbox_utxo_no_signer");if(!G)throw new L.SwapKitError("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});let W=Q||(await BX(q))[$||L.FeeOption.Fast],{psbt:Y}=await $B({assetValue:J,feeRate:W,memo:Z,recipient:G,sender:j}),T=await X.signTransaction(Y);return T.finalizeAllInputs(),v(q).broadcastTx(T.extractTransaction().toHex())}}async function BX(X){let B=await v(X).getSuggestedTxFee();return{[L.FeeOption.Average]:B,[L.FeeOption.Fast]:L.applyFeeMultiplier(B,L.FeeOption.Fast),[L.FeeOption.Fastest]:L.applyFeeMultiplier(B,L.FeeOption.Fastest)}}async function WB({assetValue:X,recipient:B,memo:Z,sender:G,fetchTxHex:$=!1}){let Q=X.chain,J=(await BX(Q))[L.FeeOption.Fastest],j=$||e.includes(Q),q=X.getBaseValue("number"),W=Math.ceil(q+J*5000);return{inputs:await v(Q).getUtxos({address:G,fetchTxHex:j,targetValue:W}),outputs:[{address:B,value:q},...Z?[{address:"",script:await F(Z),value:0}]:[]]}}var TX,DX,GB,AX,L,f,JB,e;var ZX=N(()=>{CX();c();t();TX=g(require("@bitcoinerlab/secp256k1")),DX=require("@psf/bitcoincashjs-lib"),GB=require("@scure/bip32"),AX=require("@scure/bip39"),L=require("@swapkit/helpers"),f=require("bitcoinjs-lib"),JB=require("ecpair"),e=[L.Chain.Dash,L.Chain.Dogecoin,L.Chain.Zcash,L.Chain.BitcoinCash]});function x(X){return S(i(X))}function hB(X){function B({builder:G,utxos:$}){return $.forEach((Q,J)=>{G.sign(J,X,void 0,65,Q.witnessUtxo?.value)}),G.build()}return{getAddress:()=>{let G=X.getAddress(0);return Promise.resolve(x(G))},signTransaction:B}}async function EX(X){let B="phrase"in X?X.phrase:void 0,Z="index"in X?X.index||0:0,G=_.derivationPathToString("derivationPath"in X&&X.derivationPath?X.derivationPath:_.updateDerivationPath(_.NetworkDerivationPath[O],{index:Z})),$=B?(await XX(O))({derivationPath:G,phrase:B}):void 0,Q=$?hB($):("signer"in X)?X.signer:void 0;function J(){return Promise.resolve(Q?.getAddress())}let{getBalance:j,getFeeRates:q,broadcastTx:W,...Y}=await b({chain:O});function T(z,D=!0){return j(S(i(z)))}return{...Y,broadcastTx:W,buildTx:pB,createTransaction:YB,getAddress:J,getAddressFromKeys:oB,getBalance:T,getFeeRates:q,stripPrefix:S,stripToCashAddress:x,transfer:cB({broadcastTx:W,getFeeRates:q,signer:Q}),validateAddress:V}}async function YB({assetValue:X,recipient:B,memo:Z,feeRate:G,sender:$}){if(!V(B))throw new _.SwapKitError("toolbox_utxo_invalid_address",{address:B});let Q=Math.ceil(X.getBaseValue("number")+G*7500),J=await v(O).getUtxos({address:x($),fetchTxHex:!0,targetValue:Q}),j=Z?await F(Z):null,q=[];q.push({address:B,value:X.getBaseValue("number")});let{inputs:W,outputs:Y}=k({chain:O,feeRate:G,inputs:J,outputs:q});if(!(W&&Y))throw new _.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue:X,sender:$});let T=await A(),z=new o.TransactionBuilder(T(O));await Promise.all(W.map(async(D)=>{let C=await v(O).getRawTx(D.hash);z.addInput(o.Transaction.fromBuffer(Buffer.from(C,"hex")),D.index)}));for(let D of Y){let C="address"in D&&D.address?D.address:l($),H=await A(),M=o.address.toOutputScript(l(C),H(O));z.addOutput(M,D.value)}if(j)z.addOutput(j,0);return{builder:z,utxos:W}}function cB({broadcastTx:X,getFeeRates:B,signer:Z}){return async function({recipient:$,assetValue:Q,feeOptionKey:J=_.FeeOption.Fast,...j}){let q=await Z?.getAddress();if(!(Z&&q))throw new _.SwapKitError("toolbox_utxo_no_signer");if(!$)throw new _.SwapKitError("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});let W=j.feeRate||(await B())[J],{builder:Y,utxos:T}=await YB({...j,assetValue:Q,feeRate:W,recipient:$,sender:q}),D=(await Z.signTransaction({builder:Y,utxos:T})).toHex();return X(D)}}async function pB({assetValue:X,recipient:B,memo:Z,feeRate:G,sender:$,setSigHashType:Q}){let J=i(B);if(!V(J))throw new _.SwapKitError("toolbox_utxo_invalid_address",{address:J});let j=Math.ceil(X.getBaseValue("number")+G*7500),q=await v(O).getUtxos({address:x($),fetchTxHex:!1,targetValue:j}),W=Number(G.toFixed(0)),Y=Z?await F(Z):null,T=[];if(T.push({address:l(B),value:X.getBaseValue("number")}),Y)T.push({script:Y,value:0});let{inputs:z,outputs:D}=k({chain:O,feeRate:W,inputs:q,outputs:T});if(!(z&&D))throw new _.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue:X,sender:$});let C=await A(),H=new LB.Psbt({network:C(O)});for(let{hash:M,index:u,witnessUtxo:w}of z)H.addInput({hash:M,index:u,sighashType:Q?65:void 0,witnessUtxo:w});for(let M of D){let u="address"in M&&M.address?M.address:l($),w=M.script?Y?{script:Y,value:0}:void 0:{address:u,value:M.value};if(w)H.addOutput(w)}return{inputs:z,psbt:H,utxos:q}}function oB(X){let B=X.getAddress(0);return x(B)}var o,_,LB,O;var UX=N(()=>{c();ZX();t();o=require("@psf/bitcoincashjs-lib"),_=require("@swapkit/helpers"),LB=require("bitcoinjs-lib"),O=_.Chain.BitcoinCash});function fX(){return y.networks.zcash}function UB(){return{bech32:void 0,bip32:{private:76066276,public:76067358},messagePrefix:`\x18ZCash Signed Message:
|
|
2
|
+
`,pubKeyHash:28,scriptHash:28,wif:128}}function nB({phrase:X,derivationPath:B}){let Z=PX.mnemonicToSeedSync(X),$=RX.HDKey.fromMasterSeed(Z).derive(B);if(!$.privateKey)throw new I.SwapKitError("toolbox_utxo_invalid_params");let Q=UB(),J=y.ECPair.fromPrivateKey(Buffer.from($.privateKey),{network:Q}),j=y.crypto.hash160(J.publicKey),{isStagenet:q}=I.SKConfig.get("envs"),W=q?Buffer.from([29,37]):Buffer.from([28,184]),Y=Buffer.concat([W,j]),T=DB.default.encode(Y);return{getAddress:()=>Promise.resolve(T),signTransaction:(z)=>{let D=z.signAllInputs(J);return Promise.resolve(D)}}}function uB({inputs:X,outputs:B,psbt:Z,sender:G,compiledMemo:$}){for(let Q of X){let J=!!Q.witnessUtxo&&{witnessUtxo:{...Q.witnessUtxo,value:BigInt(Q.value)}},j=!Q.witnessUtxo&&{nonWitnessUtxo:Q.txHex?Buffer.from(Q.txHex,"hex"):void 0};Z.addInput({hash:Q.hash,index:Q.index,...J,...j})}for(let Q of B){let J="address"in Q&&Q.address?Q.address:G,j=Q.script;if(j&&!$)continue;let q=j?{script:$,value:0n}:{script:y.address.toOutputScript(J,fX()),value:BigInt(Q.value)};Z.addOutput(q)}return{inputs:X,psbt:Z}}async function TB(X){let{assetValue:B,recipient:Z,memo:G,feeRate:$,sender:Q,fetchTxHex:J}=X,j=G?F(G):null,q=await v(I.Chain.Zcash).getUtxos({address:Q,fetchTxHex:J!==!1}),W=[{address:Z,value:Number(B.getBaseValue("string"))},...j?[{script:j,value:0}]:[]],{inputs:Y,outputs:T}=k({chain:I.Chain.Zcash,changeAddress:Q,feeRate:$,inputs:q,outputs:W});if(!(Y&&T))throw new I.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue:B,sender:Q});let z=y.bitgo.createPsbtForNetwork({network:fX()},{version:kX.ZcashTransaction.VERSION4_BRANCH_NU6_1}),{psbt:D,inputs:C}=await uB({compiledMemo:j,inputs:Y,outputs:T,psbt:z,sender:Q});return D.setDefaultsForVersion(fX(),kX.ZcashTransaction.VERSION4_BRANCH_NU6_1),{inputs:C,outputs:T,psbt:D}}async function VX(X){let B=await n.match(X).with({signer:n.P.not(n.P.nullish)},({signer:J})=>Promise.resolve(J)).with({phrase:n.P.string},({phrase:J,derivationPath:j,index:q=0})=>{let W=j||I.NetworkDerivationPath[I.Chain.Zcash]||[44,133,0,0,0],Y=I.updateDerivationPath(W,{index:q}),T=I.derivationPathToString(Y);return nB({derivationPath:T,phrase:J})}).otherwise(()=>Promise.resolve(void 0)),Z=await b({chain:I.Chain.Zcash,signer:B});async function G({recipient:J,assetValue:j,feeOptionKey:q=I.FeeOption.Fast,...W}){let Y=await B?.getAddress();if(!(B&&Y))throw new I.SwapKitError("toolbox_utxo_no_signer");let T=W.feeRate||(await Z.getFeeRates())[q],{psbt:z}=await TB({...W,assetValue:j,feeRate:T,recipient:J,sender:Y}),D=await B.signTransaction(z);D.validateSignaturesOfAllInputs(),D.finalizeAllInputs();let H=D.extractTransaction().toHex();return Z.broadcastTx(H)}function $({phrase:J,derivationPath:j="m/44'/133'/0'/0/0"}){let q=PX.mnemonicToSeedSync(J),Y=RX.HDKey.fromMasterSeed(q).derive(j);if(!Y.privateKey)throw new I.SwapKitError("toolbox_utxo_invalid_params");let T=UB();return y.ECPair.fromPrivateKey(Buffer.from(Y.privateKey),{network:T})}function Q({phrase:J,derivationPath:j="m/44'/133'/0'/0/0"}){return $({derivationPath:j,phrase:J}).toWIF()}return{...Z,createKeysForPath:$,createTransaction:TB,getPrivateKeyFromMnemonic:Q,transfer:G,validateAddress:p}}var y,kX,RX,PX,I,DB,n;var wX=N(()=>{c();ZX();t();y=require("@bitgo/utxo-lib"),kX=require("@bitgo/utxo-lib/dist/src/bitgo"),RX=require("@scure/bip32"),PX=require("@scure/bip39"),I=require("@swapkit/helpers"),DB=g(require("bs58check")),n=require("ts-pattern")});async function rB(X,B){switch(X){case R.Chain.BitcoinCash:return await EX(B||{});case R.Chain.Zcash:return await VX(B);case R.Chain.Bitcoin:case R.Chain.Dogecoin:case R.Chain.Litecoin:case R.Chain.Dash:return await b({chain:X,...B});default:throw new R.SwapKitError("toolbox_utxo_not_supported",{chain:X})}}var R;var zB=N(()=>{UX();ZX();wX();UX();t();R=require("@swapkit/helpers")});var dB={};HB(dB,{validateZcashAddress:()=>p,toLegacyAddress:()=>l,toCashAddress:()=>i,stripToCashAddress:()=>x,stripPrefix:()=>S,nonSegwitChains:()=>e,isValidAddress:()=>NX,getUtxoToolbox:()=>rB,getUtxoNetwork:()=>A,getUtxoApi:()=>v,getUTXOAddressValidator:()=>jB,getScriptTypeForAddress:()=>s,getOutputSize:()=>a,getInputSize:()=>P,getDustThreshold:()=>LX,getCreateKeysForPath:()=>XX,detectAddressNetwork:()=>OX,createZcashToolbox:()=>VX,createUTXOToolbox:()=>b,createCustomUtxoApi:()=>fB,createBCHToolbox:()=>EX,compileMemo:()=>F,calculateTxSize:()=>h,bchValidateAddress:()=>V,addressFromKeysGetter:()=>FX,addInputsAndOutputs:()=>QB,accumulative:()=>k,UtxoNetwork:()=>vX,UTXOScriptType:()=>WX,TX_OVERHEAD:()=>qX,OutputSizes:()=>$X,OP_RETURN_OVERHEAD:()=>XB,MIN_TX_FEE:()=>KB,InputSizes:()=>QX});module.exports=MB(dB);var iB=N(()=>{c();zB();UX();ZX();wX()});iB();
|
|
3
3
|
|
|
4
|
-
//# debugId=
|
|
4
|
+
//# debugId=B6E9FB8356387C7E64756E2164756E21
|
|
5
5
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -11,11 +11,11 @@
|
|
|
11
11
|
"import { networks, address as zcashAddress } from \"@bitgo/utxo-lib\";\nimport bs58check from \"bs58check\";\nimport { UtxoNetwork as bchNetwork, detectAddressNetwork, isValidAddress } from \"../helpers\";\n\nexport function stripPrefix(address: string) {\n return address.replace(/(bchtest:|bitcoincash:)/, \"\");\n}\n\nexport function bchValidateAddress(address: string) {\n const strippedAddress = stripPrefix(address);\n return isValidAddress(strippedAddress) && detectAddressNetwork(strippedAddress) === bchNetwork.Mainnet;\n}\n\nexport function validateZcashAddress(address: string): boolean {\n try {\n if (address.startsWith(\"z\")) {\n console.warn(\"Shielded Zcash addresses (z-addresses) are not supported. Use transparent addresses (t1/t3) only.\");\n return false;\n }\n\n const network = networks.zcash;\n\n try {\n zcashAddress.toOutputScript(address, network);\n return true;\n } catch {\n const decoded = bs58check.decode(address);\n if (decoded.length < 21) return false;\n\n const version = decoded[0];\n return version === network.pubKeyHash || version === network.scriptHash;\n }\n } catch {\n return false;\n }\n}\n",
|
|
12
12
|
"import secp256k1 from \"@bitcoinerlab/secp256k1\";\n// @ts-expect-error\nimport { ECPair, HDNode } from \"@psf/bitcoincashjs-lib\";\nimport { HDKey } from \"@scure/bip32\";\nimport { mnemonicToSeedSync } from \"@scure/bip39\";\nimport {\n AssetValue,\n applyFeeMultiplier,\n Chain,\n type ChainSigner,\n DerivationPath,\n type DerivationPathArray,\n derivationPathToString,\n FeeOption,\n NetworkDerivationPath,\n SwapKitError,\n SwapKitNumber,\n type UTXOChain,\n updateDerivationPath,\n} from \"@swapkit/helpers\";\nimport { address as btcLibAddress, initEccLib, Psbt, payments } from \"bitcoinjs-lib\";\nimport type { ECPairInterface } from \"ecpair\";\nimport { ECPairFactory } from \"ecpair\";\nimport { getBalance } from \"../../utils\";\nimport {\n accumulative,\n calculateTxSize,\n compileMemo,\n getDustThreshold,\n getInputSize,\n getUtxoApi,\n getUtxoNetwork,\n UTXOScriptType,\n} from \"../helpers\";\nimport type { BchECPair, TargetOutput, UTXOBuildTxParams, UTXOTransferParams, UTXOType } from \"../types\";\nimport type { UtxoToolboxParams } from \"./params\";\nimport { bchValidateAddress, validateZcashAddress } from \"./validators\";\n\nexport const nonSegwitChains: UTXOChain[] = [Chain.Dash, Chain.Dogecoin, Chain.Zcash, Chain.BitcoinCash];\n\nexport function addInputsAndOutputs({\n inputs,\n outputs,\n chain,\n psbt,\n sender,\n compiledMemo,\n}: {\n inputs: UTXOType[];\n outputs: TargetOutput[];\n chain: UTXOChain;\n psbt: Psbt;\n sender: string;\n compiledMemo: Buffer<ArrayBufferLike> | null;\n}) {\n for (const utxo of inputs) {\n const witnessInfo = !!utxo.witnessUtxo && !nonSegwitChains.includes(chain) && { witnessUtxo: utxo.witnessUtxo };\n\n const nonWitnessInfo = nonSegwitChains.includes(chain) && {\n nonWitnessUtxo: utxo.txHex ? Buffer.from(utxo.txHex, \"hex\") : undefined,\n };\n\n psbt.addInput({ hash: utxo.hash, index: utxo.index, ...witnessInfo, ...nonWitnessInfo });\n }\n\n for (const output of outputs) {\n const address = \"address\" in output && output.address ? output.address : sender;\n const hasOutputScript = output.script;\n\n if (hasOutputScript && !compiledMemo) {\n continue;\n }\n\n const mappedOutput = hasOutputScript\n ? { script: compiledMemo as Buffer<ArrayBufferLike>, value: 0 }\n : { address, value: output.value };\n\n initEccLib(secp256k1);\n psbt.addOutput(mappedOutput);\n }\n\n return { inputs, psbt };\n}\n\nasync function createTransaction({\n assetValue,\n recipient,\n memo,\n feeRate,\n sender,\n fetchTxHex = false,\n}: UTXOBuildTxParams): Promise<{ psbt: Psbt; utxos: UTXOType[]; inputs: UTXOType[] }> {\n const chain = assetValue.chain as UTXOChain;\n const compiledMemo = memo ? await compileMemo(memo) : null;\n\n const inputsAndOutputs = await getInputsAndTargetOutputs({ assetValue, fetchTxHex, memo, recipient, sender });\n\n const { inputs, outputs } = accumulative({ ...inputsAndOutputs, chain, feeRate });\n\n // .inputs and .outputs will be undefined if no solution was found\n if (!(inputs && outputs)) throw new SwapKitError(\"toolbox_utxo_insufficient_balance\", { assetValue, sender });\n const getNetwork = await getUtxoNetwork();\n const psbt = new Psbt({ network: getNetwork(chain) });\n\n if (chain === Chain.Dogecoin) psbt.setMaximumFeeRate(650000000);\n\n const { psbt: mappedPsbt, inputs: mappedInputs } = await addInputsAndOutputs({\n chain,\n compiledMemo,\n inputs,\n outputs,\n psbt,\n sender,\n });\n\n return { inputs: mappedInputs, psbt: mappedPsbt, utxos: inputsAndOutputs.inputs };\n}\n\nexport async function getUTXOAddressValidator() {\n const getNetwork = await getUtxoNetwork();\n\n return function validateAddress({ address, chain }: { address: string; chain: UTXOChain }) {\n if (chain === Chain.BitcoinCash) {\n return bchValidateAddress(address);\n }\n\n if (chain === Chain.Zcash) {\n return validateZcashAddress(address);\n }\n\n try {\n initEccLib(secp256k1);\n btcLibAddress.toOutputScript(address, getNetwork(chain));\n return true;\n } catch {\n return false;\n }\n };\n}\n\nasync function createSignerWithKeys({\n chain,\n phrase,\n derivationPath,\n}: {\n chain: UTXOChain;\n phrase: string;\n derivationPath: string;\n}) {\n const keyPair = (await getCreateKeysForPath(chain as typeof Chain.Bitcoin))({ derivationPath, phrase });\n\n async function signTransaction(psbt: Psbt) {\n await psbt.signAllInputs(keyPair);\n return psbt;\n }\n\n function getAddress() {\n const addressGetter = addressFromKeysGetter(chain);\n return addressGetter(keyPair);\n }\n\n return { getAddress, signTransaction };\n}\n\nexport async function createUTXOToolbox<T extends UTXOChain>({\n chain,\n ...toolboxParams\n}: (UtxoToolboxParams[T] | { phrase?: string; derivationPath?: DerivationPathArray; index?: number }) & { chain: T }) {\n const phrase = \"phrase\" in toolboxParams ? toolboxParams.phrase : undefined;\n\n const index = \"index\" in toolboxParams ? toolboxParams.index || 0 : 0;\n\n const derivationPath = derivationPathToString(\n \"derivationPath\" in toolboxParams && toolboxParams.derivationPath\n ? toolboxParams.derivationPath\n : updateDerivationPath(NetworkDerivationPath[chain], { index }),\n );\n\n const signer = phrase\n ? await createSignerWithKeys({ chain, derivationPath, phrase })\n : \"signer\" in toolboxParams\n ? toolboxParams.signer\n : undefined;\n\n function getAddress() {\n return Promise.resolve(signer?.getAddress());\n }\n\n // const { signer } = params || {};\n const validateAddress = await getUTXOAddressValidator();\n const createKeysForPath = await getCreateKeysForPath(chain);\n\n return {\n accumulative,\n broadcastTx: (txHash: string) => getUtxoApi(chain).broadcastTx(txHash),\n calculateTxSize,\n createKeysForPath,\n createTransaction,\n estimateMaxSendableAmount: estimateMaxSendableAmount(chain),\n estimateTransactionFee: estimateTransactionFee(chain),\n getAddress,\n getAddressFromKeys: addressFromKeysGetter(chain),\n\n getBalance: getBalance(chain),\n getFeeRates: () => getFeeRates(chain),\n getInputsOutputsFee,\n getPrivateKeyFromMnemonic: (params: { phrase: string; derivationPath: string }) => {\n const keys = createKeysForPath(params);\n return keys.toWIF();\n },\n transfer: transfer(signer as UtxoToolboxParams[\"BTC\"][\"signer\"]),\n validateAddress: (address: string) => validateAddress({ address, chain }),\n };\n}\n\nasync function getInputsOutputsFee({\n assetValue,\n feeOptionKey = FeeOption.Fast,\n feeRate,\n memo,\n sender,\n recipient,\n}: Omit<UTXOBuildTxParams, \"feeRate\"> & { feeOptionKey?: FeeOption; feeRate?: number }) {\n const chain = assetValue.chain as UTXOChain;\n\n const inputsAndOutputs = await getInputsAndTargetOutputs({ assetValue, memo, recipient, sender });\n\n const feeRateWhole = feeRate ? Math.floor(feeRate) : (await getFeeRates(chain))[feeOptionKey];\n\n return accumulative({ ...inputsAndOutputs, chain, feeRate: feeRateWhole });\n}\n\nfunction estimateMaxSendableAmount(chain: UTXOChain) {\n return async function estimateMaxSendableAmount({\n from,\n memo,\n feeRate,\n feeOptionKey = FeeOption.Fast,\n recipients = 1,\n }: {\n from: string;\n memo?: string;\n feeRate?: number;\n feeOptionKey?: FeeOption;\n recipients?: number | TargetOutput[];\n }) {\n const addressData = await getUtxoApi(chain).getAddressData(from);\n const feeRateWhole = feeRate ? Math.ceil(feeRate) : (await getFeeRates(chain))[feeOptionKey];\n\n const inputs = addressData?.utxo\n .map((utxo) => ({\n ...utxo,\n hash: \"\",\n // type: utxo.witnessUtxo ? UTXOScriptType.P2WPKH : UTXOScriptType.P2PKH,\n type: UTXOScriptType.P2PKH,\n }))\n .filter((utxo) => utxo.value > Math.max(getDustThreshold(chain), getInputSize(utxo) * feeRateWhole));\n\n if (!inputs?.length) return AssetValue.from({ chain });\n\n const balance = AssetValue.from({ chain, value: inputs.reduce((sum, utxo) => sum + utxo.value, 0) });\n\n const outputs =\n typeof recipients === \"number\"\n ? (Array.from({ length: recipients }, () => ({ address: from, value: 0 })) as TargetOutput[])\n : recipients;\n\n if (memo) {\n const script = await compileMemo(memo);\n outputs.push({ address: from, script, value: 0 });\n }\n\n const txSize = calculateTxSize({ feeRate: feeRateWhole, inputs, outputs });\n\n const fee = txSize * feeRateWhole;\n\n return balance.sub(fee);\n };\n}\n\nfunction estimateTransactionFee(chain: UTXOChain) {\n return async (params: {\n assetValue: AssetValue;\n recipient: string;\n sender: string;\n memo?: string;\n feeOptionKey?: FeeOption;\n feeRate?: number;\n fetchTxHex?: boolean;\n }) => {\n const inputFees = await getInputsOutputsFee(params);\n\n return AssetValue.from({ chain, value: SwapKitNumber.fromBigInt(BigInt(inputFees.fee), 8).getValue(\"string\") });\n };\n}\n\ntype CreateKeysForPathReturnType = {\n [Chain.BitcoinCash]: BchECPair;\n [Chain.Bitcoin]: ECPairInterface;\n [Chain.Dash]: ECPairInterface;\n [Chain.Dogecoin]: ECPairInterface;\n [Chain.Litecoin]: ECPairInterface;\n [Chain.Zcash]: ECPairInterface;\n};\n\nexport async function getCreateKeysForPath<T extends keyof CreateKeysForPathReturnType>(\n chain: T,\n): Promise<(params: { wif?: string; phrase?: string; derivationPath?: string }) => CreateKeysForPathReturnType[T]> {\n const getNetwork = await getUtxoNetwork();\n\n switch (chain) {\n case Chain.BitcoinCash: {\n return function createKeysForPath({\n phrase,\n derivationPath = `${DerivationPath.BCH}/0`,\n wif,\n }: {\n wif?: string;\n phrase?: string;\n derivationPath?: string;\n }) {\n const network = getNetwork(chain);\n\n if (wif) {\n return ECPair.fromWIF(wif, network) as BchECPair;\n }\n if (!phrase) throw new SwapKitError(\"toolbox_utxo_invalid_params\", { error: \"No phrase provided\" });\n\n const masterHDNode = HDNode.fromSeedBuffer(Buffer.from(mnemonicToSeedSync(phrase)), network);\n const keyPair = masterHDNode.derivePath(derivationPath).keyPair;\n\n return keyPair as BchECPair;\n } as (params: { wif?: string; phrase?: string; derivationPath?: string }) => CreateKeysForPathReturnType[T];\n }\n case Chain.Bitcoin:\n case Chain.Dogecoin:\n case Chain.Litecoin:\n case Chain.Zcash:\n case Chain.Dash: {\n return function createKeysForPath({\n phrase,\n wif,\n derivationPath,\n }: {\n phrase?: string;\n wif?: string;\n derivationPath: string;\n }) {\n if (!(wif || phrase))\n throw new SwapKitError(\"toolbox_utxo_invalid_params\", { error: \"Either phrase or wif must be provided\" });\n\n const factory = ECPairFactory(secp256k1);\n const network = getNetwork(chain);\n\n if (wif) return factory.fromWIF(wif, network);\n\n const seed = mnemonicToSeedSync(phrase as string);\n const master = HDKey.fromMasterSeed(seed, network).derive(derivationPath);\n if (!master.privateKey)\n throw new SwapKitError(\"toolbox_utxo_invalid_params\", { error: \"Could not get private key from phrase\" });\n\n return factory.fromPrivateKey(Buffer.from(master.privateKey), { network });\n } as (params: { wif?: string; phrase?: string; derivationPath?: string }) => CreateKeysForPathReturnType[T];\n }\n default:\n throw new SwapKitError(\"toolbox_utxo_not_supported\", { chain });\n }\n}\n\nexport function addressFromKeysGetter(chain: UTXOChain) {\n const getNetwork = getUtxoNetwork();\n\n return function getAddressFromKeys(keys: ECPairInterface | BchECPair) {\n if (!keys) throw new SwapKitError(\"toolbox_utxo_invalid_params\", { error: \"Keys must be provided\" });\n\n const method = nonSegwitChains.includes(chain) ? payments.p2pkh : payments.p2wpkh;\n const { address } = method({ network: getNetwork(chain), pubkey: keys.publicKey as Buffer });\n if (!address) throw new SwapKitError(\"toolbox_utxo_invalid_address\", { error: \"Address not defined\" });\n\n return address;\n };\n}\n\nfunction transfer(signer?: ChainSigner<Psbt, Psbt>) {\n return async function transfer({ memo, recipient, feeOptionKey, feeRate, assetValue }: UTXOTransferParams) {\n const from = await signer?.getAddress();\n\n const chain = assetValue.chain as UTXOChain;\n\n if (!(signer && from)) throw new SwapKitError(\"toolbox_utxo_no_signer\");\n if (!recipient)\n throw new SwapKitError(\"toolbox_utxo_invalid_params\", { error: \"Recipient address must be provided\" });\n const txFeeRate = feeRate || (await getFeeRates(chain))[feeOptionKey || FeeOption.Fast];\n\n const { psbt } = await createTransaction({ assetValue, feeRate: txFeeRate, memo, recipient, sender: from });\n const signedPsbt = await signer.signTransaction(psbt);\n signedPsbt.finalizeAllInputs(); // Finalise inputs\n // TX extracted and formatted to hex\n return getUtxoApi(chain).broadcastTx(signedPsbt.extractTransaction().toHex());\n };\n}\n\nasync function getFeeRates(chain: UTXOChain) {\n const suggestedFeeRate = await getUtxoApi(chain).getSuggestedTxFee();\n\n return {\n [FeeOption.Average]: suggestedFeeRate,\n [FeeOption.Fast]: applyFeeMultiplier(suggestedFeeRate, FeeOption.Fast),\n [FeeOption.Fastest]: applyFeeMultiplier(suggestedFeeRate, FeeOption.Fastest),\n };\n}\n\nasync function getInputsAndTargetOutputs({\n assetValue,\n recipient,\n memo,\n sender,\n fetchTxHex: fetchTxOverwrite = false,\n}: Omit<UTXOBuildTxParams, \"feeRate\">) {\n const chain = assetValue.chain as UTXOChain;\n const feeRate = (await getFeeRates(chain))[FeeOption.Fastest];\n\n const fetchTxHex = fetchTxOverwrite || nonSegwitChains.includes(chain);\n\n const amountToSend = assetValue.getBaseValue(\"number\");\n\n // Overestimate by 5000 byte * highest feeRate to ensure we have enough UTXOs for fees and change\n const targetValue = Math.ceil(amountToSend + feeRate * 5000);\n\n const inputs = await getUtxoApi(chain).getUtxos({ address: sender, fetchTxHex, targetValue });\n\n return {\n inputs,\n outputs: [\n { address: recipient, value: amountToSend },\n ...(memo ? [{ address: \"\", script: await compileMemo(memo), value: 0 }] : []),\n ],\n };\n}\n",
|
|
13
13
|
"import {\n address as bchAddress,\n Transaction,\n TransactionBuilder,\n // @ts-expect-error\n} from \"@psf/bitcoincashjs-lib\";\nimport {\n Chain,\n type ChainSigner,\n type DerivationPathArray,\n derivationPathToString,\n FeeOption,\n NetworkDerivationPath,\n SwapKitError,\n updateDerivationPath,\n} from \"@swapkit/helpers\";\nimport { Psbt } from \"bitcoinjs-lib\";\nimport { accumulative, compileMemo, getUtxoApi, getUtxoNetwork, toCashAddress, toLegacyAddress } from \"../helpers\";\nimport type {\n BchECPair,\n TargetOutput,\n TransactionBuilderType,\n TransactionType,\n UTXOBuildTxParams,\n UTXOTransferParams,\n UTXOType,\n} from \"../types\";\nimport type { UtxoToolboxParams } from \"./params\";\nimport { createUTXOToolbox, getCreateKeysForPath } from \"./utxo\";\nimport { bchValidateAddress, stripPrefix } from \"./validators\";\n\nconst chain = Chain.BitcoinCash;\n\nexport function stripToCashAddress(address: string) {\n return stripPrefix(toCashAddress(address));\n}\n\nfunction createSignerWithKeys(keys: BchECPair) {\n function signTransaction({ builder, utxos }: { builder: TransactionBuilderType; utxos: UTXOType[] }) {\n utxos.forEach((utxo, index) => {\n builder.sign(index, keys, undefined, 0x41, utxo.witnessUtxo?.value);\n });\n\n return builder.build();\n }\n\n const getAddress = () => {\n const address = keys.getAddress(0);\n return Promise.resolve(stripToCashAddress(address));\n };\n\n return { getAddress, signTransaction };\n}\n\nexport async function createBCHToolbox<T extends typeof Chain.BitcoinCash>(\n toolboxParams: UtxoToolboxParams[T] | { phrase?: string; derivationPath?: DerivationPathArray; index?: number },\n) {\n const phrase = \"phrase\" in toolboxParams ? toolboxParams.phrase : undefined;\n\n const index = \"index\" in toolboxParams ? toolboxParams.index || 0 : 0;\n\n const derivationPath = derivationPathToString(\n \"derivationPath\" in toolboxParams && toolboxParams.derivationPath\n ? toolboxParams.derivationPath\n : updateDerivationPath(NetworkDerivationPath[chain], { index }),\n );\n\n const keys = phrase ? (await getCreateKeysForPath(chain))({ derivationPath, phrase }) : undefined;\n\n const signer = keys ? createSignerWithKeys(keys) : \"signer\" in toolboxParams ? toolboxParams.signer : undefined;\n\n function getAddress() {\n return Promise.resolve(signer?.getAddress());\n }\n\n const { getBalance, getFeeRates, broadcastTx, ...toolbox } = await createUTXOToolbox({ chain });\n\n function handleGetBalance(address: string, _scamFilter = true) {\n return getBalance(stripPrefix(toCashAddress(address)));\n }\n\n return {\n ...toolbox,\n broadcastTx,\n buildTx,\n createTransaction,\n getAddress,\n getAddressFromKeys,\n getBalance: handleGetBalance,\n getFeeRates,\n stripPrefix,\n stripToCashAddress,\n transfer: transfer({ broadcastTx, getFeeRates, signer }),\n validateAddress: bchValidateAddress,\n };\n}\n\nasync function createTransaction({ assetValue, recipient, memo, feeRate, sender }: UTXOBuildTxParams) {\n if (!bchValidateAddress(recipient)) throw new SwapKitError(\"toolbox_utxo_invalid_address\", { address: recipient });\n\n // Overestimate by 7500 byte * feeRate to ensure we have enough UTXOs for fees and change\n const targetValue = Math.ceil(assetValue.getBaseValue(\"number\") + feeRate * 7500);\n\n const utxos = await getUtxoApi(chain).getUtxos({\n address: stripToCashAddress(sender),\n fetchTxHex: true,\n targetValue,\n });\n\n const compiledMemo = memo ? await compileMemo(memo) : null;\n\n const targetOutputs: TargetOutput[] = [];\n // output to recipient\n targetOutputs.push({ address: recipient, value: assetValue.getBaseValue(\"number\") });\n const { inputs, outputs } = accumulative({ chain, feeRate, inputs: utxos, outputs: targetOutputs });\n\n // .inputs and .outputs will be undefined if no solution was found\n if (!(inputs && outputs)) throw new SwapKitError(\"toolbox_utxo_insufficient_balance\", { assetValue, sender });\n const getNetwork = await getUtxoNetwork();\n const builder = new TransactionBuilder(getNetwork(chain)) as TransactionBuilderType;\n\n await Promise.all(\n inputs.map(async (utxo: UTXOType) => {\n const txHex = await getUtxoApi(chain).getRawTx(utxo.hash);\n\n builder.addInput(Transaction.fromBuffer(Buffer.from(txHex, \"hex\")), utxo.index);\n }),\n );\n\n for (const output of outputs) {\n const address = \"address\" in output && output.address ? output.address : toLegacyAddress(sender);\n const getNetwork = await getUtxoNetwork();\n const outputScript = bchAddress.toOutputScript(toLegacyAddress(address), getNetwork(chain));\n\n builder.addOutput(outputScript, output.value);\n }\n\n // add output for memo\n if (compiledMemo) {\n builder.addOutput(compiledMemo, 0); // Add OP_RETURN {script, value}\n }\n\n return { builder, utxos: inputs };\n}\n\nfunction transfer({\n broadcastTx,\n getFeeRates,\n signer,\n}: {\n broadcastTx: (txHash: string) => Promise<string>;\n getFeeRates: () => Promise<Record<FeeOption, number>>;\n signer?: ChainSigner<{ builder: TransactionBuilderType; utxos: UTXOType[] }, TransactionType>;\n}) {\n return async function transfer({\n recipient,\n assetValue,\n feeOptionKey = FeeOption.Fast,\n ...rest\n }: UTXOTransferParams) {\n const from = await signer?.getAddress();\n if (!(signer && from)) throw new SwapKitError(\"toolbox_utxo_no_signer\");\n if (!recipient)\n throw new SwapKitError(\"toolbox_utxo_invalid_params\", { error: \"Recipient address must be provided\" });\n\n const feeRate = rest.feeRate || (await getFeeRates())[feeOptionKey];\n\n // try out if psbt tx is faster/better/nicer\n const { builder, utxos } = await createTransaction({ ...rest, assetValue, feeRate, recipient, sender: from });\n\n const tx = await signer.signTransaction({ builder, utxos });\n const txHex = tx.toHex();\n\n return broadcastTx(txHex);\n };\n}\n\nasync function buildTx({\n assetValue,\n recipient,\n memo,\n feeRate,\n sender,\n setSigHashType,\n}: UTXOBuildTxParams & { setSigHashType?: boolean }) {\n const recipientCashAddress = toCashAddress(recipient);\n if (!bchValidateAddress(recipientCashAddress))\n throw new SwapKitError(\"toolbox_utxo_invalid_address\", { address: recipientCashAddress });\n\n // Overestimate by 7500 byte * feeRate to ensure we have enough UTXOs for fees and change\n const targetValue = Math.ceil(assetValue.getBaseValue(\"number\") + feeRate * 7500);\n\n const utxos = await getUtxoApi(chain).getUtxos({\n address: stripToCashAddress(sender),\n fetchTxHex: false,\n targetValue,\n });\n\n const feeRateWhole = Number(feeRate.toFixed(0));\n const compiledMemo = memo ? await compileMemo(memo) : null;\n\n const targetOutputs = [] as TargetOutput[];\n\n // output to recipient\n targetOutputs.push({ address: toLegacyAddress(recipient), value: assetValue.getBaseValue(\"number\") });\n\n //2. add output memo to targets (optional)\n if (compiledMemo) {\n targetOutputs.push({ script: compiledMemo, value: 0 });\n }\n\n const { inputs, outputs } = accumulative({ chain, feeRate: feeRateWhole, inputs: utxos, outputs: targetOutputs });\n\n // .inputs and .outputs will be undefined if no solution was found\n if (!(inputs && outputs)) throw new SwapKitError(\"toolbox_utxo_insufficient_balance\", { assetValue, sender });\n const getNetwork = await getUtxoNetwork();\n const psbt = new Psbt({ network: getNetwork(chain) }); // Network-specific\n\n for (const { hash, index, witnessUtxo } of inputs) {\n psbt.addInput({ hash, index, sighashType: setSigHashType ? 0x41 : undefined, witnessUtxo });\n }\n\n // Outputs\n for (const output of outputs) {\n const address = \"address\" in output && output.address ? output.address : toLegacyAddress(sender);\n const params = output.script\n ? compiledMemo\n ? { script: compiledMemo, value: 0 }\n : undefined\n : { address, value: output.value };\n\n if (params) {\n psbt.addOutput(params);\n }\n }\n\n return { inputs: inputs as UTXOType[], psbt, utxos };\n}\n\nfunction getAddressFromKeys(keys: { getAddress: (index?: number) => string }) {\n const address = keys.getAddress(0);\n return stripToCashAddress(address);\n}\n",
|
|
14
|
-
"import { bitgo, crypto, ECPair, networks, address as zcashAddress } from \"@bitgo/utxo-lib\";\nimport type
|
|
14
|
+
"import { bitgo, crypto, ECPair, networks, address as zcashAddress } from \"@bitgo/utxo-lib\";\nimport { type ZcashPsbt, ZcashTransaction } from \"@bitgo/utxo-lib/dist/src/bitgo\";\nimport { HDKey } from \"@scure/bip32\";\nimport { mnemonicToSeedSync } from \"@scure/bip39\";\nimport {\n Chain,\n type ChainSigner,\n type DerivationPathArray,\n derivationPathToString,\n FeeOption,\n NetworkDerivationPath,\n SKConfig,\n SwapKitError,\n updateDerivationPath,\n} from \"@swapkit/helpers\";\nimport bs58check from \"bs58check\";\nimport { match, P } from \"ts-pattern\";\nimport { accumulative, compileMemo, getUtxoApi } from \"../helpers\";\nimport type { TargetOutput, UTXOBuildTxParams, UTXOTransferParams, UTXOType } from \"../types\";\nimport { createUTXOToolbox } from \"./utxo\";\nimport { validateZcashAddress } from \"./validators\";\n\nfunction getZcashNetwork() {\n return networks.zcash;\n}\n\nfunction getECPairNetwork() {\n return {\n bech32: undefined,\n bip32: { private: 0x0488ade4, public: 0x0488b21e },\n messagePrefix: \"\\x18ZCash Signed Message:\\n\",\n pubKeyHash: 0x1c,\n scriptHash: 0x1c,\n wif: 0x80,\n };\n}\n\ntype ZcashSigner = ChainSigner<ZcashPsbt, ZcashPsbt>;\n\nfunction createZcashSignerFromPhrase({\n phrase,\n derivationPath,\n}: {\n phrase: string;\n derivationPath: string;\n}): ZcashSigner {\n const seed = mnemonicToSeedSync(phrase);\n const root = HDKey.fromMasterSeed(seed);\n const node = root.derive(derivationPath);\n\n if (!node.privateKey) {\n throw new SwapKitError(\"toolbox_utxo_invalid_params\");\n }\n\n // Create key pair using BitGo's ECPair with ECPair-compatible network\n const ecpairNetwork = getECPairNetwork();\n const keyPair = ECPair.fromPrivateKey(Buffer.from(node.privateKey), { network: ecpairNetwork });\n\n const pubKeyHash = crypto.hash160(keyPair.publicKey);\n const { isStagenet } = SKConfig.get(\"envs\");\n\n const prefix = isStagenet\n ? Buffer.from([0x1d, 0x25]) // testnet prefix (results in tm... addresses)\n : Buffer.from([0x1c, 0xb8]); // mainnet prefix (results in t1... addresses)\n\n const payload = Buffer.concat([prefix, pubKeyHash]);\n\n const address = bs58check.encode(payload);\n\n return {\n getAddress: () => Promise.resolve(address),\n\n signTransaction: (psbt) => {\n const signedPsbt = psbt.signAllInputs(keyPair);\n\n return Promise.resolve(signedPsbt);\n },\n };\n}\n\nfunction addInputsAndOutputs({\n inputs,\n outputs,\n psbt,\n sender,\n compiledMemo,\n}: {\n inputs: UTXOType[];\n outputs: TargetOutput[];\n psbt: ZcashPsbt;\n sender: string;\n compiledMemo: Buffer<ArrayBufferLike> | null;\n}) {\n for (const utxo of inputs) {\n const witnessInfo = !!utxo.witnessUtxo && { witnessUtxo: { ...utxo.witnessUtxo, value: BigInt(utxo.value) } };\n\n const nonWitnessInfo = !utxo.witnessUtxo && {\n nonWitnessUtxo: utxo.txHex ? Buffer.from(utxo.txHex, \"hex\") : undefined,\n };\n\n psbt.addInput({ hash: utxo.hash, index: utxo.index, ...witnessInfo, ...nonWitnessInfo });\n }\n\n for (const output of outputs) {\n const address = \"address\" in output && output.address ? output.address : sender;\n const hasOutputScript = output.script;\n\n if (hasOutputScript && !compiledMemo) {\n continue;\n }\n\n const mappedOutput = hasOutputScript\n ? { script: compiledMemo as Buffer<ArrayBufferLike>, value: 0n }\n : { script: zcashAddress.toOutputScript(address, getZcashNetwork()), value: BigInt(output.value) };\n\n psbt.addOutput(mappedOutput);\n }\n\n return { inputs, psbt };\n}\n\nasync function createTransaction(buildTxParams: UTXOBuildTxParams) {\n const { assetValue, recipient, memo, feeRate, sender, fetchTxHex } = buildTxParams;\n\n const compiledMemo = memo ? compileMemo(memo) : null;\n\n const utxos = await getUtxoApi(Chain.Zcash).getUtxos({ address: sender, fetchTxHex: fetchTxHex !== false });\n\n const targetOutputs = [\n { address: recipient, value: Number(assetValue.getBaseValue(\"string\")) },\n ...(compiledMemo ? [{ script: compiledMemo, value: 0 }] : []),\n ];\n\n const { inputs, outputs } = accumulative({\n chain: Chain.Zcash,\n changeAddress: sender, // Overwrite change address to sender\n feeRate,\n inputs: utxos,\n outputs: targetOutputs,\n });\n\n if (!(inputs && outputs)) {\n throw new SwapKitError(\"toolbox_utxo_insufficient_balance\", { assetValue, sender });\n }\n\n const psbt = bitgo.createPsbtForNetwork(\n { network: getZcashNetwork() },\n { version: ZcashTransaction.VERSION4_BRANCH_NU6_1 },\n ) as ZcashPsbt;\n\n const { psbt: mappedPsbt, inputs: mappedInputs } = await addInputsAndOutputs({\n compiledMemo,\n inputs,\n outputs,\n psbt,\n sender,\n });\n\n mappedPsbt.setDefaultsForVersion(getZcashNetwork(), ZcashTransaction.VERSION4_BRANCH_NU6_1);\n\n return { inputs: mappedInputs, outputs, psbt: mappedPsbt };\n}\n\nexport async function createZcashToolbox(\n toolboxParams: { signer?: ZcashSigner } | { phrase?: string; derivationPath?: DerivationPathArray; index?: number },\n) {\n const signer = await match(toolboxParams)\n .with({ signer: P.not(P.nullish) }, ({ signer }) => Promise.resolve(signer))\n .with({ phrase: P.string }, ({ phrase, derivationPath, index = 0 }) => {\n const baseDerivationPath = derivationPath || NetworkDerivationPath[Chain.Zcash] || [44, 133, 0, 0, 0];\n const updatedPath = updateDerivationPath(baseDerivationPath, { index });\n const pathString = derivationPathToString(updatedPath);\n\n return createZcashSignerFromPhrase({ derivationPath: pathString, phrase });\n })\n .otherwise(() => Promise.resolve(undefined));\n\n const baseToolbox = await createUTXOToolbox({ chain: Chain.Zcash, signer });\n\n async function transfer({ recipient, assetValue, feeOptionKey = FeeOption.Fast, ...rest }: UTXOTransferParams) {\n const from = await signer?.getAddress();\n if (!(signer && from)) {\n throw new SwapKitError(\"toolbox_utxo_no_signer\");\n }\n\n const feeRate = rest.feeRate || (await baseToolbox.getFeeRates())[feeOptionKey];\n\n const { psbt } = await createTransaction({ ...rest, assetValue, feeRate, recipient, sender: from });\n\n const signedPsbt = await signer.signTransaction(psbt);\n\n signedPsbt.validateSignaturesOfAllInputs();\n\n signedPsbt.finalizeAllInputs();\n\n const finalTx = signedPsbt.extractTransaction();\n const txHex = finalTx.toHex();\n\n return baseToolbox.broadcastTx(txHex);\n }\n\n function createKeysForPath({\n phrase,\n derivationPath = \"m/44'/133'/0'/0/0\",\n }: {\n phrase: string;\n derivationPath?: string;\n }) {\n const seed = mnemonicToSeedSync(phrase);\n const root = HDKey.fromMasterSeed(seed);\n const node = root.derive(derivationPath);\n\n if (!node.privateKey) {\n throw new SwapKitError(\"toolbox_utxo_invalid_params\");\n }\n\n const ecpairNetwork = getECPairNetwork();\n const keyPair = ECPair.fromPrivateKey(Buffer.from(node.privateKey), { network: ecpairNetwork });\n\n return keyPair;\n }\n\n function getPrivateKeyFromMnemonic({\n phrase,\n derivationPath = \"m/44'/133'/0'/0/0\",\n }: {\n phrase: string;\n derivationPath: string;\n }) {\n const keys = createKeysForPath({ derivationPath, phrase });\n return keys.toWIF();\n }\n\n return {\n ...baseToolbox,\n createKeysForPath,\n createTransaction,\n getPrivateKeyFromMnemonic,\n transfer,\n validateAddress: validateZcashAddress,\n };\n}\n",
|
|
15
15
|
"import { Chain, type DerivationPathArray, SwapKitError, type UTXOChain } from \"@swapkit/helpers\";\nimport { createBCHToolbox } from \"./bitcoinCash\";\nimport type { UtxoToolboxParams } from \"./params\";\nimport { createUTXOToolbox } from \"./utxo\";\nimport { createZcashToolbox } from \"./zcash\";\n\ntype BCHToolbox = Awaited<ReturnType<typeof createBCHToolbox>>;\ntype CommonUTXOToolbox = Awaited<\n ReturnType<typeof createUTXOToolbox<Exclude<UTXOChain, typeof Chain.BitcoinCash | typeof Chain.Zcash>>>\n>;\ntype ZcashToolbox = Awaited<ReturnType<typeof createZcashToolbox>>;\n\nexport type UTXOToolboxes = {\n [Chain.BitcoinCash]: BCHToolbox;\n [Chain.Bitcoin]: CommonUTXOToolbox;\n [Chain.Dogecoin]: CommonUTXOToolbox;\n [Chain.Litecoin]: CommonUTXOToolbox;\n [Chain.Dash]: CommonUTXOToolbox;\n [Chain.Zcash]: ZcashToolbox;\n};\n\nexport type UTXOWallets = {\n [key in keyof UTXOToolboxes]: UTXOToolboxes[key];\n};\n\nexport async function getUtxoToolbox<T extends keyof UTXOToolboxes>(\n chain: T,\n params?: UtxoToolboxParams[T] | { phrase?: string; derivationPath?: DerivationPathArray; index?: number },\n): Promise<UTXOToolboxes[T]> {\n switch (chain) {\n case Chain.BitcoinCash: {\n const toolbox = await createBCHToolbox((params as UtxoToolboxParams[typeof Chain.BitcoinCash]) || {});\n return toolbox as UTXOToolboxes[T];\n }\n\n case Chain.Zcash: {\n const toolbox = await createZcashToolbox(params as UtxoToolboxParams[typeof Chain.Zcash]);\n return toolbox as UTXOToolboxes[T];\n }\n\n case Chain.Bitcoin:\n case Chain.Dogecoin:\n case Chain.Litecoin:\n case Chain.Dash: {\n const toolbox = await createUTXOToolbox({\n chain,\n ...(params as UtxoToolboxParams[Exclude<T, typeof Chain.BitcoinCash | typeof Chain.Zcash>]),\n });\n return toolbox as UTXOToolboxes[Exclude<T, typeof Chain.BitcoinCash | typeof Chain.Zcash>];\n }\n\n default:\n throw new SwapKitError(\"toolbox_utxo_not_supported\", { chain });\n }\n}\n\nexport { stripToCashAddress } from \"./bitcoinCash\";\nexport * from \"./params\";\nexport { bchValidateAddress, stripPrefix, validateZcashAddress } from \"./validators\";\n",
|
|
16
16
|
"export * from \"./helpers\";\nexport * from \"./toolbox\";\nexport * from \"./toolbox/bitcoinCash\";\nexport * from \"./toolbox/utxo\";\nexport * from \"./toolbox/zcash\";\nexport * from \"./types\";\n"
|
|
17
17
|
],
|
|
18
|
-
"mappings": "utBAMO,SAAS,EAAM,EAAG,CACvB,SAAS,CAAG,EAAG,CACb,IAAM,EAAO,KAAK,IAAI,EAChB,EAAW,IAAQ,EAGzB,OAFA,GAAO,EAEA,EAAO,GAAO,EAAO,EAAW,EAGzC,OAAO,GAAM,EAAI,EAAE,SAAS,EAAE,EAGzB,SAAS,EAA2B,CAAC,EAAU,CACpD,OAAO,cAAyB,CAAC,EAAiB,EAAa,GAAM,CACnE,IAAM,EAAW,MAAM,cAAW,gBAAgB,CAAE,UAAS,QAAO,YAAW,CAAC,GACxE,eAAgB,iBAAe,CAAK,EACtC,EAAc,EAAS,IAAI,EAAG,aAAY,QAAO,aAAc,CACnE,OAAO,IAAI,aAAW,CAAE,QAAS,GAAW,EAAa,aAAY,OAAM,CAAC,EAC7E,EAGD,GAAI,CADmB,EAAY,KAAK,CAAC,IAAU,EAAM,UAAU,EAEjE,MAAO,CAAC,aAAW,KAAK,CAAE,OAAM,CAAC,EAAG,GAAG,CAAW,EAGpD,OAAO,OA/BX,EACA,GAEM,GAEF,GAAO,gBALX,8BACA,mCAEM,GAAM,OAAO,QAAY,KAAe,QAAQ,IAAM,QAAQ,IAAI,SAAS,EAAE,EAAI,KCavF,eAAe,EAAe,EAAG,QAAO,UAA4C,CAElF,IAAM,EAAM,GAAG,GAAQ,CAAK,qBACtB,EAAO,KAAK,UAAU,CAAE,KAAM,CAAO,CAAC,EAE5C,GAAI,CACF,IAAM,EAAW,MAAM,gBAAc,KAGlC,EAAK,CAAE,OAAM,QAAS,CAAE,eAAgB,kBAAmB,CAAE,CAAC,EAEjE,GAAI,EAAS,QAAQ,OAAS,IAC5B,MAAM,IAAI,eAAa,gCAAiC,CACtD,MAAO,EAAS,QAAQ,OAAS,8BACnC,CAAC,EAGH,OAAO,EAAS,MAAM,kBAAoB,EAC1C,MAAO,EAAO,CAEd,IAAM,EAAS,MAAM,YAAU,CAAK,EACpC,GAAI,EAAQ,CACV,IAAM,EAAU,KAAK,UAAU,CAAE,GAAI,GAAO,EAAG,QAAS,MAAO,OAAQ,qBAAsB,OAAQ,CAAC,CAAM,CAAE,CAAC,EAEzG,EAAc,MAAM,gBAAc,KAIrC,EAAQ,CAAE,KAAM,EAAS,QAAS,CAAE,eAAgB,kBAAmB,CAAE,CAAC,EAE7E,GAAI,EAAY,MACd,MAAM,IAAI,eAAa,gCAAiC,CAAE,MAAO,EAAY,OAAO,OAAQ,CAAC,EAG/F,GAAI,EAAY,OAAO,SAAS,YAAY,EAC1C,MAAM,IAAI,eAAa,mCAAoC,CAAE,MAAO,gCAAiC,CAAC,EAGxG,OAAO,EAAY,OAGrB,MAAM,GAIV,SAAS,EAAO,CAAC,EAAc,CAC7B,MAAO,8BAA8B,GAA0B,CAAK,IAGtE,SAAS,EAAsB,CAAC,EAAc,CAC5C,OAAQ,QACD,QAAM,QACT,MAAO,QACJ,QAAM,SACT,MAAO,UACJ,QAAM,SACT,MAAO,QACJ,QAAM,MACT,MAAO,WAEP,MAAO,IAIb,SAAS,EAAyB,CAAC,EAAc,CAC/C,OAAQ,QACD,QAAM,YACT,MAAO,oBACJ,QAAM,SACT,MAAO,gBACJ,QAAM,KACT,MAAO,YACJ,QAAM,SACT,MAAO,gBACJ,QAAM,MACT,MAAO,aACJ,QAAM,SACT,MAAO,mBAEP,MAAO,WAIb,eAAe,EAAiB,CAAC,EAAc,CAC7C,GAAI,CAGF,IAAQ,YAAa,MAAM,gBAAc,IAKtC,gCAAgC,EAAM,YAAY,UAAU,EACzD,EAAe,EAAW,KAEhC,OAAO,KAAK,IAAI,EAAc,GAAuB,CAAK,CAAC,EAC3D,KAAM,CACN,OAAO,GAAuB,CAAK,GAIvC,eAAe,EAAoB,CAAC,EAAa,EAA6B,CAC5E,IAAM,EAAW,MAAM,gBAAc,IACnC,GAAG,IAAM,EAAS,GAAG,EAAI,SAAS,GAAG,EAAI,IAAM,UAAU,IAAW,IACtE,EAEA,GAAI,CAAC,GAAY,EAAS,QAAQ,OAAS,IACzC,MAAM,IAAI,eAAa,yBAA0B,CAAE,MAAO,mBAAmB,GAAM,CAAC,EAEtF,OAAO,EAAS,KAGlB,eAAe,EAAc,EAAG,UAAS,QAAO,UAAkD,CAChG,GAAI,CAAC,EAAS,MAAM,IAAI,eAAa,8BAA+B,CAAE,MAAO,qBAAsB,CAAC,EAEpG,GAAI,CAMF,OALiB,MAAM,GACrB,GAAG,GAAQ,CAAK,wBAAwB,6BACxC,CACF,GAEgB,GAChB,KAAM,CACN,MAAO,CAAE,QAAS,CAAE,QAAS,EAAG,kBAAmB,CAAE,EAAG,KAAM,CAAC,CAAE,GAIrE,eAAe,EAAqB,EAAG,UAAS,QAAO,UAAkD,CAGvG,OAFiB,MAAM,GAAe,CAAE,UAAS,SAAQ,OAAM,CAAC,IAE/C,QAAQ,SAAW,EAGtC,eAAe,EAAQ,EAAG,QAAO,SAAQ,UAAiD,CACxF,GAAI,CAAC,EAAQ,MAAM,IAAI,eAAa,8BAA+B,CAAE,MAAO,oBAAqB,CAAC,EAElG,GAAI,CAKF,OAJsB,MAAM,GAC1B,GAAG,GAAQ,CAAK,qBAAqB,IACrC,CACF,KACuB,IAAS,iBAAmB,GACnD,MAAO,EAAO,CACd,IAAM,EAAe,aAAiB,MAAQ,EAAM,QAAU,OAAO,CAAK,EAE1E,OADA,QAAQ,MAAM,oCAAoC,GAAc,EACzD,IAIX,eAAe,EAAe,EAAG,QAAO,UAAS,SAAQ,SAAS,EAAG,QAAQ,IAAwC,CAsBnH,OAlBiB,MAAM,GAErB,GAAG,GAAQ,CAAK,yBAAyB,4JAA2F,YAAgB,IACpJ,CACF,GAEqB,IACnB,EAAG,WAAU,aAAY,WAAU,mBAAkB,QAAO,QAAO,6BAA8B,CAC/F,KAAM,EACN,QACA,aAAc,IAAa,GAC3B,WACA,aACA,MAAO,EACP,OACF,EACF,EAKF,SAAS,EAAW,CAAC,EAAkD,CACrE,OAAO,EAAI,OAAO,CAAC,EAAO,IAAO,EAAQ,EAAG,MAAO,CAAC,EAGtD,SAAS,EAAmB,CAC1B,EACA,EAC6C,CAC7C,IAAM,EAAY,CAAC,GAAG,CAAG,EAAE,KAAK,CAAC,EAAG,IAAM,EAAE,MAAQ,EAAE,KAAK,EAE3D,GAAI,EAAa,CACf,IAAM,EAAS,CAAC,EACZ,EAAc,EAElB,QAAW,KAAQ,EAGjB,GAFA,EAAO,KAAK,CAAI,EAChB,GAAe,EAAK,MAChB,GAAe,EAAa,MAGlC,OAAO,EAGT,OAAO,EAGT,eAAe,EAAe,EAC5B,QACA,UACA,SACA,cACA,oBAAoB,EACpB,SAAS,EACT,QAAQ,IACiF,CACzF,GAAI,CAAC,EAAS,MAAM,IAAI,eAAa,8BAA+B,CAAE,MAAO,qBAAsB,CAAC,EAEpG,GAAI,CACF,IAAM,EAAQ,MAAM,GAAgB,CAAE,UAAS,SAAQ,QAAO,QAAO,SAAQ,aAAY,CAAC,EAEpF,EADa,EAAM,OACO,EAE1B,EAAe,EAAM,OAAO,EAAG,cAAe,CAAC,CAAQ,EAEvD,EAAoB,GAAY,CAAY,EAC5C,EAAoB,EAAoB,EAExC,EAAe,GAAe,GAAqB,EAEzD,GAAI,GAAc,EAChB,OAAO,GAAoB,EAAc,CAAW,EAGtD,IAAM,EAAY,MAAM,GAAgB,CACtC,kBAAmB,EACnB,UACA,SACA,QACA,QACA,OAAQ,EAAS,EACjB,aACF,CAAC,EAEK,EAAW,CAAC,GAAG,EAAc,GAAG,CAAS,EAE/C,OAAO,GAAoB,EAAU,CAAW,EAChD,MAAO,EAAO,CACd,IAAM,EAAe,aAAiB,MAAQ,EAAM,QAAU,OAAO,CAAK,EAE1E,OADA,QAAQ,MAAM,kCAAkC,GAAc,EACvD,CAAC,GAIZ,eAAe,EAAQ,EACrB,UACA,QACA,SACA,aAAa,GACb,eACoF,CACpF,IAAM,EAAQ,MAAM,GAAgB,CAAE,UAAS,SAAQ,QAAO,aAAY,CAAC,EAErE,EAAU,CAAC,EAEjB,QAAa,OAAM,QAAO,aAAY,WAAW,EAAO,CACtD,IAAI,EACJ,GAAI,EACF,EAAQ,MAAM,GAAS,CAAE,SAAQ,QAAO,OAAQ,CAAK,CAAC,EAExD,EAAQ,KAAK,CACX,UACA,OACA,QACA,QACA,QACA,YAAa,CAAE,OAAQ,OAAO,KAAK,EAAY,KAAK,EAAG,OAAM,CAC/D,CAAC,EAEH,OAAO,EAGF,SAAS,CAAU,CAAC,EAAkB,CAC3C,IAAM,EAAS,WAAS,IAAI,SAAS,EAAE,YAAc,GAQrD,OANA,WAAS,CACP,UAAW,CAAC,EACZ,GAAI,gCACJ,QAAS,6DACX,CAAC,EAEM,CACL,YAAa,CAAC,IAAmB,GAAgB,CAAE,QAAO,QAAO,CAAC,EAClE,eAAgB,CAAC,IAAoB,GAAe,CAAE,UAAS,SAAQ,OAAM,CAAC,EAC9E,WAAY,CAAC,IAAoB,GAAsB,CAAE,UAAS,SAAQ,OAAM,CAAC,EACjF,SAAU,CAAC,IAAmB,GAAS,CAAE,SAAQ,QAAO,QAAO,CAAC,EAChE,kBAAmB,IAAM,GAAkB,CAAK,EAChD,SAAU,CAAC,IACT,GAAS,IAAK,EAAQ,SAAQ,OAAM,CAAC,CACzC,EAMK,SAAS,EAAmB,CAAC,EAAwC,CAC1E,OAAO,EAGF,SAAS,CAAc,EAAG,CAC/B,OAAO,QAAmB,CAAC,EAAc,CACvC,OAAQ,QACD,QAAM,QACT,OAAO,YAAS,aACb,QAAM,YACT,OAAO,UAAS,YAAY,KAAK,YAAY,OAC1C,QAAM,KACT,OAAO,UAAS,KAAK,KAAK,YAAY,OACnC,QAAM,SACT,OAAO,UAAS,SAAS,KAAK,YAAY,OAEvC,QAAM,SAAU,CACnB,IAAM,EAAQ,CAAE,QAAS,SAAY,OAAQ,QAAW,EAClD,EAAO,UAAS,SAAS,KAE/B,OADA,EAAK,SAAS,MAAQ,EACf,UAAS,SAAS,KAAK,YAAY,CAC5C,MAEK,QAAM,MACT,OAAO,YAAc,cAIrB,MAAM,IAAI,eAAa,6BAA8B,CAAE,OAAM,CAAC,QAtVtE,GACA,EACA,GAEA,gBACA,KALA,8BACA,8BACA,4BAEA,2BC4BA,SAAS,EAAc,CAAC,EAAY,CAClC,GAAI,CAEF,OADA,GAAc,CAAK,EACZ,GACP,KAAM,CACN,MAAO,IAIX,SAAS,EAAoB,CAAC,EAAiB,CAC7C,OAAO,GAAc,CAAO,GAAG,QAGjC,SAAS,CAAe,CAAC,EAAyB,CAChD,IAAM,EAAU,GAAc,CAAO,EACrC,GAAI,GAAS,SAAW,SACtB,OAAO,EAET,OAAO,GAAe,CAAO,EAG/B,SAAS,CAAa,CAAC,EAAyB,CAC9C,IAAM,EAAU,GAAc,CAAO,EACrC,OAAO,GAAiB,CAAO,EAGjC,SAAS,EAAa,CAAC,EAAiB,CACtC,GAAI,CACF,IAAM,EAAU,GAAoB,CAAO,EAC3C,GAAI,EACF,OAAO,EAET,KAAM,EAGR,GAAI,CACF,IAAM,EAAU,GAAkB,CAAO,EACzC,GAAI,EACF,OAAO,EAET,KAAM,EAGR,MAAM,IAAI,gBAAa,+BAAgC,CAAE,SAAQ,CAAC,EAGpE,SAAS,EAAmB,CAAC,EAAiB,CAC5C,GAAI,CACF,IAAM,EAAU,WAAY,OAAO,CAAO,EAG1C,GAAI,EAAQ,SAAW,GAAI,MAAM,IAAI,gBAAa,+BAAgC,CAAE,SAAQ,CAAC,EAC7F,IAAM,EAAc,EAAQ,GACtB,EAAO,MAAM,UAAU,MAAM,KAAK,EAAS,CAAC,EAElD,OAAQ,QACD,EAAa,OAAe,QAAqB,MACpD,MAAO,CAAE,OAAQ,SAAe,OAAM,QAAS,UAAqB,KAAM,OAAW,OAElF,EAAa,OAAe,QAAqB,KACpD,MAAO,CAAE,OAAQ,SAAe,OAAM,QAAS,UAAqB,KAAM,MAAU,OAEjF,EAAa,OAAe,QAAqB,MACpD,MAAO,CAAE,OAAQ,SAAe,OAAM,QAAS,UAAqB,KAAM,OAAW,OAElF,EAAa,OAAe,QAAqB,KACpD,MAAO,CAAE,OAAQ,SAAe,OAAM,QAAS,UAAqB,KAAM,MAAU,OAEjF,EAAa,OAAe,QAAqB,MACpD,MAAO,CAAE,OAAQ,SAAe,OAAM,QAAS,UAAqB,KAAM,OAAW,OAElF,EAAa,OAAe,QAAqB,KACpD,MAAO,CAAE,OAAQ,SAAe,OAAM,QAAS,UAAqB,KAAM,MAAU,UAGpF,QAEJ,KAAM,CACN,QAIJ,SAAS,EAAiB,CAAC,EAAiB,CAC1C,GAAI,EAAQ,QAAQ,GAAG,IAAM,GAC3B,GAAI,CACF,OAAO,GAA4B,CAAO,EAC1C,KAAM,EAGH,KACL,IAAM,EAAW,CAAC,cAAe,UAAW,QAAQ,EACpD,QAAW,KAAU,EACnB,GAAI,CACF,OAAO,GAA4B,GAAG,KAAU,GAAS,EACzD,KAAM,GAMZ,OAGF,SAAS,EAA2B,CAAC,EAAiB,CACpD,GAAI,CACF,IAAQ,OAAM,SAAQ,QAAS,WAAS,OAAO,CAAO,EAEtD,MAAO,CACL,OAAQ,WACR,KAAM,MAAM,UAAU,MAAM,KAAK,EAAM,CAAC,EACxC,QAAS,IAAW,cAAgB,UAAsB,UAC1D,KAAM,IAAS,QAAU,QAAa,MACxC,EACA,KAAM,CACN,QAIJ,SAAS,EAAc,CAAC,EAAsB,CAC5C,IAAM,EAAc,EAAa,OAAe,EAAQ,SAAS,EAAQ,MACnE,EAAS,OAAO,MAAM,EAAI,EAAQ,KAAK,MAAM,EAGnD,OAFA,EAAO,GAAK,EACZ,EAAO,IAAI,EAAQ,KAAM,CAAC,EACnB,WAAY,OAAO,CAAM,EAGlC,SAAS,EAAgB,CAAC,EAAsB,CAC9C,IAAM,EAAS,EAAQ,UAAY,UAAsB,cAAgB,UACnE,EAAO,EAAQ,OAAS,QAAa,QAAU,OAC/C,EAAO,IAAI,WAAW,EAAQ,IAAI,EACxC,OAAO,WAAS,OAAO,EAAQ,EAAM,CAAI,MAlK3C,GACA,GAEA,GAOK,GASC,gBAnBN,+BACA,2BAEA,6BAOA,CAAK,IAAL,CACE,UAAU,UACV,UAAU,YAFP,SASC,EAAe,EAClB,UAAgB,EACd,WAAsB,EAAG,SAAa,GAAI,QAAY,CAAE,GACxD,WAAsB,EAAG,SAAa,KAAM,QAAY,GAAI,CAC/D,GACC,UAAgB,EACd,WAAsB,EAAG,SAAa,IAAK,QAAY,EAAG,GAC1D,WAAsB,EAAG,SAAa,KAAM,QAAY,GAAI,CAC/D,CACF,ICbO,SAAS,CAAW,CAAC,EAAc,CACxC,IAAM,EAAO,OAAO,KAAK,EAAM,MAAM,EACrC,OAAO,UAAO,QAAQ,CAAC,WAAQ,UAAqB,CAAI,CAAC,MAjB3D,GACA,GAQa,GAAa,KACb,GAAc,GACd,GAAqB,GAC5B,GAAgB,GAChB,GAAsB,IAOhB,GAOC,GAMA,GAMA,EAA0B,CAAC,IAAoB,CAI1D,GACE,EAAQ,WAAW,KAAK,GACxB,EAAQ,WAAW,KAAK,GACxB,EAAQ,WAAW,MAAM,GACzB,EAAQ,WAAW,OAAO,EAI1B,MAAO,SAoBT,GAEE,EAAQ,WAAW,GAAG,GACtB,EAAQ,WAAW,GAAG,GACtB,EAAQ,WAAW,GAAG,GAEtB,EAAQ,WAAW,eAAe,GAClC,EAAQ,WAAW,eAAe,GAClC,EAAQ,WAAW,GAAG,GACtB,EAAQ,WAAW,GAAG,GAEtB,EAAQ,WAAW,GAAG,GACtB,EAAQ,WAAW,GAAG,GACtB,EAAQ,WAAW,GAAG,GAEtB,EAAQ,WAAW,GAAG,GACtB,EAAQ,WAAW,GAAG,GACtB,EAAQ,WAAW,GAAG,GAEtB,EAAQ,WAAW,GAAG,GACtB,EAAQ,WAAW,GAAG,GACtB,EAAQ,WAAW,GAAG,GAEtB,EAAQ,WAAW,IAAI,GACvB,EAAQ,WAAW,IAAI,GACvB,EAAQ,WAAW,IAAI,EAEvB,MAAO,QAGT,MAAM,IAAI,gBAAa,+BAAgC,CAAE,SAAQ,CAAC,GAGvD,EAAkB,EAAG,SAAQ,UAAS,aAAyC,CAC1F,IAAM,EACJ,EAAO,IAAM,YAAa,EAAO,IAAM,EAAO,GAAG,QAC7C,EAAwB,EAAO,GAAG,OAAO,EACzC,QACA,EAAY,EACf,OAAO,CAAC,IAAS,EAAK,OAAS,GAAW,SAAU,EAAO,EAAK,KAAO,SAAwB,KAAK,KAAK,CAAO,CAAC,EACjH,OAAO,CAAC,EAAO,IAAS,EAAQ,EAAa,CAAI,EAAG,CAAC,EAElD,EAAa,GAAS,OAAO,CAAC,EAAO,IAAW,EAAQ,EAAc,CAAM,EAAG,CAAC,GAAK,GAAY,GAEvG,OAAO,GAAc,EAAY,GAGtB,EAAe,CAAC,IAA8C,CACzE,GAAI,SAAU,EACZ,OAAO,GAAW,EAAM,MAE1B,GAAI,YAAa,GAAS,EAAM,QAC9B,OAAO,GAAW,EAAwB,EAAM,OAAiB,GAEnE,OAAO,GAAgB,IAGZ,EAAgB,CAAC,EAAsB,IAAgC,CAClF,GAAI,GAAQ,OACV,OAAO,GAAqB,EAAO,OAAO,QAAU,EAAO,OAAO,QAAU,GAAK,EAAI,GAEvF,GAAI,EACF,OAAO,GAAY,GAErB,OAAO,GAAY,qBAvIrB,+BACA,6BAmBO,CAAK,IAAL,CACL,QAAQ,QAER,SAAS,WAHC,SAOC,GAA6C,EACvD,SAAuB,KAEvB,UAAwB,EAC3B,EAEa,GAA8C,EACxD,SAAuB,IAEvB,UAAwB,EAC3B,ICzBO,SAAS,EAAgB,CAAC,EAAkB,CACjD,OAAQ,QACD,QAAM,aACN,QAAM,YACT,MAAO,UACJ,QAAM,UACN,QAAM,SACT,MAAO,WACJ,QAAM,SACT,MAAO,UACJ,QAAM,MACT,MAAO,aAEP,MAAM,IAAI,eAAa,6BAA8B,CAAE,OAAM,CAAC,GAI7D,SAAS,CAAY,EAC1B,SACA,UACA,QAAS,EAAiB,EAC1B,QAAQ,QAAM,QACd,gBAAgB,IACoF,CACpG,IAAM,EAAU,KAAK,KAAK,CAAc,EAElC,EACJ,EAAO,IAAM,YAAa,EAAO,IAAM,EAAO,GAAG,QAC7C,EAAwB,EAAO,GAAG,OAAO,UAGzC,EAAiB,EAAO,OAAO,CAAC,IAAU,EAAa,CAAK,EAAI,GAAW,EAAM,KAAK,EAEtF,EACJ,GAAc,EAAQ,OAAO,CAAC,EAAO,IAAW,EAAQ,EAAc,EAAQ,CAAS,EAAG,CAAC,EAEvF,EAAe,EAAQ,OAAO,CAAC,EAAO,IAAW,EAAQ,EAAO,MAAO,CAAC,EAE1E,EAAO,EAAsB,EAC7B,EAAc,EACZ,EAA6B,CAAC,EAEpC,QAAW,KAAS,EAAgB,CAClC,IAAM,EAAY,EAAa,CAAK,EAC9B,EAAW,EAAU,EAE3B,GAAQ,EACR,GAAe,EAAM,MAErB,EAAY,KAAK,CAAK,EAEtB,IAAM,EAAY,EAAO,EAGzB,GAAI,EAAc,EAAW,SAE7B,IAAM,EAAY,EAAc,EAE1B,EAAoB,EAAU,EAAc,CAAE,QAAS,GAAI,MAAO,CAAE,EAAG,CAAS,EAGtF,GAAI,EAAY,EAAmB,CACjC,IAAM,GAAsB,EAAoB,EAC1C,GAA4B,GAAe,EAAe,IAGhE,GAAI,GAA4B,KAAK,IAAI,EAAa,CAAC,CAAa,EAAI,EAAS,GAAiB,CAAK,CAAC,EACtG,MAAO,CACL,IAAK,GACL,OAAQ,EACR,QAAS,EAAQ,OAAO,CAAE,QAAS,EAAe,MAAO,EAA0B,CAAC,CACtF,EAGJ,MAAO,CAAE,IAAK,EAAM,OAAQ,EAAa,SAAQ,EAInD,MAAO,CAAE,IAAK,EAAU,EAAgB,CAAE,UAAS,SAAQ,SAAQ,CAAC,CAAE,MA1FxE,gBAEA,KAFA,6CCAA,KACA,KACA,KACA,OCCO,SAAS,CAAW,CAAC,EAAiB,CAC3C,OAAO,EAAQ,QAAQ,0BAA2B,EAAE,EAG/C,SAAS,CAAkB,CAAC,EAAiB,CAClD,IAAM,EAAkB,EAAY,CAAO,EAC3C,OAAO,GAAe,CAAe,GAAK,GAAqB,CAAe,cAGzE,SAAS,CAAoB,CAAC,EAA0B,CAC7D,GAAI,CACF,GAAI,EAAQ,WAAW,GAAG,EAExB,OADA,QAAQ,KAAK,mGAAmG,EACzG,GAGT,IAAM,EAAU,YAAS,MAEzB,GAAI,CAEF,OADA,WAAa,eAAe,EAAS,CAAO,EACrC,GACP,KAAM,CACN,IAAM,EAAU,WAAU,OAAO,CAAO,EACxC,GAAI,EAAQ,OAAS,GAAI,MAAO,GAEhC,IAAM,EAAU,EAAQ,GACxB,OAAO,IAAY,EAAQ,YAAc,IAAY,EAAQ,YAE/D,KAAM,CACN,MAAO,QAjCX,GACA,gBACA,IAFA,8BACA,6BCuCO,SAAS,EAAmB,EACjC,SACA,UACA,QACA,OACA,SACA,gBAQC,CACD,QAAW,KAAQ,EAAQ,CACzB,IAAM,EAAc,CAAC,CAAC,EAAK,aAAe,CAAC,EAAgB,SAAS,CAAK,GAAK,CAAE,YAAa,EAAK,WAAY,EAExG,EAAiB,EAAgB,SAAS,CAAK,GAAK,CACxD,eAAgB,EAAK,MAAQ,OAAO,KAAK,EAAK,MAAO,KAAK,EAAI,MAChE,EAEA,EAAK,SAAS,CAAE,KAAM,EAAK,KAAM,MAAO,EAAK,SAAU,KAAgB,CAAe,CAAC,EAGzF,QAAW,KAAU,EAAS,CAC5B,IAAM,EAAU,YAAa,GAAU,EAAO,QAAU,EAAO,QAAU,EACnE,EAAkB,EAAO,OAE/B,GAAI,GAAmB,CAAC,EACtB,SAGF,IAAM,EAAe,EACjB,CAAE,OAAQ,EAAyC,MAAO,CAAE,EAC5D,CAAE,UAAS,MAAO,EAAO,KAAM,EAEnC,aAAW,UAAS,EACpB,EAAK,UAAU,CAAY,EAG7B,MAAO,CAAE,SAAQ,MAAK,EAGxB,eAAe,EAAiB,EAC9B,aACA,YACA,OACA,UACA,SACA,aAAa,IACuE,CACpF,IAAM,EAAQ,EAAW,MACnB,EAAe,EAAO,MAAM,EAAY,CAAI,EAAI,KAEhD,EAAmB,MAAM,GAA0B,CAAE,aAAY,aAAY,OAAM,YAAW,QAAO,CAAC,GAEpG,SAAQ,WAAY,EAAa,IAAK,EAAkB,QAAO,SAAQ,CAAC,EAGhF,GAAI,EAAE,GAAU,GAAU,MAAM,IAAI,eAAa,oCAAqC,CAAE,aAAY,QAAO,CAAC,EAC5G,IAAM,EAAa,MAAM,EAAe,EAClC,EAAO,IAAI,OAAK,CAAE,QAAS,EAAW,CAAK,CAAE,CAAC,EAEpD,GAAI,IAAU,QAAM,SAAU,EAAK,kBAAkB,SAAS,EAE9D,IAAQ,KAAM,EAAY,OAAQ,GAAiB,MAAM,GAAoB,CAC3E,QACA,eACA,SACA,UACA,OACA,QACF,CAAC,EAED,MAAO,CAAE,OAAQ,EAAc,KAAM,EAAY,MAAO,EAAiB,MAAO,EAGlF,eAAsB,EAAuB,EAAG,CAC9C,IAAM,EAAa,MAAM,EAAe,EAExC,OAAO,QAAwB,EAAG,UAAS,SAAgD,CACzF,GAAI,IAAU,QAAM,YAClB,OAAO,EAAmB,CAAO,EAGnC,GAAI,IAAU,QAAM,MAClB,OAAO,EAAqB,CAAO,EAGrC,GAAI,CAGF,OAFA,aAAW,UAAS,EACpB,UAAc,eAAe,EAAS,EAAW,CAAK,CAAC,EAChD,GACP,KAAM,CACN,MAAO,KAKb,eAAe,EAAoB,EACjC,QACA,SACA,kBAKC,CACD,IAAM,GAAW,MAAM,GAAqB,CAA6B,GAAG,CAAE,iBAAgB,QAAO,CAAC,EAEtG,eAAe,CAAe,CAAC,EAAY,CAEzC,OADA,MAAM,EAAK,cAAc,CAAO,EACzB,EAGT,SAAS,CAAU,EAAG,CAEpB,OADsB,GAAsB,CAAK,EAC5B,CAAO,EAG9B,MAAO,CAAE,aAAY,iBAAgB,EAGvC,eAAsB,CAAsC,EAC1D,WACG,GACiH,CACpH,IAAM,EAAS,WAAY,EAAgB,EAAc,OAAS,OAE5D,EAAQ,UAAW,EAAgB,EAAc,OAAS,EAAI,EAE9D,EAAiB,yBACrB,mBAAoB,GAAiB,EAAc,eAC/C,EAAc,eACd,uBAAqB,wBAAsB,GAAQ,CAAE,OAAM,CAAC,CAClE,EAEM,EAAS,EACX,MAAM,GAAqB,CAAE,QAAO,iBAAgB,QAAO,CAAC,GAC5D,WAAY,GACV,EAAc,OACd,OAEN,SAAS,CAAU,EAAG,CACpB,OAAO,QAAQ,QAAQ,GAAQ,WAAW,CAAC,EAI7C,IAAM,EAAkB,MAAM,GAAwB,EAChD,EAAoB,MAAM,GAAqB,CAAK,EAE1D,MAAO,CACL,eACA,YAAa,CAAC,IAAmB,EAAW,CAAK,EAAE,YAAY,CAAM,EACrE,kBACA,oBACA,qBACA,0BAA2B,GAA0B,CAAK,EAC1D,uBAAwB,GAAuB,CAAK,EACpD,aACA,mBAAoB,GAAsB,CAAK,EAE/C,WAAY,GAAW,CAAK,EAC5B,YAAa,IAAM,GAAY,CAAK,EACpC,uBACA,0BAA2B,CAAC,IAAuD,CAEjF,OADa,EAAkB,CAAM,EACzB,MAAM,GAEpB,SAAU,GAAS,CAA4C,EAC/D,gBAAiB,CAAC,IAAoB,EAAgB,CAAE,UAAS,OAAM,CAAC,CAC1E,EAGF,eAAe,EAAmB,EAChC,aACA,eAAe,YAAU,KACzB,UACA,OACA,SACA,aACsF,CACtF,IAAM,EAAQ,EAAW,MAEnB,EAAmB,MAAM,GAA0B,CAAE,aAAY,OAAM,YAAW,QAAO,CAAC,EAE1F,EAAe,EAAU,KAAK,MAAM,CAAO,GAAK,MAAM,GAAY,CAAK,GAAG,GAEhF,OAAO,EAAa,IAAK,EAAkB,QAAO,QAAS,CAAa,CAAC,EAG3E,SAAS,EAAyB,CAAC,EAAkB,CACnD,OAAO,cAAwC,EAC7C,OACA,OACA,UACA,eAAe,YAAU,KACzB,aAAa,GAOZ,CACD,IAAM,EAAc,MAAM,EAAW,CAAK,EAAE,eAAe,CAAI,EACzD,EAAe,EAAU,KAAK,KAAK,CAAO,GAAK,MAAM,GAAY,CAAK,GAAG,GAEzE,EAAS,GAAa,KACzB,IAAI,CAAC,KAAU,IACX,EACH,KAAM,GAEN,YACF,EAAE,EACD,OAAO,CAAC,IAAS,EAAK,MAAQ,KAAK,IAAI,GAAiB,CAAK,EAAG,EAAa,CAAI,EAAI,CAAY,CAAC,EAErG,GAAI,CAAC,GAAQ,OAAQ,OAAO,aAAW,KAAK,CAAE,OAAM,CAAC,EAErD,IAAM,EAAU,aAAW,KAAK,CAAE,QAAO,MAAO,EAAO,OAAO,CAAC,EAAK,IAAS,EAAM,EAAK,MAAO,CAAC,CAAE,CAAC,EAE7F,EACJ,OAAO,IAAe,SACjB,MAAM,KAAK,CAAE,OAAQ,CAAW,EAAG,KAAO,CAAE,QAAS,EAAM,MAAO,CAAE,EAAE,EACvE,EAEN,GAAI,EAAM,CACR,IAAM,EAAS,MAAM,EAAY,CAAI,EACrC,EAAQ,KAAK,CAAE,QAAS,EAAM,SAAQ,MAAO,CAAE,CAAC,EAKlD,IAAM,EAFS,EAAgB,CAAE,QAAS,EAAc,SAAQ,SAAQ,CAAC,EAEpD,EAErB,OAAO,EAAQ,IAAI,CAAG,GAI1B,SAAS,EAAsB,CAAC,EAAkB,CAChD,MAAO,OAAO,IAQR,CACJ,IAAM,EAAY,MAAM,GAAoB,CAAM,EAElD,OAAO,aAAW,KAAK,CAAE,QAAO,MAAO,gBAAc,WAAW,OAAO,EAAU,GAAG,EAAG,CAAC,EAAE,SAAS,QAAQ,CAAE,CAAC,GAalH,eAAsB,EAAiE,CACrF,EACiH,CACjH,IAAM,EAAa,MAAM,EAAe,EAExC,OAAQ,QACD,QAAM,YACT,OAAO,QAA0B,EAC/B,SACA,iBAAiB,GAAG,iBAAe,QACnC,OAKC,CACD,IAAM,EAAU,EAAW,CAAK,EAEhC,GAAI,EACF,OAAO,UAAO,QAAQ,EAAK,CAAO,EAEpC,GAAI,CAAC,EAAQ,MAAM,IAAI,eAAa,8BAA+B,CAAE,MAAO,oBAAqB,CAAC,EAKlG,OAHqB,UAAO,eAAe,OAAO,KAAK,sBAAmB,CAAM,CAAC,EAAG,CAAO,EAC9D,WAAW,CAAc,EAAE,cAKvD,QAAM,aACN,QAAM,cACN,QAAM,cACN,QAAM,WACN,QAAM,KACT,OAAO,QAA0B,EAC/B,SACA,MACA,kBAKC,CACD,GAAI,EAAE,GAAO,GACX,MAAM,IAAI,eAAa,8BAA+B,CAAE,MAAO,uCAAwC,CAAC,EAE1G,IAAM,EAAU,iBAAc,UAAS,EACjC,EAAU,EAAW,CAAK,EAEhC,GAAI,EAAK,OAAO,EAAQ,QAAQ,EAAK,CAAO,EAE5C,IAAM,EAAO,sBAAmB,CAAgB,EAC1C,EAAS,SAAM,eAAe,EAAM,CAAO,EAAE,OAAO,CAAc,EACxE,GAAI,CAAC,EAAO,WACV,MAAM,IAAI,eAAa,8BAA+B,CAAE,MAAO,uCAAwC,CAAC,EAE1G,OAAO,EAAQ,eAAe,OAAO,KAAK,EAAO,UAAU,EAAG,CAAE,SAAQ,CAAC,WAI3E,MAAM,IAAI,eAAa,6BAA8B,CAAE,OAAM,CAAC,GAI7D,SAAS,EAAqB,CAAC,EAAkB,CACtD,IAAM,EAAa,EAAe,EAElC,OAAO,QAA2B,CAAC,EAAmC,CACpE,GAAI,CAAC,EAAM,MAAM,IAAI,eAAa,8BAA+B,CAAE,MAAO,uBAAwB,CAAC,EAEnG,IAAM,EAAS,EAAgB,SAAS,CAAK,EAAI,WAAS,MAAQ,WAAS,QACnE,WAAY,EAAO,CAAE,QAAS,EAAW,CAAK,EAAG,OAAQ,EAAK,SAAoB,CAAC,EAC3F,GAAI,CAAC,EAAS,MAAM,IAAI,eAAa,+BAAgC,CAAE,MAAO,qBAAsB,CAAC,EAErG,OAAO,GAIX,SAAS,EAAQ,CAAC,EAAkC,CAClD,OAAO,cAAuB,EAAG,OAAM,YAAW,eAAc,UAAS,cAAkC,CACzG,IAAM,EAAO,MAAM,GAAQ,WAAW,EAEhC,EAAQ,EAAW,MAEzB,GAAI,EAAE,GAAU,GAAO,MAAM,IAAI,eAAa,wBAAwB,EACtE,GAAI,CAAC,EACH,MAAM,IAAI,eAAa,8BAA+B,CAAE,MAAO,oCAAqC,CAAC,EACvG,IAAM,EAAY,IAAY,MAAM,GAAY,CAAK,GAAG,GAAgB,YAAU,OAE1E,QAAS,MAAM,GAAkB,CAAE,aAAY,QAAS,EAAW,OAAM,YAAW,OAAQ,CAAK,CAAC,EACpG,EAAa,MAAM,EAAO,gBAAgB,CAAI,EAGpD,OAFA,EAAW,kBAAkB,EAEtB,EAAW,CAAK,EAAE,YAAY,EAAW,mBAAmB,EAAE,MAAM,CAAC,GAIhF,eAAe,EAAW,CAAC,EAAkB,CAC3C,IAAM,EAAmB,MAAM,EAAW,CAAK,EAAE,kBAAkB,EAEnE,MAAO,EACJ,YAAU,SAAU,GACpB,YAAU,MAAO,qBAAmB,EAAkB,YAAU,IAAI,GACpE,YAAU,SAAU,qBAAmB,EAAkB,YAAU,OAAO,CAC7E,EAGF,eAAe,EAAyB,EACtC,aACA,YACA,OACA,SACA,WAAY,EAAmB,IACM,CACrC,IAAM,EAAQ,EAAW,MACnB,GAAW,MAAM,GAAY,CAAK,GAAG,YAAU,SAE/C,EAAa,GAAoB,EAAgB,SAAS,CAAK,EAE/D,EAAe,EAAW,aAAa,QAAQ,EAG/C,EAAc,KAAK,KAAK,EAAe,EAAU,IAAI,EAI3D,MAAO,CACL,OAHa,MAAM,EAAW,CAAK,EAAE,SAAS,CAAE,QAAS,EAAQ,aAAY,aAAY,CAAC,EAI1F,QAAS,CACP,CAAE,QAAS,EAAW,MAAO,CAAa,EAC1C,GAAI,EAAO,CAAC,CAAE,QAAS,GAAI,OAAQ,MAAM,EAAY,CAAI,EAAG,MAAO,CAAE,CAAC,EAAI,CAAC,CAC7E,CACF,MArbF,GAEA,GACA,GACA,GACA,EAeA,EAEA,GAgBa,gBAfb,KACA,IAYA,IApCA,yCAEA,qCACA,2BACA,2BACA,8BAeA,2BAEA,qBAgBa,EAA+B,CAAC,QAAM,KAAM,QAAM,SAAU,QAAM,MAAO,QAAM,WAAW,ICLhG,SAAS,CAAkB,CAAC,EAAiB,CAClD,OAAO,EAAY,EAAc,CAAO,CAAC,EAG3C,SAAS,EAAoB,CAAC,EAAiB,CAC7C,SAAS,CAAe,EAAG,UAAS,SAAiE,CAKnG,OAJA,EAAM,QAAQ,CAAC,EAAM,IAAU,CAC7B,EAAQ,KAAK,EAAO,EAAM,OAAW,GAAM,EAAK,aAAa,KAAK,EACnE,EAEM,EAAQ,MAAM,EAQvB,MAAO,CAAE,WALU,IAAM,CACvB,IAAM,EAAU,EAAK,WAAW,CAAC,EACjC,OAAO,QAAQ,QAAQ,EAAmB,CAAO,CAAC,GAG/B,iBAAgB,EAGvC,eAAsB,EAAoD,CACxE,EACA,CACA,IAAM,EAAS,WAAY,EAAgB,EAAc,OAAS,OAE5D,EAAQ,UAAW,EAAgB,EAAc,OAAS,EAAI,EAE9D,EAAiB,yBACrB,mBAAoB,GAAiB,EAAc,eAC/C,EAAc,eACd,uBAAqB,wBAAsB,GAAQ,CAAE,OAAM,CAAC,CAClE,EAEM,EAAO,GAAU,MAAM,GAAqB,CAAK,GAAG,CAAE,iBAAgB,QAAO,CAAC,EAAI,OAElF,EAAS,EAAO,GAAqB,CAAI,GAAI,WAAY,GAAgB,EAAc,OAAS,OAEtG,SAAS,CAAU,EAAG,CACpB,OAAO,QAAQ,QAAQ,GAAQ,WAAW,CAAC,EAG7C,IAAQ,aAAY,cAAa,iBAAgB,GAAY,MAAM,EAAkB,CAAE,OAAM,CAAC,EAE9F,SAAS,CAAgB,CAAC,EAAiB,EAAc,GAAM,CAC7D,OAAO,EAAW,EAAY,EAAc,CAAO,CAAC,CAAC,EAGvD,MAAO,IACF,EACH,cACA,WACA,qBACA,aACA,sBACA,WAAY,EACZ,cACA,cACA,qBACA,SAAU,GAAS,CAAE,cAAa,cAAa,QAAO,CAAC,EACvD,gBAAiB,CACnB,EAGF,eAAe,EAAiB,EAAG,aAAY,YAAW,OAAM,UAAS,UAA6B,CACpG,GAAI,CAAC,EAAmB,CAAS,EAAG,MAAM,IAAI,eAAa,+BAAgC,CAAE,QAAS,CAAU,CAAC,EAGjH,IAAM,EAAc,KAAK,KAAK,EAAW,aAAa,QAAQ,EAAI,EAAU,IAAI,EAE1E,EAAQ,MAAM,EAAW,CAAK,EAAE,SAAS,CAC7C,QAAS,EAAmB,CAAM,EAClC,WAAY,GACZ,aACF,CAAC,EAEK,EAAe,EAAO,MAAM,EAAY,CAAI,EAAI,KAEhD,EAAgC,CAAC,EAEvC,EAAc,KAAK,CAAE,QAAS,EAAW,MAAO,EAAW,aAAa,QAAQ,CAAE,CAAC,EACnF,IAAQ,SAAQ,WAAY,EAAa,CAAE,QAAO,UAAS,OAAQ,EAAO,QAAS,CAAc,CAAC,EAGlG,GAAI,EAAE,GAAU,GAAU,MAAM,IAAI,eAAa,oCAAqC,CAAE,aAAY,QAAO,CAAC,EAC5G,IAAM,EAAa,MAAM,EAAe,EAClC,EAAU,IAAI,qBAAmB,EAAW,CAAK,CAAC,EAExD,MAAM,QAAQ,IACZ,EAAO,IAAI,MAAO,IAAmB,CACnC,IAAM,EAAQ,MAAM,EAAW,CAAK,EAAE,SAAS,EAAK,IAAI,EAExD,EAAQ,SAAS,cAAY,WAAW,OAAO,KAAK,EAAO,KAAK,CAAC,EAAG,EAAK,KAAK,EAC/E,CACH,EAEA,QAAW,KAAU,EAAS,CAC5B,IAAM,EAAU,YAAa,GAAU,EAAO,QAAU,EAAO,QAAU,EAAgB,CAAM,EACzF,EAAa,MAAM,EAAe,EAClC,EAAe,UAAW,eAAe,EAAgB,CAAO,EAAG,EAAW,CAAK,CAAC,EAE1F,EAAQ,UAAU,EAAc,EAAO,KAAK,EAI9C,GAAI,EACF,EAAQ,UAAU,EAAc,CAAC,EAGnC,MAAO,CAAE,UAAS,MAAO,CAAO,EAGlC,SAAS,EAAQ,EACf,cACA,cACA,UAKC,CACD,OAAO,cAAuB,EAC5B,YACA,aACA,eAAe,YAAU,QACtB,GACkB,CACrB,IAAM,EAAO,MAAM,GAAQ,WAAW,EACtC,GAAI,EAAE,GAAU,GAAO,MAAM,IAAI,eAAa,wBAAwB,EACtE,GAAI,CAAC,EACH,MAAM,IAAI,eAAa,8BAA+B,CAAE,MAAO,oCAAqC,CAAC,EAEvG,IAAM,EAAU,EAAK,UAAY,MAAM,EAAY,GAAG,IAG9C,UAAS,SAAU,MAAM,GAAkB,IAAK,EAAM,aAAY,UAAS,YAAW,OAAQ,CAAK,CAAC,EAGtG,GADK,MAAM,EAAO,gBAAgB,CAAE,UAAS,OAAM,CAAC,GACzC,MAAM,EAEvB,OAAO,EAAY,CAAK,GAI5B,eAAe,EAAO,EACpB,aACA,YACA,OACA,UACA,SACA,kBACmD,CACnD,IAAM,EAAuB,EAAc,CAAS,EACpD,GAAI,CAAC,EAAmB,CAAoB,EAC1C,MAAM,IAAI,eAAa,+BAAgC,CAAE,QAAS,CAAqB,CAAC,EAG1F,IAAM,EAAc,KAAK,KAAK,EAAW,aAAa,QAAQ,EAAI,EAAU,IAAI,EAE1E,EAAQ,MAAM,EAAW,CAAK,EAAE,SAAS,CAC7C,QAAS,EAAmB,CAAM,EAClC,WAAY,GACZ,aACF,CAAC,EAEK,EAAe,OAAO,EAAQ,QAAQ,CAAC,CAAC,EACxC,EAAe,EAAO,MAAM,EAAY,CAAI,EAAI,KAEhD,EAAgB,CAAC,EAMvB,GAHA,EAAc,KAAK,CAAE,QAAS,EAAgB,CAAS,EAAG,MAAO,EAAW,aAAa,QAAQ,CAAE,CAAC,EAGhG,EACF,EAAc,KAAK,CAAE,OAAQ,EAAc,MAAO,CAAE,CAAC,EAGvD,IAAQ,SAAQ,WAAY,EAAa,CAAE,QAAO,QAAS,EAAc,OAAQ,EAAO,QAAS,CAAc,CAAC,EAGhH,GAAI,EAAE,GAAU,GAAU,MAAM,IAAI,eAAa,oCAAqC,CAAE,aAAY,QAAO,CAAC,EAC5G,IAAM,EAAa,MAAM,EAAe,EAClC,EAAO,IAAI,QAAK,CAAE,QAAS,EAAW,CAAK,CAAE,CAAC,EAEpD,QAAa,OAAM,QAAO,iBAAiB,EACzC,EAAK,SAAS,CAAE,OAAM,QAAO,YAAa,EAAiB,GAAO,OAAW,aAAY,CAAC,EAI5F,QAAW,KAAU,EAAS,CAC5B,IAAM,EAAU,YAAa,GAAU,EAAO,QAAU,EAAO,QAAU,EAAgB,CAAM,EACzF,EAAS,EAAO,OAClB,EACE,CAAE,OAAQ,EAAc,MAAO,CAAE,EACjC,OACF,CAAE,UAAS,MAAO,EAAO,KAAM,EAEnC,GAAI,EACF,EAAK,UAAU,CAAM,EAIzB,MAAO,CAAE,OAAQ,EAAsB,OAAM,OAAM,EAGrD,SAAS,EAAkB,CAAC,EAAkD,CAC5E,IAAM,EAAU,EAAK,WAAW,CAAC,EACjC,OAAO,EAAmB,CAAO,MAjPnC,EAMA,EAUA,GAeM,gBAdN,IAWA,KACA,IA7BA,oCAMA,8BAUA,4BAeM,EAAQ,QAAM,cCTpB,SAAS,EAAe,EAAG,CACzB,OAAO,WAAS,MAGlB,SAAS,EAAgB,EAAG,CAC1B,MAAO,CACL,OAAQ,OACR,MAAO,CAAE,QAAS,SAAY,OAAQ,QAAW,EACjD,cAAe;AAAA,EACf,WAAY,GACZ,WAAY,GACZ,IAAK,GACP,EAKF,SAAS,EAA2B,EAClC,SACA,kBAIc,CACd,IAAM,EAAO,sBAAmB,CAAM,EAEhC,EADO,SAAM,eAAe,CAAI,EACpB,OAAO,CAAc,EAEvC,GAAI,CAAC,EAAK,WACR,MAAM,IAAI,eAAa,6BAA6B,EAItD,IAAM,EAAgB,GAAiB,EACjC,EAAU,SAAO,eAAe,OAAO,KAAK,EAAK,UAAU,EAAG,CAAE,QAAS,CAAc,CAAC,EAExF,EAAa,SAAO,QAAQ,EAAQ,SAAS,GAC3C,cAAe,WAAS,IAAI,MAAM,EAEpC,EAAS,EACX,OAAO,KAAK,CAAC,GAAM,EAAI,CAAC,EACxB,OAAO,KAAK,CAAC,GAAM,GAAI,CAAC,EAEtB,EAAU,OAAO,OAAO,CAAC,EAAQ,CAAU,CAAC,EAE5C,EAAU,WAAU,OAAO,CAAO,EAExC,MAAO,CACL,WAAY,IAAM,QAAQ,QAAQ,CAAO,EAEzC,gBAAiB,CAAC,IAAS,CACzB,IAAM,EAAa,EAAK,cAAc,CAAO,EAE7C,OAAO,QAAQ,QAAQ,CAAU,EAErC,EAGF,SAAS,EAAmB,EAC1B,SACA,UACA,OACA,SACA,gBAOC,CACD,QAAW,KAAQ,EAAQ,CACzB,IAAM,EAAc,CAAC,CAAC,EAAK,aAAe,CAAE,YAAa,IAAK,EAAK,YAAa,MAAO,OAAO,EAAK,KAAK,CAAE,CAAE,EAEtG,EAAiB,CAAC,EAAK,aAAe,CAC1C,eAAgB,EAAK,MAAQ,OAAO,KAAK,EAAK,MAAO,KAAK,EAAI,MAChE,EAEA,EAAK,SAAS,CAAE,KAAM,EAAK,KAAM,MAAO,EAAK,SAAU,KAAgB,CAAe,CAAC,EAGzF,QAAW,KAAU,EAAS,CAC5B,IAAM,EAAU,YAAa,GAAU,EAAO,QAAU,EAAO,QAAU,EACnE,EAAkB,EAAO,OAE/B,GAAI,GAAmB,CAAC,EACtB,SAGF,IAAM,EAAe,EACjB,CAAE,OAAQ,EAAyC,MAAO,EAAG,EAC7D,CAAE,OAAQ,UAAa,eAAe,EAAS,GAAgB,CAAC,EAAG,MAAO,OAAO,EAAO,KAAK,CAAE,EAEnG,EAAK,UAAU,CAAY,EAG7B,MAAO,CAAE,SAAQ,MAAK,EAGxB,eAAe,EAAiB,CAAC,EAAkC,CACjE,IAAQ,aAAY,YAAW,OAAM,UAAS,SAAQ,cAAe,EAE/D,EAAe,EAAO,EAAY,CAAI,EAAI,KAE1C,EAAQ,MAAM,EAAW,QAAM,KAAK,EAAE,SAAS,CAAE,QAAS,EAAQ,WAAY,IAAe,EAAM,CAAC,EAEpG,EAAgB,CACpB,CAAE,QAAS,EAAW,MAAO,OAAO,EAAW,aAAa,QAAQ,CAAC,CAAE,EACvE,GAAI,EAAe,CAAC,CAAE,OAAQ,EAAc,MAAO,CAAE,CAAC,EAAI,CAAC,CAC7D,GAEQ,SAAQ,WAAY,EAAa,CACvC,MAAO,QAAM,MACb,cAAe,EACf,UACA,OAAQ,EACR,QAAS,CACX,CAAC,EAED,GAAI,EAAE,GAAU,GACd,MAAM,IAAI,eAAa,oCAAqC,CAAE,aAAY,QAAO,CAAC,EAGpF,IAAM,EAAO,QAAM,qBAAqB,CAAE,QAAS,GAAgB,CAAE,EAAG,CAAE,QAAS,GAAI,CAAC,EAElF,EAAW,WAEX,EAA0B,OAAO,OAAO,CAAC,OAAO,GAAG,GAAI,EAAG,OAAO,GAAG,CAAI,EAAG,OAAO,KAAK,OAAO,EAAG,OAAO,GAAG,CAAC,CAAC,CAAC,EAG9G,EAAQ,OAAO,YAAY,CAAC,EAClC,EAAM,cAAc,IAAa,EAAG,CAAC,EAErC,EAAK,yBAAyB,CAAE,IAAK,EAAyB,OAAM,CAAC,EAErE,IAAQ,KAAM,EAAY,OAAQ,GAAiB,MAAM,GAAoB,CAC3E,eACA,SACA,UACA,OACA,QACF,CAAC,EAED,MAAO,CAAE,OAAQ,EAAc,UAAS,KAAM,CAAW,EAG3D,eAAsB,EAAkB,CACtC,EACA,CACA,IAAM,EAAS,MAAM,QAAM,CAAa,EACrC,KAAK,CAAE,OAAQ,IAAE,IAAI,IAAE,OAAO,CAAE,EAAG,EAAG,YAAa,QAAQ,QAAQ,CAAM,CAAC,EAC1E,KAAK,CAAE,OAAQ,IAAE,MAAO,EAAG,EAAG,SAAQ,iBAAgB,QAAQ,KAAQ,CACrE,IAAM,EAAqB,GAAkB,wBAAsB,QAAM,QAAU,CAAC,GAAI,IAAK,EAAG,EAAG,CAAC,EAC9F,EAAc,uBAAqB,EAAoB,CAAE,OAAM,CAAC,EAChE,EAAa,yBAAuB,CAAW,EAErD,OAAO,GAA4B,CAAE,eAAgB,EAAY,QAAO,CAAC,EAC1E,EACA,UAAU,IAAM,QAAQ,QAAQ,MAAS,CAAC,EAEvC,EAAc,MAAM,EAAkB,CAAE,MAAO,QAAM,MAAO,QAAO,CAAC,EAE1E,eAAe,CAAQ,EAAG,YAAW,aAAY,eAAe,YAAU,QAAS,GAA4B,CAC7G,IAAM,EAAO,MAAM,GAAQ,WAAW,EACtC,GAAI,EAAE,GAAU,GACd,MAAM,IAAI,eAAa,wBAAwB,EAGjD,IAAM,EAAU,EAAK,UAAY,MAAM,EAAY,YAAY,GAAG,IAE1D,QAAS,MAAM,GAAkB,IAAK,EAAM,aAAY,UAAS,YAAW,OAAQ,CAAK,CAAC,EAE5F,EAAa,MAAM,EAAO,gBAAgB,CAAI,EAIpD,OAFA,EAAW,kBAAkB,EAEtB,EAAY,YAAY,EAAW,mBAAmB,EAAE,MAAM,CAAC,EAGxE,SAAS,CAAiB,EACxB,SACA,iBAAiB,qBAIhB,CACD,IAAM,EAAO,sBAAmB,CAAM,EAEhC,EADO,SAAM,eAAe,CAAI,EACpB,OAAO,CAAc,EAEvC,GAAI,CAAC,EAAK,WACR,MAAM,IAAI,eAAa,6BAA6B,EAGtD,IAAM,EAAgB,GAAiB,EAGvC,OAFgB,SAAO,eAAe,OAAO,KAAK,EAAK,UAAU,EAAG,CAAE,QAAS,CAAc,CAAC,EAKhG,SAAS,CAAyB,EAChC,SACA,iBAAiB,qBAIhB,CAED,OADa,EAAkB,CAAE,iBAAgB,QAAO,CAAC,EAC7C,MAAM,EAGpB,MAAO,IACF,EACH,oBACA,qBACA,4BACA,WACA,gBAAiB,CACnB,MAhPF,EAEA,GACA,GACA,EAWA,GACA,gBACA,IAEA,KACA,IApBA,6BAEA,2BACA,2BACA,8BAWA,2BACA,0BCSA,eAAsB,EAA6C,CACjE,EACA,EAC2B,CAC3B,OAAQ,QACD,QAAM,YAET,OADgB,MAAM,GAAkB,GAA0D,CAAC,CAAC,OAIjG,QAAM,MAET,OADgB,MAAM,GAAmB,CAA+C,OAIrF,QAAM,aACN,QAAM,cACN,QAAM,cACN,QAAM,KAKT,OAJgB,MAAM,EAAkB,CACtC,WACI,CACN,CAAC,UAKD,MAAM,IAAI,eAAa,6BAA8B,CAAE,OAAM,CAAC,OApDpE,gBACA,KAEA,KACA,KAoDA,KAEA,IA1DA,i2BCAA,IACA,KACA,KACA,KACA",
|
|
19
|
-
"debugId": "
|
|
18
|
+
"mappings": "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",
|
|
19
|
+
"debugId": "B6E9FB8356387C7E64756E2164756E21",
|
|
20
20
|
"names": []
|
|
21
21
|
}
|
package/dist/src/utxo/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
var $Z=Object.create;var{getPrototypeOf:jZ,defineProperty:WX,getOwnPropertyNames:qZ}=Object;var WZ=Object.prototype.hasOwnProperty;var PB=(X,Z,B)=>{B=X!=null?$Z(jZ(X)):{};let G=Z||!X||!X.__esModule?WX(B,"default",{value:X,enumerable:!0}):B;for(let $ of qZ(X))if(!WZ.call(G,$))WX(G,$,{get:()=>X[$],enumerable:!0});return G};var LZ=(X,Z)=>{for(var B in Z)WX(X,B,{get:Z[B],enumerable:!0,configurable:!0,set:(G)=>Z[B]=()=>G})};var H=(X,Z)=>()=>(X&&(Z=X(X=0)),Z);var VB=((X)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(X,{get:(Z,B)=>(typeof require<"u"?require:Z)[B]}):X)(function(X){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+X+'" is not supported')});import{AssetValue as kX,getChainConfig as TZ}from"@swapkit/helpers";import{SwapKitApi as YZ}from"@swapkit/helpers/api";function EX(){function X(){let Z=Date.now(),B=LX||Z;return LX=B,Z>LX?Z:B+1}return DZ+X().toString(36)}function fX(X){return async function(B,G=!0){let $=await YZ.getChainBalance({address:B,chain:X,scamFilter:G}),{baseDecimal:Q}=TZ(X),J=$.map(({identifier:q,value:W,decimal:L})=>{return new kX({decimal:L||Q,identifier:q,value:W})});if(!J.some((q)=>q.isGasAsset))return[kX.from({chain:X}),...J];return J}}var DZ,LX=0;var TX=H(()=>{DZ=typeof process<"u"&&process.pid?process.pid.toString(36):""});import{networks as UZ}from"@bitgo/utxo-lib";import{Chain as C,getRPCUrl as zZ,RequestClient as t,SKConfig as CZ,SwapKitError as k,warnOnce as IZ}from"@swapkit/helpers";import{networks as MZ}from"bitcoinjs-lib";import p from"coininfo";async function _Z({chain:X,txHash:Z}){let B=`${e(X)}/push/transaction`,G=JSON.stringify({data:Z});try{let $=await t.post(B,{body:G,headers:{"Content-Type":"application/json"}});if($.context.code!==200)throw new k("toolbox_utxo_broadcast_failed",{error:$.context.error||"Transaction broadcast failed"});return $.data?.transaction_hash||Z}catch($){let Q=await zZ(X);if(Q){let J=JSON.stringify({id:EX(),jsonrpc:"2.0",method:"sendrawtransaction",params:[Z]}),j=await t.post(Q,{body:J,headers:{"Content-Type":"application/json"}});if(j.error)throw new k("toolbox_utxo_broadcast_failed",{error:j.error?.message});if(j.result.includes('"code":-26'))throw new k("toolbox_utxo_invalid_transaction",{error:"Transaction amount was too low"});return j.result}throw $}}function e(X){return`https://api.blockchair.com/${HZ(X)}`}function RX(X){switch(X){case C.Bitcoin:return 5;case C.Dogecoin:return 1e4;case C.Litecoin:return 1;case C.Zcash:return 1;default:return 2}}function HZ(X){switch(X){case C.BitcoinCash:return"bitcoin-cash";case C.Litecoin:return"litecoin";case C.Dash:return"dash";case C.Dogecoin:return"dogecoin";case C.Zcash:return"zcash";case C.Polkadot:return"polkadot";default:return"bitcoin"}}async function vZ(X){try{let{feePerKb:Z}=await t.get(`https://app.bitgo.com/api/v2/${X.toLowerCase()}/tx/fee`),B=Z/1000;return Math.max(B,RX(X))}catch{return RX(X)}}async function YX(X,Z){let B=await t.get(`${X}${Z?`${X.includes("?")?"&":"?"}key=${Z}`:""}`);if(!B||B.context.code!==200)throw new k("toolbox_utxo_api_error",{error:`Failed to query ${X}`});return B.data}async function PX({address:X,chain:Z,apiKey:B}){if(!X)throw new k("toolbox_utxo_invalid_params",{error:"Address is required"});try{return(await YX(`${e(Z)}/dashboards/address/${X}?transaction_details=true`,B))[X]}catch{return{address:{balance:0,transaction_count:0},utxo:[]}}}async function NZ({address:X,chain:Z,apiKey:B}){return(await PX({address:X,apiKey:B,chain:Z}))?.address.balance||0}async function VX({chain:X,apiKey:Z,txHash:B}){if(!B)throw new k("toolbox_utxo_invalid_params",{error:"TxHash is required"});try{return(await YX(`${e(X)}/raw/transaction/${B}`,Z))?.[B]?.raw_transaction||""}catch(G){let $=G instanceof Error?G.message:String(G);return console.error(`Failed to fetch raw transaction: ${$}`),""}}async function OZ({chain:X,address:Z,apiKey:B,offset:G=0,limit:$=30}){return(await YX(`${e(X)}/outputs?q=recipient(${Z}),is_spent(false),value(..2000000000000000)&s=value(desc)&fields=is_spent,transaction_hash,index,value,script_hex,block_id,spending_signature_hex&limit=${$}&offset=${G}`,B)).map(({is_spent:q,script_hex:W,block_id:L,transaction_hash:T,index:D,value:Y,spending_signature_hex:U})=>({hash:T,index:D,is_confirmed:L!==-1,is_spent:q,script_hex:W,txHex:U,value:Y}))}function yZ(X){return X.reduce((Z,B)=>Z+B.value,0)}function wX(X,Z){let B=[...X].sort((G,$)=>$.value-G.value);if(Z){let G=[],$=0;for(let Q of B)if(G.push(Q),$+=Q.value,$>=Z)break;return G}return B}async function bX({chain:X,address:Z,apiKey:B,targetValue:G,accumulativeValue:$=0,offset:Q=0,limit:J=30}){if(!Z)throw new k("toolbox_utxo_invalid_params",{error:"Address is required"});try{let j=await OZ({address:Z,apiKey:B,chain:X,limit:J,offset:Q,targetValue:G}),W=j.length<J,L=j.filter(({is_spent:z})=>!z),T=yZ(L),D=$+T,Y=G&&D>=G;if(W||Y)return wX(L,G);let U=await bX({accumulativeValue:D,address:Z,apiKey:B,chain:X,limit:J,offset:Q+J,targetValue:G}),I=[...L,...U];return wX(I,G)}catch(j){let q=j instanceof Error?j.message:String(j);return console.error(`Failed to fetch unspent UTXOs: ${q}`),[]}}async function FZ({address:X,chain:Z,apiKey:B,fetchTxHex:G=!0,targetValue:$}){let Q=await bX({address:X,apiKey:B,chain:Z,targetValue:$}),J=[];for(let{hash:j,index:q,script_hex:W,value:L}of Q){let T;if(G)T=await VX({apiKey:B,chain:Z,txHash:j});J.push({address:X,hash:j,index:q,txHex:T,value:L,witnessUtxo:{script:Buffer.from(W,"hex"),value:L}})}return J}function M(X){let Z=CZ.get("apiKeys").blockchair||"";return IZ({condition:!Z,id:"no_blockchair_api_key_warning",warning:"No Blockchair API key found. Functionality will be limited."}),{broadcastTx:(B)=>_Z({chain:X,txHash:B}),getAddressData:(B)=>PX({address:B,apiKey:Z,chain:X}),getBalance:(B)=>NZ({address:B,apiKey:Z,chain:X}),getRawTx:(B)=>VX({apiKey:Z,chain:X,txHash:B}),getSuggestedTxFee:()=>vZ(X),getUtxos:(B)=>FZ({...B,apiKey:Z,chain:X})}}function AZ(X){return X}function N(){return function(Z){switch(Z){case C.Bitcoin:return MZ.bitcoin;case C.BitcoinCash:return p.bitcoincash.main.toBitcoinJS();case C.Dash:return p.dash.main.toBitcoinJS();case C.Litecoin:return p.litecoin.main.toBitcoinJS();case C.Dogecoin:{let B={private:70615956,public:70617039},G=p.dogecoin.test;return G.versions.bip32=B,p.dogecoin.main.toBitcoinJS()}case C.Zcash:return UZ.zcash;default:throw new k("toolbox_utxo_not_supported",{chain:Z})}}}var KX=H(()=>{TX()});import{SwapKitError as xX}from"@swapkit/helpers";import gX from"bs58check";import mX from"cashaddrjs";function UX(X){try{return XX(X),!0}catch{return!1}}function zX(X){return XX(X)?.network}function x(X){let Z=XX(X);if(Z?.format==="legacy")return X;return fZ(Z)}function o(X){let Z=XX(X);return RZ(Z)}function XX(X){try{let Z=kZ(X);if(Z)return Z}catch{}try{let Z=EZ(X);if(Z)return Z}catch{}throw new xX("toolbox_utxo_invalid_address",{address:X})}function kZ(X){try{let Z=gX.decode(X);if(Z.length!==21)throw new xX("toolbox_utxo_invalid_address",{address:X});let B=Z[0],G=Array.prototype.slice.call(Z,1);switch(B){case P.legacy.mainnet.p2pkh:return{format:"legacy",hash:G,network:"mainnet",type:"p2pkh"};case P.legacy.mainnet.p2sh:return{format:"legacy",hash:G,network:"mainnet",type:"p2sh"};case P.legacy.testnet.p2pkh:return{format:"legacy",hash:G,network:"testnet",type:"p2pkh"};case P.legacy.testnet.p2sh:return{format:"legacy",hash:G,network:"testnet",type:"p2sh"};case P.bitpay.mainnet.p2pkh:return{format:"bitpay",hash:G,network:"mainnet",type:"p2pkh"};case P.bitpay.mainnet.p2sh:return{format:"bitpay",hash:G,network:"mainnet",type:"p2sh"};default:return}}catch{return}}function EZ(X){if(X.indexOf(":")!==-1)try{return SX(X)}catch{}else{let Z=["bitcoincash","bchtest","bchreg"];for(let B of Z)try{return SX(`${B}:${X}`)}catch{}}return}function SX(X){try{let{hash:Z,prefix:B,type:G}=mX.decode(X);return{format:"cashaddr",hash:Array.prototype.slice.call(Z,0),network:B==="bitcoincash"?"mainnet":"testnet",type:G==="P2PKH"?"p2pkh":"p2sh"}}catch{return}}function fZ(X){let Z=P.legacy[X.network][X.type],B=Buffer.alloc(1+X.hash.length);return B[0]=Z,B.set(X.hash,1),gX.encode(B)}function RZ(X){let Z=X.network==="mainnet"?"bitcoincash":"bchtest",B=X.type==="p2pkh"?"P2PKH":"P2SH",G=new Uint8Array(X.hash);return mX.encode(Z,B,G)}var DX,P;var lX=H(()=>{((B)=>{B.Mainnet="mainnet";B.Testnet="testnet"})(DX||={});P={["legacy"]:{["mainnet"]:{["p2pkh"]:0,["p2sh"]:5},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}},["bitpay"]:{["mainnet"]:{["p2pkh"]:28,["p2sh"]:40},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}}}});import{SwapKitError as wZ}from"@swapkit/helpers";import{opcodes as PZ,script as VZ}from"bitcoinjs-lib";function O(X){let Z=Buffer.from(X,"utf8");return VZ.compile([PZ.OP_RETURN,Z])}var bZ=1000,GX=10,hX=10,KZ=41,SZ=107,JX,ZX,BX,n=(X)=>{if(X.startsWith("bc1")||X.startsWith("tb1")||X.startsWith("ltc1")||X.startsWith("tltc1"))return"P2WPKH";if(X.startsWith("1")||X.startsWith("m")||X.startsWith("n")||X.startsWith("bitcoincash:q")||X.startsWith("bitcoincash:p")||X.startsWith("q")||X.startsWith("p")||X.startsWith("L")||X.startsWith("M")||X.startsWith("3")||X.startsWith("D")||X.startsWith("A")||X.startsWith("9")||X.startsWith("X")||X.startsWith("7")||X.startsWith("y")||X.startsWith("t1")||X.startsWith("t3")||X.startsWith("tm"))return"P2PKH";throw new wZ("toolbox_utxo_invalid_address",{address:X})},g=({inputs:X,outputs:Z,feeRate:B})=>{let G=X[0]&&"address"in X[0]&&X[0].address?n(X[0].address):"P2PKH",$=X.filter((J)=>J.value>=ZX["type"in J?J.type:"P2PKH"]*Math.ceil(B)).reduce((J,j)=>J+E(j),0),Q=Z?.reduce((J,j)=>J+u(j),0)||BX[G];return GX+$+Q},E=(X)=>{if("type"in X)return ZX[X.type];if("address"in X&&X.address)return ZX[n(X.address)];return KZ+SZ},u=(X,Z)=>{if(X?.script)return hX+X.script.length+(X.script.length>=74?2:1);if(Z)return BX[Z];return BX.P2PKH};var CX=H(()=>{((B)=>{B.P2PKH="P2PKH";B.P2WPKH="P2WPKH"})(JX||={});ZX={["P2PKH"]:148,["P2WPKH"]:68},BX={["P2PKH"]:34,["P2WPKH"]:31}});import{Chain as V,SwapKitError as xZ}from"@swapkit/helpers";function QX(X){switch(X){case V.Bitcoin:case V.BitcoinCash:return 550;case V.Dash:case V.Litecoin:return 5500;case V.Dogecoin:return 1e5;case V.Zcash:return 546;default:throw new xZ("toolbox_utxo_not_supported",{chain:X})}}function y({inputs:X,outputs:Z,feeRate:B=1,chain:G=V.Bitcoin,changeAddress:$=""}){let Q=Math.ceil(B),J=X[0]&&"address"in X[0]&&X[0].address?n(X[0].address):"P2PKH",j=X.filter((Y)=>E(Y)*Q<=Y.value),q=GX+Z.reduce((Y,U)=>Y+u(U,J),0),W=Z.reduce((Y,U)=>Y+U.value,0),L=q*Q,T=0,D=[];for(let Y of j){let U=E(Y),I=Q*U;L+=I,T+=Y.value,D.push(Y);let z=L+W;if(T<z)continue;let R=T-z,w=Q*u({address:"",value:0},J);if(R>w){let FX=w+L,AX=T-(W+FX);if(AX>Math.max(E({})*Q,QX(G)))return{fee:FX,inputs:D,outputs:Z.concat({address:$,value:AX})}}return{fee:L,inputs:D,outputs:Z}}return{fee:Q*g({feeRate:Q,inputs:X,outputs:Z})}}var cX=H(()=>{CX()});var m=H(()=>{KX();lX();cX();CX()});import{networks as gZ,address as mZ}from"@bitgo/utxo-lib";import lZ from"bs58check";function b(X){return X.replace(/(bchtest:|bitcoincash:)/,"")}function f(X){let Z=b(X);return UX(Z)&&zX(Z)==="mainnet"}function l(X){try{if(X.startsWith("z"))return console.warn("Shielded Zcash addresses (z-addresses) are not supported. Use transparent addresses (t1/t3) only."),!1;let Z=gZ.zcash;try{return mZ.toOutputScript(X,Z),!0}catch{let B=lZ.decode(X);if(B.length<21)return!1;let G=B[0];return G===Z.pubKeyHash||G===Z.scriptHash}}catch{return!1}}var r=H(()=>{m()});import MX from"@bitcoinerlab/secp256k1";import{ECPair as hZ,HDNode as cZ}from"@psf/bitcoincashjs-lib";import{HDKey as pZ}from"@scure/bip32";import{mnemonicToSeedSync as pX}from"@scure/bip39";import{AssetValue as IX,applyFeeMultiplier as oX,Chain as _,DerivationPath as oZ,derivationPathToString as nZ,FeeOption as F,NetworkDerivationPath as uZ,SwapKitError as A,SwapKitNumber as rZ,updateDerivationPath as dZ}from"@swapkit/helpers";import{address as iZ,initEccLib as uX,Psbt as sZ,payments as nX}from"bitcoinjs-lib";import{ECPairFactory as aZ}from"ecpair";function rX({inputs:X,outputs:Z,chain:B,psbt:G,sender:$,compiledMemo:Q}){for(let J of X){let j=!!J.witnessUtxo&&!d.includes(B)&&{witnessUtxo:J.witnessUtxo},q=d.includes(B)&&{nonWitnessUtxo:J.txHex?Buffer.from(J.txHex,"hex"):void 0};G.addInput({hash:J.hash,index:J.index,...j,...q})}for(let J of Z){let j="address"in J&&J.address?J.address:$,q=J.script;if(q&&!Q)continue;let W=q?{script:Q,value:0}:{address:j,value:J.value};uX(MX),G.addOutput(W)}return{inputs:X,psbt:G}}async function dX({assetValue:X,recipient:Z,memo:B,feeRate:G,sender:$,fetchTxHex:Q=!1}){let J=X.chain,j=B?await O(B):null,q=await aX({assetValue:X,fetchTxHex:Q,memo:B,recipient:Z,sender:$}),{inputs:W,outputs:L}=y({...q,chain:J,feeRate:G});if(!(W&&L))throw new A("toolbox_utxo_insufficient_balance",{assetValue:X,sender:$});let T=await N(),D=new sZ({network:T(J)});if(J===_.Dogecoin)D.setMaximumFeeRate(650000000);let{psbt:Y,inputs:U}=await rX({chain:J,compiledMemo:j,inputs:W,outputs:L,psbt:D,sender:$});return{inputs:U,psbt:Y,utxos:q.inputs}}async function iX(){let X=await N();return function({address:B,chain:G}){if(G===_.BitcoinCash)return f(B);if(G===_.Zcash)return l(B);try{return uX(MX),iZ.toOutputScript(B,X(G)),!0}catch{return!1}}}async function tZ({chain:X,phrase:Z,derivationPath:B}){let G=(await i(X))({derivationPath:B,phrase:Z});async function $(J){return await J.signAllInputs(G),J}function Q(){return _X(X)(G)}return{getAddress:Q,signTransaction:$}}async function K({chain:X,...Z}){let B="phrase"in Z?Z.phrase:void 0,G="index"in Z?Z.index||0:0,$=nZ("derivationPath"in Z&&Z.derivationPath?Z.derivationPath:dZ(uZ[X],{index:G})),Q=B?await tZ({chain:X,derivationPath:$,phrase:B}):("signer"in Z)?Z.signer:void 0;function J(){return Promise.resolve(Q?.getAddress())}let j=await iX(),q=await i(X);return{accumulative:y,broadcastTx:(W)=>M(X).broadcastTx(W),calculateTxSize:g,createKeysForPath:q,createTransaction:dX,estimateMaxSendableAmount:eZ(X),estimateTransactionFee:XB(X),getAddress:J,getAddressFromKeys:_X(X),getBalance:fX(X),getFeeRates:()=>s(X),getInputsOutputsFee:sX,getPrivateKeyFromMnemonic:(W)=>{return q(W).toWIF()},transfer:ZB(Q),validateAddress:(W)=>j({address:W,chain:X})}}async function sX({assetValue:X,feeOptionKey:Z=F.Fast,feeRate:B,memo:G,sender:$,recipient:Q}){let J=X.chain,j=await aX({assetValue:X,memo:G,recipient:Q,sender:$}),q=B?Math.floor(B):(await s(J))[Z];return y({...j,chain:J,feeRate:q})}function eZ(X){return async function({from:B,memo:G,feeRate:$,feeOptionKey:Q=F.Fast,recipients:J=1}){let j=await M(X).getAddressData(B),q=$?Math.ceil($):(await s(X))[Q],W=j?.utxo.map((U)=>({...U,hash:"",type:"P2PKH"})).filter((U)=>U.value>Math.max(QX(X),E(U)*q));if(!W?.length)return IX.from({chain:X});let L=IX.from({chain:X,value:W.reduce((U,I)=>U+I.value,0)}),T=typeof J==="number"?Array.from({length:J},()=>({address:B,value:0})):J;if(G){let U=await O(G);T.push({address:B,script:U,value:0})}let Y=g({feeRate:q,inputs:W,outputs:T})*q;return L.sub(Y)}}function XB(X){return async(Z)=>{let B=await sX(Z);return IX.from({chain:X,value:rZ.fromBigInt(BigInt(B.fee),8).getValue("string")})}}async function i(X){let Z=await N();switch(X){case _.BitcoinCash:return function({phrase:G,derivationPath:$=`${oZ.BCH}/0`,wif:Q}){let J=Z(X);if(Q)return hZ.fromWIF(Q,J);if(!G)throw new A("toolbox_utxo_invalid_params",{error:"No phrase provided"});return cZ.fromSeedBuffer(Buffer.from(pX(G)),J).derivePath($).keyPair};case _.Bitcoin:case _.Dogecoin:case _.Litecoin:case _.Zcash:case _.Dash:return function({phrase:G,wif:$,derivationPath:Q}){if(!($||G))throw new A("toolbox_utxo_invalid_params",{error:"Either phrase or wif must be provided"});let J=aZ(MX),j=Z(X);if($)return J.fromWIF($,j);let q=pX(G),W=pZ.fromMasterSeed(q,j).derive(Q);if(!W.privateKey)throw new A("toolbox_utxo_invalid_params",{error:"Could not get private key from phrase"});return J.fromPrivateKey(Buffer.from(W.privateKey),{network:j})};default:throw new A("toolbox_utxo_not_supported",{chain:X})}}function _X(X){let Z=N();return function(G){if(!G)throw new A("toolbox_utxo_invalid_params",{error:"Keys must be provided"});let $=d.includes(X)?nX.p2pkh:nX.p2wpkh,{address:Q}=$({network:Z(X),pubkey:G.publicKey});if(!Q)throw new A("toolbox_utxo_invalid_address",{error:"Address not defined"});return Q}}function ZB(X){return async function({memo:B,recipient:G,feeOptionKey:$,feeRate:Q,assetValue:J}){let j=await X?.getAddress(),q=J.chain;if(!(X&&j))throw new A("toolbox_utxo_no_signer");if(!G)throw new A("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});let W=Q||(await s(q))[$||F.Fast],{psbt:L}=await dX({assetValue:J,feeRate:W,memo:B,recipient:G,sender:j}),T=await X.signTransaction(L);return T.finalizeAllInputs(),M(q).broadcastTx(T.extractTransaction().toHex())}}async function s(X){let Z=await M(X).getSuggestedTxFee();return{[F.Average]:Z,[F.Fast]:oX(Z,F.Fast),[F.Fastest]:oX(Z,F.Fastest)}}async function aX({assetValue:X,recipient:Z,memo:B,sender:G,fetchTxHex:$=!1}){let Q=X.chain,J=(await s(Q))[F.Fastest],j=$||d.includes(Q),q=X.getBaseValue("number"),W=Math.ceil(q+J*5000);return{inputs:await M(Q).getUtxos({address:G,fetchTxHex:j,targetValue:W}),outputs:[{address:Z,value:q},...B?[{address:"",script:await O(B),value:0}]:[]]}}var d;var a=H(()=>{TX();m();r();d=[_.Dash,_.Dogecoin,_.Zcash,_.BitcoinCash]});import{address as BB,Transaction as GB,TransactionBuilder as JB}from"@psf/bitcoincashjs-lib";import{Chain as QB,derivationPathToString as $B,FeeOption as jB,NetworkDerivationPath as qB,SwapKitError as h,updateDerivationPath as WB}from"@swapkit/helpers";import{Psbt as LB}from"bitcoinjs-lib";function S(X){return b(o(X))}function TB(X){function Z({builder:G,utxos:$}){return $.forEach((Q,J)=>{G.sign(J,X,void 0,65,Q.witnessUtxo?.value)}),G.build()}return{getAddress:()=>{let G=X.getAddress(0);return Promise.resolve(S(G))},signTransaction:Z}}async function HX(X){let Z="phrase"in X?X.phrase:void 0,B="index"in X?X.index||0:0,G=$B("derivationPath"in X&&X.derivationPath?X.derivationPath:WB(qB[v],{index:B})),$=Z?(await i(v))({derivationPath:G,phrase:Z}):void 0,Q=$?TB($):("signer"in X)?X.signer:void 0;function J(){return Promise.resolve(Q?.getAddress())}let{getBalance:j,getFeeRates:q,broadcastTx:W,...L}=await K({chain:v});function T(D,Y=!0){return j(b(o(D)))}return{...L,broadcastTx:W,buildTx:DB,createTransaction:tX,getAddress:J,getAddressFromKeys:UB,getBalance:T,getFeeRates:q,stripPrefix:b,stripToCashAddress:S,transfer:YB({broadcastTx:W,getFeeRates:q,signer:Q}),validateAddress:f}}async function tX({assetValue:X,recipient:Z,memo:B,feeRate:G,sender:$}){if(!f(Z))throw new h("toolbox_utxo_invalid_address",{address:Z});let Q=Math.ceil(X.getBaseValue("number")+G*7500),J=await M(v).getUtxos({address:S($),fetchTxHex:!0,targetValue:Q}),j=B?await O(B):null,q=[];q.push({address:Z,value:X.getBaseValue("number")});let{inputs:W,outputs:L}=y({chain:v,feeRate:G,inputs:J,outputs:q});if(!(W&&L))throw new h("toolbox_utxo_insufficient_balance",{assetValue:X,sender:$});let T=await N(),D=new JB(T(v));await Promise.all(W.map(async(Y)=>{let U=await M(v).getRawTx(Y.hash);D.addInput(GB.fromBuffer(Buffer.from(U,"hex")),Y.index)}));for(let Y of L){let U="address"in Y&&Y.address?Y.address:x($),I=await N(),z=BB.toOutputScript(x(U),I(v));D.addOutput(z,Y.value)}if(j)D.addOutput(j,0);return{builder:D,utxos:W}}function YB({broadcastTx:X,getFeeRates:Z,signer:B}){return async function({recipient:$,assetValue:Q,feeOptionKey:J=jB.Fast,...j}){let q=await B?.getAddress();if(!(B&&q))throw new h("toolbox_utxo_no_signer");if(!$)throw new h("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});let W=j.feeRate||(await Z())[J],{builder:L,utxos:T}=await tX({...j,assetValue:Q,feeRate:W,recipient:$,sender:q}),Y=(await B.signTransaction({builder:L,utxos:T})).toHex();return X(Y)}}async function DB({assetValue:X,recipient:Z,memo:B,feeRate:G,sender:$,setSigHashType:Q}){let J=o(Z);if(!f(J))throw new h("toolbox_utxo_invalid_address",{address:J});let j=Math.ceil(X.getBaseValue("number")+G*7500),q=await M(v).getUtxos({address:S($),fetchTxHex:!1,targetValue:j}),W=Number(G.toFixed(0)),L=B?await O(B):null,T=[];if(T.push({address:x(Z),value:X.getBaseValue("number")}),L)T.push({script:L,value:0});let{inputs:D,outputs:Y}=y({chain:v,feeRate:W,inputs:q,outputs:T});if(!(D&&Y))throw new h("toolbox_utxo_insufficient_balance",{assetValue:X,sender:$});let U=await N(),I=new LB({network:U(v)});for(let{hash:z,index:R,witnessUtxo:w}of D)I.addInput({hash:z,index:R,sighashType:Q?65:void 0,witnessUtxo:w});for(let z of Y){let R="address"in z&&z.address?z.address:x($),w=z.script?L?{script:L,value:0}:void 0:{address:R,value:z.value};if(w)I.addOutput(w)}return{inputs:D,psbt:I,utxos:q}}function UB(X){let Z=X.getAddress(0);return S(Z)}var v;var $X=H(()=>{m();a();r();v=QB.BitcoinCash});import{bitgo as zB,crypto as CB,ECPair as XZ,networks as IB,address as MB}from"@bitgo/utxo-lib";import{HDKey as ZZ}from"@scure/bip32";import{mnemonicToSeedSync as BZ}from"@scure/bip39";import{Chain as jX,derivationPathToString as _B,FeeOption as HB,NetworkDerivationPath as vB,SKConfig as NB,SwapKitError as qX,updateDerivationPath as OB}from"@swapkit/helpers";import yB from"bs58check";import{match as FB,P as vX}from"ts-pattern";function GZ(){return IB.zcash}function JZ(){return{bech32:void 0,bip32:{private:76066276,public:76067358},messagePrefix:`\x18ZCash Signed Message:
|
|
2
|
-
`,pubKeyHash:28,scriptHash:28,wif:128}}function
|
|
1
|
+
var jB=Object.create;var{getPrototypeOf:qB,defineProperty:WX,getOwnPropertyNames:WB}=Object;var LB=Object.prototype.hasOwnProperty;var wZ=(X,B,Z)=>{Z=X!=null?jB(qB(X)):{};let G=B||!X||!X.__esModule?WX(Z,"default",{value:X,enumerable:!0}):Z;for(let $ of WB(X))if(!LB.call(G,$))WX(G,$,{get:()=>X[$],enumerable:!0});return G};var YB=(X,B)=>{for(var Z in B)WX(X,Z,{get:B[Z],enumerable:!0,configurable:!0,set:(G)=>B[Z]=()=>G})};var H=(X,B)=>()=>(X&&(B=X(X=0)),B);var KZ=((X)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(X,{get:(B,Z)=>(typeof require<"u"?require:B)[Z]}):X)(function(X){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+X+'" is not supported')});import{AssetValue as kX,getChainConfig as TB}from"@swapkit/helpers";import{SwapKitApi as DB}from"@swapkit/helpers/api";function fX(){function X(){let B=Date.now(),Z=LX||B;return LX=Z,B>LX?B:Z+1}return UB+X().toString(36)}function RX(X){return async function(Z,G=!0){let $=await DB.getChainBalance({address:Z,chain:X,scamFilter:G}),{baseDecimal:Q}=TB(X),J=$.map(({identifier:q,value:W,decimal:L})=>{return new kX({decimal:L||Q,identifier:q,value:W})});if(!J.some((q)=>q.isGasAsset))return[kX.from({chain:X}),...J];return J}}var UB,LX=0;var YX=H(()=>{UB=typeof process<"u"&&process.pid?process.pid.toString(36):""});import{networks as zB}from"@bitgo/utxo-lib";import{Chain as z,getRPCUrl as CB,RequestClient as t,SKConfig as IB,SwapKitError as E,warnOnce as _B}from"@swapkit/helpers";import{networks as MB}from"bitcoinjs-lib";import p from"coininfo";async function HB({chain:X,txHash:B}){let Z=`${e(X)}/push/transaction`,G=JSON.stringify({data:B});try{let $=await t.post(Z,{body:G,headers:{"Content-Type":"application/json"}});if($.context.code!==200)throw new E("toolbox_utxo_broadcast_failed",{error:$.context.error||"Transaction broadcast failed"});return $.data?.transaction_hash||B}catch($){let Q=await CB(X);if(Q){let J=JSON.stringify({id:fX(),jsonrpc:"2.0",method:"sendrawtransaction",params:[B]}),j=await t.post(Q,{body:J,headers:{"Content-Type":"application/json"}});if(j.error)throw new E("toolbox_utxo_broadcast_failed",{error:j.error?.message});if(j.result.includes('"code":-26'))throw new E("toolbox_utxo_invalid_transaction",{error:"Transaction amount was too low"});return j.result}throw $}}function e(X){return`https://api.blockchair.com/${vB(X)}`}function PX(X){switch(X){case z.Bitcoin:return 5;case z.Dogecoin:return 1e4;case z.Litecoin:return 1;case z.Zcash:return 1;default:return 2}}function vB(X){switch(X){case z.BitcoinCash:return"bitcoin-cash";case z.Litecoin:return"litecoin";case z.Dash:return"dash";case z.Dogecoin:return"dogecoin";case z.Zcash:return"zcash";case z.Polkadot:return"polkadot";default:return"bitcoin"}}async function NB(X){try{let{feePerKb:B}=await t.get(`https://app.bitgo.com/api/v2/${X.toLowerCase()}/tx/fee`),Z=B/1000;return Math.max(Z,PX(X))}catch{return PX(X)}}async function TX(X,B){let Z=await t.get(`${X}${B?`${X.includes("?")?"&":"?"}key=${B}`:""}`);if(!Z||Z.context.code!==200)throw new E("toolbox_utxo_api_error",{error:`Failed to query ${X}`});return Z.data}async function wX({address:X,chain:B,apiKey:Z}){if(!X)throw new E("toolbox_utxo_invalid_params",{error:"Address is required"});try{return(await TX(`${e(B)}/dashboards/address/${X}?transaction_details=true`,Z))[X]}catch{return{address:{balance:0,transaction_count:0},utxo:[]}}}async function OB({address:X,chain:B,apiKey:Z}){return(await wX({address:X,apiKey:Z,chain:B}))?.address.balance||0}async function KX({chain:X,apiKey:B,txHash:Z}){if(!Z)throw new E("toolbox_utxo_invalid_params",{error:"TxHash is required"});try{return(await TX(`${e(X)}/raw/transaction/${Z}`,B))?.[Z]?.raw_transaction||""}catch(G){let $=G instanceof Error?G.message:String(G);return console.error(`Failed to fetch raw transaction: ${$}`),""}}async function yB({chain:X,address:B,apiKey:Z,offset:G=0,limit:$=30}){return(await TX(`${e(X)}/outputs?q=recipient(${B}),is_spent(false),value(..2000000000000000)&s=value(desc)&fields=is_spent,transaction_hash,index,value,script_hex,block_id,spending_signature_hex&limit=${$}&offset=${G}`,Z)).map(({is_spent:q,script_hex:W,block_id:L,transaction_hash:Y,index:D,value:T,spending_signature_hex:U})=>({hash:Y,index:D,is_confirmed:L!==-1,is_spent:q,script_hex:W,txHex:U,value:T}))}function AB(X){return X.reduce((B,Z)=>B+Z.value,0)}function VX(X,B){let Z=[...X].sort((G,$)=>$.value-G.value);if(B){let G=[],$=0;for(let Q of Z)if(G.push(Q),$+=Q.value,$>=B)break;return G}return Z}async function SX({chain:X,address:B,apiKey:Z,targetValue:G,accumulativeValue:$=0,offset:Q=0,limit:J=30}){if(!B)throw new E("toolbox_utxo_invalid_params",{error:"Address is required"});try{let j=await yB({address:B,apiKey:Z,chain:X,limit:J,offset:Q,targetValue:G}),W=j.length<J,L=j.filter(({is_spent:C})=>!C),Y=AB(L),D=$+Y,T=G&&D>=G;if(W||T)return VX(L,G);let U=await SX({accumulativeValue:D,address:B,apiKey:Z,chain:X,limit:J,offset:Q+J,targetValue:G}),I=[...L,...U];return VX(I,G)}catch(j){let q=j instanceof Error?j.message:String(j);return console.error(`Failed to fetch unspent UTXOs: ${q}`),[]}}async function FB({address:X,chain:B,apiKey:Z,fetchTxHex:G=!0,targetValue:$}){let Q=await SX({address:X,apiKey:Z,chain:B,targetValue:$}),J=[];for(let{hash:j,index:q,script_hex:W,value:L}of Q){let Y;if(G)Y=await KX({apiKey:Z,chain:B,txHash:j});J.push({address:X,hash:j,index:q,txHex:Y,value:L,witnessUtxo:{script:Buffer.from(W,"hex"),value:L}})}return J}function _(X){let B=IB.get("apiKeys").blockchair||"";return _B({condition:!B,id:"no_blockchair_api_key_warning",warning:"No Blockchair API key found. Functionality will be limited."}),{broadcastTx:(Z)=>HB({chain:X,txHash:Z}),getAddressData:(Z)=>wX({address:Z,apiKey:B,chain:X}),getBalance:(Z)=>OB({address:Z,apiKey:B,chain:X}),getRawTx:(Z)=>KX({apiKey:B,chain:X,txHash:Z}),getSuggestedTxFee:()=>NB(X),getUtxos:(Z)=>FB({...Z,apiKey:B,chain:X})}}function EB(X){return X}function N(){return function(B){switch(B){case z.Bitcoin:return MB.bitcoin;case z.BitcoinCash:return p.bitcoincash.main.toBitcoinJS();case z.Dash:return p.dash.main.toBitcoinJS();case z.Litecoin:return p.litecoin.main.toBitcoinJS();case z.Dogecoin:{let Z={private:70615956,public:70617039},G=p.dogecoin.test;return G.versions.bip32=Z,p.dogecoin.main.toBitcoinJS()}case z.Zcash:return zB.zcash;default:throw new E("toolbox_utxo_not_supported",{chain:B})}}}var bX=H(()=>{YX()});import{SwapKitError as gX}from"@swapkit/helpers";import mX from"bs58check";import lX from"cashaddrjs";function UX(X){try{return XX(X),!0}catch{return!1}}function zX(X){return XX(X)?.network}function b(X){let B=XX(X);if(B?.format==="legacy")return X;return RB(B)}function o(X){let B=XX(X);return PB(B)}function XX(X){try{let B=kB(X);if(B)return B}catch{}try{let B=fB(X);if(B)return B}catch{}throw new gX("toolbox_utxo_invalid_address",{address:X})}function kB(X){try{let B=mX.decode(X);if(B.length!==21)throw new gX("toolbox_utxo_invalid_address",{address:X});let Z=B[0],G=Array.prototype.slice.call(B,1);switch(Z){case P.legacy.mainnet.p2pkh:return{format:"legacy",hash:G,network:"mainnet",type:"p2pkh"};case P.legacy.mainnet.p2sh:return{format:"legacy",hash:G,network:"mainnet",type:"p2sh"};case P.legacy.testnet.p2pkh:return{format:"legacy",hash:G,network:"testnet",type:"p2pkh"};case P.legacy.testnet.p2sh:return{format:"legacy",hash:G,network:"testnet",type:"p2sh"};case P.bitpay.mainnet.p2pkh:return{format:"bitpay",hash:G,network:"mainnet",type:"p2pkh"};case P.bitpay.mainnet.p2sh:return{format:"bitpay",hash:G,network:"mainnet",type:"p2sh"};default:return}}catch{return}}function fB(X){if(X.indexOf(":")!==-1)try{return xX(X)}catch{}else{let B=["bitcoincash","bchtest","bchreg"];for(let Z of B)try{return xX(`${Z}:${X}`)}catch{}}return}function xX(X){try{let{hash:B,prefix:Z,type:G}=lX.decode(X);return{format:"cashaddr",hash:Array.prototype.slice.call(B,0),network:Z==="bitcoincash"?"mainnet":"testnet",type:G==="P2PKH"?"p2pkh":"p2sh"}}catch{return}}function RB(X){let B=P.legacy[X.network][X.type],Z=Buffer.alloc(1+X.hash.length);return Z[0]=B,Z.set(X.hash,1),mX.encode(Z)}function PB(X){let B=X.network==="mainnet"?"bitcoincash":"bchtest",Z=X.type==="p2pkh"?"P2PKH":"P2SH",G=new Uint8Array(X.hash);return lX.encode(B,Z,G)}var DX,P;var hX=H(()=>{((Z)=>{Z.Mainnet="mainnet";Z.Testnet="testnet"})(DX||={});P={["legacy"]:{["mainnet"]:{["p2pkh"]:0,["p2sh"]:5},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}},["bitpay"]:{["mainnet"]:{["p2pkh"]:28,["p2sh"]:40},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}}}});import{SwapKitError as VB}from"@swapkit/helpers";import{opcodes as wB,script as KB}from"bitcoinjs-lib";function O(X){let B=Buffer.from(X,"utf8");return KB.compile([wB.OP_RETURN,B])}var SB=1000,GX=10,cX=10,bB=41,xB=107,JX,BX,ZX,n=(X)=>{if(X.startsWith("bc1")||X.startsWith("tb1")||X.startsWith("ltc1")||X.startsWith("tltc1"))return"P2WPKH";if(X.startsWith("1")||X.startsWith("m")||X.startsWith("n")||X.startsWith("bitcoincash:q")||X.startsWith("bitcoincash:p")||X.startsWith("q")||X.startsWith("p")||X.startsWith("L")||X.startsWith("M")||X.startsWith("3")||X.startsWith("D")||X.startsWith("A")||X.startsWith("9")||X.startsWith("X")||X.startsWith("7")||X.startsWith("y")||X.startsWith("t1")||X.startsWith("t3")||X.startsWith("tm"))return"P2PKH";throw new VB("toolbox_utxo_invalid_address",{address:X})},x=({inputs:X,outputs:B,feeRate:Z})=>{let G=X[0]&&"address"in X[0]&&X[0].address?n(X[0].address):"P2PKH",$=X.filter((J)=>J.value>=BX["type"in J?J.type:"P2PKH"]*Math.ceil(Z)).reduce((J,j)=>J+k(j),0),Q=B?.reduce((J,j)=>J+u(j),0)||ZX[G];return GX+$+Q},k=(X)=>{if("type"in X)return BX[X.type];if("address"in X&&X.address)return BX[n(X.address)];return bB+xB},u=(X,B)=>{if(X?.script)return cX+X.script.length+(X.script.length>=74?2:1);if(B)return ZX[B];return ZX.P2PKH};var CX=H(()=>{((Z)=>{Z.P2PKH="P2PKH";Z.P2WPKH="P2WPKH"})(JX||={});BX={["P2PKH"]:148,["P2WPKH"]:68},ZX={["P2PKH"]:34,["P2WPKH"]:31}});import{Chain as V,SwapKitError as gB}from"@swapkit/helpers";function QX(X){switch(X){case V.Bitcoin:case V.BitcoinCash:return 550;case V.Dash:case V.Litecoin:return 5500;case V.Dogecoin:return 1e5;case V.Zcash:return 546;default:throw new gB("toolbox_utxo_not_supported",{chain:X})}}function y({inputs:X,outputs:B,feeRate:Z=1,chain:G=V.Bitcoin,changeAddress:$=""}){let Q=Math.ceil(Z),J=X[0]&&"address"in X[0]&&X[0].address?n(X[0].address):"P2PKH",j=X.filter((T)=>k(T)*Q<=T.value),q=GX+B.reduce((T,U)=>T+u(U,J),0),W=B.reduce((T,U)=>T+U.value,0),L=q*Q,Y=0,D=[];for(let T of j){let U=k(T),I=Q*U;L+=I,Y+=T.value,D.push(T);let C=L+W;if(Y<C)continue;let c=Y-C,R=Q*u({address:"",value:0},J);if(c>R){let FX=R+L,EX=Y-(W+FX);if(EX>Math.max(k({})*Q,QX(G)))return{fee:FX,inputs:D,outputs:B.concat({address:$,value:EX})}}return{fee:L,inputs:D,outputs:B}}return{fee:Q*x({feeRate:Q,inputs:X,outputs:B})}}var pX=H(()=>{CX()});var g=H(()=>{bX();hX();pX();CX()});import{networks as mB,address as lB}from"@bitgo/utxo-lib";import hB from"bs58check";function w(X){return X.replace(/(bchtest:|bitcoincash:)/,"")}function f(X){let B=w(X);return UX(B)&&zX(B)==="mainnet"}function m(X){try{if(X.startsWith("z"))return console.warn("Shielded Zcash addresses (z-addresses) are not supported. Use transparent addresses (t1/t3) only."),!1;let B=mB.zcash;try{return lB.toOutputScript(X,B),!0}catch{let Z=hB.decode(X);if(Z.length<21)return!1;let G=Z[0];return G===B.pubKeyHash||G===B.scriptHash}}catch{return!1}}var r=H(()=>{g()});import _X from"@bitcoinerlab/secp256k1";import{ECPair as cB,HDNode as pB}from"@psf/bitcoincashjs-lib";import{HDKey as oB}from"@scure/bip32";import{mnemonicToSeedSync as oX}from"@scure/bip39";import{AssetValue as IX,applyFeeMultiplier as nX,Chain as M,DerivationPath as nB,derivationPathToString as uB,FeeOption as A,NetworkDerivationPath as rB,SwapKitError as F,SwapKitNumber as dB,updateDerivationPath as iB}from"@swapkit/helpers";import{address as sB,initEccLib as rX,Psbt as aB,payments as uX}from"bitcoinjs-lib";import{ECPairFactory as tB}from"ecpair";function dX({inputs:X,outputs:B,chain:Z,psbt:G,sender:$,compiledMemo:Q}){for(let J of X){let j=!!J.witnessUtxo&&!d.includes(Z)&&{witnessUtxo:J.witnessUtxo},q=d.includes(Z)&&{nonWitnessUtxo:J.txHex?Buffer.from(J.txHex,"hex"):void 0};G.addInput({hash:J.hash,index:J.index,...j,...q})}for(let J of B){let j="address"in J&&J.address?J.address:$,q=J.script;if(q&&!Q)continue;let W=q?{script:Q,value:0}:{address:j,value:J.value};rX(_X),G.addOutput(W)}return{inputs:X,psbt:G}}async function iX({assetValue:X,recipient:B,memo:Z,feeRate:G,sender:$,fetchTxHex:Q=!1}){let J=X.chain,j=Z?await O(Z):null,q=await tX({assetValue:X,fetchTxHex:Q,memo:Z,recipient:B,sender:$}),{inputs:W,outputs:L}=y({...q,chain:J,feeRate:G});if(!(W&&L))throw new F("toolbox_utxo_insufficient_balance",{assetValue:X,sender:$});let Y=await N(),D=new aB({network:Y(J)});if(J===M.Dogecoin)D.setMaximumFeeRate(650000000);let{psbt:T,inputs:U}=await dX({chain:J,compiledMemo:j,inputs:W,outputs:L,psbt:D,sender:$});return{inputs:U,psbt:T,utxos:q.inputs}}async function sX(){let X=await N();return function({address:Z,chain:G}){if(G===M.BitcoinCash)return f(Z);if(G===M.Zcash)return m(Z);try{return rX(_X),sB.toOutputScript(Z,X(G)),!0}catch{return!1}}}async function eB({chain:X,phrase:B,derivationPath:Z}){let G=(await i(X))({derivationPath:Z,phrase:B});async function $(J){return await J.signAllInputs(G),J}function Q(){return MX(X)(G)}return{getAddress:Q,signTransaction:$}}async function K({chain:X,...B}){let Z="phrase"in B?B.phrase:void 0,G="index"in B?B.index||0:0,$=uB("derivationPath"in B&&B.derivationPath?B.derivationPath:iB(rB[X],{index:G})),Q=Z?await eB({chain:X,derivationPath:$,phrase:Z}):("signer"in B)?B.signer:void 0;function J(){return Promise.resolve(Q?.getAddress())}let j=await sX(),q=await i(X);return{accumulative:y,broadcastTx:(W)=>_(X).broadcastTx(W),calculateTxSize:x,createKeysForPath:q,createTransaction:iX,estimateMaxSendableAmount:XZ(X),estimateTransactionFee:BZ(X),getAddress:J,getAddressFromKeys:MX(X),getBalance:RX(X),getFeeRates:()=>s(X),getInputsOutputsFee:aX,getPrivateKeyFromMnemonic:(W)=>{return q(W).toWIF()},transfer:ZZ(Q),validateAddress:(W)=>j({address:W,chain:X})}}async function aX({assetValue:X,feeOptionKey:B=A.Fast,feeRate:Z,memo:G,sender:$,recipient:Q}){let J=X.chain,j=await tX({assetValue:X,memo:G,recipient:Q,sender:$}),q=Z?Math.floor(Z):(await s(J))[B];return y({...j,chain:J,feeRate:q})}function XZ(X){return async function({from:Z,memo:G,feeRate:$,feeOptionKey:Q=A.Fast,recipients:J=1}){let j=await _(X).getAddressData(Z),q=$?Math.ceil($):(await s(X))[Q],W=j?.utxo.map((U)=>({...U,hash:"",type:"P2PKH"})).filter((U)=>U.value>Math.max(QX(X),k(U)*q));if(!W?.length)return IX.from({chain:X});let L=IX.from({chain:X,value:W.reduce((U,I)=>U+I.value,0)}),Y=typeof J==="number"?Array.from({length:J},()=>({address:Z,value:0})):J;if(G){let U=await O(G);Y.push({address:Z,script:U,value:0})}let T=x({feeRate:q,inputs:W,outputs:Y})*q;return L.sub(T)}}function BZ(X){return async(B)=>{let Z=await aX(B);return IX.from({chain:X,value:dB.fromBigInt(BigInt(Z.fee),8).getValue("string")})}}async function i(X){let B=await N();switch(X){case M.BitcoinCash:return function({phrase:G,derivationPath:$=`${nB.BCH}/0`,wif:Q}){let J=B(X);if(Q)return cB.fromWIF(Q,J);if(!G)throw new F("toolbox_utxo_invalid_params",{error:"No phrase provided"});return pB.fromSeedBuffer(Buffer.from(oX(G)),J).derivePath($).keyPair};case M.Bitcoin:case M.Dogecoin:case M.Litecoin:case M.Zcash:case M.Dash:return function({phrase:G,wif:$,derivationPath:Q}){if(!($||G))throw new F("toolbox_utxo_invalid_params",{error:"Either phrase or wif must be provided"});let J=tB(_X),j=B(X);if($)return J.fromWIF($,j);let q=oX(G),W=oB.fromMasterSeed(q,j).derive(Q);if(!W.privateKey)throw new F("toolbox_utxo_invalid_params",{error:"Could not get private key from phrase"});return J.fromPrivateKey(Buffer.from(W.privateKey),{network:j})};default:throw new F("toolbox_utxo_not_supported",{chain:X})}}function MX(X){let B=N();return function(G){if(!G)throw new F("toolbox_utxo_invalid_params",{error:"Keys must be provided"});let $=d.includes(X)?uX.p2pkh:uX.p2wpkh,{address:Q}=$({network:B(X),pubkey:G.publicKey});if(!Q)throw new F("toolbox_utxo_invalid_address",{error:"Address not defined"});return Q}}function ZZ(X){return async function({memo:Z,recipient:G,feeOptionKey:$,feeRate:Q,assetValue:J}){let j=await X?.getAddress(),q=J.chain;if(!(X&&j))throw new F("toolbox_utxo_no_signer");if(!G)throw new F("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});let W=Q||(await s(q))[$||A.Fast],{psbt:L}=await iX({assetValue:J,feeRate:W,memo:Z,recipient:G,sender:j}),Y=await X.signTransaction(L);return Y.finalizeAllInputs(),_(q).broadcastTx(Y.extractTransaction().toHex())}}async function s(X){let B=await _(X).getSuggestedTxFee();return{[A.Average]:B,[A.Fast]:nX(B,A.Fast),[A.Fastest]:nX(B,A.Fastest)}}async function tX({assetValue:X,recipient:B,memo:Z,sender:G,fetchTxHex:$=!1}){let Q=X.chain,J=(await s(Q))[A.Fastest],j=$||d.includes(Q),q=X.getBaseValue("number"),W=Math.ceil(q+J*5000);return{inputs:await _(Q).getUtxos({address:G,fetchTxHex:j,targetValue:W}),outputs:[{address:B,value:q},...Z?[{address:"",script:await O(Z),value:0}]:[]]}}var d;var a=H(()=>{YX();g();r();d=[M.Dash,M.Dogecoin,M.Zcash,M.BitcoinCash]});import{address as GZ,Transaction as JZ,TransactionBuilder as QZ}from"@psf/bitcoincashjs-lib";import{Chain as $Z,derivationPathToString as jZ,FeeOption as qZ,NetworkDerivationPath as WZ,SwapKitError as l,updateDerivationPath as LZ}from"@swapkit/helpers";import{Psbt as YZ}from"bitcoinjs-lib";function S(X){return w(o(X))}function TZ(X){function B({builder:G,utxos:$}){return $.forEach((Q,J)=>{G.sign(J,X,void 0,65,Q.witnessUtxo?.value)}),G.build()}return{getAddress:()=>{let G=X.getAddress(0);return Promise.resolve(S(G))},signTransaction:B}}async function HX(X){let B="phrase"in X?X.phrase:void 0,Z="index"in X?X.index||0:0,G=jZ("derivationPath"in X&&X.derivationPath?X.derivationPath:LZ(WZ[v],{index:Z})),$=B?(await i(v))({derivationPath:G,phrase:B}):void 0,Q=$?TZ($):("signer"in X)?X.signer:void 0;function J(){return Promise.resolve(Q?.getAddress())}let{getBalance:j,getFeeRates:q,broadcastTx:W,...L}=await K({chain:v});function Y(D,T=!0){return j(w(o(D)))}return{...L,broadcastTx:W,buildTx:UZ,createTransaction:eX,getAddress:J,getAddressFromKeys:zZ,getBalance:Y,getFeeRates:q,stripPrefix:w,stripToCashAddress:S,transfer:DZ({broadcastTx:W,getFeeRates:q,signer:Q}),validateAddress:f}}async function eX({assetValue:X,recipient:B,memo:Z,feeRate:G,sender:$}){if(!f(B))throw new l("toolbox_utxo_invalid_address",{address:B});let Q=Math.ceil(X.getBaseValue("number")+G*7500),J=await _(v).getUtxos({address:S($),fetchTxHex:!0,targetValue:Q}),j=Z?await O(Z):null,q=[];q.push({address:B,value:X.getBaseValue("number")});let{inputs:W,outputs:L}=y({chain:v,feeRate:G,inputs:J,outputs:q});if(!(W&&L))throw new l("toolbox_utxo_insufficient_balance",{assetValue:X,sender:$});let Y=await N(),D=new QZ(Y(v));await Promise.all(W.map(async(T)=>{let U=await _(v).getRawTx(T.hash);D.addInput(JZ.fromBuffer(Buffer.from(U,"hex")),T.index)}));for(let T of L){let U="address"in T&&T.address?T.address:b($),I=await N(),C=GZ.toOutputScript(b(U),I(v));D.addOutput(C,T.value)}if(j)D.addOutput(j,0);return{builder:D,utxos:W}}function DZ({broadcastTx:X,getFeeRates:B,signer:Z}){return async function({recipient:$,assetValue:Q,feeOptionKey:J=qZ.Fast,...j}){let q=await Z?.getAddress();if(!(Z&&q))throw new l("toolbox_utxo_no_signer");if(!$)throw new l("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});let W=j.feeRate||(await B())[J],{builder:L,utxos:Y}=await eX({...j,assetValue:Q,feeRate:W,recipient:$,sender:q}),T=(await Z.signTransaction({builder:L,utxos:Y})).toHex();return X(T)}}async function UZ({assetValue:X,recipient:B,memo:Z,feeRate:G,sender:$,setSigHashType:Q}){let J=o(B);if(!f(J))throw new l("toolbox_utxo_invalid_address",{address:J});let j=Math.ceil(X.getBaseValue("number")+G*7500),q=await _(v).getUtxos({address:S($),fetchTxHex:!1,targetValue:j}),W=Number(G.toFixed(0)),L=Z?await O(Z):null,Y=[];if(Y.push({address:b(B),value:X.getBaseValue("number")}),L)Y.push({script:L,value:0});let{inputs:D,outputs:T}=y({chain:v,feeRate:W,inputs:q,outputs:Y});if(!(D&&T))throw new l("toolbox_utxo_insufficient_balance",{assetValue:X,sender:$});let U=await N(),I=new YZ({network:U(v)});for(let{hash:C,index:c,witnessUtxo:R}of D)I.addInput({hash:C,index:c,sighashType:Q?65:void 0,witnessUtxo:R});for(let C of T){let c="address"in C&&C.address?C.address:b($),R=C.script?L?{script:L,value:0}:void 0:{address:c,value:C.value};if(R)I.addOutput(R)}return{inputs:D,psbt:I,utxos:q}}function zZ(X){let B=X.getAddress(0);return S(B)}var v;var $X=H(()=>{g();a();r();v=$Z.BitcoinCash});import{bitgo as CZ,crypto as IZ,ECPair as ZB,networks as _Z,address as MZ}from"@bitgo/utxo-lib";import{ZcashTransaction as XB}from"@bitgo/utxo-lib/dist/src/bitgo";import{HDKey as GB}from"@scure/bip32";import{mnemonicToSeedSync as JB}from"@scure/bip39";import{Chain as jX,derivationPathToString as HZ,FeeOption as vZ,NetworkDerivationPath as NZ,SKConfig as OZ,SwapKitError as qX,updateDerivationPath as yZ}from"@swapkit/helpers";import AZ from"bs58check";import{match as FZ,P as vX}from"ts-pattern";function NX(){return _Z.zcash}function QB(){return{bech32:void 0,bip32:{private:76066276,public:76067358},messagePrefix:`\x18ZCash Signed Message:
|
|
2
|
+
`,pubKeyHash:28,scriptHash:28,wif:128}}function EZ({phrase:X,derivationPath:B}){let Z=JB(X),$=GB.fromMasterSeed(Z).derive(B);if(!$.privateKey)throw new qX("toolbox_utxo_invalid_params");let Q=QB(),J=ZB.fromPrivateKey(Buffer.from($.privateKey),{network:Q}),j=IZ.hash160(J.publicKey),{isStagenet:q}=OZ.get("envs"),W=q?Buffer.from([29,37]):Buffer.from([28,184]),L=Buffer.concat([W,j]),Y=AZ.encode(L);return{getAddress:()=>Promise.resolve(Y),signTransaction:(D)=>{let T=D.signAllInputs(J);return Promise.resolve(T)}}}function kZ({inputs:X,outputs:B,psbt:Z,sender:G,compiledMemo:$}){for(let Q of X){let J=!!Q.witnessUtxo&&{witnessUtxo:{...Q.witnessUtxo,value:BigInt(Q.value)}},j=!Q.witnessUtxo&&{nonWitnessUtxo:Q.txHex?Buffer.from(Q.txHex,"hex"):void 0};Z.addInput({hash:Q.hash,index:Q.index,...J,...j})}for(let Q of B){let J="address"in Q&&Q.address?Q.address:G,j=Q.script;if(j&&!$)continue;let q=j?{script:$,value:0n}:{script:MZ.toOutputScript(J,NX()),value:BigInt(Q.value)};Z.addOutput(q)}return{inputs:X,psbt:Z}}async function BB(X){let{assetValue:B,recipient:Z,memo:G,feeRate:$,sender:Q,fetchTxHex:J}=X,j=G?O(G):null,q=await _(jX.Zcash).getUtxos({address:Q,fetchTxHex:J!==!1}),W=[{address:Z,value:Number(B.getBaseValue("string"))},...j?[{script:j,value:0}]:[]],{inputs:L,outputs:Y}=y({chain:jX.Zcash,changeAddress:Q,feeRate:$,inputs:q,outputs:W});if(!(L&&Y))throw new qX("toolbox_utxo_insufficient_balance",{assetValue:B,sender:Q});let D=CZ.createPsbtForNetwork({network:NX()},{version:XB.VERSION4_BRANCH_NU6_1}),{psbt:T,inputs:U}=await kZ({compiledMemo:j,inputs:L,outputs:Y,psbt:D,sender:Q});return T.setDefaultsForVersion(NX(),XB.VERSION4_BRANCH_NU6_1),{inputs:U,outputs:Y,psbt:T}}async function OX(X){let B=await FZ(X).with({signer:vX.not(vX.nullish)},({signer:J})=>Promise.resolve(J)).with({phrase:vX.string},({phrase:J,derivationPath:j,index:q=0})=>{let W=j||NZ[jX.Zcash]||[44,133,0,0,0],L=yZ(W,{index:q}),Y=HZ(L);return EZ({derivationPath:Y,phrase:J})}).otherwise(()=>Promise.resolve(void 0)),Z=await K({chain:jX.Zcash,signer:B});async function G({recipient:J,assetValue:j,feeOptionKey:q=vZ.Fast,...W}){let L=await B?.getAddress();if(!(B&&L))throw new qX("toolbox_utxo_no_signer");let Y=W.feeRate||(await Z.getFeeRates())[q],{psbt:D}=await BB({...W,assetValue:j,feeRate:Y,recipient:J,sender:L}),T=await B.signTransaction(D);T.validateSignaturesOfAllInputs(),T.finalizeAllInputs();let I=T.extractTransaction().toHex();return Z.broadcastTx(I)}function $({phrase:J,derivationPath:j="m/44'/133'/0'/0/0"}){let q=JB(J),L=GB.fromMasterSeed(q).derive(j);if(!L.privateKey)throw new qX("toolbox_utxo_invalid_params");let Y=QB();return ZB.fromPrivateKey(Buffer.from(L.privateKey),{network:Y})}function Q({phrase:J,derivationPath:j="m/44'/133'/0'/0/0"}){return $({derivationPath:j,phrase:J}).toWIF()}return{...Z,createKeysForPath:$,createTransaction:BB,getPrivateKeyFromMnemonic:Q,transfer:G,validateAddress:m}}var yX=H(()=>{g();a();r()});import{Chain as h,SwapKitError as fZ}from"@swapkit/helpers";async function RZ(X,B){switch(X){case h.BitcoinCash:return await HX(B||{});case h.Zcash:return await OX(B);case h.Bitcoin:case h.Dogecoin:case h.Litecoin:case h.Dash:return await K({chain:X,...B});default:throw new fZ("toolbox_utxo_not_supported",{chain:X})}}var $B=H(()=>{$X();a();yX();$X();r()});var PZ={};YB(PZ,{validateZcashAddress:()=>m,toLegacyAddress:()=>b,toCashAddress:()=>o,stripToCashAddress:()=>S,stripPrefix:()=>w,nonSegwitChains:()=>d,isValidAddress:()=>UX,getUtxoToolbox:()=>RZ,getUtxoNetwork:()=>N,getUtxoApi:()=>_,getUTXOAddressValidator:()=>sX,getScriptTypeForAddress:()=>n,getOutputSize:()=>u,getInputSize:()=>k,getDustThreshold:()=>QX,getCreateKeysForPath:()=>i,detectAddressNetwork:()=>zX,createZcashToolbox:()=>OX,createUTXOToolbox:()=>K,createCustomUtxoApi:()=>EB,createBCHToolbox:()=>HX,compileMemo:()=>O,calculateTxSize:()=>x,bchValidateAddress:()=>f,addressFromKeysGetter:()=>MX,addInputsAndOutputs:()=>dX,accumulative:()=>y,UtxoNetwork:()=>DX,UTXOScriptType:()=>JX,TX_OVERHEAD:()=>GX,OutputSizes:()=>ZX,OP_RETURN_OVERHEAD:()=>cX,MIN_TX_FEE:()=>SB,InputSizes:()=>BX});var VZ=H(()=>{g();$B();$X();a();yX()});VZ();export{m as validateZcashAddress,b as toLegacyAddress,o as toCashAddress,S as stripToCashAddress,w as stripPrefix,d as nonSegwitChains,UX as isValidAddress,RZ as getUtxoToolbox,N as getUtxoNetwork,_ as getUtxoApi,sX as getUTXOAddressValidator,n as getScriptTypeForAddress,u as getOutputSize,k as getInputSize,QX as getDustThreshold,i as getCreateKeysForPath,zX as detectAddressNetwork,OX as createZcashToolbox,K as createUTXOToolbox,EB as createCustomUtxoApi,HX as createBCHToolbox,O as compileMemo,x as calculateTxSize,f as bchValidateAddress,MX as addressFromKeysGetter,dX as addInputsAndOutputs,y as accumulative,DX as UtxoNetwork,JX as UTXOScriptType,GX as TX_OVERHEAD,ZX as OutputSizes,cX as OP_RETURN_OVERHEAD,SB as MIN_TX_FEE,BX as InputSizes};
|
|
3
3
|
|
|
4
|
-
//# debugId=
|
|
4
|
+
//# debugId=64990C6BBFDF6B9264756E2164756E21
|
|
5
5
|
//# sourceMappingURL=index.js.map
|