@swapkit/toolboxes 4.3.9 → 4.13.1

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 (266) hide show
  1. package/dist/LICENSE +246 -0
  2. package/dist/src/aptos/index.cjs +1 -0
  3. package/dist/src/aptos/index.js +1 -0
  4. package/dist/src/cardano/index.cjs +1 -4
  5. package/dist/src/cardano/index.js +1 -4
  6. package/dist/src/cosmos/index.cjs +1 -4
  7. package/dist/src/cosmos/index.js +1 -4
  8. package/dist/src/evm/index.cjs +1 -4
  9. package/dist/src/evm/index.js +1 -4
  10. package/dist/src/index.cjs +1 -5
  11. package/dist/src/index.js +1 -5
  12. package/dist/src/near/index.cjs +1 -4
  13. package/dist/src/near/index.js +1 -4
  14. package/dist/src/radix/index.cjs +1 -4
  15. package/dist/src/radix/index.js +1 -4
  16. package/dist/src/ripple/index.cjs +1 -4
  17. package/dist/src/ripple/index.js +1 -4
  18. package/dist/src/solana/index.cjs +1 -4
  19. package/dist/src/solana/index.js +1 -4
  20. package/dist/src/starknet/index.cjs +1 -0
  21. package/dist/src/starknet/index.js +1 -0
  22. package/dist/src/stellar/index.cjs +1 -0
  23. package/dist/src/stellar/index.js +1 -0
  24. package/dist/src/substrate/index.cjs +1 -4
  25. package/dist/src/substrate/index.js +1 -4
  26. package/dist/src/sui/index.cjs +1 -4
  27. package/dist/src/sui/index.js +1 -4
  28. package/dist/src/ton/index.cjs +1 -4
  29. package/dist/src/ton/index.js +1 -4
  30. package/dist/src/tron/index.cjs +1 -4
  31. package/dist/src/tron/index.js +1 -4
  32. package/dist/src/utxo/index.cjs +1 -5
  33. package/dist/src/utxo/index.js +1 -5
  34. package/dist/types/aptos/index.d.ts +3 -0
  35. package/dist/types/aptos/index.d.ts.map +1 -0
  36. package/dist/types/aptos/toolbox.d.ts +21 -0
  37. package/dist/types/aptos/toolbox.d.ts.map +1 -0
  38. package/dist/types/aptos/types.d.ts +27 -0
  39. package/dist/types/aptos/types.d.ts.map +1 -0
  40. package/dist/types/cardano/toolbox.d.ts +19 -22
  41. package/dist/types/cardano/toolbox.d.ts.map +1 -1
  42. package/dist/types/cardano/types.d.ts +8 -3
  43. package/dist/types/cardano/types.d.ts.map +1 -1
  44. package/dist/types/cosmos/thorchainUtils/addressFormat.d.ts.map +1 -1
  45. package/dist/types/cosmos/thorchainUtils/messages.d.ts +3 -3
  46. package/dist/types/cosmos/thorchainUtils/messages.d.ts.map +1 -1
  47. package/dist/types/cosmos/toolbox/cosmos.d.ts +11 -9
  48. package/dist/types/cosmos/toolbox/cosmos.d.ts.map +1 -1
  49. package/dist/types/cosmos/toolbox/thorchain.d.ts +6 -51
  50. package/dist/types/cosmos/toolbox/thorchain.d.ts.map +1 -1
  51. package/dist/types/cosmos/types.d.ts +2 -2
  52. package/dist/types/cosmos/types.d.ts.map +1 -1
  53. package/dist/types/evm/helpers.d.ts +34 -1
  54. package/dist/types/evm/helpers.d.ts.map +1 -1
  55. package/dist/types/evm/toolbox/baseEVMToolbox.d.ts +14 -7
  56. package/dist/types/evm/toolbox/baseEVMToolbox.d.ts.map +1 -1
  57. package/dist/types/evm/toolbox/evm.d.ts +236 -96
  58. package/dist/types/evm/toolbox/evm.d.ts.map +1 -1
  59. package/dist/types/evm/toolbox/index.d.ts +3 -2
  60. package/dist/types/evm/toolbox/index.d.ts.map +1 -1
  61. package/dist/types/evm/toolbox/op.d.ts +13 -8
  62. package/dist/types/evm/toolbox/op.d.ts.map +1 -1
  63. package/dist/types/evm/types.d.ts +49 -27
  64. package/dist/types/evm/types.d.ts.map +1 -1
  65. package/dist/types/index.d.ts +31 -25
  66. package/dist/types/index.d.ts.map +1 -1
  67. package/dist/types/near/helpers/core.d.ts +1 -1
  68. package/dist/types/near/helpers/core.d.ts.map +1 -1
  69. package/dist/types/near/index.d.ts +1 -1
  70. package/dist/types/near/index.d.ts.map +1 -1
  71. package/dist/types/near/toolbox.d.ts +13 -10
  72. package/dist/types/near/toolbox.d.ts.map +1 -1
  73. package/dist/types/near/types/index.d.ts +4 -0
  74. package/dist/types/near/types/index.d.ts.map +1 -0
  75. package/dist/types/near/types/toolbox.d.ts +2 -0
  76. package/dist/types/near/types/toolbox.d.ts.map +1 -1
  77. package/dist/types/radix/index.d.ts +7 -7
  78. package/dist/types/radix/index.d.ts.map +1 -1
  79. package/dist/types/ripple/currency.d.ts +5 -0
  80. package/dist/types/ripple/currency.d.ts.map +1 -0
  81. package/dist/types/ripple/index.d.ts +60 -17
  82. package/dist/types/ripple/index.d.ts.map +1 -1
  83. package/dist/types/ripple/tokens.d.ts +15 -0
  84. package/dist/types/ripple/tokens.d.ts.map +1 -0
  85. package/dist/types/solana/index.d.ts +1 -1
  86. package/dist/types/solana/index.d.ts.map +1 -1
  87. package/dist/types/solana/toolbox.d.ts +12 -10
  88. package/dist/types/solana/toolbox.d.ts.map +1 -1
  89. package/dist/types/starknet/index.d.ts +5 -0
  90. package/dist/types/starknet/index.d.ts.map +1 -0
  91. package/dist/types/starknet/toolbox.d.ts +34 -0
  92. package/dist/types/starknet/toolbox.d.ts.map +1 -0
  93. package/dist/types/starknet/types.d.ts +26 -0
  94. package/dist/types/starknet/types.d.ts.map +1 -0
  95. package/dist/types/stellar/index.d.ts +3 -0
  96. package/dist/types/stellar/index.d.ts.map +1 -0
  97. package/dist/types/stellar/toolbox.d.ts +21 -0
  98. package/dist/types/stellar/toolbox.d.ts.map +1 -0
  99. package/dist/types/stellar/types.d.ts +10 -0
  100. package/dist/types/stellar/types.d.ts.map +1 -0
  101. package/dist/types/substrate/balance.d.ts +3 -3
  102. package/dist/types/substrate/balance.d.ts.map +1 -1
  103. package/dist/types/substrate/substrate.d.ts +22 -97
  104. package/dist/types/substrate/substrate.d.ts.map +1 -1
  105. package/dist/types/substrate/types.d.ts +2 -2
  106. package/dist/types/substrate/types.d.ts.map +1 -1
  107. package/dist/types/sui/toolbox.d.ts +17 -8
  108. package/dist/types/sui/toolbox.d.ts.map +1 -1
  109. package/dist/types/sui/types.d.ts +11 -3
  110. package/dist/types/sui/types.d.ts.map +1 -1
  111. package/dist/types/ton/toolbox.d.ts +23 -13
  112. package/dist/types/ton/toolbox.d.ts.map +1 -1
  113. package/dist/types/ton/types.d.ts +9 -8
  114. package/dist/types/ton/types.d.ts.map +1 -1
  115. package/dist/types/tron/helpers/proto.d.ts +9 -0
  116. package/dist/types/tron/helpers/proto.d.ts.map +1 -0
  117. package/dist/types/tron/helpers/trongrid.d.ts +43 -3
  118. package/dist/types/tron/helpers/trongrid.d.ts.map +1 -1
  119. package/dist/types/tron/helpers/utils.d.ts +17 -0
  120. package/dist/types/tron/helpers/utils.d.ts.map +1 -0
  121. package/dist/types/tron/index.d.ts +4 -5
  122. package/dist/types/tron/index.d.ts.map +1 -1
  123. package/dist/types/tron/toolbox.d.ts +20 -18
  124. package/dist/types/tron/toolbox.d.ts.map +1 -1
  125. package/dist/types/tron/types.d.ts +31 -57
  126. package/dist/types/tron/types.d.ts.map +1 -1
  127. package/dist/types/types.d.ts +6 -0
  128. package/dist/types/types.d.ts.map +1 -1
  129. package/dist/types/utxo/hdWallet.d.ts +33 -0
  130. package/dist/types/utxo/hdWallet.d.ts.map +1 -0
  131. package/dist/types/utxo/helpers/api.d.ts +49 -1
  132. package/dist/types/utxo/helpers/api.d.ts.map +1 -1
  133. package/dist/types/utxo/helpers/bchaddrjs.d.ts.map +1 -1
  134. package/dist/types/utxo/helpers/cashaddr.d.ts +13 -0
  135. package/dist/types/utxo/helpers/cashaddr.d.ts.map +1 -0
  136. package/dist/types/utxo/helpers/coinselect.d.ts +9 -5
  137. package/dist/types/utxo/helpers/coinselect.d.ts.map +1 -1
  138. package/dist/types/utxo/helpers/txSize.d.ts +4 -3
  139. package/dist/types/utxo/helpers/txSize.d.ts.map +1 -1
  140. package/dist/types/utxo/index.d.ts +2 -1
  141. package/dist/types/utxo/index.d.ts.map +1 -1
  142. package/dist/types/utxo/toolbox/bitcoinCash.d.ts +75 -15
  143. package/dist/types/utxo/toolbox/bitcoinCash.d.ts.map +1 -1
  144. package/dist/types/utxo/toolbox/index.d.ts +6 -5
  145. package/dist/types/utxo/toolbox/index.d.ts.map +1 -1
  146. package/dist/types/utxo/toolbox/params.d.ts +8 -16
  147. package/dist/types/utxo/toolbox/params.d.ts.map +1 -1
  148. package/dist/types/utxo/toolbox/utxo.d.ts +135 -46
  149. package/dist/types/utxo/toolbox/utxo.d.ts.map +1 -1
  150. package/dist/types/utxo/toolbox/validators.d.ts +1 -1
  151. package/dist/types/utxo/toolbox/validators.d.ts.map +1 -1
  152. package/dist/types/utxo/toolbox/zcash.d.ts +63 -10
  153. package/dist/types/utxo/toolbox/zcash.d.ts.map +1 -1
  154. package/dist/types/utxo/types.d.ts +78 -15
  155. package/dist/types/utxo/types.d.ts.map +1 -1
  156. package/package.json +43 -53
  157. package/dist/src/cardano/index.cjs.map +0 -11
  158. package/dist/src/cardano/index.js.map +0 -11
  159. package/dist/src/cosmos/index.cjs.map +0 -20
  160. package/dist/src/cosmos/index.js.map +0 -20
  161. package/dist/src/evm/index.cjs.map +0 -20
  162. package/dist/src/evm/index.js.map +0 -20
  163. package/dist/src/index.cjs.map +0 -67
  164. package/dist/src/index.js.map +0 -67
  165. package/dist/src/near/index.cjs.map +0 -16
  166. package/dist/src/near/index.js.map +0 -16
  167. package/dist/src/radix/index.cjs.map +0 -10
  168. package/dist/src/radix/index.js.map +0 -10
  169. package/dist/src/ripple/index.cjs.map +0 -10
  170. package/dist/src/ripple/index.js.map +0 -10
  171. package/dist/src/solana/index.cjs.map +0 -11
  172. package/dist/src/solana/index.js.map +0 -11
  173. package/dist/src/substrate/index.cjs.map +0 -13
  174. package/dist/src/substrate/index.js.map +0 -13
  175. package/dist/src/sui/index.cjs.map +0 -11
  176. package/dist/src/sui/index.js.map +0 -11
  177. package/dist/src/ton/index.cjs.map +0 -11
  178. package/dist/src/ton/index.js.map +0 -11
  179. package/dist/src/tron/index.cjs.map +0 -13
  180. package/dist/src/tron/index.js.map +0 -13
  181. package/dist/src/utxo/index.cjs.map +0 -21
  182. package/dist/src/utxo/index.js.map +0 -21
  183. package/dist/types/tron/helpers/trc20.abi.d.ts +0 -156
  184. package/dist/types/tron/helpers/trc20.abi.d.ts.map +0 -1
  185. package/src/__tests__/address-validation-all-chains.test.ts +0 -162
  186. package/src/__tests__/addressValidator.test.ts +0 -162
  187. package/src/cardano/__tests__/toolbox.test.ts +0 -48
  188. package/src/cardano/index.ts +0 -2
  189. package/src/cardano/toolbox.ts +0 -168
  190. package/src/cardano/types.ts +0 -10
  191. package/src/cosmos/__tests__/toolbox.test.ts +0 -95
  192. package/src/cosmos/index.ts +0 -4
  193. package/src/cosmos/thorchainUtils/addressFormat.ts +0 -22
  194. package/src/cosmos/thorchainUtils/index.ts +0 -4
  195. package/src/cosmos/thorchainUtils/messages.ts +0 -212
  196. package/src/cosmos/thorchainUtils/registry.ts +0 -43
  197. package/src/cosmos/thorchainUtils/types/MsgCompiled.ts +0 -2800
  198. package/src/cosmos/thorchainUtils/types/client-types.ts +0 -54
  199. package/src/cosmos/thorchainUtils/types/index.ts +0 -1
  200. package/src/cosmos/toolbox/cosmos.ts +0 -345
  201. package/src/cosmos/toolbox/index.ts +0 -35
  202. package/src/cosmos/toolbox/thorchain.ts +0 -249
  203. package/src/cosmos/types.ts +0 -48
  204. package/src/cosmos/util.ts +0 -214
  205. package/src/evm/__tests__/address-validation.test.ts +0 -84
  206. package/src/evm/__tests__/ethereum.test.ts +0 -137
  207. package/src/evm/__tests__/signMessage.test.ts +0 -60
  208. package/src/evm/api.ts +0 -10
  209. package/src/evm/contracts/eth/multicall.ts +0 -165
  210. package/src/evm/contracts/op/gasOracle.ts +0 -145
  211. package/src/evm/helpers.ts +0 -71
  212. package/src/evm/index.ts +0 -4
  213. package/src/evm/toolbox/baseEVMToolbox.ts +0 -698
  214. package/src/evm/toolbox/evm.ts +0 -66
  215. package/src/evm/toolbox/index.ts +0 -44
  216. package/src/evm/toolbox/op.ts +0 -143
  217. package/src/evm/types.ts +0 -146
  218. package/src/index.ts +0 -260
  219. package/src/near/__tests__/core.test.ts +0 -70
  220. package/src/near/helpers/core.ts +0 -85
  221. package/src/near/helpers/gasEstimation.ts +0 -96
  222. package/src/near/helpers/nep141.ts +0 -50
  223. package/src/near/index.ts +0 -21
  224. package/src/near/toolbox.ts +0 -421
  225. package/src/near/types/contract.ts +0 -32
  226. package/src/near/types/nep141.ts +0 -34
  227. package/src/near/types/toolbox.ts +0 -55
  228. package/src/near/types.ts +0 -44
  229. package/src/radix/index.ts +0 -138
  230. package/src/ripple/index.ts +0 -179
  231. package/src/solana/index.ts +0 -36
  232. package/src/solana/toolbox.ts +0 -409
  233. package/src/substrate/balance.ts +0 -88
  234. package/src/substrate/index.ts +0 -2
  235. package/src/substrate/substrate.ts +0 -281
  236. package/src/substrate/types.ts +0 -115
  237. package/src/sui/__tests__/toolbox.test.ts +0 -86
  238. package/src/sui/index.ts +0 -2
  239. package/src/sui/toolbox.ts +0 -166
  240. package/src/sui/types.ts +0 -11
  241. package/src/ton/__tests__/toolbox.test.ts +0 -67
  242. package/src/ton/index.ts +0 -2
  243. package/src/ton/toolbox.ts +0 -136
  244. package/src/ton/types.ts +0 -13
  245. package/src/tron/__tests__/toolbox.test.ts +0 -221
  246. package/src/tron/helpers/trc20.abi.ts +0 -107
  247. package/src/tron/helpers/trongrid.ts +0 -53
  248. package/src/tron/index.ts +0 -21
  249. package/src/tron/toolbox.ts +0 -585
  250. package/src/tron/types.ts +0 -83
  251. package/src/types.ts +0 -28
  252. package/src/utils.ts +0 -34
  253. package/src/utxo/__tests__/zcash-integration.test.ts +0 -97
  254. package/src/utxo/helpers/api.ts +0 -471
  255. package/src/utxo/helpers/bchaddrjs.ts +0 -166
  256. package/src/utxo/helpers/coinselect.ts +0 -92
  257. package/src/utxo/helpers/index.ts +0 -4
  258. package/src/utxo/helpers/txSize.ts +0 -137
  259. package/src/utxo/index.ts +0 -6
  260. package/src/utxo/toolbox/bitcoinCash.ts +0 -243
  261. package/src/utxo/toolbox/index.ts +0 -59
  262. package/src/utxo/toolbox/params.ts +0 -18
  263. package/src/utxo/toolbox/utxo.ts +0 -439
  264. package/src/utxo/toolbox/validators.ts +0 -36
  265. package/src/utxo/toolbox/zcash.ts +0 -242
  266. package/src/utxo/types.ts +0 -39
@@ -1,4 +1 @@
1
- var S=Object.create;var{getPrototypeOf:o,defineProperty:M,getOwnPropertyNames:x,getOwnPropertyDescriptor:h}=Object,_=Object.prototype.hasOwnProperty;var $=(b,O,j)=>{j=b!=null?S(o(b)):{};let P=O||!b||!b.__esModule?M(j,"default",{value:b,enumerable:!0}):j;for(let I of x(b))if(!_.call(P,I))M(P,I,{get:()=>b[I],enumerable:!0});return P},v=new WeakMap,m=(b)=>{var O=v.get(b),j;if(O)return O;if(O=M({},"__esModule",{value:!0}),b&&typeof b==="object"||typeof b==="function")x(b).map((P)=>!_.call(O,P)&&M(O,P,{get:()=>b[P],enumerable:!(j=h(b,P))||j.enumerable}));return v.set(b,O),O};var p=(b,O)=>{for(var j in O)M(b,j,{get:O[j],enumerable:!0,configurable:!0,set:(P)=>O[j]=()=>P})};var D=(b,O)=>()=>(b&&(O=b(b=0)),O);async function Q(){let{isValidSuiAddress:b}=await import("@mysten/sui/utils");return function(j){try{return b(j)}catch{return!1}}}async function C({provider:b,...O}={}){let j=await Q(),P=await N.match(O).with({phrase:N.P.string},async({phrase:G})=>{let{Ed25519Keypair:f}=await import("@mysten/sui/keypairs/ed25519");return f.deriveKeypair(G)}).with({signer:N.P.any},({signer:G})=>G).otherwise(()=>{return});async function I(G=b){let{SuiClient:f,getFullnodeUrl:k}=await import("@mysten/sui/client");return new f({url:G||k("mainnet")})}function X(){return P?.toSuiAddress()||""}async function y(G){let f=G||X();if(!f)throw new R.SwapKitError("toolbox_sui_address_required");let{baseDecimal:k,chain:q}=R.getChainConfig(R.Chain.Sui);try{let J=await I(),{totalBalance:z}=await J.getBalance({owner:f}),W=[R.AssetValue.from({chain:q,fromBaseDecimal:k,value:z})],H=await J.getAllBalances({owner:f});for(let{coinType:L,totalBalance:Z}of H){if(L==="0x2::sui::SUI")continue;if(Number(Z)>0){let E=L.split("::").pop()?.toUpperCase()||"UNKNOWN",K=`${q}.${E}-${L}`;W.push(R.AssetValue.from({asset:K,fromBaseDecimal:k,value:Z}))}}return W}catch{return[R.AssetValue.from({chain:q})]}}async function U(G){let f=R.AssetValue.from({chain:R.Chain.Sui,value:"0.01"});if(!G)return f;try{let k=await I(),{txBytes:q}=await Y(G),{effects:{status:J,gasUsed:z}}=await k.dryRunTransactionBlock({transactionBlock:q});if(J.status!=="success")return f;let W=Number(z.computationCost)+Number(z.storageCost)-Number(z.storageRebate);return R.AssetValue.from({chain:R.Chain.Sui,value:W.toString()})}catch{return f}}async function Y({recipient:G,assetValue:f,gasBudget:k,sender:q}){let{Transaction:J}=await import("@mysten/sui/transactions"),z=q||X();if(!z)throw new R.SwapKitError("toolbox_sui_no_sender");try{let W=new J;if(W.setSender(z),f.isGasAsset||f.symbol==="SUI"){let[Z]=W.splitCoins(W.gas,[f.getBaseValue("string")]);W.transferObjects([Z],G)}else throw new R.SwapKitError("toolbox_sui_custom_token_transfer_not_implemented");if(k)W.setGasBudget(k);let H=await I(),L=await W.build({client:H});return{tx:W,txBytes:L}}catch(W){throw new R.SwapKitError("toolbox_sui_transaction_creation_error",{error:W})}}async function F(G){if(!P)throw new R.SwapKitError("toolbox_sui_no_signer");if(G instanceof Uint8Array)return P.signTransaction(G);let{txBytes:f}="tx"in G?G:await Y(G);return P.signTransaction(f)}async function w({assetValue:G,gasBudget:f,recipient:k}){if(!P)throw new R.SwapKitError("toolbox_sui_no_signer");let q=P.toSuiAddress()||X();if(!q)throw new R.SwapKitError("toolbox_sui_no_sender");let{txBytes:J}=await Y({assetValue:G,gasBudget:f,recipient:k,sender:q}),z=await I(),{digest:W}=await z.signAndExecuteTransaction({signer:P,transaction:J});return W}return{createTransaction:Y,estimateTransactionFee:U,getAddress:X,getBalance:y,signTransaction:F,transfer:w,validateAddress:j}}var R,N;var T=D(()=>{R=require("@swapkit/helpers"),N=require("ts-pattern")});var V={};p(V,{getSuiToolbox:()=>C,getSuiAddressValidator:()=>Q});module.exports=m(V);var B=D(()=>{T()});B();
2
-
3
- //# debugId=289A7918D59A503164756E2164756E21
4
- //# sourceMappingURL=index.cjs.map
1
+ var g=Object.create;var{getPrototypeOf:u,defineProperty:f,getOwnPropertyNames:I,getOwnPropertyDescriptor:l}=Object,E=Object.prototype.hasOwnProperty;function K(b){return this[b]}var d,c,G5=(b,O,W)=>{var L=b!=null&&typeof b==="object";if(L){var M=O?d??=new WeakMap:c??=new WeakMap,X=M.get(b);if(X)return X}W=b!=null?g(u(b)):{};let Y=O||!b||!b.__esModule?f(W,"default",{value:b,enumerable:!0}):W;for(let v of I(b))if(!E.call(Y,v))f(Y,v,{get:K.bind(b,v),enumerable:!0});if(L)M.set(b,Y);return Y},o=(b)=>{var O=(F??=new WeakMap).get(b),W;if(O)return O;if(O=f({},"__esModule",{value:!0}),b&&typeof b==="object"||typeof b==="function"){for(var L of I(b))if(!E.call(O,L))f(O,L,{get:K.bind(b,L),enumerable:!(W=l(b,L))||W.enumerable})}return F.set(b,O),O},F;var r=(b)=>b;function i(b,O){this[b]=r.bind(null,O)}var t=(b,O)=>{for(var W in O)f(b,W,{get:O[W],enumerable:!0,configurable:!0,set:i.bind(O,W)})};var w=(b,O)=>()=>(b&&(O=b(b=0)),O);async function h(b,O,W,L=[],M){let X=await b.getCoins({coinType:W,cursor:M,owner:O}),Y=[...L,...X.data];return X.hasNextPage?h(b,O,W,Y,X.nextCursor):Y}function n(b,O,W){let L=O.reduce((D,j)=>D+BigInt(j.balance),0n);if(L<W)throw new P.SwapKitError("toolbox_sui_insufficient_balance",{available:L.toString(),required:W.toString()});let{ids:M}=O.reduce((D,j)=>{if(D.total>=W)return D;return{ids:[...D.ids,j.coinObjectId],total:D.total+BigInt(j.balance)}},{ids:[],total:0n}),X=M[0],Y=M.slice(1);if(Y.length>0)b.mergeCoins(X,Y);let[v]=b.splitCoins(X,[W]);return v}function A(b){try{return y.isValidSuiAddress(b)}catch{return!1}}function x(b){return"signWithIntent"in b}function a({provider:b,...O}={}){let W;async function L(){if(W)return W;return W=await k.match(O).with({phrase:k.P.string},async({phrase:G})=>{let{Ed25519Keypair:R}=await import("@mysten/sui/keypairs/ed25519");return R.deriveKeypair(G)}).with({signer:k.P.any},({signer:G})=>G).otherwise(()=>{return}),W}async function M(G=b){let{SuiClient:R,getFullnodeUrl:z}=await import("@mysten/sui/client");return new R({url:G||z("mainnet")})}async function X(){return(await L())?.toSuiAddress()||""}function Y(G){try{let R=P.AssetValue.from({address:G,chain:P.Chain.Sui});return{asset:R.toString(),decimals:R.decimal}}catch{}return null}async function v(G){let R=G||await X();if(!R)throw new P.SwapKitError("toolbox_sui_address_required");let{baseDecimal:z,chain:J}=P.getChainConfig(P.Chain.Sui);try{let Z=await M(),{totalBalance:N}=await Z.getBalance({owner:R}),q=[P.AssetValue.from({chain:J,fromBaseDecimal:z,value:N})],Q=await Z.getAllBalances({owner:R});for(let{coinType:_,totalBalance:$}of Q){if(_==="0x2::sui::SUI"||Number($)<=0)continue;let U=Y(_);if(U)q.push(P.AssetValue.from({asset:U.asset,fromBaseDecimal:U.decimals,value:$}))}return q}catch{return[P.AssetValue.from({chain:J})]}}async function D(G){let R=P.AssetValue.from({chain:P.Chain.Sui,value:"0.01"});if(!G)return R;try{let z=await M(),{txBytes:J}=await j(G),{effects:{status:Z,gasUsed:N}}=await z.dryRunTransactionBlock({transactionBlock:J});if(Z.status!=="success")return R;let q=Number(N.computationCost)+Number(N.storageCost)-Number(N.storageRebate);return P.AssetValue.from({chain:P.Chain.Sui,value:q.toString()})}catch{return R}}async function j({recipient:G,assetValue:R,gasBudget:z,sender:J}){let{Transaction:Z}=await import("@mysten/sui/transactions"),N=J||await X();if(!N)throw new P.SwapKitError("toolbox_sui_no_sender");try{let q=new Z;if(q.setSender(N),R.isGasAsset||R.symbol==="SUI"){let[$]=q.splitCoins(q.gas,[R.getBaseValue("string")]);q.transferObjects([$],G)}else{let $=R.address;if(!$)throw new P.SwapKitError("toolbox_sui_missing_coin_type");let U=await M(),T=R.getBaseValue("bigint"),H=await h(U,N,$);if(!H.length)throw new P.SwapKitError("toolbox_sui_no_coins_found",{coinType:$});let C=n(q,H,T);q.transferObjects([C],G)}if(z)q.setGasBudget(z);let Q=await M(),_=await q.build({client:Q});return{tx:q,txBytes:_}}catch(q){if(q instanceof P.SwapKitError)throw q;throw new P.SwapKitError("toolbox_sui_transaction_creation_error",{error:q})}}async function V(G){let R=await L();if(!R)throw new P.SwapKitError("toolbox_sui_no_signer");if(G instanceof Uint8Array)return R.signTransaction(G);let{txBytes:z}="tx"in G?G:await j(G);return R.signTransaction(z)}async function S({assetValue:G,gasBudget:R,recipient:z}){let J=await L();if(!J)throw new P.SwapKitError("toolbox_sui_no_signer");let Z=J.toSuiAddress()||await X();if(!Z)throw new P.SwapKitError("toolbox_sui_no_sender");let{txBytes:N}=await j({assetValue:G,gasBudget:R,recipient:z,sender:Z}),q=await M();if(!x(J)){let _=await J.signTransaction(N),{digest:$}=await q.executeTransactionBlock({signature:_.signature,transactionBlock:_.bytes});return $}let{digest:Q}=await q.signAndExecuteTransaction({signer:J,transaction:N});return Q}async function B(G){let R=await M(),{digest:z}=await R.executeTransactionBlock({signature:G.signature,transactionBlock:G.bytes});return z}async function p(G){let R=await L();if(!R)throw new P.SwapKitError("toolbox_sui_no_signer");let z=await M(),J;if(typeof G==="string")J=Uint8Array.from(Buffer.from(G,"base64"));else if(G instanceof Uint8Array)J=G;else J=await G.build({client:z});if(!x(R)){let N=await R.signTransaction(J),{digest:q}=await z.executeTransactionBlock({signature:N.signature,transactionBlock:N.bytes});return q}let{digest:Z}=await z.signAndExecuteTransaction({signer:R,transaction:J});return Z}return{broadcastTransaction:B,createTransaction:j,estimateTransactionFee:D,getAddress:X,getBalance:v,signAndBroadcastTransaction:p,signTransaction:V,transfer:S,validateAddress:A}}var y,P,k;var m=w(()=>{y=require("@mysten/sui/utils"),P=require("@swapkit/helpers"),k=require("ts-pattern")});var e={};t(e,{validateSuiAddress:()=>A,getSuiToolbox:()=>a});module.exports=o(e);var b5=w(()=>{m()});b5();
@@ -1,4 +1 @@
1
- var S=Object.create;var{getPrototypeOf:o,defineProperty:v,getOwnPropertyNames:h}=Object;var m=Object.prototype.hasOwnProperty;var Z=(b,f,P)=>{P=b!=null?S(o(b)):{};let W=f||!b||!b.__esModule?v(P,"default",{value:b,enumerable:!0}):P;for(let z of h(b))if(!m.call(W,z))v(W,z,{get:()=>b[z],enumerable:!0});return W};var p=(b,f)=>{for(var P in f)v(b,P,{get:f[P],enumerable:!0,configurable:!0,set:(W)=>f[P]=()=>W})};var _=(b,f)=>()=>(b&&(f=b(b=0)),f);var $=((b)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(b,{get:(f,P)=>(typeof require<"u"?require:f)[P]}):b)(function(b){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+b+'" is not supported')});import{AssetValue as M,Chain as x,getChainConfig as C,SwapKitError as J}from"@swapkit/helpers";import{match as A,P as D}from"ts-pattern";async function Q(){let{isValidSuiAddress:b}=await import("@mysten/sui/utils");return function(P){try{return b(P)}catch{return!1}}}async function V({provider:b,...f}={}){let P=await Q(),W=await A(f).with({phrase:D.string},async({phrase:G})=>{let{Ed25519Keypair:R}=await import("@mysten/sui/keypairs/ed25519");return R.deriveKeypair(G)}).with({signer:D.any},({signer:G})=>G).otherwise(()=>{return});async function z(G=b){let{SuiClient:R,getFullnodeUrl:j}=await import("@mysten/sui/client");return new R({url:G||j("mainnet")})}function N(){return W?.toSuiAddress()||""}async function y(G){let R=G||N();if(!R)throw new J("toolbox_sui_address_required");let{baseDecimal:j,chain:k}=C(x.Sui);try{let I=await z(),{totalBalance:q}=await I.getBalance({owner:R}),O=[M.from({chain:k,fromBaseDecimal:j,value:q})],H=await I.getAllBalances({owner:R});for(let{coinType:L,totalBalance:Y}of H){if(L==="0x2::sui::SUI")continue;if(Number(Y)>0){let E=L.split("::").pop()?.toUpperCase()||"UNKNOWN",K=`${k}.${E}-${L}`;O.push(M.from({asset:K,fromBaseDecimal:j,value:Y}))}}return O}catch{return[M.from({chain:k})]}}async function U(G){let R=M.from({chain:x.Sui,value:"0.01"});if(!G)return R;try{let j=await z(),{txBytes:k}=await X(G),{effects:{status:I,gasUsed:q}}=await j.dryRunTransactionBlock({transactionBlock:k});if(I.status!=="success")return R;let O=Number(q.computationCost)+Number(q.storageCost)-Number(q.storageRebate);return M.from({chain:x.Sui,value:O.toString()})}catch{return R}}async function X({recipient:G,assetValue:R,gasBudget:j,sender:k}){let{Transaction:I}=await import("@mysten/sui/transactions"),q=k||N();if(!q)throw new J("toolbox_sui_no_sender");try{let O=new I;if(O.setSender(q),R.isGasAsset||R.symbol==="SUI"){let[Y]=O.splitCoins(O.gas,[R.getBaseValue("string")]);O.transferObjects([Y],G)}else throw new J("toolbox_sui_custom_token_transfer_not_implemented");if(j)O.setGasBudget(j);let H=await z(),L=await O.build({client:H});return{tx:O,txBytes:L}}catch(O){throw new J("toolbox_sui_transaction_creation_error",{error:O})}}async function F(G){if(!W)throw new J("toolbox_sui_no_signer");if(G instanceof Uint8Array)return W.signTransaction(G);let{txBytes:R}="tx"in G?G:await X(G);return W.signTransaction(R)}async function w({assetValue:G,gasBudget:R,recipient:j}){if(!W)throw new J("toolbox_sui_no_signer");let k=W.toSuiAddress()||N();if(!k)throw new J("toolbox_sui_no_sender");let{txBytes:I}=await X({assetValue:G,gasBudget:R,recipient:j,sender:k}),q=await z(),{digest:O}=await q.signAndExecuteTransaction({signer:W,transaction:I});return O}return{createTransaction:X,estimateTransactionFee:U,getAddress:N,getBalance:y,signTransaction:F,transfer:w,validateAddress:P}}var T=()=>{};var c={};p(c,{getSuiToolbox:()=>V,getSuiAddressValidator:()=>Q});var g=_(()=>{T()});g();export{V as getSuiToolbox,Q as getSuiAddressValidator};
2
-
3
- //# debugId=141CEF8B139E797464756E2164756E21
4
- //# sourceMappingURL=index.js.map
1
+ var p=Object.defineProperty;var T=(R)=>R;function C(R,P){this[R]=T.bind(null,P)}var g=(R,P)=>{for(var W in P)p(R,W,{get:P[W],enumerable:!0,configurable:!0,set:C.bind(P,W)})};var I=(R,P)=>()=>(R&&(P=R(R=0)),P);var H=((R)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(R,{get:(P,W)=>(typeof require<"u"?require:P)[W]}):R)(function(R){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+R+'" is not supported')});import{isValidSuiAddress as u}from"@mysten/sui/utils";import{AssetValue as _,Chain as f,getChainConfig as l,SwapKitError as X}from"@swapkit/helpers";import{match as d,P as E}from"ts-pattern";async function w(R,P,W,Z=[],L){let M=await R.getCoins({coinType:W,cursor:L,owner:P}),D=[...Z,...M.data];return M.hasNextPage?w(R,P,W,D,M.nextCursor):D}function c(R,P,W){let Z=P.reduce((j,$)=>j+BigInt($.balance),0n);if(Z<W)throw new X("toolbox_sui_insufficient_balance",{available:Z.toString(),required:W.toString()});let{ids:L}=P.reduce((j,$)=>{if(j.total>=W)return j;return{ids:[...j.ids,$.coinObjectId],total:j.total+BigInt($.balance)}},{ids:[],total:0n}),M=L[0],D=L.slice(1);if(D.length>0)R.mergeCoins(M,D);let[k]=R.splitCoins(M,[W]);return k}function x(R){try{return u(R)}catch{return!1}}function K(R){return"signWithIntent"in R}function o({provider:R,...P}={}){let W;async function Z(){if(W)return W;return W=await d(P).with({phrase:E.string},async({phrase:b})=>{let{Ed25519Keypair:G}=await import("@mysten/sui/keypairs/ed25519");return G.deriveKeypair(b)}).with({signer:E.any},({signer:b})=>b).otherwise(()=>{return}),W}async function L(b=R){let{SuiClient:G,getFullnodeUrl:q}=await import("@mysten/sui/client");return new G({url:b||q("mainnet")})}async function M(){return(await Z())?.toSuiAddress()||""}function D(b){try{let G=_.from({address:b,chain:f.Sui});return{asset:G.toString(),decimals:G.decimal}}catch{}return null}async function k(b){let G=b||await M();if(!G)throw new X("toolbox_sui_address_required");let{baseDecimal:q,chain:z}=l(f.Sui);try{let N=await L(),{totalBalance:J}=await N.getBalance({owner:G}),O=[_.from({chain:z,fromBaseDecimal:q,value:J})],Q=await N.getAllBalances({owner:G});for(let{coinType:v,totalBalance:Y}of Q){if(v==="0x2::sui::SUI"||Number(Y)<=0)continue;let U=D(v);if(U)O.push(_.from({asset:U.asset,fromBaseDecimal:U.decimals,value:Y}))}return O}catch{return[_.from({chain:z})]}}async function j(b){let G=_.from({chain:f.Sui,value:"0.01"});if(!b)return G;try{let q=await L(),{txBytes:z}=await $(b),{effects:{status:N,gasUsed:J}}=await q.dryRunTransactionBlock({transactionBlock:z});if(N.status!=="success")return G;let O=Number(J.computationCost)+Number(J.storageCost)-Number(J.storageRebate);return _.from({chain:f.Sui,value:O.toString()})}catch{return G}}async function $({recipient:b,assetValue:G,gasBudget:q,sender:z}){let{Transaction:N}=await import("@mysten/sui/transactions"),J=z||await M();if(!J)throw new X("toolbox_sui_no_sender");try{let O=new N;if(O.setSender(J),G.isGasAsset||G.symbol==="SUI"){let[Y]=O.splitCoins(O.gas,[G.getBaseValue("string")]);O.transferObjects([Y],b)}else{let Y=G.address;if(!Y)throw new X("toolbox_sui_missing_coin_type");let U=await L(),S=G.getBaseValue("bigint"),F=await w(U,J,Y);if(!F.length)throw new X("toolbox_sui_no_coins_found",{coinType:Y});let B=c(O,F,S);O.transferObjects([B],b)}if(q)O.setGasBudget(q);let Q=await L(),v=await O.build({client:Q});return{tx:O,txBytes:v}}catch(O){if(O instanceof X)throw O;throw new X("toolbox_sui_transaction_creation_error",{error:O})}}async function h(b){let G=await Z();if(!G)throw new X("toolbox_sui_no_signer");if(b instanceof Uint8Array)return G.signTransaction(b);let{txBytes:q}="tx"in b?b:await $(b);return G.signTransaction(q)}async function A({assetValue:b,gasBudget:G,recipient:q}){let z=await Z();if(!z)throw new X("toolbox_sui_no_signer");let N=z.toSuiAddress()||await M();if(!N)throw new X("toolbox_sui_no_sender");let{txBytes:J}=await $({assetValue:b,gasBudget:G,recipient:q,sender:N}),O=await L();if(!K(z)){let v=await z.signTransaction(J),{digest:Y}=await O.executeTransactionBlock({signature:v.signature,transactionBlock:v.bytes});return Y}let{digest:Q}=await O.signAndExecuteTransaction({signer:z,transaction:J});return Q}async function m(b){let G=await L(),{digest:q}=await G.executeTransactionBlock({signature:b.signature,transactionBlock:b.bytes});return q}async function V(b){let G=await Z();if(!G)throw new X("toolbox_sui_no_signer");let q=await L(),z;if(typeof b==="string")z=Uint8Array.from(Buffer.from(b,"base64"));else if(b instanceof Uint8Array)z=b;else z=await b.build({client:q});if(!K(G)){let J=await G.signTransaction(z),{digest:O}=await q.executeTransactionBlock({signature:J.signature,transactionBlock:J.bytes});return O}let{digest:N}=await q.signAndExecuteTransaction({signer:G,transaction:z});return N}return{broadcastTransaction:m,createTransaction:$,estimateTransactionFee:j,getAddress:M,getBalance:k,signAndBroadcastTransaction:V,signTransaction:h,transfer:A,validateAddress:x}}var y=()=>{};var i={};g(i,{validateSuiAddress:()=>x,getSuiToolbox:()=>o});var t=I(()=>{y()});t();export{x as validateSuiAddress,o as getSuiToolbox};
@@ -1,4 +1 @@
1
- var G=Object.create;var{getPrototypeOf:E,defineProperty:p,getOwnPropertyNames:N,getOwnPropertyDescriptor:F}=Object,O=Object.prototype.hasOwnProperty;var d=(t,n,o)=>{o=t!=null?G(E(t)):{};let s=n||!t||!t.__esModule?p(o,"default",{value:t,enumerable:!0}):o;for(let l of N(t))if(!O.call(s,l))p(s,l,{get:()=>t[l],enumerable:!0});return s},_=new WeakMap,I=(t)=>{var n=_.get(t),o;if(n)return n;if(n=p({},"__esModule",{value:!0}),t&&typeof t==="object"||typeof t==="function")N(t).map((s)=>!O.call(n,s)&&p(n,s,{get:()=>t[s],enumerable:!(o=F(t,s))||o.enumerable}));return _.set(t,n),n};var R=(t,n)=>{for(var o in n)p(t,o,{get:n[o],enumerable:!0,configurable:!0,set:(s)=>n[o]=()=>s})};var x=(t,n)=>()=>(t&&(n=t(t=0)),n);async function U(t={}){let{mnemonicToWalletKey:n}=await import("@ton/crypto"),{Address:o,TonClient:s,WalletContractV4:l}=await import("@ton/ton"),P=await b(),m,g,w=await u.match(t).with({phrase:u.P.string},async({phrase:r})=>n(r.split(" "))).with({signer:u.P.any},({signer:r})=>r).otherwise(()=>{return});function y(){let{rpcUrls:r}=e.getChainConfig(e.Chain.Ton),[a]=r;if(!m||m.parameters.endpoint!==a)m=new s({endpoint:a});return m}function T(r){if(!g||r){let a=y(),i=r||w;if(!i)throw new e.SwapKitError("core_wallet_connection_not_found");let c=l.create({publicKey:i.publicKey,workchain:0});g=a.open(c)}return g}async function A(r){let a=y(),{baseDecimal:i}=e.getChainConfig(e.Chain.Ton);try{let c=await a.getBalance(o.parse(r));return[e.AssetValue.from({chain:e.Chain.Ton,value:e.SwapKitNumber.fromBigInt(c,i)})]}catch{return[e.AssetValue.from({chain:e.Chain.Ton})]}}async function h({assetValue:r,recipient:a,memo:i}){let c=T();if(!c||!w)throw new e.SwapKitError("core_wallet_connection_not_found");let{toNano:f,comment:W,internal:B}=await import("@ton/ton"),D=await c.getSeqno(),k=f(r.getValue("string")),q=i?W(i):void 0;return c.createTransfer({messages:[B({body:q,to:a,value:k})],secretKey:w.secretKey,seqno:D})}async function S({assetValue:r,recipient:a,memo:i}){let c=T();if(!c||!w)throw new e.SwapKitError("core_wallet_connection_not_found");let f=await h({assetValue:r,memo:i,recipient:a});return await c.send(f),f.hash().toString()}async function v(r){let a=T();if(!a)throw new e.SwapKitError("core_wallet_connection_not_found");try{return await a.send(r),r.hash().toString("hex")}catch(i){throw new e.SwapKitError("core_wallet_connection_not_found",{error:i})}}function K(){return T().address.toString()}function V(){return Promise.resolve(e.AssetValue.from({chain:e.Chain.Ton,value:"0.0001"}))}return{createTransaction:h,estimateTransactionFee:V,getAddress:K,getBalance:A,sendTransaction:v,transfer:S,validateAddress:P}}async function b(){let{Address:t}=await import("@ton/ton");return function(o){try{return t.parse(o),!0}catch{return!1}}}var e,u;var C=x(()=>{e=require("@swapkit/helpers"),u=require("ts-pattern")});var z={};R(z,{getTONToolbox:()=>U,getTONAddressValidator:()=>b});module.exports=I(z);var H=x(()=>{C()});H();
2
-
3
- //# debugId=278D59F10A1344C764756E2164756E21
4
- //# sourceMappingURL=index.cjs.map
1
+ var tt=Object.create;var{getPrototypeOf:et,defineProperty:h,getOwnPropertyNames:I,getOwnPropertyDescriptor:nt}=Object,U=Object.prototype.hasOwnProperty;function j(t){return this[t]}var rt,st,At=(t,s,i)=>{var f=t!=null&&typeof t==="object";if(f){var g=s?rt??=new WeakMap:st??=new WeakMap,w=g.get(t);if(w)return w}i=t!=null?tt(et(t)):{};let u=s||!t||!t.__esModule?h(i,"default",{value:t,enumerable:!0}):i;for(let p of I(t))if(!U.call(u,p))h(u,p,{get:j.bind(t,p),enumerable:!0});if(f)g.set(t,u);return u},ot=(t)=>{var s=(G??=new WeakMap).get(t),i;if(s)return s;if(s=h({},"__esModule",{value:!0}),t&&typeof t==="object"||typeof t==="function"){for(var f of I(t))if(!U.call(s,f))h(s,f,{get:j.bind(t,f),enumerable:!(i=nt(t,f))||i.enumerable})}return G.set(t,s),s},G;var at=(t)=>t;function it(t,s){this[t]=at.bind(null,s)}var ct=(t,s)=>{for(var i in s)h(t,i,{get:s[i],enumerable:!0,configurable:!0,set:it.bind(s,i)})};var P=(t,s)=>()=>(t&&(s=t(t=0)),s);function Ct(){function t(){let s=Date.now(),i=E||s;return E=i,s>E?s:i+1}return dt+t().toString(36)}function J(t){return async function(i,f=!0){let g=await q.SwapKitApi.getChainBalance({address:i,chain:t,scamFilter:f}),{baseDecimal:w}=b.getChainConfig(t),u=g.map(({identifier:C,value:N,decimal:S})=>{return new b.AssetValue({decimal:S||w,identifier:C,value:N})});if(!u.some((C)=>C.isGasAsset))return[b.AssetValue.from({chain:t}),...u];return u}}var b,q,dt,E=0;var L=P(()=>{b=require("@swapkit/helpers"),q=require("@swapkit/helpers/api"),dt=typeof process<"u"&&process.pid?process.pid.toString(36):""});async function pt(){let t=Date.now();if(O&&t-k<gt)return O;try{return O=await Y.getHttpEndpoint(),k=t,O}catch{return a.getRPCUrl(a.Chain.Ton)}}function Tt(t={}){let s,i,f;async function g(){if(!s){let e=t.provider??await pt();s=new n.TonClient({endpoint:e})}return s}async function w(){return(await p()).address.toString()}async function u(){if(f)return f;return f=await m.match(t).with({phrase:m.P.string},async({phrase:e})=>H.mnemonicToWalletKey(e.split(" "))).with({signer:m.P.any},({signer:e})=>e).otherwise(()=>{return}),f}async function p(e){if(!i||e){let r=await u(),o=await g(),c=e||r;if(!c)throw new a.SwapKitError("core_wallet_connection_not_found");let d=n.WalletContractV4.create({publicKey:c.publicKey,workchain:0});i=o.open(d)}return i}let C=J(a.Chain.Ton);async function N({assetValue:e,recipient:r,memo:o,sender:c}){if(e.isGasAsset){let M=o?v(o).toBoc().toString("base64"):void 0;return[{address:r,amount:e.getBaseValue("string"),payload:M}]}let d=e.address;if(!d)throw new a.SwapKitError({errorKey:"core_swap_contract_not_found",info:{asset:e.toString()}});let l=c??await w(),T=await W({jettonMasterAddress:d,ownerAddress:l}),A=n.Address.parse(r),y=n.Address.parse(l),B=e.getBaseValue("bigint"),x=o?v(o):void 0,_=$({destinationAddress:A,forwardPayload:x,jettonAmount:B,responseAddress:y});return[{address:T.toString(),amount:ut.toString(),payload:_.toBoc().toString("base64")}]}function S({sender:e,...r}){return N({...r,sender:e})}function D(e){return e.map((r)=>{let o=r.payload?n.Cell.fromBase64(r.payload):void 0,c=r.stateInit?n.loadStateInit(n.Cell.fromBase64(r.stateInit).asSlice()):void 0,d=n.Address.parse(r.address),l=n.Address.isFriendly(r.address)?n.Address.parseFriendly(r.address).isBounceable:!0;return n.internal({body:o,bounce:l,init:c,to:d,value:BigInt(r.amount)})})}async function K(e){let r=await u(),o=await p();if(!o||!r)throw new a.SwapKitError("core_wallet_connection_not_found");let c=await g(),{state:d}=await c.getContractState(o.address),l=d==="active",T=l?await o.getSeqno():0,A=o.createTransfer({messages:D(e),secretKey:r.secretKey,sendMode:V,seqno:T}),y=n.external({body:A,init:l?void 0:o.init,to:o.address});return n.beginCell().store(n.storeMessage(y)).endCell()}async function F(e){return await(await g()).sendFile(e.toBoc()),e.hash().toString("hex")}async function R(e){let r=await K(e);return F(r)}async function X({assetValue:e,recipient:r,memo:o}){let c=await S({assetValue:e,memo:o,recipient:r});return R(c)}async function Z({sender:e,...r}){let{baseDecimal:o}=a.getChainConfig(a.Chain.Ton),c=await m.match(e).with(m.P.string,(T)=>{return n.Address.parseFriendly(T).address}).otherwise(async()=>{return(await p()).address});if(!c)throw new a.SwapKitError("toolbox_fee_estimation_failed",{chain:a.Chain.Ton});let d=a.AssetValue.from({chain:a.Chain.Ton,value:"0.01"}),l=await g();try{let T=await S({sender:e,...r}),A=await u(),y=await p();if(!y||!A)return d;let B=await y.getSeqno(),x=y.createTransfer({messages:D(T),secretKey:A.secretKey,sendMode:V,seqno:B}),{source_fees:_}=await l.estimateExternalMessageFee(c,{body:x,ignoreSignature:!0,initCode:null,initData:null}),M=_.in_fwd_fee+_.storage_fee+_.gas_fee+_.fwd_fee;return d.set(a.SwapKitNumber.fromBigInt(BigInt(M),o))}catch{return d}}async function W({jettonMasterAddress:e,ownerAddress:r}){try{let o=await g(),c=n.Address.parse(e),d=n.Address.parse(r);return await o.open(n.JettonMaster.create(c)).getWalletAddress(d)}catch{throw new a.SwapKitError({errorKey:"core_swap_contract_not_found",info:{jettonMasterAddress:e,ownerAddress:r}})}}function $({jettonAmount:e,destinationAddress:r,responseAddress:o,forwardAmount:c=ft,forwardPayload:d}){let l=n.beginCell().storeUint(lt,32).storeUint(0,64).storeCoins(e).storeAddress(r).storeAddress(o).storeBit(0).storeCoins(c);if(d)l.storeBit(1).storeRef(d);else l.storeBit(0);return l.endCell()}function v(e){return n.beginCell().storeUint(0,32).storeStringTail(e).endCell()}return{broadcastTransaction:F,createTransaction:S,estimateTransactionFee:Z,getAddress:w,getBalance:C,getJettonWalletAddress:W,sign:K,signAndBroadcastTransaction:R,transfer:X,validateAddress:z}}function z(t){try{return n.Address.parse(t),!0}catch{return!1}}var Y,a,H,n,m,lt=260734629,ft,ut,V,gt=60000,O,k=0;var Q=P(()=>{L();Y=require("@orbs-network/ton-access"),a=require("@swapkit/helpers"),H=require("@ton/crypto"),n=require("@ton/ton"),m=require("ts-pattern"),ft=n.toNano("0.01"),ut=n.toNano("0.05"),V=n.SendMode.PAY_GAS_SEPARATELY+n.SendMode.IGNORE_ERRORS});var yt={};ct(yt,{validateTonAddress:()=>z,getTONToolbox:()=>Tt});module.exports=ot(yt);var mt=P(()=>{Q()});mt();
@@ -1,4 +1 @@
1
- var E=Object.create;var{getPrototypeOf:F,defineProperty:y,getOwnPropertyNames:I}=Object;var R=Object.prototype.hasOwnProperty;var T=(t,n,r)=>{r=t!=null?E(F(t)):{};let i=n||!t||!t.__esModule?y(r,"default",{value:t,enumerable:!0}):r;for(let c of I(t))if(!R.call(i,c))y(i,c,{get:()=>t[c],enumerable:!0});return i};var U=(t,n)=>{for(var r in n)y(t,r,{get:n[r],enumerable:!0,configurable:!0,set:(i)=>n[r]=()=>i})};var O=(t,n)=>()=>(t&&(n=t(t=0)),n);var d=((t)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(n,r)=>(typeof require<"u"?require:n)[r]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});import{AssetValue as h,Chain as f,getChainConfig as x,SwapKitError as p,SwapKitNumber as j}from"@swapkit/helpers";import{match as z,P as b}from"ts-pattern";async function H(t={}){let{mnemonicToWalletKey:n}=await import("@ton/crypto"),{Address:r,TonClient:i,WalletContractV4:c}=await import("@ton/ton"),A=await C(),u,g,m=await z(t).with({phrase:b.string},async({phrase:e})=>n(e.split(" "))).with({signer:b.any},({signer:e})=>e).otherwise(()=>{return});function _(){let{rpcUrls:e}=x(f.Ton),[o]=e;if(!u||u.parameters.endpoint!==o)u=new i({endpoint:o});return u}function w(e){if(!g||e){let o=_(),a=e||m;if(!a)throw new p("core_wallet_connection_not_found");let s=c.create({publicKey:a.publicKey,workchain:0});g=o.open(s)}return g}async function S(e){let o=_(),{baseDecimal:a}=x(f.Ton);try{let s=await o.getBalance(r.parse(e));return[h.from({chain:f.Ton,value:j.fromBigInt(s,a)})]}catch{return[h.from({chain:f.Ton})]}}async function N({assetValue:e,recipient:o,memo:a}){let s=w();if(!s||!m)throw new p("core_wallet_connection_not_found");let{toNano:l,comment:B,internal:D}=await import("@ton/ton"),k=await s.getSeqno(),q=l(e.getValue("string")),G=a?B(a):void 0;return s.createTransfer({messages:[D({body:G,to:o,value:q})],secretKey:m.secretKey,seqno:k})}async function v({assetValue:e,recipient:o,memo:a}){let s=w();if(!s||!m)throw new p("core_wallet_connection_not_found");let l=await N({assetValue:e,memo:a,recipient:o});return await s.send(l),l.hash().toString()}async function K(e){let o=w();if(!o)throw new p("core_wallet_connection_not_found");try{return await o.send(e),e.hash().toString("hex")}catch(a){throw new p("core_wallet_connection_not_found",{error:a})}}function V(){return w().address.toString()}function W(){return Promise.resolve(h.from({chain:f.Ton,value:"0.0001"}))}return{createTransaction:N,estimateTransactionFee:W,getAddress:V,getBalance:S,sendTransaction:K,transfer:v,validateAddress:A}}async function C(){let{Address:t}=await import("@ton/ton");return function(r){try{return t.parse(r),!0}catch{return!1}}}var P=()=>{};var L={};U(L,{getTONToolbox:()=>H,getTONAddressValidator:()=>C});var M=O(()=>{P()});M();export{H as getTONToolbox,C as getTONAddressValidator};
2
-
3
- //# debugId=C1523C849ED6973D64756E2164756E21
4
- //# sourceMappingURL=index.js.map
1
+ var Z=Object.defineProperty;var $=(n)=>n;function tt(n,s){this[n]=$.bind(null,s)}var et=(n,s)=>{for(var c in s)Z(n,c,{get:s[c],enumerable:!0,configurable:!0,set:tt.bind(s,c)})};var x=(n,s)=>()=>(n&&(s=n(n=0)),s);var Bt=((n)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(n,{get:(s,c)=>(typeof require<"u"?require:s)[c]}):n)(function(n){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+n+'" is not supported')});import{AssetValue as G,getChainConfig as nt}from"@swapkit/helpers";import{SwapKitApi as rt}from"@swapkit/helpers/api";function Et(){function n(){let s=Date.now(),c=M||s;return M=c,s>M?s:c+1}return st+n().toString(36)}function I(n){return async function(c,p=!0){let f=await rt.getChainBalance({address:c,chain:n,scamFilter:p}),{baseDecimal:S}=nt(n),u=f.map(({identifier:m,value:b,decimal:A})=>{return new G({decimal:A||S,identifier:m,value:b})});if(!u.some((m)=>m.isGasAsset))return[G.from({chain:n}),...u];return u}}var st,M=0;var U=x(()=>{st=typeof process<"u"&&process.pid?process.pid.toString(36):""});import{getHttpEndpoint as ot}from"@orbs-network/ton-access";import{AssetValue as at,Chain as C,getChainConfig as it,getRPCUrl as ct,SwapKitError as _,SwapKitNumber as dt}from"@swapkit/helpers";import{mnemonicToWalletKey as lt}from"@ton/crypto";import{Address as d,beginCell as P,Cell as j,external as ft,internal as ut,JettonMaster as gt,loadStateInit as pt,SendMode as q,storeMessage as Tt,TonClient as wt,toNano as k,WalletContractV4 as yt}from"@ton/ton";import{match as J,P as E}from"ts-pattern";async function St(){let n=Date.now();if(h&&n-V<Ct)return h;try{return h=await ot(),V=n,h}catch{return ct(C.Ton)}}function ht(n={}){let s,c,p;async function f(){if(!s){let t=n.provider??await St();s=new wt({endpoint:t})}return s}async function S(){return(await y()).address.toString()}async function u(){if(p)return p;return p=await J(n).with({phrase:E.string},async({phrase:t})=>lt(t.split(" "))).with({signer:E.any},({signer:t})=>t).otherwise(()=>{return}),p}async function y(t){if(!c||t){let e=await u(),r=await f(),o=t||e;if(!o)throw new _("core_wallet_connection_not_found");let a=yt.create({publicKey:o.publicKey,workchain:0});c=r.open(a)}return c}let m=I(C.Ton);async function b({assetValue:t,recipient:e,memo:r,sender:o}){if(t.isGasAsset){let B=r?v(r).toBoc().toString("base64"):void 0;return[{address:e,amount:t.getBaseValue("string"),payload:B}]}let a=t.address;if(!a)throw new _({errorKey:"core_swap_contract_not_found",info:{asset:t.toString()}});let i=o??await S(),l=await W({jettonMasterAddress:a,ownerAddress:i}),T=d.parse(e),g=d.parse(i),O=t.getBaseValue("bigint"),N=r?v(r):void 0,w=X({destinationAddress:T,forwardPayload:N,jettonAmount:O,responseAddress:g});return[{address:l.toString(),amount:_t.toString(),payload:w.toBoc().toString("base64")}]}function A({sender:t,...e}){return b({...e,sender:t})}function D(t){return t.map((e)=>{let r=e.payload?j.fromBase64(e.payload):void 0,o=e.stateInit?pt(j.fromBase64(e.stateInit).asSlice()):void 0,a=d.parse(e.address),i=d.isFriendly(e.address)?d.parseFriendly(e.address).isBounceable:!0;return ut({body:r,bounce:i,init:o,to:a,value:BigInt(e.amount)})})}async function K(t){let e=await u(),r=await y();if(!r||!e)throw new _("core_wallet_connection_not_found");let o=await f(),{state:a}=await o.getContractState(r.address),i=a==="active",l=i?await r.getSeqno():0,T=r.createTransfer({messages:D(t),secretKey:e.secretKey,sendMode:L,seqno:l}),g=ft({body:T,init:i?void 0:r.init,to:r.address});return P().store(Tt(g)).endCell()}async function F(t){return await(await f()).sendFile(t.toBoc()),t.hash().toString("hex")}async function R(t){let e=await K(t);return F(e)}async function z({assetValue:t,recipient:e,memo:r}){let o=await A({assetValue:t,memo:r,recipient:e});return R(o)}async function Q({sender:t,...e}){let{baseDecimal:r}=it(C.Ton),o=await J(t).with(E.string,(l)=>{return d.parseFriendly(l).address}).otherwise(async()=>{return(await y()).address});if(!o)throw new _("toolbox_fee_estimation_failed",{chain:C.Ton});let a=at.from({chain:C.Ton,value:"0.01"}),i=await f();try{let l=await A({sender:t,...e}),T=await u(),g=await y();if(!g||!T)return a;let O=await g.getSeqno(),N=g.createTransfer({messages:D(l),secretKey:T.secretKey,sendMode:L,seqno:O}),{source_fees:w}=await i.estimateExternalMessageFee(o,{body:N,ignoreSignature:!0,initCode:null,initData:null}),B=w.in_fwd_fee+w.storage_fee+w.gas_fee+w.fwd_fee;return a.set(dt.fromBigInt(BigInt(B),r))}catch{return a}}async function W({jettonMasterAddress:t,ownerAddress:e}){try{let r=await f(),o=d.parse(t),a=d.parse(e);return await r.open(gt.create(o)).getWalletAddress(a)}catch{throw new _({errorKey:"core_swap_contract_not_found",info:{jettonMasterAddress:t,ownerAddress:e}})}}function X({jettonAmount:t,destinationAddress:e,responseAddress:r,forwardAmount:o=At,forwardPayload:a}){let i=P().storeUint(mt,32).storeUint(0,64).storeCoins(t).storeAddress(e).storeAddress(r).storeBit(0).storeCoins(o);if(a)i.storeBit(1).storeRef(a);else i.storeBit(0);return i.endCell()}function v(t){return P().storeUint(0,32).storeStringTail(t).endCell()}return{broadcastTransaction:F,createTransaction:A,estimateTransactionFee:Q,getAddress:S,getBalance:m,getJettonWalletAddress:W,sign:K,signAndBroadcastTransaction:R,transfer:z,validateAddress:Y}}function Y(n){try{return d.parse(n),!0}catch{return!1}}var mt=260734629,At,_t,L,Ct=60000,h,V=0;var H=x(()=>{U();At=k("0.01"),_t=k("0.05"),L=q.PAY_GAS_SEPARATELY+q.IGNORE_ERRORS});var Ot={};et(Ot,{validateTonAddress:()=>Y,getTONToolbox:()=>ht});var Nt=x(()=>{H()});Nt();export{Y as validateTonAddress,ht as getTONToolbox};
@@ -1,4 +1 @@
1
- var Qy=Object.create;var{getPrototypeOf:Zy,defineProperty:P,getOwnPropertyNames:l,getOwnPropertyDescriptor:$y}=Object,A=Object.prototype.hasOwnProperty;var m=(f,Q,j)=>{j=f!=null?Qy(Zy(f)):{};let $=Q||!f||!f.__esModule?P(j,"default",{value:f,enumerable:!0}):j;for(let M of l(f))if(!A.call($,M))P($,M,{get:()=>f[M],enumerable:!0});return $},b=new WeakMap,jy=(f)=>{var Q=b.get(f),j;if(Q)return Q;if(Q=P({},"__esModule",{value:!0}),f&&typeof f==="object"||typeof f==="function")l(f).map(($)=>!A.call(Q,$)&&P(Q,$,{get:()=>f[$],enumerable:!(j=$y(f,$))||j.enumerable}));return b.set(f,Q),Q};var Yy=(f,Q)=>{for(var j in Q)P(f,j,{get:Q[j],enumerable:!0,configurable:!0,set:($)=>Q[j]=()=>$})};var R=(f,Q)=>()=>(f&&(Q=f(f=0)),Q);var C;var T=R(()=>{C=[{constant:!0,inputs:[{name:"_owner",type:"address"}],name:"balanceOf",outputs:[{name:"balance",type:"uint256"}],stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_to",type:"address"},{name:"_value",type:"uint256"}],name:"transfer",outputs:[{name:"success",type:"bool"}],stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"decimals",outputs:[{name:"",type:"uint8"}],stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"symbol",outputs:[{name:"",type:"string"}],stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"name",outputs:[{name:"",type:"string"}],stateMutability:"view",type:"function"},{constant:!0,inputs:[{name:"_owner",type:"address"},{name:"_spender",type:"address"}],name:"allowance",outputs:[{name:"remaining",type:"uint256"}],stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_spender",type:"address"},{name:"_value",type:"uint256"}],name:"approve",outputs:[{name:"success",type:"bool"}],stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"totalSupply",outputs:[{name:"",type:"uint256"}],stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_from",type:"address"},{name:"_to",type:"address"},{name:"_value",type:"uint256"}],name:"transferFrom",outputs:[{name:"success",type:"bool"}],stateMutability:"nonpayable",type:"function"},{anonymous:!1,inputs:[{indexed:!0,name:"_from",type:"address"},{indexed:!0,name:"_to",type:"address"},{indexed:!1,name:"_value",type:"uint256"}],name:"Transfer",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"_owner",type:"address"},{indexed:!0,name:"_spender",type:"address"},{indexed:!1,name:"_value",type:"uint256"}],name:"Approval",type:"event"}]});async function i(f){let Q=await import("tronweb"),j=Q.TronWeb??Q.default?.TronWeb;try{let $=await fetch(`${Xy}/v1/accounts/${f}`);if(!$.ok)throw Error(`TronGrid API error: ${$.status} ${$.statusText}`);let M=await $.json();if(!(M.success&&M.data)||M.data.length===0)throw Error("Invalid response from TronGrid API");let Z;try{Z=j.address.toHex(f).toLowerCase()}catch{Z=f.toLowerCase()}let v=M.data.find((k)=>{return k.address.toLowerCase()===Z});if(!v)return;return{balance:v.balance,trc20:v.trc20||[]}}catch($){throw new h.SwapKitError("toolbox_tron_trongrid_api_error",{address:f,message:$ instanceof Error?$.message:"Unknown error"})}}var h,Xy="https://api.trongrid.io";var n=R(()=>{h=require("@swapkit/helpers")});async function N(){let f=await import("tronweb"),Q=f.TronWeb??f.default?.TronWeb;return(j)=>{return Q.isAddress(j)}}async function c({phrase:f,derivationPath:Q,index:j}){let $=Q||y.derivationPathToString(y.updateDerivationPath(y.NetworkDerivationPath[y.Chain.Tron],{index:j||0})),{HDKey:M}=await import("@scure/bip32"),{mnemonicToSeedSync:Z}=await import("@scure/bip39"),v=Z(f),X=M.fromMasterSeed(v).derive($);if(!X.privateKey)throw new y.SwapKitError("toolbox_tron_no_signer");return Buffer.from(X.privateKey).toString("hex")}async function Iy({phrase:f,derivationPath:Q,tronWeb:j}){let{HDKey:$}=await import("@scure/bip32"),{mnemonicToSeedSync:M}=await import("@scure/bip39"),Z=M(f),k=$.fromMasterSeed(Z).derive(Q);if(!k.privateKey)throw new y.SwapKitError("toolbox_tron_no_signer");let X=Buffer.from(k.privateKey).toString("hex");j.setPrivateKey(X);let F=j?.address.fromPrivateKey(X);return{getAddress:()=>Promise.resolve(typeof F==="string"?F:""),signTransaction:async(V)=>{return await j.trx.sign(V,X)}}}var y,x,Gy=268,Ly=13000,My=345,t="TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",Uy="0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",o=async(f={})=>{let Q=await import("tronweb"),j=Q.TronWeb??Q.default?.TronWeb,$=await y.getRPCUrl(y.Chain.Tron),M=void 0,Z=new j({fullHost:$,headers:void 0}),v="index"in f?f.index||0:0,k=y.derivationPathToString("derivationPath"in f&&f.derivationPath?f.derivationPath:y.updateDerivationPath(y.NetworkDerivationPath[y.Chain.Tron],{index:v})),X=await x.match(f).with({phrase:x.P.string},async({phrase:q})=>Iy({derivationPath:k,phrase:q,tronWeb:Z})).with({signer:x.P.any},({signer:q})=>Promise.resolve(q)).otherwise(()=>Promise.resolve(void 0)),F=async()=>{if(!X)throw new y.SwapKitError("toolbox_tron_no_signer");return await X.getAddress()},V=()=>{return 1e8},D=async()=>{try{let q=await Z.trx.getChainParameters(),z={};for(let _ of q)z[_.key]=_.value;return{bandwidthFee:z.getTransactionFee||1000,createAccountFee:z.getCreateAccountFee||1e5,energyFee:z.getEnergyFee||420}}catch{return{bandwidthFee:1000,createAccountFee:1e5,energyFee:420}}},s=async(q)=>{try{let z=await Z.trx.getAccount(q);return z&&Object.keys(z).length>0}catch{return!1}},a=async(q)=>{try{let z=await Z.trx.getAccountResources(q);return{bandwidth:{free:z.freeNetLimit-z.freeNetUsed,total:z.NetLimit||0,used:z.NetUsed||0},energy:{total:z.EnergyLimit||0,used:z.EnergyUsed||0}}}catch{return{bandwidth:{free:600,total:0,used:0},energy:{total:0,used:0}}}},e=async(q,z)=>{try{let _=Z.contract(C,z);if(!_.methods?.balanceOf)return 0n;let[J]=await _.methods.balanceOf(q).call();return J?typeof J==="bigint"?J:BigInt(J):0n}catch(_){let J=_ instanceof Error?_.message:String(_);return console.warn(`balanceOf() failed for ${z}: ${J}`),0n}},r=async(q,z)=>{try{Z.setAddress(z);let _=Z.contract(C,q),[J,u]=await Promise.all([_.symbol().call().catch(()=>"UNKNOWN"),_.decimals().call().catch(()=>"18")]);return{decimals:Number(u??18),symbol:J??"UNKNOWN"}}catch(_){return y.warnOnce({condition:!0,id:"tron_toolbox_get_token_metadata_failed",warning:`Failed to get token metadata for ${q}: ${_ instanceof Error?_.message:_}`}),null}},yy=async(q,z=!0)=>{let _=[y.AssetValue.from({chain:y.Chain.Tron})];try{let J=await i(q);if(J){let u=[];u.push(y.AssetValue.from({chain:y.Chain.Tron,fromBaseDecimal:6,value:J.balance}));for(let Y of J.trc20){let[U,I]=Object.entries(Y)[0]||[];if(!(U&&I))continue;let G=await r(U,q);if(!G)continue;u.push(y.AssetValue.from({asset:`TRON.${G.symbol}-${U}`,fromBaseDecimal:G.decimals,value:BigInt(I||0)}))}return u}return _}catch(J){y.warnOnce({condition:!0,id:"tron_toolbox_get_balance_failed",warning:`Tron API getBalance failed: ${J instanceof Error?J.message:J}`});try{let u=[],Y=await Z.trx.getBalance(q);if(Y&&Number(Y)>0)u.push(y.AssetValue.from({chain:y.Chain.Tron,fromBaseDecimal:6,value:Y}));let U=await e(q,t);if(U)u.push(y.AssetValue.from({asset:`TRON.USDT-${t}`,fromBaseDecimal:6,value:U}));if(u.length===0)return _;return u}catch(u){let Y=u instanceof Error?u.message:String(u);return console.error(`Tron balance fetch failed: ${Y}`),_}}},fy=async({recipient:q,assetValue:z,memo:_,expiration:J})=>{if(!X)throw new y.SwapKitError("toolbox_tron_no_signer");let u=await F();Z.setAddress(u);let Y=await E({assetValue:z,expiration:J,memo:_,recipient:q,sender:u}),U=await X.signTransaction(Y),{txid:I}=await Z.trx.sendRawTransaction(U);if(!I)throw new y.SwapKitError("toolbox_tron_token_transfer_failed");return I},uy=async({assetValue:q,recipient:z,sender:_})=>{let J=q.isGasAsset;try{let u=_?_:X?await F():void 0;if(!u)return J?y.AssetValue.from({chain:y.Chain.Tron,fromBaseDecimal:0,value:0.1}):y.AssetValue.from({chain:y.Chain.Tron,fromBaseDecimal:0,value:15});let Y=await D(),I=await s(z)?0:Y.createAccountFee,G=await a(u);if(J){let B=Gy,w=G.bandwidth.free+(G.bandwidth.total-G.bandwidth.used),W=0;if(B>w)W=(B-w)*Y.bandwidthFee;let Jy=I+W;return y.AssetValue.from({chain:y.Chain.Tron,fromBaseDecimal:y.BaseDecimal.TRON,value:Jy})}let L=My,O=Ly,p=G.bandwidth.free+(G.bandwidth.total-G.bandwidth.used),H=G.energy.total-G.energy.used,K=0;if(L>p)K=(L-p)*Y.bandwidthFee;let g=0;if(O>H)g=(O-H)*Y.energyFee;let zy=I+K+g;return y.AssetValue.from({chain:y.Chain.Tron,fromBaseDecimal:y.BaseDecimal.TRON,value:zy})}catch(u){throw y.warnOnce({condition:!0,id:"tron_toolbox_fee_estimation_failed",warning:`Failed to calculate exact fee, using conservative estimate: ${u instanceof Error?u.message:u}`}),new y.SwapKitError("toolbox_tron_fee_estimation_failed",{error:u})}},E=async(q)=>{let{recipient:z,assetValue:_,memo:J,sender:u,expiration:Y}=q,U=_.isGasAsset,I=async({transaction:L,memo:O,expiration:p})=>{let H=O?await Z.transactionBuilder.addUpdateData(L,O,"utf8"):L;return p?await Z.transactionBuilder.extendExpiration(H,p):H};if(U){let L=await Z.transactionBuilder.sendTrx(z,_.getBaseValue("number"),u);return I({expiration:Y,memo:J,transaction:L})}Z.setAddress(u);let G=_.address;if(!G)throw new y.SwapKitError("toolbox_tron_invalid_token_identifier",{identifier:_.toString()});try{let O=[{type:"address",value:z},{type:"uint256",value:_.getBaseValue("string")}],p={callValue:0,feeLimit:V()},{transaction:H}=await Z.transactionBuilder.triggerSmartContract(G,"transfer(address,uint256)",p,O,u);return I({expiration:Y,memo:J,transaction:H})}catch(L){throw new y.SwapKitError("toolbox_tron_transaction_creation_failed",{message:"Failed to create TRC20 transaction.",originalError:L instanceof Error?L.message:String(L)})}},_y=async(q)=>{if(!X)throw new y.SwapKitError("toolbox_tron_no_signer");return await X.signTransaction(q)},qy=async(q)=>{let{txid:z}=await Z.trx.sendRawTransaction(q);return z},S=async({assetAddress:q,spenderAddress:z,from:_})=>{try{let J=Z.contract(C,q);if(!J.methods?.allowance)throw new y.SwapKitError("toolbox_tron_invalid_token_contract");let[u]=await J.methods.allowance(_,z).call();return u?typeof u==="bigint"?u:BigInt(u):0n}catch(J){throw new y.SwapKitError("toolbox_tron_allowance_check_failed",{error:J})}};return{approve:async({assetAddress:q,spenderAddress:z,amount:_,from:J})=>{if(!X)throw new y.SwapKitError("toolbox_tron_no_signer");let u=J||await F(),Y=_!==void 0?BigInt(_).toString():Uy,U="approve(address,uint256)",I=[{type:"address",value:z},{type:"uint256",value:Y}],L={callValue:0,feeLimit:V()};try{let{transaction:O}=await Z.transactionBuilder.triggerSmartContract(q,U,L,I,u),p=await X.signTransaction(O),{txid:H}=await Z.trx.sendRawTransaction(p);if(!H)throw new y.SwapKitError("toolbox_tron_approve_failed");return H}catch(O){throw new y.SwapKitError("toolbox_tron_approve_failed",{error:O})}},broadcastTransaction:qy,createTransaction:E,estimateTransactionFee:uy,getAddress:F,getApprovedAmount:S,getBalance:yy,isApproved:async({assetAddress:q,spenderAddress:z,from:_,amount:J})=>{let u=await S({assetAddress:q,from:_,spenderAddress:z});if(!J)return u>0n;let Y=BigInt(J);return u>=Y},signTransaction:_y,transfer:fy,tronWeb:Z,validateAddress:await N()}};var d=R(()=>{T();n();y=require("@swapkit/helpers"),x=require("ts-pattern")});var Oy={};Yy(Oy,{trc20ABI:()=>C,getTronPrivateKeyFromMnemonic:()=>c,getTronAddressValidator:()=>N,createTronToolbox:()=>o});module.exports=jy(Oy);var Hy=R(()=>{T();d()});Hy();
2
-
3
- //# debugId=6E77A5831EA5D5DE64756E2164756E21
4
- //# sourceMappingURL=index.cjs.map
1
+ var Vn=Object.create;var{getPrototypeOf:bn,defineProperty:j,getOwnPropertyNames:on,getOwnPropertyDescriptor:yn}=Object,tn=Object.prototype.hasOwnProperty;function rn(n){return this[n]}var Hn,Ln,hi=(n,i,o)=>{var t=n!=null&&typeof n==="object";if(t){var a=i?Hn??=new WeakMap:Ln??=new WeakMap,g=a.get(n);if(g)return g}o=n!=null?Vn(bn(n)):{};let m=i||!n||!n.__esModule?j(o,"default",{value:n,enumerable:!0}):o;for(let w of on(n))if(!tn.call(m,w))j(m,w,{get:rn.bind(n,w),enumerable:!0});if(t)a.set(n,m);return m},dn=(n)=>{var i=(nn??=new WeakMap).get(n),o;if(i)return i;if(i=j({},"__esModule",{value:!0}),n&&typeof n==="object"||typeof n==="function"){for(var t of on(n))if(!tn.call(i,t))j(i,t,{get:rn.bind(n,t),enumerable:!(o=yn(n,t))||o.enumerable})}return nn.set(n,i),i},nn;var ln=(n)=>n;function In(n,i){this[n]=ln.bind(null,i)}var pn=(n,i)=>{for(var o in i)j(n,o,{get:i[o],enumerable:!0,configurable:!0,set:In.bind(i,o)})};var X=(n,i)=>()=>(n&&(i=n(n=0)),i);function K(n,i){let o=0n,t=0n,a=i;while(a<n.length&&a-i<10){let g=n[a++];if(g===void 0)break;if(o|=BigInt(g&127)<<t,t+=7n,(g&128)===0)return[o,a]}throw new C.SwapKitError("toolbox_tron_transaction_creation_failed")}function M(n){let i=[],o=n<0n?n+2n**64n:n;while(o>=128n)i.push(Number(o&0x7fn)|128),o>>=7n;return i.push(Number(o)),i}function B(n,i,o){let t=n.get(i);if(t)t.push(o);else n.set(i,[o])}function ii(n){let i=new Map,o=0;while(o<n.length){let[t,a]=K(n,o);o=a;let g=Number(t>>3n),m=Number(t&7n);if(m===A){let[w,_]=K(n,o);o=_,B(i,g,{data:new Uint8Array(M(w)),wireType:A})}else if(m===W){let[w,_]=K(n,o);o=_;let $=Number(w);if($<0||o+$>n.length)throw new C.SwapKitError("toolbox_tron_transaction_creation_failed");let D=n.slice(o,o+$);o+=$,B(i,g,{data:D,wireType:W})}else if(m===an){if(o+8>n.length)throw new C.SwapKitError("toolbox_tron_transaction_creation_failed");let w=n.slice(o,o+8);o+=8,B(i,g,{data:w,wireType:an})}else if(m===cn){if(o+4>n.length)throw new C.SwapKitError("toolbox_tron_transaction_creation_failed");let w=n.slice(o,o+4);o+=4,B(i,g,{data:w,wireType:cn})}else throw new C.SwapKitError("toolbox_tron_transaction_creation_failed")}return i}function oi(n){let i=[];for(let[g,m]of[...n.entries()].sort(([w],[_])=>w-_))for(let{wireType:w,data:_}of m){let $=BigInt(g<<3|w);if(i.push(new Uint8Array(M($))),w===W)i.push(new Uint8Array(M(BigInt(_.length))));i.push(_)}let o=i.reduce((g,m)=>g+m.length,0),t=new Uint8Array(o),a=0;for(let g of i)t.set(g,a),a+=g.length;return t}function gn(n,i){if(!n||n.length%2!==0)throw new C.SwapKitError("toolbox_tron_transaction_creation_failed");let o=Q.hexToBytes(n),t=ii(o);if(i.expiration!==void 0)t.set(En,[{data:new Uint8Array(M(BigInt(i.expiration))),wireType:A}]);if(i.data!==void 0)t.set(sn,[{data:Q.hexToBytes(i.data),wireType:W}]);if(i.fee_limit!==void 0)t.set(ni,[{data:new Uint8Array(M(BigInt(i.fee_limit))),wireType:A}]);let a=oi(t),g=Q.bytesToHex(a),m=Q.bytesToHex(fn.sha256(a));return{raw_data_hex:g,txID:m}}var fn,Q,C,A=0,an=1,W=2,cn=5,En=8,sn=10,ni=18;var mn=X(()=>{fn=require("@noble/hashes/sha2.js"),Q=require("@noble/hashes/utils.js"),C=require("@swapkit/helpers")});function q(n){if(typeof n!=="string")return!1;try{let i=S.decode(n);return i.length===21&&i[0]===Pn}catch{return!1}}function wn(n){return F.bytesToHex(S.decode(n))}function ri(n){return S.decode(n).slice(1)}function _n(n){let i=N.secp256k1.getPublicKey(F.hexToBytes(n),!1),o=Tn.keccak_256(i.slice(1)).slice(-20),t=new Uint8Array(21);return t[0]=Pn,t.set(o,1),S.encode(t)}function vn({txID:n,privateKey:i}){let o=N.secp256k1.sign(F.hexToBytes(n),F.hexToBytes(i),{format:"recovered",prehash:!1}),t=o[0]??0,a=F.bytesToHex(o.slice(1,33)),g=F.bytesToHex(o.slice(33,65)),m=(t+27).toString(16).padStart(2,"0");return a+g+m}function Y({txID:n,raw_data_hex:i}){let o=F.bytesToHex(R.sha256(F.hexToBytes(i)));if(n!==o)throw new V.SwapKitError("toolbox_tron_token_transfer_failed")}function ai(n){return`000000000000000000000000${F.bytesToHex(ri(n))}`}function ci(n){let i=typeof n==="bigint"?n:BigInt(n);if(i<0n||i>=ti)throw new V.SwapKitError("toolbox_tron_invalid_token_identifier",{identifier:i.toString()});return i.toString(16).padStart(64,"0")}function Z(n){return n.map(({type:i,value:o})=>i==="address"?ai(o):ci(BigInt(o))).join("")}function un(n){return F.bytesToHex(new TextEncoder().encode(n))}var N,R,Tn,F,en,V,S,Pn=65,ti;var b=X(()=>{N=require("@noble/curves/secp256k1.js"),R=require("@noble/hashes/sha2.js"),Tn=require("@noble/hashes/sha3.js"),F=require("@noble/hashes/utils.js"),en=require("@scure/base"),V=require("@swapkit/helpers"),S=en.createBase58check(R.sha256),ti=2n**256n});function hn(){try{return v.getRPCUrlSync(v.Chain.Tron)}catch{return xn}}function Fn(){let n=new AbortController,i=setTimeout(()=>n.abort(),Ti);return{cleanup:()=>clearTimeout(i),signal:n.signal}}async function J(n,i){let{signal:o,cleanup:t}=Fn();try{let a=await fetch(`${hn()}${n}`,{body:JSON.stringify(i),headers:{"Content-Type":"application/json"},method:"POST",signal:o});if(!a.ok)throw new v.SwapKitError("toolbox_tron_trongrid_api_error",{message:`${a.status} ${a.statusText} on ${n}`});return await a.json()}finally{t()}}async function qn(n,i){let{signal:o,cleanup:t}=Fn();try{let a=await fetch(`${i??hn()}${n}`,{headers:{"Content-Type":"application/json"},signal:o});if(!a.ok)throw new v.SwapKitError("toolbox_tron_trongrid_api_error",{message:`${a.status} ${a.statusText} on ${n}`});return await a.json()}finally{t()}}async function $n(n){if(!q(n))throw new v.SwapKitError("toolbox_tron_trongrid_api_error",{address:n,message:"Invalid address"});try{let i=await qn(`/v1/accounts/${n}`,xn);if(!(i.success&&i.data)||i.data.length===0)return;let o;try{o=wn(n).toLowerCase()}catch{o=n.toLowerCase()}let t=i.data.find((a)=>a.address.toLowerCase()===o);if(!t)return;return{balance:t.balance,trc20:t.trc20||[]}}catch(i){if(i instanceof v.SwapKitError)throw i;throw new v.SwapKitError("toolbox_tron_trongrid_api_error",{address:n,message:i instanceof Error?i.message:"Unknown error"})}}async function zn({from:n,to:i,amount:o}){let a=await J("/wallet/createtransaction",{amount:o,owner_address:n,to_address:i,visible:!0});if(!a.txID||!a.raw_data_hex||!a.raw_data)throw new v.SwapKitError("toolbox_tron_transaction_creation_failed");let m=a.raw_data?.contract?.[0]?.parameter?.value;if(m?.to_address!==i||m?.owner_address!==n||m?.amount!==o)throw new v.SwapKitError("toolbox_tron_transaction_creation_failed");return Y(a),a}async function Cn({ownerAddress:n,contractAddress:i,functionSelector:o,parameter:t,feeLimit:a,callValue:g=0}){let m=await J("/wallet/triggersmartcontract",{call_value:g,contract_address:i,fee_limit:a,function_selector:o,owner_address:n,parameter:t,visible:!0});if(!m.result.result||!m.transaction?.txID||!m.transaction?.raw_data_hex)throw new v.SwapKitError("toolbox_tron_transaction_creation_failed");let _=m.transaction.raw_data?.contract?.[0]?.parameter?.value;if(_?.contract_address!==i||_?.owner_address!==n)throw new v.SwapKitError("toolbox_tron_transaction_creation_failed");return Y(m.transaction),m.transaction}function Qn({ownerAddress:n,contractAddress:i,functionSelector:o,parameter:t}){return J("/wallet/triggerconstantcontract",{contract_address:i,function_selector:o,owner_address:n,parameter:t,visible:!0})}async function O(n){let{result:i,txid:o}=await J("/wallet/broadcasttransaction",{raw_data:n.raw_data,raw_data_hex:n.raw_data_hex,signature:n.signature,txID:n.txID,visible:n.visible});if(!i||!o)throw new v.SwapKitError("toolbox_tron_token_transfer_failed");return o}async function k(){let n={};try{let{chainParameter:i}=await qn("/wallet/getchainparameters");for(let o of i)n[o.key]=o.value}catch(i){v.warnOnce({condition:!0,id:"tron_chain_params_failed",warning:`Failed to fetch chain params, using defaults: ${i instanceof Error?i.message:i}`})}return{bandwidthFee:n.getTransactionFee??fi,createAccountFee:n.getCreateAccountFee??gi,energyFee:n.getEnergyFee??mi}}async function y(n){try{let i=await J("/wallet/getaccountresource",{address:n,visible:!0});return{bandwidth:{free:(i.freeNetLimit??600)-(i.freeNetUsed??0),total:i.NetLimit??0,used:i.NetUsed??0},energy:{total:i.EnergyLimit??0,used:i.EnergyUsed??0}}}catch(i){return v.warnOnce({condition:!0,id:"tron_account_resources_failed",warning:`Failed to fetch account resources, using defaults: ${i instanceof Error?i.message:i}`}),{bandwidth:{free:600,total:0,used:0},energy:{total:0,used:0}}}}async function H(n){try{let i=await J("/wallet/getaccount",{address:n,visible:!0});return i&&Object.keys(i).length>0}catch{return!1}}async function L(n){try{let{energy_used:i}=await Qn({...n,ownerAddress:n.sender});return i}catch(i){return v.warnOnce({condition:!0,id:"tron_energy_estimation_failed",warning:`Failed to estimate energy, using default: ${i instanceof Error?i.message:i}`}),65000}}async function Yn({assetAddress:n,owner:i,spender:o}){let t=Z([{type:"address",value:i},{type:"address",value:o}]),g=(await Qn({contractAddress:n,functionSelector:"allowance(address,address)",ownerAddress:o,parameter:t})).constant_result?.[0];if(!g)return 0n;try{return BigInt(`0x${g}`)}catch{return 0n}}var v,xn="https://api.trongrid.io",fi=1000,gi=1e5,mi=420,Ti=30000;var Zn=X(()=>{b();v=require("@swapkit/helpers")});function On({phrase:n,derivationPath:i}){let o=jn.HDKey.fromMasterSeed(Xn.mnemonicToSeedSync(n)).derive(i);if(!o.privateKey)throw new r.SwapKitError("toolbox_tron_no_signer");return Un.bytesToHex(o.privateKey)}function Gn({phrase:n,derivationPath:i,index:o}){let t=i||r.derivationPathToString(r.updateDerivationPath(r.NetworkDerivationPath[r.Chain.Tron],{index:o||0}));return On({derivationPath:t,phrase:n})}function vi({phrase:n,derivationPath:i}){let o=On({derivationPath:i,phrase:n}),t=_n(o);return{getAddress:()=>Promise.resolve(t),signTransaction:(a)=>{Y(a);let g=vn({privateKey:o,txID:a.txID});return Promise.resolve({...a,signature:[g]})}}}function Jn({transaction:n,memo:i,expiration:o,feeLimit:t}){let a={},g={};if(t!==void 0&&n.raw_data)a.fee_limit=t,g.fee_limit=t;if(i){let _=un(i);a.data=_,g.data=_}if(o){let _=n.raw_data.expiration+o*1000;a.expiration=_,g.expiration=_}if(Object.keys(a).length===0)return n;let{raw_data_hex:m,txID:w}=gn(n.raw_data_hex,a);return{...n,raw_data:{...n.raw_data,...g},raw_data_hex:m,txID:w}}function Bn(n={}){let i="index"in n?n.index||0:0,o=r.derivationPathToString("derivationPath"in n&&n.derivationPath?n.derivationPath:r.updateDerivationPath(r.NetworkDerivationPath[r.Chain.Tron],{index:i})),t,a=!1;function g(){if(a)return Promise.resolve(t);return t=U.match(n).with({phrase:U.P.string},({phrase:c})=>vi({derivationPath:o,phrase:c})).with({signer:U.P.not(U.P.nullish)},({signer:c})=>c).otherwise(()=>{return}),a=!0,Promise.resolve(t)}async function m(){let c=await g();if(!c)throw new r.SwapKitError("toolbox_tron_no_signer");return c.getAddress()}async function w(c){let f=c||Pi,e=await k(),P=f*e.energyFee,T=Math.ceil(P*1.5);return Math.min(Math.max(T,1e7),150000000)}async function _({contractAddress:c,functionSelector:f,parameter:e,sender:P,memo:T,expiration:h}){let u=await L({contractAddress:c,functionSelector:f,parameter:e,sender:P}),x=await w(u),z=await Cn({contractAddress:c,feeLimit:x,functionSelector:f,ownerAddress:P,parameter:e});return Jn({expiration:h,feeLimit:x,memo:T,transaction:z})}async function $(c){if(!q(c))return[r.AssetValue.from({chain:r.Chain.Tron})];try{let f=await $n(c);if(!f)return[r.AssetValue.from({chain:r.Chain.Tron})];let e=[r.AssetValue.from({chain:r.Chain.Tron,fromBaseDecimal:6,value:String(f.balance)})],P=f.trc20?.find((T)=>(d in T));if(P){let T=P[d];e.push(r.AssetValue.from({asset:`TRON.USDT-${d}`,fromBaseDecimal:6,value:T}))}return e}catch(f){return r.warnOnce({condition:!0,id:"tron_toolbox_get_balance_failed",warning:`Tron API getBalance failed: ${f instanceof Error?f.message:f}`}),[r.AssetValue.from({chain:r.Chain.Tron})]}}async function D({recipient:c,assetValue:f,memo:e,expiration:P}){if(!q(c))throw new r.SwapKitError("toolbox_tron_token_transfer_failed");let T=await g();if(!T)throw new r.SwapKitError("toolbox_tron_no_signer");let h=await m(),u=await I({assetValue:f,expiration:P,memo:e,recipient:c,sender:h}),x=await T.signTransaction(u),z=await O(x);if(!z)throw new r.SwapKitError("toolbox_tron_token_transfer_failed");return z}function l({requiredBandwidth:c,resources:f,feePerUnit:e}){let P=Math.max(0,f.free+f.total-f.used);return c>P?(c-P)*e:0}async function Wn({recipient:c,senderAddress:f}){let[e,P,T]=await Promise.all([k(),H(c),y(f)]),h=P?0:e.createAccountFee,u=l({feePerUnit:e.bandwidthFee,requiredBandwidth:ei,resources:T.bandwidth});return r.AssetValue.from({chain:r.Chain.Tron,fromBaseDecimal:r.BaseDecimal.TRON,value:h+u})}async function Sn({assetValue:c,recipient:f,senderAddress:e}){let P=c.address;if(!P)throw new r.SwapKitError("toolbox_tron_invalid_token_identifier",{identifier:c.toString()});let[T,h,u,x]=await Promise.all([k(),H(f),y(e),L({contractAddress:P,functionSelector:"transfer(address,uint256)",parameter:Z([{type:"address",value:f},{type:"uint256",value:c.getBaseValue("string")}]),sender:e})]),z=h?0:T.createAccountFee,G=l({feePerUnit:T.bandwidthFee,requiredBandwidth:wi,resources:u.bandwidth}),s=Math.max(0,u.energy.total-u.energy.used),Rn=x>s?(x-s)*T.energyFee:0;return r.AssetValue.from({chain:r.Chain.Tron,fromBaseDecimal:r.BaseDecimal.TRON,value:z+G+Rn})}async function kn({assetValue:c,recipient:f,sender:e}){let P=await g();try{let T=e?e:P?await m():void 0;if(!T)return c.isGasAsset?r.AssetValue.from({chain:r.Chain.Tron,value:0.1}):r.AssetValue.from({chain:r.Chain.Tron,value:15});return c.isGasAsset?Wn({recipient:f,senderAddress:T}):Sn({assetValue:c,recipient:f,senderAddress:T})}catch(T){throw r.warnOnce({condition:!0,id:"tron_toolbox_fee_estimation_failed",warning:`Failed to calculate exact fee: ${T instanceof Error?T.message:T}`}),new r.SwapKitError("toolbox_fee_estimation_failed",{chain:r.Chain.Tron,error:T})}}async function I({recipient:c,assetValue:f,memo:e,sender:P,expiration:T}){if(!q(c)||!q(P))throw new r.SwapKitError("toolbox_tron_token_transfer_failed");if(f.isGasAsset){let u=await zn({amount:f.getBaseValue("number"),from:P,to:c});return Jn({expiration:T,memo:e,transaction:u})}let h=f.address;if(!h)throw new r.SwapKitError("toolbox_tron_invalid_token_identifier",{identifier:f.toString()});return _({contractAddress:h,expiration:T,functionSelector:"transfer(address,uint256)",memo:e,parameter:Z([{type:"address",value:c},{type:"uint256",value:f.getBaseValue("string")}]),sender:P})}async function p(c){Y(c);let f=await g();if(!f)throw new r.SwapKitError("toolbox_tron_no_signer");return f.signTransaction(c)}async function Dn(c){let f=await p(c);return O(f)}function E({assetAddress:c,spenderAddress:f,from:e}){return Yn({assetAddress:c,owner:e,spender:f})}async function Kn({assetAddress:c,spenderAddress:f,from:e,amount:P}){let T=await E({assetAddress:c,from:e,spenderAddress:f});if(!P)return T>0n;return T>=BigInt(P)}async function Nn({assetAddress:c,spenderAddress:f,amount:e,from:P}){if(!q(c)||!q(f))throw new r.SwapKitError("toolbox_tron_approve_failed");let T=await g();if(!T)throw new r.SwapKitError("toolbox_tron_no_signer");let h=P||await m(),u=e!==void 0?BigInt(e).toString():_i;try{let x=await _({contractAddress:c,functionSelector:"approve(address,uint256)",parameter:Z([{type:"address",value:f},{type:"uint256",value:u}]),sender:h}),z=await T.signTransaction(x),G=await O(z);if(!G)throw new r.SwapKitError("toolbox_tron_approve_failed");return G}catch(x){if(x instanceof r.SwapKitError)throw x;throw new r.SwapKitError("toolbox_tron_approve_failed",{error:x})}}return{approve:Nn,broadcastTransaction:O,createTransaction:I,estimateTransactionFee:kn,getAddress:m,getApprovedAmount:E,getBalance:$,getRpcUrl:()=>r.getRPCUrl(r.Chain.Tron),isApproved:Kn,signAndBroadcastTransaction:Dn,signTransaction:p,transfer:D,validateAddress:q}}var Un,jn,Xn,r,U,Mn,ei=268,Pi=65000,wi=345,d="TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",_i="115792089237316195423570985008687907853269984665640564039457584007913129639935";var An=X(()=>{mn();Zn();b();Un=require("@noble/hashes/utils.js"),jn=require("@scure/bip32"),Xn=require("@scure/bip39"),r=require("@swapkit/helpers"),U=require("ts-pattern"),Mn=q});var ui={};pn(ui,{validateTronAddress:()=>Mn,getTronToolbox:()=>Bn,getTronPrivateKeyFromMnemonic:()=>Gn});module.exports=dn(ui);var xi=X(()=>{An()});xi();
@@ -1,4 +1 @@
1
- var Yy=Object.create;var{getPrototypeOf:Xy,defineProperty:N,getOwnPropertyNames:Gy}=Object;var Ly=Object.prototype.hasOwnProperty;var P=(u,Q,Z)=>{Z=u!=null?Yy(Xy(u)):{};let j=Q||!u||!u.__esModule?N(Z,"default",{value:u,enumerable:!0}):Z;for(let M of Gy(u))if(!Ly.call(j,M))N(j,M,{get:()=>u[M],enumerable:!0});return j};var My=(u,Q)=>{for(var Z in Q)N(u,Z,{get:Q[Z],enumerable:!0,configurable:!0,set:(j)=>Q[Z]=()=>j})};var T=(u,Q)=>()=>(u&&(Q=u(u=0)),Q);var x=((u)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(u,{get:(Q,Z)=>(typeof require<"u"?require:Q)[Z]}):u)(function(u){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+u+'" is not supported')});var V;var D=T(()=>{V=[{constant:!0,inputs:[{name:"_owner",type:"address"}],name:"balanceOf",outputs:[{name:"balance",type:"uint256"}],stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_to",type:"address"},{name:"_value",type:"uint256"}],name:"transfer",outputs:[{name:"success",type:"bool"}],stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"decimals",outputs:[{name:"",type:"uint8"}],stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"symbol",outputs:[{name:"",type:"string"}],stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"name",outputs:[{name:"",type:"string"}],stateMutability:"view",type:"function"},{constant:!0,inputs:[{name:"_owner",type:"address"},{name:"_spender",type:"address"}],name:"allowance",outputs:[{name:"remaining",type:"uint256"}],stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_spender",type:"address"},{name:"_value",type:"uint256"}],name:"approve",outputs:[{name:"success",type:"bool"}],stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"totalSupply",outputs:[{name:"",type:"uint256"}],stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_from",type:"address"},{name:"_to",type:"address"},{name:"_value",type:"uint256"}],name:"transferFrom",outputs:[{name:"success",type:"bool"}],stateMutability:"nonpayable",type:"function"},{anonymous:!1,inputs:[{indexed:!0,name:"_from",type:"address"},{indexed:!0,name:"_to",type:"address"},{indexed:!1,name:"_value",type:"uint256"}],name:"Transfer",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"_owner",type:"address"},{indexed:!0,name:"_spender",type:"address"},{indexed:!1,name:"_value",type:"uint256"}],name:"Approval",type:"event"}]});import{SwapKitError as Uy}from"@swapkit/helpers";async function h(u){let Q=await import("tronweb"),Z=Q.TronWeb??Q.default?.TronWeb;try{let j=await fetch(`${Iy}/v1/accounts/${u}`);if(!j.ok)throw Error(`TronGrid API error: ${j.status} ${j.statusText}`);let M=await j.json();if(!(M.success&&M.data)||M.data.length===0)throw Error("Invalid response from TronGrid API");let J;try{J=Z.address.toHex(u).toLowerCase()}catch{J=u.toLowerCase()}let F=M.data.find((m)=>{return m.address.toLowerCase()===J});if(!F)return;return{balance:F.balance,trc20:F.trc20||[]}}catch(j){throw new Uy("toolbox_tron_trongrid_api_error",{address:u,message:j instanceof Error?j.message:"Unknown error"})}}var Iy="https://api.trongrid.io";var i=()=>{};import{AssetValue as k,BaseDecimal as n,Chain as p,derivationPathToString as o,getRPCUrl as Oy,NetworkDerivationPath as d,SwapKitError as L,updateDerivationPath as s,warnOnce as E}from"@swapkit/helpers";import{match as Hy,P as t}from"ts-pattern";async function S(){let u=await import("tronweb"),Q=u.TronWeb??u.default?.TronWeb;return(Z)=>{return Q.isAddress(Z)}}async function a({phrase:u,derivationPath:Q,index:Z}){let j=Q||o(s(d[p.Tron],{index:Z||0})),{HDKey:M}=await import("@scure/bip32"),{mnemonicToSeedSync:J}=await import("@scure/bip39"),F=J(u),Y=M.fromMasterSeed(F).derive(j);if(!Y.privateKey)throw new L("toolbox_tron_no_signer");return Buffer.from(Y.privateKey).toString("hex")}async function my({phrase:u,derivationPath:Q,tronWeb:Z}){let{HDKey:j}=await import("@scure/bip32"),{mnemonicToSeedSync:M}=await import("@scure/bip39"),J=M(u),m=j.fromMasterSeed(J).derive(Q);if(!m.privateKey)throw new L("toolbox_tron_no_signer");let Y=Buffer.from(m.privateKey).toString("hex");Z.setPrivateKey(Y);let C=Z?.address.fromPrivateKey(Y);return{getAddress:()=>Promise.resolve(typeof C==="string"?C:""),signTransaction:async(K)=>{return await Z.trx.sign(K,Y)}}}var py=268,vy=13000,ky=345,c="TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",Fy="0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",e=async(u={})=>{let Q=await import("tronweb"),Z=Q.TronWeb??Q.default?.TronWeb,j=await Oy(p.Tron),M=void 0,J=new Z({fullHost:j,headers:void 0}),F="index"in u?u.index||0:0,m=o("derivationPath"in u&&u.derivationPath?u.derivationPath:s(d[p.Tron],{index:F})),Y=await Hy(u).with({phrase:t.string},async({phrase:_})=>my({derivationPath:m,phrase:_,tronWeb:J})).with({signer:t.any},({signer:_})=>Promise.resolve(_)).otherwise(()=>Promise.resolve(void 0)),C=async()=>{if(!Y)throw new L("toolbox_tron_no_signer");return await Y.getAddress()},K=()=>{return 1e8},g=async()=>{try{let _=await J.trx.getChainParameters(),q={};for(let f of _)q[f.key]=f.value;return{bandwidthFee:q.getTransactionFee||1000,createAccountFee:q.getCreateAccountFee||1e5,energyFee:q.getEnergyFee||420}}catch{return{bandwidthFee:1000,createAccountFee:1e5,energyFee:420}}},yy=async(_)=>{try{let q=await J.trx.getAccount(_);return q&&Object.keys(q).length>0}catch{return!1}},fy=async(_)=>{try{let q=await J.trx.getAccountResources(_);return{bandwidth:{free:q.freeNetLimit-q.freeNetUsed,total:q.NetLimit||0,used:q.NetUsed||0},energy:{total:q.EnergyLimit||0,used:q.EnergyUsed||0}}}catch{return{bandwidth:{free:600,total:0,used:0},energy:{total:0,used:0}}}},uy=async(_,q)=>{try{let f=J.contract(V,q);if(!f.methods?.balanceOf)return 0n;let[z]=await f.methods.balanceOf(_).call();return z?typeof z==="bigint"?z:BigInt(z):0n}catch(f){let z=f instanceof Error?f.message:String(f);return console.warn(`balanceOf() failed for ${q}: ${z}`),0n}},_y=async(_,q)=>{try{J.setAddress(q);let f=J.contract(V,_),[z,y]=await Promise.all([f.symbol().call().catch(()=>"UNKNOWN"),f.decimals().call().catch(()=>"18")]);return{decimals:Number(y??18),symbol:z??"UNKNOWN"}}catch(f){return E({condition:!0,id:"tron_toolbox_get_token_metadata_failed",warning:`Failed to get token metadata for ${_}: ${f instanceof Error?f.message:f}`}),null}},qy=async(_,q=!0)=>{let f=[k.from({chain:p.Tron})];try{let z=await h(_);if(z){let y=[];y.push(k.from({chain:p.Tron,fromBaseDecimal:6,value:z.balance}));for(let $ of z.trc20){let[U,I]=Object.entries($)[0]||[];if(!(U&&I))continue;let X=await _y(U,_);if(!X)continue;y.push(k.from({asset:`TRON.${X.symbol}-${U}`,fromBaseDecimal:X.decimals,value:BigInt(I||0)}))}return y}return f}catch(z){E({condition:!0,id:"tron_toolbox_get_balance_failed",warning:`Tron API getBalance failed: ${z instanceof Error?z.message:z}`});try{let y=[],$=await J.trx.getBalance(_);if($&&Number($)>0)y.push(k.from({chain:p.Tron,fromBaseDecimal:6,value:$}));let U=await uy(_,c);if(U)y.push(k.from({asset:`TRON.USDT-${c}`,fromBaseDecimal:6,value:U}));if(y.length===0)return f;return y}catch(y){let $=y instanceof Error?y.message:String(y);return console.error(`Tron balance fetch failed: ${$}`),f}}},zy=async({recipient:_,assetValue:q,memo:f,expiration:z})=>{if(!Y)throw new L("toolbox_tron_no_signer");let y=await C();J.setAddress(y);let $=await w({assetValue:q,expiration:z,memo:f,recipient:_,sender:y}),U=await Y.signTransaction($),{txid:I}=await J.trx.sendRawTransaction(U);if(!I)throw new L("toolbox_tron_token_transfer_failed");return I},Jy=async({assetValue:_,recipient:q,sender:f})=>{let z=_.isGasAsset;try{let y=f?f:Y?await C():void 0;if(!y)return z?k.from({chain:p.Tron,fromBaseDecimal:0,value:0.1}):k.from({chain:p.Tron,fromBaseDecimal:0,value:15});let $=await g(),I=await yy(q)?0:$.createAccountFee,X=await fy(y);if(z){let R=py,l=X.bandwidth.free+(X.bandwidth.total-X.bandwidth.used),A=0;if(R>l)A=(R-l)*$.bandwidthFee;let jy=I+A;return k.from({chain:p.Tron,fromBaseDecimal:n.TRON,value:jy})}let G=ky,O=vy,v=X.bandwidth.free+(X.bandwidth.total-X.bandwidth.used),H=X.energy.total-X.energy.used,B=0;if(G>v)B=(G-v)*$.bandwidthFee;let b=0;if(O>H)b=(O-H)*$.energyFee;let $y=I+B+b;return k.from({chain:p.Tron,fromBaseDecimal:n.TRON,value:$y})}catch(y){throw E({condition:!0,id:"tron_toolbox_fee_estimation_failed",warning:`Failed to calculate exact fee, using conservative estimate: ${y instanceof Error?y.message:y}`}),new L("toolbox_tron_fee_estimation_failed",{error:y})}},w=async(_)=>{let{recipient:q,assetValue:f,memo:z,sender:y,expiration:$}=_,U=f.isGasAsset,I=async({transaction:G,memo:O,expiration:v})=>{let H=O?await J.transactionBuilder.addUpdateData(G,O,"utf8"):G;return v?await J.transactionBuilder.extendExpiration(H,v):H};if(U){let G=await J.transactionBuilder.sendTrx(q,f.getBaseValue("number"),y);return I({expiration:$,memo:z,transaction:G})}J.setAddress(y);let X=f.address;if(!X)throw new L("toolbox_tron_invalid_token_identifier",{identifier:f.toString()});try{let O=[{type:"address",value:q},{type:"uint256",value:f.getBaseValue("string")}],v={callValue:0,feeLimit:K()},{transaction:H}=await J.transactionBuilder.triggerSmartContract(X,"transfer(address,uint256)",v,O,y);return I({expiration:$,memo:z,transaction:H})}catch(G){throw new L("toolbox_tron_transaction_creation_failed",{message:"Failed to create TRC20 transaction.",originalError:G instanceof Error?G.message:String(G)})}},Qy=async(_)=>{if(!Y)throw new L("toolbox_tron_no_signer");return await Y.signTransaction(_)},Zy=async(_)=>{let{txid:q}=await J.trx.sendRawTransaction(_);return q},W=async({assetAddress:_,spenderAddress:q,from:f})=>{try{let z=J.contract(V,_);if(!z.methods?.allowance)throw new L("toolbox_tron_invalid_token_contract");let[y]=await z.methods.allowance(f,q).call();return y?typeof y==="bigint"?y:BigInt(y):0n}catch(z){throw new L("toolbox_tron_allowance_check_failed",{error:z})}};return{approve:async({assetAddress:_,spenderAddress:q,amount:f,from:z})=>{if(!Y)throw new L("toolbox_tron_no_signer");let y=z||await C(),$=f!==void 0?BigInt(f).toString():Fy,U="approve(address,uint256)",I=[{type:"address",value:q},{type:"uint256",value:$}],G={callValue:0,feeLimit:K()};try{let{transaction:O}=await J.transactionBuilder.triggerSmartContract(_,U,G,I,y),v=await Y.signTransaction(O),{txid:H}=await J.trx.sendRawTransaction(v);if(!H)throw new L("toolbox_tron_approve_failed");return H}catch(O){throw new L("toolbox_tron_approve_failed",{error:O})}},broadcastTransaction:Zy,createTransaction:w,estimateTransactionFee:Jy,getAddress:C,getApprovedAmount:W,getBalance:qy,isApproved:async({assetAddress:_,spenderAddress:q,from:f,amount:z})=>{let y=await W({assetAddress:_,from:f,spenderAddress:q});if(!z)return y>0n;let $=BigInt(z);return y>=$},signTransaction:Qy,transfer:zy,tronWeb:J,validateAddress:await S()}};var r=T(()=>{D();i()});var Cy={};My(Cy,{trc20ABI:()=>V,getTronPrivateKeyFromMnemonic:()=>a,getTronAddressValidator:()=>S,createTronToolbox:()=>e});var Py=T(()=>{D();r()});Py();export{V as trc20ABI,a as getTronPrivateKeyFromMnemonic,S as getTronAddressValidator,e as createTronToolbox};
2
-
3
- //# debugId=ED2E67A6C2AA9EEB64756E2164756E21
4
- //# sourceMappingURL=index.js.map
1
+ var Rn=Object.defineProperty;var Vn=(n)=>n;function bn(n,i){this[n]=Vn.bind(null,i)}var yn=(n,i)=>{for(var o in i)Rn(n,o,{get:i[o],enumerable:!0,configurable:!0,set:bn.bind(i,o)})};var j=(n,i)=>()=>(n&&(i=n(n=0)),i);var zi=((n)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(n,{get:(i,o)=>(typeof require<"u"?require:i)[o]}):n)(function(n){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+n+'" is not supported')});import{sha256 as Hn}from"@noble/hashes/sha2.js";import{bytesToHex as s,hexToBytes as nn}from"@noble/hashes/utils.js";import{SwapKitError as Q}from"@swapkit/helpers";function K(n,i){let o=0n,t=0n,r=i;while(r<n.length&&r-i<10){let f=n[r++];if(f===void 0)break;if(o|=BigInt(f&127)<<t,t+=7n,(f&128)===0)return[o,r]}throw new Q("toolbox_tron_transaction_creation_failed")}function X(n){let i=[],o=n<0n?n+2n**64n:n;while(o>=128n)i.push(Number(o&0x7fn)|128),o>>=7n;return i.push(Number(o)),i}function G(n,i,o){let t=n.get(i);if(t)t.push(o);else n.set(i,[o])}function In(n){let i=new Map,o=0;while(o<n.length){let[t,r]=K(n,o);o=r;let f=Number(t>>3n),m=Number(t&7n);if(m===B){let[w,P]=K(n,o);o=P,G(i,f,{data:new Uint8Array(X(w)),wireType:B})}else if(m===A){let[w,P]=K(n,o);o=P;let z=Number(w);if(z<0||o+z>n.length)throw new Q("toolbox_tron_transaction_creation_failed");let D=n.slice(o,o+z);o+=z,G(i,f,{data:D,wireType:A})}else if(m===on){if(o+8>n.length)throw new Q("toolbox_tron_transaction_creation_failed");let w=n.slice(o,o+8);o+=8,G(i,f,{data:w,wireType:on})}else if(m===tn){if(o+4>n.length)throw new Q("toolbox_tron_transaction_creation_failed");let w=n.slice(o,o+4);o+=4,G(i,f,{data:w,wireType:tn})}else throw new Q("toolbox_tron_transaction_creation_failed")}return i}function pn(n){let i=[];for(let[f,m]of[...n.entries()].sort(([w],[P])=>w-P))for(let{wireType:w,data:P}of m){let z=BigInt(f<<3|w);if(i.push(new Uint8Array(X(z))),w===A)i.push(new Uint8Array(X(BigInt(P.length))));i.push(P)}let o=i.reduce((f,m)=>f+m.length,0),t=new Uint8Array(o),r=0;for(let f of i)t.set(f,r),r+=f.length;return t}function rn(n,i){if(!n||n.length%2!==0)throw new Q("toolbox_tron_transaction_creation_failed");let o=nn(n),t=In(o);if(i.expiration!==void 0)t.set(Ln,[{data:new Uint8Array(X(BigInt(i.expiration))),wireType:B}]);if(i.data!==void 0)t.set(dn,[{data:nn(i.data),wireType:A}]);if(i.fee_limit!==void 0)t.set(ln,[{data:new Uint8Array(X(BigInt(i.fee_limit))),wireType:B}]);let r=pn(t),f=s(r),m=s(Hn(r));return{raw_data_hex:f,txID:m}}var B=0,on=1,A=2,tn=5,Ln=8,dn=10,ln=18;var an=()=>{};import{secp256k1 as cn}from"@noble/curves/secp256k1.js";import{sha256 as fn}from"@noble/hashes/sha2.js";import{keccak_256 as En}from"@noble/hashes/sha3.js";import{bytesToHex as Y,hexToBytes as W}from"@noble/hashes/utils.js";import{createBase58check as sn}from"@scure/base";import{SwapKitError as gn}from"@swapkit/helpers";function F(n){if(typeof n!=="string")return!1;try{let i=S.decode(n);return i.length===21&&i[0]===mn}catch{return!1}}function Tn(n){return Y(S.decode(n))}function ii(n){return S.decode(n).slice(1)}function en(n){let i=cn.getPublicKey(W(n),!1),o=En(i.slice(1)).slice(-20),t=new Uint8Array(21);return t[0]=mn,t.set(o,1),S.encode(t)}function Pn({txID:n,privateKey:i}){let o=cn.sign(W(n),W(i),{format:"recovered",prehash:!1}),t=o[0]??0,r=Y(o.slice(1,33)),f=Y(o.slice(33,65)),m=(t+27).toString(16).padStart(2,"0");return r+f+m}function Z({txID:n,raw_data_hex:i}){let o=Y(fn(W(i)));if(n!==o)throw new gn("toolbox_tron_token_transfer_failed")}function oi(n){return`000000000000000000000000${Y(ii(n))}`}function ti(n){let i=typeof n==="bigint"?n:BigInt(n);if(i<0n||i>=ni)throw new gn("toolbox_tron_invalid_token_identifier",{identifier:i.toString()});return i.toString(16).padStart(64,"0")}function J(n){return n.map(({type:i,value:o})=>i==="address"?oi(o):ti(BigInt(o))).join("")}function wn(n){return Y(new TextEncoder().encode(n))}var S,mn=65,ni;var N=j(()=>{S=sn(fn),ni=2n**256n});import{Chain as ri,getRPCUrlSync as ai,SwapKitError as q,warnOnce as R}from"@swapkit/helpers";function vn(){try{return ai(ri.Tron)}catch{return _n}}function un(){let n=new AbortController,i=setTimeout(()=>n.abort(),mi);return{cleanup:()=>clearTimeout(i),signal:n.signal}}async function U(n,i){let{signal:o,cleanup:t}=un();try{let r=await fetch(`${vn()}${n}`,{body:JSON.stringify(i),headers:{"Content-Type":"application/json"},method:"POST",signal:o});if(!r.ok)throw new q("toolbox_tron_trongrid_api_error",{message:`${r.status} ${r.statusText} on ${n}`});return await r.json()}finally{t()}}async function xn(n,i){let{signal:o,cleanup:t}=un();try{let r=await fetch(`${i??vn()}${n}`,{headers:{"Content-Type":"application/json"},signal:o});if(!r.ok)throw new q("toolbox_tron_trongrid_api_error",{message:`${r.status} ${r.statusText} on ${n}`});return await r.json()}finally{t()}}async function hn(n){if(!F(n))throw new q("toolbox_tron_trongrid_api_error",{address:n,message:"Invalid address"});try{let i=await xn(`/v1/accounts/${n}`,_n);if(!(i.success&&i.data)||i.data.length===0)return;let o;try{o=Tn(n).toLowerCase()}catch{o=n.toLowerCase()}let t=i.data.find((r)=>r.address.toLowerCase()===o);if(!t)return;return{balance:t.balance,trc20:t.trc20||[]}}catch(i){if(i instanceof q)throw i;throw new q("toolbox_tron_trongrid_api_error",{address:n,message:i instanceof Error?i.message:"Unknown error"})}}async function Fn({from:n,to:i,amount:o}){let r=await U("/wallet/createtransaction",{amount:o,owner_address:n,to_address:i,visible:!0});if(!r.txID||!r.raw_data_hex||!r.raw_data)throw new q("toolbox_tron_transaction_creation_failed");let m=r.raw_data?.contract?.[0]?.parameter?.value;if(m?.to_address!==i||m?.owner_address!==n||m?.amount!==o)throw new q("toolbox_tron_transaction_creation_failed");return Z(r),r}async function qn({ownerAddress:n,contractAddress:i,functionSelector:o,parameter:t,feeLimit:r,callValue:f=0}){let m=await U("/wallet/triggersmartcontract",{call_value:f,contract_address:i,fee_limit:r,function_selector:o,owner_address:n,parameter:t,visible:!0});if(!m.result.result||!m.transaction?.txID||!m.transaction?.raw_data_hex)throw new q("toolbox_tron_transaction_creation_failed");let P=m.transaction.raw_data?.contract?.[0]?.parameter?.value;if(P?.contract_address!==i||P?.owner_address!==n)throw new q("toolbox_tron_transaction_creation_failed");return Z(m.transaction),m.transaction}function $n({ownerAddress:n,contractAddress:i,functionSelector:o,parameter:t}){return U("/wallet/triggerconstantcontract",{contract_address:i,function_selector:o,owner_address:n,parameter:t,visible:!0})}async function M(n){let{result:i,txid:o}=await U("/wallet/broadcasttransaction",{raw_data:n.raw_data,raw_data_hex:n.raw_data_hex,signature:n.signature,txID:n.txID,visible:n.visible});if(!i||!o)throw new q("toolbox_tron_token_transfer_failed");return o}async function k(){let n={};try{let{chainParameter:i}=await xn("/wallet/getchainparameters");for(let o of i)n[o.key]=o.value}catch(i){R({condition:!0,id:"tron_chain_params_failed",warning:`Failed to fetch chain params, using defaults: ${i instanceof Error?i.message:i}`})}return{bandwidthFee:n.getTransactionFee??ci,createAccountFee:n.getCreateAccountFee??fi,energyFee:n.getEnergyFee??gi}}async function V(n){try{let i=await U("/wallet/getaccountresource",{address:n,visible:!0});return{bandwidth:{free:(i.freeNetLimit??600)-(i.freeNetUsed??0),total:i.NetLimit??0,used:i.NetUsed??0},energy:{total:i.EnergyLimit??0,used:i.EnergyUsed??0}}}catch(i){return R({condition:!0,id:"tron_account_resources_failed",warning:`Failed to fetch account resources, using defaults: ${i instanceof Error?i.message:i}`}),{bandwidth:{free:600,total:0,used:0},energy:{total:0,used:0}}}}async function b(n){try{let i=await U("/wallet/getaccount",{address:n,visible:!0});return i&&Object.keys(i).length>0}catch{return!1}}async function y(n){try{let{energy_used:i}=await $n({...n,ownerAddress:n.sender});return i}catch(i){return R({condition:!0,id:"tron_energy_estimation_failed",warning:`Failed to estimate energy, using default: ${i instanceof Error?i.message:i}`}),65000}}async function zn({assetAddress:n,owner:i,spender:o}){let t=J([{type:"address",value:i},{type:"address",value:o}]),f=(await $n({contractAddress:n,functionSelector:"allowance(address,address)",ownerAddress:o,parameter:t})).constant_result?.[0];if(!f)return 0n;try{return BigInt(`0x${f}`)}catch{return 0n}}var _n="https://api.trongrid.io",ci=1000,fi=1e5,gi=420,mi=30000;var Cn=j(()=>{N()});import{bytesToHex as Ti}from"@noble/hashes/utils.js";import{HDKey as ei}from"@scure/bip32";import{mnemonicToSeedSync as Pi}from"@scure/bip39";import{AssetValue as $,BaseDecimal as Qn,Chain as h,derivationPathToString as Jn,getRPCUrl as wi,NetworkDerivationPath as Un,SwapKitError as _,updateDerivationPath as jn,warnOnce as Yn}from"@swapkit/helpers";import{match as _i,P as H}from"ts-pattern";function Mn({phrase:n,derivationPath:i}){let o=ei.fromMasterSeed(Pi(n)).derive(i);if(!o.privateKey)throw new _("toolbox_tron_no_signer");return Ti(o.privateKey)}function On({phrase:n,derivationPath:i,index:o}){let t=i||Jn(jn(Un[h.Tron],{index:o||0}));return Mn({derivationPath:t,phrase:n})}function Fi({phrase:n,derivationPath:i}){let o=Mn({derivationPath:i,phrase:n}),t=en(o);return{getAddress:()=>Promise.resolve(t),signTransaction:(r)=>{Z(r);let f=Pn({privateKey:o,txID:r.txID});return Promise.resolve({...r,signature:[f]})}}}function Zn({transaction:n,memo:i,expiration:o,feeLimit:t}){let r={},f={};if(t!==void 0&&n.raw_data)r.fee_limit=t,f.fee_limit=t;if(i){let P=wn(i);r.data=P,f.data=P}if(o){let P=n.raw_data.expiration+o*1000;r.expiration=P,f.expiration=P}if(Object.keys(r).length===0)return n;let{raw_data_hex:m,txID:w}=rn(n.raw_data_hex,r);return{...n,raw_data:{...n.raw_data,...f},raw_data_hex:m,txID:w}}function Gn(n={}){let i="index"in n?n.index||0:0,o=Jn("derivationPath"in n&&n.derivationPath?n.derivationPath:jn(Un[h.Tron],{index:i})),t,r=!1;function f(){if(r)return Promise.resolve(t);return t=_i(n).with({phrase:H.string},({phrase:a})=>Fi({derivationPath:o,phrase:a})).with({signer:H.not(H.nullish)},({signer:a})=>a).otherwise(()=>{return}),r=!0,Promise.resolve(t)}async function m(){let a=await f();if(!a)throw new _("toolbox_tron_no_signer");return a.getAddress()}async function w(a){let c=a||ui,T=await k(),e=c*T.energyFee,g=Math.ceil(e*1.5);return Math.min(Math.max(g,1e7),150000000)}async function P({contractAddress:a,functionSelector:c,parameter:T,sender:e,memo:g,expiration:x}){let v=await y({contractAddress:a,functionSelector:c,parameter:T,sender:e}),u=await w(v),C=await qn({contractAddress:a,feeLimit:u,functionSelector:c,ownerAddress:e,parameter:T});return Zn({expiration:x,feeLimit:u,memo:g,transaction:C})}async function z(a){if(!F(a))return[$.from({chain:h.Tron})];try{let c=await hn(a);if(!c)return[$.from({chain:h.Tron})];let T=[$.from({chain:h.Tron,fromBaseDecimal:6,value:String(c.balance)})],e=c.trc20?.find((g)=>(L in g));if(e){let g=e[L];T.push($.from({asset:`TRON.USDT-${L}`,fromBaseDecimal:6,value:g}))}return T}catch(c){return Yn({condition:!0,id:"tron_toolbox_get_balance_failed",warning:`Tron API getBalance failed: ${c instanceof Error?c.message:c}`}),[$.from({chain:h.Tron})]}}async function D({recipient:a,assetValue:c,memo:T,expiration:e}){if(!F(a))throw new _("toolbox_tron_token_transfer_failed");let g=await f();if(!g)throw new _("toolbox_tron_no_signer");let x=await m(),v=await l({assetValue:c,expiration:e,memo:T,recipient:a,sender:x}),u=await g.signTransaction(v),C=await M(u);if(!C)throw new _("toolbox_tron_token_transfer_failed");return C}function d({requiredBandwidth:a,resources:c,feePerUnit:T}){let e=Math.max(0,c.free+c.total-c.used);return a>e?(a-e)*T:0}async function An({recipient:a,senderAddress:c}){let[T,e,g]=await Promise.all([k(),b(a),V(c)]),x=e?0:T.createAccountFee,v=d({feePerUnit:T.bandwidthFee,requiredBandwidth:vi,resources:g.bandwidth});return $.from({chain:h.Tron,fromBaseDecimal:Qn.TRON,value:x+v})}async function Wn({assetValue:a,recipient:c,senderAddress:T}){let e=a.address;if(!e)throw new _("toolbox_tron_invalid_token_identifier",{identifier:a.toString()});let[g,x,v,u]=await Promise.all([k(),b(c),V(T),y({contractAddress:e,functionSelector:"transfer(address,uint256)",parameter:J([{type:"address",value:c},{type:"uint256",value:a.getBaseValue("string")}]),sender:T})]),C=x?0:g.createAccountFee,O=d({feePerUnit:g.bandwidthFee,requiredBandwidth:xi,resources:v.bandwidth}),E=Math.max(0,v.energy.total-v.energy.used),Nn=u>E?(u-E)*g.energyFee:0;return $.from({chain:h.Tron,fromBaseDecimal:Qn.TRON,value:C+O+Nn})}async function Sn({assetValue:a,recipient:c,sender:T}){let e=await f();try{let g=T?T:e?await m():void 0;if(!g)return a.isGasAsset?$.from({chain:h.Tron,value:0.1}):$.from({chain:h.Tron,value:15});return a.isGasAsset?An({recipient:c,senderAddress:g}):Wn({assetValue:a,recipient:c,senderAddress:g})}catch(g){throw Yn({condition:!0,id:"tron_toolbox_fee_estimation_failed",warning:`Failed to calculate exact fee: ${g instanceof Error?g.message:g}`}),new _("toolbox_fee_estimation_failed",{chain:h.Tron,error:g})}}async function l({recipient:a,assetValue:c,memo:T,sender:e,expiration:g}){if(!F(a)||!F(e))throw new _("toolbox_tron_token_transfer_failed");if(c.isGasAsset){let v=await Fn({amount:c.getBaseValue("number"),from:e,to:a});return Zn({expiration:g,memo:T,transaction:v})}let x=c.address;if(!x)throw new _("toolbox_tron_invalid_token_identifier",{identifier:c.toString()});return P({contractAddress:x,expiration:g,functionSelector:"transfer(address,uint256)",memo:T,parameter:J([{type:"address",value:a},{type:"uint256",value:c.getBaseValue("string")}]),sender:e})}async function I(a){Z(a);let c=await f();if(!c)throw new _("toolbox_tron_no_signer");return c.signTransaction(a)}async function kn(a){let c=await I(a);return M(c)}function p({assetAddress:a,spenderAddress:c,from:T}){return zn({assetAddress:a,owner:T,spender:c})}async function Dn({assetAddress:a,spenderAddress:c,from:T,amount:e}){let g=await p({assetAddress:a,from:T,spenderAddress:c});if(!e)return g>0n;return g>=BigInt(e)}async function Kn({assetAddress:a,spenderAddress:c,amount:T,from:e}){if(!F(a)||!F(c))throw new _("toolbox_tron_approve_failed");let g=await f();if(!g)throw new _("toolbox_tron_no_signer");let x=e||await m(),v=T!==void 0?BigInt(T).toString():hi;try{let u=await P({contractAddress:a,functionSelector:"approve(address,uint256)",parameter:J([{type:"address",value:c},{type:"uint256",value:v}]),sender:x}),C=await g.signTransaction(u),O=await M(C);if(!O)throw new _("toolbox_tron_approve_failed");return O}catch(u){if(u instanceof _)throw u;throw new _("toolbox_tron_approve_failed",{error:u})}}return{approve:Kn,broadcastTransaction:M,createTransaction:l,estimateTransactionFee:Sn,getAddress:m,getApprovedAmount:p,getBalance:z,getRpcUrl:()=>wi(h.Tron),isApproved:Dn,signAndBroadcastTransaction:kn,signTransaction:I,transfer:D,validateAddress:F}}var Xn,vi=268,ui=65000,xi=345,L="TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t",hi="115792089237316195423570985008687907853269984665640564039457584007913129639935";var Bn=j(()=>{an();Cn();N();Xn=F});var qi={};yn(qi,{validateTronAddress:()=>Xn,getTronToolbox:()=>Gn,getTronPrivateKeyFromMnemonic:()=>On});var $i=j(()=>{Bn()});$i();export{Xn as validateTronAddress,Gn as getTronToolbox,On as getTronPrivateKeyFromMnemonic};
@@ -1,5 +1 @@
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}=d.getChainConfig(X),J=$.map(({identifier:q,value:W,decimal:T})=>{return new d.AssetValue({decimal:T||Q,identifier:q,value:W})});if(!J.some((q)=>q.isGasAsset))return[d.AssetValue.from({chain:X}),...J];return J}}var d,gX,HZ,zX=0;var CX=N(()=>{d=require("@swapkit/helpers"),gX=require("@swapkit/helpers/api"),HZ=typeof process<"u"&&process.pid?process.pid.toString(36):""});async function vZ({chain:X,txHash:Z}){let B=`${GX(X)}/push/transaction`,G=JSON.stringify({data:Z});try{let $=await U.RequestClient.post(B,{body:G,headers:{"Content-Type":"application/json"}});if($.context.code!==200)throw new U.SwapKitError("toolbox_utxo_broadcast_failed",{error:$.context.error||"Transaction broadcast failed"});return $.data?.transaction_hash||Z}catch($){let Q=await U.getRPCUrl(X);if(Q){let J=JSON.stringify({id:mX(),jsonrpc:"2.0",method:"sendrawtransaction",params:[Z]}),j=await U.RequestClient.post(Q,{body:J,headers:{"Content-Type":"application/json"}});if(j.error)throw new U.SwapKitError("toolbox_utxo_broadcast_failed",{error:j.error?.message});if(j.result.includes('"code":-26'))throw new U.SwapKitError("toolbox_utxo_invalid_transaction",{error:"Transaction amount was too low"});return j.result}throw $}}function GX(X){return`https://api.blockchair.com/${NZ(X)}`}function hX(X){switch(X){case U.Chain.Bitcoin:return 5;case U.Chain.Dogecoin:return 1e4;case U.Chain.Litecoin:return 1;case U.Chain.Zcash:return 1;default:return 2}}function NZ(X){switch(X){case U.Chain.BitcoinCash:return"bitcoin-cash";case U.Chain.Litecoin:return"litecoin";case U.Chain.Dash:return"dash";case U.Chain.Dogecoin:return"dogecoin";case U.Chain.Zcash:return"zcash";case U.Chain.Polkadot:return"polkadot";default:return"bitcoin"}}async function OZ(X){try{let{feePerKb:Z}=await U.RequestClient.get(`https://app.bitgo.com/api/v2/${X.toLowerCase()}/tx/fee`),B=Z/1000;return Math.max(B,hX(X))}catch{return hX(X)}}async function IX(X,Z){let B=await U.RequestClient.get(`${X}${Z?`${X.includes("?")?"&":"?"}key=${Z}`:""}`);if(!B||B.context.code!==200)throw new U.SwapKitError("toolbox_utxo_api_error",{error:`Failed to query ${X}`});return B.data}async function nX({address:X,chain:Z,apiKey:B}){if(!X)throw new U.SwapKitError("toolbox_utxo_invalid_params",{error:"Address is required"});try{return(await IX(`${GX(Z)}/dashboards/address/${X}?transaction_details=true`,B))[X]}catch{return{address:{balance:0,transaction_count:0},utxo:[]}}}async function yZ({address:X,chain:Z,apiKey:B}){return(await nX({address:X,apiKey:B,chain:Z}))?.address.balance||0}async function uX({chain:X,apiKey:Z,txHash:B}){if(!B)throw new U.SwapKitError("toolbox_utxo_invalid_params",{error:"TxHash is required"});try{return(await IX(`${GX(X)}/raw/transaction/${B}`,Z))?.[B]?.raw_transaction||""}catch(G){let $=G instanceof Error?G.message:String(G);return console.error(`Failed to fetch raw transaction: ${$}`),""}}async function FZ({chain:X,address:Z,apiKey:B,offset:G=0,limit:$=30}){return(await IX(`${GX(X)}/outputs?q=recipient(${Z}),is_spent(false),value(..2000000000000000)&s=value(desc)&fields=is_spent,transaction_hash,index,value,script_hex,block_id,spending_signature_hex&limit=${$}&offset=${G}`,B)).map(({is_spent:q,script_hex:W,block_id:T,transaction_hash:Y,index:z,value:D,spending_signature_hex:C})=>({hash:Y,index:z,is_confirmed:T!==-1,is_spent:q,script_hex:W,txHex:C,value:D}))}function AZ(X){return X.reduce((Z,B)=>Z+B.value,0)}function cX(X,Z){let B=[...X].sort((G,$)=>$.value-G.value);if(Z){let G=[],$=0;for(let Q of B)if(G.push(Q),$+=Q.value,$>=Z)break;return G}return B}async function rX({chain:X,address:Z,apiKey:B,targetValue:G,accumulativeValue:$=0,offset:Q=0,limit:J=30}){if(!Z)throw new U.SwapKitError("toolbox_utxo_invalid_params",{error:"Address is required"});try{let j=await FZ({address:Z,apiKey:B,chain:X,limit:J,offset:Q,targetValue:G}),W=j.length<J,T=j.filter(({is_spent:_})=>!_),Y=AZ(T),z=$+Y,D=G&&z>=G;if(W||D)return cX(T,G);let C=await rX({accumulativeValue:z,address:Z,apiKey:B,chain:X,limit:J,offset:Q+J,targetValue:G}),H=[...T,...C];return cX(H,G)}catch(j){let q=j instanceof Error?j.message:String(j);return console.error(`Failed to fetch unspent UTXOs: ${q}`),[]}}async function kZ({address:X,chain:Z,apiKey:B,fetchTxHex:G=!0,targetValue:$}){let Q=await rX({address:X,apiKey:B,chain:Z,targetValue:$}),J=[];for(let{hash:j,index:q,script_hex:W,value:T}of Q){let Y;if(G)Y=await uX({apiKey:B,chain:Z,txHash:j});J.push({address:X,hash:j,index:q,txHex:Y,value:T,witnessUtxo:{script:Buffer.from(W,"hex"),value:T}})}return J}function v(X){let Z=U.SKConfig.get("apiKeys").blockchair||"";return U.warnOnce({condition:!Z,id:"no_blockchair_api_key_warning",warning:"No Blockchair API key found. Functionality will be limited."}),{broadcastTx:(B)=>vZ({chain:X,txHash:B}),getAddressData:(B)=>nX({address:B,apiKey:Z,chain:X}),getBalance:(B)=>yZ({address:B,apiKey:Z,chain:X}),getRawTx:(B)=>uX({apiKey:Z,chain:X,txHash:B}),getSuggestedTxFee:()=>OZ(X),getUtxos:(B)=>kZ({...B,apiKey:Z,chain:X})}}function EZ(X){return X}function F(){return function(Z){switch(Z){case U.Chain.Bitcoin:return oX.networks.bitcoin;case U.Chain.BitcoinCash:return l.default.bitcoincash.main.toBitcoinJS();case U.Chain.Dash:return l.default.dash.main.toBitcoinJS();case U.Chain.Litecoin:return l.default.litecoin.main.toBitcoinJS();case U.Chain.Dogecoin:{let B={private:70615956,public:70617039},G=l.default.dogecoin.test;return G.versions.bip32=B,l.default.dogecoin.main.toBitcoinJS()}case U.Chain.Zcash:return pX.networks.zcash;default:throw new U.SwapKitError("toolbox_utxo_not_supported",{chain:Z})}}}var pX,U,oX,l;var dX=N(()=>{CX();pX=require("@bitgo/utxo-lib"),U=require("@swapkit/helpers"),oX=require("bitcoinjs-lib"),l=m(require("coininfo"))});function NX(X){try{return JX(X),!0}catch{return!1}}function OX(X){return JX(X)?.network}function h(X){let Z=JX(X);if(Z?.format==="legacy")return X;return wZ(Z)}function i(X){let Z=JX(X);return PZ(Z)}function JX(X){try{let Z=fZ(X);if(Z)return Z}catch{}try{let Z=RZ(X);if(Z)return Z}catch{}throw new MX.SwapKitError("toolbox_utxo_invalid_address",{address:X})}function fZ(X){try{let Z=_X.default.decode(X);if(Z.length!==21)throw new MX.SwapKitError("toolbox_utxo_invalid_address",{address:X});let B=Z[0],G=Array.prototype.slice.call(Z,1);switch(B){case K.legacy.mainnet.p2pkh:return{format:"legacy",hash:G,network:"mainnet",type:"p2pkh"};case K.legacy.mainnet.p2sh:return{format:"legacy",hash:G,network:"mainnet",type:"p2sh"};case K.legacy.testnet.p2pkh:return{format:"legacy",hash:G,network:"testnet",type:"p2pkh"};case K.legacy.testnet.p2sh:return{format:"legacy",hash:G,network:"testnet",type:"p2sh"};case K.bitpay.mainnet.p2pkh:return{format:"bitpay",hash:G,network:"mainnet",type:"p2pkh"};case K.bitpay.mainnet.p2sh:return{format:"bitpay",hash:G,network:"mainnet",type:"p2sh"};default:return}}catch{return}}function RZ(X){if(X.indexOf(":")!==-1)try{return iX(X)}catch{}else{let Z=["bitcoincash","bchtest","bchreg"];for(let B of Z)try{return iX(`${B}:${X}`)}catch{}}return}function iX(X){try{let{hash:Z,prefix:B,type:G}=HX.default.decode(X);return{format:"cashaddr",hash:Array.prototype.slice.call(Z,0),network:B==="bitcoincash"?"mainnet":"testnet",type:G==="P2PKH"?"p2pkh":"p2sh"}}catch{return}}function wZ(X){let Z=K.legacy[X.network][X.type],B=Buffer.alloc(1+X.hash.length);return B[0]=Z,B.set(X.hash,1),_X.default.encode(B)}function PZ(X){let Z=X.network==="mainnet"?"bitcoincash":"bchtest",B=X.type==="p2pkh"?"P2PKH":"P2SH",G=new Uint8Array(X.hash);return HX.default.encode(Z,B,G)}var MX,_X,HX,vX,K;var sX=N(()=>{MX=require("@swapkit/helpers"),_X=m(require("bs58check")),HX=m(require("cashaddrjs"));((B)=>{B.Mainnet="mainnet";B.Testnet="testnet"})(vX||={});K={["legacy"]:{["mainnet"]:{["p2pkh"]:0,["p2sh"]:5},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}},["bitpay"]:{["mainnet"]:{["p2pkh"]:28,["p2sh"]:40},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}}}});function A(X){let Z=Buffer.from(X,"utf8");return jX.script.compile([jX.opcodes.OP_RETURN,Z])}var aX,jX,VZ=1000,qX=10,tX=10,bZ=41,KZ=107,WX,QX,$X,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 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?s(X[0].address):"P2PKH",$=X.filter((J)=>J.value>=QX["type"in J?J.type:"P2PKH"]*Math.ceil(B)).reduce((J,j)=>J+w(j),0),Q=Z?.reduce((J,j)=>J+a(j),0)||$X[G];return qX+$+Q},w=(X)=>{if("type"in X)return QX[X.type];if("address"in X&&X.address)return QX[s(X.address)];return bZ+KZ},a=(X,Z)=>{if(X?.script)return tX+X.script.length+(X.script.length>=74?2:1);if(Z)return $X[Z];return $X.P2PKH};var yX=N(()=>{aX=require("@swapkit/helpers"),jX=require("bitcoinjs-lib");((B)=>{B.P2PKH="P2PKH";B.P2WPKH="P2WPKH"})(WX||={});QX={["P2PKH"]:148,["P2WPKH"]:68},$X={["P2PKH"]:34,["P2WPKH"]:31}});function LX(X){switch(X){case k.Chain.Bitcoin:case k.Chain.BitcoinCash:return 550;case k.Chain.Dash:case k.Chain.Litecoin:return 5500;case k.Chain.Dogecoin:return 1e5;case k.Chain.Zcash:return 546;default:throw new k.SwapKitError("toolbox_utxo_not_supported",{chain:X})}}function E({inputs:X,outputs:Z,feeRate:B=1,chain:G=k.Chain.Bitcoin,changeAddress:$=""}){let Q=Math.ceil(B),J=X[0]&&"address"in X[0]&&X[0].address?s(X[0].address):"P2PKH",j=X.filter((D)=>w(D)*Q<=D.value),q=qX+Z.reduce((D,C)=>D+a(C,J),0),W=Z.reduce((D,C)=>D+C.value,0),T=q*Q,Y=0,z=[];for(let D of j){let C=w(D),H=Q*C;T+=H,Y+=D.value,z.push(D);let _=T+W;if(Y<_)continue;let V=Y-_,b=Q*a({address:"",value:0},J);if(V>b){let VX=b+T,bX=Y-(W+VX);if(bX>Math.max(w({})*Q,LX(G)))return{fee:VX,inputs:z,outputs:Z.concat({address:$,value:bX})}}return{fee:T,inputs:z,outputs:Z}}return{fee:Q*c({feeRate:Q,inputs:X,outputs:Z})}}var k;var eX=N(()=>{yX();k=require("@swapkit/helpers")});var p=N(()=>{dX();sX();eX();yX()});function S(X){return X.replace(/(bchtest:|bitcoincash:)/,"")}function P(X){let Z=S(X);return NX(Z)&&OX(Z)==="mainnet"}function o(X){try{if(X.startsWith("z"))return console.warn("Shielded Zcash addresses (z-addresses) are not supported. Use transparent addresses (t1/t3) only."),!1;let Z=TX.networks.zcash;try{return TX.address.toOutputScript(X,Z),!0}catch{let B=XZ.default.decode(X);if(B.length<21)return!1;let G=B[0];return G===Z.pubKeyHash||G===Z.scriptHash}}catch{return!1}}var TX,XZ;var t=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&&!e.includes(B)&&{witnessUtxo:J.witnessUtxo},q=e.includes(B)&&{nonWitnessUtxo:J.txHex?Buffer.from(J.txHex,"hex"):void 0};G.addInput({hash:J.hash,index:J.index,...j,...q})}for(let J of Z){let j="address"in J&&J.address?J.address:$,q=J.script;if(q&&!Q)continue;let W=q?{script:Q,value:0}:{address:j,value:J.value};f.initEccLib(YX.default),G.addOutput(W)}return{inputs:X,psbt:G}}async function JZ({assetValue:X,recipient:Z,memo:B,feeRate:G,sender:$,fetchTxHex:Q=!1}){let J=X.chain,j=B?await A(B):null,q=await jZ({assetValue:X,fetchTxHex:Q,memo:B,recipient:Z,sender:$}),{inputs:W,outputs:T}=E({...q,chain:J,feeRate:G});if(!(W&&T))throw new L.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue:X,sender:$});let Y=await F(),z=new f.Psbt({network:Y(J)});if(J===L.Chain.Dogecoin)z.setMaximumFeeRate(650000000);let{psbt:D,inputs:C}=await GZ({chain:J,compiledMemo:j,inputs:W,outputs:T,psbt:z,sender:$});return{inputs:C,psbt:D,utxos:q.inputs}}async function QZ(){let X=await F();return function({address:B,chain:G}){if(G===L.Chain.BitcoinCash)return P(B);if(G===L.Chain.Zcash)return o(B);try{return f.initEccLib(YX.default),f.address.toOutputScript(B,X(G)),!0}catch{return!1}}}async function SZ({chain:X,phrase:Z,derivationPath:B}){let G=(await XX(X))({derivationPath:B,phrase:Z});async function $(J){return await J.signAllInputs(G),J}function Q(){return AX(X)(G)}return{getAddress:Q,signTransaction:$}}async function x({chain:X,...Z}){let B="phrase"in Z?Z.phrase:void 0,G="index"in Z?Z.index||0:0,$=L.derivationPathToString("derivationPath"in Z&&Z.derivationPath?Z.derivationPath:L.updateDerivationPath(L.NetworkDerivationPath[X],{index:G})),Q=B?await SZ({chain:X,derivationPath:$,phrase:B}):("signer"in Z)?Z.signer:void 0;function J(){return Promise.resolve(Q?.getAddress())}let j=await QZ(),q=await XX(X);return{accumulative:E,broadcastTx:(W)=>v(X).broadcastTx(W),calculateTxSize:c,createKeysForPath:q,createTransaction:JZ,estimateMaxSendableAmount:xZ(X),estimateTransactionFee:gZ(X),getAddress:J,getAddressFromKeys:AX(X),getBalance:lX(X),getFeeRates:()=>ZX(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 ZX(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 ZX(X))[Q],W=j?.utxo.map((C)=>({...C,hash:"",type:"P2PKH"})).filter((C)=>C.value>Math.max(LX(X),w(C)*q));if(!W?.length)return L.AssetValue.from({chain:X});let T=L.AssetValue.from({chain:X,value:W.reduce((C,H)=>C+H.value,0)}),Y=typeof J==="number"?Array.from({length:J},()=>({address:B,value:0})):J;if(G){let C=await A(G);Y.push({address:B,script:C,value:0})}let D=c({feeRate:q,inputs:W,outputs:Y})*q;return T.sub(D)}}function gZ(X){return async(Z)=>{let B=await $Z(Z);return L.AssetValue.from({chain:X,value:L.SwapKitNumber.fromBigInt(BigInt(B.fee),8).getValue("string")})}}async function XX(X){let Z=await F();switch(X){case L.Chain.BitcoinCash:return function({phrase:G,derivationPath:$=`${L.DerivationPath.BCH}/0`,wif:Q}){let J=Z(X);if(Q)return DX.ECPair.fromWIF(Q,J);if(!G)throw new L.SwapKitError("toolbox_utxo_invalid_params",{error:"No phrase provided"});return DX.HDNode.fromSeedBuffer(Buffer.from(FX.mnemonicToSeedSync(G)),J).derivePath($).keyPair};case L.Chain.Bitcoin:case L.Chain.Dogecoin:case L.Chain.Litecoin:case L.Chain.Zcash:case L.Chain.Dash:return function({phrase:G,wif:$,derivationPath:Q}){if(!($||G))throw new L.SwapKitError("toolbox_utxo_invalid_params",{error:"Either phrase or wif must be provided"});let J=BZ.ECPairFactory(YX.default),j=Z(X);if($)return J.fromWIF($,j);let q=FX.mnemonicToSeedSync(G),W=ZZ.HDKey.fromMasterSeed(q,j).derive(Q);if(!W.privateKey)throw new L.SwapKitError("toolbox_utxo_invalid_params",{error:"Could not get private key from phrase"});return J.fromPrivateKey(Buffer.from(W.privateKey),{network:j})};default:throw new L.SwapKitError("toolbox_utxo_not_supported",{chain:X})}}function AX(X){let Z=F();return function(G){if(!G)throw new L.SwapKitError("toolbox_utxo_invalid_params",{error:"Keys must be provided"});let $=e.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 ZX(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 ZX(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 ZX(Q))[L.FeeOption.Fastest],j=$||e.includes(Q),q=X.getBaseValue("number"),W=Math.ceil(q+J*5000);return{inputs:await v(Q).getUtxos({address:G,fetchTxHex:j,targetValue:W}),outputs:[{address:Z,value:q},...B?[{address:"",script:await A(B),value:0}]:[]]}}var YX,DX,ZZ,FX,L,f,BZ,e;var BX=N(()=>{CX();p();t();YX=m(require("@bitcoinerlab/secp256k1")),DX=require("@psf/bitcoincashjs-lib"),ZZ=require("@scure/bip32"),FX=require("@scure/bip39"),L=require("@swapkit/helpers"),f=require("bitcoinjs-lib"),BZ=require("ecpair"),e=[L.Chain.Dash,L.Chain.Dogecoin,L.Chain.Zcash,L.Chain.BitcoinCash]});function g(X){return S(i(X))}function lZ(X){function Z({builder:G,utxos:$}){return $.forEach((Q,J)=>{G.sign(J,X,void 0,65,Q.witnessUtxo?.value)}),G.build()}return{getAddress:()=>{let G=X.getAddress(0);return Promise.resolve(g(G))},signTransaction:Z}}async function kX(X){let Z="phrase"in X?X.phrase:void 0,B="index"in X?X.index||0:0,G=M.derivationPathToString("derivationPath"in X&&X.derivationPath?X.derivationPath:M.updateDerivationPath(M.NetworkDerivationPath[O],{index:B})),$=Z?(await XX(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(i(z)))}return{...T,broadcastTx:W,buildTx:cZ,createTransaction:WZ,getAddress:J,getAddressFromKeys:pZ,getBalance:Y,getFeeRates:q,stripPrefix:S,stripToCashAddress:g,transfer:hZ({broadcastTx:W,getFeeRates:q,signer:Q}),validateAddress:P}}async function WZ({assetValue:X,recipient:Z,memo:B,feeRate:G,sender:$}){if(!P(Z))throw new M.SwapKitError("toolbox_utxo_invalid_address",{address:Z});let Q=Math.ceil(X.getBaseValue("number")+G*7500),J=await v(O).getUtxos({address:g($),fetchTxHex:!0,targetValue:Q}),j=B?await A(B):null,q=[];q.push({address:Z,value:X.getBaseValue("number")});let{inputs:W,outputs:T}=E({chain:O,feeRate:G,inputs:J,outputs:q});if(!(W&&T))throw new M.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue:X,sender:$});let Y=await F(),z=new n.TransactionBuilder(Y(O));await Promise.all(W.map(async(D)=>{let C=await v(O).getRawTx(D.hash);z.addInput(n.Transaction.fromBuffer(Buffer.from(C,"hex")),D.index)}));for(let D of T){let C="address"in D&&D.address?D.address:h($),H=await F(),_=n.address.toOutputScript(h(C),H(O));z.addOutput(_,D.value)}if(j)z.addOutput(j,0);return{builder:z,utxos:W}}function hZ({broadcastTx:X,getFeeRates:Z,signer:B}){return async function({recipient:$,assetValue:Q,feeOptionKey:J=M.FeeOption.Fast,...j}){let q=await B?.getAddress();if(!(B&&q))throw new M.SwapKitError("toolbox_utxo_no_signer");if(!$)throw new M.SwapKitError("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});let W=j.feeRate||(await Z())[J],{builder:T,utxos:Y}=await WZ({...j,assetValue:Q,feeRate:W,recipient:$,sender:q}),D=(await B.signTransaction({builder:T,utxos:Y})).toHex();return X(D)}}async function cZ({assetValue:X,recipient:Z,memo:B,feeRate:G,sender:$,setSigHashType:Q}){let J=i(Z);if(!P(J))throw new M.SwapKitError("toolbox_utxo_invalid_address",{address:J});let j=Math.ceil(X.getBaseValue("number")+G*7500),q=await v(O).getUtxos({address:g($),fetchTxHex:!1,targetValue:j}),W=Number(G.toFixed(0)),T=B?await A(B):null,Y=[];if(Y.push({address:h(Z),value:X.getBaseValue("number")}),T)Y.push({script:T,value:0});let{inputs:z,outputs:D}=E({chain:O,feeRate:W,inputs:q,outputs:Y});if(!(z&&D))throw new M.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue:X,sender:$});let C=await F(),H=new qZ.Psbt({network:C(O)});for(let{hash:_,index:V,witnessUtxo:b}of z)H.addInput({hash:_,index:V,sighashType:Q?65:void 0,witnessUtxo:b});for(let _ of D){let V="address"in _&&_.address?_.address:h($),b=_.script?T?{script:T,value:0}:void 0:{address:V,value:_.value};if(b)H.addOutput(b)}return{inputs:z,psbt:H,utxos:q}}function pZ(X){let Z=X.getAddress(0);return g(Z)}var n,M,qZ,O;var UX=N(()=>{p();BX();t();n=require("@psf/bitcoincashjs-lib"),M=require("@swapkit/helpers"),qZ=require("bitcoinjs-lib"),O=M.Chain.BitcoinCash});function YZ(){return y.networks.zcash}function DZ(){return{bech32:void 0,bip32:{private:76066276,public:76067358},messagePrefix:`\x18ZCash Signed Message:
2
- `,pubKeyHash:28,scriptHash:28,wif:128}}function oZ({phrase:X,derivationPath:Z}){let B=fX.mnemonicToSeedSync(X),$=EX.HDKey.fromMasterSeed(B).derive(Z);if(!$.privateKey)throw new I.SwapKitError("toolbox_utxo_invalid_params");let Q=DZ(),J=y.ECPair.fromPrivateKey(Buffer.from($.privateKey),{network:Q}),j=y.crypto.hash160(J.publicKey),{isStagenet:q}=I.SKConfig.get("envs"),W=q?Buffer.from([29,37]):Buffer.from([28,184]),T=Buffer.concat([W,j]),Y=TZ.default.encode(T);return{getAddress:()=>Promise.resolve(Y),signTransaction:(z)=>{let D=z.signAllInputs(J);return Promise.resolve(D)}}}function nZ({inputs:X,outputs:Z,psbt:B,sender:G,compiledMemo:$}){for(let Q of X){let J=!!Q.witnessUtxo&&{witnessUtxo:{...Q.witnessUtxo,value:BigInt(Q.value)}},j=!Q.witnessUtxo&&{nonWitnessUtxo:Q.txHex?Buffer.from(Q.txHex,"hex"):void 0};B.addInput({hash:Q.hash,index:Q.index,...J,...j})}for(let Q of Z){let J="address"in Q&&Q.address?Q.address:G,j=Q.script;if(j&&!$)continue;let q=j?{script:$,value:0n}:{script:y.address.toOutputScript(J,YZ()),value:BigInt(Q.value)};B.addOutput(q)}return{inputs:X,psbt:B}}async function LZ(X){let{assetValue:Z,recipient:B,memo:G,feeRate:$,sender:Q,fetchTxHex:J}=X,j=G?A(G):null,q=await v(I.Chain.Zcash).getUtxos({address:Q,fetchTxHex:J!==!1}),W=[{address:B,value:Number(Z.getBaseValue("string"))},...j?[{script:j,value:0}]:[]],{inputs:T,outputs:Y}=E({chain:I.Chain.Zcash,changeAddress:Q,feeRate:$,inputs:q,outputs:W});if(!(T&&Y))throw new I.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue:Z,sender:Q});let z=y.bitgo.createPsbtForNetwork({network:YZ()},{version:455}),D=1307332080,C=Buffer.concat([Buffer.of(252),Buffer.of(5),Buffer.from("BITGO"),Buffer.of(0)]),H=Buffer.allocUnsafe(4);H.writeUInt32LE(D>>>0,0),z.addUnknownKeyValToGlobal({key:C,value:H});let{psbt:_,inputs:V}=await nZ({compiledMemo:j,inputs:T,outputs:Y,psbt:z,sender:Q});return{inputs:V,outputs:Y,psbt:_}}async function RX(X){let Z=await u.match(X).with({signer:u.P.not(u.P.nullish)},({signer:J})=>Promise.resolve(J)).with({phrase:u.P.string},({phrase:J,derivationPath:j,index:q=0})=>{let W=j||I.NetworkDerivationPath[I.Chain.Zcash]||[44,133,0,0,0],T=I.updateDerivationPath(W,{index:q}),Y=I.derivationPathToString(T);return oZ({derivationPath:Y,phrase:J})}).otherwise(()=>Promise.resolve(void 0)),B=await x({chain:I.Chain.Zcash,signer:Z});async function G({recipient:J,assetValue:j,feeOptionKey:q=I.FeeOption.Fast,...W}){let T=await Z?.getAddress();if(!(Z&&T))throw new I.SwapKitError("toolbox_utxo_no_signer");let Y=W.feeRate||(await B.getFeeRates())[q],{psbt:z}=await LZ({...W,assetValue:j,feeRate:Y,recipient:J,sender:T}),D=await Z.signTransaction(z);return D.finalizeAllInputs(),B.broadcastTx(D.extractTransaction().toHex())}function $({phrase:J,derivationPath:j="m/44'/133'/0'/0/0"}){let q=fX.mnemonicToSeedSync(J),T=EX.HDKey.fromMasterSeed(q).derive(j);if(!T.privateKey)throw new I.SwapKitError("toolbox_utxo_invalid_params");let Y=DZ();return y.ECPair.fromPrivateKey(Buffer.from(T.privateKey),{network:Y})}function Q({phrase:J,derivationPath:j="m/44'/133'/0'/0/0"}){return $({derivationPath:j,phrase:J}).toWIF()}return{...B,createKeysForPath:$,createTransaction:LZ,getPrivateKeyFromMnemonic:Q,transfer:G,validateAddress:o}}var y,EX,fX,I,TZ,u;var wX=N(()=>{p();BX();t();y=require("@bitgo/utxo-lib"),EX=require("@scure/bip32"),fX=require("@scure/bip39"),I=require("@swapkit/helpers"),TZ=m(require("bs58check")),u=require("ts-pattern")});async function uZ(X,Z){switch(X){case R.Chain.BitcoinCash:return await kX(Z||{});case R.Chain.Zcash:return await RX(Z);case R.Chain.Bitcoin:case R.Chain.Dogecoin:case R.Chain.Litecoin:case R.Chain.Dash:return await x({chain:X,...Z});default:throw new R.SwapKitError("toolbox_utxo_not_supported",{chain:X})}}var R;var UZ=N(()=>{UX();BX();wX();UX();t();R=require("@swapkit/helpers")});var rZ={};_Z(rZ,{validateZcashAddress:()=>o,toLegacyAddress:()=>h,toCashAddress:()=>i,stripToCashAddress:()=>g,stripPrefix:()=>S,nonSegwitChains:()=>e,isValidAddress:()=>NX,getUtxoToolbox:()=>uZ,getUtxoNetwork:()=>F,getUtxoApi:()=>v,getUTXOAddressValidator:()=>QZ,getScriptTypeForAddress:()=>s,getOutputSize:()=>a,getInputSize:()=>w,getDustThreshold:()=>LX,getCreateKeysForPath:()=>XX,detectAddressNetwork:()=>OX,createZcashToolbox:()=>RX,createUTXOToolbox:()=>x,createCustomUtxoApi:()=>EZ,createBCHToolbox:()=>kX,compileMemo:()=>A,calculateTxSize:()=>c,bchValidateAddress:()=>P,addressFromKeysGetter:()=>AX,addInputsAndOutputs:()=>GZ,accumulative:()=>E,UtxoNetwork:()=>vX,UTXOScriptType:()=>WX,TX_OVERHEAD:()=>qX,OutputSizes:()=>$X,OP_RETURN_OVERHEAD:()=>tX,MIN_TX_FEE:()=>VZ,InputSizes:()=>QX});module.exports=MZ(rZ);var dZ=N(()=>{p();UZ();UX();BX();wX()});dZ();
3
-
4
- //# debugId=C66AE75E301E956F64756E2164756E21
5
- //# sourceMappingURL=index.cjs.map
1
+ var c2=Object.create;var{getPrototypeOf:u2,defineProperty:WX,getOwnPropertyNames:q2,getOwnPropertyDescriptor:o2}=Object,L2=Object.prototype.hasOwnProperty;function z2(X){return this[X]}var p2,n2,m0=(X,$,J)=>{var Z=X!=null&&typeof X==="object";if(Z){var j=$?p2??=new WeakMap:n2??=new WeakMap,G=j.get(X);if(G)return G}J=X!=null?c2(u2(X)):{};let Q=$||!X||!X.__esModule?WX(J,"default",{value:X,enumerable:!0}):J;for(let q of q2(X))if(!L2.call(Q,q))WX(Q,q,{get:z2.bind(X,q),enumerable:!0});if(Z)j.set(X,Q);return Q},d2=(X)=>{var $=(Y2??=new WeakMap).get(X),J;if($)return $;if($=WX({},"__esModule",{value:!0}),X&&typeof X==="object"||typeof X==="function"){for(var Z of q2(X))if(!L2.call($,Z))WX($,Z,{get:z2.bind(X,Z),enumerable:!(J=o2(X,Z))||J.enumerable})}return Y2.set(X,$),$},Y2;var r2=(X)=>X;function i2(X,$){this[X]=r2.bind(null,$)}var s2=(X,$)=>{for(var J in $)WX(X,J,{get:$[J],enumerable:!0,configurable:!0,set:i2.bind($,J)})};var R=(X,$)=>()=>(X&&($=X(X=0)),$);function W2({deriveAddress:X,getBalance:$,getUtxos:J}){async function Z(q){let{count:Y,startIndex:z=0,change:L=!1}=q,W=[];for(let B=0;B<Y;B++){let _=await X({change:L,index:z+B});if(_)W.push(_)}return W}async function j(q){let{gapLimit:Y=20,change:z=!1}=q??{},L=[],W=0,B=0;while(W<Y){let _=await X({change:z,index:B});if(!_)break;if((await $(_.address)).some((P)=>P.getValue("number")>0))L.push(_),W=0;else W++;B++}return L}async function G(q=20){let[Y,z]=await Promise.all([j({change:!1,gapLimit:q}),j({change:!0,gapLimit:q})]),L=[...Y,...z],W=await Promise.all(L.map(async(_)=>{let I=(await $(_.address)).reduce((P,a)=>P+a.getValue("number"),0);return{..._,balance:I}})),B=W.reduce((_,C)=>_+C.balance,0);return{addresses:W,total:B}}async function Q(q=20){let[Y,z]=await Promise.all([j({change:!1,gapLimit:q}),j({change:!0,gapLimit:q})]),L=[...Y,...z];return(await Promise.all(L.map(async(B)=>{return(await J(B.address)).map((C)=>({...C,address:B.address,derivationIndex:B.index,isChange:B.change}))}))).flat()}return{deriveAddresses:Z,getAggregatedBalance:G,getAggregatedUtxos:Q,scanForAddresses:j}}function B2(){function X(){let $=Date.now(),J=cX||$;return cX=J,$>cX?$:J+1}return a2+X().toString(36)}function _2(X){return async function(J,Z=!0){let j=await U2.SwapKitApi.getChainBalance({address:J,chain:X,scamFilter:Z}),{baseDecimal:G}=BX.getChainConfig(X),Q=j.map(({identifier:Y,value:z,decimal:L})=>{return new BX.AssetValue({decimal:L||G,identifier:Y,value:z})});if(!Q.some((Y)=>Y.isGasAsset))return[BX.AssetValue.from({chain:X}),...Q];return Q}}var BX,U2,a2,cX=0;var uX=R(()=>{BX=require("@swapkit/helpers"),U2=require("@swapkit/helpers/api"),a2=typeof process<"u"&&process.pid?process.pid.toString(36):""});async function t2({chain:X,txHash:$}){let J=`${_X(X)}/push/transaction`,Z=JSON.stringify({data:$});try{let j=await N.RequestClient.post(J,{body:Z,headers:{"Content-Type":"application/json"}});if(j.context.code!==200)throw new N.SwapKitError("toolbox_utxo_broadcast_failed",{error:j.context.error||"Transaction broadcast failed"});return j.data?.transaction_hash||$}catch(j){let G=await N.getRPCUrl(X);if(G){let Q=JSON.stringify({id:B2(),jsonrpc:"2.0",method:"sendrawtransaction",params:[$]}),q=await N.RequestClient.post(G,{body:Q,headers:{"Content-Type":"application/json"}});if(q.error)throw new N.SwapKitError("toolbox_utxo_broadcast_failed",{error:q.error?.message});if(q.result.includes('"code":-26'))throw new N.SwapKitError("toolbox_utxo_invalid_transaction",{error:"Transaction amount was too low"});return q.result}throw j}}function _X(X){return`https://api.blockchair.com/${e2(X)}`}function M2(X){switch(X){case N.Chain.Bitcoin:return 5;case N.Chain.Dogecoin:return 1e4;case N.Chain.Litecoin:return 1;case N.Chain.Zcash:return 1;default:return 2}}function e2(X){switch(X){case N.Chain.BitcoinCash:return"bitcoin-cash";case N.Chain.Litecoin:return"litecoin";case N.Chain.Dash:return"dash";case N.Chain.Dogecoin:return"dogecoin";case N.Chain.Zcash:return"zcash";case N.Chain.Polkadot:return"polkadot";default:return"bitcoin"}}async function X0(X){try{let{feePerKb:$}=await N.RequestClient.get(`https://app.bitgo.com/api/v2/${X.toLowerCase()}/tx/fee`),J=$/1000;return Math.max(J,M2(X))}catch{return M2(X)}}async function FX(X,$){let J=await N.RequestClient.get(`${X}${$?`${X.includes("?")?"&":"?"}key=${$}`:""}`);if(!J||J.context.code!==200)throw new N.SwapKitError("toolbox_utxo_api_error",{error:`Failed to query ${X}`});return J.data}async function D2({address:X,chain:$,apiKey:J}){if(!X)throw new N.SwapKitError("toolbox_utxo_invalid_params",{error:"Address is required"});try{return(await FX(`${_X($)}/dashboards/address/${X}?transaction_details=true`,J))[X]}catch{return{address:{balance:0,transaction_count:0},utxo:[]}}}async function $0({address:X,chain:$,apiKey:J}){return(await D2({address:X,apiKey:J,chain:$}))?.address.balance||0}async function C2({chain:X,apiKey:$,txHash:J}){if(!J)throw new N.SwapKitError("toolbox_utxo_invalid_params",{error:"TxHash is required"});try{return(await FX(`${_X(X)}/raw/transaction/${J}`,$))?.[J]?.raw_transaction||""}catch(Z){let j=Z instanceof Error?Z.message:String(Z);return console.error(`Failed to fetch raw transaction: ${j}`),""}}async function Z0({chain:X,apiKey:$,txHash:J}){if(!J)throw new N.SwapKitError("toolbox_utxo_invalid_params",{error:"TxHash is required"});let j=(await FX(`${_X(X)}/dashboards/transaction/${J}`,$))?.[J];if(!j)throw new N.SwapKitError("toolbox_utxo_tx_not_found",{txHash:J});let{transaction:G,inputs:Q,outputs:q}=j,Y=Q.map((L)=>L.spending_sequence),z=G.is_rbf===!0||Y.some((L)=>L<J0);return{blockId:G.block_id,confirmed:G.block_id!==-1,fee:G.fee,inputs:Q,isRBF:z,outputs:q,sequences:Y,size:G.size,txid:G.hash,weight:G.weight}}async function j0({chain:X,address:$,apiKey:J,offset:Z=0,limit:j=30}){return(await FX(`${_X(X)}/outputs?q=recipient(${$}),is_spent(false)&s=value(desc)&fields=is_spent,transaction_hash,index,value,script_hex,block_id,spending_signature_hex&limit=${j}&offset=${Z}`,J)).map(({is_spent:Y,script_hex:z,block_id:L,transaction_hash:W,index:B,value:_,spending_signature_hex:C})=>({hash:W,index:B,is_confirmed:L!==-1,is_spent:Y,script_hex:z,txHex:C,value:_}))}function Q0(X){return X.reduce(($,J)=>$+J.value,0)}function N2(X,$){let J=[...X].sort((Z,j)=>j.value-Z.value);if($){let Z=[],j=0;for(let G of J)if(Z.push(G),j+=G.value,j>=$)break;return Z}return J}async function H2({chain:X,address:$,apiKey:J,targetValue:Z,accumulativeValue:j=0,offset:G=0,limit:Q=30}){if(!$)throw new N.SwapKitError("toolbox_utxo_invalid_params",{error:"Address is required"});try{let q=await j0({address:$,apiKey:J,chain:X,limit:Q,offset:G,targetValue:Z}),z=q.length<Q,L=q.filter(({is_spent:P})=>!P),W=Q0(L),B=j+W,_=Z&&B>=Z;if(z||_)return N2(L,Z);let C=await H2({accumulativeValue:B,address:$,apiKey:J,chain:X,limit:Q,offset:G+Q,targetValue:Z}),I=[...L,...C];return N2(I,Z)}catch(q){let Y=q instanceof Error?q.message:String(q);return console.error(`Failed to fetch unspent UTXOs: ${Y}`),[]}}async function G0({address:X,chain:$,apiKey:J,fetchTxHex:Z=!0,targetValue:j}){let G=await H2({address:X,apiKey:J,chain:$,targetValue:j}),Q=[];for(let{hash:q,index:Y,script_hex:z,value:L}of G){let W;if(Z)W=await C2({apiKey:J,chain:$,txHash:q});Q.push({address:X,hash:q,index:Y,txHex:W,value:L,witnessUtxo:{script:Buffer.from(z,"hex"),value:L}})}return Q}function f(X){let $=N.SKConfig.get("apiKeys").blockchair||"";return N.warnOnce({condition:!$,id:"no_blockchair_api_key_warning",warning:"No Blockchair API key found. Functionality will be limited."}),{broadcastTx:(J)=>t2({chain:X,txHash:J}),getAddressData:(J)=>D2({address:J,apiKey:$,chain:X}),getBalance:(J)=>$0({address:J,apiKey:$,chain:X}),getRawTx:(J)=>C2({apiKey:$,chain:X,txHash:J}),getSuggestedTxFee:()=>X0(X),getTransactionDetails:(J)=>Z0({apiKey:$,chain:X,txHash:J}),getUtxos:(J)=>G0({...J,apiKey:$,chain:X})}}function Y0(X){return X}function q0(){return function($){switch($){case N.Chain.Bitcoin:return t.NETWORKS.bitcoin;case N.Chain.BitcoinCash:return t.NETWORKS.bitcoinCash;case N.Chain.Dash:return t.NETWORKS.dash;case N.Chain.Litecoin:return t.NETWORKS.litecoin;case N.Chain.Dogecoin:return t.NETWORKS.dogecoin;case N.Chain.Zcash:return t.NETWORKS.zcash;default:throw new N.SwapKitError("toolbox_utxo_not_supported",{chain:$})}}}var N,t,J0=4294967294;var I2=R(()=>{uX();N=require("@swapkit/helpers"),t=require("@swapkit/utxo-signer")});function W0(X,$,J){return l.encodeCashAddr({hash:J,prefix:X,type:L0[$]})}function U0(X){let $=l.decodeCashAddr(X),J=z0[$.type];if(!J)throw Error(`Unknown CashAddr type: ${$.type}`);return{hash:$.hash,prefix:$.prefix,type:J}}var l,L0,z0,oX;var O2=R(()=>{l=require("@swapkit/utxo-signer"),L0={P2PKH:l.CashAddrType.P2PKH,P2SH:l.CashAddrType.P2SH},z0={[l.CashAddrType.P2PKH]:"P2PKH",[l.CashAddrType.P2SH]:"P2SH"};oX={decode:U0,encode:W0}});function dX(X){try{return fX(X),!0}catch{return!1}}function rX(X){return fX(X)?.network}function h(X){let $=fX(X);if($?.format==="legacy")return X;return M0($)}function MX(X){let $=fX(X);return N0($)}function fX(X){try{let $=B0(X);if($)return $}catch{}try{let $=_0(X);if($)return $}catch{}throw new pX.SwapKitError("toolbox_utxo_invalid_address",{address:X})}function B0(X){try{let $=P2.decode(X);if($.length!==21)throw new pX.SwapKitError("toolbox_utxo_invalid_address",{address:X});let J=$[0],Z=Array.prototype.slice.call($,1);switch(J){case e.legacy.mainnet.p2pkh:return{format:"legacy",hash:Z,network:"mainnet",type:"p2pkh"};case e.legacy.mainnet.p2sh:return{format:"legacy",hash:Z,network:"mainnet",type:"p2sh"};case e.legacy.testnet.p2pkh:return{format:"legacy",hash:Z,network:"testnet",type:"p2pkh"};case e.legacy.testnet.p2sh:return{format:"legacy",hash:Z,network:"testnet",type:"p2sh"};case e.bitpay.mainnet.p2pkh:return{format:"bitpay",hash:Z,network:"mainnet",type:"p2pkh"};case e.bitpay.mainnet.p2sh:return{format:"bitpay",hash:Z,network:"mainnet",type:"p2sh"};default:return}}catch{return}}function _0(X){if(X.indexOf(":")!==-1)try{return T2(X)}catch{}else{let $=["bitcoincash","bchtest","bchreg"];for(let J of $)try{return T2(`${J}:${X}`)}catch{}}return}function T2(X){try{let{hash:$,prefix:J,type:Z}=oX.decode(X);return{format:"cashaddr",hash:Array.prototype.slice.call($,0),network:J==="bitcoincash"?"mainnet":"testnet",type:Z==="P2PKH"?"p2pkh":"p2sh"}}catch{return}}function M0(X){let $=e.legacy[X.network][X.type],J=Buffer.alloc(1+X.hash.length);return J[0]=$,J.set(X.hash,1),P2.encode(J)}function N0(X){let $=X.network==="mainnet"?"bitcoincash":"bchtest",J=X.type==="p2pkh"?"P2PKH":"P2SH",Z=new Uint8Array(X.hash);return oX.encode($,J,Z)}var V2,k2,pX,P2,nX,e;var b2=R(()=>{O2();V2=require("@noble/hashes/sha2.js"),k2=require("@scure/base"),pX=require("@swapkit/helpers"),P2=k2.createBase58check(V2.sha256);((J)=>{J.Mainnet="mainnet";J.Testnet="testnet"})(nX||={});e={["legacy"]:{["mainnet"]:{["p2pkh"]:0,["p2sh"]:5},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}},["bitpay"]:{["mainnet"]:{["p2pkh"]:28,["p2sh"]:40},["testnet"]:{["p2pkh"]:111,["p2sh"]:196}}}});function y(X){let $=new Uint8Array(Buffer.from(X,"utf8"));return F2.Script.encode(["RETURN",$])}var E2,F2,D0=1000,RX=10,yX=2,f2=10,C0=41,H0=107,wX,vX,NX,jX=(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 E2.SwapKitError("toolbox_utxo_invalid_address",{address:X})},XX=({inputs:X,outputs:$,feeRate:J})=>{let Z=X[0]&&"address"in X[0]&&X[0].address?jX(X[0].address):"P2PKH",G=(J?X.filter((z)=>z.value>=vX["type"in z&&z.type?z.type:"P2PKH"]*Math.ceil(J)):X).reduce((z,L)=>z+n(L),0),Q=$?.reduce((z,L)=>z+DX(L),0)||NX[Z],q=RX+G+Q;return Z==="P2WPKH"?Math.ceil(q+yX/4):q},n=(X)=>{if("type"in X&&X.type)return vX[X.type];if("address"in X&&X.address)return vX[jX(X.address)];return C0+H0},DX=(X,$)=>{if(X?.script)return f2+X.script.length+(X.script.length>=74?2:1);if($)return NX[$];if("address"in X&&X.address)return NX[jX(X.address)];return NX.P2PKH};var iX=R(()=>{E2=require("@swapkit/helpers"),F2=require("@swapkit/utxo-signer");((J)=>{J.P2PKH="P2PKH";J.P2WPKH="P2WPKH"})(wX||={});vX={["P2PKH"]:148,["P2WPKH"]:68},NX={["P2PKH"]:34,["P2WPKH"]:31}});function CX(X){switch(X){case g.Chain.Bitcoin:case g.Chain.BitcoinCash:return 550;case g.Chain.Dash:case g.Chain.Litecoin:return 5500;case g.Chain.Dogecoin:return 1e5;case g.Chain.Zcash:return 546;default:throw new g.SwapKitError("toolbox_utxo_not_supported",{chain:X})}}function S({inputs:X,outputs:$,feeRate:J=1,chain:Z=g.Chain.Bitcoin,changeAddress:j=""}){let G=X[0]&&"address"in X[0]&&X[0].address?jX(X[0].address):"P2PKH",Q=X.filter((C)=>n(C)*J<=C.value),Y=G==="P2WPKH"?Math.ceil(yX/4):0,z=RX+Y+$.reduce((C,I)=>C+DX(I),0),L=$.reduce((C,I)=>C+I.value,0),W=z*J,B=0,_=[];for(let C of Q){let I=n(C),P=J*I;W+=P,B+=C.value,_.push(C);let a=W+L;if(B<a)continue;let xX=B-a,VX=J*DX({address:j,value:0});if(xX>VX){let M=VX+W,H=B-(L+Math.ceil(M));if(H>Math.max(n({value:0})*J,CX(Z)))return{fee:Math.ceil(M),inputs:_,outputs:$.concat({address:j,value:H})}}return{fee:Math.ceil(W),inputs:_,outputs:$}}return{fee:Math.ceil(J*XX({inputs:X,outputs:$}))}}var g;var v2=R(()=>{iX();g=require("@swapkit/helpers")});var QX=R(()=>{I2();b2();v2();iX()});function $X(X){return X.replace(/(bchtest:|bitcoincash:)/,"")}function d(X){let $=$X(X);return dX($)&&rX($)==="mainnet"}function GX(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 J=AX.Address(AX.ZCASH_NETWORK).decode(X);return J.type==="pkh"||J.type==="sh"}catch{return!1}}var AX;var HX=R(()=>{QX();AX=require("@swapkit/utxo-signer")});function tX({address:X,chain:$}){return aX.match($).with(U.Chain.BitcoinCash,()=>d(X)).with(U.Chain.Zcash,()=>GX(X)).otherwise(()=>{try{return D.Address(w($)).decode(X),!0}catch{return!1}})}function w(X){return aX.match(X).with(U.Chain.Bitcoin,()=>D.NETWORKS.bitcoin).with(U.Chain.BitcoinCash,()=>D.NETWORKS.bitcoinCash).with(U.Chain.Dash,()=>D.NETWORKS.dash).with(U.Chain.Dogecoin,()=>D.NETWORKS.dogecoin).with(U.Chain.Litecoin,()=>D.NETWORKS.litecoin).with(U.Chain.Zcash,()=>D.NETWORKS.zcash).exhaustive()}function I0({phrase:X,derivationPath:$,network:J,seed:Z}){let j=Z??KX.mnemonicToSeedSync(X),Q=sX.HDKey.fromMasterSeed(j,J.bip32).derive($);if(!Q.privateKey)throw new U.SwapKitError("toolbox_utxo_invalid_params",{error:"Could not derive private key from phrase"});return Q.privateKey}function R2(X){return y2.secp256k1.getPublicKey(X,!0)}function eX({publicKey:X,chain:$,network:J}){if($===U.Chain.BitcoinCash){let G=D.p2pkh(X,J);if(!G.hash)throw new U.SwapKitError("toolbox_utxo_invalid_address",{error:"Could not derive BCH address hash"});return D.encodeCashAddr({hash:G.hash,prefix:D.CashAddrPrefix.MAINNET,type:D.CashAddrType.P2PKH}).replace(/^bitcoincash:/,"")}let j=!IX.includes($)?D.p2wpkh(X,J):D.p2pkh(X,J);if(!j.address)throw new U.SwapKitError("toolbox_utxo_invalid_address",{error:"Could not derive address"});return j.address}function YX({phrase:X,derivationPath:$,chain:J,wif:Z,seed:j}){let G=w(J);if(Z){let z=D.WIF(G).decode(Z),L=R2(z);return{privateKey:z,publicKey:L}}if(!X)throw new U.SwapKitError("toolbox_utxo_invalid_params",{error:"Either phrase or wif must be provided"});let Q=$||U.derivationPathToString(U.NetworkDerivationPath[J]),q=I0({derivationPath:Q,network:G,phrase:X,seed:j}),Y=R2(q);return{privateKey:q,publicKey:Y}}function O0(X,$){return D.WIF(w($)).encode(X)}function T0({phrase:X,derivationPath:$,chain:J,seed:Z}){let j=$.split("/");if(j.length<4)throw new U.SwapKitError("toolbox_utxo_invalid_params",{error:`Derivation path must have at least 4 levels (got ${j.length}): ${$}`});let G=w(J),Q=Z??KX.mnemonicToSeedSync(X),q=sX.HDKey.fromMasterSeed(Q,G.bip32),Y=j.slice(0,4).join("/");return q.derive(Y)}function i({inputs:X,outputs:$,chain:J,tx:Z,sender:j,compiledMemo:G,enableRBF:Q=!1}){let q=w(J),Y=!IX.includes(J),z=Q?D.RBF_SEQUENCE:void 0,L=new Set;for(let W of X){let B=`${W.hash}:${W.index}`;if(L.has(B))throw new U.SwapKitError("toolbox_utxo_invalid_params",{error:"Duplicate input detected"});L.add(B);let _=typeof W.hash==="string"?r.hex.decode(W.hash):W.hash;if(Y&&W.witnessUtxo)Z.addInput({index:W.index,sequence:z,txid:_,witnessUtxo:{amount:BigInt(W.witnessUtxo.value),script:W.witnessUtxo.script}});else if(W.txHex)Z.addInput({index:W.index,nonWitnessUtxo:r.hex.decode(W.txHex),sequence:z,txid:_,...J===U.Chain.BitcoinCash?{sighashType:D.BCHSigHash.ALL}:{}});else throw new U.SwapKitError("toolbox_utxo_invalid_params",{error:"Input requires either witnessUtxo or txHex for non-segwit chains"})}for(let W of $){let B="address"in W&&W.address?W.address:j;if(J===U.Chain.BitcoinCash)B=h(B);if(W.script){if(G)Z.addOutput({amount:0n,script:G})}else Z.addOutputAddress(B,BigInt(W.value),q)}return{inputs:X,tx:Z}}async function qX(X){let $=await f(X).getSuggestedTxFee();return{[U.FeeOption.Average]:$,[U.FeeOption.Fast]:U.applyFeeMultiplier($,U.FeeOption.Fast),[U.FeeOption.Fastest]:U.applyFeeMultiplier($,U.FeeOption.Fastest)}}async function w2({assetValue:X,recipient:$,memo:J,sender:Z,fetchTxHex:j=!1}){let G=X.chain,Q=(await qX(G))[U.FeeOption.Fastest],q=j||IX.includes(G),Y=X.getBaseValue("number"),z=Math.ceil(Y+Q*5000);return{inputs:await f(G).getUtxos({address:Z,fetchTxHex:q,targetValue:z}),outputs:[{address:$,value:Y},...J?[{address:"",script:y(J),value:0}]:[]]}}async function A2({assetValue:X,recipient:$,memo:J,feeRate:Z,sender:j,fetchTxHex:G=!1,enableRBF:Q=!1}){let q=X.chain,Y=J?y(J):null,z=await w2({assetValue:X,fetchTxHex:G,memo:J,recipient:$,sender:j}),{inputs:L,outputs:W}=S({...z,chain:q,feeRate:Z});if(!(L&&W))throw new U.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue:X,sender:j});let B=new D.Transaction({allowLegacyWitnessUtxo:!0,allowUnknownOutputs:!!Y,version:1}),{inputs:_,tx:C}=i({chain:q,compiledMemo:Y,enableRBF:Q,inputs:L,outputs:W,sender:j,tx:B});return{inputs:_,tx:C,utxos:z.inputs}}async function S2({assetValue:X,feeOptionKey:$=U.FeeOption.Fast,feeRate:J,memo:Z,sender:j,recipient:G}){let Q=X.chain,q=await w2({assetValue:X,memo:Z,recipient:G,sender:j}),Y=J?Math.floor(J):(await qX(Q))[$];return S({...q,chain:Q,feeRate:Y})}function V0(X){return async function({from:J,memo:Z,feeRate:j,feeOptionKey:G=U.FeeOption.Fast,recipients:Q=1}){let q=await f(X).getAddressData(J),Y=j?Math.ceil(j):(await qX(X))[G],z=q?.utxo.map((I)=>({...I,hash:"",type:"P2PKH"})).filter((I)=>I.value>Math.max(CX(X),n(I)*Y));if(!z?.length)return U.AssetValue.from({chain:X});let L=BigInt(z.reduce((I,P)=>I+P.value,0)),W=U.AssetValue.from({chain:X,value:L}),B=typeof Q==="number"?Array.from({length:Q},()=>({address:J,value:0})):Q;if(Z)B.push({address:J,script:y(Z),value:0});let _=XX({inputs:z,outputs:B}),C=U.AssetValue.from({chain:X,value:BigInt(_*Y)});return W.sub(C)}}function k0(X){return async function(J){let{fee:Z}=await S2(J);return U.AssetValue.from({chain:X,value:U.SwapKitNumber.fromBigInt(BigInt(Z),8).getValue("string")})}}function P0({chain:X,phrase:$,derivationPath:J,seed:Z}){let j=w(X),{privateKey:G,publicKey:Q}=YX({chain:X,derivationPath:J,phrase:$,seed:Z}),q=X===U.Chain.BitcoinCash?[D.BCHSigHash.ALL]:[D.SigHash.ALL];return{getAddress:()=>eX({chain:X,network:j,publicKey:Q}),privateKey:G,publicKey:Q,signTransaction:(Y)=>{return Y.sign(G,q),Y}}}function b0(X,$){return async function({memo:Z,recipient:j,feeOptionKey:G,feeRate:Q,assetValue:q,enableRBF:Y=!1}){let z=$?.getAddress();if(!($&&z))throw new U.SwapKitError("toolbox_utxo_no_signer");if(!j)throw new U.SwapKitError("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});U.warnOnce({condition:Y&&!SX.includes(X),id:`rbf_not_supported_${X}`,warning:`RBF (Replace-by-Fee) is not reliably supported on ${X}. Transaction will be created without RBF signaling.`});let L=Y&&SX.includes(X),W=Q||(await qX(X))[G||U.FeeOption.Fast],{tx:B}=await A2({assetValue:q,enableRBF:L,feeRate:W,memo:Z,recipient:j,sender:z});return $.signTransaction(B),B.finalize(),f(X).broadcastTx(r.hex.encode(B.extract()))}}function X2(X){return($)=>tX({address:$,chain:X})}function $2(X){let $=w(X);return function(Z){if(!Z)throw new U.SwapKitError("toolbox_utxo_invalid_params",{error:"Keys must be provided"});return eX({chain:X,network:$,publicKey:Z.publicKey})}}function s({chain:X,...$}){let J="phrase"in $?$.phrase:void 0,Z="index"in $?$.index||0:0,j=J?KX.mnemonicToSeedSync(J):void 0,G=U.derivationPathToString("derivationPath"in $&&$.derivationPath?$.derivationPath:U.updateDerivationPath(U.NetworkDerivationPath[X],{index:Z})),Q=J?P0({chain:X,derivationPath:G,phrase:J,seed:j}):void 0,q="signer"in $?$.signer:void 0,Y=J?YX({chain:X,derivationPath:G,phrase:J,seed:j}):void 0;function z(){if(Q)return Promise.resolve(Q.getAddress());if(q)return q.getAddress();return Promise.resolve(void 0)}let L=J?T0({chain:X,derivationPath:G,phrase:J,seed:j}):void 0;function W(){if(!L)return;return L.publicExtendedKey}function B({index:M,change:H=!1}){if(!L)return;if(!Number.isInteger(M)||M<0)throw RangeError(`index must be a non-negative integer, got: ${M}`);let b=w(X),k=L.deriveChild(Number(H)).deriveChild(M);if(!k.publicKey)throw new U.SwapKitError("toolbox_utxo_invalid_params",{error:"Could not derive public key"});let O=eX({chain:X,network:b,publicKey:k.publicKey}),A=r.hex.encode(k.publicKey);return{address:O,change:H,index:M,pubkey:A}}async function _(M){if(!SX.includes(X))return{reason:`RBF is not supported on ${X}`,supported:!1};let H=await f(X).getTransactionDetails(M);return{canReplace:H.isRBF&&!H.confirmed,confirmed:H.confirmed,enabled:H.isRBF,fee:H.fee,sequences:H.sequences,supported:!0}}async function C({txid:M,newFeeRate:H,recipient:b,memo:k}){if(!SX.includes(X))throw new U.SwapKitError("toolbox_utxo_rbf_not_supported",{chain:X});let O=await f(X).getTransactionDetails(M);if(!O.isRBF)throw new U.SwapKitError("toolbox_utxo_tx_not_replaceable",{txid:M});if(O.confirmed)throw new U.SwapKitError("toolbox_utxo_tx_already_confirmed",{blockId:O.blockId,txid:M});let A=O.inputs.reduce((v,p)=>v+p.value,0),K=O.outputs.find((v)=>v.recipient===b)?.value||0;if(K===0)throw new U.SwapKitError("toolbox_utxo_invalid_params",{error:"Could not determine send amount from original transaction"});let ZX=await Promise.all(O.inputs.map(async(v)=>{let p=await f(X).getRawTx(v.transaction_hash);return{hash:v.transaction_hash,index:v.index,txHex:p,value:v.value,witnessUtxo:void 0}})),kX=k?y(k):null,lX=XX({feeRate:H,inputs:ZX.map((v)=>({...v,type:"P2WPKH"})),outputs:[{address:b,value:K}]}),x=Math.ceil(lX*H);if(x<=O.fee)throw new U.SwapKitError("toolbox_utxo_rbf_fee_too_low",{newFee:x,originalFee:O.fee});let zX=x-O.fee,u=K-zX;if(u<=0)throw new U.SwapKitError("toolbox_utxo_rbf_insufficient_change");let PX=new D.Transaction({allowLegacyWitnessUtxo:!0,version:1}),bX=[{address:b,value:u},...k?[{address:"",script:y(k),value:0}]:[]],EX=A-u-x,o=await z();if(EX>CX(X)&&o)bX.push({address:o,value:EX});return i({chain:X,compiledMemo:kX,inputs:ZX,outputs:bX,sender:o||b,tx:PX}),{feeDelta:zX,newFee:x,originalFee:O.fee,tx:PX}}async function I({txid:M,newFeeRate:H,recipient:b,memo:k}){if(!Q)throw new U.SwapKitError("toolbox_utxo_no_signer");let{tx:O,originalFee:A,newFee:JX}=await C({memo:k,newFeeRate:H,recipient:b,txid:M});Q.signTransaction(O),O.finalize();let K=await f(X).broadcastTx(r.hex.encode(O.extract()));return{newFee:JX,originalFee:A,txid:K}}function P({index:M,change:H=!1}){if(!L)return;return L.deriveChild(Number(H)).deriveChild(M).privateKey||void 0}function a({tx:M,inputDerivations:H}){if(!L)throw new U.SwapKitError("toolbox_utxo_no_signer");let b=X===U.Chain.BitcoinCash?[D.BCHSigHash.ALL]:[D.SigHash.ALL];for(let k=0;k<H.length;k++){let O=H[k];if(!O)continue;let{derivationIndex:A,isChange:JX}=O,K=P({change:JX,index:A});if(!K)throw new U.SwapKitError("toolbox_utxo_invalid_params",{error:`Could not derive private key for input ${k} at index ${A}`});M.signIdx(K,k,b)}return M}async function xX({utxos:M,recipient:H,assetValue:b,memo:k,feeRate:O,feeOptionKey:A,changeAddress:JX}){if(!L)throw new U.SwapKitError("toolbox_utxo_no_signer");let K=O||(await qX(X))[A||U.FeeOption.Fast],ZX=k?y(k):null,kX=[{address:H,value:b.getBaseValue("number")}];if(ZX)kX.push({address:"",script:ZX,value:0});let lX=M.map(({hash:o,index:v,value:p,txHex:h2,witnessUtxo:hX})=>({hash:o,index:v,txHex:h2,value:p,witnessUtxo:hX?{script:hX.script,value:hX.value}:void 0})),{inputs:x,outputs:zX}=S({chain:X,feeRate:K,inputs:lX,outputs:kX});if(!(x&&zX))throw new U.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue:b,sender:"multiple addresses"});let u=new D.Transaction({allowLegacyWitnessUtxo:!0,version:1}),PX=M[0]?.address,bX=JX||await z()||PX||H;i({chain:X,compiledMemo:ZX,inputs:x,outputs:zX,sender:bX,tx:u});let EX=x.map((o)=>{let v=M.find((p)=>p.hash===o.hash&&p.index===o.index);return v?{derivationIndex:v.derivationIndex,isChange:v.isChange}:{derivationIndex:0,isChange:!1}});return a({inputDerivations:EX,tx:u}),u.finalize(),f(X).broadcastTx(r.hex.encode(u.extract()))}function VX({address:M,gapLimit:H=20}){if(!L)return;for(let b=0;b<H;b++){let k=B({change:!1,index:b}),O=B({change:!0,index:b}),A=k?.address===M?!1:O?.address===M;if(k?.address===M||O?.address===M)return{change:A,index:b}}return}return{accumulative:S,broadcastTx:(M)=>f(X).broadcastTx(M),bumpFee:I,calculateTxSize:XX,createKeysForPath:(M)=>YX({...M,chain:X}),createReplacementTransaction:C,createTransaction:A2,deriveAddressAtIndex:B,derivePrivateKeyAtIndex:P,estimateMaxSendableAmount:V0(X),estimateTransactionFee:k0(X),getAddress:z,getAddressFromKeys:$2(X),getBalance:_2(X),getExtendedPublicKey:W,getFeeRates:()=>qX(X),getInputsOutputsFee:S2,getNetworkForChain:()=>w(X),getPrivateKeyFromMnemonic:(M)=>O0(YX({...M,chain:X}).privateKey,X),isRBFEnabled:_,keys:Y,resolveDerivationIndex:VX,signAndBroadcastTransaction:async(M)=>{if(!Q)throw new U.SwapKitError("toolbox_utxo_no_signer");return Q.signTransaction(M),M.finalize(),await f(X).broadcastTx(r.hex.encode(M.extract()))},signTransactionWithMultipleKeys:a,transfer:b0(X,Q),transferFromMultipleAddresses:xX,validateAddress:X2(X)}}var y2,r,sX,KX,U,D,aX,IX,SX;var OX=R(()=>{uX();QX();HX();y2=require("@noble/curves/secp256k1.js"),r=require("@scure/base"),sX=require("@scure/bip32"),KX=require("@scure/bip39"),U=require("@swapkit/helpers"),D=require("@swapkit/utxo-signer"),aX=require("ts-pattern"),IX=[U.Chain.Dash,U.Chain.Dogecoin,U.Chain.Zcash,U.Chain.BitcoinCash],SX=[U.Chain.Bitcoin]});function TX(X){return $X(MX(X))}function E0(X){let $=w(m);function J(j){return j.sign(X.privateKey,[F.BCHSigHash.ALL]),j}function Z(){let j=F.p2pkh(X.publicKey,$);if(!j.hash)throw new E.SwapKitError("toolbox_utxo_invalid_address",{error:"Could not derive BCH address hash"});let G=F.encodeCashAddr({hash:j.hash,prefix:F.CashAddrPrefix.MAINNET,type:F.CashAddrType.P2PKH});return Promise.resolve(G.replace(/^bitcoincash:/,""))}return{getAddress:Z,signTransaction:J}}function J2(X){let $="phrase"in X?X.phrase:void 0,J="index"in X?X.index||0:0,Z=E.derivationPathToString("derivationPath"in X&&X.derivationPath?X.derivationPath:E.updateDerivationPath(E.NetworkDerivationPath[m],{index:J})),j=$?YX({chain:m,derivationPath:Z,phrase:$}):void 0,G=j?E0(j):("signer"in X)?X.signer:void 0;function Q(){return Promise.resolve(G?.getAddress())}let{getBalance:q,getFeeRates:Y,broadcastTx:z,...L}=s({chain:m});function W(B,_=!0){return q($X(MX(B)))}return{...L,broadcastTx:z,buildTx:f0,createTransaction:g2,getAddress:Q,getAddressFromKeys:v0,getBalance:W,getFeeRates:Y,stripPrefix:$X,stripToCashAddress:TX,transfer:F0({broadcastTx:z,getFeeRates:Y,signer:G}),validateAddress:d}}async function g2({assetValue:X,recipient:$,memo:J,feeRate:Z,sender:j}){if(!d($))throw new E.SwapKitError("toolbox_utxo_invalid_address",{address:$});let G=Math.ceil(X.getBaseValue("number")+Z*7500),Q=await f(m).getUtxos({address:TX(j),fetchTxHex:!0,targetValue:G}),q=J?y(J):null,Y=[],z=h($);if(Y.push({address:z,value:X.getBaseValue("number")}),q)Y.push({script:q,value:0});let{inputs:L,outputs:W}=S({chain:m,feeRate:Z,inputs:Q,outputs:Y});if(!(L&&W))throw new E.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue:X,sender:j});let B=new F.Transaction({allowLegacyWitnessUtxo:!0,allowUnknownOutputs:!!q,version:1}),_=h(j),{inputs:C,tx:I}=i({chain:m,compiledMemo:q,inputs:L,outputs:W.map((P)=>("address"in P)&&P.address?{...P,address:h(P.address)}:P),sender:_,tx:B});return{inputs:C,tx:I,utxos:L}}function F0({broadcastTx:X,getFeeRates:$,signer:J}){return async function({recipient:j,assetValue:G,feeOptionKey:Q=E.FeeOption.Fast,...q}){let Y=await J?.getAddress();if(!(J&&Y))throw new E.SwapKitError("toolbox_utxo_no_signer");if(!j)throw new E.SwapKitError("toolbox_utxo_invalid_params",{error:"Recipient address must be provided"});let z=q.feeRate||(await $())[Q],{tx:L}=await g2({...q,assetValue:G,feeRate:z,recipient:j,sender:Y}),W=await J.signTransaction(L);return W.finalize(),X(K2.hex.encode(W.extract()))}}async function f0({assetValue:X,recipient:$,memo:J,feeRate:Z,sender:j}){let G=MX($);if(!d(G))throw new E.SwapKitError("toolbox_utxo_invalid_address",{address:G});let Q=Math.ceil(X.getBaseValue("number")+Z*7500),q=await f(m).getUtxos({address:TX(j),fetchTxHex:!0,targetValue:Q}),Y=Number(Z.toFixed(0)),z=J?y(J):null,L=[];if(L.push({address:h($),value:X.getBaseValue("number")}),z)L.push({script:z,value:0});let{inputs:W,outputs:B}=S({chain:m,feeRate:Y,inputs:q,outputs:L});if(!(W&&B))throw new E.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue:X,sender:j});let _=new F.Transaction({allowLegacyWitnessUtxo:!0,allowUnknownOutputs:!!z,version:1}),{inputs:C,tx:I}=i({chain:m,compiledMemo:z,inputs:W,outputs:B,sender:h(j),tx:_});return{inputs:C,tx:I,utxos:q}}function v0(X){let $=F.NETWORKS.bitcoinCash,J=F.p2pkh(X.publicKey,$);if(!J.hash)throw new E.SwapKitError("toolbox_utxo_invalid_address",{error:"Could not derive BCH address hash"});return F.encodeCashAddr({hash:J.hash,prefix:F.CashAddrPrefix.MAINNET,type:F.CashAddrType.P2PKH}).replace(/^bitcoincash:/,"")}var K2,E,F,m;var gX=R(()=>{QX();OX();HX();K2=require("@scure/base"),E=require("@swapkit/helpers"),F=require("@swapkit/utxo-signer"),m=E.Chain.BitcoinCash});function x2(){let{isStagenet:X}=V.SKConfig.get("envs");return X?T.ZCASH_TEST_NETWORK:T.ZCASH_NETWORK}function y0(X){return R0.encode(X)}function w0({phrase:X,derivationPath:$}){let J=j2.mnemonicToSeedSync(X),j=Z2.HDKey.fromMasterSeed(J).derive($);if(!j.privateKey||!j.publicKey)throw new V.SwapKitError("toolbox_utxo_invalid_params");let{privateKey:G,publicKey:Q}=j,q=T.utils.hash160(Q),{isStagenet:Y}=V.SKConfig.get("envs"),z=Y?new Uint8Array([29,37]):new Uint8Array([28,184]),L=new Uint8Array(z.length+q.length);L.set(z,0),L.set(q,z.length);let W=y0(L);return{getAddress:()=>Promise.resolve(W),signTransaction:(B)=>{if(B instanceof T.PCZT)return B.signAllInputs(G,Q,T.ZcashSigHash.ALL),B.finalizeAllInputs(),Promise.resolve(B.extract());return B.signAllInputs(G,Q,T.ZcashSigHash.ALL),Promise.resolve(B)}}}function A0({inputs:X,outputs:$,tx:J,sender:Z,compiledMemo:j}){let G=x2();for(let Q of X){let q=T.Address(G).decode(Z),Y=T.OutScript.encode(q);J.addInput({index:Q.index,script:Y,sequence:4294967295,txid:mX.hex.decode(Q.hash),value:BigInt(Q.value)})}for(let Q of $){let q="address"in Q&&Q.address?Q.address:Z,Y=Q.script;if(Y&&!j)continue;if(Y&&j)J.addOutput({amount:0n,script:j});else J.addOutputAddress(q,BigInt(Q.value),G)}return{inputs:X,tx:J}}async function m2(X){let{assetValue:$,recipient:J,memo:Z,feeRate:j,sender:G,fetchTxHex:Q}=X,q=Z?y(Z):null,Y=await f(V.Chain.Zcash).getUtxos({address:G,fetchTxHex:Q!==!1}),z=[{address:J,value:Number($.getBaseValue("string"))},...q?[{script:q,value:0}]:[]],{inputs:L,outputs:W}=S({chain:V.Chain.Zcash,changeAddress:G,feeRate:j,inputs:Y,outputs:z});if(!(L&&W))throw new V.SwapKitError("toolbox_utxo_insufficient_balance",{assetValue:$,sender:G});let B=T.createZcashTransaction({consensusBranchId:T.ZcashConsensusBranchId.NU6_1,expiryHeight:0,lockTime:0,version:4,versionGroupId:T.ZcashVersionGroupId.SAPLING}),{tx:_,inputs:C}=A0({compiledMemo:q,inputs:L,outputs:W,sender:G,tx:B});return{inputs:C,outputs:W,tx:_}}function Q2(X){let $=LX.match(X).with({signer:LX.P.not(LX.P.nullish)},({signer:Y})=>Y).with({phrase:LX.P.string},({phrase:Y,derivationPath:z,index:L=0})=>{let W=z||V.NetworkDerivationPath[V.Chain.Zcash]||[44,133,0,0,0],B=V.updateDerivationPath(W,{index:L}),_=V.derivationPathToString(B);return w0({derivationPath:_,phrase:Y})}).otherwise(()=>{return}),J=s({chain:V.Chain.Zcash,signer:$});async function Z({recipient:Y,assetValue:z,feeOptionKey:L=V.FeeOption.Fast,...W}){let B=await $?.getAddress();if(!($&&B))throw new V.SwapKitError("toolbox_utxo_no_signer");let _=W.feeRate||(await J.getFeeRates())[L],{tx:C}=await m2({...W,assetValue:z,feeRate:_,recipient:Y,sender:B}),P=(await $.signTransaction(C)).toHex();return J.broadcastTx(P)}function j({phrase:Y,derivationPath:z="m/44'/133'/0'/0/0"}){let L=j2.mnemonicToSeedSync(Y),B=Z2.HDKey.fromMasterSeed(L).derive(z);if(!B.privateKey||!B.publicKey)throw new V.SwapKitError("toolbox_utxo_invalid_params");return{privateKey:B.privateKey,publicKey:B.publicKey}}function G({phrase:Y,derivationPath:z="m/44'/133'/0'/0/0"}){let L=j({derivationPath:z,phrase:Y}),W=x2();return T.WIF(W).encode(L.privateKey)}function Q(Y){return async function(L){if(!Y)throw new V.SwapKitError("toolbox_utxo_no_signer");return await Y.signTransaction(L)}}function q(Y){return async function(L){if(!Y)throw new V.SwapKitError("toolbox_utxo_no_signer");let W=await Y.signTransaction(L);return J.broadcastTx(W.toHex())}}return{...J,createKeysForPath:j,createTransaction:m2,getPrivateKeyFromMnemonic:G,signAndBroadcastTransaction:q($),signTransaction:Q($),transfer:Z,validateAddress:GX}}var mX,Z2,j2,V,T,LX,R0;var G2=R(()=>{QX();OX();HX();mX=require("@scure/base"),Z2=require("@scure/bip32"),j2=require("@scure/bip39"),V=require("@swapkit/helpers"),T=require("@swapkit/utxo-signer"),LX=require("ts-pattern");R0=mX.createBase58check(T.utils.sha256)});function S0(X,$){switch(X){case c.Chain.BitcoinCash:return J2($||{});case c.Chain.Zcash:return Q2($);case c.Chain.Bitcoin:case c.Chain.Dogecoin:case c.Chain.Litecoin:case c.Chain.Dash:return s({chain:X,...$});default:throw new c.SwapKitError("toolbox_utxo_not_supported",{chain:X})}}var c;var l2=R(()=>{gX();OX();G2();gX();HX();c=require("@swapkit/helpers")});var K0={};s2(K0,{validateZcashAddress:()=>GX,validateUtxoAddress:()=>tX,validateBchAddress:()=>d,toLegacyAddress:()=>h,toCashAddress:()=>MX,stripToCashAddress:()=>TX,stripPrefix:()=>$X,nonSegwitChains:()=>IX,isValidAddress:()=>dX,getUtxoToolbox:()=>S0,getUtxoNetwork:()=>q0,getUtxoApi:()=>f,getUTXOAddressValidator:()=>X2,getScriptTypeForAddress:()=>jX,getOutputSize:()=>DX,getNetworkForChain:()=>w,getInputSize:()=>n,getDustThreshold:()=>CX,detectAddressNetwork:()=>rX,createZcashToolbox:()=>Q2,createUTXOToolbox:()=>s,createHDWalletHelpers:()=>W2,createCustomUtxoApi:()=>Y0,createBCHToolbox:()=>J2,compileMemo:()=>y,calculateTxSize:()=>XX,addressFromKeysGetter:()=>$2,addInputsAndOutputs:()=>i,accumulative:()=>S,UtxoNetwork:()=>nX,UTXOScriptType:()=>wX,TX_OVERHEAD:()=>RX,SEGWIT_MARKER_FLAG_WEIGHT:()=>yX,OutputSizes:()=>NX,OP_RETURN_OVERHEAD:()=>f2,MIN_TX_FEE:()=>D0,InputSizes:()=>vX});module.exports=d2(K0);var g0=R(()=>{OX();QX();l2();gX();G2()});g0();