@swapkit/toolboxes 4.0.10 → 4.0.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/cosmos/index.cjs +2 -2
- package/dist/src/cosmos/index.cjs.map +2 -2
- package/dist/src/cosmos/index.js +2 -2
- package/dist/src/cosmos/index.js.map +2 -2
- package/dist/src/evm/index.cjs +2 -2
- package/dist/src/evm/index.cjs.map +2 -2
- package/dist/src/evm/index.js +2 -2
- package/dist/src/evm/index.js.map +2 -2
- package/dist/src/index.cjs +3 -3
- package/dist/src/index.cjs.map +3 -3
- package/dist/src/index.js +3 -3
- package/dist/src/index.js.map +3 -3
- package/dist/src/near/index.cjs.map +1 -1
- package/dist/src/near/index.js +2 -2
- package/dist/src/near/index.js.map +2 -2
- package/dist/src/radix/index.cjs +2 -2
- package/dist/src/radix/index.cjs.map +2 -2
- package/dist/src/radix/index.js +2 -2
- package/dist/src/radix/index.js.map +2 -2
- package/dist/src/ripple/index.cjs.map +1 -1
- package/dist/src/ripple/index.js +2 -2
- package/dist/src/ripple/index.js.map +2 -2
- package/dist/src/solana/index.cjs.map +1 -1
- package/dist/src/solana/index.js +2 -2
- package/dist/src/solana/index.js.map +2 -2
- package/dist/src/substrate/index.cjs +2 -2
- package/dist/src/substrate/index.cjs.map +2 -2
- package/dist/src/substrate/index.js +2 -2
- package/dist/src/substrate/index.js.map +2 -2
- package/dist/src/tron/index.cjs +2 -2
- package/dist/src/tron/index.cjs.map +2 -2
- package/dist/src/tron/index.js +2 -2
- package/dist/src/tron/index.js.map +2 -2
- 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/bitcoinCash.d.ts.map +1 -1
- package/dist/types/utxo/toolbox/utxo.d.ts.map +1 -1
- package/dist/types/utxo/toolbox/zcash.d.ts.map +1 -1
- package/package.json +3 -3
package/dist/src/utxo/index.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
var YZ=Object.create;var{getPrototypeOf:MZ,defineProperty:r,getOwnPropertyNames:VX,getOwnPropertyDescriptor:TZ}=Object,SX=Object.prototype.hasOwnProperty;var m=(X,Z,G)=>{G=X!=null?YZ(MZ(X)):{};let J=Z||!X||!X.__esModule?r(G,"default",{value:X,enumerable:!0}):G;for(let j of VX(X))if(!SX.call(J,j))r(J,j,{get:()=>X[j],enumerable:!0});return J},EX=new WeakMap,CZ=(X)=>{var Z=EX.get(X),G;if(Z)return Z;if(Z=r({},"__esModule",{value:!0}),X&&typeof X==="object"||typeof X==="function")VX(X).map((J)=>!SX.call(Z,J)&&r(Z,J,{get:()=>X[J],enumerable:!(G=TZ(X,J))||G.enumerable}));return EX.set(X,Z),Z};var HZ=(X,Z)=>{for(var G in Z)r(X,G,{get:Z[G],enumerable:!0,configurable:!0,set:(J)=>Z[G]=()=>J})};var y=(X,Z)=>()=>(X&&(Z=X(X=0)),Z);function xX(){function X(){let Z=Date.now(),G=MX||Z;return MX=G,Z>MX?Z:G+1}return vZ+X().toString(36)}function mX(X){return async function Z(G,J=!0){return(await gX.SwapKitApi.getChainBalance({address:G,chain:X,scamFilter:J})).map(({identifier:$,value:Q,decimal:q})=>{return new JX.AssetValue({decimal:q||JX.BaseDecimal[X],identifier:$,value:Q})})}}var JX,gX,vZ,MX=0;var TX=y(()=>{JX=require("@swapkit/helpers"),gX=require("@swapkit/helpers/api"),vZ=typeof process!=="undefined"&&process.pid?process.pid.toString(36):""});async function IZ({chain:X,txHash:Z}){let G=`${QX(X)}/push/transaction`,J=JSON.stringify({data:Z});try{let j=await Y.RequestClient.post(G,{body:J,headers:{"Content-Type":"application/json"}});if(j.context.code!==200)throw new Y.SwapKitError("toolbox_utxo_broadcast_failed",{error:j.context.error||"Transaction broadcast failed"});return j.data?.transaction_hash||Z}catch(j){let $=await Y.getRPCUrl(X);if($){let Q=JSON.stringify({id:xX(),jsonrpc:"2.0",method:"sendrawtransaction",params:[Z]}),q=await Y.RequestClient.post($,{body:Q,headers:{"Content-Type":"application/json"}});if(q.error)throw new Y.SwapKitError("toolbox_utxo_broadcast_failed",{error:q.error?.message});if(q.result.includes('"code":-26'))throw new Y.SwapKitError("toolbox_utxo_invalid_transaction",{error:"Transaction amount was too low"});return q.result}throw j}}function QX(X){return`https://api.blockchair.com/${_Z(X)}`}function lX(X){switch(X){case Y.Chain.Bitcoin:return 5;case Y.Chain.Dogecoin:return 1e4;case Y.Chain.Litecoin:return 1;case Y.Chain.Zcash:return 1;default:return 2}}function _Z(X){switch(X){case Y.Chain.BitcoinCash:return"bitcoin-cash";case Y.Chain.Litecoin:return"litecoin";case Y.Chain.Dash:return"dash";case Y.Chain.Dogecoin:return"dogecoin";case Y.Chain.Zcash:return"zcash";case Y.Chain.Polkadot:return"polkadot";default:return"bitcoin"}}async function FZ(X){try{let{feePerKb:Z}=await Y.RequestClient.get(`https://app.bitgo.com/api/v2/${X.toLowerCase()}/tx/fee`),G=Z/1000;return Math.max(G,lX(X))}catch(Z){return lX(X)}}async function CX(X,Z){let G=await Y.RequestClient.get(`${X}${Z?`${X.includes("?")?"&":"?"}key=${Z}`:""}`);if(!G||G.context.code!==200)throw new Y.SwapKitError("toolbox_utxo_api_error",{error:`Failed to query ${X}`});return G.data}async function nX({address:X,chain:Z,apiKey:G}){if(!X)throw new Y.SwapKitError("toolbox_utxo_invalid_params",{error:"Address is required"});try{return(await CX(`${QX(Z)}/dashboards/address/${X}?transaction_details=true`,G))[X]}catch(J){return{address:{balance:0,transaction_count:0},utxo:[]}}}async function yZ({address:X,chain:Z,apiKey:G}){return(await nX({address:X,apiKey:G,chain:Z}))?.address.balance||0}async function oX({chain:X,apiKey:Z,txHash:G}){if(!G)throw new Y.SwapKitError("toolbox_utxo_invalid_params",{error:"TxHash is required"});try{return(await CX(`${QX(X)}/raw/transaction/${G}`,Z))?.[G]?.raw_transaction||""}catch(J){return console.error("Failed to fetch raw transaction:",J),""}}async function NZ({chain:X,address:Z,apiKey:G,offset:J=0,limit:j=30}){return(await CX(`${QX(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=${j}&offset=${J}`,G)).map(({is_spent:W,script_hex:D,block_id:L,transaction_hash:z,index:M,value:U,spending_signature_hex:T})=>({hash:z,index:M,is_confirmed:L!==-1,is_spent:W,script_hex:D,txHex:T,value:U}))}function kZ(X){return X.reduce((Z,G)=>Z+G.value,0)}function hX(X,Z){let G=[...X].sort((J,j)=>j.value-J.value);if(Z){let J=[],j=0;for(let $ of G)if(J.push($),j+=$.value,j>=Z)break;return J}return G}async function uX({chain:X,address:Z,apiKey:G,targetValue:J,accumulativeValue:j=0,offset:$=0,limit:Q=30}){if(!Z)throw new Y.SwapKitError("toolbox_utxo_invalid_params",{error:"Address is required"});try{let q=await NZ({address:Z,apiKey:G,chain:X,limit:Q,offset:$,targetValue:J}),D=q.length<Q,L=q.filter(({is_spent:I})=>!I),z=kZ(L),M=j+z,U=J&&M>=J;if(D||U)return hX(L,J);let T=await uX({accumulativeValue:M,address:Z,apiKey:G,chain:X,limit:Q,offset:$+Q,targetValue:J}),_=[...L,...T];return hX(_,J)}catch(q){return console.error("Failed to fetch unspent UTXOs:",q),[]}}async function AZ({address:X,chain:Z,apiKey:G,fetchTxHex:J=!0,targetValue:j}){let $=await uX({address:X,apiKey:G,chain:Z,targetValue:j}),Q=[];for(let{hash:q,index:W,script_hex:D,value:L}of $){let z;if(J)z=await oX({apiKey:G,chain:Z,txHash:q});Q.push({address:X,hash:q,index:W,txHex:z,value:L,witnessUtxo:{script:Buffer.from(D,"hex"),value:L}})}return Q}function OZ(X){let Z=Y.SKConfig.get("apiKeys").blockchair||"";return Y.warnOnce({condition:!Z,id:"no_blockchair_api_key_warning",warning:"No Blockchair API key found. Functionality will be limited."}),{broadcastTx:(G)=>IZ({chain:X,txHash:G}),getAddressData:(G)=>nX({address:G,apiKey:Z,chain:X}),getBalance:(G)=>yZ({address:G,apiKey:Z,chain:X}),getRawTx:(G)=>oX({apiKey:Z,chain:X,txHash:G}),getSuggestedTxFee:()=>FZ(X),getUtxos:(G)=>AZ({...G,apiKey:Z,chain:X})}}function wZ(X){return X}function F(X){let Z=Y.SKConfig.get("apis")[X];if(Z)return Y.warnOnce({condition:!0,id:"custom_utxo_api_warning",warning:"Using custom UTXO API. Be sure to implement all methods to avoid issues."}),Z;return OZ(X)}function A(){return function X(Z){switch(Z){case Y.Chain.Bitcoin:return pX.networks.bitcoin;case Y.Chain.BitcoinCash:return l.default.bitcoincash.main.toBitcoinJS();case Y.Chain.Dash:return l.default.dash.main.toBitcoinJS();case Y.Chain.Litecoin:return l.default.litecoin.main.toBitcoinJS();case Y.Chain.Dogecoin:{let G={private:70615956,public:70617039},J=l.default.dogecoin.test;return J.versions.bip32=G,l.default.dogecoin.main.toBitcoinJS()}case Y.Chain.Zcash:return cX.networks.zcash;default:throw new Y.SwapKitError("toolbox_utxo_not_supported",{chain:Z})}}}var cX,Y,pX,l;var rX=y(()=>{cX=require("@bitgo/utxo-lib"),Y=require("@swapkit/helpers"),pX=require("bitcoinjs-lib"),l=m(require("coininfo"));TX()});function FX(X){try{return $X(X),!0}catch(Z){return!1}}function yX(X){return $X(X)?.network}function h(X){let Z=$X(X);if(Z?.format==="legacy")return X;return KZ(Z)}function d(X){let Z=$X(X);return bZ(Z)}function $X(X){try{let Z=PZ(X);if(Z)return Z}catch(Z){}try{let Z=fZ(X);if(Z)return Z}catch(Z){}throw new HX.SwapKitError("toolbox_utxo_invalid_address",{address:X})}function PZ(X){try{let Z=vX.default.decode(X);if(Z.length!==21)throw new HX.SwapKitError("toolbox_utxo_invalid_address",{address:X});let G=Z[0],J=Array.prototype.slice.call(Z,1);switch(G){case C.legacy.mainnet.p2pkh:return{format:"legacy",hash:J,network:"mainnet",type:"p2pkh"};case C.legacy.mainnet.p2sh:return{format:"legacy",hash:J,network:"mainnet",type:"p2sh"};case C.legacy.testnet.p2pkh:return{format:"legacy",hash:J,network:"testnet",type:"p2pkh"};case C.legacy.testnet.p2sh:return{format:"legacy",hash:J,network:"testnet",type:"p2sh"};case C.bitpay.mainnet.p2pkh:return{format:"bitpay",hash:J,network:"mainnet",type:"p2pkh"};case C.bitpay.mainnet.p2sh:return{format:"bitpay",hash:J,network:"mainnet",type:"p2sh"};default:return}}catch(Z){return}}function fZ(X){if(X.indexOf(":")!==-1)try{return dX(X)}catch(Z){}else{let Z=["bitcoincash","bchtest","bchreg"];for(let G of Z)try{return dX(`${G}:${X}`)}catch(J){}}return}function dX(X){try{let{hash:Z,prefix:G,type:J}=IX.default.decode(X);return{format:"cashaddr",hash:Array.prototype.slice.call(Z,0),network:G==="bitcoincash"?"mainnet":"testnet",type:J==="P2PKH"?"p2pkh":"p2sh"}}catch(Z){return}}function KZ(X){let Z=C.legacy[X.network][X.type],G=Buffer.alloc(1+X.hash.length);return G[0]=Z,G.set(X.hash,1),vX.default.encode(G)}function bZ(X){let Z=X.network==="mainnet"?"bitcoincash":"bchtest",G=X.type==="p2pkh"?"P2PKH":"P2SH",J=new Uint8Array(X.hash);return IX.default.encode(Z,G,J)}var HX,vX,IX,_X,C;var iX=y(()=>{HX=require("@swapkit/helpers"),vX=m(require("bs58check")),IX=m(require("cashaddrjs"));((G)=>{G.Mainnet="mainnet";G.Testnet="testnet"})(_X||={});C={["legacy"]:{["mainnet"]:{["p2pkh"]:0,["p2sh"]:5},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}},["bitpay"]:{["mainnet"]:{["p2pkh"]:28,["p2sh"]:40},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}}}});function O(X){let Z=Buffer.from(X,"utf8");return qX.script.compile([qX.opcodes.OP_RETURN,Z])}var sX,qX,RZ=1000,WX=10,aX=10,EZ=41,VZ=107,LX,jX,i,s=(X)=>{if(X.startsWith("bc1")||X.startsWith("tb1")||X.startsWith("ltc1")||X.startsWith("tltc1"))return"P2WPKH";if(X.startsWith("1")||X.startsWith("m")||X.startsWith("n")||X.startsWith("bitcoincash:q")||X.startsWith("bitcoincash:p")||X.startsWith("q")||X.startsWith("p")||X.startsWith("L")||X.startsWith("M")||X.startsWith("3")||X.startsWith("D")||X.startsWith("A")||X.startsWith("9")||X.startsWith("X")||X.startsWith("7")||X.startsWith("y")||X.startsWith("t1")||X.startsWith("t3")||X.startsWith("tm"))return"P2PKH";throw new sX.SwapKitError("toolbox_utxo_invalid_address",{address:X})},c=({inputs:X,outputs:Z,feeRate:G})=>{let J=X[0]&&"address"in X[0]&&X[0].address?s(X[0].address):"P2PKH",j=X.filter((Q)=>Q.value>=jX["type"in Q?Q.type:"P2PKH"]*Math.ceil(G)).reduce((Q,q)=>Q+b(q),0),$=Z?.reduce((Q,q)=>Q+a(q),0)||i[J];return WX+j+$},b=(X)=>{if("type"in X)return jX[X.type];if("address"in X&&X.address)return jX[s(X.address)];return EZ+VZ},a=(X,Z)=>{if(X?.script)return aX+X.script.length+(X.script.length>=74?2:1);if(Z)return i[Z];return i.P2PKH};var NX=y(()=>{sX=require("@swapkit/helpers"),qX=require("bitcoinjs-lib");((G)=>{G.P2PKH="P2PKH";G.P2WPKH="P2WPKH"})(LX||={});jX={["P2PKH"]:148,["P2WPKH"]:68},i={["P2PKH"]:34,["P2WPKH"]:31}});function BX(X){switch(X){case w.Chain.Bitcoin:case w.Chain.BitcoinCash:return 550;case w.Chain.Dash:case w.Chain.Litecoin:return 5500;case w.Chain.Dogecoin:return 1e5;case w.Chain.Zcash:return 546;default:throw new w.SwapKitError("toolbox_utxo_not_supported",{chain:X})}}function P({inputs:X,outputs:Z,feeRate:G=1,chain:J=w.Chain.Bitcoin,changeAddress:j=""}){let $=Math.ceil(G),Q=X[0]&&"address"in X[0]&&X[0].address?s(X[0].address):"P2PKH",q=X.filter((U)=>b(U)*$<=U.value),W=WX+Z.reduce((U,T)=>U+a(T,Q),0),D=Z.reduce((U,T)=>U+T.value,0),L=W*$,z=0,M=[];for(let U of q){let T=b(U),_=$*T;L+=_,z+=U.value,M.push(U);let I=L+D;if(z<I)continue;let E=z-I,V=$*a({address:"",value:0},Q);if(E>V){let bX=V+L,RX=z-(D+bX);if(RX>Math.max(b({})*$,BX(J)))return{fee:bX,inputs:M,outputs:Z.concat({address:j,value:RX})}}return{fee:L,inputs:M,outputs:Z}}return{fee:$*c({feeRate:$,inputs:X,outputs:Z})}}var w;var tX=y(()=>{w=require("@swapkit/helpers");NX()});var p=y(()=>{rX();iX();tX();NX()});function S(X){return X.replace(/(bchtest:|bitcoincash:)/,"")}function R(X){let Z=S(X);return FX(Z)&&yX(Z)==="mainnet"}function n(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=DX.networks.zcash;try{return DX.address.toOutputScript(X,Z),!0}catch{let G=eX.default.decode(X);if(G.length<21)return!1;let J=G[0];return J===Z.pubKeyHash||J===Z.scriptHash}}catch{return!1}}var DX,eX;var t=y(()=>{DX=require("@bitgo/utxo-lib"),eX=m(require("bs58check"));p()});function GZ({inputs:X,outputs:Z,chain:G,psbt:J,sender:j,compiledMemo:$}){for(let Q of X){let q=!!Q.witnessUtxo&&!e.includes(G)&&{witnessUtxo:Q.witnessUtxo},W=e.includes(G)&&{nonWitnessUtxo:Q.txHex?Buffer.from(Q.txHex,"hex"):void 0};J.addInput({hash:Q.hash,index:Q.index,...q,...W})}for(let Q of Z){let q="address"in Q&&Q.address?Q.address:j,W=Q.script;if(W&&!$)continue;let D=W?{script:$,value:0}:{address:q,value:Q.value};f.initEccLib(zX.default),J.addOutput(D)}return{inputs:X,psbt:J}}async function JZ({assetValue:X,recipient:Z,memo:G,feeRate:J,sender:j,fetchTxHex:$=!1}){let Q=X.chain,q=G?await O(G):null,W=await jZ({assetValue:X,fetchTxHex:$,memo:G,recipient:Z,sender:j}),{inputs:D,outputs:L}=P({...W,chain:Q,feeRate:J});if(!(D&&L))throw new B.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue:X,sender:j});let z=await A(),M=new f.Psbt({network:z(Q)});if(Q===B.Chain.Dogecoin)M.setMaximumFeeRate(650000000);let{psbt:U,inputs:T}=await GZ({chain:Q,compiledMemo:q,inputs:D,outputs:L,psbt:M,sender:j});return{inputs:T,psbt:U,utxos:W.inputs}}async function QZ(){let X=await A();return function Z({address:G,chain:J}){if(J===B.Chain.BitcoinCash)return R(G);if(J===B.Chain.Zcash)return n(G);try{return f.initEccLib(zX.default),f.address.toOutputScript(G,X(J)),!0}catch(j){return!1}}}async function SZ({chain:X,phrase:Z,derivationPath:G}){let J=(await XX(X))({derivationPath:G,phrase:Z});async function j(Q){return await Q.signAllInputs(J),Q}async function $(){return(await AX(X))(J)}return{getAddress:$,signTransaction:j}}async function g({chain:X,...Z}){let G="phrase"in Z?Z.phrase:void 0,J="index"in Z?Z.index||0:0,j=B.derivationPathToString("derivationPath"in Z&&Z.derivationPath?Z.derivationPath:B.updateDerivationPath(B.NetworkDerivationPath[X],{index:J})),$=G?await SZ({chain:X,derivationPath:j,phrase:G}):("signer"in Z)?Z.signer:void 0;function Q(){return Promise.resolve($?.getAddress())}let q=await AX(X),W=await QZ(),D=await XX(X);return{accumulative:P,broadcastTx:(L)=>F(X).broadcastTx(L),calculateTxSize:c,createKeysForPath:D,createTransaction:JZ,estimateMaxSendableAmount:gZ(X),estimateTransactionFee:xZ(X),getAddress:Q,getAddressFromKeys:q,getBalance:mX(X),getFeeRates:()=>ZX(X),getInputsOutputsFee:$Z,getPrivateKeyFromMnemonic:(L)=>{return D(L).toWIF()},transfer:mZ($),validateAddress:(L)=>W({address:L,chain:X})}}async function $Z({assetValue:X,feeOptionKey:Z=B.FeeOption.Fast,feeRate:G,memo:J,sender:j,recipient:$}){let Q=X.chain,q=await jZ({assetValue:X,memo:J,recipient:$,sender:j}),W=G?Math.floor(G):(await ZX(Q))[Z];return P({...q,chain:Q,feeRate:W})}function gZ(X){return async function Z({from:G,memo:J,feeRate:j,feeOptionKey:$=B.FeeOption.Fast,recipients:Q=1}){let q=await F(X).getAddressData(G),W=j?Math.ceil(j):(await ZX(X))[$],D=q?.utxo.map((T)=>({...T,hash:"",type:"P2PKH"})).filter((T)=>T.value>Math.max(BX(X),b(T)*W));if(!D?.length)return B.AssetValue.from({chain:X});let L=B.AssetValue.from({chain:X,value:D.reduce((T,_)=>T+_.value,0)}),z=typeof Q==="number"?Array.from({length:Q},()=>({address:G,value:0})):Q;if(J){let T=await O(J);z.push({address:G,script:T,value:0})}let U=c({feeRate:W,inputs:D,outputs:z})*W;return L.sub(U)}}function xZ(X){return async(Z)=>{let G=await $Z(Z);return B.AssetValue.from({chain:X,value:B.SwapKitNumber.fromBigInt(BigInt(G.fee),8).getValue("string")})}}async function XX(X){let Z=await A();switch(X){case B.Chain.BitcoinCash:return function G({phrase:J,derivationPath:j=`${B.DerivationPath.BCH}/0`,wif:$}){let Q=Z(X);if($)return UX.ECPair.fromWIF($,Q);if(!J)throw new B.SwapKitError("toolbox_utxo_invalid_params",{error:"No phrase provided"});return UX.HDNode.fromSeedBuffer(Buffer.from(kX.mnemonicToSeedSync(J)),Q).derivePath(j).keyPair};case B.Chain.Bitcoin:case B.Chain.Dogecoin:case B.Chain.Litecoin:case B.Chain.Zcash:case B.Chain.Dash:return function G({phrase:J,wif:j,derivationPath:$}){if(!(j||J))throw new B.SwapKitError("toolbox_utxo_invalid_params",{error:"Either phrase or wif must be provided"});let Q=ZZ.ECPairFactory(zX.default),q=Z(X);if(j)return Q.fromWIF(j,q);let W=kX.mnemonicToSeedSync(J),D=XZ.HDKey.fromMasterSeed(W,q).derive($);if(!D.privateKey)throw new B.SwapKitError("toolbox_utxo_invalid_params",{error:"Could not get private key from phrase"});return Q.fromPrivateKey(Buffer.from(D.privateKey),{network:q})};default:throw new B.SwapKitError("toolbox_utxo_not_supported",{chain:X})}}async function AX(X){let Z=await A();return function G(J){if(!J)throw new B.SwapKitError("toolbox_utxo_invalid_params",{error:"Keys must be provided"});let j=e.includes(X)?f.payments.p2pkh:f.payments.p2wpkh,{address:$}=j({network:Z(X),pubkey:J.publicKey});if(!$)throw new B.SwapKitError("toolbox_utxo_invalid_address",{error:"Address not defined"});return $}}function mZ(X){return async function Z({memo:G,recipient:J,feeOptionKey:j,feeRate:$,assetValue:Q}){let q=await X?.getAddress(),W=Q.chain;if(!(X&&q))throw new B.SwapKitError("toolbox_utxo_no_signer");if(!J)throw new B.SwapKitError("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});let D=$||(await ZX(W))[j||B.FeeOption.Fast],{psbt:L}=await JZ({assetValue:Q,feeRate:D,memo:G,recipient:J,sender:q}),z=await X.signTransaction(L);return z.finalizeAllInputs(),F(W).broadcastTx(z.extractTransaction().toHex())}}async function ZX(X){let Z=await F(X).getSuggestedTxFee();return{[B.FeeOption.Average]:Z,[B.FeeOption.Fast]:B.applyFeeMultiplier(Z,B.FeeOption.Fast),[B.FeeOption.Fastest]:B.applyFeeMultiplier(Z,B.FeeOption.Fastest)}}async function jZ({assetValue:X,recipient:Z,memo:G,sender:J,fetchTxHex:j=!1}){let $=X.chain,Q=(await ZX($))[B.FeeOption.Fastest],q=j||e.includes($),W=X.getBaseValue("number"),D=Math.ceil(W+Q*5000);return{inputs:await F($).getUtxos({address:J,fetchTxHex:q,targetValue:D}),outputs:[{address:Z,value:W},...G?[{address:"",script:await O(G),value:0}]:[]]}}var zX,UX,XZ,kX,B,f,ZZ,e;var GX=y(()=>{zX=m(require("@bitcoinerlab/secp256k1")),UX=require("@psf/bitcoincashjs-lib"),XZ=require("@scure/bip32"),kX=require("@scure/bip39"),B=require("@swapkit/helpers"),f=require("bitcoinjs-lib"),ZZ=require("ecpair");TX();p();t();e=[B.Chain.Dash,B.Chain.Dogecoin]});function x(X){return S(d(X))}function lZ(X){function Z({builder:J,utxos:j}){return j.forEach(($,Q)=>{J.sign(Q,X,void 0,65,$.witnessUtxo?.value)}),J.build()}return{getAddress:()=>{let J=X.getAddress(0);return Promise.resolve(x(J))},signTransaction:Z}}async function OX(X){let Z="phrase"in X?X.phrase:void 0,G="index"in X?X.index||0:0,J=v.derivationPathToString("derivationPath"in X&&X.derivationPath?X.derivationPath:v.updateDerivationPath(v.NetworkDerivationPath[N],{index:G})),j=Z?(await XX(N))({derivationPath:J,phrase:Z}):void 0,$=j?lZ(j):("signer"in X)?X.signer:void 0;function Q(){return Promise.resolve($?.getAddress())}let{getBalance:q,getFeeRates:W,broadcastTx:D,...L}=await g({chain:N});function z(M,U=!0){return q(S(d(M)))}return{...L,broadcastTx:D,buildTx:cZ,createTransaction:WZ,getAddress:Q,getAddressFromKeys:pZ,getBalance:z,getFeeRates:W,stripPrefix:S,stripToCashAddress:x,transfer:hZ({broadcastTx:D,getFeeRates:W,signer:$}),validateAddress:R}}async function WZ({assetValue:X,recipient:Z,memo:G,feeRate:J,sender:j}){if(!R(Z))throw new v.SwapKitError("toolbox_utxo_invalid_address",{address:Z});let $=Math.ceil(X.getBaseValue("number")+J*7500),Q=await F(N).getUtxos({address:x(j),fetchTxHex:!0,targetValue:$}),q=G?await O(G):null,W=[];W.push({address:Z,value:X.getBaseValue("number")});let{inputs:D,outputs:L}=P({chain:N,feeRate:J,inputs:Q,outputs:W});if(!(D&&L))throw new v.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue:X,sender:j});let z=await A(),M=new o.TransactionBuilder(z(N));await Promise.all(D.map(async(U)=>{let T=await F(N).getRawTx(U.hash);M.addInput(o.Transaction.fromBuffer(Buffer.from(T,"hex")),U.index)}));for(let U of L){let T="address"in U&&U.address?U.address:h(j),_=await A(),I=o.address.toOutputScript(h(T),_(N));M.addOutput(I,U.value)}if(q)M.addOutput(q,0);return{builder:M,utxos:D}}function hZ({broadcastTx:X,getFeeRates:Z,signer:G}){return async function J({recipient:j,assetValue:$,feeOptionKey:Q=v.FeeOption.Fast,...q}){let W=await G?.getAddress();if(!(G&&W))throw new v.SwapKitError("toolbox_utxo_no_signer");if(!j)throw new v.SwapKitError("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});let D=q.feeRate||(await Z())[Q],{builder:L,utxos:z}=await WZ({...q,assetValue:$,feeRate:D,recipient:j,sender:W}),U=(await G.signTransaction({builder:L,utxos:z})).toHex();return X(U)}}async function cZ({assetValue:X,recipient:Z,memo:G,feeRate:J,sender:j,setSigHashType:$}){let Q=d(Z);if(!R(Q))throw new v.SwapKitError("toolbox_utxo_invalid_address",{address:Q});let q=Math.ceil(X.getBaseValue("number")+J*7500),W=await F(N).getUtxos({address:x(j),fetchTxHex:!1,targetValue:q}),D=Number(J.toFixed(0)),L=G?await O(G):null,z=[];if(z.push({address:h(Z),value:X.getBaseValue("number")}),L)z.push({script:L,value:0});let{inputs:M,outputs:U}=P({chain:N,feeRate:D,inputs:W,outputs:z});if(!(M&&U))throw new v.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue:X,sender:j});let T=await A(),_=new qZ.Psbt({network:T(N)});for(let{hash:I,index:E,witnessUtxo:V}of M)_.addInput({hash:I,index:E,sighashType:$?65:void 0,witnessUtxo:V});for(let I of U){let E="address"in I&&I.address?I.address:h(j),V=I.script?L?{script:L,value:0}:void 0:{address:E,value:I.value};if(V)_.addOutput(V)}return{inputs:M,psbt:_,utxos:W}}function pZ(X){let Z=X.getAddress(0);return x(Z)}var o,v,qZ,N;var YX=y(()=>{o=require("@psf/bitcoincashjs-lib"),v=require("@swapkit/helpers"),qZ=require("bitcoinjs-lib");p();GX();t();N=v.Chain.BitcoinCash});function DZ(){return k.networks.zcash}function zZ(){return{bech32:void 0,bip32:{private:76066276,public:76067358},messagePrefix:`\x18ZCash Signed Message:
|
|
2
|
-
`,pubKeyHash:28,scriptHash:28,wif:128}}function
|
|
1
|
+
var YZ=Object.create;var{getPrototypeOf:MZ,defineProperty:r,getOwnPropertyNames:VX,getOwnPropertyDescriptor:TZ}=Object,SX=Object.prototype.hasOwnProperty;var m=(X,Z,G)=>{G=X!=null?YZ(MZ(X)):{};let J=Z||!X||!X.__esModule?r(G,"default",{value:X,enumerable:!0}):G;for(let j of VX(X))if(!SX.call(J,j))r(J,j,{get:()=>X[j],enumerable:!0});return J},EX=new WeakMap,CZ=(X)=>{var Z=EX.get(X),G;if(Z)return Z;if(Z=r({},"__esModule",{value:!0}),X&&typeof X==="object"||typeof X==="function")VX(X).map((J)=>!SX.call(Z,J)&&r(Z,J,{get:()=>X[J],enumerable:!(G=TZ(X,J))||G.enumerable}));return EX.set(X,Z),Z};var HZ=(X,Z)=>{for(var G in Z)r(X,G,{get:Z[G],enumerable:!0,configurable:!0,set:(J)=>Z[G]=()=>J})};var y=(X,Z)=>()=>(X&&(Z=X(X=0)),Z);function xX(){function X(){let Z=Date.now(),G=MX||Z;return MX=G,Z>MX?Z:G+1}return vZ+X().toString(36)}function mX(X){return async function(G,J=!0){return(await gX.SwapKitApi.getChainBalance({address:G,chain:X,scamFilter:J})).map(({identifier:$,value:Q,decimal:q})=>{return new JX.AssetValue({decimal:q||JX.BaseDecimal[X],identifier:$,value:Q})})}}var JX,gX,vZ,MX=0;var TX=y(()=>{JX=require("@swapkit/helpers"),gX=require("@swapkit/helpers/api"),vZ=typeof process<"u"&&process.pid?process.pid.toString(36):""});async function IZ({chain:X,txHash:Z}){let G=`${QX(X)}/push/transaction`,J=JSON.stringify({data:Z});try{let j=await Y.RequestClient.post(G,{body:J,headers:{"Content-Type":"application/json"}});if(j.context.code!==200)throw new Y.SwapKitError("toolbox_utxo_broadcast_failed",{error:j.context.error||"Transaction broadcast failed"});return j.data?.transaction_hash||Z}catch(j){let $=await Y.getRPCUrl(X);if($){let Q=JSON.stringify({id:xX(),jsonrpc:"2.0",method:"sendrawtransaction",params:[Z]}),q=await Y.RequestClient.post($,{body:Q,headers:{"Content-Type":"application/json"}});if(q.error)throw new Y.SwapKitError("toolbox_utxo_broadcast_failed",{error:q.error?.message});if(q.result.includes('"code":-26'))throw new Y.SwapKitError("toolbox_utxo_invalid_transaction",{error:"Transaction amount was too low"});return q.result}throw j}}function QX(X){return`https://api.blockchair.com/${_Z(X)}`}function lX(X){switch(X){case Y.Chain.Bitcoin:return 5;case Y.Chain.Dogecoin:return 1e4;case Y.Chain.Litecoin:return 1;case Y.Chain.Zcash:return 1;default:return 2}}function _Z(X){switch(X){case Y.Chain.BitcoinCash:return"bitcoin-cash";case Y.Chain.Litecoin:return"litecoin";case Y.Chain.Dash:return"dash";case Y.Chain.Dogecoin:return"dogecoin";case Y.Chain.Zcash:return"zcash";case Y.Chain.Polkadot:return"polkadot";default:return"bitcoin"}}async function FZ(X){try{let{feePerKb:Z}=await Y.RequestClient.get(`https://app.bitgo.com/api/v2/${X.toLowerCase()}/tx/fee`),G=Z/1000;return Math.max(G,lX(X))}catch(Z){return lX(X)}}async function CX(X,Z){let G=await Y.RequestClient.get(`${X}${Z?`${X.includes("?")?"&":"?"}key=${Z}`:""}`);if(!G||G.context.code!==200)throw new Y.SwapKitError("toolbox_utxo_api_error",{error:`Failed to query ${X}`});return G.data}async function oX({address:X,chain:Z,apiKey:G}){if(!X)throw new Y.SwapKitError("toolbox_utxo_invalid_params",{error:"Address is required"});try{return(await CX(`${QX(Z)}/dashboards/address/${X}?transaction_details=true`,G))[X]}catch(J){return{address:{balance:0,transaction_count:0},utxo:[]}}}async function yZ({address:X,chain:Z,apiKey:G}){return(await oX({address:X,apiKey:G,chain:Z}))?.address.balance||0}async function uX({chain:X,apiKey:Z,txHash:G}){if(!G)throw new Y.SwapKitError("toolbox_utxo_invalid_params",{error:"TxHash is required"});try{return(await CX(`${QX(X)}/raw/transaction/${G}`,Z))?.[G]?.raw_transaction||""}catch(J){return console.error("Failed to fetch raw transaction:",J),""}}async function NZ({chain:X,address:Z,apiKey:G,offset:J=0,limit:j=30}){return(await CX(`${QX(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=${j}&offset=${J}`,G)).map(({is_spent:W,script_hex:D,block_id:L,transaction_hash:z,index:M,value:U,spending_signature_hex:T})=>({hash:z,index:M,is_confirmed:L!==-1,is_spent:W,script_hex:D,txHex:T,value:U}))}function kZ(X){return X.reduce((Z,G)=>Z+G.value,0)}function hX(X,Z){let G=[...X].sort((J,j)=>j.value-J.value);if(Z){let J=[],j=0;for(let $ of G)if(J.push($),j+=$.value,j>=Z)break;return J}return G}async function nX({chain:X,address:Z,apiKey:G,targetValue:J,accumulativeValue:j=0,offset:$=0,limit:Q=30}){if(!Z)throw new Y.SwapKitError("toolbox_utxo_invalid_params",{error:"Address is required"});try{let q=await NZ({address:Z,apiKey:G,chain:X,limit:Q,offset:$,targetValue:J}),D=q.length<Q,L=q.filter(({is_spent:I})=>!I),z=kZ(L),M=j+z,U=J&&M>=J;if(D||U)return hX(L,J);let T=await nX({accumulativeValue:M,address:Z,apiKey:G,chain:X,limit:Q,offset:$+Q,targetValue:J}),_=[...L,...T];return hX(_,J)}catch(q){return console.error("Failed to fetch unspent UTXOs:",q),[]}}async function AZ({address:X,chain:Z,apiKey:G,fetchTxHex:J=!0,targetValue:j}){let $=await nX({address:X,apiKey:G,chain:Z,targetValue:j}),Q=[];for(let{hash:q,index:W,script_hex:D,value:L}of $){let z;if(J)z=await uX({apiKey:G,chain:Z,txHash:q});Q.push({address:X,hash:q,index:W,txHex:z,value:L,witnessUtxo:{script:Buffer.from(D,"hex"),value:L}})}return Q}function OZ(X){let Z=Y.SKConfig.get("apiKeys").blockchair||"";return Y.warnOnce({condition:!Z,id:"no_blockchair_api_key_warning",warning:"No Blockchair API key found. Functionality will be limited."}),{broadcastTx:(G)=>IZ({chain:X,txHash:G}),getAddressData:(G)=>oX({address:G,apiKey:Z,chain:X}),getBalance:(G)=>yZ({address:G,apiKey:Z,chain:X}),getRawTx:(G)=>uX({apiKey:Z,chain:X,txHash:G}),getSuggestedTxFee:()=>FZ(X),getUtxos:(G)=>AZ({...G,apiKey:Z,chain:X})}}function wZ(X){return X}function F(X){let Z=Y.SKConfig.get("apis")[X];if(Z)return Y.warnOnce({condition:!0,id:"custom_utxo_api_warning",warning:"Using custom UTXO API. Be sure to implement all methods to avoid issues."}),Z;return OZ(X)}function A(){return function(Z){switch(Z){case Y.Chain.Bitcoin:return pX.networks.bitcoin;case Y.Chain.BitcoinCash:return l.default.bitcoincash.main.toBitcoinJS();case Y.Chain.Dash:return l.default.dash.main.toBitcoinJS();case Y.Chain.Litecoin:return l.default.litecoin.main.toBitcoinJS();case Y.Chain.Dogecoin:{let G={private:70615956,public:70617039},J=l.default.dogecoin.test;return J.versions.bip32=G,l.default.dogecoin.main.toBitcoinJS()}case Y.Chain.Zcash:return cX.networks.zcash;default:throw new Y.SwapKitError("toolbox_utxo_not_supported",{chain:Z})}}}var cX,Y,pX,l;var rX=y(()=>{cX=require("@bitgo/utxo-lib"),Y=require("@swapkit/helpers"),pX=require("bitcoinjs-lib"),l=m(require("coininfo"));TX()});function FX(X){try{return $X(X),!0}catch(Z){return!1}}function yX(X){return $X(X)?.network}function h(X){let Z=$X(X);if(Z?.format==="legacy")return X;return KZ(Z)}function d(X){let Z=$X(X);return bZ(Z)}function $X(X){try{let Z=PZ(X);if(Z)return Z}catch(Z){}try{let Z=fZ(X);if(Z)return Z}catch(Z){}throw new HX.SwapKitError("toolbox_utxo_invalid_address",{address:X})}function PZ(X){try{let Z=vX.default.decode(X);if(Z.length!==21)throw new HX.SwapKitError("toolbox_utxo_invalid_address",{address:X});let G=Z[0],J=Array.prototype.slice.call(Z,1);switch(G){case C.legacy.mainnet.p2pkh:return{format:"legacy",hash:J,network:"mainnet",type:"p2pkh"};case C.legacy.mainnet.p2sh:return{format:"legacy",hash:J,network:"mainnet",type:"p2sh"};case C.legacy.testnet.p2pkh:return{format:"legacy",hash:J,network:"testnet",type:"p2pkh"};case C.legacy.testnet.p2sh:return{format:"legacy",hash:J,network:"testnet",type:"p2sh"};case C.bitpay.mainnet.p2pkh:return{format:"bitpay",hash:J,network:"mainnet",type:"p2pkh"};case C.bitpay.mainnet.p2sh:return{format:"bitpay",hash:J,network:"mainnet",type:"p2sh"};default:return}}catch(Z){return}}function fZ(X){if(X.indexOf(":")!==-1)try{return dX(X)}catch(Z){}else{let Z=["bitcoincash","bchtest","bchreg"];for(let G of Z)try{return dX(`${G}:${X}`)}catch(J){}}return}function dX(X){try{let{hash:Z,prefix:G,type:J}=IX.default.decode(X);return{format:"cashaddr",hash:Array.prototype.slice.call(Z,0),network:G==="bitcoincash"?"mainnet":"testnet",type:J==="P2PKH"?"p2pkh":"p2sh"}}catch(Z){return}}function KZ(X){let Z=C.legacy[X.network][X.type],G=Buffer.alloc(1+X.hash.length);return G[0]=Z,G.set(X.hash,1),vX.default.encode(G)}function bZ(X){let Z=X.network==="mainnet"?"bitcoincash":"bchtest",G=X.type==="p2pkh"?"P2PKH":"P2SH",J=new Uint8Array(X.hash);return IX.default.encode(Z,G,J)}var HX,vX,IX,_X,C;var iX=y(()=>{HX=require("@swapkit/helpers"),vX=m(require("bs58check")),IX=m(require("cashaddrjs"));((G)=>{G.Mainnet="mainnet";G.Testnet="testnet"})(_X||={});C={["legacy"]:{["mainnet"]:{["p2pkh"]:0,["p2sh"]:5},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}},["bitpay"]:{["mainnet"]:{["p2pkh"]:28,["p2sh"]:40},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}}}});function O(X){let Z=Buffer.from(X,"utf8");return qX.script.compile([qX.opcodes.OP_RETURN,Z])}var sX,qX,RZ=1000,WX=10,aX=10,EZ=41,VZ=107,LX,jX,i,s=(X)=>{if(X.startsWith("bc1")||X.startsWith("tb1")||X.startsWith("ltc1")||X.startsWith("tltc1"))return"P2WPKH";if(X.startsWith("1")||X.startsWith("m")||X.startsWith("n")||X.startsWith("bitcoincash:q")||X.startsWith("bitcoincash:p")||X.startsWith("q")||X.startsWith("p")||X.startsWith("L")||X.startsWith("M")||X.startsWith("3")||X.startsWith("D")||X.startsWith("A")||X.startsWith("9")||X.startsWith("X")||X.startsWith("7")||X.startsWith("y")||X.startsWith("t1")||X.startsWith("t3")||X.startsWith("tm"))return"P2PKH";throw new sX.SwapKitError("toolbox_utxo_invalid_address",{address:X})},c=({inputs:X,outputs:Z,feeRate:G})=>{let J=X[0]&&"address"in X[0]&&X[0].address?s(X[0].address):"P2PKH",j=X.filter((Q)=>Q.value>=jX["type"in Q?Q.type:"P2PKH"]*Math.ceil(G)).reduce((Q,q)=>Q+b(q),0),$=Z?.reduce((Q,q)=>Q+a(q),0)||i[J];return WX+j+$},b=(X)=>{if("type"in X)return jX[X.type];if("address"in X&&X.address)return jX[s(X.address)];return EZ+VZ},a=(X,Z)=>{if(X?.script)return aX+X.script.length+(X.script.length>=74?2:1);if(Z)return i[Z];return i.P2PKH};var NX=y(()=>{sX=require("@swapkit/helpers"),qX=require("bitcoinjs-lib");((G)=>{G.P2PKH="P2PKH";G.P2WPKH="P2WPKH"})(LX||={});jX={["P2PKH"]:148,["P2WPKH"]:68},i={["P2PKH"]:34,["P2WPKH"]:31}});function BX(X){switch(X){case w.Chain.Bitcoin:case w.Chain.BitcoinCash:return 550;case w.Chain.Dash:case w.Chain.Litecoin:return 5500;case w.Chain.Dogecoin:return 1e5;case w.Chain.Zcash:return 546;default:throw new w.SwapKitError("toolbox_utxo_not_supported",{chain:X})}}function P({inputs:X,outputs:Z,feeRate:G=1,chain:J=w.Chain.Bitcoin,changeAddress:j=""}){let $=Math.ceil(G),Q=X[0]&&"address"in X[0]&&X[0].address?s(X[0].address):"P2PKH",q=X.filter((U)=>b(U)*$<=U.value),W=WX+Z.reduce((U,T)=>U+a(T,Q),0),D=Z.reduce((U,T)=>U+T.value,0),L=W*$,z=0,M=[];for(let U of q){let T=b(U),_=$*T;L+=_,z+=U.value,M.push(U);let I=L+D;if(z<I)continue;let E=z-I,V=$*a({address:"",value:0},Q);if(E>V){let bX=V+L,RX=z-(D+bX);if(RX>Math.max(b({})*$,BX(J)))return{fee:bX,inputs:M,outputs:Z.concat({address:j,value:RX})}}return{fee:L,inputs:M,outputs:Z}}return{fee:$*c({feeRate:$,inputs:X,outputs:Z})}}var w;var tX=y(()=>{w=require("@swapkit/helpers");NX()});var p=y(()=>{rX();iX();tX();NX()});function S(X){return X.replace(/(bchtest:|bitcoincash:)/,"")}function R(X){let Z=S(X);return FX(Z)&&yX(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=DX.networks.zcash;try{return DX.address.toOutputScript(X,Z),!0}catch{let G=eX.default.decode(X);if(G.length<21)return!1;let J=G[0];return J===Z.pubKeyHash||J===Z.scriptHash}}catch{return!1}}var DX,eX;var t=y(()=>{DX=require("@bitgo/utxo-lib"),eX=m(require("bs58check"));p()});function GZ({inputs:X,outputs:Z,chain:G,psbt:J,sender:j,compiledMemo:$}){for(let Q of X){let q=!!Q.witnessUtxo&&!e.includes(G)&&{witnessUtxo:Q.witnessUtxo},W=e.includes(G)&&{nonWitnessUtxo:Q.txHex?Buffer.from(Q.txHex,"hex"):void 0};J.addInput({hash:Q.hash,index:Q.index,...q,...W})}for(let Q of Z){let q="address"in Q&&Q.address?Q.address:j,W=Q.script;if(W&&!$)continue;let D=W?{script:$,value:0}:{address:q,value:Q.value};f.initEccLib(zX.default),J.addOutput(D)}return{inputs:X,psbt:J}}async function JZ({assetValue:X,recipient:Z,memo:G,feeRate:J,sender:j,fetchTxHex:$=!1}){let Q=X.chain,q=G?await O(G):null,W=await jZ({assetValue:X,fetchTxHex:$,memo:G,recipient:Z,sender:j}),{inputs:D,outputs:L}=P({...W,chain:Q,feeRate:J});if(!(D&&L))throw new B.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue:X,sender:j});let z=await A(),M=new f.Psbt({network:z(Q)});if(Q===B.Chain.Dogecoin)M.setMaximumFeeRate(650000000);let{psbt:U,inputs:T}=await GZ({chain:Q,compiledMemo:q,inputs:D,outputs:L,psbt:M,sender:j});return{inputs:T,psbt:U,utxos:W.inputs}}async function QZ(){let X=await A();return function({address:G,chain:J}){if(J===B.Chain.BitcoinCash)return R(G);if(J===B.Chain.Zcash)return o(G);try{return f.initEccLib(zX.default),f.address.toOutputScript(G,X(J)),!0}catch(j){return!1}}}async function SZ({chain:X,phrase:Z,derivationPath:G}){let J=(await XX(X))({derivationPath:G,phrase:Z});async function j(Q){return await Q.signAllInputs(J),Q}async function $(){return(await AX(X))(J)}return{getAddress:$,signTransaction:j}}async function g({chain:X,...Z}){let G="phrase"in Z?Z.phrase:void 0,J="index"in Z?Z.index||0:0,j=B.derivationPathToString("derivationPath"in Z&&Z.derivationPath?Z.derivationPath:B.updateDerivationPath(B.NetworkDerivationPath[X],{index:J})),$=G?await SZ({chain:X,derivationPath:j,phrase:G}):("signer"in Z)?Z.signer:void 0;function Q(){return Promise.resolve($?.getAddress())}let q=await AX(X),W=await QZ(),D=await XX(X);return{accumulative:P,broadcastTx:(L)=>F(X).broadcastTx(L),calculateTxSize:c,createKeysForPath:D,createTransaction:JZ,estimateMaxSendableAmount:gZ(X),estimateTransactionFee:xZ(X),getAddress:Q,getAddressFromKeys:q,getBalance:mX(X),getFeeRates:()=>ZX(X),getInputsOutputsFee:$Z,getPrivateKeyFromMnemonic:(L)=>{return D(L).toWIF()},transfer:mZ($),validateAddress:(L)=>W({address:L,chain:X})}}async function $Z({assetValue:X,feeOptionKey:Z=B.FeeOption.Fast,feeRate:G,memo:J,sender:j,recipient:$}){let Q=X.chain,q=await jZ({assetValue:X,memo:J,recipient:$,sender:j}),W=G?Math.floor(G):(await ZX(Q))[Z];return P({...q,chain:Q,feeRate:W})}function gZ(X){return async function({from:G,memo:J,feeRate:j,feeOptionKey:$=B.FeeOption.Fast,recipients:Q=1}){let q=await F(X).getAddressData(G),W=j?Math.ceil(j):(await ZX(X))[$],D=q?.utxo.map((T)=>({...T,hash:"",type:"P2PKH"})).filter((T)=>T.value>Math.max(BX(X),b(T)*W));if(!D?.length)return B.AssetValue.from({chain:X});let L=B.AssetValue.from({chain:X,value:D.reduce((T,_)=>T+_.value,0)}),z=typeof Q==="number"?Array.from({length:Q},()=>({address:G,value:0})):Q;if(J){let T=await O(J);z.push({address:G,script:T,value:0})}let U=c({feeRate:W,inputs:D,outputs:z})*W;return L.sub(U)}}function xZ(X){return async(Z)=>{let G=await $Z(Z);return B.AssetValue.from({chain:X,value:B.SwapKitNumber.fromBigInt(BigInt(G.fee),8).getValue("string")})}}async function XX(X){let Z=await A();switch(X){case B.Chain.BitcoinCash:return function({phrase:J,derivationPath:j=`${B.DerivationPath.BCH}/0`,wif:$}){let Q=Z(X);if($)return UX.ECPair.fromWIF($,Q);if(!J)throw new B.SwapKitError("toolbox_utxo_invalid_params",{error:"No phrase provided"});return UX.HDNode.fromSeedBuffer(Buffer.from(kX.mnemonicToSeedSync(J)),Q).derivePath(j).keyPair};case B.Chain.Bitcoin:case B.Chain.Dogecoin:case B.Chain.Litecoin:case B.Chain.Zcash:case B.Chain.Dash:return function({phrase:J,wif:j,derivationPath:$}){if(!(j||J))throw new B.SwapKitError("toolbox_utxo_invalid_params",{error:"Either phrase or wif must be provided"});let Q=ZZ.ECPairFactory(zX.default),q=Z(X);if(j)return Q.fromWIF(j,q);let W=kX.mnemonicToSeedSync(J),D=XZ.HDKey.fromMasterSeed(W,q).derive($);if(!D.privateKey)throw new B.SwapKitError("toolbox_utxo_invalid_params",{error:"Could not get private key from phrase"});return Q.fromPrivateKey(Buffer.from(D.privateKey),{network:q})};default:throw new B.SwapKitError("toolbox_utxo_not_supported",{chain:X})}}async function AX(X){let Z=await A();return function(J){if(!J)throw new B.SwapKitError("toolbox_utxo_invalid_params",{error:"Keys must be provided"});let j=e.includes(X)?f.payments.p2pkh:f.payments.p2wpkh,{address:$}=j({network:Z(X),pubkey:J.publicKey});if(!$)throw new B.SwapKitError("toolbox_utxo_invalid_address",{error:"Address not defined"});return $}}function mZ(X){return async function({memo:G,recipient:J,feeOptionKey:j,feeRate:$,assetValue:Q}){let q=await X?.getAddress(),W=Q.chain;if(!(X&&q))throw new B.SwapKitError("toolbox_utxo_no_signer");if(!J)throw new B.SwapKitError("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});let D=$||(await ZX(W))[j||B.FeeOption.Fast],{psbt:L}=await JZ({assetValue:Q,feeRate:D,memo:G,recipient:J,sender:q}),z=await X.signTransaction(L);return z.finalizeAllInputs(),F(W).broadcastTx(z.extractTransaction().toHex())}}async function ZX(X){let Z=await F(X).getSuggestedTxFee();return{[B.FeeOption.Average]:Z,[B.FeeOption.Fast]:B.applyFeeMultiplier(Z,B.FeeOption.Fast),[B.FeeOption.Fastest]:B.applyFeeMultiplier(Z,B.FeeOption.Fastest)}}async function jZ({assetValue:X,recipient:Z,memo:G,sender:J,fetchTxHex:j=!1}){let $=X.chain,Q=(await ZX($))[B.FeeOption.Fastest],q=j||e.includes($),W=X.getBaseValue("number"),D=Math.ceil(W+Q*5000);return{inputs:await F($).getUtxos({address:J,fetchTxHex:q,targetValue:D}),outputs:[{address:Z,value:W},...G?[{address:"",script:await O(G),value:0}]:[]]}}var zX,UX,XZ,kX,B,f,ZZ,e;var GX=y(()=>{zX=m(require("@bitcoinerlab/secp256k1")),UX=require("@psf/bitcoincashjs-lib"),XZ=require("@scure/bip32"),kX=require("@scure/bip39"),B=require("@swapkit/helpers"),f=require("bitcoinjs-lib"),ZZ=require("ecpair");TX();p();t();e=[B.Chain.Dash,B.Chain.Dogecoin,B.Chain.Zcash,B.Chain.BitcoinCash]});function x(X){return S(d(X))}function lZ(X){function Z({builder:J,utxos:j}){return j.forEach(($,Q)=>{J.sign(Q,X,void 0,65,$.witnessUtxo?.value)}),J.build()}return{getAddress:()=>{let J=X.getAddress(0);return Promise.resolve(x(J))},signTransaction:Z}}async function OX(X){let Z="phrase"in X?X.phrase:void 0,G="index"in X?X.index||0:0,J=v.derivationPathToString("derivationPath"in X&&X.derivationPath?X.derivationPath:v.updateDerivationPath(v.NetworkDerivationPath[N],{index:G})),j=Z?(await XX(N))({derivationPath:J,phrase:Z}):void 0,$=j?lZ(j):("signer"in X)?X.signer:void 0;function Q(){return Promise.resolve($?.getAddress())}let{getBalance:q,getFeeRates:W,broadcastTx:D,...L}=await g({chain:N});function z(M,U=!0){return q(S(d(M)))}return{...L,broadcastTx:D,buildTx:cZ,createTransaction:WZ,getAddress:Q,getAddressFromKeys:pZ,getBalance:z,getFeeRates:W,stripPrefix:S,stripToCashAddress:x,transfer:hZ({broadcastTx:D,getFeeRates:W,signer:$}),validateAddress:R}}async function WZ({assetValue:X,recipient:Z,memo:G,feeRate:J,sender:j}){if(!R(Z))throw new v.SwapKitError("toolbox_utxo_invalid_address",{address:Z});let $=Math.ceil(X.getBaseValue("number")+J*7500),Q=await F(N).getUtxos({address:x(j),fetchTxHex:!0,targetValue:$}),q=G?await O(G):null,W=[];W.push({address:Z,value:X.getBaseValue("number")});let{inputs:D,outputs:L}=P({chain:N,feeRate:J,inputs:Q,outputs:W});if(!(D&&L))throw new v.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue:X,sender:j});let z=await A(),M=new u.TransactionBuilder(z(N));await Promise.all(D.map(async(U)=>{let T=await F(N).getRawTx(U.hash);M.addInput(u.Transaction.fromBuffer(Buffer.from(T,"hex")),U.index)}));for(let U of L){let T="address"in U&&U.address?U.address:h(j),_=await A(),I=u.address.toOutputScript(h(T),_(N));M.addOutput(I,U.value)}if(q)M.addOutput(q,0);return{builder:M,utxos:D}}function hZ({broadcastTx:X,getFeeRates:Z,signer:G}){return async function({recipient:j,assetValue:$,feeOptionKey:Q=v.FeeOption.Fast,...q}){let W=await G?.getAddress();if(!(G&&W))throw new v.SwapKitError("toolbox_utxo_no_signer");if(!j)throw new v.SwapKitError("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});let D=q.feeRate||(await Z())[Q],{builder:L,utxos:z}=await WZ({...q,assetValue:$,feeRate:D,recipient:j,sender:W}),U=(await G.signTransaction({builder:L,utxos:z})).toHex();return X(U)}}async function cZ({assetValue:X,recipient:Z,memo:G,feeRate:J,sender:j,setSigHashType:$}){let Q=d(Z);if(!R(Q))throw new v.SwapKitError("toolbox_utxo_invalid_address",{address:Q});let q=Math.ceil(X.getBaseValue("number")+J*7500),W=await F(N).getUtxos({address:x(j),fetchTxHex:!1,targetValue:q}),D=Number(J.toFixed(0)),L=G?await O(G):null,z=[];if(z.push({address:h(Z),value:X.getBaseValue("number")}),L)z.push({script:L,value:0});let{inputs:M,outputs:U}=P({chain:N,feeRate:D,inputs:W,outputs:z});if(!(M&&U))throw new v.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue:X,sender:j});let T=await A(),_=new qZ.Psbt({network:T(N)});for(let{hash:I,index:E,witnessUtxo:V}of M)_.addInput({hash:I,index:E,sighashType:$?65:void 0,witnessUtxo:V});for(let I of U){let E="address"in I&&I.address?I.address:h(j),V=I.script?L?{script:L,value:0}:void 0:{address:E,value:I.value};if(V)_.addOutput(V)}return{inputs:M,psbt:_,utxos:W}}function pZ(X){let Z=X.getAddress(0);return x(Z)}var u,v,qZ,N;var YX=y(()=>{u=require("@psf/bitcoincashjs-lib"),v=require("@swapkit/helpers"),qZ=require("bitcoinjs-lib");p();GX();t();N=v.Chain.BitcoinCash});function DZ(){return k.networks.zcash}function zZ(){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 G=PX.mnemonicToSeedSync(X),j=wX.HDKey.fromMasterSeed(G).derive(Z);if(!j.privateKey)throw new H.SwapKitError("toolbox_utxo_invalid_params");let $=zZ(),Q=k.ECPair.fromPrivateKey(Buffer.from(j.privateKey),{network:$}),q=k.crypto.hash160(Q.publicKey),{isStagenet:W}=H.SKConfig.get("envs"),D=W?Buffer.from([29,37]):Buffer.from([28,184]),L=Buffer.concat([D,q]),z=BZ.default.encode(L);return{getAddress:()=>Promise.resolve(z),signTransaction:(M)=>{let U=M.signAllInputs(Q);return Promise.resolve(U)}}}function uZ({inputs:X,outputs:Z,psbt:G,sender:J,compiledMemo:j}){for(let $ of X){let Q=!!$.witnessUtxo&&{witnessUtxo:{...$.witnessUtxo,value:BigInt($.value)}},q=!$.witnessUtxo&&{nonWitnessUtxo:$.txHex?Buffer.from($.txHex,"hex"):void 0};G.addInput({hash:$.hash,index:$.index,...Q,...q})}for(let $ of Z){let Q="address"in $&&$.address?$.address:J,q=$.script;if(q&&!j)continue;let W=q?{script:j,value:0n}:{script:k.address.toOutputScript(Q,DZ()),value:BigInt($.value)};G.addOutput(W)}return{inputs:X,psbt:G}}async function LZ(X){let{assetValue:Z,recipient:G,memo:J,feeRate:j,sender:$,fetchTxHex:Q}=X,q=J?O(J):null,W=await F(H.Chain.Zcash).getUtxos({address:$,fetchTxHex:Q!==!1}),D=[{address:G,value:Number(Z.getBaseValue("string"))},...q?[{script:q,value:0}]:[]],{inputs:L,outputs:z}=P({chain:H.Chain.Zcash,changeAddress:$,feeRate:j,inputs:W,outputs:D});if(!(L&&z))throw new H.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue:Z,sender:$});let M=k.bitgo.createPsbtForNetwork({network:DZ()},{version:455});M.setVersion(4,!0);let U=Buffer.concat([Buffer.of(252),Buffer.of(5),Buffer.from("BITGO"),Buffer.of(0)]),T=3370586197,_=Buffer.allocUnsafe(4);_.writeUInt32LE(T>>>0,0),M.addUnknownKeyValToGlobal({key:U,value:_});let{psbt:I,inputs:E}=await uZ({compiledMemo:q,inputs:L,outputs:z,psbt:M,sender:$});return{inputs:E,outputs:z,psbt:I}}async function fX(X){let Z=await n.match(X).with({signer:n.P.not(n.P.nullish)},({signer:Q})=>Promise.resolve(Q)).with({phrase:n.P.string},({phrase:Q,derivationPath:q,index:W=0})=>{let D=q||H.NetworkDerivationPath[H.Chain.Zcash]||[44,133,0,0,0],L=H.updateDerivationPath(D,{index:W}),z=H.derivationPathToString(L);return oZ({derivationPath:z,phrase:Q})}).otherwise(()=>Promise.resolve(void 0)),G=await g({chain:H.Chain.Zcash,signer:Z});async function J({recipient:Q,assetValue:q,feeOptionKey:W=H.FeeOption.Fast,...D}){let L=await Z?.getAddress();if(!(Z&&L))throw new H.SwapKitError("toolbox_utxo_no_signer");let z=D.feeRate||(await G.getFeeRates())[W],{psbt:M}=await LZ({...D,assetValue:q,feeRate:z,recipient:Q,sender:L}),U=await Z.signTransaction(M);return U.finalizeAllInputs(),G.broadcastTx(U.extractTransaction().toHex())}function j({phrase:Q,derivationPath:q="m/44'/133'/0'/0/0"}){let W=PX.mnemonicToSeedSync(Q),L=wX.HDKey.fromMasterSeed(W).derive(q);if(!L.privateKey)throw new H.SwapKitError("toolbox_utxo_invalid_params");let z=zZ();return k.ECPair.fromPrivateKey(Buffer.from(L.privateKey),{network:z})}function $({phrase:Q,derivationPath:q="m/44'/133'/0'/0/0"}){return j({derivationPath:q,phrase:Q}).toWIF()}return{...G,createKeysForPath:j,createTransaction:LZ,getPrivateKeyFromMnemonic:$,transfer:J,validateAddress:o}}var k,wX,PX,H,BZ,n;var KX=y(()=>{k=require("@bitgo/utxo-lib"),wX=require("@scure/bip32"),PX=require("@scure/bip39"),H=require("@swapkit/helpers"),BZ=m(require("bs58check")),n=require("ts-pattern");p();GX();t()});async function nZ(X,Z){switch(X){case K.Chain.BitcoinCash:return await OX(Z||{});case K.Chain.Zcash:return await fX(Z);case K.Chain.Bitcoin:case K.Chain.Dogecoin:case K.Chain.Litecoin:case K.Chain.Dash:return await g({chain:X,...Z});default:throw new K.SwapKitError("toolbox_utxo_not_supported",{chain:X})}}var K;var UZ=y(()=>{K=require("@swapkit/helpers");YX();GX();KX();YX();t()});var dZ={};HZ(dZ,{validateZcashAddress:()=>o,toLegacyAddress:()=>h,toCashAddress:()=>d,stripToCashAddress:()=>x,stripPrefix:()=>S,nonSegwitChains:()=>e,isValidAddress:()=>FX,getUtxoToolbox:()=>nZ,getUtxoNetwork:()=>A,getUtxoApi:()=>F,getUTXOAddressValidator:()=>QZ,getScriptTypeForAddress:()=>s,getOutputSize:()=>a,getInputSize:()=>b,getDustThreshold:()=>BX,getCreateKeysForPath:()=>XX,detectAddressNetwork:()=>yX,createZcashToolbox:()=>fX,createUTXOToolbox:()=>g,createCustomUtxoApi:()=>wZ,createBCHToolbox:()=>OX,compileMemo:()=>O,calculateTxSize:()=>c,bchValidateAddress:()=>R,addressFromKeysGetter:()=>AX,addInputsAndOutputs:()=>GZ,accumulative:()=>P,UtxoNetwork:()=>_X,UTXOScriptType:()=>LX,TX_OVERHEAD:()=>WX,OutputSizes:()=>i,OP_RETURN_OVERHEAD:()=>aX,MIN_TX_FEE:()=>RZ,InputSizes:()=>jX});module.exports=CZ(dZ);var iZ=y(()=>{p();UZ();YX();GX();KX()});iZ();
|
|
3
3
|
|
|
4
|
-
//# debugId=
|
|
4
|
+
//# debugId=4886E07121B14E7564756E2164756E21
|
|
5
5
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -9,13 +9,13 @@
|
|
|
9
9
|
"import { Chain, SwapKitError, type UTXOChain } from \"@swapkit/helpers\";\n\nimport {\n calculateTxSize,\n getInputSize,\n getOutputSize,\n getScriptTypeForAddress,\n TX_OVERHEAD,\n UTXOScriptType,\n} from \"../helpers/txSize\";\nimport type { TargetOutput, UTXOCalculateTxSizeParams, UTXOType } from \"../types\";\n\nexport function getDustThreshold(chain: UTXOChain) {\n switch (chain) {\n case Chain.Bitcoin:\n case Chain.BitcoinCash:\n return 550;\n case Chain.Dash:\n case Chain.Litecoin:\n return 5500;\n case Chain.Dogecoin:\n return 100000;\n case Chain.Zcash:\n return 546;\n default:\n throw new SwapKitError(\"toolbox_utxo_not_supported\", { chain });\n }\n}\n\nexport function accumulative({\n inputs,\n outputs,\n feeRate: initialFeeRate = 1,\n chain = Chain.Bitcoin,\n changeAddress = \"\",\n}: UTXOCalculateTxSizeParams & { outputs: TargetOutput[]; chain: UTXOChain; changeAddress?: string }) {\n const feeRate = Math.ceil(initialFeeRate);\n\n const newTxType =\n inputs[0] && \"address\" in inputs[0] && inputs[0].address\n ? getScriptTypeForAddress(inputs[0].address)\n : UTXOScriptType.P2PKH;\n // skip input if adding it would cost more than input is worth\n const filteredInputs = inputs.filter((input) => getInputSize(input) * feeRate <= input.value);\n\n const txSizeWithoutInputs =\n TX_OVERHEAD + outputs.reduce((total, output) => total + getOutputSize(output, newTxType), 0);\n\n const amountToSend = outputs.reduce((total, output) => total + output.value, 0);\n\n let fees = txSizeWithoutInputs * feeRate;\n let inputsValue = 0;\n const inputsToUse: typeof inputs = [];\n\n for (const input of filteredInputs) {\n const inputSize = getInputSize(input);\n const inputFee = feeRate * inputSize;\n\n fees += inputFee;\n inputsValue += input.value;\n\n inputsToUse.push(input);\n\n const totalCost = fees + amountToSend;\n\n // we need more inputs\n if (inputsValue < totalCost) continue;\n\n const remainder = inputsValue - totalCost;\n\n const feeForExtraOutput = feeRate * getOutputSize({ address: \"\", value: 0 }, newTxType);\n\n // potential change address\n if (remainder > feeForExtraOutput) {\n const feeAfterExtraOutput = feeForExtraOutput + fees;\n const remainderAfterExtraOutput = inputsValue - (amountToSend + feeAfterExtraOutput);\n\n // is it worth a change output aka can we send it in the future?\n if (remainderAfterExtraOutput > Math.max(getInputSize({} as UTXOType) * feeRate, getDustThreshold(chain))) {\n return {\n fee: feeAfterExtraOutput,\n inputs: inputsToUse,\n outputs: outputs.concat({ address: changeAddress, value: remainderAfterExtraOutput }),\n };\n }\n }\n return { fee: fees, inputs: inputsToUse, outputs };\n }\n\n // We don't have enough inputs, let's calculate transaction fee accrude to the last input\n return { fee: feeRate * calculateTxSize({ feeRate, inputs, outputs }) };\n}\n",
|
|
10
10
|
"export * from \"./api\";\nexport * from \"./bchaddrjs\";\nexport * from \"./coinselect\";\nexport * from \"./txSize\";\n",
|
|
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
|
-
"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 \"./index\";\nimport { bchValidateAddress, validateZcashAddress } from \"./validators\";\n\nexport const nonSegwitChains = [Chain.Dash, Chain.Dogecoin];\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 (_error) {\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 Chain.Bitcoin))({ derivationPath, phrase });\n\n async function signTransaction(psbt: Psbt) {\n await psbt.signAllInputs(keyPair);\n return psbt;\n }\n\n async function getAddress() {\n const addressGetter = await 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 getAddressFromKeys = await addressFromKeysGetter(chain);\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,\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 async function addressFromKeysGetter(chain: UTXOChain) {\n const getNetwork = await 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",
|
|
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 \"./index\";\nimport { bchValidateAddress, validateZcashAddress } from \"./validators\";\n\nexport const nonSegwitChains = [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 (_error) {\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 Chain.Bitcoin))({ derivationPath, phrase });\n\n async function signTransaction(psbt: Psbt) {\n await psbt.signAllInputs(keyPair);\n return psbt;\n }\n\n async function getAddress() {\n const addressGetter = await 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 getAddressFromKeys = await addressFromKeysGetter(chain);\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,\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 async function addressFromKeysGetter(chain: UTXOChain) {\n const getNetwork = await 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 \"./index\";\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 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
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 psbt.setVersion(4, true);\n\n const CONSENSUS_BRANCH_ID_KEY = Buffer.concat([Buffer.of(0xfc), Buffer.of(0x05), Buffer.from(\"BITGO\"), Buffer.of(0)]);\n\n // NU6 branch id (decimal 3370586197 = 0xC8E71055)\n const branchId = 0xc8e71055;\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 type { ZcashPsbt } from \"@bitgo/utxo-lib/dist/src/bitgo\";\nimport { Chain, type ChainSigner, type DerivationPathArray, SwapKitError, type UTXOChain } from \"@swapkit/helpers\";\nimport type { Psbt } from \"bitcoinjs-lib\";\nimport type { TransactionBuilderType, TransactionType, UTXOType } from \"../types\";\nimport { createBCHToolbox } from \"./bitcoinCash\";\nimport { createUTXOToolbox } from \"./utxo\";\nimport { createZcashToolbox } from \"./zcash\";\n\ntype BCHToolbox = Awaited<ReturnType<typeof createBCHToolbox>>;\ntype CommonUTXOToolbox = Awaited<\n ReturnType<typeof createUTXOToolbox<Exclude<UTXOChain, Chain.BitcoinCash | 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 type UtxoToolboxParams = {\n [Chain.BitcoinCash]: { signer: ChainSigner<{ builder: TransactionBuilderType; utxos: UTXOType[] }, TransactionType> };\n [Chain.Bitcoin]: { signer: ChainSigner<Psbt, Psbt> };\n [Chain.Dogecoin]: { signer: ChainSigner<Psbt, Psbt> };\n [Chain.Litecoin]: { signer: ChainSigner<Psbt, Psbt> };\n [Chain.Dash]: { signer: ChainSigner<Psbt, Psbt> };\n [Chain.Zcash]: { signer?: ChainSigner<ZcashPsbt, ZcashPsbt> };\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[Chain.BitcoinCash]) || {});\n return toolbox as UTXOToolboxes[T];\n }\n\n case Chain.Zcash: {\n const toolbox = await createZcashToolbox(params as UtxoToolboxParams[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, Chain.BitcoinCash | Chain.Zcash>]),\n });\n return toolbox as UTXOToolboxes[Exclude<T, Chain.BitcoinCash | Chain.Zcash>];\n }\n\n default:\n throw new SwapKitError(\"toolbox_utxo_not_supported\", { chain });\n }\n}\n\nexport { stripToCashAddress } from \"./bitcoinCash\";\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": "4886E07121B14E7564756E2164756E21",
|
|
20
20
|
"names": []
|
|
21
21
|
}
|
package/dist/src/utxo/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
var jZ=Object.create;var{getPrototypeOf:qZ,defineProperty:LX,getOwnPropertyNames:WZ}=Object;var LZ=Object.prototype.hasOwnProperty;var R1=(X,Z,G)=>{G=X!=null?jZ(qZ(X)):{};let J=Z||!X||!X.__esModule?LX(G,"default",{value:X,enumerable:!0}):G;for(let j of WZ(X))if(!LZ.call(J,j))LX(J,j,{get:()=>X[j],enumerable:!0});return J};var BZ=(X,Z)=>{for(var G in Z)LX(X,G,{get:Z[G],enumerable:!0,configurable:!0,set:(J)=>Z[G]=()=>J})};var I=(X,Z)=>()=>(X&&(Z=X(X=0)),Z);var E1=((X)=>typeof require!=="undefined"?require:typeof Proxy!=="undefined"?new Proxy(X,{get:(Z,G)=>(typeof require!=="undefined"?require:Z)[G]}):X)(function(X){if(typeof require!=="undefined")return require.apply(this,arguments);throw Error('Dynamic require of "'+X+'" is not supported')});import{AssetValue as DZ,BaseDecimal as zZ}from"@swapkit/helpers";import{SwapKitApi as UZ}from"@swapkit/helpers/api";function AX(){function X(){let Z=Date.now(),G=BX||Z;return BX=G,Z>BX?Z:G+1}return YZ+X().toString(36)}function OX(X){return async function Z(G,J=!0){return(await UZ.getChainBalance({address:G,chain:X,scamFilter:J})).map(({identifier:$,value:Q,decimal:q})=>{return new DZ({decimal:q||zZ[X],identifier:$,value:Q})})}}var YZ,BX=0;var DX=I(()=>{YZ=typeof process!=="undefined"&&process.pid?process.pid.toString(36):""});import{networks as MZ}from"@bitgo/utxo-lib";import{Chain as C,getRPCUrl as TZ,RequestClient as e,SKConfig as fX,SwapKitError as w,warnOnce as KX}from"@swapkit/helpers";import{networks as CZ}from"bitcoinjs-lib";import p from"coininfo";async function HZ({chain:X,txHash:Z}){let G=`${XX(X)}/push/transaction`,J=JSON.stringify({data:Z});try{let j=await e.post(G,{body:J,headers:{"Content-Type":"application/json"}});if(j.context.code!==200)throw new w("toolbox_utxo_broadcast_failed",{error:j.context.error||"Transaction broadcast failed"});return j.data?.transaction_hash||Z}catch(j){let $=await TZ(X);if($){let Q=JSON.stringify({id:AX(),jsonrpc:"2.0",method:"sendrawtransaction",params:[Z]}),q=await e.post($,{body:Q,headers:{"Content-Type":"application/json"}});if(q.error)throw new w("toolbox_utxo_broadcast_failed",{error:q.error?.message});if(q.result.includes('"code":-26'))throw new w("toolbox_utxo_invalid_transaction",{error:"Transaction amount was too low"});return q.result}throw j}}function XX(X){return`https://api.blockchair.com/${vZ(X)}`}function wX(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 vZ(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 IZ(X){try{let{feePerKb:Z}=await e.get(`https://app.bitgo.com/api/v2/${X.toLowerCase()}/tx/fee`),G=Z/1000;return Math.max(G,wX(X))}catch(Z){return wX(X)}}async function zX(X,Z){let G=await e.get(`${X}${Z?`${X.includes("?")?"&":"?"}key=${Z}`:""}`);if(!G||G.context.code!==200)throw new w("toolbox_utxo_api_error",{error:`Failed to query ${X}`});return G.data}async function bX({address:X,chain:Z,apiKey:G}){if(!X)throw new w("toolbox_utxo_invalid_params",{error:"Address is required"});try{return(await zX(`${XX(Z)}/dashboards/address/${X}?transaction_details=true`,G))[X]}catch(J){return{address:{balance:0,transaction_count:0},utxo:[]}}}async function _Z({address:X,chain:Z,apiKey:G}){return(await bX({address:X,apiKey:G,chain:Z}))?.address.balance||0}async function RX({chain:X,apiKey:Z,txHash:G}){if(!G)throw new w("toolbox_utxo_invalid_params",{error:"TxHash is required"});try{return(await zX(`${XX(X)}/raw/transaction/${G}`,Z))?.[G]?.raw_transaction||""}catch(J){return console.error("Failed to fetch raw transaction:",J),""}}async function FZ({chain:X,address:Z,apiKey:G,offset:J=0,limit:j=30}){return(await zX(`${XX(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=${j}&offset=${J}`,G)).map(({is_spent:W,script_hex:B,block_id:L,transaction_hash:D,index:U,value:z,spending_signature_hex:Y})=>({hash:D,index:U,is_confirmed:L!==-1,is_spent:W,script_hex:B,txHex:Y,value:z}))}function yZ(X){return X.reduce((Z,G)=>Z+G.value,0)}function PX(X,Z){let G=[...X].sort((J,j)=>j.value-J.value);if(Z){let J=[],j=0;for(let $ of G)if(J.push($),j+=$.value,j>=Z)break;return J}return G}async function EX({chain:X,address:Z,apiKey:G,targetValue:J,accumulativeValue:j=0,offset:$=0,limit:Q=30}){if(!Z)throw new w("toolbox_utxo_invalid_params",{error:"Address is required"});try{let q=await FZ({address:Z,apiKey:G,chain:X,limit:Q,offset:$,targetValue:J}),B=q.length<Q,L=q.filter(({is_spent:T})=>!T),D=yZ(L),U=j+D,z=J&&U>=J;if(B||z)return PX(L,J);let Y=await EX({accumulativeValue:U,address:Z,apiKey:G,chain:X,limit:Q,offset:$+Q,targetValue:J}),H=[...L,...Y];return PX(H,J)}catch(q){return console.error("Failed to fetch unspent UTXOs:",q),[]}}async function NZ({address:X,chain:Z,apiKey:G,fetchTxHex:J=!0,targetValue:j}){let $=await EX({address:X,apiKey:G,chain:Z,targetValue:j}),Q=[];for(let{hash:q,index:W,script_hex:B,value:L}of $){let D;if(J)D=await RX({apiKey:G,chain:Z,txHash:q});Q.push({address:X,hash:q,index:W,txHex:D,value:L,witnessUtxo:{script:Buffer.from(B,"hex"),value:L}})}return Q}function kZ(X){let Z=fX.get("apiKeys").blockchair||"";return KX({condition:!Z,id:"no_blockchair_api_key_warning",warning:"No Blockchair API key found. Functionality will be limited."}),{broadcastTx:(G)=>HZ({chain:X,txHash:G}),getAddressData:(G)=>bX({address:G,apiKey:Z,chain:X}),getBalance:(G)=>_Z({address:G,apiKey:Z,chain:X}),getRawTx:(G)=>RX({apiKey:Z,chain:X,txHash:G}),getSuggestedTxFee:()=>IZ(X),getUtxos:(G)=>NZ({...G,apiKey:Z,chain:X})}}function AZ(X){return X}function v(X){let Z=fX.get("apis")[X];if(Z)return KX({condition:!0,id:"custom_utxo_api_warning",warning:"Using custom UTXO API. Be sure to implement all methods to avoid issues."}),Z;return kZ(X)}function y(){return function X(Z){switch(Z){case C.Bitcoin:return CZ.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 G={private:70615956,public:70617039},J=p.dogecoin.test;return J.versions.bip32=G,p.dogecoin.main.toBitcoinJS()}case C.Zcash:return MZ.zcash;default:throw new w("toolbox_utxo_not_supported",{chain:Z})}}}var VX=I(()=>{DX()});import{SwapKitError as gX}from"@swapkit/helpers";import xX from"bs58check";import mX from"cashaddrjs";function YX(X){try{return ZX(X),!0}catch(Z){return!1}}function MX(X){return ZX(X)?.network}function g(X){let Z=ZX(X);if(Z?.format==="legacy")return X;return PZ(Z)}function n(X){let Z=ZX(X);return fZ(Z)}function ZX(X){try{let Z=OZ(X);if(Z)return Z}catch(Z){}try{let Z=wZ(X);if(Z)return Z}catch(Z){}throw new gX("toolbox_utxo_invalid_address",{address:X})}function OZ(X){try{let Z=xX.decode(X);if(Z.length!==21)throw new gX("toolbox_utxo_invalid_address",{address:X});let G=Z[0],J=Array.prototype.slice.call(Z,1);switch(G){case M.legacy.mainnet.p2pkh:return{format:"legacy",hash:J,network:"mainnet",type:"p2pkh"};case M.legacy.mainnet.p2sh:return{format:"legacy",hash:J,network:"mainnet",type:"p2sh"};case M.legacy.testnet.p2pkh:return{format:"legacy",hash:J,network:"testnet",type:"p2pkh"};case M.legacy.testnet.p2sh:return{format:"legacy",hash:J,network:"testnet",type:"p2sh"};case M.bitpay.mainnet.p2pkh:return{format:"bitpay",hash:J,network:"mainnet",type:"p2pkh"};case M.bitpay.mainnet.p2sh:return{format:"bitpay",hash:J,network:"mainnet",type:"p2sh"};default:return}}catch(Z){return}}function wZ(X){if(X.indexOf(":")!==-1)try{return SX(X)}catch(Z){}else{let Z=["bitcoincash","bchtest","bchreg"];for(let G of Z)try{return SX(`${G}:${X}`)}catch(J){}}return}function SX(X){try{let{hash:Z,prefix:G,type:J}=mX.decode(X);return{format:"cashaddr",hash:Array.prototype.slice.call(Z,0),network:G==="bitcoincash"?"mainnet":"testnet",type:J==="P2PKH"?"p2pkh":"p2sh"}}catch(Z){return}}function PZ(X){let Z=M.legacy[X.network][X.type],G=Buffer.alloc(1+X.hash.length);return G[0]=Z,G.set(X.hash,1),xX.encode(G)}function fZ(X){let Z=X.network==="mainnet"?"bitcoincash":"bchtest",G=X.type==="p2pkh"?"P2PKH":"P2SH",J=new Uint8Array(X.hash);return mX.encode(Z,G,J)}var UX,M;var lX=I(()=>{((G)=>{G.Mainnet="mainnet";G.Testnet="testnet"})(UX||={});M={["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 KZ}from"@swapkit/helpers";import{opcodes as bZ,script as RZ}from"bitcoinjs-lib";function N(X){let Z=Buffer.from(X,"utf8");return RZ.compile([bZ.OP_RETURN,Z])}var EZ=1000,JX=10,hX=10,VZ=41,SZ=107,QX,GX,o,u=(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 KZ("toolbox_utxo_invalid_address",{address:X})},x=({inputs:X,outputs:Z,feeRate:G})=>{let J=X[0]&&"address"in X[0]&&X[0].address?u(X[0].address):"P2PKH",j=X.filter((Q)=>Q.value>=GX["type"in Q?Q.type:"P2PKH"]*Math.ceil(G)).reduce((Q,q)=>Q+P(q),0),$=Z?.reduce((Q,q)=>Q+r(q),0)||o[J];return JX+j+$},P=(X)=>{if("type"in X)return GX[X.type];if("address"in X&&X.address)return GX[u(X.address)];return VZ+SZ},r=(X,Z)=>{if(X?.script)return hX+X.script.length+(X.script.length>=74?2:1);if(Z)return o[Z];return o.P2PKH};var TX=I(()=>{((G)=>{G.P2PKH="P2PKH";G.P2WPKH="P2WPKH"})(QX||={});GX={["P2PKH"]:148,["P2WPKH"]:68},o={["P2PKH"]:34,["P2WPKH"]:31}});import{Chain as R,SwapKitError as gZ}from"@swapkit/helpers";function $X(X){switch(X){case R.Bitcoin:case R.BitcoinCash:return 550;case R.Dash:case R.Litecoin:return 5500;case R.Dogecoin:return 1e5;case R.Zcash:return 546;default:throw new gZ("toolbox_utxo_not_supported",{chain:X})}}function k({inputs:X,outputs:Z,feeRate:G=1,chain:J=R.Bitcoin,changeAddress:j=""}){let $=Math.ceil(G),Q=X[0]&&"address"in X[0]&&X[0].address?u(X[0].address):"P2PKH",q=X.filter((z)=>P(z)*$<=z.value),W=JX+Z.reduce((z,Y)=>z+r(Y,Q),0),B=Z.reduce((z,Y)=>z+Y.value,0),L=W*$,D=0,U=[];for(let z of q){let Y=P(z),H=$*Y;L+=H,D+=z.value,U.push(z);let T=L+B;if(D<T)continue;let K=D-T,b=$*r({address:"",value:0},Q);if(K>b){let NX=b+L,kX=D-(B+NX);if(kX>Math.max(P({})*$,$X(J)))return{fee:NX,inputs:U,outputs:Z.concat({address:j,value:kX})}}return{fee:L,inputs:U,outputs:Z}}return{fee:$*x({feeRate:$,inputs:X,outputs:Z})}}var cX=I(()=>{TX()});var m=I(()=>{VX();lX();cX();TX()});import{networks as xZ,address as mZ}from"@bitgo/utxo-lib";import lZ from"bs58check";function E(X){return X.replace(/(bchtest:|bitcoincash:)/,"")}function f(X){let Z=E(X);return YX(Z)&&MX(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=xZ.zcash;try{return mZ.toOutputScript(X,Z),!0}catch{let G=lZ.decode(X);if(G.length<21)return!1;let J=G[0];return J===Z.pubKeyHash||J===Z.scriptHash}}catch{return!1}}var d=I(()=>{m()});import HX from"@bitcoinerlab/secp256k1";import{ECPair as hZ,HDNode as cZ}from"@psf/bitcoincashjs-lib";import{HDKey as pZ}from"@scure/bip32";import{mnemonicToSeedSync as pX}from"@scure/bip39";import{AssetValue as CX,applyFeeMultiplier as nX,Chain as _,DerivationPath as nZ,derivationPathToString as oZ,FeeOption as A,NetworkDerivationPath as uZ,SwapKitError as O,SwapKitNumber as rZ,updateDerivationPath as dZ}from"@swapkit/helpers";import{address as iZ,initEccLib as uX,Psbt as sZ,payments as oX}from"bitcoinjs-lib";import{ECPairFactory as aZ}from"ecpair";function rX({inputs:X,outputs:Z,chain:G,psbt:J,sender:j,compiledMemo:$}){for(let Q of X){let q=!!Q.witnessUtxo&&!i.includes(G)&&{witnessUtxo:Q.witnessUtxo},W=i.includes(G)&&{nonWitnessUtxo:Q.txHex?Buffer.from(Q.txHex,"hex"):void 0};J.addInput({hash:Q.hash,index:Q.index,...q,...W})}for(let Q of Z){let q="address"in Q&&Q.address?Q.address:j,W=Q.script;if(W&&!$)continue;let B=W?{script:$,value:0}:{address:q,value:Q.value};uX(HX),J.addOutput(B)}return{inputs:X,psbt:J}}async function dX({assetValue:X,recipient:Z,memo:G,feeRate:J,sender:j,fetchTxHex:$=!1}){let Q=X.chain,q=G?await N(G):null,W=await aX({assetValue:X,fetchTxHex:$,memo:G,recipient:Z,sender:j}),{inputs:B,outputs:L}=k({...W,chain:Q,feeRate:J});if(!(B&&L))throw new O("toolbox_utxo_insufficient_balance",{assetValue:X,sender:j});let D=await y(),U=new sZ({network:D(Q)});if(Q===_.Dogecoin)U.setMaximumFeeRate(650000000);let{psbt:z,inputs:Y}=await rX({chain:Q,compiledMemo:q,inputs:B,outputs:L,psbt:U,sender:j});return{inputs:Y,psbt:z,utxos:W.inputs}}async function iX(){let X=await y();return function Z({address:G,chain:J}){if(J===_.BitcoinCash)return f(G);if(J===_.Zcash)return l(G);try{return uX(HX),iZ.toOutputScript(G,X(J)),!0}catch(j){return!1}}}async function tZ({chain:X,phrase:Z,derivationPath:G}){let J=(await s(X))({derivationPath:G,phrase:Z});async function j(Q){return await Q.signAllInputs(J),Q}async function $(){return(await vX(X))(J)}return{getAddress:$,signTransaction:j}}async function V({chain:X,...Z}){let G="phrase"in Z?Z.phrase:void 0,J="index"in Z?Z.index||0:0,j=oZ("derivationPath"in Z&&Z.derivationPath?Z.derivationPath:dZ(uZ[X],{index:J})),$=G?await tZ({chain:X,derivationPath:j,phrase:G}):("signer"in Z)?Z.signer:void 0;function Q(){return Promise.resolve($?.getAddress())}let q=await vX(X),W=await iX(),B=await s(X);return{accumulative:k,broadcastTx:(L)=>v(X).broadcastTx(L),calculateTxSize:x,createKeysForPath:B,createTransaction:dX,estimateMaxSendableAmount:eZ(X),estimateTransactionFee:X1(X),getAddress:Q,getAddressFromKeys:q,getBalance:OX(X),getFeeRates:()=>a(X),getInputsOutputsFee:sX,getPrivateKeyFromMnemonic:(L)=>{return B(L).toWIF()},transfer:Z1($),validateAddress:(L)=>W({address:L,chain:X})}}async function sX({assetValue:X,feeOptionKey:Z=A.Fast,feeRate:G,memo:J,sender:j,recipient:$}){let Q=X.chain,q=await aX({assetValue:X,memo:J,recipient:$,sender:j}),W=G?Math.floor(G):(await a(Q))[Z];return k({...q,chain:Q,feeRate:W})}function eZ(X){return async function Z({from:G,memo:J,feeRate:j,feeOptionKey:$=A.Fast,recipients:Q=1}){let q=await v(X).getAddressData(G),W=j?Math.ceil(j):(await a(X))[$],B=q?.utxo.map((Y)=>({...Y,hash:"",type:"P2PKH"})).filter((Y)=>Y.value>Math.max($X(X),P(Y)*W));if(!B?.length)return CX.from({chain:X});let L=CX.from({chain:X,value:B.reduce((Y,H)=>Y+H.value,0)}),D=typeof Q==="number"?Array.from({length:Q},()=>({address:G,value:0})):Q;if(J){let Y=await N(J);D.push({address:G,script:Y,value:0})}let z=x({feeRate:W,inputs:B,outputs:D})*W;return L.sub(z)}}function X1(X){return async(Z)=>{let G=await sX(Z);return CX.from({chain:X,value:rZ.fromBigInt(BigInt(G.fee),8).getValue("string")})}}async function s(X){let Z=await y();switch(X){case _.BitcoinCash:return function G({phrase:J,derivationPath:j=`${nZ.BCH}/0`,wif:$}){let Q=Z(X);if($)return hZ.fromWIF($,Q);if(!J)throw new O("toolbox_utxo_invalid_params",{error:"No phrase provided"});return cZ.fromSeedBuffer(Buffer.from(pX(J)),Q).derivePath(j).keyPair};case _.Bitcoin:case _.Dogecoin:case _.Litecoin:case _.Zcash:case _.Dash:return function G({phrase:J,wif:j,derivationPath:$}){if(!(j||J))throw new O("toolbox_utxo_invalid_params",{error:"Either phrase or wif must be provided"});let Q=aZ(HX),q=Z(X);if(j)return Q.fromWIF(j,q);let W=pX(J),B=pZ.fromMasterSeed(W,q).derive($);if(!B.privateKey)throw new O("toolbox_utxo_invalid_params",{error:"Could not get private key from phrase"});return Q.fromPrivateKey(Buffer.from(B.privateKey),{network:q})};default:throw new O("toolbox_utxo_not_supported",{chain:X})}}async function vX(X){let Z=await y();return function G(J){if(!J)throw new O("toolbox_utxo_invalid_params",{error:"Keys must be provided"});let j=i.includes(X)?oX.p2pkh:oX.p2wpkh,{address:$}=j({network:Z(X),pubkey:J.publicKey});if(!$)throw new O("toolbox_utxo_invalid_address",{error:"Address not defined"});return $}}function Z1(X){return async function Z({memo:G,recipient:J,feeOptionKey:j,feeRate:$,assetValue:Q}){let q=await X?.getAddress(),W=Q.chain;if(!(X&&q))throw new O("toolbox_utxo_no_signer");if(!J)throw new O("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});let B=$||(await a(W))[j||A.Fast],{psbt:L}=await dX({assetValue:Q,feeRate:B,memo:G,recipient:J,sender:q}),D=await X.signTransaction(L);return D.finalizeAllInputs(),v(W).broadcastTx(D.extractTransaction().toHex())}}async function a(X){let Z=await v(X).getSuggestedTxFee();return{[A.Average]:Z,[A.Fast]:nX(Z,A.Fast),[A.Fastest]:nX(Z,A.Fastest)}}async function aX({assetValue:X,recipient:Z,memo:G,sender:J,fetchTxHex:j=!1}){let $=X.chain,Q=(await a($))[A.Fastest],q=j||i.includes($),W=X.getBaseValue("number"),B=Math.ceil(W+Q*5000);return{inputs:await v($).getUtxos({address:J,fetchTxHex:q,targetValue:B}),outputs:[{address:Z,value:W},...G?[{address:"",script:await N(G),value:0}]:[]]}}var i;var t=I(()=>{DX();m();d();i=[_.Dash,_.Dogecoin]});import{address as G1,Transaction as J1,TransactionBuilder as Q1}from"@psf/bitcoincashjs-lib";import{Chain as $1,derivationPathToString as j1,FeeOption as q1,NetworkDerivationPath as W1,SwapKitError as h,updateDerivationPath as L1}from"@swapkit/helpers";import{Psbt as B1}from"bitcoinjs-lib";function S(X){return E(n(X))}function D1(X){function Z({builder:J,utxos:j}){return j.forEach(($,Q)=>{J.sign(Q,X,void 0,65,$.witnessUtxo?.value)}),J.build()}return{getAddress:()=>{let J=X.getAddress(0);return Promise.resolve(S(J))},signTransaction:Z}}async function IX(X){let Z="phrase"in X?X.phrase:void 0,G="index"in X?X.index||0:0,J=j1("derivationPath"in X&&X.derivationPath?X.derivationPath:L1(W1[F],{index:G})),j=Z?(await s(F))({derivationPath:J,phrase:Z}):void 0,$=j?D1(j):("signer"in X)?X.signer:void 0;function Q(){return Promise.resolve($?.getAddress())}let{getBalance:q,getFeeRates:W,broadcastTx:B,...L}=await V({chain:F});function D(U,z=!0){return q(E(n(U)))}return{...L,broadcastTx:B,buildTx:U1,createTransaction:tX,getAddress:Q,getAddressFromKeys:Y1,getBalance:D,getFeeRates:W,stripPrefix:E,stripToCashAddress:S,transfer:z1({broadcastTx:B,getFeeRates:W,signer:$}),validateAddress:f}}async function tX({assetValue:X,recipient:Z,memo:G,feeRate:J,sender:j}){if(!f(Z))throw new h("toolbox_utxo_invalid_address",{address:Z});let $=Math.ceil(X.getBaseValue("number")+J*7500),Q=await v(F).getUtxos({address:S(j),fetchTxHex:!0,targetValue:$}),q=G?await N(G):null,W=[];W.push({address:Z,value:X.getBaseValue("number")});let{inputs:B,outputs:L}=k({chain:F,feeRate:J,inputs:Q,outputs:W});if(!(B&&L))throw new h("toolbox_utxo_insufficient_balance",{assetValue:X,sender:j});let D=await y(),U=new Q1(D(F));await Promise.all(B.map(async(z)=>{let Y=await v(F).getRawTx(z.hash);U.addInput(J1.fromBuffer(Buffer.from(Y,"hex")),z.index)}));for(let z of L){let Y="address"in z&&z.address?z.address:g(j),H=await y(),T=G1.toOutputScript(g(Y),H(F));U.addOutput(T,z.value)}if(q)U.addOutput(q,0);return{builder:U,utxos:B}}function z1({broadcastTx:X,getFeeRates:Z,signer:G}){return async function J({recipient:j,assetValue:$,feeOptionKey:Q=q1.Fast,...q}){let W=await G?.getAddress();if(!(G&&W))throw new h("toolbox_utxo_no_signer");if(!j)throw new h("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});let B=q.feeRate||(await Z())[Q],{builder:L,utxos:D}=await tX({...q,assetValue:$,feeRate:B,recipient:j,sender:W}),z=(await G.signTransaction({builder:L,utxos:D})).toHex();return X(z)}}async function U1({assetValue:X,recipient:Z,memo:G,feeRate:J,sender:j,setSigHashType:$}){let Q=n(Z);if(!f(Q))throw new h("toolbox_utxo_invalid_address",{address:Q});let q=Math.ceil(X.getBaseValue("number")+J*7500),W=await v(F).getUtxos({address:S(j),fetchTxHex:!1,targetValue:q}),B=Number(J.toFixed(0)),L=G?await N(G):null,D=[];if(D.push({address:g(Z),value:X.getBaseValue("number")}),L)D.push({script:L,value:0});let{inputs:U,outputs:z}=k({chain:F,feeRate:B,inputs:W,outputs:D});if(!(U&&z))throw new h("toolbox_utxo_insufficient_balance",{assetValue:X,sender:j});let Y=await y(),H=new B1({network:Y(F)});for(let{hash:T,index:K,witnessUtxo:b}of U)H.addInput({hash:T,index:K,sighashType:$?65:void 0,witnessUtxo:b});for(let T of z){let K="address"in T&&T.address?T.address:g(j),b=T.script?L?{script:L,value:0}:void 0:{address:K,value:T.value};if(b)H.addOutput(b)}return{inputs:U,psbt:H,utxos:W}}function Y1(X){let Z=X.getAddress(0);return S(Z)}var F;var jX=I(()=>{m();t();d();F=$1.BitcoinCash});import{bitgo as M1,crypto as T1,ECPair as XZ,networks as C1,address as H1}from"@bitgo/utxo-lib";import{HDKey as ZZ}from"@scure/bip32";import{mnemonicToSeedSync as GZ}from"@scure/bip39";import{Chain as qX,derivationPathToString as v1,FeeOption as I1,NetworkDerivationPath as _1,SKConfig as F1,SwapKitError as WX,updateDerivationPath as y1}from"@swapkit/helpers";import N1 from"bs58check";import{match as k1,P as _X}from"ts-pattern";function JZ(){return C1.zcash}function QZ(){return{bech32:void 0,bip32:{private:76066276,public:76067358},messagePrefix:`\x18ZCash Signed Message:
|
|
2
|
-
`,pubKeyHash:28,scriptHash:28,wif:128}}function A1({phrase:X,derivationPath:Z}){let G=GZ(X),j=ZZ.fromMasterSeed(G).derive(Z);if(!j.privateKey)throw new WX("toolbox_utxo_invalid_params");let $=QZ(),Q=XZ.fromPrivateKey(Buffer.from(j.privateKey),{network:$}),q=T1.hash160(Q.publicKey),{isStagenet:W}=F1.get("envs"),B=W?Buffer.from([29,37]):Buffer.from([28,184]),L=Buffer.concat([B,q]),D=N1.encode(L);return{getAddress:()=>Promise.resolve(D),signTransaction:(U)=>{let z=U.signAllInputs(Q);return Promise.resolve(z)}}}function O1({inputs:X,outputs:Z,psbt:G,sender:J,compiledMemo:j}){for(let $ of X){let Q=!!$.witnessUtxo&&{witnessUtxo:{...$.witnessUtxo,value:BigInt($.value)}},q=!$.witnessUtxo&&{nonWitnessUtxo:$.txHex?Buffer.from($.txHex,"hex"):void 0};G.addInput({hash:$.hash,index:$.index,...Q,...q})}for(let $ of Z){let Q="address"in $&&$.address?$.address:J,q=$.script;if(q&&!j)continue;let W=q?{script:j,value:0n}:{script:H1.toOutputScript(Q,JZ()),value:BigInt($.value)};G.addOutput(W)}return{inputs:X,psbt:G}}async function eX(X){let{assetValue:Z,recipient:G,memo:J,feeRate:j,sender:$,fetchTxHex:Q}=X,q=J?N(J):null,W=await v(qX.Zcash).getUtxos({address:$,fetchTxHex:Q!==!1}),B=[{address:G,value:Number(Z.getBaseValue("string"))},...q?[{script:q,value:0}]:[]],{inputs:L,outputs:D}=k({chain:qX.Zcash,changeAddress:$,feeRate:j,inputs:W,outputs:B});if(!(L&&D))throw new WX("toolbox_utxo_insufficient_balance",{assetValue:Z,sender:$});let U=M1.createPsbtForNetwork({network:JZ()},{version:455});U.setVersion(4,!0);let z=Buffer.concat([Buffer.of(252),Buffer.of(5),Buffer.from("BITGO"),Buffer.of(0)]),Y=3370586197,H=Buffer.allocUnsafe(4);H.writeUInt32LE(Y>>>0,0),U.addUnknownKeyValToGlobal({key:z,value:H});let{psbt:T,inputs:K}=await O1({compiledMemo:q,inputs:L,outputs:D,psbt:U,sender:$});return{inputs:K,outputs:D,psbt:T}}async function FX(X){let Z=await k1(X).with({signer:_X.not(_X.nullish)},({signer:Q})=>Promise.resolve(Q)).with({phrase:_X.string},({phrase:Q,derivationPath:q,index:W=0})=>{let B=q||_1[qX.Zcash]||[44,133,0,0,0],L=y1(B,{index:W}),D=v1(L);return A1({derivationPath:D,phrase:Q})}).otherwise(()=>Promise.resolve(void 0)),G=await V({chain:qX.Zcash,signer:Z});async function J({recipient:Q,assetValue:q,feeOptionKey:W=I1.Fast,...B}){let L=await Z?.getAddress();if(!(Z&&L))throw new WX("toolbox_utxo_no_signer");let D=B.feeRate||(await G.getFeeRates())[W],{psbt:U}=await eX({...B,assetValue:q,feeRate:D,recipient:Q,sender:L}),z=await Z.signTransaction(U);return z.finalizeAllInputs(),G.broadcastTx(z.extractTransaction().toHex())}function j({phrase:Q,derivationPath:q="m/44'/133'/0'/0/0"}){let W=GZ(Q),L=ZZ.fromMasterSeed(W).derive(q);if(!L.privateKey)throw new WX("toolbox_utxo_invalid_params");let D=QZ();return XZ.fromPrivateKey(Buffer.from(L.privateKey),{network:D})}function $({phrase:Q,derivationPath:q="m/44'/133'/0'/0/0"}){return j({derivationPath:q,phrase:Q}).toWIF()}return{...G,createKeysForPath:j,createTransaction:eX,getPrivateKeyFromMnemonic:$,transfer:J,validateAddress:l}}var yX=
|
|
1
|
+
var jZ=Object.create;var{getPrototypeOf:qZ,defineProperty:LX,getOwnPropertyNames:WZ}=Object;var LZ=Object.prototype.hasOwnProperty;var R1=(X,Z,G)=>{G=X!=null?jZ(qZ(X)):{};let J=Z||!X||!X.__esModule?LX(G,"default",{value:X,enumerable:!0}):G;for(let j of WZ(X))if(!LZ.call(J,j))LX(J,j,{get:()=>X[j],enumerable:!0});return J};var BZ=(X,Z)=>{for(var G in Z)LX(X,G,{get:Z[G],enumerable:!0,configurable:!0,set:(J)=>Z[G]=()=>J})};var _=(X,Z)=>()=>(X&&(Z=X(X=0)),Z);var E1=((X)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(X,{get:(Z,G)=>(typeof require<"u"?require:Z)[G]}):X)(function(X){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+X+'" is not supported')});import{AssetValue as DZ,BaseDecimal as zZ}from"@swapkit/helpers";import{SwapKitApi as UZ}from"@swapkit/helpers/api";function AX(){function X(){let Z=Date.now(),G=BX||Z;return BX=G,Z>BX?Z:G+1}return YZ+X().toString(36)}function OX(X){return async function(G,J=!0){return(await UZ.getChainBalance({address:G,chain:X,scamFilter:J})).map(({identifier:$,value:Q,decimal:q})=>{return new DZ({decimal:q||zZ[X],identifier:$,value:Q})})}}var YZ,BX=0;var DX=_(()=>{YZ=typeof process<"u"&&process.pid?process.pid.toString(36):""});import{networks as MZ}from"@bitgo/utxo-lib";import{Chain as C,getRPCUrl as TZ,RequestClient as e,SKConfig as fX,SwapKitError as w,warnOnce as KX}from"@swapkit/helpers";import{networks as CZ}from"bitcoinjs-lib";import p from"coininfo";async function HZ({chain:X,txHash:Z}){let G=`${XX(X)}/push/transaction`,J=JSON.stringify({data:Z});try{let j=await e.post(G,{body:J,headers:{"Content-Type":"application/json"}});if(j.context.code!==200)throw new w("toolbox_utxo_broadcast_failed",{error:j.context.error||"Transaction broadcast failed"});return j.data?.transaction_hash||Z}catch(j){let $=await TZ(X);if($){let Q=JSON.stringify({id:AX(),jsonrpc:"2.0",method:"sendrawtransaction",params:[Z]}),q=await e.post($,{body:Q,headers:{"Content-Type":"application/json"}});if(q.error)throw new w("toolbox_utxo_broadcast_failed",{error:q.error?.message});if(q.result.includes('"code":-26'))throw new w("toolbox_utxo_invalid_transaction",{error:"Transaction amount was too low"});return q.result}throw j}}function XX(X){return`https://api.blockchair.com/${vZ(X)}`}function wX(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 vZ(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 IZ(X){try{let{feePerKb:Z}=await e.get(`https://app.bitgo.com/api/v2/${X.toLowerCase()}/tx/fee`),G=Z/1000;return Math.max(G,wX(X))}catch(Z){return wX(X)}}async function zX(X,Z){let G=await e.get(`${X}${Z?`${X.includes("?")?"&":"?"}key=${Z}`:""}`);if(!G||G.context.code!==200)throw new w("toolbox_utxo_api_error",{error:`Failed to query ${X}`});return G.data}async function bX({address:X,chain:Z,apiKey:G}){if(!X)throw new w("toolbox_utxo_invalid_params",{error:"Address is required"});try{return(await zX(`${XX(Z)}/dashboards/address/${X}?transaction_details=true`,G))[X]}catch(J){return{address:{balance:0,transaction_count:0},utxo:[]}}}async function _Z({address:X,chain:Z,apiKey:G}){return(await bX({address:X,apiKey:G,chain:Z}))?.address.balance||0}async function RX({chain:X,apiKey:Z,txHash:G}){if(!G)throw new w("toolbox_utxo_invalid_params",{error:"TxHash is required"});try{return(await zX(`${XX(X)}/raw/transaction/${G}`,Z))?.[G]?.raw_transaction||""}catch(J){return console.error("Failed to fetch raw transaction:",J),""}}async function FZ({chain:X,address:Z,apiKey:G,offset:J=0,limit:j=30}){return(await zX(`${XX(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=${j}&offset=${J}`,G)).map(({is_spent:W,script_hex:B,block_id:L,transaction_hash:D,index:U,value:z,spending_signature_hex:Y})=>({hash:D,index:U,is_confirmed:L!==-1,is_spent:W,script_hex:B,txHex:Y,value:z}))}function yZ(X){return X.reduce((Z,G)=>Z+G.value,0)}function PX(X,Z){let G=[...X].sort((J,j)=>j.value-J.value);if(Z){let J=[],j=0;for(let $ of G)if(J.push($),j+=$.value,j>=Z)break;return J}return G}async function EX({chain:X,address:Z,apiKey:G,targetValue:J,accumulativeValue:j=0,offset:$=0,limit:Q=30}){if(!Z)throw new w("toolbox_utxo_invalid_params",{error:"Address is required"});try{let q=await FZ({address:Z,apiKey:G,chain:X,limit:Q,offset:$,targetValue:J}),B=q.length<Q,L=q.filter(({is_spent:T})=>!T),D=yZ(L),U=j+D,z=J&&U>=J;if(B||z)return PX(L,J);let Y=await EX({accumulativeValue:U,address:Z,apiKey:G,chain:X,limit:Q,offset:$+Q,targetValue:J}),H=[...L,...Y];return PX(H,J)}catch(q){return console.error("Failed to fetch unspent UTXOs:",q),[]}}async function NZ({address:X,chain:Z,apiKey:G,fetchTxHex:J=!0,targetValue:j}){let $=await EX({address:X,apiKey:G,chain:Z,targetValue:j}),Q=[];for(let{hash:q,index:W,script_hex:B,value:L}of $){let D;if(J)D=await RX({apiKey:G,chain:Z,txHash:q});Q.push({address:X,hash:q,index:W,txHex:D,value:L,witnessUtxo:{script:Buffer.from(B,"hex"),value:L}})}return Q}function kZ(X){let Z=fX.get("apiKeys").blockchair||"";return KX({condition:!Z,id:"no_blockchair_api_key_warning",warning:"No Blockchair API key found. Functionality will be limited."}),{broadcastTx:(G)=>HZ({chain:X,txHash:G}),getAddressData:(G)=>bX({address:G,apiKey:Z,chain:X}),getBalance:(G)=>_Z({address:G,apiKey:Z,chain:X}),getRawTx:(G)=>RX({apiKey:Z,chain:X,txHash:G}),getSuggestedTxFee:()=>IZ(X),getUtxos:(G)=>NZ({...G,apiKey:Z,chain:X})}}function AZ(X){return X}function v(X){let Z=fX.get("apis")[X];if(Z)return KX({condition:!0,id:"custom_utxo_api_warning",warning:"Using custom UTXO API. Be sure to implement all methods to avoid issues."}),Z;return kZ(X)}function y(){return function(Z){switch(Z){case C.Bitcoin:return CZ.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 G={private:70615956,public:70617039},J=p.dogecoin.test;return J.versions.bip32=G,p.dogecoin.main.toBitcoinJS()}case C.Zcash:return MZ.zcash;default:throw new w("toolbox_utxo_not_supported",{chain:Z})}}}var VX=_(()=>{DX()});import{SwapKitError as gX}from"@swapkit/helpers";import xX from"bs58check";import mX from"cashaddrjs";function YX(X){try{return ZX(X),!0}catch(Z){return!1}}function MX(X){return ZX(X)?.network}function g(X){let Z=ZX(X);if(Z?.format==="legacy")return X;return PZ(Z)}function o(X){let Z=ZX(X);return fZ(Z)}function ZX(X){try{let Z=OZ(X);if(Z)return Z}catch(Z){}try{let Z=wZ(X);if(Z)return Z}catch(Z){}throw new gX("toolbox_utxo_invalid_address",{address:X})}function OZ(X){try{let Z=xX.decode(X);if(Z.length!==21)throw new gX("toolbox_utxo_invalid_address",{address:X});let G=Z[0],J=Array.prototype.slice.call(Z,1);switch(G){case M.legacy.mainnet.p2pkh:return{format:"legacy",hash:J,network:"mainnet",type:"p2pkh"};case M.legacy.mainnet.p2sh:return{format:"legacy",hash:J,network:"mainnet",type:"p2sh"};case M.legacy.testnet.p2pkh:return{format:"legacy",hash:J,network:"testnet",type:"p2pkh"};case M.legacy.testnet.p2sh:return{format:"legacy",hash:J,network:"testnet",type:"p2sh"};case M.bitpay.mainnet.p2pkh:return{format:"bitpay",hash:J,network:"mainnet",type:"p2pkh"};case M.bitpay.mainnet.p2sh:return{format:"bitpay",hash:J,network:"mainnet",type:"p2sh"};default:return}}catch(Z){return}}function wZ(X){if(X.indexOf(":")!==-1)try{return SX(X)}catch(Z){}else{let Z=["bitcoincash","bchtest","bchreg"];for(let G of Z)try{return SX(`${G}:${X}`)}catch(J){}}return}function SX(X){try{let{hash:Z,prefix:G,type:J}=mX.decode(X);return{format:"cashaddr",hash:Array.prototype.slice.call(Z,0),network:G==="bitcoincash"?"mainnet":"testnet",type:J==="P2PKH"?"p2pkh":"p2sh"}}catch(Z){return}}function PZ(X){let Z=M.legacy[X.network][X.type],G=Buffer.alloc(1+X.hash.length);return G[0]=Z,G.set(X.hash,1),xX.encode(G)}function fZ(X){let Z=X.network==="mainnet"?"bitcoincash":"bchtest",G=X.type==="p2pkh"?"P2PKH":"P2SH",J=new Uint8Array(X.hash);return mX.encode(Z,G,J)}var UX,M;var lX=_(()=>{((G)=>{G.Mainnet="mainnet";G.Testnet="testnet"})(UX||={});M={["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 KZ}from"@swapkit/helpers";import{opcodes as bZ,script as RZ}from"bitcoinjs-lib";function N(X){let Z=Buffer.from(X,"utf8");return RZ.compile([bZ.OP_RETURN,Z])}var EZ=1000,JX=10,hX=10,VZ=41,SZ=107,QX,GX,u,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 KZ("toolbox_utxo_invalid_address",{address:X})},x=({inputs:X,outputs:Z,feeRate:G})=>{let J=X[0]&&"address"in X[0]&&X[0].address?n(X[0].address):"P2PKH",j=X.filter((Q)=>Q.value>=GX["type"in Q?Q.type:"P2PKH"]*Math.ceil(G)).reduce((Q,q)=>Q+P(q),0),$=Z?.reduce((Q,q)=>Q+r(q),0)||u[J];return JX+j+$},P=(X)=>{if("type"in X)return GX[X.type];if("address"in X&&X.address)return GX[n(X.address)];return VZ+SZ},r=(X,Z)=>{if(X?.script)return hX+X.script.length+(X.script.length>=74?2:1);if(Z)return u[Z];return u.P2PKH};var TX=_(()=>{((G)=>{G.P2PKH="P2PKH";G.P2WPKH="P2WPKH"})(QX||={});GX={["P2PKH"]:148,["P2WPKH"]:68},u={["P2PKH"]:34,["P2WPKH"]:31}});import{Chain as R,SwapKitError as gZ}from"@swapkit/helpers";function $X(X){switch(X){case R.Bitcoin:case R.BitcoinCash:return 550;case R.Dash:case R.Litecoin:return 5500;case R.Dogecoin:return 1e5;case R.Zcash:return 546;default:throw new gZ("toolbox_utxo_not_supported",{chain:X})}}function k({inputs:X,outputs:Z,feeRate:G=1,chain:J=R.Bitcoin,changeAddress:j=""}){let $=Math.ceil(G),Q=X[0]&&"address"in X[0]&&X[0].address?n(X[0].address):"P2PKH",q=X.filter((z)=>P(z)*$<=z.value),W=JX+Z.reduce((z,Y)=>z+r(Y,Q),0),B=Z.reduce((z,Y)=>z+Y.value,0),L=W*$,D=0,U=[];for(let z of q){let Y=P(z),H=$*Y;L+=H,D+=z.value,U.push(z);let T=L+B;if(D<T)continue;let K=D-T,b=$*r({address:"",value:0},Q);if(K>b){let NX=b+L,kX=D-(B+NX);if(kX>Math.max(P({})*$,$X(J)))return{fee:NX,inputs:U,outputs:Z.concat({address:j,value:kX})}}return{fee:L,inputs:U,outputs:Z}}return{fee:$*x({feeRate:$,inputs:X,outputs:Z})}}var cX=_(()=>{TX()});var m=_(()=>{VX();lX();cX();TX()});import{networks as xZ,address as mZ}from"@bitgo/utxo-lib";import lZ from"bs58check";function E(X){return X.replace(/(bchtest:|bitcoincash:)/,"")}function f(X){let Z=E(X);return YX(Z)&&MX(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=xZ.zcash;try{return mZ.toOutputScript(X,Z),!0}catch{let G=lZ.decode(X);if(G.length<21)return!1;let J=G[0];return J===Z.pubKeyHash||J===Z.scriptHash}}catch{return!1}}var d=_(()=>{m()});import HX from"@bitcoinerlab/secp256k1";import{ECPair as hZ,HDNode as cZ}from"@psf/bitcoincashjs-lib";import{HDKey as pZ}from"@scure/bip32";import{mnemonicToSeedSync as pX}from"@scure/bip39";import{AssetValue as CX,applyFeeMultiplier as oX,Chain as I,DerivationPath as oZ,derivationPathToString as uZ,FeeOption as A,NetworkDerivationPath as nZ,SwapKitError as O,SwapKitNumber as rZ,updateDerivationPath as dZ}from"@swapkit/helpers";import{address as iZ,initEccLib as nX,Psbt as sZ,payments as uX}from"bitcoinjs-lib";import{ECPairFactory as aZ}from"ecpair";function rX({inputs:X,outputs:Z,chain:G,psbt:J,sender:j,compiledMemo:$}){for(let Q of X){let q=!!Q.witnessUtxo&&!i.includes(G)&&{witnessUtxo:Q.witnessUtxo},W=i.includes(G)&&{nonWitnessUtxo:Q.txHex?Buffer.from(Q.txHex,"hex"):void 0};J.addInput({hash:Q.hash,index:Q.index,...q,...W})}for(let Q of Z){let q="address"in Q&&Q.address?Q.address:j,W=Q.script;if(W&&!$)continue;let B=W?{script:$,value:0}:{address:q,value:Q.value};nX(HX),J.addOutput(B)}return{inputs:X,psbt:J}}async function dX({assetValue:X,recipient:Z,memo:G,feeRate:J,sender:j,fetchTxHex:$=!1}){let Q=X.chain,q=G?await N(G):null,W=await aX({assetValue:X,fetchTxHex:$,memo:G,recipient:Z,sender:j}),{inputs:B,outputs:L}=k({...W,chain:Q,feeRate:J});if(!(B&&L))throw new O("toolbox_utxo_insufficient_balance",{assetValue:X,sender:j});let D=await y(),U=new sZ({network:D(Q)});if(Q===I.Dogecoin)U.setMaximumFeeRate(650000000);let{psbt:z,inputs:Y}=await rX({chain:Q,compiledMemo:q,inputs:B,outputs:L,psbt:U,sender:j});return{inputs:Y,psbt:z,utxos:W.inputs}}async function iX(){let X=await y();return function({address:G,chain:J}){if(J===I.BitcoinCash)return f(G);if(J===I.Zcash)return l(G);try{return nX(HX),iZ.toOutputScript(G,X(J)),!0}catch(j){return!1}}}async function tZ({chain:X,phrase:Z,derivationPath:G}){let J=(await s(X))({derivationPath:G,phrase:Z});async function j(Q){return await Q.signAllInputs(J),Q}async function $(){return(await vX(X))(J)}return{getAddress:$,signTransaction:j}}async function V({chain:X,...Z}){let G="phrase"in Z?Z.phrase:void 0,J="index"in Z?Z.index||0:0,j=uZ("derivationPath"in Z&&Z.derivationPath?Z.derivationPath:dZ(nZ[X],{index:J})),$=G?await tZ({chain:X,derivationPath:j,phrase:G}):("signer"in Z)?Z.signer:void 0;function Q(){return Promise.resolve($?.getAddress())}let q=await vX(X),W=await iX(),B=await s(X);return{accumulative:k,broadcastTx:(L)=>v(X).broadcastTx(L),calculateTxSize:x,createKeysForPath:B,createTransaction:dX,estimateMaxSendableAmount:eZ(X),estimateTransactionFee:X1(X),getAddress:Q,getAddressFromKeys:q,getBalance:OX(X),getFeeRates:()=>a(X),getInputsOutputsFee:sX,getPrivateKeyFromMnemonic:(L)=>{return B(L).toWIF()},transfer:Z1($),validateAddress:(L)=>W({address:L,chain:X})}}async function sX({assetValue:X,feeOptionKey:Z=A.Fast,feeRate:G,memo:J,sender:j,recipient:$}){let Q=X.chain,q=await aX({assetValue:X,memo:J,recipient:$,sender:j}),W=G?Math.floor(G):(await a(Q))[Z];return k({...q,chain:Q,feeRate:W})}function eZ(X){return async function({from:G,memo:J,feeRate:j,feeOptionKey:$=A.Fast,recipients:Q=1}){let q=await v(X).getAddressData(G),W=j?Math.ceil(j):(await a(X))[$],B=q?.utxo.map((Y)=>({...Y,hash:"",type:"P2PKH"})).filter((Y)=>Y.value>Math.max($X(X),P(Y)*W));if(!B?.length)return CX.from({chain:X});let L=CX.from({chain:X,value:B.reduce((Y,H)=>Y+H.value,0)}),D=typeof Q==="number"?Array.from({length:Q},()=>({address:G,value:0})):Q;if(J){let Y=await N(J);D.push({address:G,script:Y,value:0})}let z=x({feeRate:W,inputs:B,outputs:D})*W;return L.sub(z)}}function X1(X){return async(Z)=>{let G=await sX(Z);return CX.from({chain:X,value:rZ.fromBigInt(BigInt(G.fee),8).getValue("string")})}}async function s(X){let Z=await y();switch(X){case I.BitcoinCash:return function({phrase:J,derivationPath:j=`${oZ.BCH}/0`,wif:$}){let Q=Z(X);if($)return hZ.fromWIF($,Q);if(!J)throw new O("toolbox_utxo_invalid_params",{error:"No phrase provided"});return cZ.fromSeedBuffer(Buffer.from(pX(J)),Q).derivePath(j).keyPair};case I.Bitcoin:case I.Dogecoin:case I.Litecoin:case I.Zcash:case I.Dash:return function({phrase:J,wif:j,derivationPath:$}){if(!(j||J))throw new O("toolbox_utxo_invalid_params",{error:"Either phrase or wif must be provided"});let Q=aZ(HX),q=Z(X);if(j)return Q.fromWIF(j,q);let W=pX(J),B=pZ.fromMasterSeed(W,q).derive($);if(!B.privateKey)throw new O("toolbox_utxo_invalid_params",{error:"Could not get private key from phrase"});return Q.fromPrivateKey(Buffer.from(B.privateKey),{network:q})};default:throw new O("toolbox_utxo_not_supported",{chain:X})}}async function vX(X){let Z=await y();return function(J){if(!J)throw new O("toolbox_utxo_invalid_params",{error:"Keys must be provided"});let j=i.includes(X)?uX.p2pkh:uX.p2wpkh,{address:$}=j({network:Z(X),pubkey:J.publicKey});if(!$)throw new O("toolbox_utxo_invalid_address",{error:"Address not defined"});return $}}function Z1(X){return async function({memo:G,recipient:J,feeOptionKey:j,feeRate:$,assetValue:Q}){let q=await X?.getAddress(),W=Q.chain;if(!(X&&q))throw new O("toolbox_utxo_no_signer");if(!J)throw new O("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});let B=$||(await a(W))[j||A.Fast],{psbt:L}=await dX({assetValue:Q,feeRate:B,memo:G,recipient:J,sender:q}),D=await X.signTransaction(L);return D.finalizeAllInputs(),v(W).broadcastTx(D.extractTransaction().toHex())}}async function a(X){let Z=await v(X).getSuggestedTxFee();return{[A.Average]:Z,[A.Fast]:oX(Z,A.Fast),[A.Fastest]:oX(Z,A.Fastest)}}async function aX({assetValue:X,recipient:Z,memo:G,sender:J,fetchTxHex:j=!1}){let $=X.chain,Q=(await a($))[A.Fastest],q=j||i.includes($),W=X.getBaseValue("number"),B=Math.ceil(W+Q*5000);return{inputs:await v($).getUtxos({address:J,fetchTxHex:q,targetValue:B}),outputs:[{address:Z,value:W},...G?[{address:"",script:await N(G),value:0}]:[]]}}var i;var t=_(()=>{DX();m();d();i=[I.Dash,I.Dogecoin,I.Zcash,I.BitcoinCash]});import{address as G1,Transaction as J1,TransactionBuilder as Q1}from"@psf/bitcoincashjs-lib";import{Chain as $1,derivationPathToString as j1,FeeOption as q1,NetworkDerivationPath as W1,SwapKitError as h,updateDerivationPath as L1}from"@swapkit/helpers";import{Psbt as B1}from"bitcoinjs-lib";function S(X){return E(o(X))}function D1(X){function Z({builder:J,utxos:j}){return j.forEach(($,Q)=>{J.sign(Q,X,void 0,65,$.witnessUtxo?.value)}),J.build()}return{getAddress:()=>{let J=X.getAddress(0);return Promise.resolve(S(J))},signTransaction:Z}}async function IX(X){let Z="phrase"in X?X.phrase:void 0,G="index"in X?X.index||0:0,J=j1("derivationPath"in X&&X.derivationPath?X.derivationPath:L1(W1[F],{index:G})),j=Z?(await s(F))({derivationPath:J,phrase:Z}):void 0,$=j?D1(j):("signer"in X)?X.signer:void 0;function Q(){return Promise.resolve($?.getAddress())}let{getBalance:q,getFeeRates:W,broadcastTx:B,...L}=await V({chain:F});function D(U,z=!0){return q(E(o(U)))}return{...L,broadcastTx:B,buildTx:U1,createTransaction:tX,getAddress:Q,getAddressFromKeys:Y1,getBalance:D,getFeeRates:W,stripPrefix:E,stripToCashAddress:S,transfer:z1({broadcastTx:B,getFeeRates:W,signer:$}),validateAddress:f}}async function tX({assetValue:X,recipient:Z,memo:G,feeRate:J,sender:j}){if(!f(Z))throw new h("toolbox_utxo_invalid_address",{address:Z});let $=Math.ceil(X.getBaseValue("number")+J*7500),Q=await v(F).getUtxos({address:S(j),fetchTxHex:!0,targetValue:$}),q=G?await N(G):null,W=[];W.push({address:Z,value:X.getBaseValue("number")});let{inputs:B,outputs:L}=k({chain:F,feeRate:J,inputs:Q,outputs:W});if(!(B&&L))throw new h("toolbox_utxo_insufficient_balance",{assetValue:X,sender:j});let D=await y(),U=new Q1(D(F));await Promise.all(B.map(async(z)=>{let Y=await v(F).getRawTx(z.hash);U.addInput(J1.fromBuffer(Buffer.from(Y,"hex")),z.index)}));for(let z of L){let Y="address"in z&&z.address?z.address:g(j),H=await y(),T=G1.toOutputScript(g(Y),H(F));U.addOutput(T,z.value)}if(q)U.addOutput(q,0);return{builder:U,utxos:B}}function z1({broadcastTx:X,getFeeRates:Z,signer:G}){return async function({recipient:j,assetValue:$,feeOptionKey:Q=q1.Fast,...q}){let W=await G?.getAddress();if(!(G&&W))throw new h("toolbox_utxo_no_signer");if(!j)throw new h("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});let B=q.feeRate||(await Z())[Q],{builder:L,utxos:D}=await tX({...q,assetValue:$,feeRate:B,recipient:j,sender:W}),z=(await G.signTransaction({builder:L,utxos:D})).toHex();return X(z)}}async function U1({assetValue:X,recipient:Z,memo:G,feeRate:J,sender:j,setSigHashType:$}){let Q=o(Z);if(!f(Q))throw new h("toolbox_utxo_invalid_address",{address:Q});let q=Math.ceil(X.getBaseValue("number")+J*7500),W=await v(F).getUtxos({address:S(j),fetchTxHex:!1,targetValue:q}),B=Number(J.toFixed(0)),L=G?await N(G):null,D=[];if(D.push({address:g(Z),value:X.getBaseValue("number")}),L)D.push({script:L,value:0});let{inputs:U,outputs:z}=k({chain:F,feeRate:B,inputs:W,outputs:D});if(!(U&&z))throw new h("toolbox_utxo_insufficient_balance",{assetValue:X,sender:j});let Y=await y(),H=new B1({network:Y(F)});for(let{hash:T,index:K,witnessUtxo:b}of U)H.addInput({hash:T,index:K,sighashType:$?65:void 0,witnessUtxo:b});for(let T of z){let K="address"in T&&T.address?T.address:g(j),b=T.script?L?{script:L,value:0}:void 0:{address:K,value:T.value};if(b)H.addOutput(b)}return{inputs:U,psbt:H,utxos:W}}function Y1(X){let Z=X.getAddress(0);return S(Z)}var F;var jX=_(()=>{m();t();d();F=$1.BitcoinCash});import{bitgo as M1,crypto as T1,ECPair as XZ,networks as C1,address as H1}from"@bitgo/utxo-lib";import{HDKey as ZZ}from"@scure/bip32";import{mnemonicToSeedSync as GZ}from"@scure/bip39";import{Chain as qX,derivationPathToString as v1,FeeOption as I1,NetworkDerivationPath as _1,SKConfig as F1,SwapKitError as WX,updateDerivationPath as y1}from"@swapkit/helpers";import N1 from"bs58check";import{match as k1,P as _X}from"ts-pattern";function JZ(){return C1.zcash}function QZ(){return{bech32:void 0,bip32:{private:76066276,public:76067358},messagePrefix:`\x18ZCash Signed Message:
|
|
2
|
+
`,pubKeyHash:28,scriptHash:28,wif:128}}function A1({phrase:X,derivationPath:Z}){let G=GZ(X),j=ZZ.fromMasterSeed(G).derive(Z);if(!j.privateKey)throw new WX("toolbox_utxo_invalid_params");let $=QZ(),Q=XZ.fromPrivateKey(Buffer.from(j.privateKey),{network:$}),q=T1.hash160(Q.publicKey),{isStagenet:W}=F1.get("envs"),B=W?Buffer.from([29,37]):Buffer.from([28,184]),L=Buffer.concat([B,q]),D=N1.encode(L);return{getAddress:()=>Promise.resolve(D),signTransaction:(U)=>{let z=U.signAllInputs(Q);return Promise.resolve(z)}}}function O1({inputs:X,outputs:Z,psbt:G,sender:J,compiledMemo:j}){for(let $ of X){let Q=!!$.witnessUtxo&&{witnessUtxo:{...$.witnessUtxo,value:BigInt($.value)}},q=!$.witnessUtxo&&{nonWitnessUtxo:$.txHex?Buffer.from($.txHex,"hex"):void 0};G.addInput({hash:$.hash,index:$.index,...Q,...q})}for(let $ of Z){let Q="address"in $&&$.address?$.address:J,q=$.script;if(q&&!j)continue;let W=q?{script:j,value:0n}:{script:H1.toOutputScript(Q,JZ()),value:BigInt($.value)};G.addOutput(W)}return{inputs:X,psbt:G}}async function eX(X){let{assetValue:Z,recipient:G,memo:J,feeRate:j,sender:$,fetchTxHex:Q}=X,q=J?N(J):null,W=await v(qX.Zcash).getUtxos({address:$,fetchTxHex:Q!==!1}),B=[{address:G,value:Number(Z.getBaseValue("string"))},...q?[{script:q,value:0}]:[]],{inputs:L,outputs:D}=k({chain:qX.Zcash,changeAddress:$,feeRate:j,inputs:W,outputs:B});if(!(L&&D))throw new WX("toolbox_utxo_insufficient_balance",{assetValue:Z,sender:$});let U=M1.createPsbtForNetwork({network:JZ()},{version:455});U.setVersion(4,!0);let z=Buffer.concat([Buffer.of(252),Buffer.of(5),Buffer.from("BITGO"),Buffer.of(0)]),Y=3370586197,H=Buffer.allocUnsafe(4);H.writeUInt32LE(Y>>>0,0),U.addUnknownKeyValToGlobal({key:z,value:H});let{psbt:T,inputs:K}=await O1({compiledMemo:q,inputs:L,outputs:D,psbt:U,sender:$});return{inputs:K,outputs:D,psbt:T}}async function FX(X){let Z=await k1(X).with({signer:_X.not(_X.nullish)},({signer:Q})=>Promise.resolve(Q)).with({phrase:_X.string},({phrase:Q,derivationPath:q,index:W=0})=>{let B=q||_1[qX.Zcash]||[44,133,0,0,0],L=y1(B,{index:W}),D=v1(L);return A1({derivationPath:D,phrase:Q})}).otherwise(()=>Promise.resolve(void 0)),G=await V({chain:qX.Zcash,signer:Z});async function J({recipient:Q,assetValue:q,feeOptionKey:W=I1.Fast,...B}){let L=await Z?.getAddress();if(!(Z&&L))throw new WX("toolbox_utxo_no_signer");let D=B.feeRate||(await G.getFeeRates())[W],{psbt:U}=await eX({...B,assetValue:q,feeRate:D,recipient:Q,sender:L}),z=await Z.signTransaction(U);return z.finalizeAllInputs(),G.broadcastTx(z.extractTransaction().toHex())}function j({phrase:Q,derivationPath:q="m/44'/133'/0'/0/0"}){let W=GZ(Q),L=ZZ.fromMasterSeed(W).derive(q);if(!L.privateKey)throw new WX("toolbox_utxo_invalid_params");let D=QZ();return XZ.fromPrivateKey(Buffer.from(L.privateKey),{network:D})}function $({phrase:Q,derivationPath:q="m/44'/133'/0'/0/0"}){return j({derivationPath:q,phrase:Q}).toWIF()}return{...G,createKeysForPath:j,createTransaction:eX,getPrivateKeyFromMnemonic:$,transfer:J,validateAddress:l}}var yX=_(()=>{m();t();d()});import{Chain as c,SwapKitError as w1}from"@swapkit/helpers";async function P1(X,Z){switch(X){case c.BitcoinCash:return await IX(Z||{});case c.Zcash:return await FX(Z);case c.Bitcoin:case c.Dogecoin:case c.Litecoin:case c.Dash:return await V({chain:X,...Z});default:throw new w1("toolbox_utxo_not_supported",{chain:X})}}var $Z=_(()=>{jX();t();yX();jX();d()});var K1={};BZ(K1,{validateZcashAddress:()=>l,toLegacyAddress:()=>g,toCashAddress:()=>o,stripToCashAddress:()=>S,stripPrefix:()=>E,nonSegwitChains:()=>i,isValidAddress:()=>YX,getUtxoToolbox:()=>P1,getUtxoNetwork:()=>y,getUtxoApi:()=>v,getUTXOAddressValidator:()=>iX,getScriptTypeForAddress:()=>n,getOutputSize:()=>r,getInputSize:()=>P,getDustThreshold:()=>$X,getCreateKeysForPath:()=>s,detectAddressNetwork:()=>MX,createZcashToolbox:()=>FX,createUTXOToolbox:()=>V,createCustomUtxoApi:()=>AZ,createBCHToolbox:()=>IX,compileMemo:()=>N,calculateTxSize:()=>x,bchValidateAddress:()=>f,addressFromKeysGetter:()=>vX,addInputsAndOutputs:()=>rX,accumulative:()=>k,UtxoNetwork:()=>UX,UTXOScriptType:()=>QX,TX_OVERHEAD:()=>JX,OutputSizes:()=>u,OP_RETURN_OVERHEAD:()=>hX,MIN_TX_FEE:()=>EZ,InputSizes:()=>GX});var b1=_(()=>{m();$Z();jX();t();yX()});b1();export{l as validateZcashAddress,g as toLegacyAddress,o as toCashAddress,S as stripToCashAddress,E as stripPrefix,i as nonSegwitChains,YX as isValidAddress,P1 as getUtxoToolbox,y as getUtxoNetwork,v as getUtxoApi,iX as getUTXOAddressValidator,n as getScriptTypeForAddress,r as getOutputSize,P as getInputSize,$X as getDustThreshold,s as getCreateKeysForPath,MX as detectAddressNetwork,FX as createZcashToolbox,V as createUTXOToolbox,AZ as createCustomUtxoApi,IX as createBCHToolbox,N as compileMemo,x as calculateTxSize,f as bchValidateAddress,vX as addressFromKeysGetter,rX as addInputsAndOutputs,k as accumulative,UX as UtxoNetwork,QX as UTXOScriptType,JX as TX_OVERHEAD,u as OutputSizes,hX as OP_RETURN_OVERHEAD,EZ as MIN_TX_FEE,GX as InputSizes};
|
|
3
3
|
|
|
4
|
-
//# debugId=
|
|
4
|
+
//# debugId=09EA4143F59DA1B264756E2164756E21
|
|
5
5
|
//# sourceMappingURL=index.js.map
|