@shapeshiftoss/swapper 17.6.9 → 17.6.11

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 (324) hide show
  1. package/LICENSE.md +21 -0
  2. package/dist/cjs/.tsbuildinfo +1 -1
  3. package/dist/cjs/constants.js +72 -43
  4. package/dist/cjs/cowswap-utils/constants.js +3 -0
  5. package/dist/cjs/cowswap-utils/index.js +6 -0
  6. package/dist/cjs/index.d.ts +1 -0
  7. package/dist/cjs/index.js +1 -0
  8. package/dist/cjs/swappers/AcrossSwapper/AcrossSwapper.d.ts +2 -0
  9. package/dist/cjs/swappers/AcrossSwapper/AcrossSwapper.js +8 -0
  10. package/dist/cjs/swappers/AcrossSwapper/constant.d.ts +9 -0
  11. package/dist/cjs/swappers/AcrossSwapper/constant.js +50 -0
  12. package/dist/cjs/swappers/AcrossSwapper/endpoints.d.ts +2 -0
  13. package/dist/cjs/swappers/AcrossSwapper/endpoints.js +113 -0
  14. package/dist/cjs/swappers/AcrossSwapper/getTradeQuote/getTradeQuote.d.ts +3 -0
  15. package/dist/cjs/swappers/AcrossSwapper/getTradeQuote/getTradeQuote.js +31 -0
  16. package/dist/cjs/swappers/AcrossSwapper/getTradeRate/getTradeRate.d.ts +3 -0
  17. package/dist/cjs/swappers/AcrossSwapper/getTradeRate/getTradeRate.js +19 -0
  18. package/dist/cjs/swappers/AcrossSwapper/index.d.ts +1 -0
  19. package/dist/cjs/swappers/AcrossSwapper/index.js +5 -0
  20. package/dist/cjs/swappers/AcrossSwapper/utils/acrossService.d.ts +5 -0
  21. package/dist/cjs/swappers/AcrossSwapper/utils/acrossService.js +17 -0
  22. package/dist/cjs/swappers/AcrossSwapper/utils/fetchAcrossTrade.d.ts +19 -0
  23. package/dist/cjs/swappers/AcrossSwapper/utils/fetchAcrossTrade.js +27 -0
  24. package/dist/cjs/swappers/AcrossSwapper/utils/getTrade.d.ts +11 -0
  25. package/dist/cjs/swappers/AcrossSwapper/utils/getTrade.js +349 -0
  26. package/dist/cjs/swappers/AcrossSwapper/utils/types.d.ts +177 -0
  27. package/dist/cjs/swappers/AcrossSwapper/utils/types.js +17 -0
  28. package/dist/cjs/swappers/AvnuSwapper/endpoints.js +42 -14
  29. package/dist/cjs/swappers/AvnuSwapper/swapperApi/getTradeQuote.js +19 -5
  30. package/dist/cjs/swappers/AvnuSwapper/swapperApi/getTradeRate.js +17 -4
  31. package/dist/cjs/swappers/BebopSwapper/BebopSwapper.js +2 -0
  32. package/dist/cjs/swappers/BebopSwapper/endpoints.js +35 -2
  33. package/dist/cjs/swappers/BebopSwapper/executeSolanaMessage.d.ts +2 -0
  34. package/dist/cjs/swappers/BebopSwapper/executeSolanaMessage.js +47 -0
  35. package/dist/cjs/swappers/BebopSwapper/getBebopSolanaTradeQuote/getBebopSolanaTradeQuote.d.ts +4 -0
  36. package/dist/cjs/swappers/BebopSwapper/getBebopSolanaTradeQuote/getBebopSolanaTradeQuote.js +91 -0
  37. package/dist/cjs/swappers/BebopSwapper/getBebopSolanaTradeRate/getBebopSolanaTradeRate.d.ts +4 -0
  38. package/dist/cjs/swappers/BebopSwapper/getBebopSolanaTradeRate/getBebopSolanaTradeRate.js +88 -0
  39. package/dist/cjs/swappers/BebopSwapper/getBebopTradeQuote/getBebopTradeQuote.js +10 -0
  40. package/dist/cjs/swappers/BebopSwapper/getBebopTradeRate/getBebopTradeRate.js +10 -0
  41. package/dist/cjs/swappers/BebopSwapper/types.d.ts +49 -1
  42. package/dist/cjs/swappers/BebopSwapper/types.js +9 -2
  43. package/dist/cjs/swappers/BebopSwapper/utils/fetchFromBebop.d.ts +19 -1
  44. package/dist/cjs/swappers/BebopSwapper/utils/fetchFromBebop.js +86 -1
  45. package/dist/cjs/swappers/BebopSwapper/utils/helpers/helpers.d.ts +14 -2
  46. package/dist/cjs/swappers/BebopSwapper/utils/helpers/helpers.js +47 -1
  47. package/dist/cjs/swappers/ButterSwap/ButterSwap.js +1 -0
  48. package/dist/cjs/swappers/ButterSwap/endpoints.js +56 -0
  49. package/dist/cjs/swappers/ButterSwap/swapperApi/checkTradeStatus.js +19 -0
  50. package/dist/cjs/swappers/ButterSwap/swapperApi/getTradeQuote.js +44 -15
  51. package/dist/cjs/swappers/ButterSwap/swapperApi/getTradeQuote.test.js +1 -0
  52. package/dist/cjs/swappers/ButterSwap/swapperApi/getTradeRate.js +33 -16
  53. package/dist/cjs/swappers/ButterSwap/swapperApi/getTradeRate.test.js +2 -0
  54. package/dist/cjs/swappers/ButterSwap/types.d.ts +1 -0
  55. package/dist/cjs/swappers/ButterSwap/utils/helpers.js +1 -0
  56. package/dist/cjs/swappers/ButterSwap/xhr.d.ts +2 -2
  57. package/dist/cjs/swappers/ButterSwap/xhr.js +7 -2
  58. package/dist/cjs/swappers/CetusSwapper/endpoints.js +3 -8
  59. package/dist/cjs/swappers/CetusSwapper/swapperApi/getTradeQuote.js +11 -1
  60. package/dist/cjs/swappers/CetusSwapper/swapperApi/getTradeRate.js +11 -1
  61. package/dist/cjs/swappers/CetusSwapper/utils/helpers.d.ts +1 -1
  62. package/dist/cjs/swappers/CetusSwapper/utils/helpers.js +1 -1
  63. package/dist/cjs/swappers/ChainflipSwapper/constants.js +7 -3
  64. package/dist/cjs/swappers/ChainflipSwapper/utils/getQuoteOrRate.js +28 -5
  65. package/dist/cjs/swappers/ChainflipSwapper/utils/helpers.js +8 -2
  66. package/dist/cjs/swappers/CowSwapper/CowSwapper.js +1 -1
  67. package/dist/cjs/swappers/CowSwapper/getCowSwapTradeQuote/getCowSwapTradeQuote.js +11 -1
  68. package/dist/cjs/swappers/CowSwapper/getCowSwapTradeQuote/getCowSwapTradeQuote.test.js +5 -5
  69. package/dist/cjs/swappers/CowSwapper/getCowSwapTradeRate/getCowSwapTradeRate.js +10 -1
  70. package/dist/cjs/swappers/CowSwapper/utils/helpers/helpers.js +8 -2
  71. package/dist/cjs/swappers/DebridgeSwapper/DebridgeSwapper.d.ts +2 -0
  72. package/dist/cjs/swappers/DebridgeSwapper/DebridgeSwapper.js +7 -0
  73. package/dist/cjs/swappers/DebridgeSwapper/constant.d.ts +5 -0
  74. package/dist/cjs/swappers/DebridgeSwapper/constant.js +36 -0
  75. package/dist/cjs/swappers/DebridgeSwapper/endpoints.d.ts +2 -0
  76. package/dist/cjs/swappers/DebridgeSwapper/endpoints.js +217 -0
  77. package/dist/cjs/swappers/DebridgeSwapper/getTradeQuote/getTradeQuote.d.ts +3 -0
  78. package/dist/cjs/swappers/DebridgeSwapper/getTradeQuote/getTradeQuote.js +31 -0
  79. package/dist/cjs/swappers/DebridgeSwapper/getTradeRate/getTradeRate.d.ts +3 -0
  80. package/dist/cjs/swappers/DebridgeSwapper/getTradeRate/getTradeRate.js +19 -0
  81. package/dist/cjs/swappers/DebridgeSwapper/index.d.ts +1 -0
  82. package/dist/cjs/swappers/DebridgeSwapper/index.js +5 -0
  83. package/dist/cjs/swappers/DebridgeSwapper/utils/debridgeService.d.ts +5 -0
  84. package/dist/cjs/swappers/DebridgeSwapper/utils/debridgeService.js +17 -0
  85. package/dist/cjs/swappers/DebridgeSwapper/utils/fetchDebridgeSingleChainTrade.d.ts +16 -0
  86. package/dist/cjs/swappers/DebridgeSwapper/utils/fetchDebridgeSingleChainTrade.js +23 -0
  87. package/dist/cjs/swappers/DebridgeSwapper/utils/fetchDebridgeTrade.d.ts +20 -0
  88. package/dist/cjs/swappers/DebridgeSwapper/utils/fetchDebridgeTrade.js +29 -0
  89. package/dist/cjs/swappers/DebridgeSwapper/utils/getTrade.d.ts +11 -0
  90. package/dist/cjs/swappers/DebridgeSwapper/utils/getTrade.js +369 -0
  91. package/dist/cjs/swappers/DebridgeSwapper/utils/types.d.ts +155 -0
  92. package/dist/cjs/swappers/DebridgeSwapper/utils/types.js +9 -0
  93. package/dist/cjs/swappers/JupiterSwapper/swapperApi/getTradeQuote.js +32 -0
  94. package/dist/cjs/swappers/JupiterSwapper/swapperApi/getTradeRate.js +9 -0
  95. package/dist/cjs/swappers/MayachainSwapper/utils/poolAssetHelpers/poolAssetHelpers.js +1 -1
  96. package/dist/cjs/swappers/NearIntentsSwapper/NearIntentsSwapper.js +1 -0
  97. package/dist/cjs/swappers/NearIntentsSwapper/endpoints.js +31 -0
  98. package/dist/cjs/swappers/NearIntentsSwapper/swapperApi/getTradeQuote.js +48 -1
  99. package/dist/cjs/swappers/NearIntentsSwapper/swapperApi/getTradeRate.js +73 -1
  100. package/dist/cjs/swappers/NearIntentsSwapper/types.d.ts +1 -1
  101. package/dist/cjs/swappers/NearIntentsSwapper/types.js +6 -0
  102. package/dist/cjs/swappers/NearIntentsSwapper/utils/helpers/helpers.js +23 -4
  103. package/dist/cjs/swappers/PortalsSwapper/getPortalsTradeQuote/getPortalsTradeQuote.js +10 -0
  104. package/dist/cjs/swappers/PortalsSwapper/getPortalsTradeRate/getPortalsTradeRate.js +8 -3
  105. package/dist/cjs/swappers/RelaySwapper/constant.js +27 -1
  106. package/dist/cjs/swappers/RelaySwapper/utils/getRelayDefaultUserAddress.d.ts +1 -1
  107. package/dist/cjs/swappers/RelaySwapper/utils/getTrade.js +57 -7
  108. package/dist/cjs/swappers/RelaySwapper/utils/relayTokenToAssetId.js +110 -0
  109. package/dist/cjs/swappers/RelaySwapper/utils/types.d.ts +15 -0
  110. package/dist/cjs/swappers/StonfiSwapper/StonfiSwapper.d.ts +2 -0
  111. package/dist/cjs/swappers/StonfiSwapper/StonfiSwapper.js +8 -0
  112. package/dist/cjs/swappers/StonfiSwapper/endpoints.d.ts +2 -0
  113. package/dist/cjs/swappers/StonfiSwapper/endpoints.js +227 -0
  114. package/dist/cjs/swappers/StonfiSwapper/index.d.ts +4 -0
  115. package/dist/cjs/swappers/StonfiSwapper/index.js +25 -0
  116. package/dist/cjs/swappers/StonfiSwapper/swapperApi/getTradeQuote.d.ts +2 -0
  117. package/dist/cjs/swappers/StonfiSwapper/swapperApi/getTradeQuote.js +129 -0
  118. package/dist/cjs/swappers/StonfiSwapper/swapperApi/getTradeRate.d.ts +2 -0
  119. package/dist/cjs/swappers/StonfiSwapper/swapperApi/getTradeRate.js +115 -0
  120. package/dist/cjs/swappers/StonfiSwapper/types.d.ts +60 -0
  121. package/dist/cjs/swappers/StonfiSwapper/types.js +5 -0
  122. package/dist/cjs/swappers/StonfiSwapper/utils/constants.d.ts +5 -0
  123. package/dist/cjs/swappers/StonfiSwapper/utils/constants.js +8 -0
  124. package/dist/cjs/swappers/StonfiSwapper/utils/helpers.d.ts +11 -0
  125. package/dist/cjs/swappers/StonfiSwapper/utils/helpers.js +135 -0
  126. package/dist/cjs/swappers/StonfiSwapper/utils/omnistonManager.d.ts +5 -0
  127. package/dist/cjs/swappers/StonfiSwapper/utils/omnistonManager.js +20 -0
  128. package/dist/cjs/swappers/SunioSwapper/endpoints.js +1 -1
  129. package/dist/cjs/swappers/SunioSwapper/utils/getQuoteOrRate.js +14 -3
  130. package/dist/cjs/swappers/ThorchainSwapper/ThorchainSwapper.js +3 -0
  131. package/dist/cjs/swappers/ThorchainSwapper/endpoints.js +2 -0
  132. package/dist/cjs/swappers/ThorchainSwapper/generated/generatedTradableAssetMap.json +1 -0
  133. package/dist/cjs/swappers/ThorchainSwapper/utils/poolAssetHelpers/poolAssetHelpers.d.ts +1 -1
  134. package/dist/cjs/swappers/ThorchainSwapper/utils/poolAssetHelpers/poolAssetHelpers.js +2 -1
  135. package/dist/cjs/swappers/ThorchainSwapper/utils/poolAssetHelpers/poolAssetHelpers.test.js +10 -0
  136. package/dist/cjs/swappers/ZrxSwapper/getZrxTradeQuote/getZrxTradeQuote.js +9 -0
  137. package/dist/cjs/swappers/ZrxSwapper/getZrxTradeRate/getZrxTradeRate.js +9 -0
  138. package/dist/cjs/swappers/ZrxSwapper/utils/helpers/helpers.d.ts +1 -1
  139. package/dist/cjs/swappers/utils/affiliateFee.d.ts +17 -0
  140. package/dist/cjs/swappers/utils/affiliateFee.js +43 -0
  141. package/dist/cjs/swappers/utils/filterBuyAssetsBySellAssetId/filterBuyAssetsBySellAssetId.js +2 -5
  142. package/dist/cjs/swappers/utils/helpers/helpers.js +3 -0
  143. package/dist/cjs/thorchain-utils/getCallDataFromQuote.d.ts +1 -1
  144. package/dist/cjs/thorchain-utils/getL1RateOrQuote.js +87 -9
  145. package/dist/cjs/thorchain-utils/getQuote.js +8 -2
  146. package/dist/cjs/thorchain-utils/index.d.ts +2 -1
  147. package/dist/cjs/thorchain-utils/index.js +2 -1
  148. package/dist/cjs/thorchain-utils/solana/constants.d.ts +1 -0
  149. package/dist/cjs/thorchain-utils/solana/constants.js +6 -0
  150. package/dist/cjs/thorchain-utils/solana/getSolanaTransactionFees.d.ts +2 -0
  151. package/dist/cjs/thorchain-utils/solana/getSolanaTransactionFees.js +41 -0
  152. package/dist/cjs/thorchain-utils/solana/getThorTxData.d.ts +12 -0
  153. package/dist/cjs/thorchain-utils/solana/getThorTxData.js +14 -0
  154. package/dist/cjs/thorchain-utils/solana/getUnsignedSolanaTransaction.d.ts +3 -0
  155. package/dist/cjs/thorchain-utils/solana/getUnsignedSolanaTransaction.js +64 -0
  156. package/dist/cjs/thorchain-utils/solana/index.d.ts +3 -0
  157. package/dist/cjs/thorchain-utils/solana/index.js +19 -0
  158. package/dist/cjs/tron-utils/getUnsignedTronTransaction.js +22 -2
  159. package/dist/cjs/types.d.ts +118 -8
  160. package/dist/cjs/types.js +3 -0
  161. package/dist/cjs/utils.d.ts +4 -3
  162. package/dist/cjs/utils.js +35 -7
  163. package/dist/esm/.tsbuildinfo +1 -1
  164. package/dist/esm/constants.js +42 -13
  165. package/dist/esm/cowswap-utils/constants.js +3 -0
  166. package/dist/esm/cowswap-utils/index.js +6 -0
  167. package/dist/esm/index.d.ts +1 -0
  168. package/dist/esm/index.js +1 -0
  169. package/dist/esm/swappers/AcrossSwapper/AcrossSwapper.d.ts +2 -0
  170. package/dist/esm/swappers/AcrossSwapper/AcrossSwapper.js +5 -0
  171. package/dist/esm/swappers/AcrossSwapper/constant.d.ts +9 -0
  172. package/dist/esm/swappers/AcrossSwapper/constant.js +44 -0
  173. package/dist/esm/swappers/AcrossSwapper/endpoints.d.ts +2 -0
  174. package/dist/esm/swappers/AcrossSwapper/endpoints.js +107 -0
  175. package/dist/esm/swappers/AcrossSwapper/getTradeQuote/getTradeQuote.d.ts +3 -0
  176. package/dist/esm/swappers/AcrossSwapper/getTradeQuote/getTradeQuote.js +27 -0
  177. package/dist/esm/swappers/AcrossSwapper/getTradeRate/getTradeRate.d.ts +3 -0
  178. package/dist/esm/swappers/AcrossSwapper/getTradeRate/getTradeRate.js +15 -0
  179. package/dist/esm/swappers/AcrossSwapper/index.d.ts +1 -0
  180. package/dist/esm/swappers/AcrossSwapper/index.js +1 -0
  181. package/dist/esm/swappers/AcrossSwapper/utils/acrossService.d.ts +5 -0
  182. package/dist/esm/swappers/AcrossSwapper/utils/acrossService.js +11 -0
  183. package/dist/esm/swappers/AcrossSwapper/utils/fetchAcrossTrade.d.ts +19 -0
  184. package/dist/esm/swappers/AcrossSwapper/utils/fetchAcrossTrade.js +23 -0
  185. package/dist/esm/swappers/AcrossSwapper/utils/getTrade.d.ts +11 -0
  186. package/dist/esm/swappers/AcrossSwapper/utils/getTrade.js +342 -0
  187. package/dist/esm/swappers/AcrossSwapper/utils/types.d.ts +177 -0
  188. package/dist/esm/swappers/AcrossSwapper/utils/types.js +13 -0
  189. package/dist/esm/swappers/AvnuSwapper/endpoints.js +43 -15
  190. package/dist/esm/swappers/AvnuSwapper/swapperApi/getTradeQuote.js +19 -5
  191. package/dist/esm/swappers/AvnuSwapper/swapperApi/getTradeRate.js +17 -4
  192. package/dist/esm/swappers/BebopSwapper/BebopSwapper.js +2 -0
  193. package/dist/esm/swappers/BebopSwapper/endpoints.js +36 -3
  194. package/dist/esm/swappers/BebopSwapper/executeSolanaMessage.d.ts +2 -0
  195. package/dist/esm/swappers/BebopSwapper/executeSolanaMessage.js +40 -0
  196. package/dist/esm/swappers/BebopSwapper/getBebopSolanaTradeQuote/getBebopSolanaTradeQuote.d.ts +4 -0
  197. package/dist/esm/swappers/BebopSwapper/getBebopSolanaTradeQuote/getBebopSolanaTradeQuote.js +87 -0
  198. package/dist/esm/swappers/BebopSwapper/getBebopSolanaTradeRate/getBebopSolanaTradeRate.d.ts +4 -0
  199. package/dist/esm/swappers/BebopSwapper/getBebopSolanaTradeRate/getBebopSolanaTradeRate.js +84 -0
  200. package/dist/esm/swappers/BebopSwapper/getBebopTradeQuote/getBebopTradeQuote.js +10 -0
  201. package/dist/esm/swappers/BebopSwapper/getBebopTradeRate/getBebopTradeRate.js +10 -0
  202. package/dist/esm/swappers/BebopSwapper/types.d.ts +49 -1
  203. package/dist/esm/swappers/BebopSwapper/types.js +8 -1
  204. package/dist/esm/swappers/BebopSwapper/utils/fetchFromBebop.d.ts +19 -1
  205. package/dist/esm/swappers/BebopSwapper/utils/fetchFromBebop.js +85 -2
  206. package/dist/esm/swappers/BebopSwapper/utils/helpers/helpers.d.ts +14 -2
  207. package/dist/esm/swappers/BebopSwapper/utils/helpers/helpers.js +44 -1
  208. package/dist/esm/swappers/ButterSwap/ButterSwap.js +2 -1
  209. package/dist/esm/swappers/ButterSwap/endpoints.js +56 -0
  210. package/dist/esm/swappers/ButterSwap/swapperApi/checkTradeStatus.js +20 -1
  211. package/dist/esm/swappers/ButterSwap/swapperApi/getTradeQuote.js +46 -17
  212. package/dist/esm/swappers/ButterSwap/swapperApi/getTradeQuote.test.js +1 -0
  213. package/dist/esm/swappers/ButterSwap/swapperApi/getTradeRate.js +35 -18
  214. package/dist/esm/swappers/ButterSwap/swapperApi/getTradeRate.test.js +2 -0
  215. package/dist/esm/swappers/ButterSwap/types.d.ts +1 -0
  216. package/dist/esm/swappers/ButterSwap/utils/helpers.js +1 -0
  217. package/dist/esm/swappers/ButterSwap/xhr.d.ts +2 -2
  218. package/dist/esm/swappers/ButterSwap/xhr.js +8 -3
  219. package/dist/esm/swappers/CetusSwapper/endpoints.js +3 -8
  220. package/dist/esm/swappers/CetusSwapper/swapperApi/getTradeQuote.js +11 -1
  221. package/dist/esm/swappers/CetusSwapper/swapperApi/getTradeRate.js +11 -1
  222. package/dist/esm/swappers/CetusSwapper/utils/helpers.d.ts +1 -1
  223. package/dist/esm/swappers/CetusSwapper/utils/helpers.js +1 -1
  224. package/dist/esm/swappers/ChainflipSwapper/constants.js +8 -4
  225. package/dist/esm/swappers/ChainflipSwapper/utils/getQuoteOrRate.js +29 -6
  226. package/dist/esm/swappers/ChainflipSwapper/utils/helpers.js +9 -3
  227. package/dist/esm/swappers/CowSwapper/CowSwapper.js +1 -1
  228. package/dist/esm/swappers/CowSwapper/getCowSwapTradeQuote/getCowSwapTradeQuote.js +11 -1
  229. package/dist/esm/swappers/CowSwapper/getCowSwapTradeQuote/getCowSwapTradeQuote.test.js +5 -5
  230. package/dist/esm/swappers/CowSwapper/getCowSwapTradeRate/getCowSwapTradeRate.js +10 -1
  231. package/dist/esm/swappers/CowSwapper/utils/helpers/helpers.js +9 -3
  232. package/dist/esm/swappers/DebridgeSwapper/DebridgeSwapper.d.ts +2 -0
  233. package/dist/esm/swappers/DebridgeSwapper/DebridgeSwapper.js +4 -0
  234. package/dist/esm/swappers/DebridgeSwapper/constant.d.ts +5 -0
  235. package/dist/esm/swappers/DebridgeSwapper/constant.js +30 -0
  236. package/dist/esm/swappers/DebridgeSwapper/endpoints.d.ts +2 -0
  237. package/dist/esm/swappers/DebridgeSwapper/endpoints.js +211 -0
  238. package/dist/esm/swappers/DebridgeSwapper/getTradeQuote/getTradeQuote.d.ts +3 -0
  239. package/dist/esm/swappers/DebridgeSwapper/getTradeQuote/getTradeQuote.js +27 -0
  240. package/dist/esm/swappers/DebridgeSwapper/getTradeRate/getTradeRate.d.ts +3 -0
  241. package/dist/esm/swappers/DebridgeSwapper/getTradeRate/getTradeRate.js +15 -0
  242. package/dist/esm/swappers/DebridgeSwapper/index.d.ts +1 -0
  243. package/dist/esm/swappers/DebridgeSwapper/index.js +1 -0
  244. package/dist/esm/swappers/DebridgeSwapper/utils/debridgeService.d.ts +5 -0
  245. package/dist/esm/swappers/DebridgeSwapper/utils/debridgeService.js +11 -0
  246. package/dist/esm/swappers/DebridgeSwapper/utils/fetchDebridgeSingleChainTrade.d.ts +16 -0
  247. package/dist/esm/swappers/DebridgeSwapper/utils/fetchDebridgeSingleChainTrade.js +19 -0
  248. package/dist/esm/swappers/DebridgeSwapper/utils/fetchDebridgeTrade.d.ts +20 -0
  249. package/dist/esm/swappers/DebridgeSwapper/utils/fetchDebridgeTrade.js +25 -0
  250. package/dist/esm/swappers/DebridgeSwapper/utils/getTrade.d.ts +11 -0
  251. package/dist/esm/swappers/DebridgeSwapper/utils/getTrade.js +362 -0
  252. package/dist/esm/swappers/DebridgeSwapper/utils/types.d.ts +155 -0
  253. package/dist/esm/swappers/DebridgeSwapper/utils/types.js +5 -0
  254. package/dist/esm/swappers/JupiterSwapper/swapperApi/getTradeQuote.js +33 -1
  255. package/dist/esm/swappers/JupiterSwapper/swapperApi/getTradeRate.js +9 -0
  256. package/dist/esm/swappers/MayachainSwapper/utils/poolAssetHelpers/poolAssetHelpers.js +1 -1
  257. package/dist/esm/swappers/NearIntentsSwapper/NearIntentsSwapper.js +2 -1
  258. package/dist/esm/swappers/NearIntentsSwapper/endpoints.js +31 -0
  259. package/dist/esm/swappers/NearIntentsSwapper/swapperApi/getTradeQuote.js +50 -3
  260. package/dist/esm/swappers/NearIntentsSwapper/swapperApi/getTradeRate.js +75 -3
  261. package/dist/esm/swappers/NearIntentsSwapper/types.d.ts +1 -1
  262. package/dist/esm/swappers/NearIntentsSwapper/types.js +6 -0
  263. package/dist/esm/swappers/NearIntentsSwapper/utils/helpers/helpers.js +23 -4
  264. package/dist/esm/swappers/PortalsSwapper/getPortalsTradeQuote/getPortalsTradeQuote.js +10 -0
  265. package/dist/esm/swappers/PortalsSwapper/getPortalsTradeRate/getPortalsTradeRate.js +8 -3
  266. package/dist/esm/swappers/RelaySwapper/constant.js +29 -3
  267. package/dist/esm/swappers/RelaySwapper/utils/getRelayDefaultUserAddress.d.ts +1 -1
  268. package/dist/esm/swappers/RelaySwapper/utils/getTrade.js +60 -10
  269. package/dist/esm/swappers/RelaySwapper/utils/relayTokenToAssetId.js +110 -0
  270. package/dist/esm/swappers/RelaySwapper/utils/types.d.ts +15 -0
  271. package/dist/esm/swappers/StonfiSwapper/StonfiSwapper.d.ts +2 -0
  272. package/dist/esm/swappers/StonfiSwapper/StonfiSwapper.js +5 -0
  273. package/dist/esm/swappers/StonfiSwapper/endpoints.d.ts +2 -0
  274. package/dist/esm/swappers/StonfiSwapper/endpoints.js +224 -0
  275. package/dist/esm/swappers/StonfiSwapper/index.d.ts +4 -0
  276. package/dist/esm/swappers/StonfiSwapper/index.js +4 -0
  277. package/dist/esm/swappers/StonfiSwapper/swapperApi/getTradeQuote.d.ts +2 -0
  278. package/dist/esm/swappers/StonfiSwapper/swapperApi/getTradeQuote.js +125 -0
  279. package/dist/esm/swappers/StonfiSwapper/swapperApi/getTradeRate.d.ts +2 -0
  280. package/dist/esm/swappers/StonfiSwapper/swapperApi/getTradeRate.js +111 -0
  281. package/dist/esm/swappers/StonfiSwapper/types.d.ts +60 -0
  282. package/dist/esm/swappers/StonfiSwapper/types.js +2 -0
  283. package/dist/esm/swappers/StonfiSwapper/utils/constants.d.ts +5 -0
  284. package/dist/esm/swappers/StonfiSwapper/utils/constants.js +5 -0
  285. package/dist/esm/swappers/StonfiSwapper/utils/helpers.d.ts +11 -0
  286. package/dist/esm/swappers/StonfiSwapper/utils/helpers.js +124 -0
  287. package/dist/esm/swappers/StonfiSwapper/utils/omnistonManager.d.ts +5 -0
  288. package/dist/esm/swappers/StonfiSwapper/utils/omnistonManager.js +17 -0
  289. package/dist/esm/swappers/SunioSwapper/endpoints.js +1 -1
  290. package/dist/esm/swappers/SunioSwapper/utils/getQuoteOrRate.js +15 -4
  291. package/dist/esm/swappers/ThorchainSwapper/ThorchainSwapper.js +3 -0
  292. package/dist/esm/swappers/ThorchainSwapper/endpoints.js +3 -1
  293. package/dist/esm/swappers/ThorchainSwapper/generated/generatedTradableAssetMap.json +1 -0
  294. package/dist/esm/swappers/ThorchainSwapper/utils/poolAssetHelpers/poolAssetHelpers.d.ts +1 -1
  295. package/dist/esm/swappers/ThorchainSwapper/utils/poolAssetHelpers/poolAssetHelpers.js +2 -1
  296. package/dist/esm/swappers/ThorchainSwapper/utils/poolAssetHelpers/poolAssetHelpers.test.js +11 -1
  297. package/dist/esm/swappers/ZrxSwapper/getZrxTradeQuote/getZrxTradeQuote.js +9 -0
  298. package/dist/esm/swappers/ZrxSwapper/getZrxTradeRate/getZrxTradeRate.js +9 -0
  299. package/dist/esm/swappers/ZrxSwapper/utils/helpers/helpers.d.ts +1 -1
  300. package/dist/esm/swappers/utils/affiliateFee.d.ts +17 -0
  301. package/dist/esm/swappers/utils/affiliateFee.js +39 -0
  302. package/dist/esm/swappers/utils/filterBuyAssetsBySellAssetId/filterBuyAssetsBySellAssetId.js +2 -5
  303. package/dist/esm/swappers/utils/helpers/helpers.js +4 -1
  304. package/dist/esm/thorchain-utils/getCallDataFromQuote.d.ts +1 -1
  305. package/dist/esm/thorchain-utils/getL1RateOrQuote.js +88 -10
  306. package/dist/esm/thorchain-utils/getQuote.js +9 -3
  307. package/dist/esm/thorchain-utils/index.d.ts +2 -1
  308. package/dist/esm/thorchain-utils/index.js +1 -0
  309. package/dist/esm/thorchain-utils/solana/constants.d.ts +1 -0
  310. package/dist/esm/thorchain-utils/solana/constants.js +3 -0
  311. package/dist/esm/thorchain-utils/solana/getSolanaTransactionFees.d.ts +2 -0
  312. package/dist/esm/thorchain-utils/solana/getSolanaTransactionFees.js +37 -0
  313. package/dist/esm/thorchain-utils/solana/getThorTxData.d.ts +12 -0
  314. package/dist/esm/thorchain-utils/solana/getThorTxData.js +10 -0
  315. package/dist/esm/thorchain-utils/solana/getUnsignedSolanaTransaction.d.ts +3 -0
  316. package/dist/esm/thorchain-utils/solana/getUnsignedSolanaTransaction.js +60 -0
  317. package/dist/esm/thorchain-utils/solana/index.d.ts +3 -0
  318. package/dist/esm/thorchain-utils/solana/index.js +3 -0
  319. package/dist/esm/tron-utils/getUnsignedTronTransaction.js +22 -2
  320. package/dist/esm/types.d.ts +118 -8
  321. package/dist/esm/types.js +3 -0
  322. package/dist/esm/utils.d.ts +4 -3
  323. package/dist/esm/utils.js +34 -7
  324. package/package.json +27 -24
@@ -6,6 +6,7 @@ const monads_1 = require("@sniptt/monads");
6
6
  const uuid_1 = require("uuid");
7
7
  const constants_1 = require("../../../constants");
8
8
  const types_1 = require("../../../types");
9
+ const affiliateFee_1 = require("../../utils/affiliateFee");
9
10
  const helpers_1 = require("../../utils/helpers/helpers");
10
11
  const fetchFromZrx_1 = require("../utils/fetchFromZrx");
11
12
  const helpers_2 = require("../utils/helpers/helpers");
@@ -65,6 +66,14 @@ async function getZrxTradeRate(input, assetsById, zrxBaseUrl) {
65
66
  buyAmountAfterFeesCryptoBaseUnit: buyAmount,
66
67
  sellAmountIncludingProtocolFeesCryptoBaseUnit,
67
68
  source: types_1.SwapperName.Zrx,
69
+ affiliateFee: (0, affiliateFee_1.buildAffiliateFee)({
70
+ strategy: 'buy_asset',
71
+ affiliateBps,
72
+ sellAsset,
73
+ buyAsset,
74
+ sellAmountCryptoBaseUnit: sellAmountIncludingProtocolFeesCryptoBaseUnit,
75
+ buyAmountCryptoBaseUnit: buyAmount,
76
+ }),
68
77
  },
69
78
  ],
70
79
  });
@@ -8,7 +8,7 @@ export declare const isSupportedChainId: (chainId: ChainId) => chainId is KnownC
8
8
  export declare const assertValidTrade: ({ buyAsset, sellAsset, }: {
9
9
  buyAsset: Asset;
10
10
  sellAsset: Asset;
11
- }) => import("@sniptt/monads/build/result/result").ResOk<boolean, never> | import("@sniptt/monads/build/result/result").ResErr<unknown, import("../../../../types").SwapErrorRight>;
11
+ }) => import("@sniptt/monads/build/result/result").ResErr<unknown, import("../../../../types").SwapErrorRight> | import("@sniptt/monads/build/result/result").ResOk<boolean, never>;
12
12
  export declare const calculateRate: ({ buyAmount, sellAmount, buyAsset, sellAsset, }: {
13
13
  buyAmount: string;
14
14
  sellAmount: string;
@@ -0,0 +1,17 @@
1
+ import type { AssetId } from '@shapeshiftoss/caip';
2
+ import type { Asset } from '@shapeshiftoss/types';
3
+ import type { AffiliateFee } from '../../types';
4
+ export type AffiliateFeeStrategy = 'buy_asset' | 'sell_asset' | 'fixed_asset';
5
+ type BuildAffiliateFeeParams = {
6
+ strategy: AffiliateFeeStrategy;
7
+ affiliateBps: string;
8
+ sellAsset: Asset;
9
+ buyAsset: Asset;
10
+ sellAmountCryptoBaseUnit: string;
11
+ buyAmountCryptoBaseUnit: string;
12
+ fixedAsset?: Asset;
13
+ fixedAssetId?: AssetId;
14
+ isEstimate?: boolean;
15
+ };
16
+ export declare const buildAffiliateFee: (params: BuildAffiliateFeeParams) => AffiliateFee | undefined;
17
+ export {};
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildAffiliateFee = void 0;
4
+ const utils_1 = require("@shapeshiftoss/utils");
5
+ const buildAffiliateFee = (params) => {
6
+ const { strategy, affiliateBps, sellAsset, buyAsset, sellAmountCryptoBaseUnit, buyAmountCryptoBaseUnit, fixedAsset, fixedAssetId, isEstimate, } = params;
7
+ if ((0, utils_1.bnOrZero)(affiliateBps).lte(0))
8
+ return undefined;
9
+ const bpsDecimal = (0, utils_1.bn)(affiliateBps).div(10000);
10
+ switch (strategy) {
11
+ case 'buy_asset': {
12
+ const feeAmount = (0, utils_1.bnOrZero)(buyAmountCryptoBaseUnit).times(bpsDecimal).toFixed(0);
13
+ return {
14
+ assetId: buyAsset.assetId,
15
+ amountCryptoBaseUnit: feeAmount,
16
+ asset: buyAsset,
17
+ isEstimate,
18
+ };
19
+ }
20
+ case 'sell_asset': {
21
+ const feeAmount = (0, utils_1.bnOrZero)(sellAmountCryptoBaseUnit).times(bpsDecimal).toFixed(0);
22
+ return {
23
+ assetId: sellAsset.assetId,
24
+ amountCryptoBaseUnit: feeAmount,
25
+ asset: sellAsset,
26
+ isEstimate,
27
+ };
28
+ }
29
+ case 'fixed_asset': {
30
+ if (!fixedAsset || !fixedAssetId)
31
+ return undefined;
32
+ return {
33
+ assetId: fixedAssetId,
34
+ amountCryptoBaseUnit: '0',
35
+ asset: fixedAsset,
36
+ isEstimate: true,
37
+ };
38
+ }
39
+ default:
40
+ return undefined;
41
+ }
42
+ };
43
+ exports.buildAffiliateFee = buildAffiliateFee;
@@ -1,17 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.filterCrossChainEvmBuyAssetsBySellAssetId = exports.filterSameChainEvmBuyAssetsBySellAssetId = void 0;
4
- const caip_1 = require("@shapeshiftoss/caip");
5
4
  const chain_adapters_1 = require("@shapeshiftoss/chain-adapters");
6
5
  const _filterEvmBuyAssetsBySellAssetId = ({ assets, sellAsset }, chainIdPredicate) => {
7
6
  // evm only
8
7
  if (!(0, chain_adapters_1.isEvmChainId)(sellAsset.chainId))
9
8
  return [];
10
9
  return assets.filter(buyAsset => {
11
- // evm only AND chain id predicate with no arbitrum nova support for any swappers
12
- return ((0, chain_adapters_1.isEvmChainId)(buyAsset.chainId) &&
13
- chainIdPredicate(buyAsset.chainId, sellAsset.chainId) &&
14
- buyAsset.chainId !== caip_1.arbitrumNovaChainId);
10
+ // evm only AND chain id predicate
11
+ return (0, chain_adapters_1.isEvmChainId)(buyAsset.chainId) && chainIdPredicate(buyAsset.chainId, sellAsset.chainId);
15
12
  });
16
13
  };
17
14
  const filterSameChainEvmBuyAssetsBySellAssetId = (input) => {
@@ -46,6 +46,9 @@ const DAO_TREASURY_BY_CHAIN_ID = {
46
46
  [types_1.KnownChainIds.SolanaMainnet]: utils_1.DAO_TREASURY_SOLANA,
47
47
  [types_1.KnownChainIds.BitcoinMainnet]: utils_1.DAO_TREASURY_BITCOIN,
48
48
  [types_1.KnownChainIds.StarknetMainnet]: utils_1.DAO_TREASURY_STARKNET,
49
+ [types_1.KnownChainIds.TonMainnet]: utils_1.DAO_TREASURY_TON,
50
+ [types_1.KnownChainIds.MonadMainnet]: utils_1.DAO_TREASURY_MONAD,
51
+ [types_1.KnownChainIds.HyperEvmMainnet]: utils_1.DAO_TREASURY_HYPEREVM,
49
52
  };
50
53
  const getTreasuryAddressFromChainId = (chainId) => {
51
54
  const maybeTreasuryChainId = (0, utils_1.isTreasuryChainId)(chainId) ? chainId : undefined;
@@ -1,7 +1,7 @@
1
1
  import type { Asset } from '@shapeshiftoss/types';
2
2
  import type { SwapperConfig, SwapperName } from '../types';
3
3
  import type { ThorEvmTradeQuote } from './types';
4
- export declare const getCallDataFromQuote: ({ tradeType, data, sellAsset, sellAmountIncludingProtocolFeesCryptoBaseUnit, memo: tcMemo, expiry, config, longtailData, slippageTolerancePercentageDecimal, vault, swapperName, }: Pick<ThorEvmTradeQuote, "data" | "slippageTolerancePercentageDecimal" | "memo" | "aggregator" | "vault" | "expiry" | "tradeType" | "longtailData"> & {
4
+ export declare const getCallDataFromQuote: ({ tradeType, data, sellAsset, sellAmountIncludingProtocolFeesCryptoBaseUnit, memo: tcMemo, expiry, config, longtailData, slippageTolerancePercentageDecimal, vault, swapperName, }: Pick<ThorEvmTradeQuote, "data" | "slippageTolerancePercentageDecimal" | "memo" | "expiry" | "tradeType" | "aggregator" | "vault" | "longtailData"> & {
5
5
  sellAmountIncludingProtocolFeesCryptoBaseUnit: string;
6
6
  config: SwapperConfig;
7
7
  sellAsset: Asset;
@@ -28,21 +28,25 @@ const caip_1 = require("@shapeshiftoss/caip");
28
28
  const adapters = __importStar(require("@shapeshiftoss/chain-adapters"));
29
29
  const utils_1 = require("@shapeshiftoss/utils");
30
30
  const monads_1 = require("@sniptt/monads");
31
+ const web3_js_1 = require("@solana/web3.js");
31
32
  const tronweb_1 = require("tronweb");
32
33
  const uuid_1 = require("uuid");
33
34
  const index_1 = require("../index");
35
+ const affiliateFee_1 = require("../swappers/utils/affiliateFee");
34
36
  const types_1 = require("../types");
35
37
  const utils_2 = require("../utils");
36
38
  const evm = __importStar(require("./evm"));
37
39
  const getLimitWithManualSlippage_1 = require("./getLimitWithManualSlippage/getLimitWithManualSlippage");
38
40
  const getQuote_1 = require("./getQuote");
39
41
  const index_2 = require("./index");
42
+ const solana = __importStar(require("./solana"));
40
43
  const tron = __importStar(require("./tron"));
41
44
  const utxo = __importStar(require("./utxo"));
42
45
  const SAFE_GAS_LIMIT = '100000'; // depositWithExpiry()
46
+ const SOLANA_MEMO_PROGRAM_ID = 'MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr';
43
47
  const getL1RateOrQuote = async (input, deps, streamingInterval, tradeType, swapperName) => {
44
48
  const { sellAsset, buyAsset, sellAmountIncludingProtocolFeesCryptoBaseUnit: sellAmountCryptoBaseUnit, accountNumber, receiveAddress, affiliateBps: requestedAffiliateBps, } = input;
45
- const { config, assertGetEvmChainAdapter, assertGetUtxoChainAdapter, assertGetCosmosSdkChainAdapter, } = deps;
49
+ const { config, assertGetEvmChainAdapter, assertGetUtxoChainAdapter, assertGetCosmosSdkChainAdapter, assertGetSolanaChainAdapter, } = deps;
46
50
  // "NativePrecision" is intended to indicate the base unit precision of the asset
47
51
  // for the corresponding swapper network (THORChain or MAYAChain)
48
52
  // (CACAO = 10, everything else = 8)
@@ -101,7 +105,13 @@ const getL1RateOrQuote = async (input, deps, streamingInterval, tradeType, swapp
101
105
  : '0';
102
106
  const getRouteBuyAmountBeforeFeesCryptoBaseUnit = (quote) => {
103
107
  const buyAmountBeforeFeesCryptoThorPrecision = (0, utils_1.bn)(quote.expected_amount_out).plus(quote.fees.total);
104
- return (0, utils_1.toBaseUnit)((0, utils_1.fromBaseUnit)(buyAmountBeforeFeesCryptoThorPrecision, buyAssetNativePrecision), buyAsset.precision);
108
+ return utils_1.BigAmount.fromPrecision({
109
+ value: utils_1.BigAmount.fromBaseUnit({
110
+ value: buyAmountBeforeFeesCryptoThorPrecision,
111
+ precision: buyAssetNativePrecision,
112
+ }).toPrecision(),
113
+ precision: buyAsset.precision,
114
+ }).toBaseUnit();
105
115
  };
106
116
  const getProtocolFees = (quote) => {
107
117
  // Fees consist of liquidity, outbound, and affiliate fees
@@ -187,6 +197,14 @@ const getL1RateOrQuote = async (input, deps, streamingInterval, tradeType, swapp
187
197
  accountNumber,
188
198
  allowanceContract,
189
199
  feeData,
200
+ affiliateFee: (0, affiliateFee_1.buildAffiliateFee)({
201
+ strategy: 'buy_asset',
202
+ affiliateBps: route.affiliateBps,
203
+ sellAsset,
204
+ buyAsset,
205
+ sellAmountCryptoBaseUnit,
206
+ buyAmountCryptoBaseUnit: buyAmountAfterFeesCryptoBaseUnit,
207
+ }),
190
208
  thorchainSpecific: {
191
209
  maxStreamingQuantity: route.quote.max_streaming_quantity,
192
210
  },
@@ -241,7 +259,11 @@ const getL1RateOrQuote = async (input, deps, streamingInterval, tradeType, swapp
241
259
  const sellAdapter = assertGetUtxoChainAdapter(sellAsset.chainId);
242
260
  const maybeRoutes = await Promise.allSettled(perRouteValues.map(async (route) => {
243
261
  const memo = getMemo(route);
244
- const { vault } = await utxo.getThorTxData({ sellAsset, config, swapperName });
262
+ const { vault } = await utxo.getThorTxData({
263
+ sellAsset,
264
+ config,
265
+ swapperName,
266
+ });
245
267
  const feeData = await (async () => {
246
268
  const protocolFees = getProtocolFees(route.quote);
247
269
  // This is a rate without a wallet connected, so we can't get fees
@@ -295,10 +317,51 @@ const getL1RateOrQuote = async (input, deps, streamingInterval, tradeType, swapp
295
317
  }));
296
318
  }
297
319
  case caip_1.CHAIN_NAMESPACE.Solana: {
298
- return (0, monads_1.Err)((0, utils_2.makeSwapErrorRight)({
299
- message: 'Solana is not supported',
300
- code: types_1.TradeQuoteError.UnsupportedTradePair,
320
+ const adapter = assertGetSolanaChainAdapter(sellAsset.chainId);
321
+ const sendAddress = input.sendAddress;
322
+ const maybeRoutes = await Promise.allSettled(perRouteValues.map(async (route) => {
323
+ const memo = getMemo(route);
324
+ const protocolFees = getProtocolFees(route.quote);
325
+ const feeData = await (async () => {
326
+ if (!sendAddress)
327
+ return { networkFeeCryptoBaseUnit: undefined, protocolFees };
328
+ const { vault } = await solana.getThorTxData({ sellAsset, config, swapperName });
329
+ const memoInstruction = new web3_js_1.TransactionInstruction({
330
+ keys: [],
331
+ programId: new web3_js_1.PublicKey(SOLANA_MEMO_PROGRAM_ID),
332
+ data: Buffer.from(memo, 'utf8'),
333
+ });
334
+ const transferInstruction = web3_js_1.SystemProgram.transfer({
335
+ fromPubkey: new web3_js_1.PublicKey(sendAddress),
336
+ toPubkey: new web3_js_1.PublicKey(vault),
337
+ lamports: BigInt(sellAmountCryptoBaseUnit),
338
+ });
339
+ const { fast } = await adapter.getFeeData({
340
+ to: vault,
341
+ value: '0',
342
+ chainSpecific: {
343
+ from: sendAddress,
344
+ tokenId: (0, utils_1.contractAddressOrUndefined)(sellAsset.assetId),
345
+ instructions: [memoInstruction, transferInstruction],
346
+ },
347
+ });
348
+ return { networkFeeCryptoBaseUnit: fast.txFee, protocolFees };
349
+ })();
350
+ return makeThorTradeRateOrQuote({
351
+ route,
352
+ allowanceContract: '0x0',
353
+ memo,
354
+ feeData,
355
+ });
301
356
  }));
357
+ const routes = maybeRoutes.filter(utils_1.isFulfilled).map(r => r.value);
358
+ if (!routes.length)
359
+ return (0, monads_1.Err)((0, utils_2.makeSwapErrorRight)({
360
+ message: 'Unable to create any routes',
361
+ code: types_1.TradeQuoteError.UnsupportedTradePair,
362
+ cause: maybeRoutes.filter(utils_1.isRejected).map(r => r.reason),
363
+ }));
364
+ return (0, monads_1.Ok)(routes);
302
365
  }
303
366
  case caip_1.CHAIN_NAMESPACE.Tron: {
304
367
  const maybeRoutes = await Promise.allSettled(perRouteValues.map(async (route) => {
@@ -310,9 +373,15 @@ const getL1RateOrQuote = async (input, deps, streamingInterval, tradeType, swapp
310
373
  const { sellAsset, sellAmountIncludingProtocolFeesCryptoBaseUnit } = input;
311
374
  const contractAddress = (0, utils_1.contractAddressOrUndefined)(sellAsset.assetId);
312
375
  // Get vault address
313
- const { vault } = await tron.getThorTxData({ sellAsset, config, swapperName });
376
+ const { vault } = await tron.getThorTxData({
377
+ sellAsset,
378
+ config,
379
+ swapperName,
380
+ });
314
381
  // Estimate fees using the receive address for accurate energy calculation
315
- const tronWeb = new tronweb_1.TronWeb({ fullHost: deps.config.VITE_TRON_NODE_URL });
382
+ const tronWeb = new tronweb_1.TronWeb({
383
+ fullHost: deps.config.VITE_TRON_NODE_URL,
384
+ });
316
385
  const params = await tronWeb.trx.getChainParameters();
317
386
  const bandwidthPrice = params.find(p => p.key === 'getTransactionFee')?.value ?? 1000;
318
387
  const energyPrice = params.find(p => p.key === 'getEnergyFee')?.value ?? 100;
@@ -322,7 +391,10 @@ const getL1RateOrQuote = async (input, deps, streamingInterval, tradeType, swapp
322
391
  try {
323
392
  const result = await tronWeb.transactionBuilder.triggerConstantContract(contractAddress, 'transfer(address,uint256)', {}, [
324
393
  { type: 'address', value: vault },
325
- { type: 'uint256', value: sellAmountIncludingProtocolFeesCryptoBaseUnit },
394
+ {
395
+ type: 'uint256',
396
+ value: sellAmountIncludingProtocolFeesCryptoBaseUnit,
397
+ },
326
398
  ], input.receiveAddress);
327
399
  const energyUsed = result.energy_used ?? 65000;
328
400
  const energyFee = energyUsed * energyPrice * 1.5; // 1.5x safety margin
@@ -387,6 +459,12 @@ const getL1RateOrQuote = async (input, deps, streamingInterval, tradeType, swapp
387
459
  code: types_1.TradeQuoteError.UnsupportedTradePair,
388
460
  }));
389
461
  }
462
+ case caip_1.CHAIN_NAMESPACE.Ton: {
463
+ return (0, monads_1.Err)((0, utils_2.makeSwapErrorRight)({
464
+ message: 'TON is not supported',
465
+ code: types_1.TradeQuoteError.UnsupportedTradePair,
466
+ }));
467
+ }
390
468
  default:
391
469
  return (0, utils_1.assertUnreachable)(chainNamespace);
392
470
  }
@@ -25,9 +25,15 @@ const getQuote = async (input, deps) => {
25
25
  });
26
26
  const buyPoolId = (0, index_1.getPoolAssetId)({ assetId: buyAssetId, swapperName });
27
27
  const sellPoolId = (0, index_1.getPoolAssetId)({ assetId: sellAsset.assetId, swapperName });
28
- const sellAmountCryptoPrecision = (0, utils_1.fromBaseUnit)(sellAmountCryptoBaseUnit, sellAsset.precision);
28
+ const sellAmountCryptoPrecision = utils_1.BigAmount.fromBaseUnit({
29
+ value: sellAmountCryptoBaseUnit,
30
+ precision: sellAsset.precision,
31
+ }).toPrecision();
29
32
  // All pool amounts are native precision regardless of token precision
30
- const sellAmountCryptoThorBaseUnit = (0, utils_1.bn)((0, utils_1.toBaseUnit)(sellAmountCryptoPrecision, (0, index_1.getNativePrecision)(sellAsset.assetId, swapperName)));
33
+ const sellAmountCryptoThorBaseUnit = (0, utils_1.bn)(utils_1.BigAmount.fromPrecision({
34
+ value: sellAmountCryptoPrecision,
35
+ precision: (0, index_1.getNativePrecision)(sellAsset.assetId, swapperName),
36
+ }).toBaseUnit());
31
37
  // The swap endpoint expects BCH receiveAddress's to be stripped of the "bitcoincash:" prefix
32
38
  const parsedReceiveAddress = receiveAddress && buyAssetId === caip_1.bchAssetId
33
39
  ? receiveAddress.replace('bitcoincash:', '')
@@ -13,6 +13,7 @@ export * from './getL1RateOrQuote';
13
13
  export * from './getPoolDetails';
14
14
  export * as cosmossdk from './cosmossdk';
15
15
  export * as evm from './evm';
16
+ export * as solana from './solana';
16
17
  export * as tron from './tron';
17
18
  export * as utxo from './utxo';
18
19
  export declare const getChainIdBySwapper: (swapperName: SwapperName) => import("@shapeshiftoss/caip").ChainId;
@@ -21,7 +22,7 @@ export declare const isThorTradeQuote: (quote: TradeQuote | undefined) => quote
21
22
  export declare const getDaemonUrl: (config: SwapperConfig, swapperName: SwapperName) => string;
22
23
  export declare const getMidgardUrl: (config: SwapperConfig, swapperName: SwapperName) => string;
23
24
  export declare const isNativeAsset: (assetId: AssetId, swapperName: SwapperName) => boolean;
24
- export declare const getNativePrecision: (assetId: AssetId, swapperName: SwapperName) => 10 | 8;
25
+ export declare const getNativePrecision: (assetId: AssetId, swapperName: SwapperName) => 8 | 10;
25
26
  export declare const getNativeFee: (swapperName: SwapperName) => "2000000" | "2000000000";
26
27
  export declare const getAffiliate: (swapperName: SwapperName) => "ss" | "ssmaya";
27
28
  export declare const getPoolAssetId: ({ assetId, swapperName, }: {
@@ -26,7 +26,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
26
26
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.getSwapSource = exports.getPoolAssetId = exports.getAffiliate = exports.getNativeFee = exports.getNativePrecision = exports.isNativeAsset = exports.getMidgardUrl = exports.getDaemonUrl = exports.isThorTradeQuote = exports.isThorTradeRate = exports.getChainIdBySwapper = exports.utxo = exports.tron = exports.evm = exports.cosmossdk = void 0;
29
+ exports.getSwapSource = exports.getPoolAssetId = exports.getAffiliate = exports.getNativeFee = exports.getNativePrecision = exports.isNativeAsset = exports.getMidgardUrl = exports.getDaemonUrl = exports.isThorTradeQuote = exports.isThorTradeRate = exports.getChainIdBySwapper = exports.utxo = exports.tron = exports.solana = exports.evm = exports.cosmossdk = void 0;
30
30
  const caip_1 = require("@shapeshiftoss/caip");
31
31
  const adapters = __importStar(require("@shapeshiftoss/chain-adapters"));
32
32
  const MayachainSwapper_1 = require("../swappers/MayachainSwapper");
@@ -43,6 +43,7 @@ __exportStar(require("./getL1RateOrQuote"), exports);
43
43
  __exportStar(require("./getPoolDetails"), exports);
44
44
  exports.cosmossdk = __importStar(require("./cosmossdk"));
45
45
  exports.evm = __importStar(require("./evm"));
46
+ exports.solana = __importStar(require("./solana"));
46
47
  exports.tron = __importStar(require("./tron"));
47
48
  exports.utxo = __importStar(require("./utxo"));
48
49
  const getChainIdBySwapper = (swapperName) => {
@@ -0,0 +1 @@
1
+ export declare const MEMO_PROGRAM_ID = "MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr";
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MEMO_PROGRAM_ID = void 0;
4
+ // Solana Memo Program v2
5
+ // https://spl.solana.com/memo
6
+ exports.MEMO_PROGRAM_ID = 'MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr';
@@ -0,0 +1,2 @@
1
+ import type { GetUnsignedSolanaTransactionArgs, SwapperName } from '../../types';
2
+ export declare const getSolanaTransactionFees: (args: GetUnsignedSolanaTransactionArgs, swapperName: SwapperName) => Promise<string>;
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getSolanaTransactionFees = void 0;
4
+ const utils_1 = require("@shapeshiftoss/utils");
5
+ const web3_js_1 = require("@solana/web3.js");
6
+ const utils_2 = require("../../utils");
7
+ const getThorTxData_1 = require("./getThorTxData");
8
+ const MEMO_PROGRAM_ID = 'MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr';
9
+ const getSolanaTransactionFees = async (args, swapperName) => {
10
+ const { tradeQuote, stepIndex, from, assertGetSolanaChainAdapter, config } = args;
11
+ if (!(0, utils_2.isExecutableTradeQuote)(tradeQuote))
12
+ throw new Error('Unable to execute a trade rate quote');
13
+ const { memo } = tradeQuote;
14
+ if (!memo)
15
+ throw new Error('Memo is required');
16
+ const step = (0, utils_2.getExecutableTradeStep)(tradeQuote, stepIndex);
17
+ const { sellAmountIncludingProtocolFeesCryptoBaseUnit, sellAsset } = step;
18
+ const { vault } = await (0, getThorTxData_1.getThorTxData)({ sellAsset, config, swapperName });
19
+ const adapter = assertGetSolanaChainAdapter(sellAsset.chainId);
20
+ const memoInstruction = new web3_js_1.TransactionInstruction({
21
+ keys: [],
22
+ programId: new web3_js_1.PublicKey(MEMO_PROGRAM_ID),
23
+ data: Buffer.from(memo, 'utf8'),
24
+ });
25
+ const transferInstruction = web3_js_1.SystemProgram.transfer({
26
+ fromPubkey: new web3_js_1.PublicKey(from),
27
+ toPubkey: new web3_js_1.PublicKey(vault),
28
+ lamports: BigInt(sellAmountIncludingProtocolFeesCryptoBaseUnit),
29
+ });
30
+ const { fast } = await adapter.getFeeData({
31
+ to: vault,
32
+ value: '0',
33
+ chainSpecific: {
34
+ from,
35
+ tokenId: (0, utils_1.contractAddressOrUndefined)(sellAsset.assetId),
36
+ instructions: [memoInstruction, transferInstruction],
37
+ },
38
+ });
39
+ return fast.txFee;
40
+ };
41
+ exports.getSolanaTransactionFees = getSolanaTransactionFees;
@@ -0,0 +1,12 @@
1
+ import type { Asset } from '@shapeshiftoss/types';
2
+ import type { SwapperConfig, SwapperName } from '../../types';
3
+ type GetThorTxDataArgs = {
4
+ sellAsset: Asset;
5
+ config: SwapperConfig;
6
+ swapperName: SwapperName;
7
+ };
8
+ type GetThorTxDataReturn = {
9
+ vault: string;
10
+ };
11
+ export declare const getThorTxData: ({ sellAsset, config, swapperName, }: GetThorTxDataArgs) => Promise<GetThorTxDataReturn>;
12
+ export {};
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getThorTxData = void 0;
4
+ const getInboundAddressDataForChain_1 = require("../getInboundAddressDataForChain");
5
+ const index_1 = require("../index");
6
+ const getThorTxData = async ({ sellAsset, config, swapperName, }) => {
7
+ const daemonUrl = (0, index_1.getDaemonUrl)(config, swapperName);
8
+ const res = await (0, getInboundAddressDataForChain_1.getInboundAddressDataForChain)(daemonUrl, sellAsset.assetId, false, swapperName);
9
+ if (res.isErr())
10
+ throw res.unwrapErr();
11
+ const { address: vault } = res.unwrap();
12
+ return { vault };
13
+ };
14
+ exports.getThorTxData = getThorTxData;
@@ -0,0 +1,3 @@
1
+ import type { SolanaSignTx } from '@shapeshiftoss/hdwallet-core';
2
+ import type { GetUnsignedSolanaTransactionArgs, SwapperName } from '../../types';
3
+ export declare const getUnsignedSolanaTransaction: (args: GetUnsignedSolanaTransactionArgs, swapperName: SwapperName) => Promise<SolanaSignTx>;
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getUnsignedSolanaTransaction = void 0;
4
+ const utils_1 = require("@shapeshiftoss/utils");
5
+ const web3_js_1 = require("@solana/web3.js");
6
+ const utils_2 = require("../../utils");
7
+ const getThorTxData_1 = require("./getThorTxData");
8
+ const MEMO_PROGRAM_ID = 'MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr';
9
+ // Each ComputeBudgetProgram instruction (setComputeUnitLimit, setComputeUnitPrice) costs 150 CU.
10
+ // Fee estimation doesn't include these, so we add a fixed buffer to cover them.
11
+ const COMPUTE_BUDGET_INSTRUCTION_OVERHEAD_CU = 300;
12
+ const getUnsignedSolanaTransaction = async (args, swapperName) => {
13
+ const { tradeQuote, stepIndex, from, assertGetSolanaChainAdapter, config } = args;
14
+ if (!(0, utils_2.isExecutableTradeQuote)(tradeQuote))
15
+ throw new Error('Unable to execute a trade rate quote');
16
+ const { memo } = tradeQuote;
17
+ if (!memo)
18
+ throw new Error('Memo is required');
19
+ const step = (0, utils_2.getExecutableTradeStep)(tradeQuote, stepIndex);
20
+ const { accountNumber, sellAmountIncludingProtocolFeesCryptoBaseUnit, sellAsset } = step;
21
+ const { vault } = await (0, getThorTxData_1.getThorTxData)({
22
+ sellAsset,
23
+ config,
24
+ swapperName,
25
+ });
26
+ const adapter = assertGetSolanaChainAdapter(sellAsset.chainId);
27
+ const memoInstruction = new web3_js_1.TransactionInstruction({
28
+ keys: [],
29
+ programId: new web3_js_1.PublicKey(MEMO_PROGRAM_ID),
30
+ data: Buffer.from(memo, 'utf8'),
31
+ });
32
+ const transferInstruction = web3_js_1.SystemProgram.transfer({
33
+ fromPubkey: new web3_js_1.PublicKey(from),
34
+ toPubkey: new web3_js_1.PublicKey(vault),
35
+ lamports: BigInt(sellAmountIncludingProtocolFeesCryptoBaseUnit),
36
+ });
37
+ const { fast } = await adapter.getFeeData({
38
+ to: vault,
39
+ value: '0',
40
+ chainSpecific: {
41
+ from,
42
+ tokenId: (0, utils_1.contractAddressOrUndefined)(sellAsset.assetId),
43
+ instructions: [memoInstruction, transferInstruction],
44
+ },
45
+ });
46
+ const memoHdwalletInstruction = {
47
+ keys: [],
48
+ programId: MEMO_PROGRAM_ID,
49
+ data: Buffer.from(memo, 'utf8'),
50
+ };
51
+ return adapter.buildSendApiTransaction({
52
+ from,
53
+ to: vault,
54
+ value: sellAmountIncludingProtocolFeesCryptoBaseUnit,
55
+ accountNumber,
56
+ chainSpecific: {
57
+ instructions: [memoHdwalletInstruction],
58
+ computeUnitLimit: String(Number(fast.chainSpecific.computeUnits) + COMPUTE_BUDGET_INSTRUCTION_OVERHEAD_CU),
59
+ computeUnitPrice: fast.chainSpecific.priorityFee,
60
+ tokenId: (0, utils_1.contractAddressOrUndefined)(sellAsset.assetId),
61
+ },
62
+ });
63
+ };
64
+ exports.getUnsignedSolanaTransaction = getUnsignedSolanaTransaction;
@@ -0,0 +1,3 @@
1
+ export * from './getThorTxData';
2
+ export * from './getUnsignedSolanaTransaction';
3
+ export * from './getSolanaTransactionFees';
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./getThorTxData"), exports);
18
+ __exportStar(require("./getUnsignedSolanaTransaction"), exports);
19
+ __exportStar(require("./getSolanaTransactionFees"), exports);
@@ -1,19 +1,39 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getUnsignedTronTransaction = void 0;
4
+ const caip_1 = require("@shapeshiftoss/caip");
4
5
  const utils_1 = require("@shapeshiftoss/utils");
5
6
  const utils_2 = require("../utils");
6
7
  const getUnsignedTronTransaction = ({ stepIndex, tradeQuote, from, assertGetTronChainAdapter, }) => {
7
8
  if (!(0, utils_2.isExecutableTradeQuote)(tradeQuote))
8
9
  throw new Error('Unable to execute a trade rate quote');
9
10
  const step = (0, utils_2.getExecutableTradeStep)(tradeQuote, stepIndex);
10
- const { accountNumber, sellAsset, relayTransactionMetadata, nearIntentsSpecific } = step;
11
+ const { accountNumber, sellAsset, relayTransactionMetadata, nearIntentsSpecific, butterSwapTransactionMetadata, } = step;
11
12
  const adapter = assertGetTronChainAdapter(sellAsset.chainId);
13
+ if (butterSwapTransactionMetadata) {
14
+ const { to, data, method, args, value: butterValue } = butterSwapTransactionMetadata;
15
+ if (!to)
16
+ throw new Error('Missing Butter swap contract address');
17
+ if (!data)
18
+ throw new Error('Missing Butter swap transaction data');
19
+ // Use Butter's value field which includes swap fees for same-chain swaps
20
+ // For native TRX sells, also include the sell amount
21
+ const isNativeTron = sellAsset.assetId === caip_1.tronAssetId;
22
+ const value = isNativeTron ? step.sellAmountIncludingProtocolFeesCryptoBaseUnit : butterValue;
23
+ return adapter.buildCustomApiTx({
24
+ from,
25
+ to,
26
+ accountNumber,
27
+ data,
28
+ value,
29
+ method,
30
+ args,
31
+ });
32
+ }
12
33
  const to = relayTransactionMetadata?.to ?? nearIntentsSpecific?.depositAddress;
13
34
  if (!to)
14
35
  throw new Error('Missing transaction destination address');
15
36
  const value = step.sellAmountIncludingProtocolFeesCryptoBaseUnit;
16
- // Extract contract address for TRC20 tokens
17
37
  const contractAddress = (0, utils_1.contractAddressOrUndefined)(sellAsset.assetId);
18
38
  return adapter.buildSendApiTransaction({
19
39
  to,