@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
@@ -1,11 +1,12 @@
1
- import { CHAIN_NAMESPACE, fromAssetId } from '@shapeshiftoss/caip';
1
+ import { CHAIN_NAMESPACE, fromAssetId, nearChainId } from '@shapeshiftoss/caip';
2
2
  import { evm } from '@shapeshiftoss/chain-adapters';
3
- import { bn, bnOrZero, contractAddressOrUndefined, DAO_TREASURY_NEAR, isToken, } from '@shapeshiftoss/utils';
3
+ import { bn, bnOrZero, chainIdToFeeAssetId, contractAddressOrUndefined, DAO_TREASURY_NEAR, isToken, } from '@shapeshiftoss/utils';
4
4
  import { Err, Ok } from '@sniptt/monads';
5
5
  import { v4 as uuid } from 'uuid';
6
6
  import { getDefaultSlippageDecimalPercentageForSwapper } from '../../../constants.js';
7
7
  import { SwapperName, TradeQuoteError } from '../../../types.js';
8
8
  import { createTradeAmountTooSmallErr, getInputOutputRate, makeSwapErrorRight, } from '../../../utils.js';
9
+ import { buildAffiliateFee } from '../../utils/affiliateFee.js';
9
10
  import { isNativeEvmAsset } from '../../utils/helpers/helpers.js';
10
11
  import { DEFAULT_QUOTE_DEADLINE_MS, DEFAULT_SLIPPAGE_BPS } from '../constants.js';
11
12
  import { QuoteRequest } from '../types.js';
@@ -71,7 +72,27 @@ export const getTradeQuote = async (input, deps) => {
71
72
  },
72
73
  ],
73
74
  };
74
- const quoteResponse = await OneClickService.getQuote(quoteRequest);
75
+ const maxRetries = 3;
76
+ let quoteResponse = null;
77
+ let lastError = null;
78
+ for (let attempt = 1; attempt <= maxRetries; attempt++) {
79
+ try {
80
+ quoteResponse = await OneClickService.getQuote(quoteRequest);
81
+ break;
82
+ }
83
+ catch (err) {
84
+ lastError = err instanceof Error ? err : new Error(String(err));
85
+ const isWebSocketError = lastError.message.includes('WebSocket is not ready');
86
+ if (isWebSocketError && attempt < maxRetries) {
87
+ await new Promise(resolve => setTimeout(resolve, 1000 * attempt));
88
+ continue;
89
+ }
90
+ throw lastError;
91
+ }
92
+ }
93
+ if (!quoteResponse) {
94
+ throw lastError ?? new Error('Failed to get quote after retries');
95
+ }
75
96
  const { quote } = quoteResponse;
76
97
  if (!quote.depositAddress) {
77
98
  throw new Error('Missing deposit address in quote response');
@@ -197,6 +218,21 @@ export const getTradeQuote = async (input, deps) => {
197
218
  });
198
219
  return { networkFeeCryptoBaseUnit: feeData.fast.txFee };
199
220
  }
221
+ case CHAIN_NAMESPACE.Ton: {
222
+ const sellAdapter = deps.assertGetTonChainAdapter(sellAsset.chainId);
223
+ const contractAddress = isToken(sellAsset.assetId)
224
+ ? fromAssetId(sellAsset.assetId).assetReference
225
+ : undefined;
226
+ const feeData = await sellAdapter.getFeeData({
227
+ to: depositAddress,
228
+ value: sellAmount,
229
+ chainSpecific: {
230
+ from,
231
+ contractAddress,
232
+ },
233
+ });
234
+ return { networkFeeCryptoBaseUnit: feeData.fast.txFee };
235
+ }
200
236
  default:
201
237
  throw new Error(`Unsupported chain namespace: ${chainNamespace}`);
202
238
  }
@@ -240,6 +276,17 @@ export const getTradeQuote = async (input, deps) => {
240
276
  timeEstimate: quote.timeEstimate,
241
277
  deadline: quote.deadline ?? '',
242
278
  },
279
+ affiliateFee: buildAffiliateFee({
280
+ strategy: 'fixed_asset',
281
+ affiliateBps,
282
+ sellAsset,
283
+ buyAsset,
284
+ sellAmountCryptoBaseUnit: quote.amountIn,
285
+ buyAmountCryptoBaseUnit: quote.amountOut,
286
+ fixedAssetId: chainIdToFeeAssetId(nearChainId),
287
+ fixedAsset: deps.assetsById[chainIdToFeeAssetId(nearChainId)],
288
+ isEstimate: true,
289
+ }),
243
290
  },
244
291
  ],
245
292
  };
@@ -1,6 +1,6 @@
1
- import { CHAIN_NAMESPACE, fromAssetId, monadChainId } from '@shapeshiftoss/caip';
1
+ import { CHAIN_NAMESPACE, fromAssetId, monadChainId, nearChainId } from '@shapeshiftoss/caip';
2
2
  import { evm } from '@shapeshiftoss/chain-adapters';
3
- import { bn, bnOrZero, contractAddressOrUndefined, DAO_TREASURY_NEAR, isToken, } from '@shapeshiftoss/utils';
3
+ import { bn, bnOrZero, chainIdToFeeAssetId, contractAddressOrUndefined, DAO_TREASURY_NEAR, isToken, } from '@shapeshiftoss/utils';
4
4
  import { Err, Ok } from '@sniptt/monads';
5
5
  import { v4 as uuid } from 'uuid';
6
6
  import { getAddress } from 'viem';
@@ -8,6 +8,7 @@ import { getDefaultSlippageDecimalPercentageForSwapper } from '../../../constant
8
8
  import { SwapperName, TradeQuoteError } from '../../../types.js';
9
9
  import { createTradeAmountTooSmallErr, getInputOutputRate, makeSwapErrorRight, } from '../../../utils.js';
10
10
  import { simulateWithStateOverrides } from '../../../utils/tenderly/index.js';
11
+ import { buildAffiliateFee } from '../../utils/affiliateFee.js';
11
12
  import { isNativeEvmAsset } from '../../utils/helpers/helpers.js';
12
13
  import { DEFAULT_QUOTE_DEADLINE_MS, DEFAULT_SLIPPAGE_BPS } from '../constants.js';
13
14
  import { QuoteRequest } from '../types.js';
@@ -61,7 +62,27 @@ export const getTradeRate = async (input, deps) => {
61
62
  },
62
63
  ],
63
64
  };
64
- const quoteResponse = await OneClickService.getQuote(quoteRequest);
65
+ const maxRetries = 3;
66
+ let quoteResponse = null;
67
+ let lastError = null;
68
+ for (let attempt = 1; attempt <= maxRetries; attempt++) {
69
+ try {
70
+ quoteResponse = await OneClickService.getQuote(quoteRequest);
71
+ break;
72
+ }
73
+ catch (err) {
74
+ lastError = err instanceof Error ? err : new Error(String(err));
75
+ const isWebSocketError = lastError.message.includes('WebSocket is not ready');
76
+ if (isWebSocketError && attempt < maxRetries) {
77
+ await new Promise(resolve => setTimeout(resolve, 1000 * attempt));
78
+ continue;
79
+ }
80
+ throw lastError;
81
+ }
82
+ }
83
+ if (!quoteResponse) {
84
+ throw lastError ?? new Error('Failed to get quote after retries');
85
+ }
65
86
  const { quote } = quoteResponse;
66
87
  if (!quote.depositAddress) {
67
88
  throw new Error('Missing deposit address in quote response');
@@ -238,6 +259,46 @@ export const getTradeRate = async (input, deps) => {
238
259
  return '0';
239
260
  }
240
261
  }
262
+ case CHAIN_NAMESPACE.Near: {
263
+ try {
264
+ const sellAdapter = deps.assertGetNearChainAdapter(sellAsset.chainId);
265
+ if (!sendAddress) {
266
+ return '0';
267
+ }
268
+ const feeData = await sellAdapter.getFeeData({
269
+ to: depositAddress,
270
+ value: sellAmount,
271
+ chainSpecific: { from: sendAddress },
272
+ });
273
+ return feeData.fast.txFee;
274
+ }
275
+ catch (error) {
276
+ return '0';
277
+ }
278
+ }
279
+ case CHAIN_NAMESPACE.Ton: {
280
+ try {
281
+ const sellAdapter = deps.assertGetTonChainAdapter(sellAsset.chainId);
282
+ const contractAddress = isToken(sellAsset.assetId)
283
+ ? fromAssetId(sellAsset.assetId).assetReference
284
+ : undefined;
285
+ if (!sendAddress) {
286
+ return '0';
287
+ }
288
+ const feeData = await sellAdapter.getFeeData({
289
+ to: depositAddress,
290
+ value: sellAmount,
291
+ chainSpecific: {
292
+ from: sendAddress,
293
+ contractAddress,
294
+ },
295
+ });
296
+ return feeData.fast.txFee;
297
+ }
298
+ catch (error) {
299
+ return '0';
300
+ }
301
+ }
241
302
  default:
242
303
  return undefined;
243
304
  }
@@ -274,6 +335,17 @@ export const getTradeRate = async (input, deps) => {
274
335
  sellAsset,
275
336
  source: SwapperName.NearIntents,
276
337
  estimatedExecutionTimeMs: quote.timeEstimate ? quote.timeEstimate * 1000 : undefined,
338
+ affiliateFee: buildAffiliateFee({
339
+ strategy: 'fixed_asset',
340
+ affiliateBps,
341
+ sellAsset,
342
+ buyAsset,
343
+ sellAmountCryptoBaseUnit: quote.amountIn,
344
+ buyAmountCryptoBaseUnit: quote.amountOut,
345
+ fixedAssetId: chainIdToFeeAssetId(nearChainId),
346
+ fixedAsset: deps.assetsById[chainIdToFeeAssetId(nearChainId)],
347
+ isEstimate: true,
348
+ }),
277
349
  },
278
350
  ],
279
351
  };
@@ -1,6 +1,6 @@
1
1
  import { KnownChainIds } from '@shapeshiftoss/types';
2
2
  export { QuoteRequest } from '@defuse-protocol/one-click-sdk-typescript';
3
3
  export type { GetExecutionStatusResponse, QuoteResponse, TokenResponse, } from '@defuse-protocol/one-click-sdk-typescript';
4
- export declare const nearIntentsSupportedChainIds: readonly [KnownChainIds.EthereumMainnet, KnownChainIds.ArbitrumMainnet, KnownChainIds.BaseMainnet, KnownChainIds.GnosisMainnet, KnownChainIds.BnbSmartChainMainnet, KnownChainIds.PolygonMainnet, KnownChainIds.AvalancheMainnet, KnownChainIds.OptimismMainnet, KnownChainIds.BitcoinMainnet, KnownChainIds.DogecoinMainnet, KnownChainIds.ZcashMainnet, KnownChainIds.SolanaMainnet, KnownChainIds.TronMainnet, KnownChainIds.SuiMainnet, KnownChainIds.StarknetMainnet, KnownChainIds.MonadMainnet, KnownChainIds.NearMainnet];
4
+ export declare const nearIntentsSupportedChainIds: readonly [KnownChainIds.EthereumMainnet, KnownChainIds.ArbitrumMainnet, KnownChainIds.BaseMainnet, KnownChainIds.GnosisMainnet, KnownChainIds.BnbSmartChainMainnet, KnownChainIds.PolygonMainnet, KnownChainIds.AvalancheMainnet, KnownChainIds.OptimismMainnet, KnownChainIds.BitcoinMainnet, KnownChainIds.BitcoinCashMainnet, KnownChainIds.DogecoinMainnet, KnownChainIds.ZcashMainnet, KnownChainIds.SolanaMainnet, KnownChainIds.TronMainnet, KnownChainIds.SuiMainnet, KnownChainIds.StarknetMainnet, KnownChainIds.MonadMainnet, KnownChainIds.NearMainnet, KnownChainIds.PlasmaMainnet, KnownChainIds.TonMainnet];
5
5
  export type NearIntentsSupportedChainId = (typeof nearIntentsSupportedChainIds)[number];
6
6
  export declare const chainIdToNearIntentsChain: Record<NearIntentsSupportedChainId, string>;
@@ -10,6 +10,7 @@ export const nearIntentsSupportedChainIds = [
10
10
  KnownChainIds.AvalancheMainnet,
11
11
  KnownChainIds.OptimismMainnet,
12
12
  KnownChainIds.BitcoinMainnet,
13
+ KnownChainIds.BitcoinCashMainnet,
13
14
  KnownChainIds.DogecoinMainnet,
14
15
  KnownChainIds.ZcashMainnet,
15
16
  KnownChainIds.SolanaMainnet,
@@ -18,6 +19,8 @@ export const nearIntentsSupportedChainIds = [
18
19
  KnownChainIds.StarknetMainnet,
19
20
  KnownChainIds.MonadMainnet,
20
21
  KnownChainIds.NearMainnet,
22
+ KnownChainIds.PlasmaMainnet,
23
+ KnownChainIds.TonMainnet,
21
24
  ];
22
25
  export const chainIdToNearIntentsChain = {
23
26
  [KnownChainIds.EthereumMainnet]: 'eth',
@@ -29,12 +32,15 @@ export const chainIdToNearIntentsChain = {
29
32
  [KnownChainIds.AvalancheMainnet]: 'avax',
30
33
  [KnownChainIds.OptimismMainnet]: 'op',
31
34
  [KnownChainIds.BitcoinMainnet]: 'btc',
35
+ [KnownChainIds.BitcoinCashMainnet]: 'bch',
32
36
  [KnownChainIds.DogecoinMainnet]: 'doge',
33
37
  [KnownChainIds.ZcashMainnet]: 'zec',
38
+ [KnownChainIds.PlasmaMainnet]: 'plasma',
34
39
  [KnownChainIds.SolanaMainnet]: 'sol',
35
40
  [KnownChainIds.TronMainnet]: 'tron',
36
41
  [KnownChainIds.SuiMainnet]: 'sui',
37
42
  [KnownChainIds.StarknetMainnet]: 'starknet',
38
43
  [KnownChainIds.MonadMainnet]: 'monad',
39
44
  [KnownChainIds.NearMainnet]: 'near',
45
+ [KnownChainIds.TonMainnet]: 'ton',
40
46
  };
@@ -5,6 +5,25 @@ import { bnOrZero, isToken } from '@shapeshiftoss/utils';
5
5
  import { zeroAddress } from 'viem';
6
6
  import { chainIdToNearIntentsChain } from '../../types.js';
7
7
  import { OneClickService } from '../oneClickService.js';
8
+ const getTokensWithRetry = async () => {
9
+ const maxRetries = 3;
10
+ let lastError = null;
11
+ for (let attempt = 1; attempt <= maxRetries; attempt++) {
12
+ try {
13
+ return await OneClickService.getTokens();
14
+ }
15
+ catch (err) {
16
+ lastError = err instanceof Error ? err : new Error(String(err));
17
+ const isWebSocketError = lastError.message.includes('WebSocket is not ready');
18
+ if (isWebSocketError && attempt < maxRetries) {
19
+ await new Promise(resolve => setTimeout(resolve, 1000 * attempt));
20
+ continue;
21
+ }
22
+ throw lastError;
23
+ }
24
+ }
25
+ throw lastError ?? new Error('Failed to get tokens after retries');
26
+ };
8
27
  const ATA_RENT_LAMPORTS = 2040000;
9
28
  export const calculateAccountCreationCosts = (instructions) => {
10
29
  let totalCost = bnOrZero(0);
@@ -23,8 +42,8 @@ export const getNearIntentsAsset = ({ nearNetwork, contractAddress, }) => {
23
42
  // ERC20 tokens: "nep141:eth-0x{address}.omft.near"
24
43
  return `nep141:${nearNetwork}-${contractAddress.toLowerCase()}.omft.near`;
25
44
  };
26
- const NEP245_CHAINS = ['bsc', 'pol', 'avax', 'op', 'tron', 'monad'];
27
- const TOKEN_LOOKUP_CHAINS = ['sui', 'starknet'];
45
+ const NEP245_CHAINS = ['bsc', 'pol', 'avax', 'op', 'tron', 'monad', 'plasma'];
46
+ const TOKEN_LOOKUP_CHAINS = ['sui', 'starknet', 'ton'];
28
47
  const NEAR_CHAIN = 'near';
29
48
  const WNEAR_CONTRACT_ADDRESS = 'wrap.near';
30
49
  const isNep245Chain = (chain) => {
@@ -40,7 +59,7 @@ export const assetToNearIntentsAsset = async (asset) => {
40
59
  // NEAR chain requires special handling
41
60
  // Native NEAR maps to wNEAR (wrap.near)
42
61
  if (nearNetwork === NEAR_CHAIN) {
43
- const tokens = await OneClickService.getTokens();
62
+ const tokens = await getTokensWithRetry();
44
63
  const { assetNamespace, assetReference } = fromAssetId(asset.assetId);
45
64
  const isNativeAsset = assetNamespace === 'slip44';
46
65
  // Native NEAR maps to wNEAR, tokens use their contract address directly
@@ -56,7 +75,7 @@ export const assetToNearIntentsAsset = async (asset) => {
56
75
  // Asset IDs use hashed format that can't be generated from contract addresses
57
76
  const requiresLookup = isNep245Chain(nearNetwork) || isTokenLookupChain(nearNetwork) || asset.chainId === solanaChainId;
58
77
  if (requiresLookup) {
59
- const tokens = await OneClickService.getTokens();
78
+ const tokens = await getTokensWithRetry();
60
79
  const { assetNamespace, assetReference } = fromAssetId(asset.assetId);
61
80
  const isNativeAsset = assetNamespace === 'slip44';
62
81
  const contractAddress = !isNativeAsset ? assetReference.toLowerCase() : null;
@@ -6,6 +6,7 @@ import { zeroAddress } from 'viem';
6
6
  import { getDefaultSlippageDecimalPercentageForSwapper } from '../../../index.js';
7
7
  import { SwapperName, TradeQuoteError } from '../../../types.js';
8
8
  import { getInputOutputRate, makeSwapErrorRight } from '../../../utils.js';
9
+ import { buildAffiliateFee } from '../../utils/affiliateFee.js';
9
10
  import { getTreasuryAddressFromChainId, isNativeEvmAsset } from '../../utils/helpers/helpers.js';
10
11
  import { chainIdToPortalsNetwork } from '../constants.js';
11
12
  import { fetchPortalsTradeOrder, PortalsError } from '../utils/fetchPortalsTradeOrder.js';
@@ -201,6 +202,15 @@ export async function getPortalsTradeQuote(input, assertGetEvmChainAdapter, swap
201
202
  steps: portalsTradeOrderResponse.context.steps,
202
203
  route: portalsTradeOrderResponse.context.route,
203
204
  },
205
+ affiliateFee: buildAffiliateFee({
206
+ strategy: 'buy_asset',
207
+ affiliateBps,
208
+ sellAsset,
209
+ buyAsset,
210
+ sellAmountCryptoBaseUnit: input.sellAmountIncludingProtocolFeesCryptoBaseUnit,
211
+ buyAmountCryptoBaseUnit: buyAmountAfterFeesCryptoBaseUnit,
212
+ isEstimate: true,
213
+ }),
204
214
  },
205
215
  ],
206
216
  };
@@ -14,7 +14,6 @@ import { fetchPortalsTradeEstimate, fetchPortalsTradeOrder } from '../utils/fetc
14
14
  import { getPortalsRouterAddressByChainId, isSupportedChainId } from '../utils/helpers.js';
15
15
  export async function getPortalsTradeRate(input, assertGetEvmChainAdapter, swapperConfig) {
16
16
  const { sellAsset, buyAsset, accountNumber, affiliateBps, chainId, sellAmountIncludingProtocolFeesCryptoBaseUnit, receiveAddress, supportsEIP1559, } = input;
17
- const adapter = assertGetEvmChainAdapter(chainId);
18
17
  const sellAssetChainId = sellAsset.chainId;
19
18
  const buyAssetChainId = buyAsset.chainId;
20
19
  if (!isSupportedChainId(sellAssetChainId)) {
@@ -31,10 +30,16 @@ export async function getPortalsTradeRate(input, assertGetEvmChainAdapter, swapp
31
30
  details: { chainId: sellAsset.chainId },
32
31
  }));
33
32
  }
33
+ if (!isSupportedChainId(chainId)) {
34
+ return Err(makeSwapErrorRight({
35
+ message: `unsupported chainId`,
36
+ code: TradeQuoteError.UnsupportedChain,
37
+ details: { chainId },
38
+ }));
39
+ }
40
+ const adapter = assertGetEvmChainAdapter(chainId);
34
41
  const isCrossChain = sellAssetChainId !== buyAssetChainId;
35
42
  try {
36
- if (!isSupportedChainId(chainId))
37
- throw new Error(`Unsupported chainId ${sellAsset.chainId}`);
38
43
  const sellPortalsNetwork = chainIdToPortalsNetwork[sellAssetChainId];
39
44
  const buyPortalsNetwork = chainIdToPortalsNetwork[buyAssetChainId];
40
45
  if (!sellPortalsNetwork) {
@@ -1,7 +1,7 @@
1
- import { arbitrumChainId, avalancheChainId, baseChainId, bscChainId, btcChainId, ethChainId, gnosisChainId, hyperEvmChainId, katanaChainId, monadChainId, optimismChainId, plasmaChainId, polygonChainId, solanaChainId, tronChainId, } from '@shapeshiftoss/caip';
1
+ import { arbitrumChainId, avalancheChainId, baseChainId, berachainChainId, blastChainId, bobChainId, bscChainId, btcChainId, celoChainId, cronosChainId, ethChainId, etherealChainId, flowEvmChainId, gnosisChainId, hemiChainId, hyperEvmChainId, inkChainId, katanaChainId, lineaChainId, mantleChainId, megaethChainId, modeChainId, monadChainId, optimismChainId, plasmaChainId, plumeChainId, polygonChainId, scrollChainId, seiChainId, solanaChainId, soneiumChainId, sonicChainId, storyChainId, unichainChainId, worldChainChainId, zkSyncEraChainId, } from '@shapeshiftoss/caip';
2
2
  import invert from 'lodash/invert';
3
3
  import { zeroAddress } from 'viem';
4
- import { arbitrum, avalanche, base, bsc, gnosis, hyperEvm, katana, mainnet as ethereum, monad, optimism, plasma, polygon, } from 'viem/chains';
4
+ import { arbitrum, avalanche, base, berachain, blast, bob, bsc, celo, cronos, flowMainnet, gnosis, hemi, hyperEvm, ink, katana, linea, mainnet as ethereum, mantle, mode, monad, optimism, plasma, plumeMainnet, polygon, scroll, sei, soneium, sonic, story, unichain, worldchain, zksync, } from 'viem/chains';
5
5
  import { TradeQuoteError } from '../../types.js';
6
6
  import { RelayErrorCode } from './utils/types.js';
7
7
  export const chainIdToRelayChainId = {
@@ -17,11 +17,37 @@ export const chainIdToRelayChainId = {
17
17
  [gnosisChainId]: gnosis.id,
18
18
  [avalancheChainId]: avalanche.id,
19
19
  [bscChainId]: bsc.id,
20
- [tronChainId]: 728126428,
20
+ // DISABLED: Tron deposits are built as simple TRC20 transfers instead of depositErc20() vault calls,
21
+ // and the Relay indexer notification is never sent for non-EVM chains. This causes deposits to be
22
+ // untracked by Relay, resulting in stuck/lost funds. Re-enable once the Tron transaction building
23
+ // is verified to use the Relay quote calldata (depositErc20) correctly.
24
+ // [tronChainId]: 728126428,
21
25
  [monadChainId]: monad.id,
22
26
  [hyperEvmChainId]: hyperEvm.id,
27
+ [mantleChainId]: mantle.id,
28
+ [inkChainId]: ink.id,
29
+ [megaethChainId]: 4326,
23
30
  [plasmaChainId]: plasma.id,
24
31
  [katanaChainId]: katana.id,
32
+ [etherealChainId]: 5064014,
33
+ [celoChainId]: celo.id,
34
+ [flowEvmChainId]: flowMainnet.id,
35
+ [plumeChainId]: plumeMainnet.id,
36
+ [storyChainId]: story.id,
37
+ [zkSyncEraChainId]: zksync.id,
38
+ [blastChainId]: blast.id,
39
+ [worldChainChainId]: worldchain.id,
40
+ [hemiChainId]: hemi.id,
41
+ [lineaChainId]: linea.id,
42
+ [berachainChainId]: berachain.id,
43
+ [scrollChainId]: scroll.id,
44
+ [cronosChainId]: cronos.id,
45
+ [sonicChainId]: sonic.id,
46
+ [unichainChainId]: unichain.id,
47
+ [bobChainId]: bob.id,
48
+ [modeChainId]: mode.id,
49
+ [soneiumChainId]: soneium.id,
50
+ [seiChainId]: sei.id,
25
51
  };
26
52
  export var RelayStatusMessage;
27
53
  (function (RelayStatusMessage) {
@@ -1,2 +1,2 @@
1
1
  import type { ChainId } from '@shapeshiftoss/caip';
2
- export declare const getRelayDefaultUserAddress: (chainId: ChainId) => "0x000000000000000000000000000000000000dead" | "bc1q4vxn43l44h30nkluqfxd9eckf45vr2awz38lwa" | "CbKGgVKLJFb8bBrf58DnAkdryX6ubewVytn7X957YwNr" | "TLsV52sRDL79HXGGm9yzwKibb6BeruhUzy";
2
+ export declare const getRelayDefaultUserAddress: (chainId: ChainId) => "0x000000000000000000000000000000000000dead" | "CbKGgVKLJFb8bBrf58DnAkdryX6ubewVytn7X957YwNr" | "bc1q4vxn43l44h30nkluqfxd9eckf45vr2awz38lwa" | "TLsV52sRDL79HXGGm9yzwKibb6BeruhUzy";
@@ -1,13 +1,14 @@
1
- import { btcChainId, fromChainId, monadChainId, solanaChainId, tronChainId, } from '@shapeshiftoss/caip';
1
+ import { baseChainId, btcChainId, fromChainId, monadChainId, solanaChainId, tronChainId, } from '@shapeshiftoss/caip';
2
2
  import { evm, isEvmChainId } from '@shapeshiftoss/chain-adapters';
3
- import { bnOrZero, convertBasisPointsToPercentage, convertDecimalPercentageToBasisPoints, convertPrecision, DAO_TREASURY_BASE, } from '@shapeshiftoss/utils';
3
+ import { bnOrZero, chainIdToFeeAssetId, convertBasisPointsToPercentage, convertDecimalPercentageToBasisPoints, convertPrecision, DAO_TREASURY_BASE, } from '@shapeshiftoss/utils';
4
4
  import { Err, Ok } from '@sniptt/monads';
5
- import { PublicKey } from '@solana/web3.js';
5
+ import { AddressLookupTableAccount, MessageV0, PublicKey, VersionedTransaction, } from '@solana/web3.js';
6
6
  import axios from 'axios';
7
7
  import { getAddress, zeroAddress } from 'viem';
8
8
  import { MixPanelEvent, SwapperName, TradeQuoteError } from '../../../types.js';
9
9
  import { getInputOutputRate, makeSwapErrorRight } from '../../../utils.js';
10
10
  import { simulateWithStateOverrides } from '../../../utils/tenderly/index.js';
11
+ import { buildAffiliateFee } from '../../utils/affiliateFee.js';
11
12
  import { isNativeEvmAsset } from '../../utils/helpers/helpers.js';
12
13
  import { MAXIMUM_SUPPORTED_RELAY_STEPS, relayErrorCodeToTradeQuoteError } from '../constant.js';
13
14
  import { getRelayAssetAddress } from '../utils/getRelayAssetAddress.js';
@@ -136,6 +137,13 @@ export async function getTrade({ input, deps, relayChainMap, }) {
136
137
  }));
137
138
  }
138
139
  const { data: quote } = maybeQuote.unwrap();
140
+ const orderId = quote.protocol?.v2?.orderId;
141
+ if (!orderId && sellAsset.chainId === btcChainId) {
142
+ return Err(makeSwapErrorRight({
143
+ message: 'Relay quote missing protocol.v2.orderId',
144
+ code: TradeQuoteError.UnknownError,
145
+ }));
146
+ }
139
147
  const { slippageTolerance, currencyOut, timeEstimate } = quote.details;
140
148
  const buyAmountAfterFeesCryptoBaseUnit = currencyOut.amount;
141
149
  const rate = getInputOutputRate({
@@ -330,7 +338,7 @@ export async function getTrade({ input, deps, relayChainMap, }) {
330
338
  value: sellAmountIncludingProtocolFeesCryptoBaseUnit,
331
339
  chainSpecific: {
332
340
  pubkey: xpub ?? getRelayDefaultUserAddress(sellAsset.chainId),
333
- opReturnData: firstStep.requestId,
341
+ opReturnData: orderId,
334
342
  },
335
343
  sendMax: false,
336
344
  };
@@ -383,7 +391,7 @@ export async function getTrade({ input, deps, relayChainMap, }) {
383
391
  // Fallback to Relay's gas amount
384
392
  return quote.fees.gas.amount;
385
393
  })();
386
- const steps = swapSteps.map((quoteStep) => {
394
+ const steps = await Promise.all(swapSteps.map(async (quoteStep) => {
387
395
  const selectedItem = quoteStep.items?.[0];
388
396
  if (!selectedItem)
389
397
  throw new Error('Relay quote step contains no items');
@@ -393,7 +401,7 @@ export async function getTrade({ input, deps, relayChainMap, }) {
393
401
  .plus(relayerFeesBuyAssetCryptoBaseUnit)
394
402
  .plus(appFeesBaseUnit)
395
403
  .toFixed();
396
- const { allowanceContract, relayTransactionMetadata, solanaTransactionMetadata } = (() => {
404
+ const { allowanceContract, relayTransactionMetadata, solanaTransactionMetadata } = await (async () => {
397
405
  if (!selectedItem.data)
398
406
  throw new Error('Relay quote step contains no data');
399
407
  if (isRelayQuoteUtxoItemData(selectedItem.data)) {
@@ -405,9 +413,10 @@ export async function getTrade({ input, deps, relayChainMap, }) {
405
413
  relayTransactionMetadata: {
406
414
  from: sendAddress,
407
415
  psbt: selectedItem.data.psbt,
408
- opReturnData: quoteStep.requestId,
416
+ opReturnData: orderId,
409
417
  to: relayer,
410
418
  relayId: quote.steps[0].requestId,
419
+ orderId,
411
420
  },
412
421
  solanaTransactionMetadata: undefined,
413
422
  };
@@ -425,19 +434,48 @@ export async function getTrade({ input, deps, relayChainMap, }) {
425
434
  gasLimit: selectedItem.data?.gas,
426
435
  chainId: Number(fromChainId(sellAsset.chainId).chainReference),
427
436
  relayId: quote.steps[0].requestId,
437
+ orderId,
428
438
  },
429
439
  solanaTransactionMetadata: undefined,
430
440
  };
431
441
  }
432
442
  if (isRelayQuoteSolanaItemData(selectedItem.data)) {
443
+ const solanaInstructions = selectedItem.data?.instructions?.map(convertSolanaInstruction);
444
+ const addressLookupTableAddresses = selectedItem.data?.addressLookupTableAddresses;
445
+ // Build a trial VersionedTransaction to check if it exceeds the 1232-byte Solana tx size limit
446
+ const isOversized = await (async () => {
447
+ if (!solanaInstructions?.length || !sendAddress)
448
+ return false;
449
+ try {
450
+ const adapter = deps.assertGetSolanaChainAdapter(sellAsset.chainId);
451
+ const lookupTableInfos = await adapter.getAddressLookupTableAccounts(addressLookupTableAddresses);
452
+ const lookupTableAccounts = lookupTableInfos.map(info => new AddressLookupTableAccount({
453
+ key: new PublicKey(info.key),
454
+ state: AddressLookupTableAccount.deserialize(new Uint8Array(info.data)),
455
+ }));
456
+ const messageV0 = MessageV0.compile({
457
+ payerKey: new PublicKey(sendAddress),
458
+ instructions: solanaInstructions,
459
+ recentBlockhash: PublicKey.default.toString(),
460
+ addressLookupTableAccounts: lookupTableAccounts,
461
+ });
462
+ const txBytes = new VersionedTransaction(messageV0).serialize();
463
+ return txBytes.length > 1232;
464
+ }
465
+ catch {
466
+ return false;
467
+ }
468
+ })();
433
469
  return {
434
470
  allowanceContract: '',
435
471
  solanaTransactionMetadata: {
436
- addressLookupTableAddresses: selectedItem.data?.addressLookupTableAddresses,
437
- instructions: selectedItem.data?.instructions?.map(convertSolanaInstruction),
472
+ addressLookupTableAddresses,
473
+ instructions: solanaInstructions,
474
+ isOversized,
438
475
  },
439
476
  relayTransactionMetadata: {
440
477
  relayId: quote.steps[0].requestId,
478
+ orderId,
441
479
  },
442
480
  };
443
481
  }
@@ -447,6 +485,7 @@ export async function getTrade({ input, deps, relayChainMap, }) {
447
485
  solanaTransactionMetadata: undefined,
448
486
  relayTransactionMetadata: {
449
487
  relayId: quote.steps[0].requestId,
488
+ orderId,
450
489
  to: selectedItem.data?.parameter?.contract_address,
451
490
  },
452
491
  };
@@ -477,8 +516,19 @@ export async function getTrade({ input, deps, relayChainMap, }) {
477
516
  estimatedExecutionTimeMs: timeEstimate * 1000,
478
517
  solanaTransactionMetadata,
479
518
  relayTransactionMetadata,
519
+ affiliateFee: buildAffiliateFee({
520
+ strategy: 'fixed_asset',
521
+ affiliateBps,
522
+ sellAsset,
523
+ buyAsset,
524
+ sellAmountCryptoBaseUnit: sellAmountIncludingProtocolFeesCryptoBaseUnit,
525
+ buyAmountCryptoBaseUnit: buyAmountAfterFeesCryptoBaseUnit,
526
+ fixedAssetId: chainIdToFeeAssetId(baseChainId),
527
+ fixedAsset: deps.assetsById[chainIdToFeeAssetId(baseChainId)],
528
+ isEstimate: true,
529
+ }),
480
530
  };
481
- });
531
+ }));
482
532
  const baseQuoteOrRate = {
483
533
  id: quote.steps[0].requestId,
484
534
  rate,