@swapkit/toolboxes 4.3.5 → 4.3.7
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/evm/index.cjs +2 -2
- package/dist/src/evm/index.cjs.map +3 -3
- package/dist/src/evm/index.js +2 -2
- package/dist/src/evm/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/utxo/toolbox/zcash.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/evm/helpers.ts +2 -2
- package/src/utxo/toolbox/zcash.ts +1 -4
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}=BX.getChainConfig(X);return $.map(({identifier:J,value:j,decimal:q})=>{return new BX.AssetValue({decimal:q||Q,identifier:J,value:j})})}}var BX,gX,HZ,zX=0;var CX=N(()=>{BX=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:M})=>!M),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 d(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,i=(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?i(X[0].address):"P2PKH",$=X.filter((J)=>J.value>=QX["type"in J?J.type:"P2PKH"]*Math.ceil(B)).reduce((J,j)=>J+P(j),0),Q=Z?.reduce((J,j)=>J+s(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[i(X.address)];return bZ+KZ},s=(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?i(X[0].address):"P2PKH",j=X.filter((D)=>P(D)*Q<=D.value),q=qX+Z.reduce((D,C)=>D+s(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=P(D),H=Q*C;T+=H,Y+=D.value,z.push(D);let M=T+W;if(Y<M)continue;let b=Y-M,R=Q*s({address:"",value:0},J);if(b>R){let VX=R+T,bX=Y-(W+VX);if(bX>Math.max(P({})*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 V(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 a=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&&!t.includes(B)&&{witnessUtxo:J.witnessUtxo},q=t.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 V(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 e(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 e(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:()=>XX(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 XX(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 XX(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 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 e(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 $=t.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 XX(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 XX(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 XX(Q))[L.FeeOption.Fastest],j=$||t.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,t;var ZX=N(()=>{CX();p();a();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"),t=[L.Chain.Dash,L.Chain.Dogecoin,L.Chain.Zcash,L.Chain.BitcoinCash]});function g(X){return S(d(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=_.derivationPathToString("derivationPath"in X&&X.derivationPath?X.derivationPath:_.updateDerivationPath(_.NetworkDerivationPath[O],{index:B})),$=Z?(await e(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(d(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:V}}async function WZ({assetValue:X,recipient:Z,memo:B,feeRate:G,sender:$}){if(!V(Z))throw new _.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 _.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(),M=n.address.toOutputScript(h(C),H(O));z.addOutput(M,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=_.FeeOption.Fast,...j}){let q=await B?.getAddress();if(!(B&&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 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=d(Z);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: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 _.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue:X,sender:$});let C=await F(),H=new qZ.Psbt({network:C(O)});for(let{hash:M,index:b,witnessUtxo:R}of z)H.addInput({hash:M,index:b,sighashType:Q?65:void 0,witnessUtxo:R});for(let M of D){let b="address"in M&&M.address?M.address:h($),R=M.script?T?{script:T,value:0}:void 0:{address:b,value:M.value};if(R)H.addOutput(R)}return{inputs:z,psbt:H,utxos:q}}function pZ(X){let Z=X.getAddress(0);return g(Z)}var n,_,qZ,O;var UX=N(()=>{p();ZX();a();n=require("@psf/bitcoincashjs-lib"),_=require("@swapkit/helpers"),qZ=require("bitcoinjs-lib"),O=_.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 oZ({phrase:X,derivationPath:Z}){let B=fX.mnemonicToSeedSync(X),$=EX.HDKey.fromMasterSeed(B).derive(Z);if(!$.privateKey)throw new I.SwapKitError("toolbox_utxo_invalid_params");let Q=DZ(),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]),T=Buffer.concat([W,j]),Y=TZ.default.encode(T);return{getAddress:()=>Promise.resolve(Y),signTransaction:(z)=>{let D=z.signAllInputs(J);return Promise.resolve(D)}}}function nZ({inputs:X,outputs:Z,psbt:B,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};B.addInput({hash:Q.hash,index:Q.index,...J,...j})}for(let Q of Z){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,YZ()),value:BigInt(Q.value)};B.addOutput(q)}return{inputs:X,psbt:B}}async function LZ(X){let{assetValue:Z,recipient:B,memo:G,feeRate:$,sender:Q,fetchTxHex:J}=X,j=G?A(G):null,q=await v(I.Chain.Zcash).getUtxos({address:Q,fetchTxHex:J!==!1}),W=[{address:B,value:Number(Z.getBaseValue("string"))},...j?[{script:j,value:0}]:[]],{inputs:T,outputs:Y}=E({chain:I.Chain.Zcash,changeAddress:Q,feeRate:$,inputs:q,outputs:W});if(!(T&&Y))throw new I.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue:Z,sender:Q});let z=y.bitgo.createPsbtForNetwork({network:YZ()},{version:455}),
|
|
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}=BX.getChainConfig(X);return $.map(({identifier:J,value:j,decimal:q})=>{return new BX.AssetValue({decimal:q||Q,identifier:J,value:j})})}}var BX,gX,HZ,zX=0;var CX=N(()=>{BX=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 d(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,i=(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?i(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+s(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[i(X.address)];return bZ+KZ},s=(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?i(X[0].address):"P2PKH",j=X.filter((D)=>w(D)*Q<=D.value),q=qX+Z.reduce((D,C)=>D+s(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*s({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 a=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&&!t.includes(B)&&{witnessUtxo:J.witnessUtxo},q=t.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 e(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 e(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:()=>XX(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 XX(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 XX(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 e(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 $=t.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 XX(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 XX(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 XX(Q))[L.FeeOption.Fastest],j=$||t.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,t;var ZX=N(()=>{CX();p();a();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"),t=[L.Chain.Dash,L.Chain.Dogecoin,L.Chain.Zcash,L.Chain.BitcoinCash]});function g(X){return S(d(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 e(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(d(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=d(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();ZX();a();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 oZ({phrase:X,derivationPath:Z}){let B=fX.mnemonicToSeedSync(X),$=EX.HDKey.fromMasterSeed(B).derive(Z);if(!$.privateKey)throw new I.SwapKitError("toolbox_utxo_invalid_params");let Q=DZ(),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]),T=Buffer.concat([W,j]),Y=TZ.default.encode(T);return{getAddress:()=>Promise.resolve(Y),signTransaction:(z)=>{let D=z.signAllInputs(J);return Promise.resolve(D)}}}function nZ({inputs:X,outputs:Z,psbt:B,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};B.addInput({hash:Q.hash,index:Q.index,...J,...j})}for(let Q of Z){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,YZ()),value:BigInt(Q.value)};B.addOutput(q)}return{inputs:X,psbt:B}}async function LZ(X){let{assetValue:Z,recipient:B,memo:G,feeRate:$,sender:Q,fetchTxHex:J}=X,j=G?A(G):null,q=await v(I.Chain.Zcash).getUtxos({address:Q,fetchTxHex:J!==!1}),W=[{address:B,value:Number(Z.getBaseValue("string"))},...j?[{script:j,value:0}]:[]],{inputs:T,outputs:Y}=E({chain:I.Chain.Zcash,changeAddress:Q,feeRate:$,inputs:q,outputs:W});if(!(T&&Y))throw new I.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue:Z,sender:Q});let z=y.bitgo.createPsbtForNetwork({network:YZ()},{version:455}),D=1307332080,C=Buffer.concat([Buffer.of(252),Buffer.of(5),Buffer.from("BITGO"),Buffer.of(0)]),H=Buffer.allocUnsafe(4);H.writeUInt32LE(D>>>0,0),z.addUnknownKeyValToGlobal({key:C,value:H});let{psbt:_,inputs:V}=await nZ({compiledMemo:j,inputs:T,outputs:Y,psbt:z,sender:Q});return{inputs:V,outputs:Y,psbt:_}}async function RX(X){let Z=await u.match(X).with({signer:u.P.not(u.P.nullish)},({signer:J})=>Promise.resolve(J)).with({phrase:u.P.string},({phrase:J,derivationPath:j,index:q=0})=>{let W=j||I.NetworkDerivationPath[I.Chain.Zcash]||[44,133,0,0,0],T=I.updateDerivationPath(W,{index:q}),Y=I.derivationPathToString(T);return oZ({derivationPath:Y,phrase:J})}).otherwise(()=>Promise.resolve(void 0)),B=await x({chain:I.Chain.Zcash,signer:Z});async function G({recipient:J,assetValue:j,feeOptionKey:q=I.FeeOption.Fast,...W}){let T=await Z?.getAddress();if(!(Z&&T))throw new I.SwapKitError("toolbox_utxo_no_signer");let Y=W.feeRate||(await B.getFeeRates())[q],{psbt:z}=await LZ({...W,assetValue:j,feeRate:Y,recipient:J,sender:T}),D=await Z.signTransaction(z);return D.finalizeAllInputs(),B.broadcastTx(D.extractTransaction().toHex())}function $({phrase:J,derivationPath:j="m/44'/133'/0'/0/0"}){let q=fX.mnemonicToSeedSync(J),T=EX.HDKey.fromMasterSeed(q).derive(j);if(!T.privateKey)throw new I.SwapKitError("toolbox_utxo_invalid_params");let Y=DZ();return y.ECPair.fromPrivateKey(Buffer.from(T.privateKey),{network:Y})}function Q({phrase:J,derivationPath:j="m/44'/133'/0'/0/0"}){return $({derivationPath:j,phrase:J}).toWIF()}return{...B,createKeysForPath:$,createTransaction:LZ,getPrivateKeyFromMnemonic:Q,transfer:G,validateAddress:o}}var y,EX,fX,I,TZ,u;var wX=N(()=>{p();ZX();a();y=require("@bitgo/utxo-lib"),EX=require("@scure/bip32"),fX=require("@scure/bip39"),I=require("@swapkit/helpers"),TZ=m(require("bs58check")),u=require("ts-pattern")});async function uZ(X,Z){switch(X){case R.Chain.BitcoinCash:return await kX(Z||{});case R.Chain.Zcash:return await RX(Z);case R.Chain.Bitcoin:case R.Chain.Dogecoin:case R.Chain.Litecoin:case R.Chain.Dash:return await x({chain:X,...Z});default:throw new R.SwapKitError("toolbox_utxo_not_supported",{chain:X})}}var R;var UZ=N(()=>{UX();ZX();wX();UX();a();R=require("@swapkit/helpers")});var rZ={};_Z(rZ,{validateZcashAddress:()=>o,toLegacyAddress:()=>h,toCashAddress:()=>d,stripToCashAddress:()=>g,stripPrefix:()=>S,nonSegwitChains:()=>t,isValidAddress:()=>NX,getUtxoToolbox:()=>uZ,getUtxoNetwork:()=>F,getUtxoApi:()=>v,getUTXOAddressValidator:()=>QZ,getScriptTypeForAddress:()=>i,getOutputSize:()=>s,getInputSize:()=>w,getDustThreshold:()=>LX,getCreateKeysForPath:()=>e,detectAddressNetwork:()=>OX,createZcashToolbox:()=>RX,createUTXOToolbox:()=>x,createCustomUtxoApi:()=>EZ,createBCHToolbox:()=>kX,compileMemo:()=>A,calculateTxSize:()=>c,bchValidateAddress:()=>P,addressFromKeysGetter:()=>AX,addInputsAndOutputs:()=>GZ,accumulative:()=>E,UtxoNetwork:()=>vX,UTXOScriptType:()=>WX,TX_OVERHEAD:()=>qX,OutputSizes:()=>$X,OP_RETURN_OVERHEAD:()=>tX,MIN_TX_FEE:()=>VZ,InputSizes:()=>QX});module.exports=MZ(rZ);var dZ=N(()=>{p();UZ();UX();ZX();wX()});dZ();
|
|
3
3
|
|
|
4
|
-
//# debugId=
|
|
4
|
+
//# debugId=7D6E84FEEC0D16CD64756E2164756E21
|
|
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 { ZcashPsbt } 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({ network: getZcashNetwork() }, { version: 455 }) as ZcashPsbt;\n\n
|
|
14
|
+
"import { bitgo, crypto, ECPair, networks, address as zcashAddress } from \"@bitgo/utxo-lib\";\nimport type { ZcashPsbt } 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({ network: getZcashNetwork() }, { version: 455 }) as ZcashPsbt;\n\n const branchId = 0x4dec4df0;\n\n const CONSENSUS_BRANCH_ID_KEY = Buffer.concat([Buffer.of(0xfc), Buffer.of(0x05), Buffer.from(\"BITGO\"), Buffer.of(0)]);\n\n // PSBT value must be 4-byte little-endian\n const value = Buffer.allocUnsafe(4);\n value.writeUInt32LE(branchId >>> 0, 0);\n\n psbt.addUnknownKeyValToGlobal({ key: CONSENSUS_BRANCH_ID_KEY, value });\n\n const { psbt: mappedPsbt, inputs: mappedInputs } = await addInputsAndOutputs({\n compiledMemo,\n inputs,\n outputs,\n psbt,\n sender,\n });\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.finalizeAllInputs();\n\n return baseToolbox.broadcastTx(signedPsbt.extractTransaction().toHex());\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": "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",
|
|
19
|
-
"debugId": "
|
|
18
|
+
"mappings": "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",
|
|
19
|
+
"debugId": "7D6E84FEEC0D16CD64756E2164756E21",
|
|
20
20
|
"names": []
|
|
21
21
|
}
|
package/dist/src/utxo/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
var QZ=Object.create;var{getPrototypeOf:$Z,defineProperty:WX,getOwnPropertyNames:jZ}=Object;var qZ=Object.prototype.hasOwnProperty;var PB=(X,Z,B)=>{B=X!=null?QZ($Z(X)):{};let G=Z||!X||!X.__esModule?WX(B,"default",{value:X,enumerable:!0}):B;for(let $ of jZ(X))if(!qZ.call(G,$))WX(G,$,{get:()=>X[$],enumerable:!0});return G};var WZ=(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 LZ,getChainConfig as TZ}from"@swapkit/helpers";import{SwapKitApi as YZ}from"@swapkit/helpers/api";function kX(){function X(){let Z=Date.now(),B=LX||Z;return LX=B,Z>LX?Z:B+1}return DZ+X().toString(36)}function EX(X){return async function(B,G=!0){let $=await YZ.getChainBalance({address:B,chain:X,scamFilter:G}),{baseDecimal:Q}=TZ(X);return $.map(({identifier:J,value:j,decimal:q})=>{return new LZ({decimal:q||Q,identifier:J,value: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 E,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 E("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:kX(),jsonrpc:"2.0",method:"sendrawtransaction",params:[Z]}),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/${HZ(X)}`}function fX(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,fX(X))}catch{return fX(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 E("toolbox_utxo_api_error",{error:`Failed to query ${X}`});return B.data}async function wX({address:X,chain:Z,apiKey:B}){if(!X)throw new E("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 wX({address:X,apiKey:B,chain:Z}))?.address.balance||0}async function PX({chain:X,apiKey:Z,txHash:B}){if(!B)throw new E("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 RX(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 VX({chain:X,address:Z,apiKey:B,targetValue:G,accumulativeValue:$=0,offset:Q=0,limit:J=30}){if(!Z)throw new E("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 RX(L,G);let U=await VX({accumulativeValue:D,address:Z,apiKey:B,chain:X,limit:J,offset:Q+J,targetValue:G}),I=[...L,...U];return RX(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 VX({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 PX({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)=>wX({address:B,apiKey:Z,chain:X}),getBalance:(B)=>NZ({address:B,apiKey:Z,chain:X}),getRawTx:(B)=>PX({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 E("toolbox_utxo_not_supported",{chain:Z})}}}var bX=H(()=>{TX()});import{SwapKitError as SX}from"@swapkit/helpers";import xX from"bs58check";import gX 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 SX("toolbox_utxo_invalid_address",{address:X})}function kZ(X){try{let Z=xX.decode(X);if(Z.length!==21)throw new SX("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 KX(X)}catch{}else{let Z=["bitcoincash","bchtest","bchreg"];for(let B of Z)try{return KX(`${B}:${X}`)}catch{}}return}function KX(X){try{let{hash:Z,prefix:B,type:G}=gX.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),xX.encode(B)}function RZ(X){let Z=X.network==="mainnet"?"bitcoincash":"bchtest",B=X.type==="p2pkh"?"P2PKH":"P2SH",G=new Uint8Array(X.hash);return gX.encode(Z,B,G)}var DX,P;var mX=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,lX=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+f(j),0),Q=Z?.reduce((J,j)=>J+u(j),0)||BX[G];return GX+$+Q},f=(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 lX+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)=>f(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=f(Y),I=Q*U;L+=I,T+=Y.value,D.push(Y);let z=L+W;if(T<z)continue;let w=T-z,F=Q*u({address:"",value:0},J);if(w>F){let FX=F+L,AX=T-(W+FX);if(AX>Math.max(f({})*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 hX=H(()=>{CX()});var m=H(()=>{bX();mX();hX();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 R(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 cX}from"@scure/bip39";import{AssetValue as IX,applyFeeMultiplier as pX,Chain as _,DerivationPath as oZ,derivationPathToString as nZ,FeeOption as A,NetworkDerivationPath as uZ,SwapKitError as k,SwapKitNumber as rZ,updateDerivationPath as dZ}from"@swapkit/helpers";import{address as iZ,initEccLib as nX,Psbt as sZ,payments as oX}from"bitcoinjs-lib";import{ECPairFactory as aZ}from"ecpair";function uX({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};nX(MX),G.addOutput(W)}return{inputs:X,psbt:G}}async function rX({assetValue:X,recipient:Z,memo:B,feeRate:G,sender:$,fetchTxHex:Q=!1}){let J=X.chain,j=B?await O(B):null,q=await sX({assetValue:X,fetchTxHex:Q,memo:B,recipient:Z,sender:$}),{inputs:W,outputs:L}=y({...q,chain:J,feeRate:G});if(!(W&&L))throw new k("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 uX({chain:J,compiledMemo:j,inputs:W,outputs:L,psbt:D,sender:$});return{inputs:U,psbt:Y,utxos:q.inputs}}async function dX(){let X=await N();return function({address:B,chain:G}){if(G===_.BitcoinCash)return R(B);if(G===_.Zcash)return l(B);try{return nX(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 dX(),q=await i(X);return{accumulative:y,broadcastTx:(W)=>M(X).broadcastTx(W),calculateTxSize:g,createKeysForPath:q,createTransaction:rX,estimateMaxSendableAmount:eZ(X),estimateTransactionFee:XB(X),getAddress:J,getAddressFromKeys:_X(X),getBalance:EX(X),getFeeRates:()=>s(X),getInputsOutputsFee:iX,getPrivateKeyFromMnemonic:(W)=>{return q(W).toWIF()},transfer:ZB(Q),validateAddress:(W)=>j({address:W,chain:X})}}async function iX({assetValue:X,feeOptionKey:Z=A.Fast,feeRate:B,memo:G,sender:$,recipient:Q}){let J=X.chain,j=await sX({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=A.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),f(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 iX(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 k("toolbox_utxo_invalid_params",{error:"No phrase provided"});return cZ.fromSeedBuffer(Buffer.from(cX(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 k("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=cX(G),W=pZ.fromMasterSeed(q,j).derive(Q);if(!W.privateKey)throw new k("toolbox_utxo_invalid_params",{error:"Could not get private key from phrase"});return J.fromPrivateKey(Buffer.from(W.privateKey),{network:j})};default:throw new k("toolbox_utxo_not_supported",{chain:X})}}function _X(X){let Z=N();return function(G){if(!G)throw new k("toolbox_utxo_invalid_params",{error:"Keys must be provided"});let $=d.includes(X)?oX.p2pkh:oX.p2wpkh,{address:Q}=$({network:Z(X),pubkey:G.publicKey});if(!Q)throw new k("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 k("toolbox_utxo_no_signer");if(!G)throw new k("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});let W=Q||(await s(q))[$||A.Fast],{psbt:L}=await rX({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{[A.Average]:Z,[A.Fast]:pX(Z,A.Fast),[A.Fastest]:pX(Z,A.Fastest)}}async function sX({assetValue:X,recipient:Z,memo:B,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 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:aX,getAddress:J,getAddressFromKeys:UB,getBalance:T,getFeeRates:q,stripPrefix:b,stripToCashAddress:S,transfer:YB({broadcastTx:W,getFeeRates:q,signer:Q}),validateAddress:R}}async function aX({assetValue:X,recipient:Z,memo:B,feeRate:G,sender:$}){if(!R(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 aX({...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(!R(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:w,witnessUtxo:F}of D)I.addInput({hash:z,index:w,sighashType:Q?65:void 0,witnessUtxo:F});for(let z of Y){let w="address"in z&&z.address?z.address:x($),F=z.script?L?{script:L,value:0}:void 0:{address:w,value:z.value};if(F)I.addOutput(F)}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 eX,networks as IB,address as MB}from"@bitgo/utxo-lib";import{HDKey as XZ}from"@scure/bip32";import{mnemonicToSeedSync as ZZ}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 BZ(){return IB.zcash}function GZ(){return{bech32:void 0,bip32:{private:76066276,public:76067358},messagePrefix:`\x18ZCash Signed Message:
|
|
2
|
-
`,pubKeyHash:28,scriptHash:28,wif:128}}function AB({phrase:X,derivationPath:Z}){let B=ZZ(X),$=XZ.fromMasterSeed(B).derive(Z);if(!$.privateKey)throw new qX("toolbox_utxo_invalid_params");let Q=GZ(),J=eX.fromPrivateKey(Buffer.from($.privateKey),{network:Q}),j=CB.hash160(J.publicKey),{isStagenet:q}=NB.get("envs"),W=q?Buffer.from([29,37]):Buffer.from([28,184]),L=Buffer.concat([W,j]),T=yB.encode(L);return{getAddress:()=>Promise.resolve(T),signTransaction:(D)=>{let Y=D.signAllInputs(J);return Promise.resolve(Y)}}}function kB({inputs:X,outputs:Z,psbt:B,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};B.addInput({hash:Q.hash,index:Q.index,...J,...j})}for(let Q of Z){let J="address"in Q&&Q.address?Q.address:G,j=Q.script;if(j&&!$)continue;let q=j?{script:$,value:0n}:{script:MB.toOutputScript(J,BZ()),value:BigInt(Q.value)};B.addOutput(q)}return{inputs:X,psbt:B}}async function tX(X){let{assetValue:Z,recipient:B,memo:G,feeRate:$,sender:Q,fetchTxHex:J}=X,j=G?O(G):null,q=await M(jX.Zcash).getUtxos({address:Q,fetchTxHex:J!==!1}),W=[{address:B,value:Number(Z.getBaseValue("string"))},...j?[{script:j,value:0}]:[]],{inputs:L,outputs:T}=y({chain:jX.Zcash,changeAddress:Q,feeRate:$,inputs:q,outputs:W});if(!(L&&T))throw new qX("toolbox_utxo_insufficient_balance",{assetValue:Z,sender:Q});let D=zB.createPsbtForNetwork({network:BZ()},{version:455}),
|
|
1
|
+
var QZ=Object.create;var{getPrototypeOf:$Z,defineProperty:WX,getOwnPropertyNames:jZ}=Object;var qZ=Object.prototype.hasOwnProperty;var PB=(X,Z,B)=>{B=X!=null?QZ($Z(X)):{};let G=Z||!X||!X.__esModule?WX(B,"default",{value:X,enumerable:!0}):B;for(let $ of jZ(X))if(!qZ.call(G,$))WX(G,$,{get:()=>X[$],enumerable:!0});return G};var WZ=(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 LZ,getChainConfig as TZ}from"@swapkit/helpers";import{SwapKitApi as YZ}from"@swapkit/helpers/api";function kX(){function X(){let Z=Date.now(),B=LX||Z;return LX=B,Z>LX?Z:B+1}return DZ+X().toString(36)}function EX(X){return async function(B,G=!0){let $=await YZ.getChainBalance({address:B,chain:X,scamFilter:G}),{baseDecimal:Q}=TZ(X);return $.map(({identifier:J,value:j,decimal:q})=>{return new LZ({decimal:q||Q,identifier:J,value: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:kX(),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 fX(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,fX(X))}catch{return fX(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 wX({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 wX({address:X,apiKey:B,chain:Z}))?.address.balance||0}async function PX({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 RX(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 VX({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 RX(L,G);let U=await VX({accumulativeValue:D,address:Z,apiKey:B,chain:X,limit:J,offset:Q+J,targetValue:G}),I=[...L,...U];return RX(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 VX({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 PX({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)=>wX({address:B,apiKey:Z,chain:X}),getBalance:(B)=>NZ({address:B,apiKey:Z,chain:X}),getRawTx:(B)=>PX({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 bX=H(()=>{TX()});import{SwapKitError as SX}from"@swapkit/helpers";import xX from"bs58check";import gX 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 SX("toolbox_utxo_invalid_address",{address:X})}function kZ(X){try{let Z=xX.decode(X);if(Z.length!==21)throw new SX("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 KX(X)}catch{}else{let Z=["bitcoincash","bchtest","bchreg"];for(let B of Z)try{return KX(`${B}:${X}`)}catch{}}return}function KX(X){try{let{hash:Z,prefix:B,type:G}=gX.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),xX.encode(B)}function RZ(X){let Z=X.network==="mainnet"?"bitcoincash":"bchtest",B=X.type==="p2pkh"?"P2PKH":"P2SH",G=new Uint8Array(X.hash);return gX.encode(Z,B,G)}var DX,P;var mX=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,lX=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 lX+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 hX=H(()=>{CX()});var m=H(()=>{bX();mX();hX();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 cX}from"@scure/bip39";import{AssetValue as IX,applyFeeMultiplier as pX,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 nX,Psbt as sZ,payments as oX}from"bitcoinjs-lib";import{ECPairFactory as aZ}from"ecpair";function uX({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};nX(MX),G.addOutput(W)}return{inputs:X,psbt:G}}async function rX({assetValue:X,recipient:Z,memo:B,feeRate:G,sender:$,fetchTxHex:Q=!1}){let J=X.chain,j=B?await O(B):null,q=await sX({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 uX({chain:J,compiledMemo:j,inputs:W,outputs:L,psbt:D,sender:$});return{inputs:U,psbt:Y,utxos:q.inputs}}async function dX(){let X=await N();return function({address:B,chain:G}){if(G===_.BitcoinCash)return f(B);if(G===_.Zcash)return l(B);try{return nX(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 dX(),q=await i(X);return{accumulative:y,broadcastTx:(W)=>M(X).broadcastTx(W),calculateTxSize:g,createKeysForPath:q,createTransaction:rX,estimateMaxSendableAmount:eZ(X),estimateTransactionFee:XB(X),getAddress:J,getAddressFromKeys:_X(X),getBalance:EX(X),getFeeRates:()=>s(X),getInputsOutputsFee:iX,getPrivateKeyFromMnemonic:(W)=>{return q(W).toWIF()},transfer:ZB(Q),validateAddress:(W)=>j({address:W,chain:X})}}async function iX({assetValue:X,feeOptionKey:Z=F.Fast,feeRate:B,memo:G,sender:$,recipient:Q}){let J=X.chain,j=await sX({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 iX(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(cX(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=cX(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)?oX.p2pkh:oX.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 rX({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]:pX(Z,F.Fast),[F.Fastest]:pX(Z,F.Fastest)}}async function sX({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:aX,getAddress:J,getAddressFromKeys:UB,getBalance:T,getFeeRates:q,stripPrefix:b,stripToCashAddress:S,transfer:YB({broadcastTx:W,getFeeRates:q,signer:Q}),validateAddress:f}}async function aX({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 aX({...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 eX,networks as IB,address as MB}from"@bitgo/utxo-lib";import{HDKey as XZ}from"@scure/bip32";import{mnemonicToSeedSync as ZZ}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 BZ(){return IB.zcash}function GZ(){return{bech32:void 0,bip32:{private:76066276,public:76067358},messagePrefix:`\x18ZCash Signed Message:
|
|
2
|
+
`,pubKeyHash:28,scriptHash:28,wif:128}}function AB({phrase:X,derivationPath:Z}){let B=ZZ(X),$=XZ.fromMasterSeed(B).derive(Z);if(!$.privateKey)throw new qX("toolbox_utxo_invalid_params");let Q=GZ(),J=eX.fromPrivateKey(Buffer.from($.privateKey),{network:Q}),j=CB.hash160(J.publicKey),{isStagenet:q}=NB.get("envs"),W=q?Buffer.from([29,37]):Buffer.from([28,184]),L=Buffer.concat([W,j]),T=yB.encode(L);return{getAddress:()=>Promise.resolve(T),signTransaction:(D)=>{let Y=D.signAllInputs(J);return Promise.resolve(Y)}}}function kB({inputs:X,outputs:Z,psbt:B,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};B.addInput({hash:Q.hash,index:Q.index,...J,...j})}for(let Q of Z){let J="address"in Q&&Q.address?Q.address:G,j=Q.script;if(j&&!$)continue;let q=j?{script:$,value:0n}:{script:MB.toOutputScript(J,BZ()),value:BigInt(Q.value)};B.addOutput(q)}return{inputs:X,psbt:B}}async function tX(X){let{assetValue:Z,recipient:B,memo:G,feeRate:$,sender:Q,fetchTxHex:J}=X,j=G?O(G):null,q=await M(jX.Zcash).getUtxos({address:Q,fetchTxHex:J!==!1}),W=[{address:B,value:Number(Z.getBaseValue("string"))},...j?[{script:j,value:0}]:[]],{inputs:L,outputs:T}=y({chain:jX.Zcash,changeAddress:Q,feeRate:$,inputs:q,outputs:W});if(!(L&&T))throw new qX("toolbox_utxo_insufficient_balance",{assetValue:Z,sender:Q});let D=zB.createPsbtForNetwork({network:BZ()},{version:455}),Y=1307332080,U=Buffer.concat([Buffer.of(252),Buffer.of(5),Buffer.from("BITGO"),Buffer.of(0)]),I=Buffer.allocUnsafe(4);I.writeUInt32LE(Y>>>0,0),D.addUnknownKeyValToGlobal({key:U,value:I});let{psbt:z,inputs:R}=await kB({compiledMemo:j,inputs:L,outputs:T,psbt:D,sender:Q});return{inputs:R,outputs:T,psbt:z}}async function NX(X){let Z=await FB(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||vB[jX.Zcash]||[44,133,0,0,0],L=OB(W,{index:q}),T=_B(L);return AB({derivationPath:T,phrase:J})}).otherwise(()=>Promise.resolve(void 0)),B=await K({chain:jX.Zcash,signer:Z});async function G({recipient:J,assetValue:j,feeOptionKey:q=HB.Fast,...W}){let L=await Z?.getAddress();if(!(Z&&L))throw new qX("toolbox_utxo_no_signer");let T=W.feeRate||(await B.getFeeRates())[q],{psbt:D}=await tX({...W,assetValue:j,feeRate:T,recipient:J,sender:L}),Y=await Z.signTransaction(D);return Y.finalizeAllInputs(),B.broadcastTx(Y.extractTransaction().toHex())}function $({phrase:J,derivationPath:j="m/44'/133'/0'/0/0"}){let q=ZZ(J),L=XZ.fromMasterSeed(q).derive(j);if(!L.privateKey)throw new qX("toolbox_utxo_invalid_params");let T=GZ();return eX.fromPrivateKey(Buffer.from(L.privateKey),{network:T})}function Q({phrase:J,derivationPath:j="m/44'/133'/0'/0/0"}){return $({derivationPath:j,phrase:J}).toWIF()}return{...B,createKeysForPath:$,createTransaction:tX,getPrivateKeyFromMnemonic:Q,transfer:G,validateAddress:l}}var OX=H(()=>{m();a();r()});import{Chain as c,SwapKitError as EB}from"@swapkit/helpers";async function fB(X,Z){switch(X){case c.BitcoinCash:return await HX(Z||{});case c.Zcash:return await NX(Z);case c.Bitcoin:case c.Dogecoin:case c.Litecoin:case c.Dash:return await K({chain:X,...Z});default:throw new EB("toolbox_utxo_not_supported",{chain:X})}}var JZ=H(()=>{$X();a();OX();$X();r()});var RB={};WZ(RB,{validateZcashAddress:()=>l,toLegacyAddress:()=>x,toCashAddress:()=>o,stripToCashAddress:()=>S,stripPrefix:()=>b,nonSegwitChains:()=>d,isValidAddress:()=>UX,getUtxoToolbox:()=>fB,getUtxoNetwork:()=>N,getUtxoApi:()=>M,getUTXOAddressValidator:()=>dX,getScriptTypeForAddress:()=>n,getOutputSize:()=>u,getInputSize:()=>E,getDustThreshold:()=>QX,getCreateKeysForPath:()=>i,detectAddressNetwork:()=>zX,createZcashToolbox:()=>NX,createUTXOToolbox:()=>K,createCustomUtxoApi:()=>AZ,createBCHToolbox:()=>HX,compileMemo:()=>O,calculateTxSize:()=>g,bchValidateAddress:()=>f,addressFromKeysGetter:()=>_X,addInputsAndOutputs:()=>uX,accumulative:()=>y,UtxoNetwork:()=>DX,UTXOScriptType:()=>JX,TX_OVERHEAD:()=>GX,OutputSizes:()=>BX,OP_RETURN_OVERHEAD:()=>lX,MIN_TX_FEE:()=>bZ,InputSizes:()=>ZX});var wB=H(()=>{m();JZ();$X();a();OX()});wB();export{l as validateZcashAddress,x as toLegacyAddress,o as toCashAddress,S as stripToCashAddress,b as stripPrefix,d as nonSegwitChains,UX as isValidAddress,fB as getUtxoToolbox,N as getUtxoNetwork,M as getUtxoApi,dX as getUTXOAddressValidator,n as getScriptTypeForAddress,u as getOutputSize,E as getInputSize,QX as getDustThreshold,i as getCreateKeysForPath,zX as detectAddressNetwork,NX as createZcashToolbox,K as createUTXOToolbox,AZ as createCustomUtxoApi,HX as createBCHToolbox,O as compileMemo,g as calculateTxSize,f as bchValidateAddress,_X as addressFromKeysGetter,uX as addInputsAndOutputs,y as accumulative,DX as UtxoNetwork,JX as UTXOScriptType,GX as TX_OVERHEAD,BX as OutputSizes,lX as OP_RETURN_OVERHEAD,bZ as MIN_TX_FEE,ZX as InputSizes};
|
|
3
3
|
|
|
4
|
-
//# debugId=
|
|
4
|
+
//# debugId=4A0E0E336A4CCD6164756E2164756E21
|
|
5
5
|
//# sourceMappingURL=index.js.map
|