@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 QZ=Object.create;var{getPrototypeOf:$Z,defineProperty:WX,getOwnPropertyNames:jZ}=Object;var qZ=Object.prototype.hasOwnProperty;var PB=(X,Z,B)=>{B=X!=null?QZ($Z(X)):{};let G=Z||!X||!X.__esModule?WX(B,"default",{value:X,enumerable:!0}):B;for(let $ of jZ(X))if(!qZ.call(G,$))WX(G,$,{get:()=>X[$],enumerable:!0});return G};var WZ=(X,Z)=>{for(var B in Z)WX(X,B,{get:Z[B],enumerable:!0,configurable:!0,set:(G)=>Z[B]=()=>G})};var H=(X,Z)=>()=>(X&&(Z=X(X=0)),Z);var VB=((X)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(X,{get:(Z,B)=>(typeof require<"u"?require:Z)[B]}):X)(function(X){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+X+'" is not supported')});import{AssetValue as LZ,getChainConfig as TZ}from"@uswap/helpers";import{SwapKitApi as YZ}from"@uswap/helpers/api";function AX(){function X(){let Z=Date.now(),B=LX||Z;return LX=B,Z>LX?Z:B+1}return DZ+X().toString(36)}function EX(X){return async function(B,G=!0){let $=await YZ.getChainBalance({address:B,chain:X,scamFilter:G}),{baseDecimal:Q}=TZ(X);return $.map(({identifier:J,value:j,decimal:q})=>{return new LZ({decimal:q||Q,identifier:J,value:j})})}}var DZ,LX=0;var TX=H(()=>{DZ=typeof process<"u"&&process.pid?process.pid.toString(36):""});import{networks as UZ}from"@bitgo/utxo-lib";import{Chain as C,getRPCUrl as zZ,RequestClient as t,SKConfig as CZ,SwapKitError as E,warnOnce as IZ}from"@uswap/helpers";import{networks as MZ}from"bitcoinjs-lib";import p from"coininfo";async function _Z({chain:X,txHash:Z}){let B=`${e(X)}/push/transaction`,G=JSON.stringify({data:Z});try{let $=await t.post(B,{body:G,headers:{"Content-Type":"application/json"}});if($.context.code!==200)throw new E("toolbox_utxo_broadcast_failed",{error:$.context.error||"Transaction broadcast failed"});return $.data?.transaction_hash||Z}catch($){let Q=await zZ(X);if(Q){let J=JSON.stringify({id:AX(),jsonrpc:"2.0",method:"sendrawtransaction",params:[Z]}),j=await t.post(Q,{body:J,headers:{"Content-Type":"application/json"}});if(j.error)throw new E("toolbox_utxo_broadcast_failed",{error:j.error?.message});if(j.result.includes('"code":-26'))throw new E("toolbox_utxo_invalid_transaction",{error:"Transaction amount was too low"});return j.result}throw $}}function e(X){return`https://api.blockchair.com/${HZ(X)}`}function fX(X){switch(X){case C.Bitcoin:return 5;case C.Dogecoin:return 1e4;case C.Litecoin:return 1;case C.Zcash:return 1;default:return 2}}function HZ(X){switch(X){case C.BitcoinCash:return"bitcoin-cash";case C.Litecoin:return"litecoin";case C.Dash:return"dash";case C.Dogecoin:return"dogecoin";case C.Zcash:return"zcash";case C.Polkadot:return"polkadot";default:return"bitcoin"}}async function vZ(X){try{let{feePerKb:Z}=await t.get(`https://app.bitgo.com/api/v2/${X.toLowerCase()}/tx/fee`),B=Z/1000;return Math.max(B,fX(X))}catch{return fX(X)}}async function YX(X,Z){let B=await t.get(`${X}${Z?`${X.includes("?")?"&":"?"}key=${Z}`:""}`);if(!B||B.context.code!==200)throw new E("toolbox_utxo_api_error",{error:`Failed to query ${X}`});return B.data}async function wX({address:X,chain:Z,apiKey:B}){if(!X)throw new E("toolbox_utxo_invalid_params",{error:"Address is required"});try{return(await YX(`${e(Z)}/dashboards/address/${X}?transaction_details=true`,B))[X]}catch{return{address:{balance:0,transaction_count:0},utxo:[]}}}async function NZ({address:X,chain:Z,apiKey:B}){return(await wX({address:X,apiKey:B,chain:Z}))?.address.balance||0}async function PX({chain:X,apiKey:Z,txHash:B}){if(!B)throw new E("toolbox_utxo_invalid_params",{error:"TxHash is required"});try{return(await YX(`${e(X)}/raw/transaction/${B}`,Z))?.[B]?.raw_transaction||""}catch(G){let $=G instanceof Error?G.message:String(G);return console.error(`Failed to fetch raw transaction: ${$}`),""}}async function OZ({chain:X,address:Z,apiKey:B,offset:G=0,limit:$=30}){return(await YX(`${e(X)}/outputs?q=recipient(${Z}),is_spent(false),value(..2000000000000000)&s=value(desc)&fields=is_spent,transaction_hash,index,value,script_hex,block_id,spending_signature_hex&limit=${$}&offset=${G}`,B)).map(({is_spent:q,script_hex:W,block_id:L,transaction_hash:T,index:D,value:Y,spending_signature_hex:U})=>({hash:T,index:D,is_confirmed:L!==-1,is_spent:q,script_hex:W,txHex:U,value:Y}))}function yZ(X){return X.reduce((Z,B)=>Z+B.value,0)}function RX(X,Z){let B=[...X].sort((G,$)=>$.value-G.value);if(Z){let G=[],$=0;for(let Q of B)if(G.push(Q),$+=Q.value,$>=Z)break;return G}return B}async function VX({chain:X,address:Z,apiKey:B,targetValue:G,accumulativeValue:$=0,offset:Q=0,limit:J=30}){if(!Z)throw new E("toolbox_utxo_invalid_params",{error:"Address is required"});try{let j=await OZ({address:Z,apiKey:B,chain:X,limit:J,offset:Q,targetValue:G}),W=j.length<J,L=j.filter(({is_spent:z})=>!z),T=yZ(L),D=$+T,Y=G&&D>=G;if(W||Y)return RX(L,G);let U=await VX({accumulativeValue:D,address:Z,apiKey:B,chain:X,limit:J,offset:Q+J,targetValue:G}),I=[...L,...U];return RX(I,G)}catch(j){let q=j instanceof Error?j.message:String(j);return console.error(`Failed to fetch unspent UTXOs: ${q}`),[]}}async function kZ({address:X,chain:Z,apiKey:B,fetchTxHex:G=!0,targetValue:$}){let Q=await VX({address:X,apiKey:B,chain:Z,targetValue:$}),J=[];for(let{hash:j,index:q,script_hex:W,value:L}of Q){let T;if(G)T=await PX({apiKey:B,chain:Z,txHash:j});J.push({address:X,hash:j,index:q,txHex:T,value:L,witnessUtxo:{script:Buffer.from(W,"hex"),value:L}})}return J}function M(X){let Z=CZ.get("apiKeys").blockchair||"";return IZ({condition:!Z,id:"no_blockchair_api_key_warning",warning:"No Blockchair API key found. Functionality will be limited."}),{broadcastTx:(B)=>_Z({chain:X,txHash:B}),getAddressData:(B)=>wX({address:B,apiKey:Z,chain:X}),getBalance:(B)=>NZ({address:B,apiKey:Z,chain:X}),getRawTx:(B)=>PX({apiKey:Z,chain:X,txHash:B}),getSuggestedTxFee:()=>vZ(X),getUtxos:(B)=>kZ({...B,apiKey:Z,chain:X})}}function FZ(X){return X}function N(){return function(Z){switch(Z){case C.Bitcoin:return MZ.bitcoin;case C.BitcoinCash:return p.bitcoincash.main.toBitcoinJS();case C.Dash:return p.dash.main.toBitcoinJS();case C.Litecoin:return p.litecoin.main.toBitcoinJS();case C.Dogecoin:{let B={private:70615956,public:70617039},G=p.dogecoin.test;return G.versions.bip32=B,p.dogecoin.main.toBitcoinJS()}case C.Zcash:return UZ.zcash;default:throw new E("toolbox_utxo_not_supported",{chain:Z})}}}var bX=H(()=>{TX()});import{SwapKitError as SX}from"@uswap/helpers";import xX from"bs58check";import gX from"cashaddrjs";function UX(X){try{return XX(X),!0}catch{return!1}}function zX(X){return XX(X)?.network}function x(X){let Z=XX(X);if(Z?.format==="legacy")return X;return fZ(Z)}function o(X){let Z=XX(X);return RZ(Z)}function XX(X){try{let Z=AZ(X);if(Z)return Z}catch{}try{let Z=EZ(X);if(Z)return Z}catch{}throw new SX("toolbox_utxo_invalid_address",{address:X})}function AZ(X){try{let Z=xX.decode(X);if(Z.length!==21)throw new SX("toolbox_utxo_invalid_address",{address:X});let B=Z[0],G=Array.prototype.slice.call(Z,1);switch(B){case P.legacy.mainnet.p2pkh:return{format:"legacy",hash:G,network:"mainnet",type:"p2pkh"};case P.legacy.mainnet.p2sh:return{format:"legacy",hash:G,network:"mainnet",type:"p2sh"};case P.legacy.testnet.p2pkh:return{format:"legacy",hash:G,network:"testnet",type:"p2pkh"};case P.legacy.testnet.p2sh:return{format:"legacy",hash:G,network:"testnet",type:"p2sh"};case P.bitpay.mainnet.p2pkh:return{format:"bitpay",hash:G,network:"mainnet",type:"p2pkh"};case P.bitpay.mainnet.p2sh:return{format:"bitpay",hash:G,network:"mainnet",type:"p2sh"};default:return}}catch{return}}function EZ(X){if(X.indexOf(":")!==-1)try{return KX(X)}catch{}else{let Z=["bitcoincash","bchtest","bchreg"];for(let B of Z)try{return KX(`${B}:${X}`)}catch{}}return}function KX(X){try{let{hash:Z,prefix:B,type:G}=gX.decode(X);return{format:"cashaddr",hash:Array.prototype.slice.call(Z,0),network:B==="bitcoincash"?"mainnet":"testnet",type:G==="P2PKH"?"p2pkh":"p2sh"}}catch{return}}function fZ(X){let Z=P.legacy[X.network][X.type],B=Buffer.alloc(1+X.hash.length);return B[0]=Z,B.set(X.hash,1),xX.encode(B)}function RZ(X){let Z=X.network==="mainnet"?"bitcoincash":"bchtest",B=X.type==="p2pkh"?"P2PKH":"P2SH",G=new Uint8Array(X.hash);return gX.encode(Z,B,G)}var DX,P;var mX=H(()=>{((B)=>{B.Mainnet="mainnet";B.Testnet="testnet"})(DX||={});P={["legacy"]:{["mainnet"]:{["p2pkh"]:0,["p2sh"]:5},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}},["bitpay"]:{["mainnet"]:{["p2pkh"]:28,["p2sh"]:40},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}}}});import{SwapKitError as wZ}from"@uswap/helpers";import{opcodes as PZ,script as VZ}from"bitcoinjs-lib";function O(X){let Z=Buffer.from(X,"utf8");return VZ.compile([PZ.OP_RETURN,Z])}var bZ=1000,GX=10,lX=10,KZ=41,SZ=107,JX,ZX,BX,n=(X)=>{if(X.startsWith("bc1")||X.startsWith("tb1")||X.startsWith("ltc1")||X.startsWith("tltc1"))return"P2WPKH";if(X.startsWith("1")||X.startsWith("m")||X.startsWith("n")||X.startsWith("bitcoincash:q")||X.startsWith("bitcoincash:p")||X.startsWith("q")||X.startsWith("p")||X.startsWith("L")||X.startsWith("M")||X.startsWith("3")||X.startsWith("D")||X.startsWith("A")||X.startsWith("9")||X.startsWith("X")||X.startsWith("7")||X.startsWith("y")||X.startsWith("t1")||X.startsWith("t3")||X.startsWith("tm"))return"P2PKH";throw new wZ("toolbox_utxo_invalid_address",{address:X})},g=({inputs:X,outputs:Z,feeRate:B})=>{let G=X[0]&&"address"in X[0]&&X[0].address?n(X[0].address):"P2PKH",$=X.filter((J)=>J.value>=ZX["type"in J?J.type:"P2PKH"]*Math.ceil(B)).reduce((J,j)=>J+f(j),0),Q=Z?.reduce((J,j)=>J+u(j),0)||BX[G];return GX+$+Q},f=(X)=>{if("type"in X)return ZX[X.type];if("address"in X&&X.address)return ZX[n(X.address)];return KZ+SZ},u=(X,Z)=>{if(X?.script)return lX+X.script.length+(X.script.length>=74?2:1);if(Z)return BX[Z];return BX.P2PKH};var CX=H(()=>{((B)=>{B.P2PKH="P2PKH";B.P2WPKH="P2WPKH"})(JX||={});ZX={["P2PKH"]:148,["P2WPKH"]:68},BX={["P2PKH"]:34,["P2WPKH"]:31}});import{Chain as V,SwapKitError as xZ}from"@uswap/helpers";function QX(X){switch(X){case V.Bitcoin:case V.BitcoinCash:return 550;case V.Dash:case V.Litecoin:return 5500;case V.Dogecoin:return 1e5;case V.Zcash:return 546;default:throw new xZ("toolbox_utxo_not_supported",{chain:X})}}function y({inputs:X,outputs:Z,feeRate:B=1,chain:G=V.Bitcoin,changeAddress:$=""}){let Q=Math.ceil(B),J=X[0]&&"address"in X[0]&&X[0].address?n(X[0].address):"P2PKH",j=X.filter((Y)=>f(Y)*Q<=Y.value),q=GX+Z.reduce((Y,U)=>Y+u(U,J),0),W=Z.reduce((Y,U)=>Y+U.value,0),L=q*Q,T=0,D=[];for(let Y of j){let U=f(Y),I=Q*U;L+=I,T+=Y.value,D.push(Y);let z=L+W;if(T<z)continue;let w=T-z,k=Q*u({address:"",value:0},J);if(w>k){let kX=k+L,FX=T-(W+kX);if(FX>Math.max(f({})*Q,QX(G)))return{fee:kX,inputs:D,outputs:Z.concat({address:$,value:FX})}}return{fee:L,inputs:D,outputs:Z}}return{fee:Q*g({feeRate:Q,inputs:X,outputs:Z})}}var hX=H(()=>{CX()});var m=H(()=>{bX();mX();hX();CX()});import{networks as gZ,address as mZ}from"@bitgo/utxo-lib";import lZ from"bs58check";function b(X){return X.replace(/(bchtest:|bitcoincash:)/,"")}function R(X){let Z=b(X);return UX(Z)&&zX(Z)==="mainnet"}function l(X){try{if(X.startsWith("z"))return console.warn("Shielded Zcash addresses (z-addresses) are not supported. Use transparent addresses (t1/t3) only."),!1;let Z=gZ.zcash;try{return mZ.toOutputScript(X,Z),!0}catch{let B=lZ.decode(X);if(B.length<21)return!1;let G=B[0];return G===Z.pubKeyHash||G===Z.scriptHash}}catch{return!1}}var r=H(()=>{m()});import MX from"@bitcoinerlab/secp256k1";import{ECPair as hZ,HDNode as cZ}from"@psf/bitcoincashjs-lib";import{HDKey as pZ}from"@scure/bip32";import{mnemonicToSeedSync as cX}from"@scure/bip39";import{AssetValue as IX,applyFeeMultiplier as pX,Chain as _,DerivationPath as oZ,derivationPathToString as nZ,FeeOption as F,NetworkDerivationPath as uZ,SwapKitError as A,SwapKitNumber as rZ,updateDerivationPath as dZ}from"@uswap/helpers";import{address as iZ,initEccLib as nX,Psbt as sZ,payments as oX}from"bitcoinjs-lib";import{ECPairFactory as aZ}from"ecpair";function uX({inputs:X,outputs:Z,chain:B,psbt:G,sender:$,compiledMemo:Q}){for(let J of X){let j=!!J.witnessUtxo&&!d.includes(B)&&{witnessUtxo:J.witnessUtxo},q=d.includes(B)&&{nonWitnessUtxo:J.txHex?Buffer.from(J.txHex,"hex"):void 0};G.addInput({hash:J.hash,index:J.index,...j,...q})}for(let J of Z){let j="address"in J&&J.address?J.address:$,q=J.script;if(q&&!Q)continue;let W=q?{script:Q,value:0}:{address:j,value:J.value};nX(MX),G.addOutput(W)}return{inputs:X,psbt:G}}async function rX({assetValue:X,recipient:Z,memo:B,feeRate:G,sender:$,fetchTxHex:Q=!1}){let J=X.chain,j=B?await O(B):null,q=await sX({assetValue:X,fetchTxHex:Q,memo:B,recipient:Z,sender:$}),{inputs:W,outputs:L}=y({...q,chain:J,feeRate:G});if(!(W&&L))throw new A("toolbox_utxo_insufficient_balance",{assetValue:X,sender:$});let T=await N(),D=new sZ({network:T(J)});if(J===_.Dogecoin)D.setMaximumFeeRate(650000000);let{psbt:Y,inputs:U}=await uX({chain:J,compiledMemo:j,inputs:W,outputs:L,psbt:D,sender:$});return{inputs:U,psbt:Y,utxos:q.inputs}}async function dX(){let X=await N();return function({address:B,chain:G}){if(G===_.BitcoinCash)return R(B);if(G===_.Zcash)return l(B);try{return nX(MX),iZ.toOutputScript(B,X(G)),!0}catch{return!1}}}async function tZ({chain:X,phrase:Z,derivationPath:B}){let G=(await i(X))({derivationPath:B,phrase:Z});async function $(J){return await J.signAllInputs(G),J}function Q(){return _X(X)(G)}return{getAddress:Q,signTransaction:$}}async function K({chain:X,...Z}){let B="phrase"in Z?Z.phrase:void 0,G="index"in Z?Z.index||0:0,$=nZ("derivationPath"in Z&&Z.derivationPath?Z.derivationPath:dZ(uZ[X],{index:G})),Q=B?await tZ({chain:X,derivationPath:$,phrase:B}):("signer"in Z)?Z.signer:void 0;function J(){return Promise.resolve(Q?.getAddress())}let j=await dX(),q=await i(X);return{accumulative:y,broadcastTx:(W)=>M(X).broadcastTx(W),calculateTxSize:g,createKeysForPath:q,createTransaction:rX,estimateMaxSendableAmount:eZ(X),estimateTransactionFee:XB(X),getAddress:J,getAddressFromKeys:_X(X),getBalance:EX(X),getFeeRates:()=>s(X),getInputsOutputsFee:iX,getPrivateKeyFromMnemonic:(W)=>{return q(W).toWIF()},transfer:ZB(Q),validateAddress:(W)=>j({address:W,chain:X})}}async function iX({assetValue:X,feeOptionKey:Z=F.Fast,feeRate:B,memo:G,sender:$,recipient:Q}){let J=X.chain,j=await sX({assetValue:X,memo:G,recipient:Q,sender:$}),q=B?Math.floor(B):(await s(J))[Z];return y({...j,chain:J,feeRate:q})}function eZ(X){return async function({from:B,memo:G,feeRate:$,feeOptionKey:Q=F.Fast,recipients:J=1}){let j=await M(X).getAddressData(B),q=$?Math.ceil($):(await s(X))[Q],W=j?.utxo.map((U)=>({...U,hash:"",type:"P2PKH"})).filter((U)=>U.value>Math.max(QX(X),f(U)*q));if(!W?.length)return IX.from({chain:X});let L=IX.from({chain:X,value:W.reduce((U,I)=>U+I.value,0)}),T=typeof J==="number"?Array.from({length:J},()=>({address:B,value:0})):J;if(G){let U=await O(G);T.push({address:B,script:U,value:0})}let Y=g({feeRate:q,inputs:W,outputs:T})*q;return L.sub(Y)}}function XB(X){return async(Z)=>{let B=await iX(Z);return IX.from({chain:X,value:rZ.fromBigInt(BigInt(B.fee),8).getValue("string")})}}async function i(X){let Z=await N();switch(X){case _.BitcoinCash:return function({phrase:G,derivationPath:$=`${oZ.BCH}/0`,wif:Q}){let J=Z(X);if(Q)return hZ.fromWIF(Q,J);if(!G)throw new A("toolbox_utxo_invalid_params",{error:"No phrase provided"});return cZ.fromSeedBuffer(Buffer.from(cX(G)),J).derivePath($).keyPair};case _.Bitcoin:case _.Dogecoin:case _.Litecoin:case _.Zcash:case _.Dash:return function({phrase:G,wif:$,derivationPath:Q}){if(!($||G))throw new A("toolbox_utxo_invalid_params",{error:"Either phrase or wif must be provided"});let J=aZ(MX),j=Z(X);if($)return J.fromWIF($,j);let q=cX(G),W=pZ.fromMasterSeed(q,j).derive(Q);if(!W.privateKey)throw new A("toolbox_utxo_invalid_params",{error:"Could not get private key from phrase"});return J.fromPrivateKey(Buffer.from(W.privateKey),{network:j})};default:throw new A("toolbox_utxo_not_supported",{chain:X})}}function _X(X){let Z=N();return function(G){if(!G)throw new A("toolbox_utxo_invalid_params",{error:"Keys must be provided"});let $=d.includes(X)?oX.p2pkh:oX.p2wpkh,{address:Q}=$({network:Z(X),pubkey:G.publicKey});if(!Q)throw new A("toolbox_utxo_invalid_address",{error:"Address not defined"});return Q}}function ZB(X){return async function({memo:B,recipient:G,feeOptionKey:$,feeRate:Q,assetValue:J}){let j=await X?.getAddress(),q=J.chain;if(!(X&&j))throw new A("toolbox_utxo_no_signer");if(!G)throw new A("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});let W=Q||(await s(q))[$||F.Fast],{psbt:L}=await rX({assetValue:J,feeRate:W,memo:B,recipient:G,sender:j}),T=await X.signTransaction(L);return T.finalizeAllInputs(),M(q).broadcastTx(T.extractTransaction().toHex())}}async function s(X){let Z=await M(X).getSuggestedTxFee();return{[F.Average]:Z,[F.Fast]:pX(Z,F.Fast),[F.Fastest]:pX(Z,F.Fastest)}}async function sX({assetValue:X,recipient:Z,memo:B,sender:G,fetchTxHex:$=!1}){let Q=X.chain,J=(await s(Q))[F.Fastest],j=$||d.includes(Q),q=X.getBaseValue("number"),W=Math.ceil(q+J*5000);return{inputs:await M(Q).getUtxos({address:G,fetchTxHex:j,targetValue:W}),outputs:[{address:Z,value:q},...B?[{address:"",script:await O(B),value:0}]:[]]}}var d;var a=H(()=>{TX();m();r();d=[_.Dash,_.Dogecoin,_.Zcash,_.BitcoinCash]});import{address as BB,Transaction as GB,TransactionBuilder as JB}from"@psf/bitcoincashjs-lib";import{Chain as QB,derivationPathToString as $B,FeeOption as jB,NetworkDerivationPath as qB,SwapKitError as h,updateDerivationPath as WB}from"@uswap/helpers";import{Psbt as LB}from"bitcoinjs-lib";function S(X){return b(o(X))}function TB(X){function Z({builder:G,utxos:$}){return $.forEach((Q,J)=>{G.sign(J,X,void 0,65,Q.witnessUtxo?.value)}),G.build()}return{getAddress:()=>{let G=X.getAddress(0);return Promise.resolve(S(G))},signTransaction:Z}}async function HX(X){let Z="phrase"in X?X.phrase:void 0,B="index"in X?X.index||0:0,G=$B("derivationPath"in X&&X.derivationPath?X.derivationPath:WB(qB[v],{index:B})),$=Z?(await i(v))({derivationPath:G,phrase:Z}):void 0,Q=$?TB($):("signer"in X)?X.signer:void 0;function J(){return Promise.resolve(Q?.getAddress())}let{getBalance:j,getFeeRates:q,broadcastTx:W,...L}=await K({chain:v});function T(D,Y=!0){return j(b(o(D)))}return{...L,broadcastTx:W,buildTx:DB,createTransaction:aX,getAddress:J,getAddressFromKeys:UB,getBalance:T,getFeeRates:q,stripPrefix:b,stripToCashAddress:S,transfer:YB({broadcastTx:W,getFeeRates:q,signer:Q}),validateAddress:R}}async function aX({assetValue:X,recipient:Z,memo:B,feeRate:G,sender:$}){if(!R(Z))throw new h("toolbox_utxo_invalid_address",{address:Z});let Q=Math.ceil(X.getBaseValue("number")+G*7500),J=await M(v).getUtxos({address:S($),fetchTxHex:!0,targetValue:Q}),j=B?await O(B):null,q=[];q.push({address:Z,value:X.getBaseValue("number")});let{inputs:W,outputs:L}=y({chain:v,feeRate:G,inputs:J,outputs:q});if(!(W&&L))throw new h("toolbox_utxo_insufficient_balance",{assetValue:X,sender:$});let T=await N(),D=new JB(T(v));await Promise.all(W.map(async(Y)=>{let U=await M(v).getRawTx(Y.hash);D.addInput(GB.fromBuffer(Buffer.from(U,"hex")),Y.index)}));for(let Y of L){let U="address"in Y&&Y.address?Y.address:x($),I=await N(),z=BB.toOutputScript(x(U),I(v));D.addOutput(z,Y.value)}if(j)D.addOutput(j,0);return{builder:D,utxos:W}}function YB({broadcastTx:X,getFeeRates:Z,signer:B}){return async function({recipient:$,assetValue:Q,feeOptionKey:J=jB.Fast,...j}){let q=await B?.getAddress();if(!(B&&q))throw new h("toolbox_utxo_no_signer");if(!$)throw new h("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});let W=j.feeRate||(await Z())[J],{builder:L,utxos:T}=await aX({...j,assetValue:Q,feeRate:W,recipient:$,sender:q}),Y=(await B.signTransaction({builder:L,utxos:T})).toHex();return X(Y)}}async function DB({assetValue:X,recipient:Z,memo:B,feeRate:G,sender:$,setSigHashType:Q}){let J=o(Z);if(!R(J))throw new h("toolbox_utxo_invalid_address",{address:J});let j=Math.ceil(X.getBaseValue("number")+G*7500),q=await M(v).getUtxos({address:S($),fetchTxHex:!1,targetValue:j}),W=Number(G.toFixed(0)),L=B?await O(B):null,T=[];if(T.push({address:x(Z),value:X.getBaseValue("number")}),L)T.push({script:L,value:0});let{inputs:D,outputs:Y}=y({chain:v,feeRate:W,inputs:q,outputs:T});if(!(D&&Y))throw new h("toolbox_utxo_insufficient_balance",{assetValue:X,sender:$});let U=await N(),I=new LB({network:U(v)});for(let{hash:z,index:w,witnessUtxo:k}of D)I.addInput({hash:z,index:w,sighashType:Q?65:void 0,witnessUtxo:k});for(let z of Y){let w="address"in z&&z.address?z.address:x($),k=z.script?L?{script:L,value:0}:void 0:{address:w,value:z.value};if(k)I.addOutput(k)}return{inputs:D,psbt:I,utxos:q}}function UB(X){let Z=X.getAddress(0);return S(Z)}var v;var $X=H(()=>{m();a();r();v=QB.BitcoinCash});import{bitgo as zB,crypto as CB,ECPair as eX,networks as IB,address as MB}from"@bitgo/utxo-lib";import{HDKey as XZ}from"@scure/bip32";import{mnemonicToSeedSync as ZZ}from"@scure/bip39";import{Chain as jX,derivationPathToString as _B,FeeOption as HB,NetworkDerivationPath as vB,SKConfig as NB,SwapKitError as qX,updateDerivationPath as OB}from"@uswap/helpers";import yB from"bs58check";import{match as kB,P as vX}from"ts-pattern";function BZ(){return IB.zcash}function GZ(){return{bech32:void 0,bip32:{private:76066276,public:76067358},messagePrefix:`\x18ZCash Signed Message:
2
- `,pubKeyHash:28,scriptHash:28,wif:128}}function FB({phrase:X,derivationPath:Z}){let B=ZZ(X),$=XZ.fromMasterSeed(B).derive(Z);if(!$.privateKey)throw new qX("toolbox_utxo_invalid_params");let Q=GZ(),J=eX.fromPrivateKey(Buffer.from($.privateKey),{network:Q}),j=CB.hash160(J.publicKey),{isStagenet:q}=NB.get("envs"),W=q?Buffer.from([29,37]):Buffer.from([28,184]),L=Buffer.concat([W,j]),T=yB.encode(L);return{getAddress:()=>Promise.resolve(T),signTransaction:(D)=>{let Y=D.signAllInputs(J);return Promise.resolve(Y)}}}function AB({inputs:X,outputs:Z,psbt:B,sender:G,compiledMemo:$}){for(let Q of X){let J=!!Q.witnessUtxo&&{witnessUtxo:{...Q.witnessUtxo,value:BigInt(Q.value)}},j=!Q.witnessUtxo&&{nonWitnessUtxo:Q.txHex?Buffer.from(Q.txHex,"hex"):void 0};B.addInput({hash:Q.hash,index:Q.index,...J,...j})}for(let Q of Z){let J="address"in Q&&Q.address?Q.address:G,j=Q.script;if(j&&!$)continue;let q=j?{script:$,value:0n}:{script:MB.toOutputScript(J,BZ()),value:BigInt(Q.value)};B.addOutput(q)}return{inputs:X,psbt:B}}async function tX(X){let{assetValue:Z,recipient:B,memo:G,feeRate:$,sender:Q,fetchTxHex:J}=X,j=G?O(G):null,q=await M(jX.Zcash).getUtxos({address:Q,fetchTxHex:J!==!1}),W=[{address:B,value:Number(Z.getBaseValue("string"))},...j?[{script:j,value:0}]:[]],{inputs:L,outputs:T}=y({chain:jX.Zcash,changeAddress:Q,feeRate:$,inputs:q,outputs:W});if(!(L&&T))throw new qX("toolbox_utxo_insufficient_balance",{assetValue:Z,sender:Q});let D=zB.createPsbtForNetwork({network:BZ()},{version:455}),U=3268858036,I=Buffer.concat([Buffer.of(252),Buffer.of(5),Buffer.from("BITGO"),Buffer.of(0)]),z=Buffer.allocUnsafe(4);z.writeUInt32LE(U>>>0,0),D.addUnknownKeyValToGlobal({key:I,value:z});let{psbt:w,inputs:k}=await AB({compiledMemo:j,inputs:L,outputs:T,psbt:D,sender:Q});return{inputs:k,outputs:T,psbt:w}}async function NX(X){let Z=await kB(X).with({signer:vX.not(vX.nullish)},({signer:J})=>Promise.resolve(J)).with({phrase:vX.string},({phrase:J,derivationPath:j,index:q=0})=>{let W=j||vB[jX.Zcash]||[44,133,0,0,0],L=OB(W,{index:q}),T=_B(L);return FB({derivationPath:T,phrase:J})}).otherwise(()=>Promise.resolve(void 0)),B=await K({chain:jX.Zcash,signer:Z});async function G({recipient:J,assetValue:j,feeOptionKey:q=HB.Fast,...W}){let L=await Z?.getAddress();if(!(Z&&L))throw new qX("toolbox_utxo_no_signer");let T=W.feeRate||(await B.getFeeRates())[q],{psbt:D}=await tX({...W,assetValue:j,feeRate:T,recipient:J,sender:L}),Y=await Z.signTransaction(D);return Y.finalizeAllInputs(),B.broadcastTx(Y.extractTransaction().toHex())}function $({phrase:J,derivationPath:j="m/44'/133'/0'/0/0"}){let q=ZZ(J),L=XZ.fromMasterSeed(q).derive(j);if(!L.privateKey)throw new qX("toolbox_utxo_invalid_params");let T=GZ();return eX.fromPrivateKey(Buffer.from(L.privateKey),{network:T})}function Q({phrase:J,derivationPath:j="m/44'/133'/0'/0/0"}){return $({derivationPath:j,phrase:J}).toWIF()}return{...B,createKeysForPath:$,createTransaction:tX,getPrivateKeyFromMnemonic:Q,transfer:G,validateAddress:l}}var OX=H(()=>{m();a();r()});import{Chain as c,SwapKitError as EB}from"@uswap/helpers";async function fB(X,Z){switch(X){case c.BitcoinCash:return await HX(Z||{});case c.Zcash:return await NX(Z);case c.Bitcoin:case c.Dogecoin:case c.Litecoin:case c.Dash:return await K({chain:X,...Z});default:throw new EB("toolbox_utxo_not_supported",{chain:X})}}var JZ=H(()=>{$X();a();OX();$X();r()});var RB={};WZ(RB,{validateZcashAddress:()=>l,toLegacyAddress:()=>x,toCashAddress:()=>o,stripToCashAddress:()=>S,stripPrefix:()=>b,nonSegwitChains:()=>d,isValidAddress:()=>UX,getUtxoToolbox:()=>fB,getUtxoNetwork:()=>N,getUtxoApi:()=>M,getUTXOAddressValidator:()=>dX,getScriptTypeForAddress:()=>n,getOutputSize:()=>u,getInputSize:()=>f,getDustThreshold:()=>QX,getCreateKeysForPath:()=>i,detectAddressNetwork:()=>zX,createZcashToolbox:()=>NX,createUTXOToolbox:()=>K,createCustomUtxoApi:()=>FZ,createBCHToolbox:()=>HX,compileMemo:()=>O,calculateTxSize:()=>g,bchValidateAddress:()=>R,addressFromKeysGetter:()=>_X,addInputsAndOutputs:()=>uX,accumulative:()=>y,UtxoNetwork:()=>DX,UTXOScriptType:()=>JX,TX_OVERHEAD:()=>GX,OutputSizes:()=>BX,OP_RETURN_OVERHEAD:()=>lX,MIN_TX_FEE:()=>bZ,InputSizes:()=>ZX});var wB=H(()=>{m();JZ();$X();a();OX()});wB();export{l as validateZcashAddress,x as toLegacyAddress,o as toCashAddress,S as stripToCashAddress,b as stripPrefix,d as nonSegwitChains,UX as isValidAddress,fB as getUtxoToolbox,N as getUtxoNetwork,M as getUtxoApi,dX as getUTXOAddressValidator,n as getScriptTypeForAddress,u as getOutputSize,f as getInputSize,QX as getDustThreshold,i as getCreateKeysForPath,zX as detectAddressNetwork,NX as createZcashToolbox,K as createUTXOToolbox,FZ as createCustomUtxoApi,HX as createBCHToolbox,O as compileMemo,g as calculateTxSize,R as bchValidateAddress,_X as addressFromKeysGetter,uX as addInputsAndOutputs,y as accumulative,DX as UtxoNetwork,JX as UTXOScriptType,GX as TX_OVERHEAD,BX as OutputSizes,lX as OP_RETURN_OVERHEAD,bZ as MIN_TX_FEE,ZX as InputSizes};
1
+ var jB=Object.create;var{getPrototypeOf:qB,defineProperty:LX,getOwnPropertyNames:LB}=Object;var WB=Object.prototype.hasOwnProperty;var PZ=(X,B,Z)=>{Z=X!=null?jB(qB(X)):{};let G=B||!X||!X.__esModule?LX(Z,"default",{value:X,enumerable:!0}):Z;for(let $ of LB(X))if(!WB.call(G,$))LX(G,$,{get:()=>X[$],enumerable:!0});return G};var YB=(X,B)=>{for(var Z in B)LX(X,Z,{get:B[Z],enumerable:!0,configurable:!0,set:(G)=>B[Z]=()=>G})};var v=(X,B)=>()=>(X&&(B=X(X=0)),B);var SZ=((X)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(X,{get:(B,Z)=>(typeof require<"u"?require:B)[Z]}):X)(function(X){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+X+'" is not supported')});import{AssetValue as FX,getChainConfig as TB}from"@uswap/helpers";import{SwapKitApi as DB}from"@uswap/helpers/api";function EX(){function X(){let B=Date.now(),Z=WX||B;return WX=Z,B>WX?B:Z+1}return zB+X().toString(36)}function fX(X){return async function(Z,G=!0){let $=await DB.getChainBalance({address:Z,chain:X,scamFilter:G}),{baseDecimal:Q}=TB(X),J=$.map(({identifier:q,value:L,decimal:W})=>{return new FX({decimal:W||Q,identifier:q,value:L})});if(!J.some((q)=>q.isGasAsset))return[FX.from({chain:X}),...J];return J}}var zB,WX=0;var YX=v(()=>{zB=typeof process<"u"&&process.pid?process.pid.toString(36):""});import{networks as CB}from"@bitgo/utxo-lib";import{Chain as C,getRPCUrl as IB,RequestClient as t,SKConfig as _B,USwapError as A,warnOnce as MB}from"@uswap/helpers";import{networks as HB}from"bitcoinjs-lib";import p from"coininfo";async function vB({chain:X,txHash:B}){let Z=`${e(X)}/push/transaction`,G=JSON.stringify({data:B});try{let $=await t.post(Z,{body:G,headers:{"Content-Type":"application/json"}});if($.context.code!==200)throw new A("toolbox_utxo_broadcast_failed",{error:$.context.error||"Transaction broadcast failed"});return $.data?.transaction_hash||B}catch($){let Q=await IB(X);if(Q){let J=JSON.stringify({id:EX(),jsonrpc:"2.0",method:"sendrawtransaction",params:[B]}),j=await t.post(Q,{body:J,headers:{"Content-Type":"application/json"}});if(j.error)throw new A("toolbox_utxo_broadcast_failed",{error:j.error?.message});if(j.result.includes('"code":-26'))throw new A("toolbox_utxo_invalid_transaction",{error:"Transaction amount was too low"});return j.result}throw $}}function e(X){return`https://api.blockchair.com/${NB(X)}`}function RX(X){switch(X){case C.Bitcoin:return 5;case C.Dogecoin:return 1e4;case C.Litecoin:return 1;case C.Zcash:return 1;default:return 2}}function NB(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 yB(X){try{let{feePerKb:B}=await t.get(`https://app.bitgo.com/api/v2/${X.toLowerCase()}/tx/fee`),Z=B/1000;return Math.max(Z,RX(X))}catch{return RX(X)}}async function TX(X,B){let Z=await t.get(`${X}${B?`${X.includes("?")?"&":"?"}key=${B}`:""}`);if(!Z||Z.context.code!==200)throw new A("toolbox_utxo_api_error",{error:`Failed to query ${X}`});return Z.data}async function PX({address:X,chain:B,apiKey:Z}){if(!X)throw new A("toolbox_utxo_invalid_params",{error:"Address is required"});try{return(await TX(`${e(B)}/dashboards/address/${X}?transaction_details=true`,Z))[X]}catch{return{address:{balance:0,transaction_count:0},utxo:[]}}}async function OB({address:X,chain:B,apiKey:Z}){return(await PX({address:X,apiKey:Z,chain:B}))?.address.balance||0}async function SX({chain:X,apiKey:B,txHash:Z}){if(!Z)throw new A("toolbox_utxo_invalid_params",{error:"TxHash is required"});try{return(await TX(`${e(X)}/raw/transaction/${Z}`,B))?.[Z]?.raw_transaction||""}catch(G){let $=G instanceof Error?G.message:String(G);return console.error(`Failed to fetch raw transaction: ${$}`),""}}async function UB({chain:X,address:B,apiKey:Z,offset:G=0,limit:$=30}){return(await TX(`${e(X)}/outputs?q=recipient(${B}),is_spent(false),value(..2000000000000000)&s=value(desc)&fields=is_spent,transaction_hash,index,value,script_hex,block_id,spending_signature_hex&limit=${$}&offset=${G}`,Z)).map(({is_spent:q,script_hex:L,block_id:W,transaction_hash:Y,index:D,value:T,spending_signature_hex:z})=>({hash:Y,index:D,is_confirmed:W!==-1,is_spent:q,script_hex:L,txHex:z,value:T}))}function KB(X){return X.reduce((B,Z)=>B+Z.value,0)}function wX(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 VX({chain:X,address:B,apiKey:Z,targetValue:G,accumulativeValue:$=0,offset:Q=0,limit:J=30}){if(!B)throw new A("toolbox_utxo_invalid_params",{error:"Address is required"});try{let j=await UB({address:B,apiKey:Z,chain:X,limit:J,offset:Q,targetValue:G}),L=j.length<J,W=j.filter(({is_spent:I})=>!I),Y=KB(W),D=$+Y,T=G&&D>=G;if(L||T)return wX(W,G);let z=await VX({accumulativeValue:D,address:B,apiKey:Z,chain:X,limit:J,offset:Q+J,targetValue:G}),_=[...W,...z];return wX(_,G)}catch(j){let q=j instanceof Error?j.message:String(j);return console.error(`Failed to fetch unspent UTXOs: ${q}`),[]}}async function kB({address:X,chain:B,apiKey:Z,fetchTxHex:G=!0,targetValue:$}){let Q=await VX({address:X,apiKey:Z,chain:B,targetValue:$}),J=[];for(let{hash:j,index:q,script_hex:L,value:W}of Q){let Y;if(G)Y=await SX({apiKey:Z,chain:B,txHash:j});J.push({address:X,hash:j,index:q,txHex:Y,value:W,witnessUtxo:{script:Buffer.from(L,"hex"),value:W}})}return J}function M(X){let B=_B.get("apiKeys").blockchair||"";return MB({condition:!B,id:"no_blockchair_api_key_warning",warning:"No Blockchair API key found. Functionality will be limited."}),{broadcastTx:(Z)=>vB({chain:X,txHash:Z}),getAddressData:(Z)=>PX({address:Z,apiKey:B,chain:X}),getBalance:(Z)=>OB({address:Z,apiKey:B,chain:X}),getRawTx:(Z)=>SX({apiKey:B,chain:X,txHash:Z}),getSuggestedTxFee:()=>yB(X),getUtxos:(Z)=>kB({...Z,apiKey:B,chain:X})}}function AB(X){return X}function y(){return function(B){switch(B){case C.Bitcoin:return HB.bitcoin;case C.BitcoinCash:return p.bitcoincash.main.toBitcoinJS();case C.Dash:return p.dash.main.toBitcoinJS();case C.Litecoin:return p.litecoin.main.toBitcoinJS();case C.Dogecoin:{let Z={private:70615956,public:70617039},G=p.dogecoin.test;return G.versions.bip32=Z,p.dogecoin.main.toBitcoinJS()}case C.Zcash:return CB.zcash;default:throw new A("toolbox_utxo_not_supported",{chain:B})}}}var bX=v(()=>{YX()});import{USwapError as gX}from"@uswap/helpers";import mX from"bs58check";import lX from"cashaddrjs";function zX(X){try{return XX(X),!0}catch{return!1}}function CX(X){return XX(X)?.network}function b(X){let B=XX(X);if(B?.format==="legacy")return X;return fB(B)}function o(X){let B=XX(X);return RB(B)}function XX(X){try{let B=FB(X);if(B)return B}catch{}try{let B=EB(X);if(B)return B}catch{}throw new gX("toolbox_utxo_invalid_address",{address:X})}function FB(X){try{let B=mX.decode(X);if(B.length!==21)throw new gX("toolbox_utxo_invalid_address",{address:X});let Z=B[0],G=Array.prototype.slice.call(B,1);switch(Z){case R.legacy.mainnet.p2pkh:return{format:"legacy",hash:G,network:"mainnet",type:"p2pkh"};case R.legacy.mainnet.p2sh:return{format:"legacy",hash:G,network:"mainnet",type:"p2sh"};case R.legacy.testnet.p2pkh:return{format:"legacy",hash:G,network:"testnet",type:"p2pkh"};case R.legacy.testnet.p2sh:return{format:"legacy",hash:G,network:"testnet",type:"p2sh"};case R.bitpay.mainnet.p2pkh:return{format:"bitpay",hash:G,network:"mainnet",type:"p2pkh"};case R.bitpay.mainnet.p2sh:return{format:"bitpay",hash:G,network:"mainnet",type:"p2sh"};default:return}}catch{return}}function EB(X){if(X.indexOf(":")!==-1)try{return xX(X)}catch{}else{let B=["bitcoincash","bchtest","bchreg"];for(let Z of B)try{return xX(`${Z}:${X}`)}catch{}}return}function xX(X){try{let{hash:B,prefix:Z,type:G}=lX.decode(X);return{format:"cashaddr",hash:Array.prototype.slice.call(B,0),network:Z==="bitcoincash"?"mainnet":"testnet",type:G==="P2PKH"?"p2pkh":"p2sh"}}catch{return}}function fB(X){let B=R.legacy[X.network][X.type],Z=Buffer.alloc(1+X.hash.length);return Z[0]=B,Z.set(X.hash,1),mX.encode(Z)}function RB(X){let B=X.network==="mainnet"?"bitcoincash":"bchtest",Z=X.type==="p2pkh"?"P2PKH":"P2SH",G=new Uint8Array(X.hash);return lX.encode(B,Z,G)}var DX,R;var hX=v(()=>{((Z)=>{Z.Mainnet="mainnet";Z.Testnet="testnet"})(DX||={});R={["legacy"]:{["mainnet"]:{["p2pkh"]:0,["p2sh"]:5},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}},["bitpay"]:{["mainnet"]:{["p2pkh"]:28,["p2sh"]:40},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}}}});import{USwapError as wB}from"@uswap/helpers";import{opcodes as PB,script as SB}from"bitcoinjs-lib";function O(X){let B=Buffer.from(X,"utf8");return SB.compile([PB.OP_RETURN,B])}var VB=1000,GX=10,cX=10,bB=41,xB=107,JX,BX,ZX,n=(X)=>{if(X.startsWith("bc1")||X.startsWith("tb1")||X.startsWith("ltc1")||X.startsWith("tltc1"))return"P2WPKH";if(X.startsWith("1")||X.startsWith("m")||X.startsWith("n")||X.startsWith("bitcoincash:q")||X.startsWith("bitcoincash:p")||X.startsWith("q")||X.startsWith("p")||X.startsWith("L")||X.startsWith("M")||X.startsWith("3")||X.startsWith("D")||X.startsWith("A")||X.startsWith("9")||X.startsWith("X")||X.startsWith("7")||X.startsWith("y")||X.startsWith("t1")||X.startsWith("t3")||X.startsWith("tm"))return"P2PKH";throw new wB("toolbox_utxo_invalid_address",{address:X})},x=({inputs:X,outputs:B,feeRate:Z})=>{let G=X[0]&&"address"in X[0]&&X[0].address?n(X[0].address):"P2PKH",$=X.filter((J)=>J.value>=BX["type"in J?J.type:"P2PKH"]*Math.ceil(Z)).reduce((J,j)=>J+F(j),0),Q=B?.reduce((J,j)=>J+u(j),0)||ZX[G];return GX+$+Q},F=(X)=>{if("type"in X)return BX[X.type];if("address"in X&&X.address)return BX[n(X.address)];return bB+xB},u=(X,B)=>{if(X?.script)return cX+X.script.length+(X.script.length>=74?2:1);if(B)return ZX[B];return ZX.P2PKH};var IX=v(()=>{((Z)=>{Z.P2PKH="P2PKH";Z.P2WPKH="P2WPKH"})(JX||={});BX={["P2PKH"]:148,["P2WPKH"]:68},ZX={["P2PKH"]:34,["P2WPKH"]:31}});import{Chain as w,USwapError as gB}from"@uswap/helpers";function QX(X){switch(X){case w.Bitcoin:case w.BitcoinCash:return 550;case w.Dash:case w.Litecoin:return 5500;case w.Dogecoin:return 1e5;case w.Zcash:return 546;default:throw new gB("toolbox_utxo_not_supported",{chain:X})}}function U({inputs:X,outputs:B,feeRate:Z=1,chain:G=w.Bitcoin,changeAddress:$=""}){let Q=Math.ceil(Z),J=X[0]&&"address"in X[0]&&X[0].address?n(X[0].address):"P2PKH",j=X.filter((T)=>F(T)*Q<=T.value),q=GX+B.reduce((T,z)=>T+u(z,J),0),L=B.reduce((T,z)=>T+z.value,0),W=q*Q,Y=0,D=[];for(let T of j){let z=F(T),_=Q*z;W+=_,Y+=T.value,D.push(T);let I=W+L;if(Y<I)continue;let c=Y-I,f=Q*u({address:"",value:0},J);if(c>f){let kX=f+W,AX=Y-(L+kX);if(AX>Math.max(F({})*Q,QX(G)))return{fee:kX,inputs:D,outputs:B.concat({address:$,value:AX})}}return{fee:W,inputs:D,outputs:B}}return{fee:Q*x({feeRate:Q,inputs:X,outputs:B})}}var pX=v(()=>{IX()});var g=v(()=>{bX();hX();pX();IX()});import{networks as mB,address as lB}from"@bitgo/utxo-lib";import hB from"bs58check";function P(X){return X.replace(/(bchtest:|bitcoincash:)/,"")}function E(X){let B=P(X);return zX(B)&&CX(B)==="mainnet"}function m(X){try{if(X.startsWith("z"))return console.warn("Shielded Zcash addresses (z-addresses) are not supported. Use transparent addresses (t1/t3) only."),!1;let B=mB.zcash;try{return lB.toOutputScript(X,B),!0}catch{let Z=hB.decode(X);if(Z.length<21)return!1;let G=Z[0];return G===B.pubKeyHash||G===B.scriptHash}}catch{return!1}}var r=v(()=>{g()});import MX from"@bitcoinerlab/secp256k1";import{ECPair as cB,HDNode as pB}from"@psf/bitcoincashjs-lib";import{HDKey as oB}from"@scure/bip32";import{mnemonicToSeedSync as oX}from"@scure/bip39";import{AssetValue as _X,applyFeeMultiplier as nX,Chain as H,DerivationPath as nB,derivationPathToString as uB,FeeOption as K,NetworkDerivationPath as rB,SwapKitNumber as dB,USwapError as k,updateDerivationPath as iB}from"@uswap/helpers";import{address as sB,initEccLib as rX,Psbt as aB,payments as uX}from"bitcoinjs-lib";import{ECPairFactory as tB}from"ecpair";function dX({inputs:X,outputs:B,chain:Z,psbt:G,sender:$,compiledMemo:Q}){for(let J of X){let j=!!J.witnessUtxo&&!d.includes(Z)&&{witnessUtxo:J.witnessUtxo},q=d.includes(Z)&&{nonWitnessUtxo:J.txHex?Buffer.from(J.txHex,"hex"):void 0};G.addInput({hash:J.hash,index:J.index,...j,...q})}for(let J of B){let j="address"in J&&J.address?J.address:$,q=J.script;if(q&&!Q)continue;let L=q?{script:Q,value:0}:{address:j,value:J.value};rX(MX),G.addOutput(L)}return{inputs:X,psbt:G}}async function iX({assetValue:X,recipient:B,memo:Z,feeRate:G,sender:$,fetchTxHex:Q=!1}){let J=X.chain,j=Z?await O(Z):null,q=await tX({assetValue:X,fetchTxHex:Q,memo:Z,recipient:B,sender:$}),{inputs:L,outputs:W}=U({...q,chain:J,feeRate:G});if(!(L&&W))throw new k("toolbox_utxo_insufficient_balance",{assetValue:X,sender:$});let Y=await y(),D=new aB({network:Y(J)});if(J===H.Dogecoin)D.setMaximumFeeRate(650000000);let{psbt:T,inputs:z}=await dX({chain:J,compiledMemo:j,inputs:L,outputs:W,psbt:D,sender:$});return{inputs:z,psbt:T,utxos:q.inputs}}async function sX(){let X=await y();return function({address:Z,chain:G}){if(G===H.BitcoinCash)return E(Z);if(G===H.Zcash)return m(Z);try{return rX(MX),sB.toOutputScript(Z,X(G)),!0}catch{return!1}}}async function eB({chain:X,phrase:B,derivationPath:Z}){let G=(await i(X))({derivationPath:Z,phrase:B});async function $(J){return await J.signAllInputs(G),J}function Q(){return HX(X)(G)}return{getAddress:Q,signTransaction:$}}async function S({chain:X,...B}){let Z="phrase"in B?B.phrase:void 0,G="index"in B?B.index||0:0,$=uB("derivationPath"in B&&B.derivationPath?B.derivationPath:iB(rB[X],{index:G})),Q=Z?await eB({chain:X,derivationPath:$,phrase:Z}):("signer"in B)?B.signer:void 0;function J(){return Promise.resolve(Q?.getAddress())}let j=await sX(),q=await i(X);return{accumulative:U,broadcastTx:(L)=>M(X).broadcastTx(L),calculateTxSize:x,createKeysForPath:q,createTransaction:iX,estimateMaxSendableAmount:XZ(X),estimateTransactionFee:BZ(X),getAddress:J,getAddressFromKeys:HX(X),getBalance:fX(X),getFeeRates:()=>s(X),getInputsOutputsFee:aX,getPrivateKeyFromMnemonic:(L)=>{return q(L).toWIF()},transfer:ZZ(Q),validateAddress:(L)=>j({address:L,chain:X})}}async function aX({assetValue:X,feeOptionKey:B=K.Fast,feeRate:Z,memo:G,sender:$,recipient:Q}){let J=X.chain,j=await tX({assetValue:X,memo:G,recipient:Q,sender:$}),q=Z?Math.floor(Z):(await s(J))[B];return U({...j,chain:J,feeRate:q})}function XZ(X){return async function({from:Z,memo:G,feeRate:$,feeOptionKey:Q=K.Fast,recipients:J=1}){let j=await M(X).getAddressData(Z),q=$?Math.ceil($):(await s(X))[Q],L=j?.utxo.map((z)=>({...z,hash:"",type:"P2PKH"})).filter((z)=>z.value>Math.max(QX(X),F(z)*q));if(!L?.length)return _X.from({chain:X});let W=_X.from({chain:X,value:L.reduce((z,_)=>z+_.value,0)}),Y=typeof J==="number"?Array.from({length:J},()=>({address:Z,value:0})):J;if(G){let z=await O(G);Y.push({address:Z,script:z,value:0})}let T=x({feeRate:q,inputs:L,outputs:Y})*q;return W.sub(T)}}function BZ(X){return async(B)=>{let Z=await aX(B);return _X.from({chain:X,value:dB.fromBigInt(BigInt(Z.fee),8).getValue("string")})}}async function i(X){let B=await y();switch(X){case H.BitcoinCash:return function({phrase:G,derivationPath:$=`${nB.BCH}/0`,wif:Q}){let J=B(X);if(Q)return cB.fromWIF(Q,J);if(!G)throw new k("toolbox_utxo_invalid_params",{error:"No phrase provided"});return pB.fromSeedBuffer(Buffer.from(oX(G)),J).derivePath($).keyPair};case H.Bitcoin:case H.Dogecoin:case H.Litecoin:case H.Zcash:case H.Dash:return function({phrase:G,wif:$,derivationPath:Q}){if(!($||G))throw new k("toolbox_utxo_invalid_params",{error:"Either phrase or wif must be provided"});let J=tB(MX),j=B(X);if($)return J.fromWIF($,j);let q=oX(G),L=oB.fromMasterSeed(q,j).derive(Q);if(!L.privateKey)throw new k("toolbox_utxo_invalid_params",{error:"Could not get private key from phrase"});return J.fromPrivateKey(Buffer.from(L.privateKey),{network:j})};default:throw new k("toolbox_utxo_not_supported",{chain:X})}}function HX(X){let B=y();return function(G){if(!G)throw new k("toolbox_utxo_invalid_params",{error:"Keys must be provided"});let $=d.includes(X)?uX.p2pkh:uX.p2wpkh,{address:Q}=$({network:B(X),pubkey:G.publicKey});if(!Q)throw new k("toolbox_utxo_invalid_address",{error:"Address not defined"});return Q}}function ZZ(X){return async function({memo:Z,recipient:G,feeOptionKey:$,feeRate:Q,assetValue:J}){let j=await X?.getAddress(),q=J.chain;if(!(X&&j))throw new k("toolbox_utxo_no_signer");if(!G)throw new k("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});let L=Q||(await s(q))[$||K.Fast],{psbt:W}=await iX({assetValue:J,feeRate:L,memo:Z,recipient:G,sender:j}),Y=await X.signTransaction(W);return Y.finalizeAllInputs(),M(q).broadcastTx(Y.extractTransaction().toHex())}}async function s(X){let B=await M(X).getSuggestedTxFee();return{[K.Average]:B,[K.Fast]:nX(B,K.Fast),[K.Fastest]:nX(B,K.Fastest)}}async function tX({assetValue:X,recipient:B,memo:Z,sender:G,fetchTxHex:$=!1}){let Q=X.chain,J=(await s(Q))[K.Fastest],j=$||d.includes(Q),q=X.getBaseValue("number"),L=Math.ceil(q+J*5000);return{inputs:await M(Q).getUtxos({address:G,fetchTxHex:j,targetValue:L}),outputs:[{address:B,value:q},...Z?[{address:"",script:await O(Z),value:0}]:[]]}}var d;var a=v(()=>{YX();g();r();d=[H.Dash,H.Dogecoin,H.Zcash,H.BitcoinCash]});import{address as GZ,Transaction as JZ,TransactionBuilder as QZ}from"@psf/bitcoincashjs-lib";import{Chain as $Z,derivationPathToString as jZ,FeeOption as qZ,NetworkDerivationPath as LZ,USwapError as l,updateDerivationPath as WZ}from"@uswap/helpers";import{Psbt as YZ}from"bitcoinjs-lib";function V(X){return P(o(X))}function TZ(X){function B({builder:G,utxos:$}){return $.forEach((Q,J)=>{G.sign(J,X,void 0,65,Q.witnessUtxo?.value)}),G.build()}return{getAddress:()=>{let G=X.getAddress(0);return Promise.resolve(V(G))},signTransaction:B}}async function vX(X){let B="phrase"in X?X.phrase:void 0,Z="index"in X?X.index||0:0,G=jZ("derivationPath"in X&&X.derivationPath?X.derivationPath:WZ(LZ[N],{index:Z})),$=B?(await i(N))({derivationPath:G,phrase:B}):void 0,Q=$?TZ($):("signer"in X)?X.signer:void 0;function J(){return Promise.resolve(Q?.getAddress())}let{getBalance:j,getFeeRates:q,broadcastTx:L,...W}=await S({chain:N});function Y(D,T=!0){return j(P(o(D)))}return{...W,broadcastTx:L,buildTx:zZ,createTransaction:eX,getAddress:J,getAddressFromKeys:CZ,getBalance:Y,getFeeRates:q,stripPrefix:P,stripToCashAddress:V,transfer:DZ({broadcastTx:L,getFeeRates:q,signer:Q}),validateAddress:E}}async function eX({assetValue:X,recipient:B,memo:Z,feeRate:G,sender:$}){if(!E(B))throw new l("toolbox_utxo_invalid_address",{address:B});let Q=Math.ceil(X.getBaseValue("number")+G*7500),J=await M(N).getUtxos({address:V($),fetchTxHex:!0,targetValue:Q}),j=Z?await O(Z):null,q=[];q.push({address:B,value:X.getBaseValue("number")});let{inputs:L,outputs:W}=U({chain:N,feeRate:G,inputs:J,outputs:q});if(!(L&&W))throw new l("toolbox_utxo_insufficient_balance",{assetValue:X,sender:$});let Y=await y(),D=new QZ(Y(N));await Promise.all(L.map(async(T)=>{let z=await M(N).getRawTx(T.hash);D.addInput(JZ.fromBuffer(Buffer.from(z,"hex")),T.index)}));for(let T of W){let z="address"in T&&T.address?T.address:b($),_=await y(),I=GZ.toOutputScript(b(z),_(N));D.addOutput(I,T.value)}if(j)D.addOutput(j,0);return{builder:D,utxos:L}}function DZ({broadcastTx:X,getFeeRates:B,signer:Z}){return async function({recipient:$,assetValue:Q,feeOptionKey:J=qZ.Fast,...j}){let q=await Z?.getAddress();if(!(Z&&q))throw new l("toolbox_utxo_no_signer");if(!$)throw new l("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});let L=j.feeRate||(await B())[J],{builder:W,utxos:Y}=await eX({...j,assetValue:Q,feeRate:L,recipient:$,sender:q}),T=(await Z.signTransaction({builder:W,utxos:Y})).toHex();return X(T)}}async function zZ({assetValue:X,recipient:B,memo:Z,feeRate:G,sender:$,setSigHashType:Q}){let J=o(B);if(!E(J))throw new l("toolbox_utxo_invalid_address",{address:J});let j=Math.ceil(X.getBaseValue("number")+G*7500),q=await M(N).getUtxos({address:V($),fetchTxHex:!1,targetValue:j}),L=Number(G.toFixed(0)),W=Z?await O(Z):null,Y=[];if(Y.push({address:b(B),value:X.getBaseValue("number")}),W)Y.push({script:W,value:0});let{inputs:D,outputs:T}=U({chain:N,feeRate:L,inputs:q,outputs:Y});if(!(D&&T))throw new l("toolbox_utxo_insufficient_balance",{assetValue:X,sender:$});let z=await y(),_=new YZ({network:z(N)});for(let{hash:I,index:c,witnessUtxo:f}of D)_.addInput({hash:I,index:c,sighashType:Q?65:void 0,witnessUtxo:f});for(let I of T){let c="address"in I&&I.address?I.address:b($),f=I.script?W?{script:W,value:0}:void 0:{address:c,value:I.value};if(f)_.addOutput(f)}return{inputs:D,psbt:_,utxos:q}}function CZ(X){let B=X.getAddress(0);return V(B)}var N;var $X=v(()=>{g();a();r();N=$Z.BitcoinCash});import{bitgo as IZ,crypto as _Z,ECPair as ZB,networks as MZ,address as HZ}from"@bitgo/utxo-lib";import{ZcashTransaction as XB}from"@bitgo/utxo-lib/dist/src/bitgo";import{HDKey as GB}from"@scure/bip32";import{mnemonicToSeedSync as JB}from"@scure/bip39";import{Chain as jX,derivationPathToString as vZ,FeeOption as NZ,NetworkDerivationPath as yZ,SKConfig as OZ,USwapError as qX,updateDerivationPath as UZ}from"@uswap/helpers";import KZ from"bs58check";import{match as kZ,P as NX}from"ts-pattern";function yX(){return MZ.zcash}function QB(){return{bech32:void 0,bip32:{private:76066276,public:76067358},messagePrefix:`\x18ZCash Signed Message:
2
+ `,pubKeyHash:28,scriptHash:28,wif:128}}function AZ({phrase:X,derivationPath:B}){let Z=JB(X),$=GB.fromMasterSeed(Z).derive(B);if(!$.privateKey)throw new qX("toolbox_utxo_invalid_params");let Q=QB(),J=ZB.fromPrivateKey(Buffer.from($.privateKey),{network:Q}),j=_Z.hash160(J.publicKey),{isStagenet:q}=OZ.get("envs"),L=q?Buffer.from([29,37]):Buffer.from([28,184]),W=Buffer.concat([L,j]),Y=KZ.encode(W);return{getAddress:()=>Promise.resolve(Y),signTransaction:(D)=>{let T=D.signAllInputs(J);return Promise.resolve(T)}}}function FZ({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:HZ.toOutputScript(J,yX()),value:BigInt(Q.value)};Z.addOutput(q)}return{inputs:X,psbt:Z}}async function BB(X){let{assetValue:B,recipient:Z,memo:G,feeRate:$,sender:Q,fetchTxHex:J}=X,j=G?O(G):null,q=await M(jX.Zcash).getUtxos({address:Q,fetchTxHex:J!==!1}),L=[{address:Z,value:Number(B.getBaseValue("string"))},...j?[{script:j,value:0}]:[]],{inputs:W,outputs:Y}=U({chain:jX.Zcash,changeAddress:Q,feeRate:$,inputs:q,outputs:L});if(!(W&&Y))throw new qX("toolbox_utxo_insufficient_balance",{assetValue:B,sender:Q});let D=IZ.createPsbtForNetwork({network:yX()},{version:XB.VERSION4_BRANCH_NU6_1}),{psbt:T,inputs:z}=await FZ({compiledMemo:j,inputs:W,outputs:Y,psbt:D,sender:Q});return T.setDefaultsForVersion(yX(),XB.VERSION4_BRANCH_NU6_1),{inputs:z,outputs:Y,psbt:T}}async function OX(X){let B=await kZ(X).with({signer:NX.not(NX.nullish)},({signer:J})=>Promise.resolve(J)).with({phrase:NX.string},({phrase:J,derivationPath:j,index:q=0})=>{let L=j||yZ[jX.Zcash]||[44,133,0,0,0],W=UZ(L,{index:q}),Y=vZ(W);return AZ({derivationPath:Y,phrase:J})}).otherwise(()=>Promise.resolve(void 0)),Z=await S({chain:jX.Zcash,signer:B});async function G({recipient:J,assetValue:j,feeOptionKey:q=NZ.Fast,...L}){let W=await B?.getAddress();if(!(B&&W))throw new qX("toolbox_utxo_no_signer");let Y=L.feeRate||(await Z.getFeeRates())[q],{psbt:D}=await BB({...L,assetValue:j,feeRate:Y,recipient:J,sender:W}),T=await B.signTransaction(D);T.validateSignaturesOfAllInputs(),T.finalizeAllInputs();let _=T.extractTransaction().toHex();return Z.broadcastTx(_)}function $({phrase:J,derivationPath:j="m/44'/133'/0'/0/0"}){let q=JB(J),W=GB.fromMasterSeed(q).derive(j);if(!W.privateKey)throw new qX("toolbox_utxo_invalid_params");let Y=QB();return ZB.fromPrivateKey(Buffer.from(W.privateKey),{network:Y})}function Q({phrase:J,derivationPath:j="m/44'/133'/0'/0/0"}){return $({derivationPath:j,phrase:J}).toWIF()}return{...Z,createKeysForPath:$,createTransaction:BB,getPrivateKeyFromMnemonic:Q,transfer:G,validateAddress:m}}var UX=v(()=>{g();a();r()});import{Chain as h,USwapError as EZ}from"@uswap/helpers";async function fZ(X,B){switch(X){case h.BitcoinCash:return await vX(B||{});case h.Zcash:return await OX(B);case h.Bitcoin:case h.Dogecoin:case h.Litecoin:case h.Dash:return await S({chain:X,...B});default:throw new EZ("toolbox_utxo_not_supported",{chain:X})}}var $B=v(()=>{$X();a();UX();$X();r()});var RZ={};YB(RZ,{validateZcashAddress:()=>m,toLegacyAddress:()=>b,toCashAddress:()=>o,stripToCashAddress:()=>V,stripPrefix:()=>P,nonSegwitChains:()=>d,isValidAddress:()=>zX,getUtxoToolbox:()=>fZ,getUtxoNetwork:()=>y,getUtxoApi:()=>M,getUTXOAddressValidator:()=>sX,getScriptTypeForAddress:()=>n,getOutputSize:()=>u,getInputSize:()=>F,getDustThreshold:()=>QX,getCreateKeysForPath:()=>i,detectAddressNetwork:()=>CX,createZcashToolbox:()=>OX,createUTXOToolbox:()=>S,createCustomUtxoApi:()=>AB,createBCHToolbox:()=>vX,compileMemo:()=>O,calculateTxSize:()=>x,bchValidateAddress:()=>E,addressFromKeysGetter:()=>HX,addInputsAndOutputs:()=>dX,accumulative:()=>U,UtxoNetwork:()=>DX,UTXOScriptType:()=>JX,TX_OVERHEAD:()=>GX,OutputSizes:()=>ZX,OP_RETURN_OVERHEAD:()=>cX,MIN_TX_FEE:()=>VB,InputSizes:()=>BX});var wZ=v(()=>{g();$B();$X();a();UX()});wZ();export{m as validateZcashAddress,b as toLegacyAddress,o as toCashAddress,V as stripToCashAddress,P as stripPrefix,d as nonSegwitChains,zX as isValidAddress,fZ as getUtxoToolbox,y as getUtxoNetwork,M as getUtxoApi,sX as getUTXOAddressValidator,n as getScriptTypeForAddress,u as getOutputSize,F as getInputSize,QX as getDustThreshold,i as getCreateKeysForPath,CX as detectAddressNetwork,OX as createZcashToolbox,S as createUTXOToolbox,AB as createCustomUtxoApi,vX as createBCHToolbox,O as compileMemo,x as calculateTxSize,E as bchValidateAddress,HX as addressFromKeysGetter,dX as addInputsAndOutputs,U as accumulative,DX as UtxoNetwork,JX as UTXOScriptType,GX as TX_OVERHEAD,ZX as OutputSizes,cX as OP_RETURN_OVERHEAD,VB as MIN_TX_FEE,BX as InputSizes};
3
3
 
4
- //# debugId=D63FD701A7DC9F2F64756E2164756E21
4
+ //# debugId=FFE15F310CC5C6C264756E2164756E21
5
5
  //# sourceMappingURL=index.js.map