@uswap/toolboxes 4.3.7 → 4.3.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. package/dist/src/cardano/index.cjs +2 -2
  2. package/dist/src/cardano/index.cjs.map +3 -3
  3. package/dist/src/cardano/index.js +2 -2
  4. package/dist/src/cardano/index.js.map +3 -3
  5. package/dist/src/cosmos/index.cjs +2 -2
  6. package/dist/src/cosmos/index.cjs.map +8 -8
  7. package/dist/src/cosmos/index.js +2 -2
  8. package/dist/src/cosmos/index.js.map +8 -8
  9. package/dist/src/evm/index.cjs +2 -2
  10. package/dist/src/evm/index.cjs.map +7 -7
  11. package/dist/src/evm/index.js +2 -2
  12. package/dist/src/evm/index.js.map +7 -7
  13. package/dist/src/index.cjs +3 -3
  14. package/dist/src/index.cjs.map +34 -34
  15. package/dist/src/index.js +3 -3
  16. package/dist/src/index.js.map +34 -34
  17. package/dist/src/near/index.cjs +2 -2
  18. package/dist/src/near/index.cjs.map +5 -5
  19. package/dist/src/near/index.js +2 -2
  20. package/dist/src/near/index.js.map +5 -5
  21. package/dist/src/radix/index.cjs +2 -2
  22. package/dist/src/radix/index.cjs.map +3 -3
  23. package/dist/src/radix/index.js +2 -2
  24. package/dist/src/radix/index.js.map +3 -3
  25. package/dist/src/ripple/index.cjs +2 -2
  26. package/dist/src/ripple/index.cjs.map +3 -3
  27. package/dist/src/ripple/index.js +2 -2
  28. package/dist/src/ripple/index.js.map +3 -3
  29. package/dist/src/solana/index.cjs +2 -2
  30. package/dist/src/solana/index.cjs.map +3 -3
  31. package/dist/src/solana/index.js +2 -2
  32. package/dist/src/solana/index.js.map +3 -3
  33. package/dist/src/substrate/index.cjs +2 -2
  34. package/dist/src/substrate/index.cjs.map +4 -4
  35. package/dist/src/substrate/index.js +2 -2
  36. package/dist/src/substrate/index.js.map +4 -4
  37. package/dist/src/sui/index.cjs +2 -2
  38. package/dist/src/sui/index.cjs.map +3 -3
  39. package/dist/src/sui/index.js +2 -2
  40. package/dist/src/sui/index.js.map +3 -3
  41. package/dist/src/ton/index.cjs +2 -2
  42. package/dist/src/ton/index.cjs.map +3 -3
  43. package/dist/src/ton/index.js +2 -2
  44. package/dist/src/ton/index.js.map +3 -3
  45. package/dist/src/tron/index.cjs +2 -2
  46. package/dist/src/tron/index.cjs.map +4 -4
  47. package/dist/src/tron/index.js +2 -2
  48. package/dist/src/tron/index.js.map +4 -4
  49. package/dist/src/utxo/index.cjs +3 -3
  50. package/dist/src/utxo/index.cjs.map +11 -11
  51. package/dist/src/utxo/index.js +3 -3
  52. package/dist/src/utxo/index.js.map +11 -11
  53. package/dist/types/cardano/toolbox.d.ts +5 -0
  54. package/dist/types/cardano/toolbox.d.ts.map +1 -1
  55. package/dist/types/cosmos/thorchainUtils/addressFormat.d.ts +5 -0
  56. package/dist/types/cosmos/thorchainUtils/addressFormat.d.ts.map +1 -1
  57. package/dist/types/cosmos/thorchainUtils/messages.d.ts +5 -0
  58. package/dist/types/cosmos/thorchainUtils/messages.d.ts.map +1 -1
  59. package/dist/types/cosmos/toolbox/cosmos.d.ts +5 -0
  60. package/dist/types/cosmos/toolbox/cosmos.d.ts.map +1 -1
  61. package/dist/types/cosmos/toolbox/index.d.ts +5 -0
  62. package/dist/types/cosmos/toolbox/index.d.ts.map +1 -1
  63. package/dist/types/cosmos/toolbox/thorchain.d.ts +5 -0
  64. package/dist/types/cosmos/toolbox/thorchain.d.ts.map +1 -1
  65. package/dist/types/cosmos/util.d.ts +5 -0
  66. package/dist/types/cosmos/util.d.ts.map +1 -1
  67. package/dist/types/evm/helpers.d.ts +1 -1
  68. package/dist/types/evm/helpers.d.ts.map +1 -1
  69. package/dist/types/evm/toolbox/baseEVMToolbox.d.ts +7 -0
  70. package/dist/types/evm/toolbox/baseEVMToolbox.d.ts.map +1 -1
  71. package/dist/types/evm/toolbox/evm.d.ts +38 -38
  72. package/dist/types/evm/toolbox/evm.d.ts.map +1 -1
  73. package/dist/types/evm/toolbox/op.d.ts +7 -14
  74. package/dist/types/evm/toolbox/op.d.ts.map +1 -1
  75. package/dist/types/index.d.ts +5 -0
  76. package/dist/types/index.d.ts.map +1 -1
  77. package/dist/types/near/helpers/core.d.ts +5 -0
  78. package/dist/types/near/helpers/core.d.ts.map +1 -1
  79. package/dist/types/near/toolbox.d.ts +5 -0
  80. package/dist/types/near/toolbox.d.ts.map +1 -1
  81. package/dist/types/radix/index.d.ts +5 -0
  82. package/dist/types/radix/index.d.ts.map +1 -1
  83. package/dist/types/ripple/index.d.ts +5 -0
  84. package/dist/types/ripple/index.d.ts.map +1 -1
  85. package/dist/types/solana/toolbox.d.ts +5 -0
  86. package/dist/types/solana/toolbox.d.ts.map +1 -1
  87. package/dist/types/substrate/substrate.d.ts +5 -0
  88. package/dist/types/substrate/substrate.d.ts.map +1 -1
  89. package/dist/types/sui/toolbox.d.ts +5 -0
  90. package/dist/types/sui/toolbox.d.ts.map +1 -1
  91. package/dist/types/ton/toolbox.d.ts +5 -0
  92. package/dist/types/ton/toolbox.d.ts.map +1 -1
  93. package/dist/types/tron/helpers/trongrid.d.ts +5 -0
  94. package/dist/types/tron/helpers/trongrid.d.ts.map +1 -1
  95. package/dist/types/tron/toolbox.d.ts +5 -0
  96. package/dist/types/tron/toolbox.d.ts.map +1 -1
  97. package/dist/types/utils.d.ts.map +1 -1
  98. package/dist/types/utxo/helpers/api.d.ts +5 -0
  99. package/dist/types/utxo/helpers/api.d.ts.map +1 -1
  100. package/dist/types/utxo/helpers/bchaddrjs.d.ts +5 -0
  101. package/dist/types/utxo/helpers/bchaddrjs.d.ts.map +1 -1
  102. package/dist/types/utxo/helpers/coinselect.d.ts +5 -0
  103. package/dist/types/utxo/helpers/coinselect.d.ts.map +1 -1
  104. package/dist/types/utxo/helpers/txSize.d.ts +5 -0
  105. package/dist/types/utxo/helpers/txSize.d.ts.map +1 -1
  106. package/dist/types/utxo/toolbox/bitcoinCash.d.ts +5 -0
  107. package/dist/types/utxo/toolbox/bitcoinCash.d.ts.map +1 -1
  108. package/dist/types/utxo/toolbox/index.d.ts +5 -0
  109. package/dist/types/utxo/toolbox/index.d.ts.map +1 -1
  110. package/dist/types/utxo/toolbox/utxo.d.ts +5 -0
  111. package/dist/types/utxo/toolbox/utxo.d.ts.map +1 -1
  112. package/dist/types/utxo/toolbox/zcash.d.ts +6 -1
  113. package/dist/types/utxo/toolbox/zcash.d.ts.map +1 -1
  114. package/package.json +13 -7
  115. package/src/cardano/toolbox.ts +12 -6
  116. package/src/cosmos/__tests__/toolbox.test.ts +8 -4
  117. package/src/cosmos/thorchainUtils/addressFormat.ts +8 -2
  118. package/src/cosmos/thorchainUtils/messages.ts +8 -2
  119. package/src/cosmos/toolbox/cosmos.ts +11 -5
  120. package/src/cosmos/toolbox/index.ts +8 -2
  121. package/src/cosmos/toolbox/thorchain.ts +9 -3
  122. package/src/cosmos/util.ts +9 -3
  123. package/src/evm/helpers.ts +7 -9
  124. package/src/evm/toolbox/baseEVMToolbox.ts +34 -26
  125. package/src/evm/toolbox/evm.ts +2 -3
  126. package/src/evm/toolbox/op.ts +10 -17
  127. package/src/index.ts +8 -2
  128. package/src/near/helpers/core.ts +8 -2
  129. package/src/near/toolbox.ts +21 -15
  130. package/src/radix/index.ts +15 -3
  131. package/src/ripple/index.ts +15 -12
  132. package/src/solana/toolbox.ts +16 -16
  133. package/src/substrate/balance.ts +2 -2
  134. package/src/substrate/substrate.ts +17 -11
  135. package/src/sui/__tests__/toolbox.test.ts +9 -5
  136. package/src/sui/toolbox.ts +18 -11
  137. package/src/ton/__tests__/toolbox.test.ts +9 -5
  138. package/src/ton/toolbox.ts +14 -8
  139. package/src/tron/helpers/trongrid.ts +8 -2
  140. package/src/tron/toolbox.ts +21 -15
  141. package/src/utils.ts +8 -1
  142. package/src/utxo/helpers/api.ts +15 -9
  143. package/src/utxo/helpers/bchaddrjs.ts +9 -3
  144. package/src/utxo/helpers/coinselect.ts +8 -2
  145. package/src/utxo/helpers/txSize.ts +8 -2
  146. package/src/utxo/toolbox/bitcoinCash.ts +13 -7
  147. package/src/utxo/toolbox/index.ts +8 -2
  148. package/src/utxo/toolbox/utxo.ts +16 -10
  149. package/src/utxo/toolbox/zcash.ts +24 -21
@@ -1,5 +1,5 @@
1
- var zZ=Object.create;var{getPrototypeOf:CZ,defineProperty:r,getOwnPropertyNames:SX,getOwnPropertyDescriptor:IZ}=Object,xX=Object.prototype.hasOwnProperty;var m=(X,Z,B)=>{B=X!=null?zZ(CZ(X)):{};let G=Z||!X||!X.__esModule?r(B,"default",{value:X,enumerable:!0}):B;for(let $ of SX(X))if(!xX.call(G,$))r(G,$,{get:()=>X[$],enumerable:!0});return G},KX=new WeakMap,MZ=(X)=>{var Z=KX.get(X),B;if(Z)return Z;if(Z=r({},"__esModule",{value:!0}),X&&typeof X==="object"||typeof X==="function")SX(X).map((G)=>!xX.call(Z,G)&&r(Z,G,{get:()=>X[G],enumerable:!(B=IZ(X,G))||B.enumerable}));return KX.set(X,Z),Z};var _Z=(X,Z)=>{for(var B in Z)r(X,B,{get:Z[B],enumerable:!0,configurable:!0,set:(G)=>Z[B]=()=>G})};var N=(X,Z)=>()=>(X&&(Z=X(X=0)),Z);function mX(){function X(){let Z=Date.now(),B=zX||Z;return zX=B,Z>zX?Z:B+1}return HZ+X().toString(36)}function lX(X){return async function(B,G=!0){let $=await gX.SwapKitApi.getChainBalance({address:B,chain:X,scamFilter:G}),{baseDecimal:Q}=BX.getChainConfig(X);return $.map(({identifier:J,value:j,decimal:q})=>{return new BX.AssetValue({decimal:q||Q,identifier:J,value:j})})}}var BX,gX,HZ,zX=0;var CX=N(()=>{BX=require("@uswap/helpers"),gX=require("@uswap/helpers/api"),HZ=typeof process<"u"&&process.pid?process.pid.toString(36):""});async function vZ({chain:X,txHash:Z}){let B=`${GX(X)}/push/transaction`,G=JSON.stringify({data:Z});try{let $=await U.RequestClient.post(B,{body:G,headers:{"Content-Type":"application/json"}});if($.context.code!==200)throw new U.SwapKitError("toolbox_utxo_broadcast_failed",{error:$.context.error||"Transaction broadcast failed"});return $.data?.transaction_hash||Z}catch($){let Q=await U.getRPCUrl(X);if(Q){let J=JSON.stringify({id:mX(),jsonrpc:"2.0",method:"sendrawtransaction",params:[Z]}),j=await U.RequestClient.post(Q,{body:J,headers:{"Content-Type":"application/json"}});if(j.error)throw new U.SwapKitError("toolbox_utxo_broadcast_failed",{error:j.error?.message});if(j.result.includes('"code":-26'))throw new U.SwapKitError("toolbox_utxo_invalid_transaction",{error:"Transaction amount was too low"});return j.result}throw $}}function GX(X){return`https://api.blockchair.com/${NZ(X)}`}function hX(X){switch(X){case U.Chain.Bitcoin:return 5;case U.Chain.Dogecoin:return 1e4;case U.Chain.Litecoin:return 1;case U.Chain.Zcash:return 1;default:return 2}}function NZ(X){switch(X){case U.Chain.BitcoinCash:return"bitcoin-cash";case U.Chain.Litecoin:return"litecoin";case U.Chain.Dash:return"dash";case U.Chain.Dogecoin:return"dogecoin";case U.Chain.Zcash:return"zcash";case U.Chain.Polkadot:return"polkadot";default:return"bitcoin"}}async function OZ(X){try{let{feePerKb:Z}=await U.RequestClient.get(`https://app.bitgo.com/api/v2/${X.toLowerCase()}/tx/fee`),B=Z/1000;return Math.max(B,hX(X))}catch{return hX(X)}}async function IX(X,Z){let B=await U.RequestClient.get(`${X}${Z?`${X.includes("?")?"&":"?"}key=${Z}`:""}`);if(!B||B.context.code!==200)throw new U.SwapKitError("toolbox_utxo_api_error",{error:`Failed to query ${X}`});return B.data}async function nX({address:X,chain:Z,apiKey:B}){if(!X)throw new U.SwapKitError("toolbox_utxo_invalid_params",{error:"Address is required"});try{return(await IX(`${GX(Z)}/dashboards/address/${X}?transaction_details=true`,B))[X]}catch{return{address:{balance:0,transaction_count:0},utxo:[]}}}async function yZ({address:X,chain:Z,apiKey:B}){return(await nX({address:X,apiKey:B,chain:Z}))?.address.balance||0}async function uX({chain:X,apiKey:Z,txHash:B}){if(!B)throw new U.SwapKitError("toolbox_utxo_invalid_params",{error:"TxHash is required"});try{return(await IX(`${GX(X)}/raw/transaction/${B}`,Z))?.[B]?.raw_transaction||""}catch(G){let $=G instanceof Error?G.message:String(G);return console.error(`Failed to fetch raw transaction: ${$}`),""}}async function kZ({chain:X,address:Z,apiKey:B,offset:G=0,limit:$=30}){return(await IX(`${GX(X)}/outputs?q=recipient(${Z}),is_spent(false),value(..2000000000000000)&s=value(desc)&fields=is_spent,transaction_hash,index,value,script_hex,block_id,spending_signature_hex&limit=${$}&offset=${G}`,B)).map(({is_spent:q,script_hex:W,block_id:T,transaction_hash:Y,index:z,value:D,spending_signature_hex:C})=>({hash:Y,index:z,is_confirmed:T!==-1,is_spent:q,script_hex:W,txHex:C,value:D}))}function FZ(X){return X.reduce((Z,B)=>Z+B.value,0)}function cX(X,Z){let B=[...X].sort((G,$)=>$.value-G.value);if(Z){let G=[],$=0;for(let Q of B)if(G.push(Q),$+=Q.value,$>=Z)break;return G}return B}async function rX({chain:X,address:Z,apiKey:B,targetValue:G,accumulativeValue:$=0,offset:Q=0,limit:J=30}){if(!Z)throw new U.SwapKitError("toolbox_utxo_invalid_params",{error:"Address is required"});try{let j=await kZ({address:Z,apiKey:B,chain:X,limit:J,offset:Q,targetValue:G}),W=j.length<J,T=j.filter(({is_spent:M})=>!M),Y=FZ(T),z=$+Y,D=G&&z>=G;if(W||D)return cX(T,G);let C=await rX({accumulativeValue:z,address:Z,apiKey:B,chain:X,limit:J,offset:Q+J,targetValue:G}),H=[...T,...C];return cX(H,G)}catch(j){let q=j instanceof Error?j.message:String(j);return console.error(`Failed to fetch unspent UTXOs: ${q}`),[]}}async function AZ({address:X,chain:Z,apiKey:B,fetchTxHex:G=!0,targetValue:$}){let Q=await rX({address:X,apiKey:B,chain:Z,targetValue:$}),J=[];for(let{hash:j,index:q,script_hex:W,value:T}of Q){let Y;if(G)Y=await uX({apiKey:B,chain:Z,txHash:j});J.push({address:X,hash:j,index:q,txHex:Y,value:T,witnessUtxo:{script:Buffer.from(W,"hex"),value:T}})}return J}function v(X){let Z=U.SKConfig.get("apiKeys").blockchair||"";return U.warnOnce({condition:!Z,id:"no_blockchair_api_key_warning",warning:"No Blockchair API key found. Functionality will be limited."}),{broadcastTx:(B)=>vZ({chain:X,txHash:B}),getAddressData:(B)=>nX({address:B,apiKey:Z,chain:X}),getBalance:(B)=>yZ({address:B,apiKey:Z,chain:X}),getRawTx:(B)=>uX({apiKey:Z,chain:X,txHash:B}),getSuggestedTxFee:()=>OZ(X),getUtxos:(B)=>AZ({...B,apiKey:Z,chain:X})}}function EZ(X){return X}function k(){return function(Z){switch(Z){case U.Chain.Bitcoin:return oX.networks.bitcoin;case U.Chain.BitcoinCash:return l.default.bitcoincash.main.toBitcoinJS();case U.Chain.Dash:return l.default.dash.main.toBitcoinJS();case U.Chain.Litecoin:return l.default.litecoin.main.toBitcoinJS();case U.Chain.Dogecoin:{let B={private:70615956,public:70617039},G=l.default.dogecoin.test;return G.versions.bip32=B,l.default.dogecoin.main.toBitcoinJS()}case U.Chain.Zcash:return pX.networks.zcash;default:throw new U.SwapKitError("toolbox_utxo_not_supported",{chain:Z})}}}var pX,U,oX,l;var dX=N(()=>{CX();pX=require("@bitgo/utxo-lib"),U=require("@uswap/helpers"),oX=require("bitcoinjs-lib"),l=m(require("coininfo"))});function NX(X){try{return JX(X),!0}catch{return!1}}function OX(X){return JX(X)?.network}function h(X){let Z=JX(X);if(Z?.format==="legacy")return X;return wZ(Z)}function d(X){let Z=JX(X);return PZ(Z)}function JX(X){try{let Z=fZ(X);if(Z)return Z}catch{}try{let Z=RZ(X);if(Z)return Z}catch{}throw new MX.SwapKitError("toolbox_utxo_invalid_address",{address:X})}function fZ(X){try{let Z=_X.default.decode(X);if(Z.length!==21)throw new MX.SwapKitError("toolbox_utxo_invalid_address",{address:X});let B=Z[0],G=Array.prototype.slice.call(Z,1);switch(B){case K.legacy.mainnet.p2pkh:return{format:"legacy",hash:G,network:"mainnet",type:"p2pkh"};case K.legacy.mainnet.p2sh:return{format:"legacy",hash:G,network:"mainnet",type:"p2sh"};case K.legacy.testnet.p2pkh:return{format:"legacy",hash:G,network:"testnet",type:"p2pkh"};case K.legacy.testnet.p2sh:return{format:"legacy",hash:G,network:"testnet",type:"p2sh"};case K.bitpay.mainnet.p2pkh:return{format:"bitpay",hash:G,network:"mainnet",type:"p2pkh"};case K.bitpay.mainnet.p2sh:return{format:"bitpay",hash:G,network:"mainnet",type:"p2sh"};default:return}}catch{return}}function RZ(X){if(X.indexOf(":")!==-1)try{return iX(X)}catch{}else{let Z=["bitcoincash","bchtest","bchreg"];for(let B of Z)try{return iX(`${B}:${X}`)}catch{}}return}function iX(X){try{let{hash:Z,prefix:B,type:G}=HX.default.decode(X);return{format:"cashaddr",hash:Array.prototype.slice.call(Z,0),network:B==="bitcoincash"?"mainnet":"testnet",type:G==="P2PKH"?"p2pkh":"p2sh"}}catch{return}}function wZ(X){let Z=K.legacy[X.network][X.type],B=Buffer.alloc(1+X.hash.length);return B[0]=Z,B.set(X.hash,1),_X.default.encode(B)}function PZ(X){let Z=X.network==="mainnet"?"bitcoincash":"bchtest",B=X.type==="p2pkh"?"P2PKH":"P2SH",G=new Uint8Array(X.hash);return HX.default.encode(Z,B,G)}var MX,_X,HX,vX,K;var sX=N(()=>{MX=require("@uswap/helpers"),_X=m(require("bs58check")),HX=m(require("cashaddrjs"));((B)=>{B.Mainnet="mainnet";B.Testnet="testnet"})(vX||={});K={["legacy"]:{["mainnet"]:{["p2pkh"]:0,["p2sh"]:5},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}},["bitpay"]:{["mainnet"]:{["p2pkh"]:28,["p2sh"]:40},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}}}});function F(X){let Z=Buffer.from(X,"utf8");return jX.script.compile([jX.opcodes.OP_RETURN,Z])}var aX,jX,VZ=1000,qX=10,tX=10,bZ=41,KZ=107,WX,QX,$X,i=(X)=>{if(X.startsWith("bc1")||X.startsWith("tb1")||X.startsWith("ltc1")||X.startsWith("tltc1"))return"P2WPKH";if(X.startsWith("1")||X.startsWith("m")||X.startsWith("n")||X.startsWith("bitcoincash:q")||X.startsWith("bitcoincash:p")||X.startsWith("q")||X.startsWith("p")||X.startsWith("L")||X.startsWith("M")||X.startsWith("3")||X.startsWith("D")||X.startsWith("A")||X.startsWith("9")||X.startsWith("X")||X.startsWith("7")||X.startsWith("y")||X.startsWith("t1")||X.startsWith("t3")||X.startsWith("tm"))return"P2PKH";throw new aX.SwapKitError("toolbox_utxo_invalid_address",{address:X})},c=({inputs:X,outputs:Z,feeRate:B})=>{let G=X[0]&&"address"in X[0]&&X[0].address?i(X[0].address):"P2PKH",$=X.filter((J)=>J.value>=QX["type"in J?J.type:"P2PKH"]*Math.ceil(B)).reduce((J,j)=>J+P(j),0),Q=Z?.reduce((J,j)=>J+s(j),0)||$X[G];return qX+$+Q},P=(X)=>{if("type"in X)return QX[X.type];if("address"in X&&X.address)return QX[i(X.address)];return bZ+KZ},s=(X,Z)=>{if(X?.script)return tX+X.script.length+(X.script.length>=74?2:1);if(Z)return $X[Z];return $X.P2PKH};var yX=N(()=>{aX=require("@uswap/helpers"),jX=require("bitcoinjs-lib");((B)=>{B.P2PKH="P2PKH";B.P2WPKH="P2WPKH"})(WX||={});QX={["P2PKH"]:148,["P2WPKH"]:68},$X={["P2PKH"]:34,["P2WPKH"]:31}});function LX(X){switch(X){case A.Chain.Bitcoin:case A.Chain.BitcoinCash:return 550;case A.Chain.Dash:case A.Chain.Litecoin:return 5500;case A.Chain.Dogecoin:return 1e5;case A.Chain.Zcash:return 546;default:throw new A.SwapKitError("toolbox_utxo_not_supported",{chain:X})}}function E({inputs:X,outputs:Z,feeRate:B=1,chain:G=A.Chain.Bitcoin,changeAddress:$=""}){let Q=Math.ceil(B),J=X[0]&&"address"in X[0]&&X[0].address?i(X[0].address):"P2PKH",j=X.filter((D)=>P(D)*Q<=D.value),q=qX+Z.reduce((D,C)=>D+s(C,J),0),W=Z.reduce((D,C)=>D+C.value,0),T=q*Q,Y=0,z=[];for(let D of j){let C=P(D),H=Q*C;T+=H,Y+=D.value,z.push(D);let M=T+W;if(Y<M)continue;let b=Y-M,R=Q*s({address:"",value:0},J);if(b>R){let VX=R+T,bX=Y-(W+VX);if(bX>Math.max(P({})*Q,LX(G)))return{fee:VX,inputs:z,outputs:Z.concat({address:$,value:bX})}}return{fee:T,inputs:z,outputs:Z}}return{fee:Q*c({feeRate:Q,inputs:X,outputs:Z})}}var A;var eX=N(()=>{yX();A=require("@uswap/helpers")});var p=N(()=>{dX();sX();eX();yX()});function S(X){return X.replace(/(bchtest:|bitcoincash:)/,"")}function V(X){let Z=S(X);return NX(Z)&&OX(Z)==="mainnet"}function o(X){try{if(X.startsWith("z"))return console.warn("Shielded Zcash addresses (z-addresses) are not supported. Use transparent addresses (t1/t3) only."),!1;let Z=TX.networks.zcash;try{return TX.address.toOutputScript(X,Z),!0}catch{let B=XZ.default.decode(X);if(B.length<21)return!1;let G=B[0];return G===Z.pubKeyHash||G===Z.scriptHash}}catch{return!1}}var TX,XZ;var a=N(()=>{p();TX=require("@bitgo/utxo-lib"),XZ=m(require("bs58check"))});function GZ({inputs:X,outputs:Z,chain:B,psbt:G,sender:$,compiledMemo:Q}){for(let J of X){let j=!!J.witnessUtxo&&!t.includes(B)&&{witnessUtxo:J.witnessUtxo},q=t.includes(B)&&{nonWitnessUtxo:J.txHex?Buffer.from(J.txHex,"hex"):void 0};G.addInput({hash:J.hash,index:J.index,...j,...q})}for(let J of Z){let j="address"in J&&J.address?J.address:$,q=J.script;if(q&&!Q)continue;let W=q?{script:Q,value:0}:{address:j,value:J.value};f.initEccLib(YX.default),G.addOutput(W)}return{inputs:X,psbt:G}}async function JZ({assetValue:X,recipient:Z,memo:B,feeRate:G,sender:$,fetchTxHex:Q=!1}){let J=X.chain,j=B?await F(B):null,q=await jZ({assetValue:X,fetchTxHex:Q,memo:B,recipient:Z,sender:$}),{inputs:W,outputs:T}=E({...q,chain:J,feeRate:G});if(!(W&&T))throw new L.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue:X,sender:$});let Y=await k(),z=new f.Psbt({network:Y(J)});if(J===L.Chain.Dogecoin)z.setMaximumFeeRate(650000000);let{psbt:D,inputs:C}=await GZ({chain:J,compiledMemo:j,inputs:W,outputs:T,psbt:z,sender:$});return{inputs:C,psbt:D,utxos:q.inputs}}async function QZ(){let X=await k();return function({address:B,chain:G}){if(G===L.Chain.BitcoinCash)return V(B);if(G===L.Chain.Zcash)return o(B);try{return f.initEccLib(YX.default),f.address.toOutputScript(B,X(G)),!0}catch{return!1}}}async function SZ({chain:X,phrase:Z,derivationPath:B}){let G=(await e(X))({derivationPath:B,phrase:Z});async function $(J){return await J.signAllInputs(G),J}function Q(){return FX(X)(G)}return{getAddress:Q,signTransaction:$}}async function x({chain:X,...Z}){let B="phrase"in Z?Z.phrase:void 0,G="index"in Z?Z.index||0:0,$=L.derivationPathToString("derivationPath"in Z&&Z.derivationPath?Z.derivationPath:L.updateDerivationPath(L.NetworkDerivationPath[X],{index:G})),Q=B?await SZ({chain:X,derivationPath:$,phrase:B}):("signer"in Z)?Z.signer:void 0;function J(){return Promise.resolve(Q?.getAddress())}let j=await QZ(),q=await e(X);return{accumulative:E,broadcastTx:(W)=>v(X).broadcastTx(W),calculateTxSize:c,createKeysForPath:q,createTransaction:JZ,estimateMaxSendableAmount:xZ(X),estimateTransactionFee:gZ(X),getAddress:J,getAddressFromKeys:FX(X),getBalance:lX(X),getFeeRates:()=>XX(X),getInputsOutputsFee:$Z,getPrivateKeyFromMnemonic:(W)=>{return q(W).toWIF()},transfer:mZ(Q),validateAddress:(W)=>j({address:W,chain:X})}}async function $Z({assetValue:X,feeOptionKey:Z=L.FeeOption.Fast,feeRate:B,memo:G,sender:$,recipient:Q}){let J=X.chain,j=await jZ({assetValue:X,memo:G,recipient:Q,sender:$}),q=B?Math.floor(B):(await XX(J))[Z];return E({...j,chain:J,feeRate:q})}function xZ(X){return async function({from:B,memo:G,feeRate:$,feeOptionKey:Q=L.FeeOption.Fast,recipients:J=1}){let j=await v(X).getAddressData(B),q=$?Math.ceil($):(await XX(X))[Q],W=j?.utxo.map((C)=>({...C,hash:"",type:"P2PKH"})).filter((C)=>C.value>Math.max(LX(X),P(C)*q));if(!W?.length)return L.AssetValue.from({chain:X});let T=L.AssetValue.from({chain:X,value:W.reduce((C,H)=>C+H.value,0)}),Y=typeof J==="number"?Array.from({length:J},()=>({address:B,value:0})):J;if(G){let C=await F(G);Y.push({address:B,script:C,value:0})}let D=c({feeRate:q,inputs:W,outputs:Y})*q;return T.sub(D)}}function gZ(X){return async(Z)=>{let B=await $Z(Z);return L.AssetValue.from({chain:X,value:L.SwapKitNumber.fromBigInt(BigInt(B.fee),8).getValue("string")})}}async function e(X){let Z=await k();switch(X){case L.Chain.BitcoinCash:return function({phrase:G,derivationPath:$=`${L.DerivationPath.BCH}/0`,wif:Q}){let J=Z(X);if(Q)return DX.ECPair.fromWIF(Q,J);if(!G)throw new L.SwapKitError("toolbox_utxo_invalid_params",{error:"No phrase provided"});return DX.HDNode.fromSeedBuffer(Buffer.from(kX.mnemonicToSeedSync(G)),J).derivePath($).keyPair};case L.Chain.Bitcoin:case L.Chain.Dogecoin:case L.Chain.Litecoin:case L.Chain.Zcash:case L.Chain.Dash:return function({phrase:G,wif:$,derivationPath:Q}){if(!($||G))throw new L.SwapKitError("toolbox_utxo_invalid_params",{error:"Either phrase or wif must be provided"});let J=BZ.ECPairFactory(YX.default),j=Z(X);if($)return J.fromWIF($,j);let q=kX.mnemonicToSeedSync(G),W=ZZ.HDKey.fromMasterSeed(q,j).derive(Q);if(!W.privateKey)throw new L.SwapKitError("toolbox_utxo_invalid_params",{error:"Could not get private key from phrase"});return J.fromPrivateKey(Buffer.from(W.privateKey),{network:j})};default:throw new L.SwapKitError("toolbox_utxo_not_supported",{chain:X})}}function FX(X){let Z=k();return function(G){if(!G)throw new L.SwapKitError("toolbox_utxo_invalid_params",{error:"Keys must be provided"});let $=t.includes(X)?f.payments.p2pkh:f.payments.p2wpkh,{address:Q}=$({network:Z(X),pubkey:G.publicKey});if(!Q)throw new L.SwapKitError("toolbox_utxo_invalid_address",{error:"Address not defined"});return Q}}function mZ(X){return async function({memo:B,recipient:G,feeOptionKey:$,feeRate:Q,assetValue:J}){let j=await X?.getAddress(),q=J.chain;if(!(X&&j))throw new L.SwapKitError("toolbox_utxo_no_signer");if(!G)throw new L.SwapKitError("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});let W=Q||(await XX(q))[$||L.FeeOption.Fast],{psbt:T}=await JZ({assetValue:J,feeRate:W,memo:B,recipient:G,sender:j}),Y=await X.signTransaction(T);return Y.finalizeAllInputs(),v(q).broadcastTx(Y.extractTransaction().toHex())}}async function XX(X){let Z=await v(X).getSuggestedTxFee();return{[L.FeeOption.Average]:Z,[L.FeeOption.Fast]:L.applyFeeMultiplier(Z,L.FeeOption.Fast),[L.FeeOption.Fastest]:L.applyFeeMultiplier(Z,L.FeeOption.Fastest)}}async function jZ({assetValue:X,recipient:Z,memo:B,sender:G,fetchTxHex:$=!1}){let Q=X.chain,J=(await XX(Q))[L.FeeOption.Fastest],j=$||t.includes(Q),q=X.getBaseValue("number"),W=Math.ceil(q+J*5000);return{inputs:await v(Q).getUtxos({address:G,fetchTxHex:j,targetValue:W}),outputs:[{address:Z,value:q},...B?[{address:"",script:await F(B),value:0}]:[]]}}var YX,DX,ZZ,kX,L,f,BZ,t;var ZX=N(()=>{CX();p();a();YX=m(require("@bitcoinerlab/secp256k1")),DX=require("@psf/bitcoincashjs-lib"),ZZ=require("@scure/bip32"),kX=require("@scure/bip39"),L=require("@uswap/helpers"),f=require("bitcoinjs-lib"),BZ=require("ecpair"),t=[L.Chain.Dash,L.Chain.Dogecoin,L.Chain.Zcash,L.Chain.BitcoinCash]});function g(X){return S(d(X))}function lZ(X){function Z({builder:G,utxos:$}){return $.forEach((Q,J)=>{G.sign(J,X,void 0,65,Q.witnessUtxo?.value)}),G.build()}return{getAddress:()=>{let G=X.getAddress(0);return Promise.resolve(g(G))},signTransaction:Z}}async function AX(X){let Z="phrase"in X?X.phrase:void 0,B="index"in X?X.index||0:0,G=_.derivationPathToString("derivationPath"in X&&X.derivationPath?X.derivationPath:_.updateDerivationPath(_.NetworkDerivationPath[O],{index:B})),$=Z?(await e(O))({derivationPath:G,phrase:Z}):void 0,Q=$?lZ($):("signer"in X)?X.signer:void 0;function J(){return Promise.resolve(Q?.getAddress())}let{getBalance:j,getFeeRates:q,broadcastTx:W,...T}=await x({chain:O});function Y(z,D=!0){return j(S(d(z)))}return{...T,broadcastTx:W,buildTx:cZ,createTransaction:WZ,getAddress:J,getAddressFromKeys:pZ,getBalance:Y,getFeeRates:q,stripPrefix:S,stripToCashAddress:g,transfer:hZ({broadcastTx:W,getFeeRates:q,signer:Q}),validateAddress:V}}async function WZ({assetValue:X,recipient:Z,memo:B,feeRate:G,sender:$}){if(!V(Z))throw new _.SwapKitError("toolbox_utxo_invalid_address",{address:Z});let Q=Math.ceil(X.getBaseValue("number")+G*7500),J=await v(O).getUtxos({address:g($),fetchTxHex:!0,targetValue:Q}),j=B?await F(B):null,q=[];q.push({address:Z,value:X.getBaseValue("number")});let{inputs:W,outputs:T}=E({chain:O,feeRate:G,inputs:J,outputs:q});if(!(W&&T))throw new _.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue:X,sender:$});let Y=await k(),z=new n.TransactionBuilder(Y(O));await Promise.all(W.map(async(D)=>{let C=await v(O).getRawTx(D.hash);z.addInput(n.Transaction.fromBuffer(Buffer.from(C,"hex")),D.index)}));for(let D of T){let C="address"in D&&D.address?D.address:h($),H=await k(),M=n.address.toOutputScript(h(C),H(O));z.addOutput(M,D.value)}if(j)z.addOutput(j,0);return{builder:z,utxos:W}}function hZ({broadcastTx:X,getFeeRates:Z,signer:B}){return async function({recipient:$,assetValue:Q,feeOptionKey:J=_.FeeOption.Fast,...j}){let q=await B?.getAddress();if(!(B&&q))throw new _.SwapKitError("toolbox_utxo_no_signer");if(!$)throw new _.SwapKitError("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});let W=j.feeRate||(await Z())[J],{builder:T,utxos:Y}=await WZ({...j,assetValue:Q,feeRate:W,recipient:$,sender:q}),D=(await B.signTransaction({builder:T,utxos:Y})).toHex();return X(D)}}async function cZ({assetValue:X,recipient:Z,memo:B,feeRate:G,sender:$,setSigHashType:Q}){let J=d(Z);if(!V(J))throw new _.SwapKitError("toolbox_utxo_invalid_address",{address:J});let j=Math.ceil(X.getBaseValue("number")+G*7500),q=await v(O).getUtxos({address:g($),fetchTxHex:!1,targetValue:j}),W=Number(G.toFixed(0)),T=B?await F(B):null,Y=[];if(Y.push({address:h(Z),value:X.getBaseValue("number")}),T)Y.push({script:T,value:0});let{inputs:z,outputs:D}=E({chain:O,feeRate:W,inputs:q,outputs:Y});if(!(z&&D))throw new _.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue:X,sender:$});let C=await k(),H=new qZ.Psbt({network:C(O)});for(let{hash:M,index:b,witnessUtxo:R}of z)H.addInput({hash:M,index:b,sighashType:Q?65:void 0,witnessUtxo:R});for(let M of D){let b="address"in M&&M.address?M.address:h($),R=M.script?T?{script:T,value:0}:void 0:{address:b,value:M.value};if(R)H.addOutput(R)}return{inputs:z,psbt:H,utxos:q}}function pZ(X){let Z=X.getAddress(0);return g(Z)}var n,_,qZ,O;var UX=N(()=>{p();ZX();a();n=require("@psf/bitcoincashjs-lib"),_=require("@uswap/helpers"),qZ=require("bitcoinjs-lib"),O=_.Chain.BitcoinCash});function YZ(){return y.networks.zcash}function DZ(){return{bech32:void 0,bip32:{private:76066276,public:76067358},messagePrefix:`\x18ZCash Signed Message:
2
- `,pubKeyHash:28,scriptHash:28,wif:128}}function oZ({phrase:X,derivationPath:Z}){let B=fX.mnemonicToSeedSync(X),$=EX.HDKey.fromMasterSeed(B).derive(Z);if(!$.privateKey)throw new I.SwapKitError("toolbox_utxo_invalid_params");let Q=DZ(),J=y.ECPair.fromPrivateKey(Buffer.from($.privateKey),{network:Q}),j=y.crypto.hash160(J.publicKey),{isStagenet:q}=I.SKConfig.get("envs"),W=q?Buffer.from([29,37]):Buffer.from([28,184]),T=Buffer.concat([W,j]),Y=TZ.default.encode(T);return{getAddress:()=>Promise.resolve(Y),signTransaction:(z)=>{let D=z.signAllInputs(J);return Promise.resolve(D)}}}function nZ({inputs:X,outputs:Z,psbt:B,sender:G,compiledMemo:$}){for(let Q of X){let J=!!Q.witnessUtxo&&{witnessUtxo:{...Q.witnessUtxo,value:BigInt(Q.value)}},j=!Q.witnessUtxo&&{nonWitnessUtxo:Q.txHex?Buffer.from(Q.txHex,"hex"):void 0};B.addInput({hash:Q.hash,index:Q.index,...J,...j})}for(let Q of Z){let J="address"in Q&&Q.address?Q.address:G,j=Q.script;if(j&&!$)continue;let q=j?{script:$,value:0n}:{script:y.address.toOutputScript(J,YZ()),value:BigInt(Q.value)};B.addOutput(q)}return{inputs:X,psbt:B}}async function LZ(X){let{assetValue:Z,recipient:B,memo:G,feeRate:$,sender:Q,fetchTxHex:J}=X,j=G?F(G):null,q=await v(I.Chain.Zcash).getUtxos({address:Q,fetchTxHex:J!==!1}),W=[{address:B,value:Number(Z.getBaseValue("string"))},...j?[{script:j,value:0}]:[]],{inputs:T,outputs:Y}=E({chain:I.Chain.Zcash,changeAddress:Q,feeRate:$,inputs:q,outputs:W});if(!(T&&Y))throw new I.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue:Z,sender:Q});let z=y.bitgo.createPsbtForNetwork({network:YZ()},{version:455}),C=3268858036,H=Buffer.concat([Buffer.of(252),Buffer.of(5),Buffer.from("BITGO"),Buffer.of(0)]),M=Buffer.allocUnsafe(4);M.writeUInt32LE(C>>>0,0),z.addUnknownKeyValToGlobal({key:H,value:M});let{psbt:b,inputs:R}=await nZ({compiledMemo:j,inputs:T,outputs:Y,psbt:z,sender:Q});return{inputs:R,outputs:Y,psbt:b}}async function RX(X){let Z=await u.match(X).with({signer:u.P.not(u.P.nullish)},({signer:J})=>Promise.resolve(J)).with({phrase:u.P.string},({phrase:J,derivationPath:j,index:q=0})=>{let W=j||I.NetworkDerivationPath[I.Chain.Zcash]||[44,133,0,0,0],T=I.updateDerivationPath(W,{index:q}),Y=I.derivationPathToString(T);return oZ({derivationPath:Y,phrase:J})}).otherwise(()=>Promise.resolve(void 0)),B=await x({chain:I.Chain.Zcash,signer:Z});async function G({recipient:J,assetValue:j,feeOptionKey:q=I.FeeOption.Fast,...W}){let T=await Z?.getAddress();if(!(Z&&T))throw new I.SwapKitError("toolbox_utxo_no_signer");let Y=W.feeRate||(await B.getFeeRates())[q],{psbt:z}=await LZ({...W,assetValue:j,feeRate:Y,recipient:J,sender:T}),D=await Z.signTransaction(z);return D.finalizeAllInputs(),B.broadcastTx(D.extractTransaction().toHex())}function $({phrase:J,derivationPath:j="m/44'/133'/0'/0/0"}){let q=fX.mnemonicToSeedSync(J),T=EX.HDKey.fromMasterSeed(q).derive(j);if(!T.privateKey)throw new I.SwapKitError("toolbox_utxo_invalid_params");let Y=DZ();return y.ECPair.fromPrivateKey(Buffer.from(T.privateKey),{network:Y})}function Q({phrase:J,derivationPath:j="m/44'/133'/0'/0/0"}){return $({derivationPath:j,phrase:J}).toWIF()}return{...B,createKeysForPath:$,createTransaction:LZ,getPrivateKeyFromMnemonic:Q,transfer:G,validateAddress:o}}var y,EX,fX,I,TZ,u;var wX=N(()=>{p();ZX();a();y=require("@bitgo/utxo-lib"),EX=require("@scure/bip32"),fX=require("@scure/bip39"),I=require("@uswap/helpers"),TZ=m(require("bs58check")),u=require("ts-pattern")});async function uZ(X,Z){switch(X){case w.Chain.BitcoinCash:return await AX(Z||{});case w.Chain.Zcash:return await RX(Z);case w.Chain.Bitcoin:case w.Chain.Dogecoin:case w.Chain.Litecoin:case w.Chain.Dash:return await x({chain:X,...Z});default:throw new w.SwapKitError("toolbox_utxo_not_supported",{chain:X})}}var w;var UZ=N(()=>{UX();ZX();wX();UX();a();w=require("@uswap/helpers")});var rZ={};_Z(rZ,{validateZcashAddress:()=>o,toLegacyAddress:()=>h,toCashAddress:()=>d,stripToCashAddress:()=>g,stripPrefix:()=>S,nonSegwitChains:()=>t,isValidAddress:()=>NX,getUtxoToolbox:()=>uZ,getUtxoNetwork:()=>k,getUtxoApi:()=>v,getUTXOAddressValidator:()=>QZ,getScriptTypeForAddress:()=>i,getOutputSize:()=>s,getInputSize:()=>P,getDustThreshold:()=>LX,getCreateKeysForPath:()=>e,detectAddressNetwork:()=>OX,createZcashToolbox:()=>RX,createUTXOToolbox:()=>x,createCustomUtxoApi:()=>EZ,createBCHToolbox:()=>AX,compileMemo:()=>F,calculateTxSize:()=>c,bchValidateAddress:()=>V,addressFromKeysGetter:()=>FX,addInputsAndOutputs:()=>GZ,accumulative:()=>E,UtxoNetwork:()=>vX,UTXOScriptType:()=>WX,TX_OVERHEAD:()=>qX,OutputSizes:()=>$X,OP_RETURN_OVERHEAD:()=>tX,MIN_TX_FEE:()=>VZ,InputSizes:()=>QX});module.exports=MZ(rZ);var dZ=N(()=>{p();UZ();UX();ZX();wX()});dZ();
1
+ var IB=Object.create;var{getPrototypeOf:_B,defineProperty:r,getOwnPropertyNames:gX,getOwnPropertyDescriptor:MB}=Object,mX=Object.prototype.hasOwnProperty;var g=(X,B,Z)=>{Z=X!=null?IB(_B(X)):{};let G=B||!X||!X.__esModule?r(Z,"default",{value:X,enumerable:!0}):Z;for(let $ of gX(X))if(!mX.call(G,$))r(G,$,{get:()=>X[$],enumerable:!0});return G},xX=new WeakMap,HB=(X)=>{var B=xX.get(X),Z;if(B)return B;if(B=r({},"__esModule",{value:!0}),X&&typeof X==="object"||typeof X==="function")gX(X).map((G)=>!mX.call(B,G)&&r(B,G,{get:()=>X[G],enumerable:!(Z=MB(X,G))||Z.enumerable}));return xX.set(X,B),B};var vB=(X,B)=>{for(var Z in B)r(X,Z,{get:B[Z],enumerable:!0,configurable:!0,set:(G)=>B[Z]=()=>G})};var y=(X,B)=>()=>(X&&(B=X(X=0)),B);function hX(){function X(){let B=Date.now(),Z=CX||B;return CX=Z,B>CX?B:Z+1}return NB+X().toString(36)}function cX(X){return async function(Z,G=!0){let $=await lX.SwapKitApi.getChainBalance({address:Z,chain:X,scamFilter:G}),{baseDecimal:Q}=d.getChainConfig(X),J=$.map(({identifier:q,value:L,decimal:Y})=>{return new d.AssetValue({decimal:Y||Q,identifier:q,value:L})});if(!J.some((q)=>q.isGasAsset))return[d.AssetValue.from({chain:X}),...J];return J}}var d,lX,NB,CX=0;var IX=y(()=>{d=require("@uswap/helpers"),lX=require("@uswap/helpers/api"),NB=typeof process<"u"&&process.pid?process.pid.toString(36):""});async function yB({chain:X,txHash:B}){let Z=`${GX(X)}/push/transaction`,G=JSON.stringify({data:B});try{let $=await z.RequestClient.post(Z,{body:G,headers:{"Content-Type":"application/json"}});if($.context.code!==200)throw new z.USwapError("toolbox_utxo_broadcast_failed",{error:$.context.error||"Transaction broadcast failed"});return $.data?.transaction_hash||B}catch($){let Q=await z.getRPCUrl(X);if(Q){let J=JSON.stringify({id:hX(),jsonrpc:"2.0",method:"sendrawtransaction",params:[B]}),j=await z.RequestClient.post(Q,{body:J,headers:{"Content-Type":"application/json"}});if(j.error)throw new z.USwapError("toolbox_utxo_broadcast_failed",{error:j.error?.message});if(j.result.includes('"code":-26'))throw new z.USwapError("toolbox_utxo_invalid_transaction",{error:"Transaction amount was too low"});return j.result}throw $}}function GX(X){return`https://api.blockchair.com/${OB(X)}`}function pX(X){switch(X){case z.Chain.Bitcoin:return 5;case z.Chain.Dogecoin:return 1e4;case z.Chain.Litecoin:return 1;case z.Chain.Zcash:return 1;default:return 2}}function OB(X){switch(X){case z.Chain.BitcoinCash:return"bitcoin-cash";case z.Chain.Litecoin:return"litecoin";case z.Chain.Dash:return"dash";case z.Chain.Dogecoin:return"dogecoin";case z.Chain.Zcash:return"zcash";case z.Chain.Polkadot:return"polkadot";default:return"bitcoin"}}async function UB(X){try{let{feePerKb:B}=await z.RequestClient.get(`https://app.bitgo.com/api/v2/${X.toLowerCase()}/tx/fee`),Z=B/1000;return Math.max(Z,pX(X))}catch{return pX(X)}}async function _X(X,B){let Z=await z.RequestClient.get(`${X}${B?`${X.includes("?")?"&":"?"}key=${B}`:""}`);if(!Z||Z.context.code!==200)throw new z.USwapError("toolbox_utxo_api_error",{error:`Failed to query ${X}`});return Z.data}async function rX({address:X,chain:B,apiKey:Z}){if(!X)throw new z.USwapError("toolbox_utxo_invalid_params",{error:"Address is required"});try{return(await _X(`${GX(B)}/dashboards/address/${X}?transaction_details=true`,Z))[X]}catch{return{address:{balance:0,transaction_count:0},utxo:[]}}}async function KB({address:X,chain:B,apiKey:Z}){return(await rX({address:X,apiKey:Z,chain:B}))?.address.balance||0}async function dX({chain:X,apiKey:B,txHash:Z}){if(!Z)throw new z.USwapError("toolbox_utxo_invalid_params",{error:"TxHash is required"});try{return(await _X(`${GX(X)}/raw/transaction/${Z}`,B))?.[Z]?.raw_transaction||""}catch(G){let $=G instanceof Error?G.message:String(G);return console.error(`Failed to fetch raw transaction: ${$}`),""}}async function kB({chain:X,address:B,apiKey:Z,offset:G=0,limit:$=30}){return(await _X(`${GX(X)}/outputs?q=recipient(${B}),is_spent(false),value(..2000000000000000)&s=value(desc)&fields=is_spent,transaction_hash,index,value,script_hex,block_id,spending_signature_hex&limit=${$}&offset=${G}`,Z)).map(({is_spent:q,script_hex:L,block_id:Y,transaction_hash:T,index:C,value:D,spending_signature_hex:I})=>({hash:T,index:C,is_confirmed:Y!==-1,is_spent:q,script_hex:L,txHex:I,value:D}))}function AB(X){return X.reduce((B,Z)=>B+Z.value,0)}function oX(X,B){let Z=[...X].sort((G,$)=>$.value-G.value);if(B){let G=[],$=0;for(let Q of Z)if(G.push(Q),$+=Q.value,$>=B)break;return G}return Z}async function iX({chain:X,address:B,apiKey:Z,targetValue:G,accumulativeValue:$=0,offset:Q=0,limit:J=30}){if(!B)throw new z.USwapError("toolbox_utxo_invalid_params",{error:"Address is required"});try{let j=await kB({address:B,apiKey:Z,chain:X,limit:J,offset:Q,targetValue:G}),L=j.length<J,Y=j.filter(({is_spent:H})=>!H),T=AB(Y),C=$+T,D=G&&C>=G;if(L||D)return oX(Y,G);let I=await iX({accumulativeValue:C,address:B,apiKey:Z,chain:X,limit:J,offset:Q+J,targetValue:G}),v=[...Y,...I];return oX(v,G)}catch(j){let q=j instanceof Error?j.message:String(j);return console.error(`Failed to fetch unspent UTXOs: ${q}`),[]}}async function FB({address:X,chain:B,apiKey:Z,fetchTxHex:G=!0,targetValue:$}){let Q=await iX({address:X,apiKey:Z,chain:B,targetValue:$}),J=[];for(let{hash:j,index:q,script_hex:L,value:Y}of Q){let T;if(G)T=await dX({apiKey:Z,chain:B,txHash:j});J.push({address:X,hash:j,index:q,txHex:T,value:Y,witnessUtxo:{script:Buffer.from(L,"hex"),value:Y}})}return J}function N(X){let B=z.SKConfig.get("apiKeys").blockchair||"";return z.warnOnce({condition:!B,id:"no_blockchair_api_key_warning",warning:"No Blockchair API key found. Functionality will be limited."}),{broadcastTx:(Z)=>yB({chain:X,txHash:Z}),getAddressData:(Z)=>rX({address:Z,apiKey:B,chain:X}),getBalance:(Z)=>KB({address:Z,apiKey:B,chain:X}),getRawTx:(Z)=>dX({apiKey:B,chain:X,txHash:Z}),getSuggestedTxFee:()=>UB(X),getUtxos:(Z)=>FB({...Z,apiKey:B,chain:X})}}function EB(X){return X}function K(){return function(B){switch(B){case z.Chain.Bitcoin:return uX.networks.bitcoin;case z.Chain.BitcoinCash:return m.default.bitcoincash.main.toBitcoinJS();case z.Chain.Dash:return m.default.dash.main.toBitcoinJS();case z.Chain.Litecoin:return m.default.litecoin.main.toBitcoinJS();case z.Chain.Dogecoin:{let Z={private:70615956,public:70617039},G=m.default.dogecoin.test;return G.versions.bip32=Z,m.default.dogecoin.main.toBitcoinJS()}case z.Chain.Zcash:return nX.networks.zcash;default:throw new z.USwapError("toolbox_utxo_not_supported",{chain:B})}}}var nX,z,uX,m;var sX=y(()=>{IX();nX=require("@bitgo/utxo-lib"),z=require("@uswap/helpers"),uX=require("bitcoinjs-lib"),m=g(require("coininfo"))});function yX(X){try{return JX(X),!0}catch{return!1}}function OX(X){return JX(X)?.network}function l(X){let B=JX(X);if(B?.format==="legacy")return X;return wB(B)}function i(X){let B=JX(X);return PB(B)}function JX(X){try{let B=fB(X);if(B)return B}catch{}try{let B=RB(X);if(B)return B}catch{}throw new MX.USwapError("toolbox_utxo_invalid_address",{address:X})}function fB(X){try{let B=HX.default.decode(X);if(B.length!==21)throw new MX.USwapError("toolbox_utxo_invalid_address",{address:X});let Z=B[0],G=Array.prototype.slice.call(B,1);switch(Z){case S.legacy.mainnet.p2pkh:return{format:"legacy",hash:G,network:"mainnet",type:"p2pkh"};case S.legacy.mainnet.p2sh:return{format:"legacy",hash:G,network:"mainnet",type:"p2sh"};case S.legacy.testnet.p2pkh:return{format:"legacy",hash:G,network:"testnet",type:"p2pkh"};case S.legacy.testnet.p2sh:return{format:"legacy",hash:G,network:"testnet",type:"p2sh"};case S.bitpay.mainnet.p2pkh:return{format:"bitpay",hash:G,network:"mainnet",type:"p2pkh"};case S.bitpay.mainnet.p2sh:return{format:"bitpay",hash:G,network:"mainnet",type:"p2sh"};default:return}}catch{return}}function RB(X){if(X.indexOf(":")!==-1)try{return aX(X)}catch{}else{let B=["bitcoincash","bchtest","bchreg"];for(let Z of B)try{return aX(`${Z}:${X}`)}catch{}}return}function aX(X){try{let{hash:B,prefix:Z,type:G}=vX.default.decode(X);return{format:"cashaddr",hash:Array.prototype.slice.call(B,0),network:Z==="bitcoincash"?"mainnet":"testnet",type:G==="P2PKH"?"p2pkh":"p2sh"}}catch{return}}function wB(X){let B=S.legacy[X.network][X.type],Z=Buffer.alloc(1+X.hash.length);return Z[0]=B,Z.set(X.hash,1),HX.default.encode(Z)}function PB(X){let B=X.network==="mainnet"?"bitcoincash":"bchtest",Z=X.type==="p2pkh"?"P2PKH":"P2SH",G=new Uint8Array(X.hash);return vX.default.encode(B,Z,G)}var MX,HX,vX,NX,S;var tX=y(()=>{MX=require("@uswap/helpers"),HX=g(require("bs58check")),vX=g(require("cashaddrjs"));((Z)=>{Z.Mainnet="mainnet";Z.Testnet="testnet"})(NX||={});S={["legacy"]:{["mainnet"]:{["p2pkh"]:0,["p2sh"]:5},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}},["bitpay"]:{["mainnet"]:{["p2pkh"]:28,["p2sh"]:40},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}}}});function k(X){let B=Buffer.from(X,"utf8");return jX.script.compile([jX.opcodes.OP_RETURN,B])}var eX,jX,SB=1000,qX=10,XB=10,VB=41,bB=107,LX,QX,$X,s=(X)=>{if(X.startsWith("bc1")||X.startsWith("tb1")||X.startsWith("ltc1")||X.startsWith("tltc1"))return"P2WPKH";if(X.startsWith("1")||X.startsWith("m")||X.startsWith("n")||X.startsWith("bitcoincash:q")||X.startsWith("bitcoincash:p")||X.startsWith("q")||X.startsWith("p")||X.startsWith("L")||X.startsWith("M")||X.startsWith("3")||X.startsWith("D")||X.startsWith("A")||X.startsWith("9")||X.startsWith("X")||X.startsWith("7")||X.startsWith("y")||X.startsWith("t1")||X.startsWith("t3")||X.startsWith("tm"))return"P2PKH";throw new eX.USwapError("toolbox_utxo_invalid_address",{address:X})},h=({inputs:X,outputs:B,feeRate:Z})=>{let G=X[0]&&"address"in X[0]&&X[0].address?s(X[0].address):"P2PKH",$=X.filter((J)=>J.value>=QX["type"in J?J.type:"P2PKH"]*Math.ceil(Z)).reduce((J,j)=>J+R(j),0),Q=B?.reduce((J,j)=>J+a(j),0)||$X[G];return qX+$+Q},R=(X)=>{if("type"in X)return QX[X.type];if("address"in X&&X.address)return QX[s(X.address)];return VB+bB},a=(X,B)=>{if(X?.script)return XB+X.script.length+(X.script.length>=74?2:1);if(B)return $X[B];return $X.P2PKH};var UX=y(()=>{eX=require("@uswap/helpers"),jX=require("bitcoinjs-lib");((Z)=>{Z.P2PKH="P2PKH";Z.P2WPKH="P2WPKH"})(LX||={});QX={["P2PKH"]:148,["P2WPKH"]:68},$X={["P2PKH"]:34,["P2WPKH"]:31}});function WX(X){switch(X){case A.Chain.Bitcoin:case A.Chain.BitcoinCash:return 550;case A.Chain.Dash:case A.Chain.Litecoin:return 5500;case A.Chain.Dogecoin:return 1e5;case A.Chain.Zcash:return 546;default:throw new A.USwapError("toolbox_utxo_not_supported",{chain:X})}}function F({inputs:X,outputs:B,feeRate:Z=1,chain:G=A.Chain.Bitcoin,changeAddress:$=""}){let Q=Math.ceil(Z),J=X[0]&&"address"in X[0]&&X[0].address?s(X[0].address):"P2PKH",j=X.filter((D)=>R(D)*Q<=D.value),q=qX+B.reduce((D,I)=>D+a(I,J),0),L=B.reduce((D,I)=>D+I.value,0),Y=q*Q,T=0,C=[];for(let D of j){let I=R(D),v=Q*I;Y+=v,T+=D.value,C.push(D);let H=Y+L;if(T<H)continue;let u=T-H,P=Q*a({address:"",value:0},J);if(u>P){let VX=P+Y,bX=T-(L+VX);if(bX>Math.max(R({})*Q,WX(G)))return{fee:VX,inputs:C,outputs:B.concat({address:$,value:bX})}}return{fee:Y,inputs:C,outputs:B}}return{fee:Q*h({feeRate:Q,inputs:X,outputs:B})}}var A;var BB=y(()=>{UX();A=require("@uswap/helpers")});var c=y(()=>{sX();tX();BB();UX()});function V(X){return X.replace(/(bchtest:|bitcoincash:)/,"")}function w(X){let B=V(X);return yX(B)&&OX(B)==="mainnet"}function p(X){try{if(X.startsWith("z"))return console.warn("Shielded Zcash addresses (z-addresses) are not supported. Use transparent addresses (t1/t3) only."),!1;let B=YX.networks.zcash;try{return YX.address.toOutputScript(X,B),!0}catch{let Z=ZB.default.decode(X);if(Z.length<21)return!1;let G=Z[0];return G===B.pubKeyHash||G===B.scriptHash}}catch{return!1}}var YX,ZB;var t=y(()=>{c();YX=require("@bitgo/utxo-lib"),ZB=g(require("bs58check"))});function QB({inputs:X,outputs:B,chain:Z,psbt:G,sender:$,compiledMemo:Q}){for(let J of X){let j=!!J.witnessUtxo&&!e.includes(Z)&&{witnessUtxo:J.witnessUtxo},q=e.includes(Z)&&{nonWitnessUtxo:J.txHex?Buffer.from(J.txHex,"hex"):void 0};G.addInput({hash:J.hash,index:J.index,...j,...q})}for(let J of B){let j="address"in J&&J.address?J.address:$,q=J.script;if(q&&!Q)continue;let L=q?{script:Q,value:0}:{address:j,value:J.value};E.initEccLib(TX.default),G.addOutput(L)}return{inputs:X,psbt:G}}async function $B({assetValue:X,recipient:B,memo:Z,feeRate:G,sender:$,fetchTxHex:Q=!1}){let J=X.chain,j=Z?await k(Z):null,q=await LB({assetValue:X,fetchTxHex:Q,memo:Z,recipient:B,sender:$}),{inputs:L,outputs:Y}=F({...q,chain:J,feeRate:G});if(!(L&&Y))throw new W.USwapError("toolbox_utxo_insufficient_balance",{assetValue:X,sender:$});let T=await K(),C=new E.Psbt({network:T(J)});if(J===W.Chain.Dogecoin)C.setMaximumFeeRate(650000000);let{psbt:D,inputs:I}=await QB({chain:J,compiledMemo:j,inputs:L,outputs:Y,psbt:C,sender:$});return{inputs:I,psbt:D,utxos:q.inputs}}async function jB(){let X=await K();return function({address:Z,chain:G}){if(G===W.Chain.BitcoinCash)return w(Z);if(G===W.Chain.Zcash)return p(Z);try{return E.initEccLib(TX.default),E.address.toOutputScript(Z,X(G)),!0}catch{return!1}}}async function xB({chain:X,phrase:B,derivationPath:Z}){let G=(await XX(X))({derivationPath:Z,phrase:B});async function $(J){return await J.signAllInputs(G),J}function Q(){return kX(X)(G)}return{getAddress:Q,signTransaction:$}}async function b({chain:X,...B}){let Z="phrase"in B?B.phrase:void 0,G="index"in B?B.index||0:0,$=W.derivationPathToString("derivationPath"in B&&B.derivationPath?B.derivationPath:W.updateDerivationPath(W.NetworkDerivationPath[X],{index:G})),Q=Z?await xB({chain:X,derivationPath:$,phrase:Z}):("signer"in B)?B.signer:void 0;function J(){return Promise.resolve(Q?.getAddress())}let j=await jB(),q=await XX(X);return{accumulative:F,broadcastTx:(L)=>N(X).broadcastTx(L),calculateTxSize:h,createKeysForPath:q,createTransaction:$B,estimateMaxSendableAmount:gB(X),estimateTransactionFee:mB(X),getAddress:J,getAddressFromKeys:kX(X),getBalance:cX(X),getFeeRates:()=>BX(X),getInputsOutputsFee:qB,getPrivateKeyFromMnemonic:(L)=>{return q(L).toWIF()},transfer:lB(Q),validateAddress:(L)=>j({address:L,chain:X})}}async function qB({assetValue:X,feeOptionKey:B=W.FeeOption.Fast,feeRate:Z,memo:G,sender:$,recipient:Q}){let J=X.chain,j=await LB({assetValue:X,memo:G,recipient:Q,sender:$}),q=Z?Math.floor(Z):(await BX(J))[B];return F({...j,chain:J,feeRate:q})}function gB(X){return async function({from:Z,memo:G,feeRate:$,feeOptionKey:Q=W.FeeOption.Fast,recipients:J=1}){let j=await N(X).getAddressData(Z),q=$?Math.ceil($):(await BX(X))[Q],L=j?.utxo.map((I)=>({...I,hash:"",type:"P2PKH"})).filter((I)=>I.value>Math.max(WX(X),R(I)*q));if(!L?.length)return W.AssetValue.from({chain:X});let Y=W.AssetValue.from({chain:X,value:L.reduce((I,v)=>I+v.value,0)}),T=typeof J==="number"?Array.from({length:J},()=>({address:Z,value:0})):J;if(G){let I=await k(G);T.push({address:Z,script:I,value:0})}let D=h({feeRate:q,inputs:L,outputs:T})*q;return Y.sub(D)}}function mB(X){return async(B)=>{let Z=await qB(B);return W.AssetValue.from({chain:X,value:W.SwapKitNumber.fromBigInt(BigInt(Z.fee),8).getValue("string")})}}async function XX(X){let B=await K();switch(X){case W.Chain.BitcoinCash:return function({phrase:G,derivationPath:$=`${W.DerivationPath.BCH}/0`,wif:Q}){let J=B(X);if(Q)return DX.ECPair.fromWIF(Q,J);if(!G)throw new W.USwapError("toolbox_utxo_invalid_params",{error:"No phrase provided"});return DX.HDNode.fromSeedBuffer(Buffer.from(KX.mnemonicToSeedSync(G)),J).derivePath($).keyPair};case W.Chain.Bitcoin:case W.Chain.Dogecoin:case W.Chain.Litecoin:case W.Chain.Zcash:case W.Chain.Dash:return function({phrase:G,wif:$,derivationPath:Q}){if(!($||G))throw new W.USwapError("toolbox_utxo_invalid_params",{error:"Either phrase or wif must be provided"});let J=JB.ECPairFactory(TX.default),j=B(X);if($)return J.fromWIF($,j);let q=KX.mnemonicToSeedSync(G),L=GB.HDKey.fromMasterSeed(q,j).derive(Q);if(!L.privateKey)throw new W.USwapError("toolbox_utxo_invalid_params",{error:"Could not get private key from phrase"});return J.fromPrivateKey(Buffer.from(L.privateKey),{network:j})};default:throw new W.USwapError("toolbox_utxo_not_supported",{chain:X})}}function kX(X){let B=K();return function(G){if(!G)throw new W.USwapError("toolbox_utxo_invalid_params",{error:"Keys must be provided"});let $=e.includes(X)?E.payments.p2pkh:E.payments.p2wpkh,{address:Q}=$({network:B(X),pubkey:G.publicKey});if(!Q)throw new W.USwapError("toolbox_utxo_invalid_address",{error:"Address not defined"});return Q}}function lB(X){return async function({memo:Z,recipient:G,feeOptionKey:$,feeRate:Q,assetValue:J}){let j=await X?.getAddress(),q=J.chain;if(!(X&&j))throw new W.USwapError("toolbox_utxo_no_signer");if(!G)throw new W.USwapError("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});let L=Q||(await BX(q))[$||W.FeeOption.Fast],{psbt:Y}=await $B({assetValue:J,feeRate:L,memo:Z,recipient:G,sender:j}),T=await X.signTransaction(Y);return T.finalizeAllInputs(),N(q).broadcastTx(T.extractTransaction().toHex())}}async function BX(X){let B=await N(X).getSuggestedTxFee();return{[W.FeeOption.Average]:B,[W.FeeOption.Fast]:W.applyFeeMultiplier(B,W.FeeOption.Fast),[W.FeeOption.Fastest]:W.applyFeeMultiplier(B,W.FeeOption.Fastest)}}async function LB({assetValue:X,recipient:B,memo:Z,sender:G,fetchTxHex:$=!1}){let Q=X.chain,J=(await BX(Q))[W.FeeOption.Fastest],j=$||e.includes(Q),q=X.getBaseValue("number"),L=Math.ceil(q+J*5000);return{inputs:await N(Q).getUtxos({address:G,fetchTxHex:j,targetValue:L}),outputs:[{address:B,value:q},...Z?[{address:"",script:await k(Z),value:0}]:[]]}}var TX,DX,GB,KX,W,E,JB,e;var ZX=y(()=>{IX();c();t();TX=g(require("@bitcoinerlab/secp256k1")),DX=require("@psf/bitcoincashjs-lib"),GB=require("@scure/bip32"),KX=require("@scure/bip39"),W=require("@uswap/helpers"),E=require("bitcoinjs-lib"),JB=require("ecpair"),e=[W.Chain.Dash,W.Chain.Dogecoin,W.Chain.Zcash,W.Chain.BitcoinCash]});function x(X){return V(i(X))}function hB(X){function B({builder:G,utxos:$}){return $.forEach((Q,J)=>{G.sign(J,X,void 0,65,Q.witnessUtxo?.value)}),G.build()}return{getAddress:()=>{let G=X.getAddress(0);return Promise.resolve(x(G))},signTransaction:B}}async function AX(X){let B="phrase"in X?X.phrase:void 0,Z="index"in X?X.index||0:0,G=M.derivationPathToString("derivationPath"in X&&X.derivationPath?X.derivationPath:M.updateDerivationPath(M.NetworkDerivationPath[O],{index:Z})),$=B?(await XX(O))({derivationPath:G,phrase:B}):void 0,Q=$?hB($):("signer"in X)?X.signer:void 0;function J(){return Promise.resolve(Q?.getAddress())}let{getBalance:j,getFeeRates:q,broadcastTx:L,...Y}=await b({chain:O});function T(C,D=!0){return j(V(i(C)))}return{...Y,broadcastTx:L,buildTx:pB,createTransaction:YB,getAddress:J,getAddressFromKeys:oB,getBalance:T,getFeeRates:q,stripPrefix:V,stripToCashAddress:x,transfer:cB({broadcastTx:L,getFeeRates:q,signer:Q}),validateAddress:w}}async function YB({assetValue:X,recipient:B,memo:Z,feeRate:G,sender:$}){if(!w(B))throw new M.USwapError("toolbox_utxo_invalid_address",{address:B});let Q=Math.ceil(X.getBaseValue("number")+G*7500),J=await N(O).getUtxos({address:x($),fetchTxHex:!0,targetValue:Q}),j=Z?await k(Z):null,q=[];q.push({address:B,value:X.getBaseValue("number")});let{inputs:L,outputs:Y}=F({chain:O,feeRate:G,inputs:J,outputs:q});if(!(L&&Y))throw new M.USwapError("toolbox_utxo_insufficient_balance",{assetValue:X,sender:$});let T=await K(),C=new o.TransactionBuilder(T(O));await Promise.all(L.map(async(D)=>{let I=await N(O).getRawTx(D.hash);C.addInput(o.Transaction.fromBuffer(Buffer.from(I,"hex")),D.index)}));for(let D of Y){let I="address"in D&&D.address?D.address:l($),v=await K(),H=o.address.toOutputScript(l(I),v(O));C.addOutput(H,D.value)}if(j)C.addOutput(j,0);return{builder:C,utxos:L}}function cB({broadcastTx:X,getFeeRates:B,signer:Z}){return async function({recipient:$,assetValue:Q,feeOptionKey:J=M.FeeOption.Fast,...j}){let q=await Z?.getAddress();if(!(Z&&q))throw new M.USwapError("toolbox_utxo_no_signer");if(!$)throw new M.USwapError("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});let L=j.feeRate||(await B())[J],{builder:Y,utxos:T}=await YB({...j,assetValue:Q,feeRate:L,recipient:$,sender:q}),D=(await Z.signTransaction({builder:Y,utxos:T})).toHex();return X(D)}}async function pB({assetValue:X,recipient:B,memo:Z,feeRate:G,sender:$,setSigHashType:Q}){let J=i(B);if(!w(J))throw new M.USwapError("toolbox_utxo_invalid_address",{address:J});let j=Math.ceil(X.getBaseValue("number")+G*7500),q=await N(O).getUtxos({address:x($),fetchTxHex:!1,targetValue:j}),L=Number(G.toFixed(0)),Y=Z?await k(Z):null,T=[];if(T.push({address:l(B),value:X.getBaseValue("number")}),Y)T.push({script:Y,value:0});let{inputs:C,outputs:D}=F({chain:O,feeRate:L,inputs:q,outputs:T});if(!(C&&D))throw new M.USwapError("toolbox_utxo_insufficient_balance",{assetValue:X,sender:$});let I=await K(),v=new WB.Psbt({network:I(O)});for(let{hash:H,index:u,witnessUtxo:P}of C)v.addInput({hash:H,index:u,sighashType:Q?65:void 0,witnessUtxo:P});for(let H of D){let u="address"in H&&H.address?H.address:l($),P=H.script?Y?{script:Y,value:0}:void 0:{address:u,value:H.value};if(P)v.addOutput(P)}return{inputs:C,psbt:v,utxos:q}}function oB(X){let B=X.getAddress(0);return x(B)}var o,M,WB,O;var zX=y(()=>{c();ZX();t();o=require("@psf/bitcoincashjs-lib"),M=require("@uswap/helpers"),WB=require("bitcoinjs-lib"),O=M.Chain.BitcoinCash});function EX(){return U.networks.zcash}function zB(){return{bech32:void 0,bip32:{private:76066276,public:76067358},messagePrefix:`\x18ZCash Signed Message:
2
+ `,pubKeyHash:28,scriptHash:28,wif:128}}function nB({phrase:X,derivationPath:B}){let Z=RX.mnemonicToSeedSync(X),$=fX.HDKey.fromMasterSeed(Z).derive(B);if(!$.privateKey)throw new _.USwapError("toolbox_utxo_invalid_params");let Q=zB(),J=U.ECPair.fromPrivateKey(Buffer.from($.privateKey),{network:Q}),j=U.crypto.hash160(J.publicKey),{isStagenet:q}=_.SKConfig.get("envs"),L=q?Buffer.from([29,37]):Buffer.from([28,184]),Y=Buffer.concat([L,j]),T=DB.default.encode(Y);return{getAddress:()=>Promise.resolve(T),signTransaction:(C)=>{let D=C.signAllInputs(J);return Promise.resolve(D)}}}function uB({inputs:X,outputs:B,psbt:Z,sender:G,compiledMemo:$}){for(let Q of X){let J=!!Q.witnessUtxo&&{witnessUtxo:{...Q.witnessUtxo,value:BigInt(Q.value)}},j=!Q.witnessUtxo&&{nonWitnessUtxo:Q.txHex?Buffer.from(Q.txHex,"hex"):void 0};Z.addInput({hash:Q.hash,index:Q.index,...J,...j})}for(let Q of B){let J="address"in Q&&Q.address?Q.address:G,j=Q.script;if(j&&!$)continue;let q=j?{script:$,value:0n}:{script:U.address.toOutputScript(J,EX()),value:BigInt(Q.value)};Z.addOutput(q)}return{inputs:X,psbt:Z}}async function TB(X){let{assetValue:B,recipient:Z,memo:G,feeRate:$,sender:Q,fetchTxHex:J}=X,j=G?k(G):null,q=await N(_.Chain.Zcash).getUtxos({address:Q,fetchTxHex:J!==!1}),L=[{address:Z,value:Number(B.getBaseValue("string"))},...j?[{script:j,value:0}]:[]],{inputs:Y,outputs:T}=F({chain:_.Chain.Zcash,changeAddress:Q,feeRate:$,inputs:q,outputs:L});if(!(Y&&T))throw new _.USwapError("toolbox_utxo_insufficient_balance",{assetValue:B,sender:Q});let C=U.bitgo.createPsbtForNetwork({network:EX()},{version:FX.ZcashTransaction.VERSION4_BRANCH_NU6_1}),{psbt:D,inputs:I}=await uB({compiledMemo:j,inputs:Y,outputs:T,psbt:C,sender:Q});return D.setDefaultsForVersion(EX(),FX.ZcashTransaction.VERSION4_BRANCH_NU6_1),{inputs:I,outputs:T,psbt:D}}async function wX(X){let B=await n.match(X).with({signer:n.P.not(n.P.nullish)},({signer:J})=>Promise.resolve(J)).with({phrase:n.P.string},({phrase:J,derivationPath:j,index:q=0})=>{let L=j||_.NetworkDerivationPath[_.Chain.Zcash]||[44,133,0,0,0],Y=_.updateDerivationPath(L,{index:q}),T=_.derivationPathToString(Y);return nB({derivationPath:T,phrase:J})}).otherwise(()=>Promise.resolve(void 0)),Z=await b({chain:_.Chain.Zcash,signer:B});async function G({recipient:J,assetValue:j,feeOptionKey:q=_.FeeOption.Fast,...L}){let Y=await B?.getAddress();if(!(B&&Y))throw new _.USwapError("toolbox_utxo_no_signer");let T=L.feeRate||(await Z.getFeeRates())[q],{psbt:C}=await TB({...L,assetValue:j,feeRate:T,recipient:J,sender:Y}),D=await B.signTransaction(C);D.validateSignaturesOfAllInputs(),D.finalizeAllInputs();let v=D.extractTransaction().toHex();return Z.broadcastTx(v)}function $({phrase:J,derivationPath:j="m/44'/133'/0'/0/0"}){let q=RX.mnemonicToSeedSync(J),Y=fX.HDKey.fromMasterSeed(q).derive(j);if(!Y.privateKey)throw new _.USwapError("toolbox_utxo_invalid_params");let T=zB();return U.ECPair.fromPrivateKey(Buffer.from(Y.privateKey),{network:T})}function Q({phrase:J,derivationPath:j="m/44'/133'/0'/0/0"}){return $({derivationPath:j,phrase:J}).toWIF()}return{...Z,createKeysForPath:$,createTransaction:TB,getPrivateKeyFromMnemonic:Q,transfer:G,validateAddress:p}}var U,FX,fX,RX,_,DB,n;var PX=y(()=>{c();ZX();t();U=require("@bitgo/utxo-lib"),FX=require("@bitgo/utxo-lib/dist/src/bitgo"),fX=require("@scure/bip32"),RX=require("@scure/bip39"),_=require("@uswap/helpers"),DB=g(require("bs58check")),n=require("ts-pattern")});async function rB(X,B){switch(X){case f.Chain.BitcoinCash:return await AX(B||{});case f.Chain.Zcash:return await wX(B);case f.Chain.Bitcoin:case f.Chain.Dogecoin:case f.Chain.Litecoin:case f.Chain.Dash:return await b({chain:X,...B});default:throw new f.USwapError("toolbox_utxo_not_supported",{chain:X})}}var f;var CB=y(()=>{zX();ZX();PX();zX();t();f=require("@uswap/helpers")});var dB={};vB(dB,{validateZcashAddress:()=>p,toLegacyAddress:()=>l,toCashAddress:()=>i,stripToCashAddress:()=>x,stripPrefix:()=>V,nonSegwitChains:()=>e,isValidAddress:()=>yX,getUtxoToolbox:()=>rB,getUtxoNetwork:()=>K,getUtxoApi:()=>N,getUTXOAddressValidator:()=>jB,getScriptTypeForAddress:()=>s,getOutputSize:()=>a,getInputSize:()=>R,getDustThreshold:()=>WX,getCreateKeysForPath:()=>XX,detectAddressNetwork:()=>OX,createZcashToolbox:()=>wX,createUTXOToolbox:()=>b,createCustomUtxoApi:()=>EB,createBCHToolbox:()=>AX,compileMemo:()=>k,calculateTxSize:()=>h,bchValidateAddress:()=>w,addressFromKeysGetter:()=>kX,addInputsAndOutputs:()=>QB,accumulative:()=>F,UtxoNetwork:()=>NX,UTXOScriptType:()=>LX,TX_OVERHEAD:()=>qX,OutputSizes:()=>$X,OP_RETURN_OVERHEAD:()=>XB,MIN_TX_FEE:()=>SB,InputSizes:()=>QX});module.exports=HB(dB);var iB=y(()=>{c();CB();zX();ZX();PX()});iB();
3
3
 
4
- //# debugId=AE35ED7EBDDE102C64756E2164756E21
4
+ //# debugId=173D6E69CDA5148664756E2164756E21
5
5
  //# sourceMappingURL=index.cjs.map