@swapkit/toolboxes 4.0.0-beta.67 → 4.0.0
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 +5 -5
- package/dist/src/cosmos/index.js +2 -2
- package/dist/src/cosmos/index.js.map +5 -5
- package/dist/src/evm/index.cjs +2 -2
- package/dist/src/evm/index.cjs.map +6 -6
- package/dist/src/evm/index.js +2 -2
- package/dist/src/evm/index.js.map +6 -6
- package/dist/src/index.cjs +3 -3
- package/dist/src/index.cjs.map +15 -15
- package/dist/src/index.js +3 -3
- package/dist/src/index.js.map +15 -15
- package/dist/src/near/index.cjs +2 -2
- package/dist/src/near/index.cjs.map +3 -3
- package/dist/src/near/index.js +2 -2
- package/dist/src/near/index.js.map +3 -3
- package/dist/src/ripple/index.cjs +2 -2
- package/dist/src/ripple/index.cjs.map +3 -3
- package/dist/src/ripple/index.js +2 -2
- package/dist/src/ripple/index.js.map +3 -3
- package/dist/src/solana/index.cjs +2 -2
- package/dist/src/solana/index.cjs.map +3 -3
- package/dist/src/solana/index.js +2 -2
- package/dist/src/solana/index.js.map +3 -3
- package/dist/src/substrate/index.cjs +2 -2
- package/dist/src/substrate/index.cjs.map +3 -3
- package/dist/src/substrate/index.js +2 -2
- package/dist/src/substrate/index.js.map +3 -3
- package/dist/src/tron/index.cjs +2 -2
- package/dist/src/tron/index.cjs.map +3 -3
- package/dist/src/tron/index.js +2 -2
- package/dist/src/tron/index.js.map +3 -3
- package/dist/src/utxo/index.cjs +2 -2
- package/dist/src/utxo/index.cjs.map +3 -3
- package/dist/src/utxo/index.js +3 -3
- package/dist/src/utxo/index.js.map +3 -3
- package/dist/types/cosmos/toolbox/cosmos.d.ts.map +1 -1
- package/dist/types/cosmos/toolbox/thorchain.d.ts.map +1 -1
- package/dist/types/cosmos/util.d.ts +2 -3
- package/dist/types/cosmos/util.d.ts.map +1 -1
- package/dist/types/evm/api.d.ts.map +1 -1
- package/dist/types/evm/helpers.d.ts.map +1 -1
- package/dist/types/evm/toolbox/evm.d.ts.map +1 -1
- package/dist/types/evm/toolbox/op.d.ts.map +1 -1
- package/dist/types/solana/toolbox.d.ts.map +1 -1
- package/dist/types/substrate/substrate.d.ts.map +1 -1
- package/dist/types/tron/toolbox.d.ts.map +1 -1
- package/dist/types/utxo/helpers/api.d.ts.map +1 -1
- package/package.json +3 -3
package/dist/src/utxo/index.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
var DZ=Object.create;var{getPrototypeOf:UZ,defineProperty:n,getOwnPropertyNames:EX,getOwnPropertyDescriptor:zZ}=Object,VX=Object.prototype.hasOwnProperty;var o=(X,Z,G)=>{G=X!=null?DZ(UZ(X)):{};let J=Z||!X||!X.__esModule?n(G,"default",{value:X,enumerable:!0}):G;for(let j of EX(X))if(!VX.call(J,j))n(J,j,{get:()=>X[j],enumerable:!0});return J},fX=new WeakMap,YZ=(X)=>{var Z=fX.get(X),G;if(Z)return Z;if(Z=n({},"__esModule",{value:!0}),X&&typeof X==="object"||typeof X==="function")EX(X).map((J)=>!VX.call(Z,J)&&n(Z,J,{get:()=>X[J],enumerable:!(G=zZ(X,J))||G.enumerable}));return fX.set(X,Z),Z};var MZ=(X,Z)=>{for(var G in Z)n(X,G,{get:Z[G],enumerable:!0,configurable:!0,set:(J)=>Z[G]=()=>J})};var N=(X,Z)=>()=>(X&&(Z=X(X=0)),Z);function gX(){function X(){let Z=Date.now(),G=YX||Z;return YX=G,Z>YX?Z:G+1}return TZ+X().toString(36)}function xX(X){return async function Z(G,J=!0){return(await SX.SwapKitApi.getChainBalance({chain:X,address:G,scamFilter:J})).map(({identifier:$,value:Q,decimal:q})=>{return new QX.AssetValue({decimal:q||QX.BaseDecimal[X],value:Q,identifier:$})})}}var QX,SX,TZ,YX=0;var MX=N(()=>{QX=require("@swapkit/helpers"),SX=require("@swapkit/helpers/api"),TZ=typeof process!=="undefined"&&process.pid?process.pid.toString(36):""});async function CZ({chain:X,txHash:Z}){let G=`${$X(X)}/push/transaction`,J=JSON.stringify({data:Z});try{let j=await Y.RequestClient.post(G,{headers:{"Content-Type":"application/json"},body:J});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 $=Y.SKConfig.get("rpcUrls")[X];if($){let Q=JSON.stringify({jsonrpc:"2.0",method:"sendrawtransaction",params:[Z],id:gX()}),q=await Y.RequestClient.post($,{headers:{"Content-Type":"application/json"},body:Q});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 $X(X){return`https://api.blockchair.com/${HZ(X)}`}function mX(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 HZ(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 vZ(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,mX(X))}catch(Z){return mX(X)}}async function TX(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 pX({address:X,chain:Z,apiKey:G}){if(!X)throw new Y.SwapKitError("toolbox_utxo_invalid_params",{error:"Address is required"});try{return(await TX(`${$X(Z)}/dashboards/address/${X}?transaction_details=true`,G))[X]}catch(J){return{utxo:[],address:{balance:0,transaction_count:0}}}}async function IZ({address:X,chain:Z,apiKey:G}){return(await pX({address:X,chain:Z,apiKey:G}))?.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 TX(`${$X(X)}/raw/transaction/${G}`,Z))?.[G]?.raw_transaction||""}catch(J){return console.error("Failed to fetch raw transaction:",J),""}}async function _Z({chain:X,address:Z,apiKey:G,offset:J=0,limit:j=30}){return(await TX(`${$X(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:L,script_hex:D,block_id:W,transaction_hash:U,index:M,value:z,spending_signature_hex:T})=>({hash:U,index:M,value:z,txHex:T,script_hex:D,is_confirmed:W!==-1,is_spent:L}))}function FZ(X){return X.reduce((Z,G)=>Z+G.value,0)}function lX(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 _Z({targetValue:J,chain:X,address:Z,apiKey:G,offset:$,limit:Q}),D=q.length<Q,W=q.filter(({is_spent:I})=>!I),U=FZ(W),M=j+U,z=J&&M>=J;if(D||z)return lX(W,J);let T=await nX({chain:X,address:Z,apiKey:G,offset:$+Q,limit:Q,accumulativeValue:M,targetValue:J}),_=[...W,...T];return lX(_,J)}catch(q){return console.error("Failed to fetch unspent UTXOs:",q),[]}}async function yZ({address:X,chain:Z,apiKey:G,fetchTxHex:J=!0,targetValue:j}){let $=await nX({chain:Z,address:X,apiKey:G,targetValue:j}),Q=[];for(let{hash:q,index:L,script_hex:D,value:W}of $){let U;if(J)U=await uX({txHash:q,chain:Z,apiKey:G});Q.push({address:X,hash:q,index:L,txHex:U,value:W,witnessUtxo:{value:W,script:Buffer.from(D,"hex")}})}return Q}function NZ(X){let Z=Y.SKConfig.get("apiKeys").blockchair||"";return Y.warnOnce(!Z,"No Blockchair API key found. Functionality will be limited."),{broadcastTx:(G)=>CZ({txHash:G,chain:X}),getRawTx:(G)=>uX({txHash:G,chain:X,apiKey:Z}),getSuggestedTxFee:()=>vZ(X),getBalance:(G)=>IZ({address:G,chain:X,apiKey:Z}),getAddressData:(G)=>pX({address:G,chain:X,apiKey:Z}),getUtxos:(G)=>yZ({...G,chain:X,apiKey:Z})}}function OZ(X){return X}function F(X){let Z=Y.SKConfig.get("apis")[X];if(Z)return Y.warnOnce(!0,"Using custom UTXO API. Be sure to implement all methods to avoid issues."),Z;return NZ(X)}function A(){return function X(Z){switch(Z){case Y.Chain.Bitcoin:return cX.networks.bitcoin;case Y.Chain.BitcoinCash:return x.default.bitcoincash.main.toBitcoinJS();case Y.Chain.Dash:return x.default.dash.main.toBitcoinJS();case Y.Chain.Litecoin:return x.default.litecoin.main.toBitcoinJS();case Y.Chain.Dogecoin:{let G={private:70615956,public:70617039},J=x.default.dogecoin.test;return J.versions.bip32=G,x.default.dogecoin.main.toBitcoinJS()}case Y.Chain.Zcash:return hX.networks.zcash;default:throw new Y.SwapKitError("toolbox_utxo_not_supported",{chain:Z})}}}var hX,Y,cX,x;var oX=N(()=>{hX=require("@bitgo/utxo-lib"),Y=require("@swapkit/helpers"),cX=require("bitcoinjs-lib");MX();x=o(require("coininfo"))});function _X(X){try{return jX(X),!0}catch(Z){return!1}}function FX(X){return jX(X)?.network}function m(X){let Z=jX(X);if(Z?.format==="legacy")return X;return PZ(Z)}function r(X){let Z=jX(X);return KZ(Z)}function jX(X){try{let Z=AZ(X);if(Z)return Z}catch(Z){}try{let Z=kZ(X);if(Z)return Z}catch(Z){}throw new CX.SwapKitError("toolbox_utxo_invalid_address",{address:X})}function AZ(X){try{let Z=HX.default.decode(X);if(Z.length!==21)throw new CX.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{hash:J,format:"legacy",network:"mainnet",type:"p2pkh"};case C.legacy.mainnet.p2sh:return{hash:J,format:"legacy",network:"mainnet",type:"p2sh"};case C.legacy.testnet.p2pkh:return{hash:J,format:"legacy",network:"testnet",type:"p2pkh"};case C.legacy.testnet.p2sh:return{hash:J,format:"legacy",network:"testnet",type:"p2sh"};case C.bitpay.mainnet.p2pkh:return{hash:J,format:"bitpay",network:"mainnet",type:"p2pkh"};case C.bitpay.mainnet.p2sh:return{hash:J,format:"bitpay",network:"mainnet",type:"p2sh"};default:return}}catch(Z){return}}function kZ(X){if(X.indexOf(":")!==-1)try{return rX(X)}catch(Z){}else{let Z=["bitcoincash","bchtest","bchreg"];for(let G of Z)try{return rX(`${G}:${X}`)}catch(J){}}return}function rX(X){try{let{hash:Z,prefix:G,type:J}=vX.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 PZ(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),HX.default.encode(G)}function KZ(X){let Z=X.network==="mainnet"?"bitcoincash":"bchtest",G=X.type==="p2pkh"?"P2PKH":"P2SH",J=new Uint8Array(X.hash);return vX.default.encode(Z,G,J)}var CX,HX,vX,IX,C;var dX=N(()=>{CX=require("@swapkit/helpers"),HX=o(require("bs58check")),vX=o(require("cashaddrjs"));((G)=>{G.Mainnet="mainnet";G.Testnet="testnet"})(IX||={});C={["legacy"]:{["mainnet"]:{["p2pkh"]:0,["p2sh"]:5},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}},["bitpay"]:{["mainnet"]:{["p2pkh"]:28,["p2sh"]:40},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}}}});var k,qX=(X)=>{switch(X){case k.Chain.Bitcoin:case k.Chain.BitcoinCash:return 550;case k.Chain.Dash:case k.Chain.Litecoin:return 5500;case k.Chain.Dogecoin:return 1e5;case k.Chain.Zcash:return 546;default:throw new k.SwapKitError("toolbox_utxo_not_supported",{chain:X})}},P=({inputs:X,outputs:Z,feeRate:G=1,chain:J=k.Chain.Bitcoin,changeAddress:j=""})=>{let $=Math.ceil(G),Q=X[0]&&"address"in X[0]&&X[0].address?i(X[0].address):"P2PKH",q=X.filter((z)=>b(z)*$<=z.value),L=LX+Z.reduce((z,T)=>z+d(T,Q),0),D=Z.reduce((z,T)=>z+T.value,0),W=L*$,U=0,M=[];for(let z of q){let T=b(z),_=$*T;W+=_,U+=z.value,M.push(z);let I=W+D;if(U<I)continue;let f=U-I,E=$*d({address:"",value:0},Q);if(f>E){let RX=E+W,bX=U-(D+RX);if(bX>Math.max(b({})*$,qX(J)))return{inputs:M,outputs:Z.concat({value:bX,address:j}),fee:RX}}return{inputs:M,outputs:Z,fee:W}}return{fee:$*l({inputs:X,outputs:Z,feeRate:$})}};var iX=N(()=>{k=require("@swapkit/helpers");h()});function K(X){let Z=Buffer.from(X,"utf8");return DX.script.compile([DX.opcodes.OP_RETURN,Z])}var aX,DX,wZ=1000,LX=10,sX=10,RZ=41,bZ=107,WX,BX,a,i=(X)=>{if(X.startsWith("bc1")||X.startsWith("tb1")||X.startsWith("ltc1")||X.startsWith("tltc1"))return"P2WPKH";if(X.startsWith("1")||X.startsWith("m")||X.startsWith("n")||X.startsWith("bitcoincash:q")||X.startsWith("bitcoincash:p")||X.startsWith("q")||X.startsWith("p")||X.startsWith("L")||X.startsWith("M")||X.startsWith("3")||X.startsWith("D")||X.startsWith("A")||X.startsWith("9")||X.startsWith("X")||X.startsWith("7")||X.startsWith("y")||X.startsWith("t1")||X.startsWith("t3")||X.startsWith("tm"))return"P2PKH";throw new aX.SwapKitError("toolbox_utxo_invalid_address",{address:X})},l=({inputs:X,outputs:Z,feeRate:G})=>{let J=X[0]&&"address"in X[0]&&X[0].address?i(X[0].address):"P2PKH",j=X.filter((Q)=>Q.value>=BX["type"in Q?Q.type:"P2PKH"]*Math.ceil(G)).reduce((Q,q)=>Q+b(q),0),$=Z?.reduce((Q,q)=>Q+d(q),0)||a[J];return LX+j+$},b=(X)=>{if("type"in X)return BX[X.type];if("address"in X&&X.address)return BX[i(X.address)];return RZ+bZ},d=(X,Z)=>{if(X?.script)return sX+X.script.length+(X.script.length>=74?2:1);if(Z)return a[Z];return a.P2PKH};var tX=N(()=>{aX=require("@swapkit/helpers"),DX=require("bitcoinjs-lib");((G)=>{G.P2PKH="P2PKH";G.P2WPKH="P2WPKH"})(WX||={});BX={["P2PKH"]:148,["P2WPKH"]:68},a={["P2PKH"]:34,["P2WPKH"]:31}});var h=N(()=>{oX();dX();iX();tX()});function AX(){return y.networks.zcash}function XZ(){return{messagePrefix:`\x18ZCash Signed Message:
|
|
1
|
+
var DZ=Object.create;var{getPrototypeOf:UZ,defineProperty:n,getOwnPropertyNames:EX,getOwnPropertyDescriptor:zZ}=Object,VX=Object.prototype.hasOwnProperty;var o=(X,Z,G)=>{G=X!=null?DZ(UZ(X)):{};let J=Z||!X||!X.__esModule?n(G,"default",{value:X,enumerable:!0}):G;for(let j of EX(X))if(!VX.call(J,j))n(J,j,{get:()=>X[j],enumerable:!0});return J},fX=new WeakMap,YZ=(X)=>{var Z=fX.get(X),G;if(Z)return Z;if(Z=n({},"__esModule",{value:!0}),X&&typeof X==="object"||typeof X==="function")EX(X).map((J)=>!VX.call(Z,J)&&n(Z,J,{get:()=>X[J],enumerable:!(G=zZ(X,J))||G.enumerable}));return fX.set(X,Z),Z};var MZ=(X,Z)=>{for(var G in Z)n(X,G,{get:Z[G],enumerable:!0,configurable:!0,set:(J)=>Z[G]=()=>J})};var N=(X,Z)=>()=>(X&&(Z=X(X=0)),Z);function gX(){function X(){let Z=Date.now(),G=YX||Z;return YX=G,Z>YX?Z:G+1}return TZ+X().toString(36)}function xX(X){return async function Z(G,J=!0){return(await SX.SwapKitApi.getChainBalance({chain:X,address:G,scamFilter:J})).map(({identifier:$,value:Q,decimal:q})=>{return new QX.AssetValue({decimal:q||QX.BaseDecimal[X],value:Q,identifier:$})})}}var QX,SX,TZ,YX=0;var MX=N(()=>{QX=require("@swapkit/helpers"),SX=require("@swapkit/helpers/api"),TZ=typeof process!=="undefined"&&process.pid?process.pid.toString(36):""});async function CZ({chain:X,txHash:Z}){let G=`${$X(X)}/push/transaction`,J=JSON.stringify({data:Z});try{let j=await Y.RequestClient.post(G,{headers:{"Content-Type":"application/json"},body:J});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({jsonrpc:"2.0",method:"sendrawtransaction",params:[Z],id:gX()}),q=await Y.RequestClient.post($,{headers:{"Content-Type":"application/json"},body:Q});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 $X(X){return`https://api.blockchair.com/${HZ(X)}`}function mX(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 HZ(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 vZ(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,mX(X))}catch(Z){return mX(X)}}async function TX(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 pX({address:X,chain:Z,apiKey:G}){if(!X)throw new Y.SwapKitError("toolbox_utxo_invalid_params",{error:"Address is required"});try{return(await TX(`${$X(Z)}/dashboards/address/${X}?transaction_details=true`,G))[X]}catch(J){return{utxo:[],address:{balance:0,transaction_count:0}}}}async function IZ({address:X,chain:Z,apiKey:G}){return(await pX({address:X,chain:Z,apiKey:G}))?.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 TX(`${$X(X)}/raw/transaction/${G}`,Z))?.[G]?.raw_transaction||""}catch(J){return console.error("Failed to fetch raw transaction:",J),""}}async function _Z({chain:X,address:Z,apiKey:G,offset:J=0,limit:j=30}){return(await TX(`${$X(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:L,script_hex:D,block_id:W,transaction_hash:U,index:M,value:z,spending_signature_hex:T})=>({hash:U,index:M,value:z,txHex:T,script_hex:D,is_confirmed:W!==-1,is_spent:L}))}function FZ(X){return X.reduce((Z,G)=>Z+G.value,0)}function lX(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 _Z({targetValue:J,chain:X,address:Z,apiKey:G,offset:$,limit:Q}),D=q.length<Q,W=q.filter(({is_spent:I})=>!I),U=FZ(W),M=j+U,z=J&&M>=J;if(D||z)return lX(W,J);let T=await nX({chain:X,address:Z,apiKey:G,offset:$+Q,limit:Q,accumulativeValue:M,targetValue:J}),_=[...W,...T];return lX(_,J)}catch(q){return console.error("Failed to fetch unspent UTXOs:",q),[]}}async function yZ({address:X,chain:Z,apiKey:G,fetchTxHex:J=!0,targetValue:j}){let $=await nX({chain:Z,address:X,apiKey:G,targetValue:j}),Q=[];for(let{hash:q,index:L,script_hex:D,value:W}of $){let U;if(J)U=await uX({txHash:q,chain:Z,apiKey:G});Q.push({address:X,hash:q,index:L,txHex:U,value:W,witnessUtxo:{value:W,script:Buffer.from(D,"hex")}})}return Q}function NZ(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)=>CZ({txHash:G,chain:X}),getRawTx:(G)=>uX({txHash:G,chain:X,apiKey:Z}),getSuggestedTxFee:()=>vZ(X),getBalance:(G)=>IZ({address:G,chain:X,apiKey:Z}),getAddressData:(G)=>pX({address:G,chain:X,apiKey:Z}),getUtxos:(G)=>yZ({...G,chain:X,apiKey:Z})}}function OZ(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 NZ(X)}function A(){return function X(Z){switch(Z){case Y.Chain.Bitcoin:return cX.networks.bitcoin;case Y.Chain.BitcoinCash:return x.default.bitcoincash.main.toBitcoinJS();case Y.Chain.Dash:return x.default.dash.main.toBitcoinJS();case Y.Chain.Litecoin:return x.default.litecoin.main.toBitcoinJS();case Y.Chain.Dogecoin:{let G={private:70615956,public:70617039},J=x.default.dogecoin.test;return J.versions.bip32=G,x.default.dogecoin.main.toBitcoinJS()}case Y.Chain.Zcash:return hX.networks.zcash;default:throw new Y.SwapKitError("toolbox_utxo_not_supported",{chain:Z})}}}var hX,Y,cX,x;var oX=N(()=>{hX=require("@bitgo/utxo-lib"),Y=require("@swapkit/helpers"),cX=require("bitcoinjs-lib");MX();x=o(require("coininfo"))});function _X(X){try{return jX(X),!0}catch(Z){return!1}}function FX(X){return jX(X)?.network}function m(X){let Z=jX(X);if(Z?.format==="legacy")return X;return PZ(Z)}function r(X){let Z=jX(X);return KZ(Z)}function jX(X){try{let Z=AZ(X);if(Z)return Z}catch(Z){}try{let Z=kZ(X);if(Z)return Z}catch(Z){}throw new CX.SwapKitError("toolbox_utxo_invalid_address",{address:X})}function AZ(X){try{let Z=HX.default.decode(X);if(Z.length!==21)throw new CX.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{hash:J,format:"legacy",network:"mainnet",type:"p2pkh"};case C.legacy.mainnet.p2sh:return{hash:J,format:"legacy",network:"mainnet",type:"p2sh"};case C.legacy.testnet.p2pkh:return{hash:J,format:"legacy",network:"testnet",type:"p2pkh"};case C.legacy.testnet.p2sh:return{hash:J,format:"legacy",network:"testnet",type:"p2sh"};case C.bitpay.mainnet.p2pkh:return{hash:J,format:"bitpay",network:"mainnet",type:"p2pkh"};case C.bitpay.mainnet.p2sh:return{hash:J,format:"bitpay",network:"mainnet",type:"p2sh"};default:return}}catch(Z){return}}function kZ(X){if(X.indexOf(":")!==-1)try{return rX(X)}catch(Z){}else{let Z=["bitcoincash","bchtest","bchreg"];for(let G of Z)try{return rX(`${G}:${X}`)}catch(J){}}return}function rX(X){try{let{hash:Z,prefix:G,type:J}=vX.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 PZ(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),HX.default.encode(G)}function KZ(X){let Z=X.network==="mainnet"?"bitcoincash":"bchtest",G=X.type==="p2pkh"?"P2PKH":"P2SH",J=new Uint8Array(X.hash);return vX.default.encode(Z,G,J)}var CX,HX,vX,IX,C;var dX=N(()=>{CX=require("@swapkit/helpers"),HX=o(require("bs58check")),vX=o(require("cashaddrjs"));((G)=>{G.Mainnet="mainnet";G.Testnet="testnet"})(IX||={});C={["legacy"]:{["mainnet"]:{["p2pkh"]:0,["p2sh"]:5},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}},["bitpay"]:{["mainnet"]:{["p2pkh"]:28,["p2sh"]:40},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}}}});var k,qX=(X)=>{switch(X){case k.Chain.Bitcoin:case k.Chain.BitcoinCash:return 550;case k.Chain.Dash:case k.Chain.Litecoin:return 5500;case k.Chain.Dogecoin:return 1e5;case k.Chain.Zcash:return 546;default:throw new k.SwapKitError("toolbox_utxo_not_supported",{chain:X})}},P=({inputs:X,outputs:Z,feeRate:G=1,chain:J=k.Chain.Bitcoin,changeAddress:j=""})=>{let $=Math.ceil(G),Q=X[0]&&"address"in X[0]&&X[0].address?i(X[0].address):"P2PKH",q=X.filter((z)=>b(z)*$<=z.value),L=LX+Z.reduce((z,T)=>z+d(T,Q),0),D=Z.reduce((z,T)=>z+T.value,0),W=L*$,U=0,M=[];for(let z of q){let T=b(z),_=$*T;W+=_,U+=z.value,M.push(z);let I=W+D;if(U<I)continue;let f=U-I,E=$*d({address:"",value:0},Q);if(f>E){let RX=E+W,bX=U-(D+RX);if(bX>Math.max(b({})*$,qX(J)))return{inputs:M,outputs:Z.concat({value:bX,address:j}),fee:RX}}return{inputs:M,outputs:Z,fee:W}}return{fee:$*l({inputs:X,outputs:Z,feeRate:$})}};var iX=N(()=>{k=require("@swapkit/helpers");h()});function K(X){let Z=Buffer.from(X,"utf8");return DX.script.compile([DX.opcodes.OP_RETURN,Z])}var aX,DX,wZ=1000,LX=10,sX=10,RZ=41,bZ=107,WX,BX,a,i=(X)=>{if(X.startsWith("bc1")||X.startsWith("tb1")||X.startsWith("ltc1")||X.startsWith("tltc1"))return"P2WPKH";if(X.startsWith("1")||X.startsWith("m")||X.startsWith("n")||X.startsWith("bitcoincash:q")||X.startsWith("bitcoincash:p")||X.startsWith("q")||X.startsWith("p")||X.startsWith("L")||X.startsWith("M")||X.startsWith("3")||X.startsWith("D")||X.startsWith("A")||X.startsWith("9")||X.startsWith("X")||X.startsWith("7")||X.startsWith("y")||X.startsWith("t1")||X.startsWith("t3")||X.startsWith("tm"))return"P2PKH";throw new aX.SwapKitError("toolbox_utxo_invalid_address",{address:X})},l=({inputs:X,outputs:Z,feeRate:G})=>{let J=X[0]&&"address"in X[0]&&X[0].address?i(X[0].address):"P2PKH",j=X.filter((Q)=>Q.value>=BX["type"in Q?Q.type:"P2PKH"]*Math.ceil(G)).reduce((Q,q)=>Q+b(q),0),$=Z?.reduce((Q,q)=>Q+d(q),0)||a[J];return LX+j+$},b=(X)=>{if("type"in X)return BX[X.type];if("address"in X&&X.address)return BX[i(X.address)];return RZ+bZ},d=(X,Z)=>{if(X?.script)return sX+X.script.length+(X.script.length>=74?2:1);if(Z)return a[Z];return a.P2PKH};var tX=N(()=>{aX=require("@swapkit/helpers"),DX=require("bitcoinjs-lib");((G)=>{G.P2PKH="P2PKH";G.P2WPKH="P2WPKH"})(WX||={});BX={["P2PKH"]:148,["P2WPKH"]:68},a={["P2PKH"]:34,["P2WPKH"]:31}});var h=N(()=>{oX();dX();iX();tX()});function AX(){return y.networks.zcash}function XZ(){return{messagePrefix:`\x18ZCash Signed Message:
|
|
2
2
|
`,bech32:void 0,bip32:{public:76067358,private:76066276},pubKeyHash:28,scriptHash:28,wif:128}}function s(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=AX();try{return y.address.toOutputScript(X,Z),!0}catch{let G=OX.default.decode(X);if(G.length<21)return!1;let J=G[0];return J===Z.pubKeyHash||J===Z.scriptHash}}catch{return!1}}function fZ({phrase:X,derivationPath:Z}){let G=NX.mnemonicToSeedSync(X),j=yX.HDKey.fromMasterSeed(G).derive(Z);if(!j.privateKey)throw new H.SwapKitError("toolbox_utxo_invalid_params");let $=XZ(),Q=y.ECPair.fromPrivateKey(Buffer.from(j.privateKey),{network:$}),q=y.crypto.hash160(Q.publicKey),{isStagenet:L}=H.SKConfig.get("envs"),D=L?Buffer.from([29,37]):Buffer.from([28,184]),W=Buffer.concat([D,q]),U=OX.default.encode(W);return{getAddress:()=>Promise.resolve(U),signTransaction:(M)=>{let z=M.signAllInputs(Q);return Promise.resolve(z)}}}function EZ({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 L=q?{script:j,value:0n}:{script:y.address.toOutputScript(Q,AX()),value:BigInt($.value)};G.addOutput(L)}return{psbt:G,inputs:X}}async function eX(X){let{assetValue:Z,recipient:G,memo:J,feeRate:j,sender:$,fetchTxHex:Q}=X,q=J?K(J):null,L=await F(H.Chain.Zcash).getUtxos({address:$,fetchTxHex:Q!==!1}),D=[{address:G,value:Number(Z.getBaseValue("string"))},...q?[{script:q,value:0}]:[]],{inputs:W,outputs:U}=P({inputs:L,outputs:D,feeRate:j,chain:H.Chain.Zcash,changeAddress:$});if(!(W&&U))throw new H.SwapKitError("toolbox_utxo_insufficient_balance",{sender:$,assetValue:Z});let M=y.bitgo.createPsbtForNetwork({network:AX()},{version:455});M.setVersion(4,!0);let z=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:z,value:_});let{psbt:I,inputs:f}=await EZ({inputs:W,outputs:U,psbt:M,sender:$,compiledMemo:q});return{inputs:f,outputs:U,psbt:I}}async function kX(X){let Z=await c.match(X).with({signer:c.P.not(c.P.nullish)},({signer:Q})=>Promise.resolve(Q)).with({phrase:c.P.string},({phrase:Q,derivationPath:q,index:L=0})=>{let D=q||H.NetworkDerivationPath[H.Chain.Zcash]||[44,133,0,0,0],W=H.updateDerivationPath(D,{index:L}),U=H.derivationPathToString(W);return fZ({phrase:Q,derivationPath:U})}).otherwise(()=>Promise.resolve(void 0)),G=await V({chain:H.Chain.Zcash,signer:Z});async function J({recipient:Q,assetValue:q,feeOptionKey:L=H.FeeOption.Fast,...D}){let W=await Z?.getAddress();if(!(Z&&W))throw new H.SwapKitError("toolbox_utxo_no_signer");let U=D.feeRate||(await G.getFeeRates())[L],{psbt:M}=await eX({...D,assetValue:q,feeRate:U,recipient:Q,sender:W}),z=await Z.signTransaction(M);return z.finalizeAllInputs(),G.broadcastTx(z.extractTransaction().toHex())}function j({phrase:Q,derivationPath:q="m/44'/133'/0'/0/0"}){let L=NX.mnemonicToSeedSync(Q),W=yX.HDKey.fromMasterSeed(L).derive(q);if(!W.privateKey)throw new H.SwapKitError("toolbox_utxo_invalid_params");let U=XZ();return y.ECPair.fromPrivateKey(Buffer.from(W.privateKey),{network:U})}function $({phrase:Q,derivationPath:q="m/44'/133'/0'/0/0"}){return j({phrase:Q,derivationPath:q}).toWIF()}return{...G,transfer:J,createTransaction:eX,createKeysForPath:j,getPrivateKeyFromMnemonic:$,validateAddress:s}}var y,yX,NX,H,OX,c;var t=N(()=>{y=require("@bitgo/utxo-lib"),yX=require("@scure/bip32"),NX=require("@scure/bip39"),H=require("@swapkit/helpers"),OX=o(require("bs58check")),c=require("ts-pattern");h();e()});function JZ({inputs:X,outputs:Z,chain:G,psbt:J,sender:j,compiledMemo:$}){for(let Q of X){let q=!!Q.witnessUtxo&&!XX.includes(G)&&{witnessUtxo:Q.witnessUtxo},L=XX.includes(G)&&{nonWitnessUtxo:Q.txHex?Buffer.from(Q.txHex,"hex"):void 0};J.addInput({hash:Q.hash,index:Q.index,...q,...L})}for(let Q of Z){let q="address"in Q&&Q.address?Q.address:j,L=Q.script;if(L&&!$)continue;let D=L?{script:$,value:0}:{address:q,value:Q.value};w.initEccLib(UX.default),J.addOutput(D)}return{psbt:J,inputs:X}}async function QZ({assetValue:X,recipient:Z,memo:G,feeRate:J,sender:j,fetchTxHex:$=!1}){let Q=X.chain,q=G?await K(G):null,L=await qZ({assetValue:X,recipient:Z,memo:G,sender:j,fetchTxHex:$}),{inputs:D,outputs:W}=P({...L,feeRate:J,chain:Q});if(!(D&&W))throw new B.SwapKitError("toolbox_utxo_insufficient_balance",{sender:j,assetValue:X});let U=await A(),M=new w.Psbt({network:U(Q)});if(Q===B.Chain.Dogecoin)M.setMaximumFeeRate(650000000);let{psbt:z,inputs:T}=await JZ({inputs:D,outputs:W,chain:Q,psbt:M,sender:j,compiledMemo:q});return{psbt:z,utxos:L.inputs,inputs:T}}async function $Z(){let X=await A();return function Z({address:G,chain:J}){if(J===B.Chain.BitcoinCash)return S(G);if(J===B.Chain.Zcash)return s(G);try{return w.initEccLib(UX.default),w.address.toOutputScript(G,X(J)),!0}catch(j){return!1}}}async function VZ({chain:X,phrase:Z,derivationPath:G}){let J=(await ZX(X))({phrase:Z,derivationPath:G});async function j(Q){return await Q.signAllInputs(J),Q}async function $(){return(await KX(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=B.derivationPathToString("derivationPath"in Z&&Z.derivationPath?Z.derivationPath:B.updateDerivationPath(B.NetworkDerivationPath[X],{index:J})),$=G?await VZ({chain:X,phrase:G,derivationPath:j}):("signer"in Z)?Z.signer:void 0;function Q(){return Promise.resolve($?.getAddress())}let q=await KX(X),L=await $Z(),D=await ZX(X);return{accumulative:P,calculateTxSize:l,getAddressFromKeys:q,getAddress:Q,validateAddress:(W)=>L({address:W,chain:X}),broadcastTx:(W)=>F(X).broadcastTx(W),createTransaction:QZ,createKeysForPath:D,getFeeRates:()=>GX(X),getInputsOutputsFee:jZ,transfer:xZ($),getPrivateKeyFromMnemonic:(W)=>{return D(W).toWIF()},getBalance:xX(X),estimateTransactionFee:gZ(X),estimateMaxSendableAmount:SZ(X)}}async function jZ({assetValue:X,feeOptionKey:Z=B.FeeOption.Fast,feeRate:G,memo:J,sender:j,recipient:$}){let Q=X.chain,q=await qZ({assetValue:X,sender:j,memo:J,recipient:$}),L=G?Math.floor(G):(await GX(Q))[Z];return P({...q,feeRate:L,chain:Q})}function SZ(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),L=j?Math.ceil(j):(await GX(X))[$],D=q?.utxo.map((T)=>({...T,type:"P2PKH",hash:""})).filter((T)=>T.value>Math.max(qX(X),b(T)*L));if(!D?.length)return B.AssetValue.from({chain:X});let W=B.AssetValue.from({chain:X,value:D.reduce((T,_)=>T+_.value,0)}),U=typeof Q==="number"?Array.from({length:Q},()=>({address:G,value:0})):Q;if(J){let T=await K(J);U.push({address:G,script:T,value:0})}let z=l({inputs:D,outputs:U,feeRate:L})*L;return W.sub(z)}}function gZ(X){return async(Z)=>{let G=await jZ(Z);return B.AssetValue.from({chain:X,value:B.SwapKitNumber.fromBigInt(BigInt(G.fee),8).getValue("string")})}}async function ZX(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 zX.ECPair.fromWIF($,Q);if(!J)throw new B.SwapKitError("toolbox_utxo_invalid_params",{error:"No phrase provided"});return zX.HDNode.fromSeedBuffer(Buffer.from(PX.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(UX.default),q=Z(X);if(j)return Q.fromWIF(j,q);let L=PX.mnemonicToSeedSync(J),D=GZ.HDKey.fromMasterSeed(L,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 KX(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=XX.includes(X)?w.payments.p2pkh:w.payments.p2wpkh,{address:$}=j({pubkey:J.publicKey,network:Z(X)});if(!$)throw new B.SwapKitError("toolbox_utxo_invalid_address",{error:"Address not defined"});return $}}function xZ(X){return async function Z({memo:G,recipient:J,feeOptionKey:j,feeRate:$,assetValue:Q}){let q=await X?.getAddress(),L=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 GX(L))[j||B.FeeOption.Fast],{psbt:W}=await QZ({recipient:J,feeRate:D,sender:q,assetValue:Q,memo:G}),U=await X.signTransaction(W);return U.finalizeAllInputs(),F(L).broadcastTx(U.extractTransaction().toHex())}}async function GX(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 qZ({assetValue:X,recipient:Z,memo:G,sender:J,fetchTxHex:j=!1}){let $=X.chain,Q=(await GX($))[B.FeeOption.Fastest],q=j||XX.includes($),L=X.getBaseValue("number"),D=Math.ceil(L+Q*5000);return{inputs:await F($).getUtxos({address:J,fetchTxHex:q,targetValue:D}),outputs:[{address:Z,value:L},...G?[{address:"",script:await K(G),value:0}]:[]]}}var B,w,ZZ,UX,zX,GZ,PX,XX;var e=N(()=>{B=require("@swapkit/helpers"),w=require("bitcoinjs-lib"),ZZ=require("ecpair");MX();h();JX();UX=o(require("@bitcoinerlab/secp256k1")),zX=require("@psf/bitcoincashjs-lib"),GZ=require("@scure/bip32"),PX=require("@scure/bip39");t();XX=[B.Chain.Dash,B.Chain.Dogecoin]});function p(X){return X.replace(/(bchtest:|bitcoincash:)/,"")}function S(X){let Z=p(X);return _X(Z)&&FX(Z)==="mainnet"}function g(X){return p(r(X))}async function mZ(X){async 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(g(J))},signTransaction:Z}}async function wX(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[O],{index:G})),j=Z?(await ZX(O))({phrase:Z,derivationPath:J}):void 0,$=j?await mZ(j):("signer"in X)?X.signer:void 0;function Q(){return Promise.resolve($?.getAddress())}let{getBalance:q,getFeeRates:L,broadcastTx:D,...W}=await V({chain:O});function U(M,z=!0){return q(p(r(M)))}return{...W,getAddress:Q,broadcastTx:D,createTransaction:WZ,buildTx:hZ,getAddressFromKeys:cZ,getBalance:U,getFeeRates:L,stripPrefix:p,stripToCashAddress:g,validateAddress:S,transfer:lZ({getFeeRates:L,broadcastTx:D,signer:$})}}async function WZ({assetValue:X,recipient:Z,memo:G,feeRate:J,sender:j}){if(!S(Z))throw new v.SwapKitError("toolbox_utxo_invalid_address",{address:Z});let $=Math.ceil(X.getBaseValue("number")+J*7500),Q=await F(O).getUtxos({address:g(j),fetchTxHex:!0,targetValue:$}),q=G?await K(G):null,L=[];L.push({address:Z,value:X.getBaseValue("number")});let{inputs:D,outputs:W}=P({inputs:Q,outputs:L,feeRate:J,chain:O});if(!(D&&W))throw new v.SwapKitError("toolbox_utxo_insufficient_balance",{sender:j,assetValue:X});let U=await A(),M=new u.TransactionBuilder(U(O));await Promise.all(D.map(async(z)=>{let T=await F(O).getRawTx(z.hash);M.addInput(u.Transaction.fromBuffer(Buffer.from(T,"hex")),z.index)}));for(let z of W){let T="address"in z&&z.address?z.address:m(j),_=await A(),I=u.address.toOutputScript(m(T),_(O));M.addOutput(I,z.value)}if(q)M.addOutput(q,0);return{builder:M,utxos:D}}function lZ({broadcastTx:X,getFeeRates:Z,signer:G}){return async function J({recipient:j,assetValue:$,feeOptionKey:Q=v.FeeOption.Fast,...q}){let L=await G?.getAddress();if(!(G&&L))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:W,utxos:U}=await WZ({...q,assetValue:$,feeRate:D,recipient:j,sender:L}),z=(await G.signTransaction({builder:W,utxos:U})).toHex();return X(z)}}async function hZ({assetValue:X,recipient:Z,memo:G,feeRate:J,sender:j,setSigHashType:$}){let Q=r(Z);if(!S(Q))throw new v.SwapKitError("toolbox_utxo_invalid_address",{address:Q});let q=Math.ceil(X.getBaseValue("number")+J*7500),L=await F(O).getUtxos({address:g(j),fetchTxHex:!1,targetValue:q}),D=Number(J.toFixed(0)),W=G?await K(G):null,U=[];if(U.push({address:m(Z),value:X.getBaseValue("number")}),W)U.push({script:W,value:0});let{inputs:M,outputs:z}=P({inputs:L,outputs:U,feeRate:D,chain:O});if(!(M&&z))throw new v.SwapKitError("toolbox_utxo_insufficient_balance",{sender:j,assetValue:X});let T=await A(),_=new LZ.Psbt({network:T(O)});for(let{hash:I,index:f,witnessUtxo:E}of M)_.addInput({hash:I,index:f,witnessUtxo:E,sighashType:$?65:void 0});for(let I of z){let f="address"in I&&I.address?I.address:m(j),E=I.script?W?{script:W,value:0}:void 0:{address:f,value:I.value};if(E)_.addOutput(E)}return{psbt:_,utxos:L,inputs:M}}function cZ(X){let Z=X.getAddress(0);return g(Z)}var u,v,LZ,O;var JX=N(()=>{u=require("@psf/bitcoincashjs-lib"),v=require("@swapkit/helpers"),LZ=require("bitcoinjs-lib");h();e();O=v.Chain.BitcoinCash});async function pZ(X,Z){switch(X){case R.Chain.BitcoinCash:return await wX(Z||{});case R.Chain.Zcash:return await kX(Z);case R.Chain.Bitcoin:case R.Chain.Dogecoin:case R.Chain.Litecoin:case R.Chain.Dash:return await V({chain:X,...Z});default:throw new R.SwapKitError("toolbox_utxo_not_supported",{chain:X})}}var R;var BZ=N(()=>{R=require("@swapkit/helpers");JX();e();t();JX();t()});var nZ={};MZ(nZ,{validateZcashAddress:()=>s,toLegacyAddress:()=>m,toCashAddress:()=>r,stripToCashAddress:()=>g,stripPrefix:()=>p,nonSegwitChains:()=>XX,isValidAddress:()=>_X,getUtxoToolbox:()=>pZ,getUtxoNetwork:()=>A,getUtxoApi:()=>F,getUTXOAddressValidator:()=>$Z,getScriptTypeForAddress:()=>i,getOutputSize:()=>d,getInputSize:()=>b,getDustThreshold:()=>qX,getCreateKeysForPath:()=>ZX,detectAddressNetwork:()=>FX,createZcashToolbox:()=>kX,createUTXOToolbox:()=>V,createCustomUtxoApi:()=>OZ,createBCHToolbox:()=>wX,compileMemo:()=>K,calculateTxSize:()=>l,bchValidateAddress:()=>S,addressFromKeysGetter:()=>KX,addInputsAndOutputs:()=>JZ,accumulative:()=>P,UtxoNetwork:()=>IX,UTXOScriptType:()=>WX,TX_OVERHEAD:()=>LX,OutputSizes:()=>a,OP_RETURN_OVERHEAD:()=>sX,MIN_TX_FEE:()=>wZ,InputSizes:()=>BX});module.exports=YZ(nZ);var oZ=N(()=>{BZ();JX();e();t();h()});oZ();
|
|
3
3
|
|
|
4
|
-
//# debugId=
|
|
4
|
+
//# debugId=5C8A0C8F6AB5533664756E2164756E21
|
|
5
5
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"sources": ["../src/utils.ts", "../src/utxo/helpers/api.ts", "../src/utxo/helpers/bchaddrjs.ts", "../src/utxo/helpers/coinselect.ts", "../src/utxo/helpers/txSize.ts", "../src/utxo/helpers/index.ts", "../src/utxo/toolbox/zcash.ts", "../src/utxo/toolbox/utxo.ts", "../src/utxo/toolbox/bitcoinCash.ts", "../src/utxo/toolbox/index.ts", "../src/utxo/index.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"import { AssetValue, BaseDecimal, type Chain } from \"@swapkit/helpers\";\nimport { SwapKitApi } from \"@swapkit/helpers/api\";\n\nconst pid = typeof process !== \"undefined\" && process.pid ? process.pid.toString(36) : \"\";\n\nlet last = 0;\nexport function uniqid() {\n function now() {\n const time = Date.now();\n const lastTime = last || time;\n last = lastTime;\n\n return time > last ? time : lastTime + 1;\n }\n\n return pid + now().toString(36);\n}\n\nexport function getBalance<T extends Chain>(chain: T) {\n return async function getBalance(address: string, scamFilter = true) {\n const balances = await SwapKitApi.getChainBalance({ chain, address, scamFilter });\n\n return balances.map(({ identifier, value, decimal }) => {\n return new AssetValue({ decimal: decimal || BaseDecimal[chain], value, identifier });\n });\n };\n}\n",
|
|
6
|
-
"import { networks as zcashNetworks } from \"@bitgo/utxo-lib\";\nimport {\n Chain,\n RequestClient,\n SKConfig,\n SwapKitError,\n type UTXOChain,\n warnOnce,\n} from \"@swapkit/helpers\";\nimport { networks } from \"bitcoinjs-lib\";\nimport { uniqid } from \"../../utils\";\n\n// @ts-ignore\nimport coininfo from \"coininfo\";\n\ntype BlockchairParams<T> = T & { chain: Chain; apiKey?: string };\ntype BlockchairFetchUnspentUtxoParams = BlockchairParams<{\n offset?: number;\n limit?: number;\n address: string;\n targetValue?: number;\n accumulativeValue?: number;\n}>;\n\nasync function broadcastUTXOTx({ chain, txHash }: { chain: Chain; txHash: string }) {\n // Use Blockchair's push transaction endpoint (no API key needed)\n const url = `${baseUrl(chain)}/push/transaction`;\n const body = JSON.stringify({ data: txHash });\n\n try {\n const response = await RequestClient.post<{\n data: {\n transaction_hash: string;\n } | null;\n context: {\n code: number;\n error?: string;\n };\n }>(url, {\n headers: { \"Content-Type\": \"application/json\" },\n body,\n });\n\n if (response.context.code !== 200) {\n throw new SwapKitError(\"toolbox_utxo_broadcast_failed\", {\n error: response.context.error || \"Transaction broadcast failed\",\n });\n }\n\n return response.data?.transaction_hash || txHash;\n } catch (error) {\n // Fallback to RPC if Blockchair fails\n const rpcUrl = SKConfig.get(\"rpcUrls\")[chain];\n if (rpcUrl) {\n const rpcBody = JSON.stringify({\n jsonrpc: \"2.0\",\n method: \"sendrawtransaction\",\n params: [txHash],\n id: uniqid(),\n });\n\n const rpcResponse = await RequestClient.post<{\n id: string;\n result: string;\n error: { message: string; code?: number } | null;\n }>(rpcUrl, { headers: { \"Content-Type\": \"application/json\" }, body: rpcBody });\n\n if (rpcResponse.error) {\n throw new SwapKitError(\"toolbox_utxo_broadcast_failed\", {\n error: rpcResponse.error?.message,\n });\n }\n\n if (rpcResponse.result.includes('\"code\":-26')) {\n throw new SwapKitError(\"toolbox_utxo_invalid_transaction\", {\n error: \"Transaction amount was too low\",\n });\n }\n\n return rpcResponse.result;\n }\n\n throw error;\n }\n}\n\nfunction baseUrl(chain: Chain) {\n return `https://api.blockchair.com/${mapChainToBlockchairChain(chain)}`;\n}\n\nfunction getDefaultTxFeeByChain(chain: Chain) {\n switch (chain) {\n case Chain.Bitcoin:\n return 5;\n case Chain.Dogecoin:\n return 10000;\n case Chain.Litecoin:\n return 1;\n case Chain.Zcash:\n return 1;\n default:\n return 2;\n }\n}\n\nfunction mapChainToBlockchairChain(chain: Chain) {\n switch (chain) {\n case Chain.BitcoinCash:\n return \"bitcoin-cash\";\n case Chain.Litecoin:\n return \"litecoin\";\n case Chain.Dash:\n return \"dash\";\n case Chain.Dogecoin:\n return \"dogecoin\";\n case Chain.Zcash:\n return \"zcash\";\n case Chain.Polkadot:\n return \"polkadot\";\n default:\n return \"bitcoin\";\n }\n}\n\nasync function getSuggestedTxFee(chain: Chain) {\n try {\n //Use Bitgo API for fee estimation\n //Refer: https://app.bitgo.com/docs/#operation/v2.tx.getfeeestimate\n const { feePerKb } = await RequestClient.get<{\n feePerKb: number;\n cpfpFeePerKb: number;\n numBlocks: number;\n feeByBlockTarget: { 1: number; 3: number };\n }>(`https://app.bitgo.com/api/v2/${chain.toLowerCase()}/tx/fee`);\n const suggestedFee = feePerKb / 1000;\n\n return Math.max(suggestedFee, getDefaultTxFeeByChain(chain));\n } catch (_error) {\n return getDefaultTxFeeByChain(chain);\n }\n}\n\nasync function blockchairRequest<T>(url: string, apiKey?: string): Promise<T> {\n const response = await RequestClient.get<BlockchairResponse<T>>(\n `${url}${apiKey ? `${url.includes(\"?\") ? \"&\" : \"?\"}key=${apiKey}` : \"\"}`,\n );\n\n if (!response || response.context.code !== 200)\n throw new SwapKitError(\"toolbox_utxo_api_error\", {\n error: `Failed to query ${url}`,\n });\n\n return response.data as T;\n}\n\nasync function getAddressData({ address, chain, apiKey }: BlockchairParams<{ address?: string }>) {\n if (!address)\n throw new SwapKitError(\"toolbox_utxo_invalid_params\", {\n error: \"Address is required\",\n });\n\n try {\n const response = await blockchairRequest<BlockchairAddressResponse>(\n `${baseUrl(chain)}/dashboards/address/${address}?transaction_details=true`,\n apiKey,\n );\n\n return response[address];\n } catch (_error) {\n return { utxo: [], address: { balance: 0, transaction_count: 0 } };\n }\n}\n\nasync function getUnconfirmedBalance({\n address,\n chain,\n apiKey,\n}: BlockchairParams<{ address?: string }>) {\n const response = await getAddressData({ address, chain, apiKey });\n\n return response?.address.balance || 0;\n}\n\nasync function getRawTx({ chain, apiKey, txHash }: BlockchairParams<{ txHash?: string }>) {\n if (!txHash)\n throw new SwapKitError(\"toolbox_utxo_invalid_params\", {\n error: \"TxHash is required\",\n });\n\n try {\n const rawTxResponse = await blockchairRequest<BlockchairRawTransactionResponse>(\n `${baseUrl(chain)}/raw/transaction/${txHash}`,\n apiKey,\n );\n return rawTxResponse?.[txHash]?.raw_transaction || \"\";\n } catch (error) {\n console.error(\"Failed to fetch raw transaction:\", error);\n return \"\";\n }\n}\n\nasync function fetchUtxosBatch({\n chain,\n address,\n apiKey,\n offset = 0,\n limit = 30,\n}: BlockchairFetchUnspentUtxoParams) {\n // Only fetch the fields we need to reduce payload size\n const fields = \"is_spent,transaction_hash,index,value,script_hex,block_id,spending_signature_hex\";\n\n const response = await blockchairRequest<BlockchairOutputsResponse[]>(\n // TODO - remove max value limit once we updated bitcoinjs-lib to support larger values\n `${baseUrl(chain)}/outputs?q=recipient(${address}),is_spent(false),value(..2000000000000000)&s=value(desc)&fields=${fields}&limit=${limit}&offset=${offset}`,\n apiKey,\n );\n\n const txs = response.map(\n ({\n is_spent,\n script_hex,\n block_id,\n transaction_hash,\n index,\n value,\n spending_signature_hex,\n }) => ({\n hash: transaction_hash,\n index,\n value,\n txHex: spending_signature_hex,\n script_hex,\n is_confirmed: block_id !== -1,\n is_spent,\n }),\n );\n\n return txs;\n}\n\nfunction getTxsValue(txs: Awaited<ReturnType<typeof fetchUtxosBatch>>) {\n return txs.reduce((total, tx) => total + tx.value, 0);\n}\n\nfunction pickMostValuableTxs(\n txs: Awaited<ReturnType<typeof fetchUtxosBatch>>,\n targetValue?: number,\n): Awaited<ReturnType<typeof fetchUtxosBatch>> {\n const sortedTxs = [...txs].sort((a, b) => b.value - a.value);\n\n if (targetValue) {\n const result = [];\n let accumulated = 0;\n\n for (const utxo of sortedTxs) {\n result.push(utxo);\n accumulated += utxo.value;\n if (accumulated >= targetValue) break;\n }\n\n return result;\n }\n\n return sortedTxs;\n}\n\nasync function getUnspentUtxos({\n chain,\n address,\n apiKey,\n targetValue,\n accumulativeValue = 0,\n offset = 0,\n limit = 30,\n}: BlockchairFetchUnspentUtxoParams): Promise<Awaited<ReturnType<typeof fetchUtxosBatch>>> {\n if (!address)\n throw new SwapKitError(\"toolbox_utxo_invalid_params\", {\n error: \"Address is required\",\n });\n\n try {\n const utxos = await fetchUtxosBatch({\n targetValue,\n chain,\n address,\n apiKey,\n offset,\n limit,\n });\n const utxosCount = utxos.length;\n const isComplete = utxosCount < limit;\n\n const unspentUtxos = utxos.filter(({ is_spent }) => !is_spent);\n\n const unspentUtxosValue = getTxsValue(unspentUtxos);\n const totalCurrentValue = accumulativeValue + unspentUtxosValue;\n\n const limitReached = targetValue && totalCurrentValue >= targetValue;\n\n if (isComplete || limitReached) {\n return pickMostValuableTxs(unspentUtxos, targetValue);\n }\n\n const nextBatch = await getUnspentUtxos({\n chain,\n address,\n apiKey,\n offset: offset + limit,\n limit,\n accumulativeValue: totalCurrentValue,\n targetValue,\n });\n\n const allUtxos = [...unspentUtxos, ...nextBatch];\n\n return pickMostValuableTxs(allUtxos, targetValue);\n } catch (error) {\n console.error(\"Failed to fetch unspent UTXOs:\", error);\n return [];\n }\n}\n\nasync function getUtxos({\n address,\n chain,\n apiKey,\n fetchTxHex = true,\n targetValue,\n}: BlockchairParams<{\n address: string;\n fetchTxHex?: boolean;\n targetValue?: number;\n}>) {\n const utxos = await getUnspentUtxos({ chain, address, apiKey, targetValue });\n\n const results = [];\n\n for (const { hash, index, script_hex, value } of utxos) {\n let txHex: string | undefined;\n if (fetchTxHex) {\n txHex = await getRawTx({ txHash: hash, chain, apiKey });\n }\n results.push({\n address,\n hash,\n index,\n txHex,\n value,\n witnessUtxo: { value, script: Buffer.from(script_hex, \"hex\") },\n });\n }\n return results;\n}\n\nfunction utxoApi(chain: UTXOChain) {\n const apiKey = SKConfig.get(\"apiKeys\").blockchair || \"\";\n\n warnOnce(!apiKey, \"No Blockchair API key found. Functionality will be limited.\");\n\n return {\n broadcastTx: (txHash: string) => broadcastUTXOTx({ txHash, chain }),\n getRawTx: (txHash: string) => getRawTx({ txHash, chain, apiKey }),\n getSuggestedTxFee: () => getSuggestedTxFee(chain),\n getBalance: (address: string) => getUnconfirmedBalance({ address, chain, apiKey }),\n getAddressData: (address: string) => getAddressData({ address, chain, apiKey }),\n getUtxos: (params: {\n address: string;\n fetchTxHex?: boolean;\n targetValue?: number;\n }) => getUtxos({ ...params, chain, apiKey }),\n };\n}\n\n/**\n * \"Factory\" to ensure typing for custom UTXO APIs\n */\nexport function createCustomUtxoApi(methods: ReturnType<typeof utxoApi>) {\n return methods;\n}\n\nexport function getUtxoApi(chain: UTXOChain) {\n const customUtxoApi = SKConfig.get(\"apis\")[chain];\n\n if (customUtxoApi) {\n warnOnce(true, \"Using custom UTXO API. Be sure to implement all methods to avoid issues.\");\n return customUtxoApi as ReturnType<typeof utxoApi>;\n }\n\n return utxoApi(chain);\n}\n\nexport function getUtxoNetwork() {\n return function getNetwork(chain: Chain) {\n switch (chain) {\n case Chain.Bitcoin:\n return networks.bitcoin;\n case Chain.BitcoinCash:\n return coininfo.bitcoincash.main.toBitcoinJS();\n case Chain.Dash:\n return coininfo.dash.main.toBitcoinJS();\n case Chain.Litecoin:\n return coininfo.litecoin.main.toBitcoinJS();\n\n case Chain.Dogecoin: {\n const bip32 = { private: 0x04358394, public: 0x043587cf };\n const test = coininfo.dogecoin.test;\n test.versions.bip32 = bip32;\n return coininfo.dogecoin.main.toBitcoinJS();\n }\n\n case Chain.Zcash: {\n return zcashNetworks.zcash;\n }\n\n default:\n throw new SwapKitError(\"toolbox_utxo_not_supported\", { chain });\n }\n };\n}\n\ninterface BlockchairVin {\n txid: string;\n vout: number;\n scriptSig: {\n asm: string;\n hex: string;\n };\n sequence: number;\n}\n\ninterface BlockchairVout {\n value: number;\n n: number;\n scriptPubKey: {\n asm: string;\n hex: string;\n address: string;\n type: string;\n addresses: string[];\n reqSigs: number;\n };\n}\n\ninterface BlockchairTransaction {\n block_id: number;\n hash: string;\n time: string;\n balance_change: number;\n}\n\ninterface BlockchairUtxo {\n block_id: number;\n transaction_hash: string;\n index: number;\n value: number;\n}\n\ninterface BlockchairAddressCoreData {\n type: string;\n script_hex: string;\n balance: number;\n balance_usd: number;\n received: number;\n received_usd: number;\n spent: number;\n spent_usd: number;\n output_count: number;\n unspent_output_count: number;\n first_seen_receiving: string;\n last_seen_receiving: string;\n first_seen_spending: null | string;\n last_seen_spending: null | string;\n transaction_count: number;\n scripthash_type: null | string;\n}\n\ninterface BlockchairInputOutputCommonData {\n block_id: number;\n transaction_id: number;\n index: number;\n transaction_hash: string;\n date: string;\n time: string;\n value: number;\n value_usd: number;\n recipient: string;\n type: string;\n script_hex: string;\n is_from_coinbase: boolean;\n is_spendable: boolean | null;\n is_spent: boolean;\n lifespan: number | null;\n cdd: number | null;\n}\n\ninterface BlockchairSpendingBlockData {\n spending_block_id: number | null;\n spending_transaction_id: number | null;\n spending_index: number | null;\n spending_transaction_hash: string | null;\n spending_date: string | null;\n spending_time: string | null;\n spending_value_usd: number | null;\n spending_sequence: number | null;\n spending_signature_hex: string | null;\n spending_witness: string | null;\n}\n\ninterface BlockchairAddressResponse {\n [key: string]: {\n address: BlockchairAddressCoreData;\n transactions: BlockchairTransaction[];\n utxo: BlockchairUtxo[];\n };\n}\n\ninterface BlockchairOutputsResponse\n extends BlockchairSpendingBlockData,\n BlockchairInputOutputCommonData {}\n\ninterface BlockchairRawTransactionResponse {\n [key: string]: {\n raw_transaction: string;\n decoded_raw_transaction: {\n txid: string;\n hash: string;\n version: number;\n size: number;\n vsize: number;\n weight: number;\n locktime: number;\n vin: BlockchairVin[];\n vout: BlockchairVout[];\n };\n };\n}\n\ninterface BlockchairResponse<T> {\n data: T;\n context: {\n code: number;\n source: string;\n results: number;\n state: number;\n market_price_usd: number;\n cache: {\n live: boolean;\n duration: number;\n since: string;\n until: string;\n time: any;\n };\n api: {\n version: string;\n last_major_update: string;\n next_major_update: null | string;\n documentation: string;\n notice: string;\n };\n servers: string;\n time: number;\n render_time: number;\n full_time: number;\n request_cost: number;\n };\n}\n",
|
|
6
|
+
"import { networks as zcashNetworks } from \"@bitgo/utxo-lib\";\nimport {\n Chain,\n RequestClient,\n SKConfig,\n SwapKitError,\n type UTXOChain,\n getRPCUrl,\n warnOnce,\n} from \"@swapkit/helpers\";\nimport { networks } from \"bitcoinjs-lib\";\nimport { uniqid } from \"../../utils\";\n\n// @ts-ignore\nimport coininfo from \"coininfo\";\n\ntype BlockchairParams<T> = T & { chain: Chain; apiKey?: string };\ntype BlockchairFetchUnspentUtxoParams = BlockchairParams<{\n offset?: number;\n limit?: number;\n address: string;\n targetValue?: number;\n accumulativeValue?: number;\n}>;\n\nasync function broadcastUTXOTx({ chain, txHash }: { chain: Chain; txHash: string }) {\n // Use Blockchair's push transaction endpoint (no API key needed)\n const url = `${baseUrl(chain)}/push/transaction`;\n const body = JSON.stringify({ data: txHash });\n\n try {\n const response = await RequestClient.post<{\n data: {\n transaction_hash: string;\n } | null;\n context: {\n code: number;\n error?: string;\n };\n }>(url, {\n headers: { \"Content-Type\": \"application/json\" },\n body,\n });\n\n if (response.context.code !== 200) {\n throw new SwapKitError(\"toolbox_utxo_broadcast_failed\", {\n error: response.context.error || \"Transaction broadcast failed\",\n });\n }\n\n return response.data?.transaction_hash || txHash;\n } catch (error) {\n // Fallback to RPC if Blockchair fails\n const rpcUrl = await getRPCUrl(chain);\n if (rpcUrl) {\n const rpcBody = JSON.stringify({\n jsonrpc: \"2.0\",\n method: \"sendrawtransaction\",\n params: [txHash],\n id: uniqid(),\n });\n\n const rpcResponse = await RequestClient.post<{\n id: string;\n result: string;\n error: { message: string; code?: number } | null;\n }>(rpcUrl, { headers: { \"Content-Type\": \"application/json\" }, body: rpcBody });\n\n if (rpcResponse.error) {\n throw new SwapKitError(\"toolbox_utxo_broadcast_failed\", {\n error: rpcResponse.error?.message,\n });\n }\n\n if (rpcResponse.result.includes('\"code\":-26')) {\n throw new SwapKitError(\"toolbox_utxo_invalid_transaction\", {\n error: \"Transaction amount was too low\",\n });\n }\n\n return rpcResponse.result;\n }\n\n throw error;\n }\n}\n\nfunction baseUrl(chain: Chain) {\n return `https://api.blockchair.com/${mapChainToBlockchairChain(chain)}`;\n}\n\nfunction getDefaultTxFeeByChain(chain: Chain) {\n switch (chain) {\n case Chain.Bitcoin:\n return 5;\n case Chain.Dogecoin:\n return 10000;\n case Chain.Litecoin:\n return 1;\n case Chain.Zcash:\n return 1;\n default:\n return 2;\n }\n}\n\nfunction mapChainToBlockchairChain(chain: Chain) {\n switch (chain) {\n case Chain.BitcoinCash:\n return \"bitcoin-cash\";\n case Chain.Litecoin:\n return \"litecoin\";\n case Chain.Dash:\n return \"dash\";\n case Chain.Dogecoin:\n return \"dogecoin\";\n case Chain.Zcash:\n return \"zcash\";\n case Chain.Polkadot:\n return \"polkadot\";\n default:\n return \"bitcoin\";\n }\n}\n\nasync function getSuggestedTxFee(chain: Chain) {\n try {\n //Use Bitgo API for fee estimation\n //Refer: https://app.bitgo.com/docs/#operation/v2.tx.getfeeestimate\n const { feePerKb } = await RequestClient.get<{\n feePerKb: number;\n cpfpFeePerKb: number;\n numBlocks: number;\n feeByBlockTarget: { 1: number; 3: number };\n }>(`https://app.bitgo.com/api/v2/${chain.toLowerCase()}/tx/fee`);\n const suggestedFee = feePerKb / 1000;\n\n return Math.max(suggestedFee, getDefaultTxFeeByChain(chain));\n } catch (_error) {\n return getDefaultTxFeeByChain(chain);\n }\n}\n\nasync function blockchairRequest<T>(url: string, apiKey?: string): Promise<T> {\n const response = await RequestClient.get<BlockchairResponse<T>>(\n `${url}${apiKey ? `${url.includes(\"?\") ? \"&\" : \"?\"}key=${apiKey}` : \"\"}`,\n );\n\n if (!response || response.context.code !== 200)\n throw new SwapKitError(\"toolbox_utxo_api_error\", {\n error: `Failed to query ${url}`,\n });\n\n return response.data as T;\n}\n\nasync function getAddressData({ address, chain, apiKey }: BlockchairParams<{ address?: string }>) {\n if (!address)\n throw new SwapKitError(\"toolbox_utxo_invalid_params\", {\n error: \"Address is required\",\n });\n\n try {\n const response = await blockchairRequest<BlockchairAddressResponse>(\n `${baseUrl(chain)}/dashboards/address/${address}?transaction_details=true`,\n apiKey,\n );\n\n return response[address];\n } catch (_error) {\n return { utxo: [], address: { balance: 0, transaction_count: 0 } };\n }\n}\n\nasync function getUnconfirmedBalance({\n address,\n chain,\n apiKey,\n}: BlockchairParams<{ address?: string }>) {\n const response = await getAddressData({ address, chain, apiKey });\n\n return response?.address.balance || 0;\n}\n\nasync function getRawTx({ chain, apiKey, txHash }: BlockchairParams<{ txHash?: string }>) {\n if (!txHash)\n throw new SwapKitError(\"toolbox_utxo_invalid_params\", {\n error: \"TxHash is required\",\n });\n\n try {\n const rawTxResponse = await blockchairRequest<BlockchairRawTransactionResponse>(\n `${baseUrl(chain)}/raw/transaction/${txHash}`,\n apiKey,\n );\n return rawTxResponse?.[txHash]?.raw_transaction || \"\";\n } catch (error) {\n console.error(\"Failed to fetch raw transaction:\", error);\n return \"\";\n }\n}\n\nasync function fetchUtxosBatch({\n chain,\n address,\n apiKey,\n offset = 0,\n limit = 30,\n}: BlockchairFetchUnspentUtxoParams) {\n // Only fetch the fields we need to reduce payload size\n const fields = \"is_spent,transaction_hash,index,value,script_hex,block_id,spending_signature_hex\";\n\n const response = await blockchairRequest<BlockchairOutputsResponse[]>(\n // TODO - remove max value limit once we updated bitcoinjs-lib to support larger values\n `${baseUrl(chain)}/outputs?q=recipient(${address}),is_spent(false),value(..2000000000000000)&s=value(desc)&fields=${fields}&limit=${limit}&offset=${offset}`,\n apiKey,\n );\n\n const txs = response.map(\n ({\n is_spent,\n script_hex,\n block_id,\n transaction_hash,\n index,\n value,\n spending_signature_hex,\n }) => ({\n hash: transaction_hash,\n index,\n value,\n txHex: spending_signature_hex,\n script_hex,\n is_confirmed: block_id !== -1,\n is_spent,\n }),\n );\n\n return txs;\n}\n\nfunction getTxsValue(txs: Awaited<ReturnType<typeof fetchUtxosBatch>>) {\n return txs.reduce((total, tx) => total + tx.value, 0);\n}\n\nfunction pickMostValuableTxs(\n txs: Awaited<ReturnType<typeof fetchUtxosBatch>>,\n targetValue?: number,\n): Awaited<ReturnType<typeof fetchUtxosBatch>> {\n const sortedTxs = [...txs].sort((a, b) => b.value - a.value);\n\n if (targetValue) {\n const result = [];\n let accumulated = 0;\n\n for (const utxo of sortedTxs) {\n result.push(utxo);\n accumulated += utxo.value;\n if (accumulated >= targetValue) break;\n }\n\n return result;\n }\n\n return sortedTxs;\n}\n\nasync function getUnspentUtxos({\n chain,\n address,\n apiKey,\n targetValue,\n accumulativeValue = 0,\n offset = 0,\n limit = 30,\n}: BlockchairFetchUnspentUtxoParams): Promise<Awaited<ReturnType<typeof fetchUtxosBatch>>> {\n if (!address)\n throw new SwapKitError(\"toolbox_utxo_invalid_params\", {\n error: \"Address is required\",\n });\n\n try {\n const utxos = await fetchUtxosBatch({\n targetValue,\n chain,\n address,\n apiKey,\n offset,\n limit,\n });\n const utxosCount = utxos.length;\n const isComplete = utxosCount < limit;\n\n const unspentUtxos = utxos.filter(({ is_spent }) => !is_spent);\n\n const unspentUtxosValue = getTxsValue(unspentUtxos);\n const totalCurrentValue = accumulativeValue + unspentUtxosValue;\n\n const limitReached = targetValue && totalCurrentValue >= targetValue;\n\n if (isComplete || limitReached) {\n return pickMostValuableTxs(unspentUtxos, targetValue);\n }\n\n const nextBatch = await getUnspentUtxos({\n chain,\n address,\n apiKey,\n offset: offset + limit,\n limit,\n accumulativeValue: totalCurrentValue,\n targetValue,\n });\n\n const allUtxos = [...unspentUtxos, ...nextBatch];\n\n return pickMostValuableTxs(allUtxos, targetValue);\n } catch (error) {\n console.error(\"Failed to fetch unspent UTXOs:\", error);\n return [];\n }\n}\n\nasync function getUtxos({\n address,\n chain,\n apiKey,\n fetchTxHex = true,\n targetValue,\n}: BlockchairParams<{\n address: string;\n fetchTxHex?: boolean;\n targetValue?: number;\n}>) {\n const utxos = await getUnspentUtxos({ chain, address, apiKey, targetValue });\n\n const results = [];\n\n for (const { hash, index, script_hex, value } of utxos) {\n let txHex: string | undefined;\n if (fetchTxHex) {\n txHex = await getRawTx({ txHash: hash, chain, apiKey });\n }\n results.push({\n address,\n hash,\n index,\n txHex,\n value,\n witnessUtxo: { value, script: Buffer.from(script_hex, \"hex\") },\n });\n }\n return results;\n}\n\nfunction utxoApi(chain: UTXOChain) {\n const apiKey = SKConfig.get(\"apiKeys\").blockchair || \"\";\n\n warnOnce({\n condition: !apiKey,\n id: \"no_blockchair_api_key_warning\",\n warning: \"No Blockchair API key found. Functionality will be limited.\",\n });\n\n return {\n broadcastTx: (txHash: string) => broadcastUTXOTx({ txHash, chain }),\n getRawTx: (txHash: string) => getRawTx({ txHash, chain, apiKey }),\n getSuggestedTxFee: () => getSuggestedTxFee(chain),\n getBalance: (address: string) => getUnconfirmedBalance({ address, chain, apiKey }),\n getAddressData: (address: string) => getAddressData({ address, chain, apiKey }),\n getUtxos: (params: {\n address: string;\n fetchTxHex?: boolean;\n targetValue?: number;\n }) => getUtxos({ ...params, chain, apiKey }),\n };\n}\n\n/**\n * \"Factory\" to ensure typing for custom UTXO APIs\n */\nexport function createCustomUtxoApi(methods: ReturnType<typeof utxoApi>) {\n return methods;\n}\n\nexport function getUtxoApi(chain: UTXOChain) {\n const customUtxoApi = SKConfig.get(\"apis\")[chain];\n\n if (customUtxoApi) {\n warnOnce({\n condition: true,\n id: \"custom_utxo_api_warning\",\n warning: \"Using custom UTXO API. Be sure to implement all methods to avoid issues.\",\n });\n return customUtxoApi as ReturnType<typeof utxoApi>;\n }\n\n return utxoApi(chain);\n}\n\nexport function getUtxoNetwork() {\n return function getNetwork(chain: Chain) {\n switch (chain) {\n case Chain.Bitcoin:\n return networks.bitcoin;\n case Chain.BitcoinCash:\n return coininfo.bitcoincash.main.toBitcoinJS();\n case Chain.Dash:\n return coininfo.dash.main.toBitcoinJS();\n case Chain.Litecoin:\n return coininfo.litecoin.main.toBitcoinJS();\n\n case Chain.Dogecoin: {\n const bip32 = { private: 0x04358394, public: 0x043587cf };\n const test = coininfo.dogecoin.test;\n test.versions.bip32 = bip32;\n return coininfo.dogecoin.main.toBitcoinJS();\n }\n\n case Chain.Zcash: {\n return zcashNetworks.zcash;\n }\n\n default:\n throw new SwapKitError(\"toolbox_utxo_not_supported\", { chain });\n }\n };\n}\n\ninterface BlockchairVin {\n txid: string;\n vout: number;\n scriptSig: {\n asm: string;\n hex: string;\n };\n sequence: number;\n}\n\ninterface BlockchairVout {\n value: number;\n n: number;\n scriptPubKey: {\n asm: string;\n hex: string;\n address: string;\n type: string;\n addresses: string[];\n reqSigs: number;\n };\n}\n\ninterface BlockchairTransaction {\n block_id: number;\n hash: string;\n time: string;\n balance_change: number;\n}\n\ninterface BlockchairUtxo {\n block_id: number;\n transaction_hash: string;\n index: number;\n value: number;\n}\n\ninterface BlockchairAddressCoreData {\n type: string;\n script_hex: string;\n balance: number;\n balance_usd: number;\n received: number;\n received_usd: number;\n spent: number;\n spent_usd: number;\n output_count: number;\n unspent_output_count: number;\n first_seen_receiving: string;\n last_seen_receiving: string;\n first_seen_spending: null | string;\n last_seen_spending: null | string;\n transaction_count: number;\n scripthash_type: null | string;\n}\n\ninterface BlockchairInputOutputCommonData {\n block_id: number;\n transaction_id: number;\n index: number;\n transaction_hash: string;\n date: string;\n time: string;\n value: number;\n value_usd: number;\n recipient: string;\n type: string;\n script_hex: string;\n is_from_coinbase: boolean;\n is_spendable: boolean | null;\n is_spent: boolean;\n lifespan: number | null;\n cdd: number | null;\n}\n\ninterface BlockchairSpendingBlockData {\n spending_block_id: number | null;\n spending_transaction_id: number | null;\n spending_index: number | null;\n spending_transaction_hash: string | null;\n spending_date: string | null;\n spending_time: string | null;\n spending_value_usd: number | null;\n spending_sequence: number | null;\n spending_signature_hex: string | null;\n spending_witness: string | null;\n}\n\ninterface BlockchairAddressResponse {\n [key: string]: {\n address: BlockchairAddressCoreData;\n transactions: BlockchairTransaction[];\n utxo: BlockchairUtxo[];\n };\n}\n\ninterface BlockchairOutputsResponse\n extends BlockchairSpendingBlockData,\n BlockchairInputOutputCommonData {}\n\ninterface BlockchairRawTransactionResponse {\n [key: string]: {\n raw_transaction: string;\n decoded_raw_transaction: {\n txid: string;\n hash: string;\n version: number;\n size: number;\n vsize: number;\n weight: number;\n locktime: number;\n vin: BlockchairVin[];\n vout: BlockchairVout[];\n };\n };\n}\n\ninterface BlockchairResponse<T> {\n data: T;\n context: {\n code: number;\n source: string;\n results: number;\n state: number;\n market_price_usd: number;\n cache: {\n live: boolean;\n duration: number;\n since: string;\n until: string;\n time: any;\n };\n api: {\n version: string;\n last_major_update: string;\n next_major_update: null | string;\n documentation: string;\n notice: string;\n };\n servers: string;\n time: number;\n render_time: number;\n full_time: number;\n request_cost: number;\n };\n}\n",
|
|
7
7
|
"import { SwapKitError } from \"@swapkit/helpers\";\nimport base58check from \"bs58check\";\n// @ts-ignore\nimport cashaddr from \"cashaddrjs\";\n\nenum Format {\n Legacy = \"legacy\",\n Bitpay = \"bitpay\",\n Cashaddr = \"cashaddr\",\n}\nenum UtxoNetwork {\n Mainnet = \"mainnet\",\n Testnet = \"testnet\",\n}\nenum Type {\n P2PKH = \"p2pkh\",\n P2SH = \"p2sh\",\n}\n\nconst VERSION_BYTE = {\n [Format.Legacy]: {\n [UtxoNetwork.Mainnet]: {\n [Type.P2PKH]: 0,\n [Type.P2SH]: 5,\n },\n [UtxoNetwork.Testnet]: {\n [Type.P2PKH]: 111,\n [Type.P2SH]: 196,\n },\n },\n [Format.Bitpay]: {\n [UtxoNetwork.Mainnet]: {\n [Type.P2PKH]: 28,\n [Type.P2SH]: 40,\n },\n [UtxoNetwork.Testnet]: {\n [Type.P2PKH]: 111,\n [Type.P2SH]: 196,\n },\n },\n};\n\ntype DecodedType = {\n format: Format;\n network: UtxoNetwork;\n type: Type;\n hash: any;\n};\n\nfunction isValidAddress(input: any) {\n try {\n decodeAddress(input);\n return true;\n } catch (_error) {\n return false;\n }\n}\n\nfunction detectAddressNetwork(address: string) {\n return decodeAddress(address)?.network;\n}\n\nfunction toLegacyAddress(address: string): string {\n const decoded = decodeAddress(address);\n if (decoded?.format === Format.Legacy) {\n return address;\n }\n return encodeAsLegacy(decoded);\n}\n\nfunction toCashAddress(address: string): string {\n const decoded = decodeAddress(address);\n return encodeAsCashaddr(decoded);\n}\n\nfunction decodeAddress(address: string) {\n try {\n const decoded = decodeBase58Address(address);\n if (decoded) {\n return decoded;\n }\n } catch (_error) {\n // Try to decode as cashaddr if base58 decoding fails.\n }\n try {\n const decoded = decodeCashAddress(address);\n if (decoded) {\n return decoded;\n }\n } catch (_error) {\n // Try to decode as bitpay if cashaddr decoding fails.\n }\n throw new SwapKitError(\"toolbox_utxo_invalid_address\", { address });\n}\n\nfunction decodeBase58Address(address: string) {\n try {\n const payload = base58check.decode(address);\n\n // BASE_58_CHECK_PAYLOAD_LENGTH\n if (payload.length !== 21) throw new SwapKitError(\"toolbox_utxo_invalid_address\", { address });\n const versionByte = payload[0];\n const hash = Array.prototype.slice.call(payload, 1);\n\n switch (versionByte) {\n case VERSION_BYTE[Format.Legacy][UtxoNetwork.Mainnet][Type.P2PKH]:\n return { hash, format: Format.Legacy, network: UtxoNetwork.Mainnet, type: Type.P2PKH };\n\n case VERSION_BYTE[Format.Legacy][UtxoNetwork.Mainnet][Type.P2SH]:\n return { hash, format: Format.Legacy, network: UtxoNetwork.Mainnet, type: Type.P2SH };\n\n case VERSION_BYTE[Format.Legacy][UtxoNetwork.Testnet][Type.P2PKH]:\n return { hash, format: Format.Legacy, network: UtxoNetwork.Testnet, type: Type.P2PKH };\n\n case VERSION_BYTE[Format.Legacy][UtxoNetwork.Testnet][Type.P2SH]:\n return { hash, format: Format.Legacy, network: UtxoNetwork.Testnet, type: Type.P2SH };\n\n case VERSION_BYTE[Format.Bitpay][UtxoNetwork.Mainnet][Type.P2PKH]:\n return { hash, format: Format.Bitpay, network: UtxoNetwork.Mainnet, type: Type.P2PKH };\n\n case VERSION_BYTE[Format.Bitpay][UtxoNetwork.Mainnet][Type.P2SH]:\n return { hash, format: Format.Bitpay, network: UtxoNetwork.Mainnet, type: Type.P2SH };\n\n default:\n return;\n }\n } catch (_error) {\n return;\n }\n}\n\nfunction decodeCashAddress(address: string) {\n if (address.indexOf(\":\") !== -1) {\n try {\n return decodeCashAddressWithPrefix(address);\n } catch (_error) {\n // Try to decode as legacy if cashaddr decoding fails.\n }\n } else {\n const prefixes = [\"bitcoincash\", \"bchtest\", \"bchreg\"];\n for (const prefix of prefixes) {\n try {\n return decodeCashAddressWithPrefix(`${prefix}:${address}`);\n } catch (_error) {\n // Try next prefix if decoding fails.\n }\n }\n }\n\n return;\n}\n\nfunction decodeCashAddressWithPrefix(address: string) {\n try {\n const { hash, prefix, type } = cashaddr.decode(address);\n\n return {\n format: Format.Cashaddr,\n hash: Array.prototype.slice.call(hash, 0),\n network: prefix === \"bitcoincash\" ? UtxoNetwork.Mainnet : UtxoNetwork.Testnet,\n type: type === \"P2PKH\" ? Type.P2PKH : Type.P2SH,\n };\n } catch (_error) {\n return;\n }\n}\n\nfunction encodeAsLegacy(decoded: DecodedType) {\n const versionByte = VERSION_BYTE[Format.Legacy][decoded.network][decoded.type];\n const buffer = Buffer.alloc(1 + decoded.hash.length);\n buffer[0] = versionByte;\n buffer.set(decoded.hash, 1);\n return base58check.encode(buffer);\n}\n\nfunction encodeAsCashaddr(decoded: DecodedType) {\n const prefix = decoded.network === UtxoNetwork.Mainnet ? \"bitcoincash\" : \"bchtest\";\n const type = decoded.type === Type.P2PKH ? \"P2PKH\" : \"P2SH\";\n const hash = new Uint8Array(decoded.hash);\n return cashaddr.encode(prefix, type, hash);\n}\n\nexport { detectAddressNetwork, isValidAddress, UtxoNetwork, toCashAddress, toLegacyAddress };\n",
|
|
8
8
|
"import { Chain, SwapKitError, type UTXOChain } from \"@swapkit/helpers\";\n\nimport {\n TX_OVERHEAD,\n UTXOScriptType,\n calculateTxSize,\n getInputSize,\n getOutputSize,\n getScriptTypeForAddress,\n} from \"../helpers\";\nimport type { TargetOutput, UTXOCalculateTxSizeParams, UTXOType } from \"../types\";\n\nexport const 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 const accumulative = ({\n inputs,\n outputs,\n feeRate: initialFeeRate = 1,\n chain = Chain.Bitcoin,\n changeAddress = \"\",\n}: UTXOCalculateTxSizeParams & {\n outputs: TargetOutput[];\n chain: UTXOChain;\n changeAddress?: string;\n}) => {\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 (\n remainderAfterExtraOutput >\n Math.max(getInputSize({} as UTXOType) * feeRate, getDustThreshold(chain))\n ) {\n return {\n inputs: inputsToUse,\n outputs: outputs.concat({ value: remainderAfterExtraOutput, address: changeAddress }),\n fee: feeAfterExtraOutput,\n };\n }\n }\n return {\n inputs: inputsToUse,\n outputs,\n fee: fees,\n };\n }\n\n // We don't have enough inputs, let's calculate transaction fee accrude to the last input\n return { fee: feeRate * calculateTxSize({ inputs, outputs, feeRate }) };\n};\n",
|
|
9
9
|
"import { SwapKitError } from \"@swapkit/helpers\";\nimport { opcodes, script } from \"bitcoinjs-lib\";\nimport type {\n TargetOutput,\n UTXOCalculateTxSizeParams,\n UTXOInputWithScriptType,\n UTXOType,\n} from \"../types\";\n\n/**\n * Minimum transaction fee\n * 1000 satoshi/kB (similar to current `minrelaytxfee`)\n * @see https://github.com/bitcoin/bitcoin/blob/db88db47278d2e7208c50d16ab10cb355067d071/src/validation.h#L56\n */\nexport const MIN_TX_FEE = 1000;\nexport const TX_OVERHEAD = 4 + 1 + 1 + 4; //10\nexport const OP_RETURN_OVERHEAD = 1 + 8 + 1; //10\nconst TX_INPUT_BASE = 32 + 4 + 1 + 4; // 41\nconst TX_INPUT_PUBKEYHASH = 107;\n\nexport function compileMemo(memo: string) {\n const data = Buffer.from(memo, \"utf8\"); // converts MEMO to buffer\n return script.compile([opcodes.OP_RETURN as number, data]); // Compile OP_RETURN script\n}\n\nexport enum UTXOScriptType {\n P2PKH = \"P2PKH\", // legacy\n // P2SH = 'P2SH', // multisig\n P2WPKH = \"P2WPKH\", // bech32 - native segwit\n // P2TR = \"P2TR\", // taproot\n}\n\nexport const InputSizes: Record<UTXOScriptType, number> = {\n [UTXOScriptType.P2PKH]: 148,\n // [UTXOScriptType.P2SH]: 91,\n [UTXOScriptType.P2WPKH]: 68,\n};\n\nexport const OutputSizes: Record<UTXOScriptType, number> = {\n [UTXOScriptType.P2PKH]: 34,\n // [UTXOScriptType.P2SH]: 91,\n [UTXOScriptType.P2WPKH]: 31,\n};\n\nexport const getScriptTypeForAddress = (address: string) => {\n // Native SegWit (Bech32) addresses - P2WPKH\n // Bitcoin: bc1 (mainnet), tb1 (testnet)\n // Litecoin: ltc1 (mainnet), tltc1 (testnet)\n if (\n address.startsWith(\"bc1\") ||\n address.startsWith(\"tb1\") ||\n address.startsWith(\"ltc1\") ||\n address.startsWith(\"tltc1\")\n ) {\n // Note: bc1p/tb1p are Taproot (P2TR) addresses, but we're treating them as P2WPKH for now\n // since P2TR is not yet implemented\n return UTXOScriptType.P2WPKH;\n }\n\n // P2SH addresses (Pay-to-Script-Hash) - Currently commented out but kept for future use\n // Bitcoin: 3 (mainnet), 2 (testnet)\n // Litecoin: M or 2 (mainnet), Q (testnet)\n // Dash: 7 (mainnet)\n // if (address.startsWith('3') || address.startsWith('2') ||\n // address.startsWith('M') || address.startsWith('Q') ||\n // address.startsWith('7')) {\n // return UTXOScriptType.P2SH;\n // }\n\n // Legacy P2PKH addresses\n // Bitcoin: 1 (mainnet), m/n (testnet)\n // Bitcoin Cash: bitcoincash:q (CashAddr format), q (legacy), 1 (legacy)\n // Litecoin: L (mainnet), m/n (testnet)\n // Dogecoin: D (mainnet), n (testnet)\n // Dash: X (mainnet), y (testnet)\n // Zcash: t1 (transparent mainnet), tm (testnet)\n if (\n // Bitcoin legacy\n address.startsWith(\"1\") ||\n address.startsWith(\"m\") ||\n address.startsWith(\"n\") ||\n // Bitcoin Cash\n address.startsWith(\"bitcoincash:q\") ||\n address.startsWith(\"bitcoincash:p\") ||\n address.startsWith(\"q\") ||\n address.startsWith(\"p\") ||\n // Litecoin legacy (also uses 3 for P2SH but treating as P2PKH for now)\n address.startsWith(\"L\") ||\n address.startsWith(\"M\") ||\n address.startsWith(\"3\") ||\n // Dogecoin\n address.startsWith(\"D\") ||\n address.startsWith(\"A\") ||\n address.startsWith(\"9\") ||\n // Dash\n address.startsWith(\"X\") ||\n address.startsWith(\"7\") ||\n address.startsWith(\"y\") ||\n // Zcash transparent addresses\n address.startsWith(\"t1\") ||\n address.startsWith(\"t3\") ||\n address.startsWith(\"tm\")\n ) {\n return UTXOScriptType.P2PKH;\n }\n\n throw new SwapKitError(\"toolbox_utxo_invalid_address\", { address });\n};\n\nexport const calculateTxSize = ({ inputs, outputs, feeRate }: UTXOCalculateTxSizeParams) => {\n const newTxType =\n inputs[0] && \"address\" in inputs[0] && inputs[0].address\n ? getScriptTypeForAddress(inputs[0].address)\n : UTXOScriptType.P2PKH;\n const inputSize = inputs\n .filter(\n (utxo) =>\n utxo.value >=\n InputSizes[\"type\" in utxo ? utxo.type : UTXOScriptType.P2PKH] * Math.ceil(feeRate),\n )\n .reduce((total, utxo) => total + getInputSize(utxo), 0);\n\n const outputSize =\n outputs?.reduce((total, output) => total + getOutputSize(output), 0) || OutputSizes[newTxType];\n\n return TX_OVERHEAD + inputSize + outputSize;\n};\n\nexport const getInputSize = (input: UTXOInputWithScriptType | UTXOType) => {\n if (\"type\" in input) {\n return InputSizes[input.type];\n }\n if (\"address\" in input && input.address) {\n return InputSizes[getScriptTypeForAddress(input.address as string)];\n }\n return TX_INPUT_BASE + TX_INPUT_PUBKEYHASH;\n};\n\nexport const getOutputSize = (output: TargetOutput, scriptType?: UTXOScriptType) => {\n if (output?.script) {\n return OP_RETURN_OVERHEAD + output.script.length + (output.script.length >= 74 ? 2 : 1);\n }\n if (scriptType) {\n return OutputSizes[scriptType];\n }\n return OutputSizes[UTXOScriptType.P2PKH];\n};\n",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"import {\n Chain,\n type ChainSigner,\n type DerivationPathArray,\n SwapKitError,\n type UTXOChain,\n} from \"@swapkit/helpers\";\nimport type { Psbt } from \"bitcoinjs-lib\";\n\nimport type { ZcashPsbt } from \"@bitgo/utxo-lib/dist/src/bitgo\";\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]: {\n signer: ChainSigner<{ builder: TransactionBuilderType; utxos: UTXOType[] }, TransactionType>;\n };\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]: {\n signer?: ChainSigner<ZcashPsbt, ZcashPsbt>;\n };\n};\n\nexport async function getUtxoToolbox<T extends keyof UTXOToolboxes>(\n chain: T,\n params?:\n | UtxoToolboxParams[T]\n | {\n phrase?: string;\n derivationPath?: DerivationPathArray;\n index?: number;\n },\n): Promise<UTXOToolboxes[T]> {\n switch (chain) {\n case Chain.BitcoinCash: {\n const toolbox = await createBCHToolbox(\n (params as UtxoToolboxParams[Chain.BitcoinCash]) || {},\n );\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 {\n stripToCashAddress,\n stripPrefix,\n bchValidateAddress,\n} from \"./bitcoinCash\";\nexport { validateZcashAddress } from \"./zcash\";\n",
|
|
15
15
|
"export * from \"./toolbox\";\nexport * from \"./toolbox/bitcoinCash\";\nexport * from \"./toolbox/utxo\";\nexport * from \"./toolbox/zcash\";\nexport * from \"./helpers\";\nexport * from \"./types\";\n"
|
|
16
16
|
],
|
|
17
|
-
"mappings": "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",
|
|
18
|
-
"debugId": "
|
|
17
|
+
"mappings": "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",
|
|
18
|
+
"debugId": "5C8A0C8F6AB5533664756E2164756E21",
|
|
19
19
|
"names": []
|
|
20
20
|
}
|
package/dist/src/utxo/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
var qZ=Object.create;var{getPrototypeOf:LZ,defineProperty:WX,getOwnPropertyNames:WZ}=Object;var BZ=Object.prototype.hasOwnProperty;var PG=(X,Z,G)=>{G=X!=null?qZ(LZ(X)):{};let J=Z||!X||!X.__esModule?WX(G,"default",{value:X,enumerable:!0}):G;for(let j of WZ(X))if(!BZ.call(J,j))WX(J,j,{get:()=>X[j],enumerable:!0});return J};var DZ=(X,Z)=>{for(var G in Z)WX(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 KG=((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 UZ,BaseDecimal as zZ}from"@swapkit/helpers";import{SwapKitApi as YZ}from"@swapkit/helpers/api";function AX(){function X(){let Z=Date.now(),G=BX||Z;return BX=G,Z>BX?Z:G+1}return MZ+X().toString(36)}function kX(X){return async function Z(G,J=!0){return(await YZ.getChainBalance({chain:X,address:G,scamFilter:J})).map(({identifier:$,value:Q,decimal:q})=>{return new UZ({decimal:q||zZ[X],value:Q,identifier:$})})}}var MZ,BX=0;var DX=I(()=>{MZ=typeof process!=="undefined"&&process.pid?process.pid.toString(36):""});import{networks as TZ}from"@bitgo/utxo-lib";import{Chain as C,RequestClient as XX,SKConfig as UX,SwapKitError as P,warnOnce as wX}from"@swapkit/helpers";import{networks as CZ}from"bitcoinjs-lib";import c from"coininfo";async function HZ({chain:X,txHash:Z}){let G=`${ZX(X)}/push/transaction`,J=JSON.stringify({data:Z});try{let j=await XX.post(G,{headers:{"Content-Type":"application/json"},body:J});if(j.context.code!==200)throw new P("toolbox_utxo_broadcast_failed",{error:j.context.error||"Transaction broadcast failed"});return j.data?.transaction_hash||Z}catch(j){let $=UX.get("rpcUrls")[X];if($){let Q=JSON.stringify({jsonrpc:"2.0",method:"sendrawtransaction",params:[Z],id:AX()}),q=await XX.post($,{headers:{"Content-Type":"application/json"},body:Q});if(q.error)throw new P("toolbox_utxo_broadcast_failed",{error:q.error?.message});if(q.result.includes('"code":-26'))throw new P("toolbox_utxo_invalid_transaction",{error:"Transaction amount was too low"});return q.result}throw j}}function ZX(X){return`https://api.blockchair.com/${vZ(X)}`}function PX(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 XX.get(`https://app.bitgo.com/api/v2/${X.toLowerCase()}/tx/fee`),G=Z/1000;return Math.max(G,PX(X))}catch(Z){return PX(X)}}async function zX(X,Z){let G=await XX.get(`${X}${Z?`${X.includes("?")?"&":"?"}key=${Z}`:""}`);if(!G||G.context.code!==200)throw new P("toolbox_utxo_api_error",{error:`Failed to query ${X}`});return G.data}async function RX({address:X,chain:Z,apiKey:G}){if(!X)throw new P("toolbox_utxo_invalid_params",{error:"Address is required"});try{return(await zX(`${ZX(Z)}/dashboards/address/${X}?transaction_details=true`,G))[X]}catch(J){return{utxo:[],address:{balance:0,transaction_count:0}}}}async function _Z({address:X,chain:Z,apiKey:G}){return(await RX({address:X,chain:Z,apiKey:G}))?.address.balance||0}async function bX({chain:X,apiKey:Z,txHash:G}){if(!G)throw new P("toolbox_utxo_invalid_params",{error:"TxHash is required"});try{return(await zX(`${ZX(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(`${ZX(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:L,script_hex:B,block_id:W,transaction_hash:D,index:z,value:U,spending_signature_hex:Y})=>({hash:D,index:z,value:U,txHex:Y,script_hex:B,is_confirmed:W!==-1,is_spent:L}))}function yZ(X){return X.reduce((Z,G)=>Z+G.value,0)}function KX(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 fX({chain:X,address:Z,apiKey:G,targetValue:J,accumulativeValue:j=0,offset:$=0,limit:Q=30}){if(!Z)throw new P("toolbox_utxo_invalid_params",{error:"Address is required"});try{let q=await FZ({targetValue:J,chain:X,address:Z,apiKey:G,offset:$,limit:Q}),B=q.length<Q,W=q.filter(({is_spent:T})=>!T),D=yZ(W),z=j+D,U=J&&z>=J;if(B||U)return KX(W,J);let Y=await fX({chain:X,address:Z,apiKey:G,offset:$+Q,limit:Q,accumulativeValue:z,targetValue:J}),H=[...W,...Y];return KX(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 fX({chain:Z,address:X,apiKey:G,targetValue:j}),Q=[];for(let{hash:q,index:L,script_hex:B,value:W}of $){let D;if(J)D=await bX({txHash:q,chain:Z,apiKey:G});Q.push({address:X,hash:q,index:L,txHex:D,value:W,witnessUtxo:{value:W,script:Buffer.from(B,"hex")}})}return Q}function OZ(X){let Z=UX.get("apiKeys").blockchair||"";return wX(!Z,"No Blockchair API key found. Functionality will be limited."),{broadcastTx:(G)=>HZ({txHash:G,chain:X}),getRawTx:(G)=>bX({txHash:G,chain:X,apiKey:Z}),getSuggestedTxFee:()=>IZ(X),getBalance:(G)=>_Z({address:G,chain:X,apiKey:Z}),getAddressData:(G)=>RX({address:G,chain:X,apiKey:Z}),getUtxos:(G)=>NZ({...G,chain:X,apiKey:Z})}}function AZ(X){return X}function v(X){let Z=UX.get("apis")[X];if(Z)return wX(!0,"Using custom UTXO API. Be sure to implement all methods to avoid issues."),Z;return OZ(X)}function y(){return function X(Z){switch(Z){case C.Bitcoin:return CZ.bitcoin;case C.BitcoinCash:return c.bitcoincash.main.toBitcoinJS();case C.Dash:return c.dash.main.toBitcoinJS();case C.Litecoin:return c.litecoin.main.toBitcoinJS();case C.Dogecoin:{let G={private:70615956,public:70617039},J=c.dogecoin.test;return J.versions.bip32=G,c.dogecoin.main.toBitcoinJS()}case C.Zcash:return TZ.zcash;default:throw new P("toolbox_utxo_not_supported",{chain:Z})}}}var EX=I(()=>{DX()});import{SwapKitError as SX}from"@swapkit/helpers";import gX from"bs58check";import xX from"cashaddrjs";function MX(X){try{return GX(X),!0}catch(Z){return!1}}function TX(X){return GX(X)?.network}function S(X){let Z=GX(X);if(Z?.format==="legacy")return X;return KZ(Z)}function p(X){let Z=GX(X);return wZ(Z)}function GX(X){try{let Z=kZ(X);if(Z)return Z}catch(Z){}try{let Z=PZ(X);if(Z)return Z}catch(Z){}throw new SX("toolbox_utxo_invalid_address",{address:X})}function kZ(X){try{let Z=gX.decode(X);if(Z.length!==21)throw new SX("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{hash:J,format:"legacy",network:"mainnet",type:"p2pkh"};case M.legacy.mainnet.p2sh:return{hash:J,format:"legacy",network:"mainnet",type:"p2sh"};case M.legacy.testnet.p2pkh:return{hash:J,format:"legacy",network:"testnet",type:"p2pkh"};case M.legacy.testnet.p2sh:return{hash:J,format:"legacy",network:"testnet",type:"p2sh"};case M.bitpay.mainnet.p2pkh:return{hash:J,format:"bitpay",network:"mainnet",type:"p2pkh"};case M.bitpay.mainnet.p2sh:return{hash:J,format:"bitpay",network:"mainnet",type:"p2sh"};default:return}}catch(Z){return}}function PZ(X){if(X.indexOf(":")!==-1)try{return VX(X)}catch(Z){}else{let Z=["bitcoincash","bchtest","bchreg"];for(let G of Z)try{return VX(`${G}:${X}`)}catch(J){}}return}function VX(X){try{let{hash:Z,prefix:G,type:J}=xX.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=M.legacy[X.network][X.type],G=Buffer.alloc(1+X.hash.length);return G[0]=Z,G.set(X.hash,1),gX.encode(G)}function wZ(X){let Z=X.network==="mainnet"?"bitcoincash":"bchtest",G=X.type==="p2pkh"?"P2PKH":"P2SH",J=new Uint8Array(X.hash);return xX.encode(Z,G,J)}var YX,M;var mX=I(()=>{((G)=>{G.Mainnet="mainnet";G.Testnet="testnet"})(YX||={});M={["legacy"]:{["mainnet"]:{["p2pkh"]:0,["p2sh"]:5},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}},["bitpay"]:{["mainnet"]:{["p2pkh"]:28,["p2sh"]:40},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}}}});import{Chain as b,SwapKitError as RZ}from"@swapkit/helpers";var JX=(X)=>{switch(X){case b.Bitcoin:case b.BitcoinCash:return 550;case b.Dash:case b.Litecoin:return 5500;case b.Dogecoin:return 1e5;case b.Zcash:return 546;default:throw new RZ("toolbox_utxo_not_supported",{chain:X})}},N=({inputs:X,outputs:Z,feeRate:G=1,chain:J=b.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((U)=>K(U)*$<=U.value),L=QX+Z.reduce((U,Y)=>U+u(Y,Q),0),B=Z.reduce((U,Y)=>U+Y.value,0),W=L*$,D=0,z=[];for(let U of q){let Y=K(U),H=$*Y;W+=H,D+=U.value,z.push(U);let T=W+B;if(D<T)continue;let w=D-T,R=$*u({address:"",value:0},Q);if(w>R){let NX=R+W,OX=D-(B+NX);if(OX>Math.max(K({})*$,JX(J)))return{inputs:z,outputs:Z.concat({value:OX,address:j}),fee:NX}}return{inputs:z,outputs:Z,fee:W}}return{fee:$*g({inputs:X,outputs:Z,feeRate:$})}};var lX=I(()=>{x()});import{SwapKitError as bZ}from"@swapkit/helpers";import{opcodes as fZ,script as EZ}from"bitcoinjs-lib";function O(X){let Z=Buffer.from(X,"utf8");return EZ.compile([fZ.OP_RETURN,Z])}var VZ=1000,QX=10,hX=10,SZ=41,gZ=107,$X,jX,o,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 bZ("toolbox_utxo_invalid_address",{address:X})},g=({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>=jX["type"in Q?Q.type:"P2PKH"]*Math.ceil(G)).reduce((Q,q)=>Q+K(q),0),$=Z?.reduce((Q,q)=>Q+u(q),0)||o[J];return QX+j+$},K=(X)=>{if("type"in X)return jX[X.type];if("address"in X&&X.address)return jX[n(X.address)];return SZ+gZ},u=(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 cX=I(()=>{((G)=>{G.P2PKH="P2PKH";G.P2WPKH="P2WPKH"})($X||={});jX={["P2PKH"]:148,["P2WPKH"]:68},o={["P2PKH"]:34,["P2WPKH"]:31}});var x=I(()=>{EX();mX();lX();cX()});import{crypto as xZ,ECPair as uX,bitgo as mZ,networks as lZ,address as nX}from"@bitgo/utxo-lib";import{HDKey as oX}from"@scure/bip32";import{mnemonicToSeedSync as rX}from"@scure/bip39";import{Chain as qX,FeeOption as hZ,NetworkDerivationPath as cZ,SKConfig as pZ,SwapKitError as LX,derivationPathToString as uZ,updateDerivationPath as nZ}from"@swapkit/helpers";import dX from"bs58check";import{P as CX,match as oZ}from"ts-pattern";function HX(){return lZ.zcash}function iX(){return{messagePrefix:`\x18ZCash Signed Message:
|
|
2
|
-
`,bech32:void 0,bip32:{public:76067358,private:76066276},pubKeyHash:28,scriptHash:28,wif:128}}function r(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=HX();try{return nX.toOutputScript(X,Z),!0}catch{let G=dX.decode(X);if(G.length<21)return!1;let J=G[0];return J===Z.pubKeyHash||J===Z.scriptHash}}catch{return!1}}function rZ({phrase:X,derivationPath:Z}){let G=rX(X),j=oX.fromMasterSeed(G).derive(Z);if(!j.privateKey)throw new LX("toolbox_utxo_invalid_params");let $=iX(),Q=uX.fromPrivateKey(Buffer.from(j.privateKey),{network:$}),q=xZ.hash160(Q.publicKey),{isStagenet:L}=pZ.get("envs"),B=L?Buffer.from([29,37]):Buffer.from([28,184]),W=Buffer.concat([B,q]),D=dX.encode(W);return{getAddress:()=>Promise.resolve(D),signTransaction:(z)=>{let U=z.signAllInputs(Q);return Promise.resolve(U)}}}function dZ({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 L=q?{script:j,value:0n}:{script:nX.toOutputScript(Q,HX()),value:BigInt($.value)};G.addOutput(L)}return{psbt:G,inputs:X}}async function pX(X){let{assetValue:Z,recipient:G,memo:J,feeRate:j,sender:$,fetchTxHex:Q}=X,q=J?O(J):null,L=await v(qX.Zcash).getUtxos({address:$,fetchTxHex:Q!==!1}),B=[{address:G,value:Number(Z.getBaseValue("string"))},...q?[{script:q,value:0}]:[]],{inputs:W,outputs:D}=N({inputs:L,outputs:B,feeRate:j,chain:qX.Zcash,changeAddress:$});if(!(W&&D))throw new LX("toolbox_utxo_insufficient_balance",{sender:$,assetValue:Z});let z=mZ.createPsbtForNetwork({network:HX()},{version:455});z.setVersion(4,!0);let U=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),z.addUnknownKeyValToGlobal({key:U,value:H});let{psbt:T,inputs:w}=await dZ({inputs:W,outputs:D,psbt:z,sender:$,compiledMemo:q});return{inputs:w,outputs:D,psbt:T}}async function vX(X){let Z=await oZ(X).with({signer:CX.not(CX.nullish)},({signer:Q})=>Promise.resolve(Q)).with({phrase:CX.string},({phrase:Q,derivationPath:q,index:L=0})=>{let B=q||cZ[qX.Zcash]||[44,133,0,0,0],W=nZ(B,{index:L}),D=uZ(W);return rZ({phrase:Q,derivationPath:D})}).otherwise(()=>Promise.resolve(void 0)),G=await f({chain:qX.Zcash,signer:Z});async function J({recipient:Q,assetValue:q,feeOptionKey:L=hZ.Fast,...B}){let W=await Z?.getAddress();if(!(Z&&W))throw new LX("toolbox_utxo_no_signer");let D=B.feeRate||(await G.getFeeRates())[L],{psbt:z}=await pX({...B,assetValue:q,feeRate:D,recipient:Q,sender:W}),U=await Z.signTransaction(z);return U.finalizeAllInputs(),G.broadcastTx(U.extractTransaction().toHex())}function j({phrase:Q,derivationPath:q="m/44'/133'/0'/0/0"}){let L=rX(Q),W=oX.fromMasterSeed(L).derive(q);if(!W.privateKey)throw new LX("toolbox_utxo_invalid_params");let D=iX();return uX.fromPrivateKey(Buffer.from(W.privateKey),{network:D})}function $({phrase:Q,derivationPath:q="m/44'/133'/0'/0/0"}){return j({phrase:Q,derivationPath:q}).toWIF()}return{...G,transfer:J,createTransaction:pX,createKeysForPath:j,getPrivateKeyFromMnemonic:$,validateAddress:r}}var d=I(()=>{x();i()});import{AssetValue as IX,Chain as _,DerivationPath as iZ,FeeOption as A,NetworkDerivationPath as aZ,SwapKitError as k,SwapKitNumber as sZ,applyFeeMultiplier as aX,derivationPathToString as tZ,updateDerivationPath as eZ}from"@swapkit/helpers";import{Psbt as XG,address as ZG,initEccLib as eX,payments as sX}from"bitcoinjs-lib";import{ECPairFactory as GG}from"ecpair";import _X from"@bitcoinerlab/secp256k1";import{ECPair as JG,HDNode as QG}from"@psf/bitcoincashjs-lib";import{HDKey as $G}from"@scure/bip32";import{mnemonicToSeedSync as tX}from"@scure/bip39";function XZ({inputs:X,outputs:Z,chain:G,psbt:J,sender:j,compiledMemo:$}){for(let Q of X){let q=!!Q.witnessUtxo&&!a.includes(G)&&{witnessUtxo:Q.witnessUtxo},L=a.includes(G)&&{nonWitnessUtxo:Q.txHex?Buffer.from(Q.txHex,"hex"):void 0};J.addInput({hash:Q.hash,index:Q.index,...q,...L})}for(let Q of Z){let q="address"in Q&&Q.address?Q.address:j,L=Q.script;if(L&&!$)continue;let B=L?{script:$,value:0}:{address:q,value:Q.value};eX(_X),J.addOutput(B)}return{psbt:J,inputs:X}}async function ZZ({assetValue:X,recipient:Z,memo:G,feeRate:J,sender:j,fetchTxHex:$=!1}){let Q=X.chain,q=G?await O(G):null,L=await QZ({assetValue:X,recipient:Z,memo:G,sender:j,fetchTxHex:$}),{inputs:B,outputs:W}=N({...L,feeRate:J,chain:Q});if(!(B&&W))throw new k("toolbox_utxo_insufficient_balance",{sender:j,assetValue:X});let D=await y(),z=new XG({network:D(Q)});if(Q===_.Dogecoin)z.setMaximumFeeRate(650000000);let{psbt:U,inputs:Y}=await XZ({inputs:B,outputs:W,chain:Q,psbt:z,sender:j,compiledMemo:q});return{psbt:U,utxos:L.inputs,inputs:Y}}async function GZ(){let X=await y();return function Z({address:G,chain:J}){if(J===_.BitcoinCash)return E(G);if(J===_.Zcash)return r(G);try{return eX(_X),ZG.toOutputScript(G,X(J)),!0}catch(j){return!1}}}async function jG({chain:X,phrase:Z,derivationPath:G}){let J=(await s(X))({phrase:Z,derivationPath:G});async function j(Q){return await Q.signAllInputs(J),Q}async function $(){return(await FX(X))(J)}return{getAddress:$,signTransaction:j}}async function f({chain:X,...Z}){let G="phrase"in Z?Z.phrase:void 0,J="index"in Z?Z.index||0:0,j=tZ("derivationPath"in Z&&Z.derivationPath?Z.derivationPath:eZ(aZ[X],{index:J})),$=G?await jG({chain:X,phrase:G,derivationPath:j}):("signer"in Z)?Z.signer:void 0;function Q(){return Promise.resolve($?.getAddress())}let q=await FX(X),L=await GZ(),B=await s(X);return{accumulative:N,calculateTxSize:g,getAddressFromKeys:q,getAddress:Q,validateAddress:(W)=>L({address:W,chain:X}),broadcastTx:(W)=>v(X).broadcastTx(W),createTransaction:ZZ,createKeysForPath:B,getFeeRates:()=>t(X),getInputsOutputsFee:JZ,transfer:WG($),getPrivateKeyFromMnemonic:(W)=>{return B(W).toWIF()},getBalance:kX(X),estimateTransactionFee:LG(X),estimateMaxSendableAmount:qG(X)}}async function JZ({assetValue:X,feeOptionKey:Z=A.Fast,feeRate:G,memo:J,sender:j,recipient:$}){let Q=X.chain,q=await QZ({assetValue:X,sender:j,memo:J,recipient:$}),L=G?Math.floor(G):(await t(Q))[Z];return N({...q,feeRate:L,chain:Q})}function qG(X){return async function Z({from:G,memo:J,feeRate:j,feeOptionKey:$=A.Fast,recipients:Q=1}){let q=await v(X).getAddressData(G),L=j?Math.ceil(j):(await t(X))[$],B=q?.utxo.map((Y)=>({...Y,type:"P2PKH",hash:""})).filter((Y)=>Y.value>Math.max(JX(X),K(Y)*L));if(!B?.length)return IX.from({chain:X});let W=IX.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 O(J);D.push({address:G,script:Y,value:0})}let U=g({inputs:B,outputs:D,feeRate:L})*L;return W.sub(U)}}function LG(X){return async(Z)=>{let G=await JZ(Z);return IX.from({chain:X,value:sZ.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=`${iZ.BCH}/0`,wif:$}){let Q=Z(X);if($)return JG.fromWIF($,Q);if(!J)throw new k("toolbox_utxo_invalid_params",{error:"No phrase provided"});return QG.fromSeedBuffer(Buffer.from(tX(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 k("toolbox_utxo_invalid_params",{error:"Either phrase or wif must be provided"});let Q=GG(_X),q=Z(X);if(j)return Q.fromWIF(j,q);let L=tX(J),B=$G.fromMasterSeed(L,q).derive($);if(!B.privateKey)throw new k("toolbox_utxo_invalid_params",{error:"Could not get private key from phrase"});return Q.fromPrivateKey(Buffer.from(B.privateKey),{network:q})};default:throw new k("toolbox_utxo_not_supported",{chain:X})}}async function FX(X){let Z=await y();return function G(J){if(!J)throw new k("toolbox_utxo_invalid_params",{error:"Keys must be provided"});let j=a.includes(X)?sX.p2pkh:sX.p2wpkh,{address:$}=j({pubkey:J.publicKey,network:Z(X)});if(!$)throw new k("toolbox_utxo_invalid_address",{error:"Address not defined"});return $}}function WG(X){return async function Z({memo:G,recipient:J,feeOptionKey:j,feeRate:$,assetValue:Q}){let q=await X?.getAddress(),L=Q.chain;if(!(X&&q))throw new k("toolbox_utxo_no_signer");if(!J)throw new k("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});let B=$||(await t(L))[j||A.Fast],{psbt:W}=await ZZ({recipient:J,feeRate:B,sender:q,assetValue:Q,memo:G}),D=await X.signTransaction(W);return D.finalizeAllInputs(),v(L).broadcastTx(D.extractTransaction().toHex())}}async function t(X){let Z=await v(X).getSuggestedTxFee();return{[A.Average]:Z,[A.Fast]:aX(Z,A.Fast),[A.Fastest]:aX(Z,A.Fastest)}}async function QZ({assetValue:X,recipient:Z,memo:G,sender:J,fetchTxHex:j=!1}){let $=X.chain,Q=(await t($))[A.Fastest],q=j||a.includes($),L=X.getBaseValue("number"),B=Math.ceil(L+Q*5000);return{inputs:await v($).getUtxos({address:J,fetchTxHex:q,targetValue:B}),outputs:[{address:Z,value:L},...G?[{address:"",script:await O(G),value:0}]:[]]}}var a;var i=I(()=>{DX();x();e();d();a=[_.Dash,_.Dogecoin]});import{Transaction as BG,TransactionBuilder as DG,address as UG}from"@psf/bitcoincashjs-lib";import{Chain as zG,FeeOption as YG,NetworkDerivationPath as MG,SwapKitError as m,derivationPathToString as TG,updateDerivationPath as CG}from"@swapkit/helpers";import{Psbt as HG}from"bitcoinjs-lib";function l(X){return X.replace(/(bchtest:|bitcoincash:)/,"")}function E(X){let Z=l(X);return MX(Z)&&TX(Z)==="mainnet"}function V(X){return l(p(X))}async function vG(X){async 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(V(J))},signTransaction:Z}}async function yX(X){let Z="phrase"in X?X.phrase:void 0,G="index"in X?X.index||0:0,J=TG("derivationPath"in X&&X.derivationPath?X.derivationPath:CG(MG[F],{index:G})),j=Z?(await s(F))({phrase:Z,derivationPath:J}):void 0,$=j?await vG(j):("signer"in X)?X.signer:void 0;function Q(){return Promise.resolve($?.getAddress())}let{getBalance:q,getFeeRates:L,broadcastTx:B,...W}=await f({chain:F});function D(z,U=!0){return q(l(p(z)))}return{...W,getAddress:Q,broadcastTx:B,createTransaction:$Z,buildTx:_G,getAddressFromKeys:FG,getBalance:D,getFeeRates:L,stripPrefix:l,stripToCashAddress:V,validateAddress:E,transfer:IG({getFeeRates:L,broadcastTx:B,signer:$})}}async function $Z({assetValue:X,recipient:Z,memo:G,feeRate:J,sender:j}){if(!E(Z))throw new m("toolbox_utxo_invalid_address",{address:Z});let $=Math.ceil(X.getBaseValue("number")+J*7500),Q=await v(F).getUtxos({address:V(j),fetchTxHex:!0,targetValue:$}),q=G?await O(G):null,L=[];L.push({address:Z,value:X.getBaseValue("number")});let{inputs:B,outputs:W}=N({inputs:Q,outputs:L,feeRate:J,chain:F});if(!(B&&W))throw new m("toolbox_utxo_insufficient_balance",{sender:j,assetValue:X});let D=await y(),z=new DG(D(F));await Promise.all(B.map(async(U)=>{let Y=await v(F).getRawTx(U.hash);z.addInput(BG.fromBuffer(Buffer.from(Y,"hex")),U.index)}));for(let U of W){let Y="address"in U&&U.address?U.address:S(j),H=await y(),T=UG.toOutputScript(S(Y),H(F));z.addOutput(T,U.value)}if(q)z.addOutput(q,0);return{builder:z,utxos:B}}function IG({broadcastTx:X,getFeeRates:Z,signer:G}){return async function J({recipient:j,assetValue:$,feeOptionKey:Q=YG.Fast,...q}){let L=await G?.getAddress();if(!(G&&L))throw new m("toolbox_utxo_no_signer");if(!j)throw new m("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});let B=q.feeRate||(await Z())[Q],{builder:W,utxos:D}=await $Z({...q,assetValue:$,feeRate:B,recipient:j,sender:L}),U=(await G.signTransaction({builder:W,utxos:D})).toHex();return X(U)}}async function _G({assetValue:X,recipient:Z,memo:G,feeRate:J,sender:j,setSigHashType:$}){let Q=p(Z);if(!E(Q))throw new m("toolbox_utxo_invalid_address",{address:Q});let q=Math.ceil(X.getBaseValue("number")+J*7500),L=await v(F).getUtxos({address:V(j),fetchTxHex:!1,targetValue:q}),B=Number(J.toFixed(0)),W=G?await O(G):null,D=[];if(D.push({address:S(Z),value:X.getBaseValue("number")}),W)D.push({script:W,value:0});let{inputs:z,outputs:U}=N({inputs:L,outputs:D,feeRate:B,chain:F});if(!(z&&U))throw new m("toolbox_utxo_insufficient_balance",{sender:j,assetValue:X});let Y=await y(),H=new HG({network:Y(F)});for(let{hash:T,index:w,witnessUtxo:R}of z)H.addInput({hash:T,index:w,witnessUtxo:R,sighashType:$?65:void 0});for(let T of U){let w="address"in T&&T.address?T.address:S(j),R=T.script?W?{script:W,value:0}:void 0:{address:w,value:T.value};if(R)H.addOutput(R)}return{psbt:H,utxos:L,inputs:z}}function FG(X){let Z=X.getAddress(0);return V(Z)}var F;var e=I(()=>{x();i();F=zG.BitcoinCash});import{Chain as h,SwapKitError as yG}from"@swapkit/helpers";async function NG(X,Z){switch(X){case h.BitcoinCash:return await yX(Z||{});case h.Zcash:return await vX(Z);case h.Bitcoin:case h.Dogecoin:case h.Litecoin:case h.Dash:return await f({chain:X,...Z});default:throw new yG("toolbox_utxo_not_supported",{chain:X})}}var jZ=I(()=>{e();i();d();e();d()});var AG={};DZ(AG,{validateZcashAddress:()=>r,toLegacyAddress:()=>S,toCashAddress:()=>p,stripToCashAddress:()=>V,stripPrefix:()=>l,nonSegwitChains:()=>a,isValidAddress:()=>MX,getUtxoToolbox:()=>NG,getUtxoNetwork:()=>y,getUtxoApi:()=>v,getUTXOAddressValidator:()=>GZ,getScriptTypeForAddress:()=>n,getOutputSize:()=>u,getInputSize:()=>K,getDustThreshold:()=>JX,getCreateKeysForPath:()=>s,detectAddressNetwork:()=>TX,createZcashToolbox:()=>vX,createUTXOToolbox:()=>f,createCustomUtxoApi:()=>AZ,createBCHToolbox:()=>yX,compileMemo:()=>O,calculateTxSize:()=>g,bchValidateAddress:()=>E,addressFromKeysGetter:()=>FX,addInputsAndOutputs:()=>XZ,accumulative:()=>N,UtxoNetwork:()=>YX,UTXOScriptType:()=>$X,TX_OVERHEAD:()=>QX,OutputSizes:()=>o,OP_RETURN_OVERHEAD:()=>hX,MIN_TX_FEE:()=>VZ,InputSizes:()=>jX});var kG=I(()=>{jZ();e();i();d();x()});kG();export{r as validateZcashAddress,S as toLegacyAddress,p as toCashAddress,V as stripToCashAddress,l as stripPrefix,a as nonSegwitChains,MX as isValidAddress,NG as getUtxoToolbox,y as getUtxoNetwork,v as getUtxoApi,GZ as getUTXOAddressValidator,n as getScriptTypeForAddress,u as getOutputSize,K as getInputSize,JX as getDustThreshold,s as getCreateKeysForPath,TX as detectAddressNetwork,vX as createZcashToolbox,f as createUTXOToolbox,AZ as createCustomUtxoApi,yX as createBCHToolbox,O as compileMemo,g as calculateTxSize,E as bchValidateAddress,FX as addressFromKeysGetter,XZ as addInputsAndOutputs,N as accumulative,YX as UtxoNetwork,$X as UTXOScriptType,QX as TX_OVERHEAD,o as OutputSizes,hX as OP_RETURN_OVERHEAD,VZ as MIN_TX_FEE,jX as InputSizes};
|
|
1
|
+
var qZ=Object.create;var{getPrototypeOf:LZ,defineProperty:WX,getOwnPropertyNames:WZ}=Object;var BZ=Object.prototype.hasOwnProperty;var KG=(X,Z,G)=>{G=X!=null?qZ(LZ(X)):{};let J=Z||!X||!X.__esModule?WX(G,"default",{value:X,enumerable:!0}):G;for(let j of WZ(X))if(!BZ.call(J,j))WX(J,j,{get:()=>X[j],enumerable:!0});return J};var DZ=(X,Z)=>{for(var G in Z)WX(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 wG=((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 UZ,BaseDecimal as zZ}from"@swapkit/helpers";import{SwapKitApi as YZ}from"@swapkit/helpers/api";function OX(){function X(){let Z=Date.now(),G=BX||Z;return BX=G,Z>BX?Z:G+1}return MZ+X().toString(36)}function AX(X){return async function Z(G,J=!0){return(await YZ.getChainBalance({chain:X,address:G,scamFilter:J})).map(({identifier:$,value:Q,decimal:q})=>{return new UZ({decimal:q||zZ[X],value:Q,identifier:$})})}}var MZ,BX=0;var DX=I(()=>{MZ=typeof process!=="undefined"&&process.pid?process.pid.toString(36):""});import{networks as TZ}from"@bitgo/utxo-lib";import{Chain as C,RequestClient as XX,SKConfig as KX,SwapKitError as P,getRPCUrl as CZ,warnOnce as wX}from"@swapkit/helpers";import{networks as HZ}from"bitcoinjs-lib";import c from"coininfo";async function vZ({chain:X,txHash:Z}){let G=`${ZX(X)}/push/transaction`,J=JSON.stringify({data:Z});try{let j=await XX.post(G,{headers:{"Content-Type":"application/json"},body:J});if(j.context.code!==200)throw new P("toolbox_utxo_broadcast_failed",{error:j.context.error||"Transaction broadcast failed"});return j.data?.transaction_hash||Z}catch(j){let $=await CZ(X);if($){let Q=JSON.stringify({jsonrpc:"2.0",method:"sendrawtransaction",params:[Z],id:OX()}),q=await XX.post($,{headers:{"Content-Type":"application/json"},body:Q});if(q.error)throw new P("toolbox_utxo_broadcast_failed",{error:q.error?.message});if(q.result.includes('"code":-26'))throw new P("toolbox_utxo_invalid_transaction",{error:"Transaction amount was too low"});return q.result}throw j}}function ZX(X){return`https://api.blockchair.com/${IZ(X)}`}function kX(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 IZ(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 _Z(X){try{let{feePerKb:Z}=await XX.get(`https://app.bitgo.com/api/v2/${X.toLowerCase()}/tx/fee`),G=Z/1000;return Math.max(G,kX(X))}catch(Z){return kX(X)}}async function UX(X,Z){let G=await XX.get(`${X}${Z?`${X.includes("?")?"&":"?"}key=${Z}`:""}`);if(!G||G.context.code!==200)throw new P("toolbox_utxo_api_error",{error:`Failed to query ${X}`});return G.data}async function RX({address:X,chain:Z,apiKey:G}){if(!X)throw new P("toolbox_utxo_invalid_params",{error:"Address is required"});try{return(await UX(`${ZX(Z)}/dashboards/address/${X}?transaction_details=true`,G))[X]}catch(J){return{utxo:[],address:{balance:0,transaction_count:0}}}}async function FZ({address:X,chain:Z,apiKey:G}){return(await RX({address:X,chain:Z,apiKey:G}))?.address.balance||0}async function bX({chain:X,apiKey:Z,txHash:G}){if(!G)throw new P("toolbox_utxo_invalid_params",{error:"TxHash is required"});try{return(await UX(`${ZX(X)}/raw/transaction/${G}`,Z))?.[G]?.raw_transaction||""}catch(J){return console.error("Failed to fetch raw transaction:",J),""}}async function yZ({chain:X,address:Z,apiKey:G,offset:J=0,limit:j=30}){return(await UX(`${ZX(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:L,script_hex:B,block_id:W,transaction_hash:D,index:z,value:U,spending_signature_hex:Y})=>({hash:D,index:z,value:U,txHex:Y,script_hex:B,is_confirmed:W!==-1,is_spent:L}))}function NZ(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 fX({chain:X,address:Z,apiKey:G,targetValue:J,accumulativeValue:j=0,offset:$=0,limit:Q=30}){if(!Z)throw new P("toolbox_utxo_invalid_params",{error:"Address is required"});try{let q=await yZ({targetValue:J,chain:X,address:Z,apiKey:G,offset:$,limit:Q}),B=q.length<Q,W=q.filter(({is_spent:T})=>!T),D=NZ(W),z=j+D,U=J&&z>=J;if(B||U)return PX(W,J);let Y=await fX({chain:X,address:Z,apiKey:G,offset:$+Q,limit:Q,accumulativeValue:z,targetValue:J}),H=[...W,...Y];return PX(H,J)}catch(q){return console.error("Failed to fetch unspent UTXOs:",q),[]}}async function OZ({address:X,chain:Z,apiKey:G,fetchTxHex:J=!0,targetValue:j}){let $=await fX({chain:Z,address:X,apiKey:G,targetValue:j}),Q=[];for(let{hash:q,index:L,script_hex:B,value:W}of $){let D;if(J)D=await bX({txHash:q,chain:Z,apiKey:G});Q.push({address:X,hash:q,index:L,txHex:D,value:W,witnessUtxo:{value:W,script:Buffer.from(B,"hex")}})}return Q}function AZ(X){let Z=KX.get("apiKeys").blockchair||"";return wX({condition:!Z,id:"no_blockchair_api_key_warning",warning:"No Blockchair API key found. Functionality will be limited."}),{broadcastTx:(G)=>vZ({txHash:G,chain:X}),getRawTx:(G)=>bX({txHash:G,chain:X,apiKey:Z}),getSuggestedTxFee:()=>_Z(X),getBalance:(G)=>FZ({address:G,chain:X,apiKey:Z}),getAddressData:(G)=>RX({address:G,chain:X,apiKey:Z}),getUtxos:(G)=>OZ({...G,chain:X,apiKey:Z})}}function kZ(X){return X}function v(X){let Z=KX.get("apis")[X];if(Z)return wX({condition:!0,id:"custom_utxo_api_warning",warning:"Using custom UTXO API. Be sure to implement all methods to avoid issues."}),Z;return AZ(X)}function y(){return function X(Z){switch(Z){case C.Bitcoin:return HZ.bitcoin;case C.BitcoinCash:return c.bitcoincash.main.toBitcoinJS();case C.Dash:return c.dash.main.toBitcoinJS();case C.Litecoin:return c.litecoin.main.toBitcoinJS();case C.Dogecoin:{let G={private:70615956,public:70617039},J=c.dogecoin.test;return J.versions.bip32=G,c.dogecoin.main.toBitcoinJS()}case C.Zcash:return TZ.zcash;default:throw new P("toolbox_utxo_not_supported",{chain:Z})}}}var EX=I(()=>{DX()});import{SwapKitError as SX}from"@swapkit/helpers";import gX from"bs58check";import xX from"cashaddrjs";function YX(X){try{return GX(X),!0}catch(Z){return!1}}function MX(X){return GX(X)?.network}function S(X){let Z=GX(X);if(Z?.format==="legacy")return X;return wZ(Z)}function p(X){let Z=GX(X);return RZ(Z)}function GX(X){try{let Z=PZ(X);if(Z)return Z}catch(Z){}try{let Z=KZ(X);if(Z)return Z}catch(Z){}throw new SX("toolbox_utxo_invalid_address",{address:X})}function PZ(X){try{let Z=gX.decode(X);if(Z.length!==21)throw new SX("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{hash:J,format:"legacy",network:"mainnet",type:"p2pkh"};case M.legacy.mainnet.p2sh:return{hash:J,format:"legacy",network:"mainnet",type:"p2sh"};case M.legacy.testnet.p2pkh:return{hash:J,format:"legacy",network:"testnet",type:"p2pkh"};case M.legacy.testnet.p2sh:return{hash:J,format:"legacy",network:"testnet",type:"p2sh"};case M.bitpay.mainnet.p2pkh:return{hash:J,format:"bitpay",network:"mainnet",type:"p2pkh"};case M.bitpay.mainnet.p2sh:return{hash:J,format:"bitpay",network:"mainnet",type:"p2sh"};default:return}}catch(Z){return}}function KZ(X){if(X.indexOf(":")!==-1)try{return VX(X)}catch(Z){}else{let Z=["bitcoincash","bchtest","bchreg"];for(let G of Z)try{return VX(`${G}:${X}`)}catch(J){}}return}function VX(X){try{let{hash:Z,prefix:G,type:J}=xX.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 wZ(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),gX.encode(G)}function RZ(X){let Z=X.network==="mainnet"?"bitcoincash":"bchtest",G=X.type==="p2pkh"?"P2PKH":"P2SH",J=new Uint8Array(X.hash);return xX.encode(Z,G,J)}var zX,M;var mX=I(()=>{((G)=>{G.Mainnet="mainnet";G.Testnet="testnet"})(zX||={});M={["legacy"]:{["mainnet"]:{["p2pkh"]:0,["p2sh"]:5},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}},["bitpay"]:{["mainnet"]:{["p2pkh"]:28,["p2sh"]:40},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}}}});import{Chain as b,SwapKitError as bZ}from"@swapkit/helpers";var JX=(X)=>{switch(X){case b.Bitcoin:case b.BitcoinCash:return 550;case b.Dash:case b.Litecoin:return 5500;case b.Dogecoin:return 1e5;case b.Zcash:return 546;default:throw new bZ("toolbox_utxo_not_supported",{chain:X})}},N=({inputs:X,outputs:Z,feeRate:G=1,chain:J=b.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((U)=>K(U)*$<=U.value),L=QX+Z.reduce((U,Y)=>U+u(Y,Q),0),B=Z.reduce((U,Y)=>U+Y.value,0),W=L*$,D=0,z=[];for(let U of q){let Y=K(U),H=$*Y;W+=H,D+=U.value,z.push(U);let T=W+B;if(D<T)continue;let w=D-T,R=$*u({address:"",value:0},Q);if(w>R){let yX=R+W,NX=D-(B+yX);if(NX>Math.max(K({})*$,JX(J)))return{inputs:z,outputs:Z.concat({value:NX,address:j}),fee:yX}}return{inputs:z,outputs:Z,fee:W}}return{fee:$*g({inputs:X,outputs:Z,feeRate:$})}};var lX=I(()=>{x()});import{SwapKitError as fZ}from"@swapkit/helpers";import{opcodes as EZ,script as VZ}from"bitcoinjs-lib";function O(X){let Z=Buffer.from(X,"utf8");return VZ.compile([EZ.OP_RETURN,Z])}var SZ=1000,QX=10,hX=10,gZ=41,xZ=107,$X,jX,o,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 fZ("toolbox_utxo_invalid_address",{address:X})},g=({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>=jX["type"in Q?Q.type:"P2PKH"]*Math.ceil(G)).reduce((Q,q)=>Q+K(q),0),$=Z?.reduce((Q,q)=>Q+u(q),0)||o[J];return QX+j+$},K=(X)=>{if("type"in X)return jX[X.type];if("address"in X&&X.address)return jX[n(X.address)];return gZ+xZ},u=(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 cX=I(()=>{((G)=>{G.P2PKH="P2PKH";G.P2WPKH="P2WPKH"})($X||={});jX={["P2PKH"]:148,["P2WPKH"]:68},o={["P2PKH"]:34,["P2WPKH"]:31}});var x=I(()=>{EX();mX();lX();cX()});import{crypto as mZ,ECPair as uX,bitgo as lZ,networks as hZ,address as nX}from"@bitgo/utxo-lib";import{HDKey as oX}from"@scure/bip32";import{mnemonicToSeedSync as rX}from"@scure/bip39";import{Chain as qX,FeeOption as cZ,NetworkDerivationPath as pZ,SKConfig as uZ,SwapKitError as LX,derivationPathToString as nZ,updateDerivationPath as oZ}from"@swapkit/helpers";import dX from"bs58check";import{P as TX,match as rZ}from"ts-pattern";function CX(){return hZ.zcash}function iX(){return{messagePrefix:`\x18ZCash Signed Message:
|
|
2
|
+
`,bech32:void 0,bip32:{public:76067358,private:76066276},pubKeyHash:28,scriptHash:28,wif:128}}function r(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=CX();try{return nX.toOutputScript(X,Z),!0}catch{let G=dX.decode(X);if(G.length<21)return!1;let J=G[0];return J===Z.pubKeyHash||J===Z.scriptHash}}catch{return!1}}function dZ({phrase:X,derivationPath:Z}){let G=rX(X),j=oX.fromMasterSeed(G).derive(Z);if(!j.privateKey)throw new LX("toolbox_utxo_invalid_params");let $=iX(),Q=uX.fromPrivateKey(Buffer.from(j.privateKey),{network:$}),q=mZ.hash160(Q.publicKey),{isStagenet:L}=uZ.get("envs"),B=L?Buffer.from([29,37]):Buffer.from([28,184]),W=Buffer.concat([B,q]),D=dX.encode(W);return{getAddress:()=>Promise.resolve(D),signTransaction:(z)=>{let U=z.signAllInputs(Q);return Promise.resolve(U)}}}function iZ({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 L=q?{script:j,value:0n}:{script:nX.toOutputScript(Q,CX()),value:BigInt($.value)};G.addOutput(L)}return{psbt:G,inputs:X}}async function pX(X){let{assetValue:Z,recipient:G,memo:J,feeRate:j,sender:$,fetchTxHex:Q}=X,q=J?O(J):null,L=await v(qX.Zcash).getUtxos({address:$,fetchTxHex:Q!==!1}),B=[{address:G,value:Number(Z.getBaseValue("string"))},...q?[{script:q,value:0}]:[]],{inputs:W,outputs:D}=N({inputs:L,outputs:B,feeRate:j,chain:qX.Zcash,changeAddress:$});if(!(W&&D))throw new LX("toolbox_utxo_insufficient_balance",{sender:$,assetValue:Z});let z=lZ.createPsbtForNetwork({network:CX()},{version:455});z.setVersion(4,!0);let U=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),z.addUnknownKeyValToGlobal({key:U,value:H});let{psbt:T,inputs:w}=await iZ({inputs:W,outputs:D,psbt:z,sender:$,compiledMemo:q});return{inputs:w,outputs:D,psbt:T}}async function HX(X){let Z=await rZ(X).with({signer:TX.not(TX.nullish)},({signer:Q})=>Promise.resolve(Q)).with({phrase:TX.string},({phrase:Q,derivationPath:q,index:L=0})=>{let B=q||pZ[qX.Zcash]||[44,133,0,0,0],W=oZ(B,{index:L}),D=nZ(W);return dZ({phrase:Q,derivationPath:D})}).otherwise(()=>Promise.resolve(void 0)),G=await f({chain:qX.Zcash,signer:Z});async function J({recipient:Q,assetValue:q,feeOptionKey:L=cZ.Fast,...B}){let W=await Z?.getAddress();if(!(Z&&W))throw new LX("toolbox_utxo_no_signer");let D=B.feeRate||(await G.getFeeRates())[L],{psbt:z}=await pX({...B,assetValue:q,feeRate:D,recipient:Q,sender:W}),U=await Z.signTransaction(z);return U.finalizeAllInputs(),G.broadcastTx(U.extractTransaction().toHex())}function j({phrase:Q,derivationPath:q="m/44'/133'/0'/0/0"}){let L=rX(Q),W=oX.fromMasterSeed(L).derive(q);if(!W.privateKey)throw new LX("toolbox_utxo_invalid_params");let D=iX();return uX.fromPrivateKey(Buffer.from(W.privateKey),{network:D})}function $({phrase:Q,derivationPath:q="m/44'/133'/0'/0/0"}){return j({phrase:Q,derivationPath:q}).toWIF()}return{...G,transfer:J,createTransaction:pX,createKeysForPath:j,getPrivateKeyFromMnemonic:$,validateAddress:r}}var d=I(()=>{x();i()});import{AssetValue as vX,Chain as _,DerivationPath as aZ,FeeOption as A,NetworkDerivationPath as sZ,SwapKitError as k,SwapKitNumber as tZ,applyFeeMultiplier as aX,derivationPathToString as eZ,updateDerivationPath as XG}from"@swapkit/helpers";import{Psbt as ZG,address as GG,initEccLib as eX,payments as sX}from"bitcoinjs-lib";import{ECPairFactory as JG}from"ecpair";import IX from"@bitcoinerlab/secp256k1";import{ECPair as QG,HDNode as $G}from"@psf/bitcoincashjs-lib";import{HDKey as jG}from"@scure/bip32";import{mnemonicToSeedSync as tX}from"@scure/bip39";function XZ({inputs:X,outputs:Z,chain:G,psbt:J,sender:j,compiledMemo:$}){for(let Q of X){let q=!!Q.witnessUtxo&&!a.includes(G)&&{witnessUtxo:Q.witnessUtxo},L=a.includes(G)&&{nonWitnessUtxo:Q.txHex?Buffer.from(Q.txHex,"hex"):void 0};J.addInput({hash:Q.hash,index:Q.index,...q,...L})}for(let Q of Z){let q="address"in Q&&Q.address?Q.address:j,L=Q.script;if(L&&!$)continue;let B=L?{script:$,value:0}:{address:q,value:Q.value};eX(IX),J.addOutput(B)}return{psbt:J,inputs:X}}async function ZZ({assetValue:X,recipient:Z,memo:G,feeRate:J,sender:j,fetchTxHex:$=!1}){let Q=X.chain,q=G?await O(G):null,L=await QZ({assetValue:X,recipient:Z,memo:G,sender:j,fetchTxHex:$}),{inputs:B,outputs:W}=N({...L,feeRate:J,chain:Q});if(!(B&&W))throw new k("toolbox_utxo_insufficient_balance",{sender:j,assetValue:X});let D=await y(),z=new ZG({network:D(Q)});if(Q===_.Dogecoin)z.setMaximumFeeRate(650000000);let{psbt:U,inputs:Y}=await XZ({inputs:B,outputs:W,chain:Q,psbt:z,sender:j,compiledMemo:q});return{psbt:U,utxos:L.inputs,inputs:Y}}async function GZ(){let X=await y();return function Z({address:G,chain:J}){if(J===_.BitcoinCash)return E(G);if(J===_.Zcash)return r(G);try{return eX(IX),GG.toOutputScript(G,X(J)),!0}catch(j){return!1}}}async function qG({chain:X,phrase:Z,derivationPath:G}){let J=(await s(X))({phrase:Z,derivationPath:G});async function j(Q){return await Q.signAllInputs(J),Q}async function $(){return(await _X(X))(J)}return{getAddress:$,signTransaction:j}}async function f({chain:X,...Z}){let G="phrase"in Z?Z.phrase:void 0,J="index"in Z?Z.index||0:0,j=eZ("derivationPath"in Z&&Z.derivationPath?Z.derivationPath:XG(sZ[X],{index:J})),$=G?await qG({chain:X,phrase:G,derivationPath:j}):("signer"in Z)?Z.signer:void 0;function Q(){return Promise.resolve($?.getAddress())}let q=await _X(X),L=await GZ(),B=await s(X);return{accumulative:N,calculateTxSize:g,getAddressFromKeys:q,getAddress:Q,validateAddress:(W)=>L({address:W,chain:X}),broadcastTx:(W)=>v(X).broadcastTx(W),createTransaction:ZZ,createKeysForPath:B,getFeeRates:()=>t(X),getInputsOutputsFee:JZ,transfer:BG($),getPrivateKeyFromMnemonic:(W)=>{return B(W).toWIF()},getBalance:AX(X),estimateTransactionFee:WG(X),estimateMaxSendableAmount:LG(X)}}async function JZ({assetValue:X,feeOptionKey:Z=A.Fast,feeRate:G,memo:J,sender:j,recipient:$}){let Q=X.chain,q=await QZ({assetValue:X,sender:j,memo:J,recipient:$}),L=G?Math.floor(G):(await t(Q))[Z];return N({...q,feeRate:L,chain:Q})}function LG(X){return async function Z({from:G,memo:J,feeRate:j,feeOptionKey:$=A.Fast,recipients:Q=1}){let q=await v(X).getAddressData(G),L=j?Math.ceil(j):(await t(X))[$],B=q?.utxo.map((Y)=>({...Y,type:"P2PKH",hash:""})).filter((Y)=>Y.value>Math.max(JX(X),K(Y)*L));if(!B?.length)return vX.from({chain:X});let W=vX.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 O(J);D.push({address:G,script:Y,value:0})}let U=g({inputs:B,outputs:D,feeRate:L})*L;return W.sub(U)}}function WG(X){return async(Z)=>{let G=await JZ(Z);return vX.from({chain:X,value:tZ.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=`${aZ.BCH}/0`,wif:$}){let Q=Z(X);if($)return QG.fromWIF($,Q);if(!J)throw new k("toolbox_utxo_invalid_params",{error:"No phrase provided"});return $G.fromSeedBuffer(Buffer.from(tX(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 k("toolbox_utxo_invalid_params",{error:"Either phrase or wif must be provided"});let Q=JG(IX),q=Z(X);if(j)return Q.fromWIF(j,q);let L=tX(J),B=jG.fromMasterSeed(L,q).derive($);if(!B.privateKey)throw new k("toolbox_utxo_invalid_params",{error:"Could not get private key from phrase"});return Q.fromPrivateKey(Buffer.from(B.privateKey),{network:q})};default:throw new k("toolbox_utxo_not_supported",{chain:X})}}async function _X(X){let Z=await y();return function G(J){if(!J)throw new k("toolbox_utxo_invalid_params",{error:"Keys must be provided"});let j=a.includes(X)?sX.p2pkh:sX.p2wpkh,{address:$}=j({pubkey:J.publicKey,network:Z(X)});if(!$)throw new k("toolbox_utxo_invalid_address",{error:"Address not defined"});return $}}function BG(X){return async function Z({memo:G,recipient:J,feeOptionKey:j,feeRate:$,assetValue:Q}){let q=await X?.getAddress(),L=Q.chain;if(!(X&&q))throw new k("toolbox_utxo_no_signer");if(!J)throw new k("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});let B=$||(await t(L))[j||A.Fast],{psbt:W}=await ZZ({recipient:J,feeRate:B,sender:q,assetValue:Q,memo:G}),D=await X.signTransaction(W);return D.finalizeAllInputs(),v(L).broadcastTx(D.extractTransaction().toHex())}}async function t(X){let Z=await v(X).getSuggestedTxFee();return{[A.Average]:Z,[A.Fast]:aX(Z,A.Fast),[A.Fastest]:aX(Z,A.Fastest)}}async function QZ({assetValue:X,recipient:Z,memo:G,sender:J,fetchTxHex:j=!1}){let $=X.chain,Q=(await t($))[A.Fastest],q=j||a.includes($),L=X.getBaseValue("number"),B=Math.ceil(L+Q*5000);return{inputs:await v($).getUtxos({address:J,fetchTxHex:q,targetValue:B}),outputs:[{address:Z,value:L},...G?[{address:"",script:await O(G),value:0}]:[]]}}var a;var i=I(()=>{DX();x();e();d();a=[_.Dash,_.Dogecoin]});import{Transaction as DG,TransactionBuilder as UG,address as zG}from"@psf/bitcoincashjs-lib";import{Chain as YG,FeeOption as MG,NetworkDerivationPath as TG,SwapKitError as m,derivationPathToString as CG,updateDerivationPath as HG}from"@swapkit/helpers";import{Psbt as vG}from"bitcoinjs-lib";function l(X){return X.replace(/(bchtest:|bitcoincash:)/,"")}function E(X){let Z=l(X);return YX(Z)&&MX(Z)==="mainnet"}function V(X){return l(p(X))}async function IG(X){async 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(V(J))},signTransaction:Z}}async function FX(X){let Z="phrase"in X?X.phrase:void 0,G="index"in X?X.index||0:0,J=CG("derivationPath"in X&&X.derivationPath?X.derivationPath:HG(TG[F],{index:G})),j=Z?(await s(F))({phrase:Z,derivationPath:J}):void 0,$=j?await IG(j):("signer"in X)?X.signer:void 0;function Q(){return Promise.resolve($?.getAddress())}let{getBalance:q,getFeeRates:L,broadcastTx:B,...W}=await f({chain:F});function D(z,U=!0){return q(l(p(z)))}return{...W,getAddress:Q,broadcastTx:B,createTransaction:$Z,buildTx:FG,getAddressFromKeys:yG,getBalance:D,getFeeRates:L,stripPrefix:l,stripToCashAddress:V,validateAddress:E,transfer:_G({getFeeRates:L,broadcastTx:B,signer:$})}}async function $Z({assetValue:X,recipient:Z,memo:G,feeRate:J,sender:j}){if(!E(Z))throw new m("toolbox_utxo_invalid_address",{address:Z});let $=Math.ceil(X.getBaseValue("number")+J*7500),Q=await v(F).getUtxos({address:V(j),fetchTxHex:!0,targetValue:$}),q=G?await O(G):null,L=[];L.push({address:Z,value:X.getBaseValue("number")});let{inputs:B,outputs:W}=N({inputs:Q,outputs:L,feeRate:J,chain:F});if(!(B&&W))throw new m("toolbox_utxo_insufficient_balance",{sender:j,assetValue:X});let D=await y(),z=new UG(D(F));await Promise.all(B.map(async(U)=>{let Y=await v(F).getRawTx(U.hash);z.addInput(DG.fromBuffer(Buffer.from(Y,"hex")),U.index)}));for(let U of W){let Y="address"in U&&U.address?U.address:S(j),H=await y(),T=zG.toOutputScript(S(Y),H(F));z.addOutput(T,U.value)}if(q)z.addOutput(q,0);return{builder:z,utxos:B}}function _G({broadcastTx:X,getFeeRates:Z,signer:G}){return async function J({recipient:j,assetValue:$,feeOptionKey:Q=MG.Fast,...q}){let L=await G?.getAddress();if(!(G&&L))throw new m("toolbox_utxo_no_signer");if(!j)throw new m("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});let B=q.feeRate||(await Z())[Q],{builder:W,utxos:D}=await $Z({...q,assetValue:$,feeRate:B,recipient:j,sender:L}),U=(await G.signTransaction({builder:W,utxos:D})).toHex();return X(U)}}async function FG({assetValue:X,recipient:Z,memo:G,feeRate:J,sender:j,setSigHashType:$}){let Q=p(Z);if(!E(Q))throw new m("toolbox_utxo_invalid_address",{address:Q});let q=Math.ceil(X.getBaseValue("number")+J*7500),L=await v(F).getUtxos({address:V(j),fetchTxHex:!1,targetValue:q}),B=Number(J.toFixed(0)),W=G?await O(G):null,D=[];if(D.push({address:S(Z),value:X.getBaseValue("number")}),W)D.push({script:W,value:0});let{inputs:z,outputs:U}=N({inputs:L,outputs:D,feeRate:B,chain:F});if(!(z&&U))throw new m("toolbox_utxo_insufficient_balance",{sender:j,assetValue:X});let Y=await y(),H=new vG({network:Y(F)});for(let{hash:T,index:w,witnessUtxo:R}of z)H.addInput({hash:T,index:w,witnessUtxo:R,sighashType:$?65:void 0});for(let T of U){let w="address"in T&&T.address?T.address:S(j),R=T.script?W?{script:W,value:0}:void 0:{address:w,value:T.value};if(R)H.addOutput(R)}return{psbt:H,utxos:L,inputs:z}}function yG(X){let Z=X.getAddress(0);return V(Z)}var F;var e=I(()=>{x();i();F=YG.BitcoinCash});import{Chain as h,SwapKitError as NG}from"@swapkit/helpers";async function OG(X,Z){switch(X){case h.BitcoinCash:return await FX(Z||{});case h.Zcash:return await HX(Z);case h.Bitcoin:case h.Dogecoin:case h.Litecoin:case h.Dash:return await f({chain:X,...Z});default:throw new NG("toolbox_utxo_not_supported",{chain:X})}}var jZ=I(()=>{e();i();d();e();d()});var kG={};DZ(kG,{validateZcashAddress:()=>r,toLegacyAddress:()=>S,toCashAddress:()=>p,stripToCashAddress:()=>V,stripPrefix:()=>l,nonSegwitChains:()=>a,isValidAddress:()=>YX,getUtxoToolbox:()=>OG,getUtxoNetwork:()=>y,getUtxoApi:()=>v,getUTXOAddressValidator:()=>GZ,getScriptTypeForAddress:()=>n,getOutputSize:()=>u,getInputSize:()=>K,getDustThreshold:()=>JX,getCreateKeysForPath:()=>s,detectAddressNetwork:()=>MX,createZcashToolbox:()=>HX,createUTXOToolbox:()=>f,createCustomUtxoApi:()=>kZ,createBCHToolbox:()=>FX,compileMemo:()=>O,calculateTxSize:()=>g,bchValidateAddress:()=>E,addressFromKeysGetter:()=>_X,addInputsAndOutputs:()=>XZ,accumulative:()=>N,UtxoNetwork:()=>zX,UTXOScriptType:()=>$X,TX_OVERHEAD:()=>QX,OutputSizes:()=>o,OP_RETURN_OVERHEAD:()=>hX,MIN_TX_FEE:()=>SZ,InputSizes:()=>jX});var PG=I(()=>{jZ();e();i();d();x()});PG();export{r as validateZcashAddress,S as toLegacyAddress,p as toCashAddress,V as stripToCashAddress,l as stripPrefix,a as nonSegwitChains,YX as isValidAddress,OG as getUtxoToolbox,y as getUtxoNetwork,v as getUtxoApi,GZ as getUTXOAddressValidator,n as getScriptTypeForAddress,u as getOutputSize,K as getInputSize,JX as getDustThreshold,s as getCreateKeysForPath,MX as detectAddressNetwork,HX as createZcashToolbox,f as createUTXOToolbox,kZ as createCustomUtxoApi,FX as createBCHToolbox,O as compileMemo,g as calculateTxSize,E as bchValidateAddress,_X as addressFromKeysGetter,XZ as addInputsAndOutputs,N as accumulative,zX as UtxoNetwork,$X as UTXOScriptType,QX as TX_OVERHEAD,o as OutputSizes,hX as OP_RETURN_OVERHEAD,SZ as MIN_TX_FEE,jX as InputSizes};
|
|
3
3
|
|
|
4
|
-
//# debugId=
|
|
4
|
+
//# debugId=E06342140A2581EE64756E2164756E21
|
|
5
5
|
//# sourceMappingURL=index.js.map
|