@shapeshiftoss/swapper 20.3.0 → 20.5.0

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 (327) hide show
  1. package/dist/cjs/.tsbuildinfo +1 -1
  2. package/dist/cjs/constants.js +21 -0
  3. package/dist/cjs/index.d.ts +3 -0
  4. package/dist/cjs/index.js +3 -0
  5. package/dist/cjs/swappers/AcrossSwapper/utils/getAcrossStepData.js +7 -15
  6. package/dist/cjs/swappers/ArbitrumBridgeSwapper/getTradeQuote/getTradeQuote.js +0 -2
  7. package/dist/cjs/swappers/AvnuSwapper/endpoints.js +17 -12
  8. package/dist/cjs/swappers/AvnuSwapper/swapperApi/getTradeQuote.js +1 -2
  9. package/dist/cjs/swappers/BebopSwapper/utils/fetchFromBebop.d.ts +2 -1
  10. package/dist/cjs/swappers/BebopSwapper/utils/fetchFromBebop.js +21 -15
  11. package/dist/cjs/swappers/BebopSwapper/utils/getBebopSolanaTradeContext.js +1 -0
  12. package/dist/cjs/swappers/BebopSwapper/utils/getBebopStepData.js +17 -22
  13. package/dist/cjs/swappers/BobGatewaySwapper/swapperApi/getTradeQuote.js +0 -2
  14. package/dist/cjs/swappers/ButterSwap/swapperApi/getTradeQuote.js +0 -2
  15. package/dist/cjs/swappers/ButterSwap/swapperApi/getTradeQuote.test.js +1 -0
  16. package/dist/cjs/swappers/ButterSwap/swapperApi/getTradeRate.test.js +1 -0
  17. package/dist/cjs/swappers/ButterSwap/utils/getButterSwapStepData.js +3 -4
  18. package/dist/cjs/swappers/ButterSwap/utils/getButterSwapStepData.test.js +2 -2
  19. package/dist/cjs/swappers/CetusSwapper/endpoints.js +2 -3
  20. package/dist/cjs/swappers/CetusSwapper/swapperApi/getCetusStepData.js +13 -8
  21. package/dist/cjs/swappers/CetusSwapper/swapperApi/getCetusTradeContext.js +1 -2
  22. package/dist/cjs/swappers/CetusSwapper/swapperApi/getTradeQuote.js +0 -2
  23. package/dist/cjs/swappers/CetusSwapper/utils/constants.d.ts +0 -1
  24. package/dist/cjs/swappers/CetusSwapper/utils/constants.js +1 -2
  25. package/dist/cjs/swappers/CetusSwapper/utils/helpers.d.ts +3 -3
  26. package/dist/cjs/swappers/CetusSwapper/utils/helpers.js +6 -17
  27. package/dist/cjs/swappers/ChainflipSwapper/swapperApi/getTradeQuote.js +1 -2
  28. package/dist/cjs/swappers/ChainflipSwapper/types.d.ts +1 -0
  29. package/dist/cjs/swappers/DebridgeSwapper/getTradeQuote/getTradeQuote.js +0 -2
  30. package/dist/cjs/swappers/DebridgeSwapper/utils/getDebridgeStepData.d.ts +0 -1
  31. package/dist/cjs/swappers/DebridgeSwapper/utils/getDebridgeStepData.js +9 -16
  32. package/dist/cjs/swappers/DebridgeSwapper/utils/getDebridgeTradeContext.js +0 -3
  33. package/dist/cjs/swappers/FyndSwapper/FyndSwapper.d.ts +2 -0
  34. package/dist/cjs/swappers/FyndSwapper/FyndSwapper.js +5 -0
  35. package/dist/cjs/swappers/FyndSwapper/endpoints.d.ts +2 -0
  36. package/dist/cjs/swappers/FyndSwapper/endpoints.js +14 -0
  37. package/dist/cjs/swappers/FyndSwapper/getTradeQuote/getTradeQuote.d.ts +4 -0
  38. package/dist/cjs/swappers/FyndSwapper/getTradeQuote/getTradeQuote.js +43 -0
  39. package/dist/cjs/swappers/FyndSwapper/getTradeRate/getTradeRate.d.ts +4 -0
  40. package/dist/cjs/swappers/FyndSwapper/getTradeRate/getTradeRate.js +34 -0
  41. package/dist/cjs/swappers/FyndSwapper/index.d.ts +2 -0
  42. package/dist/cjs/swappers/FyndSwapper/index.js +7 -0
  43. package/dist/cjs/swappers/FyndSwapper/types.d.ts +41 -0
  44. package/dist/cjs/swappers/FyndSwapper/types.js +2 -0
  45. package/dist/cjs/swappers/FyndSwapper/utils/constants.d.ts +33 -0
  46. package/dist/cjs/swappers/FyndSwapper/utils/constants.js +38 -0
  47. package/dist/cjs/swappers/FyndSwapper/utils/fetchFromFynd.d.ts +13 -0
  48. package/dist/cjs/swappers/FyndSwapper/utils/fetchFromFynd.js +42 -0
  49. package/dist/cjs/swappers/FyndSwapper/utils/fyndService.d.ts +5 -0
  50. package/dist/cjs/swappers/FyndSwapper/utils/fyndService.js +9 -0
  51. package/dist/cjs/swappers/FyndSwapper/utils/getFyndStepData.d.ts +25 -0
  52. package/dist/cjs/swappers/FyndSwapper/utils/getFyndStepData.js +46 -0
  53. package/dist/cjs/swappers/FyndSwapper/utils/getFyndTradeContext.d.ts +18 -0
  54. package/dist/cjs/swappers/FyndSwapper/utils/getFyndTradeContext.js +94 -0
  55. package/dist/cjs/swappers/FyndSwapper/utils/helpers.d.ts +24 -0
  56. package/dist/cjs/swappers/FyndSwapper/utils/helpers.js +174 -0
  57. package/dist/cjs/swappers/FyndSwapper/utils/helpers.test.d.ts +1 -0
  58. package/dist/cjs/swappers/FyndSwapper/utils/helpers.test.js +101 -0
  59. package/dist/cjs/swappers/KyberSwapper/KyberSwapper.d.ts +2 -0
  60. package/dist/cjs/swappers/KyberSwapper/KyberSwapper.js +5 -0
  61. package/dist/cjs/swappers/KyberSwapper/endpoints.d.ts +2 -0
  62. package/dist/cjs/swappers/KyberSwapper/endpoints.js +14 -0
  63. package/dist/cjs/swappers/KyberSwapper/index.d.ts +2 -0
  64. package/dist/cjs/swappers/KyberSwapper/index.js +7 -0
  65. package/dist/cjs/swappers/KyberSwapper/swapperApi/getKyberTradeQuote.d.ts +4 -0
  66. package/dist/cjs/swappers/KyberSwapper/swapperApi/getKyberTradeQuote.js +64 -0
  67. package/dist/cjs/swappers/KyberSwapper/swapperApi/getKyberTradeRate.d.ts +4 -0
  68. package/dist/cjs/swappers/KyberSwapper/swapperApi/getKyberTradeRate.js +31 -0
  69. package/dist/cjs/swappers/KyberSwapper/types.d.ts +62 -0
  70. package/dist/cjs/swappers/KyberSwapper/types.js +2 -0
  71. package/dist/cjs/swappers/KyberSwapper/utils/constants.d.ts +21 -0
  72. package/dist/cjs/swappers/KyberSwapper/utils/constants.js +24 -0
  73. package/dist/cjs/swappers/KyberSwapper/utils/fetchFromKyber.d.ts +23 -0
  74. package/dist/cjs/swappers/KyberSwapper/utils/fetchFromKyber.js +38 -0
  75. package/dist/cjs/swappers/KyberSwapper/utils/getKyberStepData.d.ts +27 -0
  76. package/dist/cjs/swappers/KyberSwapper/utils/getKyberStepData.js +47 -0
  77. package/dist/cjs/swappers/KyberSwapper/utils/getKyberStepData.test.d.ts +1 -0
  78. package/dist/cjs/swappers/KyberSwapper/utils/getKyberStepData.test.js +92 -0
  79. package/dist/cjs/swappers/KyberSwapper/utils/getKyberTradeContext.d.ts +20 -0
  80. package/dist/cjs/swappers/KyberSwapper/utils/getKyberTradeContext.js +63 -0
  81. package/dist/cjs/swappers/KyberSwapper/utils/helpers.d.ts +27 -0
  82. package/dist/cjs/swappers/KyberSwapper/utils/helpers.js +172 -0
  83. package/dist/cjs/swappers/KyberSwapper/utils/helpers.test.d.ts +1 -0
  84. package/dist/cjs/swappers/KyberSwapper/utils/helpers.test.js +110 -0
  85. package/dist/cjs/swappers/KyberSwapper/utils/kyberService.d.ts +5 -0
  86. package/dist/cjs/swappers/KyberSwapper/utils/kyberService.js +9 -0
  87. package/dist/cjs/swappers/MayachainSwapper/generated/generatedTradableAssetMap.json +0 -1
  88. package/dist/cjs/swappers/NearIntentsSwapper/NearIntentsSwapper.js +1 -0
  89. package/dist/cjs/swappers/NearIntentsSwapper/endpoints.js +13 -14
  90. package/dist/cjs/swappers/NearIntentsSwapper/swapperApi/getTradeRate.js +1 -1
  91. package/dist/cjs/swappers/NearIntentsSwapper/types.d.ts +4 -4
  92. package/dist/cjs/swappers/NearIntentsSwapper/types.js +2 -0
  93. package/dist/cjs/swappers/NearIntentsSwapper/utils/getNearIntentsStepData.js +28 -0
  94. package/dist/cjs/swappers/NearIntentsSwapper/utils/helpers.js +2 -2
  95. package/dist/cjs/swappers/PortalsSwapper/endpoints.js +4 -1
  96. package/dist/cjs/swappers/PortalsSwapper/getPortalsTradeQuote/getPortalsTradeQuote.js +1 -1
  97. package/dist/cjs/swappers/PortalsSwapper/utils/getPortalsStepData.js +36 -55
  98. package/dist/cjs/swappers/PortalsSwapper/utils/getPortalsStepData.test.js +2 -2
  99. package/dist/cjs/swappers/RelaySwapper/getTradeQuote/getTradeQuote.js +2 -3
  100. package/dist/cjs/swappers/RelaySwapper/utils/getRelayStepData.js +7 -15
  101. package/dist/cjs/swappers/RelaySwapper/utils/getRelayTradeContext.d.ts +1 -0
  102. package/dist/cjs/swappers/RelaySwapper/utils/getRelayTradeContext.js +4 -0
  103. package/dist/cjs/swappers/RelaySwapper/utils/relayStatus.js +3 -3
  104. package/dist/cjs/swappers/RelaySwapper/utils/types.d.ts +9 -4
  105. package/dist/cjs/swappers/SymbiosisSwapper/SymbiosisSwapper.d.ts +2 -0
  106. package/dist/cjs/swappers/SymbiosisSwapper/SymbiosisSwapper.js +8 -0
  107. package/dist/cjs/swappers/SymbiosisSwapper/endpoints.d.ts +2 -0
  108. package/dist/cjs/swappers/SymbiosisSwapper/endpoints.js +66 -0
  109. package/dist/cjs/swappers/SymbiosisSwapper/getTradeQuote/getTradeQuote.d.ts +4 -0
  110. package/dist/cjs/swappers/SymbiosisSwapper/getTradeQuote/getTradeQuote.js +42 -0
  111. package/dist/cjs/swappers/SymbiosisSwapper/getTradeRate/getTradeRate.d.ts +4 -0
  112. package/dist/cjs/swappers/SymbiosisSwapper/getTradeRate/getTradeRate.js +34 -0
  113. package/dist/cjs/swappers/SymbiosisSwapper/index.d.ts +2 -0
  114. package/dist/cjs/swappers/SymbiosisSwapper/index.js +7 -0
  115. package/dist/cjs/swappers/SymbiosisSwapper/utils/constants.d.ts +19 -0
  116. package/dist/cjs/swappers/SymbiosisSwapper/utils/constants.js +64 -0
  117. package/dist/cjs/swappers/SymbiosisSwapper/utils/getSymbiosisStepData.d.ts +26 -0
  118. package/dist/cjs/swappers/SymbiosisSwapper/utils/getSymbiosisStepData.js +106 -0
  119. package/dist/cjs/swappers/SymbiosisSwapper/utils/getSymbiosisStepData.test.d.ts +1 -0
  120. package/dist/cjs/swappers/SymbiosisSwapper/utils/getSymbiosisStepData.test.js +161 -0
  121. package/dist/cjs/swappers/SymbiosisSwapper/utils/getSymbiosisTradeContext.d.ts +17 -0
  122. package/dist/cjs/swappers/SymbiosisSwapper/utils/getSymbiosisTradeContext.js +146 -0
  123. package/dist/cjs/swappers/SymbiosisSwapper/utils/helpers.d.ts +38 -0
  124. package/dist/cjs/swappers/SymbiosisSwapper/utils/helpers.js +172 -0
  125. package/dist/cjs/swappers/SymbiosisSwapper/utils/helpers.test.d.ts +1 -0
  126. package/dist/cjs/swappers/SymbiosisSwapper/utils/helpers.test.js +151 -0
  127. package/dist/cjs/swappers/SymbiosisSwapper/utils/symbiosisService.d.ts +5 -0
  128. package/dist/cjs/swappers/SymbiosisSwapper/utils/symbiosisService.js +18 -0
  129. package/dist/cjs/swappers/SymbiosisSwapper/utils/types.d.ts +83 -0
  130. package/dist/cjs/swappers/SymbiosisSwapper/utils/types.js +11 -0
  131. package/dist/cjs/swappers/ThorchainSwapper/generated/generatedThorLongtailTokens.json +1 -0
  132. package/dist/cjs/swappers/ThorchainSwapper/generated/generatedTradableAssetMap.json +1 -0
  133. package/dist/cjs/swappers/ThorchainSwapper/getTradeQuote/getTradeQuote.test.js +2 -2
  134. package/dist/cjs/swappers/ThorchainSwapper/utils/getLongtailQuote.js +1 -1
  135. package/dist/cjs/swappers/ZrxSwapper/getZrxTradeQuote/getZrxTradeQuote.js +27 -2
  136. package/dist/cjs/swappers/ZrxSwapper/getZrxTradeQuote/getZrxTradeQuote.test.d.ts +1 -0
  137. package/dist/cjs/swappers/ZrxSwapper/getZrxTradeQuote/getZrxTradeQuote.test.js +110 -0
  138. package/dist/cjs/swappers/ZrxSwapper/types.d.ts +2 -1
  139. package/dist/cjs/swappers/ZrxSwapper/utils/getZrxNativeCheckDeadline.d.ts +1 -0
  140. package/dist/cjs/swappers/ZrxSwapper/utils/getZrxNativeCheckDeadline.js +26 -0
  141. package/dist/cjs/swappers/ZrxSwapper/utils/getZrxStepData.d.ts +3 -1
  142. package/dist/cjs/swappers/ZrxSwapper/utils/getZrxStepData.js +29 -10
  143. package/dist/cjs/types.d.ts +41 -12
  144. package/dist/cjs/types.js +3 -0
  145. package/dist/cjs/utils/aptos/constants.d.ts +2 -0
  146. package/dist/cjs/utils/aptos/constants.js +7 -0
  147. package/dist/cjs/utils/aptos/getAptosTransactionFees.d.ts +2 -0
  148. package/dist/cjs/utils/aptos/getAptosTransactionFees.js +13 -0
  149. package/dist/cjs/utils/aptos/getUnsignedAptosTransaction.d.ts +2 -0
  150. package/dist/cjs/utils/aptos/getUnsignedAptosTransaction.js +16 -0
  151. package/dist/cjs/utils/aptos/index.d.ts +3 -0
  152. package/dist/cjs/utils/aptos/index.js +19 -0
  153. package/dist/cjs/utils/evm/getEvmNetworkFeeCryptoBaseUnit.d.ts +19 -6
  154. package/dist/cjs/utils/evm/getEvmNetworkFeeCryptoBaseUnit.js +45 -35
  155. package/dist/cjs/utils/evm/getEvmNetworkFeeCryptoBaseUnit.test.d.ts +1 -0
  156. package/dist/cjs/utils/evm/getEvmNetworkFeeCryptoBaseUnit.test.js +103 -0
  157. package/dist/cjs/utils/evm/stateOverride.d.ts +3 -0
  158. package/dist/cjs/utils/evm/stateOverride.js +10 -4
  159. package/dist/cjs/utils/helpers.d.ts +1 -2
  160. package/dist/cjs/utils/helpers.js +9 -32
  161. package/dist/cjs/utils/helpers.test.js +7 -2
  162. package/dist/cjs/utils/index.d.ts +3 -2
  163. package/dist/cjs/utils/index.js +11 -27
  164. package/dist/esm/.tsbuildinfo +1 -1
  165. package/dist/esm/constants.js +21 -0
  166. package/dist/esm/index.d.ts +3 -0
  167. package/dist/esm/index.js +3 -0
  168. package/dist/esm/swappers/AcrossSwapper/utils/getAcrossStepData.js +8 -16
  169. package/dist/esm/swappers/ArbitrumBridgeSwapper/getTradeQuote/getTradeQuote.js +0 -2
  170. package/dist/esm/swappers/AvnuSwapper/endpoints.js +18 -13
  171. package/dist/esm/swappers/AvnuSwapper/swapperApi/getTradeQuote.js +1 -2
  172. package/dist/esm/swappers/BebopSwapper/utils/fetchFromBebop.d.ts +2 -1
  173. package/dist/esm/swappers/BebopSwapper/utils/fetchFromBebop.js +21 -15
  174. package/dist/esm/swappers/BebopSwapper/utils/getBebopSolanaTradeContext.js +1 -0
  175. package/dist/esm/swappers/BebopSwapper/utils/getBebopStepData.js +18 -23
  176. package/dist/esm/swappers/BobGatewaySwapper/swapperApi/getTradeQuote.js +0 -2
  177. package/dist/esm/swappers/ButterSwap/swapperApi/getTradeQuote.js +0 -2
  178. package/dist/esm/swappers/ButterSwap/swapperApi/getTradeQuote.test.js +1 -0
  179. package/dist/esm/swappers/ButterSwap/swapperApi/getTradeRate.test.js +1 -0
  180. package/dist/esm/swappers/ButterSwap/utils/getButterSwapStepData.js +4 -5
  181. package/dist/esm/swappers/ButterSwap/utils/getButterSwapStepData.test.js +2 -2
  182. package/dist/esm/swappers/CetusSwapper/endpoints.js +3 -4
  183. package/dist/esm/swappers/CetusSwapper/swapperApi/getCetusStepData.js +13 -8
  184. package/dist/esm/swappers/CetusSwapper/swapperApi/getCetusTradeContext.js +2 -3
  185. package/dist/esm/swappers/CetusSwapper/swapperApi/getTradeQuote.js +0 -2
  186. package/dist/esm/swappers/CetusSwapper/utils/constants.d.ts +0 -1
  187. package/dist/esm/swappers/CetusSwapper/utils/constants.js +0 -1
  188. package/dist/esm/swappers/CetusSwapper/utils/helpers.d.ts +3 -3
  189. package/dist/esm/swappers/CetusSwapper/utils/helpers.js +4 -15
  190. package/dist/esm/swappers/ChainflipSwapper/swapperApi/getTradeQuote.js +1 -2
  191. package/dist/esm/swappers/ChainflipSwapper/types.d.ts +1 -0
  192. package/dist/esm/swappers/DebridgeSwapper/getTradeQuote/getTradeQuote.js +0 -2
  193. package/dist/esm/swappers/DebridgeSwapper/utils/getDebridgeStepData.d.ts +0 -1
  194. package/dist/esm/swappers/DebridgeSwapper/utils/getDebridgeStepData.js +9 -16
  195. package/dist/esm/swappers/DebridgeSwapper/utils/getDebridgeTradeContext.js +0 -3
  196. package/dist/esm/swappers/FyndSwapper/FyndSwapper.d.ts +2 -0
  197. package/dist/esm/swappers/FyndSwapper/FyndSwapper.js +2 -0
  198. package/dist/esm/swappers/FyndSwapper/endpoints.d.ts +2 -0
  199. package/dist/esm/swappers/FyndSwapper/endpoints.js +11 -0
  200. package/dist/esm/swappers/FyndSwapper/getTradeQuote/getTradeQuote.d.ts +4 -0
  201. package/dist/esm/swappers/FyndSwapper/getTradeQuote/getTradeQuote.js +39 -0
  202. package/dist/esm/swappers/FyndSwapper/getTradeRate/getTradeRate.d.ts +4 -0
  203. package/dist/esm/swappers/FyndSwapper/getTradeRate/getTradeRate.js +30 -0
  204. package/dist/esm/swappers/FyndSwapper/index.d.ts +2 -0
  205. package/dist/esm/swappers/FyndSwapper/index.js +2 -0
  206. package/dist/esm/swappers/FyndSwapper/types.d.ts +41 -0
  207. package/dist/esm/swappers/FyndSwapper/types.js +1 -0
  208. package/dist/esm/swappers/FyndSwapper/utils/constants.d.ts +33 -0
  209. package/dist/esm/swappers/FyndSwapper/utils/constants.js +35 -0
  210. package/dist/esm/swappers/FyndSwapper/utils/fetchFromFynd.d.ts +13 -0
  211. package/dist/esm/swappers/FyndSwapper/utils/fetchFromFynd.js +38 -0
  212. package/dist/esm/swappers/FyndSwapper/utils/fyndService.d.ts +5 -0
  213. package/dist/esm/swappers/FyndSwapper/utils/fyndService.js +3 -0
  214. package/dist/esm/swappers/FyndSwapper/utils/getFyndStepData.d.ts +25 -0
  215. package/dist/esm/swappers/FyndSwapper/utils/getFyndStepData.js +42 -0
  216. package/dist/esm/swappers/FyndSwapper/utils/getFyndTradeContext.d.ts +18 -0
  217. package/dist/esm/swappers/FyndSwapper/utils/getFyndTradeContext.js +90 -0
  218. package/dist/esm/swappers/FyndSwapper/utils/helpers.d.ts +24 -0
  219. package/dist/esm/swappers/FyndSwapper/utils/helpers.js +162 -0
  220. package/dist/esm/swappers/FyndSwapper/utils/helpers.test.d.ts +1 -0
  221. package/dist/esm/swappers/FyndSwapper/utils/helpers.test.js +99 -0
  222. package/dist/esm/swappers/KyberSwapper/KyberSwapper.d.ts +2 -0
  223. package/dist/esm/swappers/KyberSwapper/KyberSwapper.js +2 -0
  224. package/dist/esm/swappers/KyberSwapper/endpoints.d.ts +2 -0
  225. package/dist/esm/swappers/KyberSwapper/endpoints.js +11 -0
  226. package/dist/esm/swappers/KyberSwapper/index.d.ts +2 -0
  227. package/dist/esm/swappers/KyberSwapper/index.js +2 -0
  228. package/dist/esm/swappers/KyberSwapper/swapperApi/getKyberTradeQuote.d.ts +4 -0
  229. package/dist/esm/swappers/KyberSwapper/swapperApi/getKyberTradeQuote.js +60 -0
  230. package/dist/esm/swappers/KyberSwapper/swapperApi/getKyberTradeRate.d.ts +4 -0
  231. package/dist/esm/swappers/KyberSwapper/swapperApi/getKyberTradeRate.js +27 -0
  232. package/dist/esm/swappers/KyberSwapper/types.d.ts +62 -0
  233. package/dist/esm/swappers/KyberSwapper/types.js +1 -0
  234. package/dist/esm/swappers/KyberSwapper/utils/constants.d.ts +21 -0
  235. package/dist/esm/swappers/KyberSwapper/utils/constants.js +21 -0
  236. package/dist/esm/swappers/KyberSwapper/utils/fetchFromKyber.d.ts +23 -0
  237. package/dist/esm/swappers/KyberSwapper/utils/fetchFromKyber.js +33 -0
  238. package/dist/esm/swappers/KyberSwapper/utils/getKyberStepData.d.ts +27 -0
  239. package/dist/esm/swappers/KyberSwapper/utils/getKyberStepData.js +43 -0
  240. package/dist/esm/swappers/KyberSwapper/utils/getKyberStepData.test.d.ts +1 -0
  241. package/dist/esm/swappers/KyberSwapper/utils/getKyberStepData.test.js +90 -0
  242. package/dist/esm/swappers/KyberSwapper/utils/getKyberTradeContext.d.ts +20 -0
  243. package/dist/esm/swappers/KyberSwapper/utils/getKyberTradeContext.js +59 -0
  244. package/dist/esm/swappers/KyberSwapper/utils/helpers.d.ts +27 -0
  245. package/dist/esm/swappers/KyberSwapper/utils/helpers.js +158 -0
  246. package/dist/esm/swappers/KyberSwapper/utils/helpers.test.d.ts +1 -0
  247. package/dist/esm/swappers/KyberSwapper/utils/helpers.test.js +108 -0
  248. package/dist/esm/swappers/KyberSwapper/utils/kyberService.d.ts +5 -0
  249. package/dist/esm/swappers/KyberSwapper/utils/kyberService.js +3 -0
  250. package/dist/esm/swappers/MayachainSwapper/generated/generatedTradableAssetMap.json +0 -1
  251. package/dist/esm/swappers/NearIntentsSwapper/NearIntentsSwapper.js +2 -1
  252. package/dist/esm/swappers/NearIntentsSwapper/endpoints.js +13 -14
  253. package/dist/esm/swappers/NearIntentsSwapper/swapperApi/getTradeRate.js +1 -1
  254. package/dist/esm/swappers/NearIntentsSwapper/types.d.ts +4 -4
  255. package/dist/esm/swappers/NearIntentsSwapper/types.js +2 -0
  256. package/dist/esm/swappers/NearIntentsSwapper/utils/getNearIntentsStepData.js +29 -1
  257. package/dist/esm/swappers/NearIntentsSwapper/utils/helpers.js +2 -2
  258. package/dist/esm/swappers/PortalsSwapper/endpoints.js +4 -1
  259. package/dist/esm/swappers/PortalsSwapper/getPortalsTradeQuote/getPortalsTradeQuote.js +2 -2
  260. package/dist/esm/swappers/PortalsSwapper/utils/getPortalsStepData.js +34 -53
  261. package/dist/esm/swappers/PortalsSwapper/utils/getPortalsStepData.test.js +2 -2
  262. package/dist/esm/swappers/RelaySwapper/getTradeQuote/getTradeQuote.js +2 -3
  263. package/dist/esm/swappers/RelaySwapper/utils/getRelayStepData.js +9 -17
  264. package/dist/esm/swappers/RelaySwapper/utils/getRelayTradeContext.d.ts +1 -0
  265. package/dist/esm/swappers/RelaySwapper/utils/getRelayTradeContext.js +5 -1
  266. package/dist/esm/swappers/RelaySwapper/utils/relayStatus.js +3 -3
  267. package/dist/esm/swappers/RelaySwapper/utils/types.d.ts +9 -4
  268. package/dist/esm/swappers/SymbiosisSwapper/SymbiosisSwapper.d.ts +2 -0
  269. package/dist/esm/swappers/SymbiosisSwapper/SymbiosisSwapper.js +5 -0
  270. package/dist/esm/swappers/SymbiosisSwapper/endpoints.d.ts +2 -0
  271. package/dist/esm/swappers/SymbiosisSwapper/endpoints.js +63 -0
  272. package/dist/esm/swappers/SymbiosisSwapper/getTradeQuote/getTradeQuote.d.ts +4 -0
  273. package/dist/esm/swappers/SymbiosisSwapper/getTradeQuote/getTradeQuote.js +38 -0
  274. package/dist/esm/swappers/SymbiosisSwapper/getTradeRate/getTradeRate.d.ts +4 -0
  275. package/dist/esm/swappers/SymbiosisSwapper/getTradeRate/getTradeRate.js +30 -0
  276. package/dist/esm/swappers/SymbiosisSwapper/index.d.ts +2 -0
  277. package/dist/esm/swappers/SymbiosisSwapper/index.js +2 -0
  278. package/dist/esm/swappers/SymbiosisSwapper/utils/constants.d.ts +19 -0
  279. package/dist/esm/swappers/SymbiosisSwapper/utils/constants.js +61 -0
  280. package/dist/esm/swappers/SymbiosisSwapper/utils/getSymbiosisStepData.d.ts +26 -0
  281. package/dist/esm/swappers/SymbiosisSwapper/utils/getSymbiosisStepData.js +102 -0
  282. package/dist/esm/swappers/SymbiosisSwapper/utils/getSymbiosisStepData.test.d.ts +1 -0
  283. package/dist/esm/swappers/SymbiosisSwapper/utils/getSymbiosisStepData.test.js +159 -0
  284. package/dist/esm/swappers/SymbiosisSwapper/utils/getSymbiosisTradeContext.d.ts +17 -0
  285. package/dist/esm/swappers/SymbiosisSwapper/utils/getSymbiosisTradeContext.js +139 -0
  286. package/dist/esm/swappers/SymbiosisSwapper/utils/helpers.d.ts +38 -0
  287. package/dist/esm/swappers/SymbiosisSwapper/utils/helpers.js +156 -0
  288. package/dist/esm/swappers/SymbiosisSwapper/utils/helpers.test.d.ts +1 -0
  289. package/dist/esm/swappers/SymbiosisSwapper/utils/helpers.test.js +149 -0
  290. package/dist/esm/swappers/SymbiosisSwapper/utils/symbiosisService.d.ts +5 -0
  291. package/dist/esm/swappers/SymbiosisSwapper/utils/symbiosisService.js +12 -0
  292. package/dist/esm/swappers/SymbiosisSwapper/utils/types.d.ts +83 -0
  293. package/dist/esm/swappers/SymbiosisSwapper/utils/types.js +8 -0
  294. package/dist/esm/swappers/ThorchainSwapper/generated/generatedThorLongtailTokens.json +1 -0
  295. package/dist/esm/swappers/ThorchainSwapper/generated/generatedTradableAssetMap.json +1 -0
  296. package/dist/esm/swappers/ThorchainSwapper/getTradeQuote/getTradeQuote.test.js +2 -2
  297. package/dist/esm/swappers/ThorchainSwapper/utils/getLongtailQuote.js +1 -1
  298. package/dist/esm/swappers/ZrxSwapper/getZrxTradeQuote/getZrxTradeQuote.js +28 -3
  299. package/dist/esm/swappers/ZrxSwapper/getZrxTradeQuote/getZrxTradeQuote.test.d.ts +1 -0
  300. package/dist/esm/swappers/ZrxSwapper/getZrxTradeQuote/getZrxTradeQuote.test.js +108 -0
  301. package/dist/esm/swappers/ZrxSwapper/types.d.ts +2 -1
  302. package/dist/esm/swappers/ZrxSwapper/utils/getZrxNativeCheckDeadline.d.ts +1 -0
  303. package/dist/esm/swappers/ZrxSwapper/utils/getZrxNativeCheckDeadline.js +22 -0
  304. package/dist/esm/swappers/ZrxSwapper/utils/getZrxStepData.d.ts +3 -1
  305. package/dist/esm/swappers/ZrxSwapper/utils/getZrxStepData.js +31 -12
  306. package/dist/esm/types.d.ts +41 -12
  307. package/dist/esm/types.js +3 -0
  308. package/dist/esm/utils/aptos/constants.d.ts +2 -0
  309. package/dist/esm/utils/aptos/constants.js +4 -0
  310. package/dist/esm/utils/aptos/getAptosTransactionFees.d.ts +2 -0
  311. package/dist/esm/utils/aptos/getAptosTransactionFees.js +9 -0
  312. package/dist/esm/utils/aptos/getUnsignedAptosTransaction.d.ts +2 -0
  313. package/dist/esm/utils/aptos/getUnsignedAptosTransaction.js +12 -0
  314. package/dist/esm/utils/aptos/index.d.ts +3 -0
  315. package/dist/esm/utils/aptos/index.js +3 -0
  316. package/dist/esm/utils/evm/getEvmNetworkFeeCryptoBaseUnit.d.ts +19 -6
  317. package/dist/esm/utils/evm/getEvmNetworkFeeCryptoBaseUnit.js +42 -35
  318. package/dist/esm/utils/evm/getEvmNetworkFeeCryptoBaseUnit.test.d.ts +1 -0
  319. package/dist/esm/utils/evm/getEvmNetworkFeeCryptoBaseUnit.test.js +101 -0
  320. package/dist/esm/utils/evm/stateOverride.d.ts +3 -0
  321. package/dist/esm/utils/evm/stateOverride.js +8 -3
  322. package/dist/esm/utils/helpers.d.ts +1 -2
  323. package/dist/esm/utils/helpers.js +10 -33
  324. package/dist/esm/utils/helpers.test.js +7 -2
  325. package/dist/esm/utils/index.d.ts +3 -2
  326. package/dist/esm/utils/index.js +9 -26
  327. package/package.json +10 -11
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getTradeRate = void 0;
4
+ const monads_1 = require("@sniptt/monads");
5
+ const getSymbiosisStepData_1 = require("../utils/getSymbiosisStepData");
6
+ const getSymbiosisTradeContext_1 = require("../utils/getSymbiosisTradeContext");
7
+ const helpers_1 = require("../utils/helpers");
8
+ const getTradeRate = async (input, deps) => {
9
+ const { accountNumber, sellAsset, buyAsset, sendAddress, receiveAddress } = input;
10
+ const from = sendAddress ?? (0, helpers_1.getDefaultUserAddress)(sellAsset.chainId);
11
+ const to = receiveAddress ?? (0, helpers_1.getDefaultUserAddress)(buyAsset.chainId);
12
+ const maybeContext = await (0, getSymbiosisTradeContext_1.getSymbiosisTradeContext)({ input, deps, from, to });
13
+ if (maybeContext.isErr())
14
+ return (0, monads_1.Err)(maybeContext.unwrapErr());
15
+ const { tradeCommon, stepCommon, protocolFees, stepDataArgs } = maybeContext.unwrap();
16
+ const maybeStepData = await (0, getSymbiosisStepData_1.getSymbiosisStepData)({ ...stepDataArgs, type: 'rate', input });
17
+ if (maybeStepData.isErr())
18
+ return (0, monads_1.Err)(maybeStepData.unwrapErr());
19
+ const { networkFeeCryptoBaseUnit } = maybeStepData.unwrap();
20
+ const tradeRate = {
21
+ ...tradeCommon,
22
+ quoteOrRate: 'rate',
23
+ receiveAddress: to,
24
+ steps: [
25
+ {
26
+ ...stepCommon,
27
+ accountNumber,
28
+ feeData: { networkFeeCryptoBaseUnit, protocolFees },
29
+ },
30
+ ],
31
+ };
32
+ return (0, monads_1.Ok)([tradeRate]);
33
+ };
34
+ exports.getTradeRate = getTradeRate;
@@ -0,0 +1,2 @@
1
+ export { symbiosisApi } from './endpoints';
2
+ export { symbiosisSwapper } from './SymbiosisSwapper';
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.symbiosisSwapper = exports.symbiosisApi = void 0;
4
+ var endpoints_1 = require("./endpoints");
5
+ Object.defineProperty(exports, "symbiosisApi", { enumerable: true, get: function () { return endpoints_1.symbiosisApi; } });
6
+ var SymbiosisSwapper_1 = require("./SymbiosisSwapper");
7
+ Object.defineProperty(exports, "symbiosisSwapper", { enumerable: true, get: function () { return SymbiosisSwapper_1.symbiosisSwapper; } });
@@ -0,0 +1,19 @@
1
+ import type { ChainId } from '@shapeshiftoss/caip';
2
+ export declare const chainIdToSymbiosisChainId: Partial<Record<ChainId, number>>;
3
+ export declare const symbiosisChainIdToChainId: Partial<Record<number, ChainId>>;
4
+ export declare const SYMBIOSIS_DISABLED_PROVIDERS = "chainflip-bridge,thorchain-bridge,changelly,intent-solver";
5
+ export declare const SYMBIOSIS_CROSSCHAIN_SWAP_KIND = "crosschain-swap";
6
+ export declare const SYMBIOSIS_SRC_CHAIN_SWAP_LABEL = "src-chain-swap";
7
+ export declare const SYMBIOSIS_PARTNER_SWAP_LABEL = "partner-swap";
8
+ export declare const SYMBIOSIS_SEMI_CENTRALIZED_LABEL = "semi-centralized";
9
+ export declare const SYMBIOSIS_MIN_SLIPPAGE_BPS = 10;
10
+ export declare const SYMBIOSIS_MAX_SLIPPAGE_BPS = 1000;
11
+ export declare const SYMBIOSIS_PARTNER_ADDRESS = "0xF5AA59151bE6515C4Ca68A0282CF68B3eA4846fC";
12
+ export declare const SYMBIOSIS_PARTNER_FEE_BPS = "60";
13
+ export declare const SYMBIOSIS_PARTNER_FEE_DESCRIPTION = "Partner fee";
14
+ export declare const SYMBIOSIS_PARTNER_ID = "shapeshift";
15
+ export declare const DEFAULT_SYMBIOSIS_EVM_USER_ADDRESS = "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045";
16
+ export declare const DEFAULT_SYMBIOSIS_TRON_USER_ADDRESS = "TLa2f6VPqDgRE67v1736s7bJ8Ray5wYjU7";
17
+ export declare const SYMBIOSIS_TRON_BRIDGE_ENERGY = "470000";
18
+ export declare const SYMBIOSIS_TRON_SOURCE_SWAP_ENERGY = "580000";
19
+ export declare const SYMBIOSIS_EXPLORER_URL = "https://explorer.symbiosis.finance";
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SYMBIOSIS_EXPLORER_URL = exports.SYMBIOSIS_TRON_SOURCE_SWAP_ENERGY = exports.SYMBIOSIS_TRON_BRIDGE_ENERGY = exports.DEFAULT_SYMBIOSIS_TRON_USER_ADDRESS = exports.DEFAULT_SYMBIOSIS_EVM_USER_ADDRESS = exports.SYMBIOSIS_PARTNER_ID = exports.SYMBIOSIS_PARTNER_FEE_DESCRIPTION = exports.SYMBIOSIS_PARTNER_FEE_BPS = exports.SYMBIOSIS_PARTNER_ADDRESS = exports.SYMBIOSIS_MAX_SLIPPAGE_BPS = exports.SYMBIOSIS_MIN_SLIPPAGE_BPS = exports.SYMBIOSIS_SEMI_CENTRALIZED_LABEL = exports.SYMBIOSIS_PARTNER_SWAP_LABEL = exports.SYMBIOSIS_SRC_CHAIN_SWAP_LABEL = exports.SYMBIOSIS_CROSSCHAIN_SWAP_KIND = exports.SYMBIOSIS_DISABLED_PROVIDERS = exports.symbiosisChainIdToChainId = exports.chainIdToSymbiosisChainId = void 0;
4
+ const caip_1 = require("@shapeshiftoss/caip");
5
+ const SYMBIOSIS_TRON_CHAIN_ID = 728126428;
6
+ const SYMBIOSIS_SUPPORTED_EVM_CHAIN_IDS = [
7
+ caip_1.ethChainId,
8
+ caip_1.bscChainId,
9
+ caip_1.polygonChainId,
10
+ caip_1.avalancheChainId,
11
+ caip_1.arbitrumChainId,
12
+ caip_1.optimismChainId,
13
+ caip_1.baseChainId,
14
+ caip_1.gnosisChainId,
15
+ caip_1.zkSyncEraChainId,
16
+ caip_1.lineaChainId,
17
+ caip_1.scrollChainId,
18
+ caip_1.mantleChainId,
19
+ caip_1.modeChainId,
20
+ caip_1.seiChainId,
21
+ caip_1.cronosChainId,
22
+ caip_1.sonicChainId,
23
+ caip_1.abstractChainId,
24
+ caip_1.berachainChainId,
25
+ caip_1.unichainChainId,
26
+ caip_1.soneiumChainId,
27
+ caip_1.hyperEvmChainId,
28
+ caip_1.katanaChainId,
29
+ caip_1.plasmaChainId,
30
+ caip_1.monadChainId,
31
+ caip_1.robinhoodChainId,
32
+ ];
33
+ // Symbiosis uses the EVM chain reference as its chain id, and its own id for Tron
34
+ const SYMBIOSIS_CHAIN_ID_ENTRIES = [
35
+ ...SYMBIOSIS_SUPPORTED_EVM_CHAIN_IDS.map((chainId) => [
36
+ chainId,
37
+ Number((0, caip_1.fromChainId)(chainId).chainReference),
38
+ ]),
39
+ [caip_1.tronChainId, SYMBIOSIS_TRON_CHAIN_ID],
40
+ ];
41
+ exports.chainIdToSymbiosisChainId = Object.fromEntries(SYMBIOSIS_CHAIN_ID_ENTRIES);
42
+ exports.symbiosisChainIdToChainId = Object.fromEntries(SYMBIOSIS_CHAIN_ID_ENTRIES.map(([chainId, symbiosisChainId]) => [symbiosisChainId, chainId]));
43
+ // Disabled liquidity providers: bridges we integrate directly, custodial Changelly, and intent routes that skip the partner fee
44
+ exports.SYMBIOSIS_DISABLED_PROVIDERS = 'chainflip-bridge,thorchain-bridge,changelly,intent-solver';
45
+ exports.SYMBIOSIS_CROSSCHAIN_SWAP_KIND = 'crosschain-swap';
46
+ exports.SYMBIOSIS_SRC_CHAIN_SWAP_LABEL = 'src-chain-swap';
47
+ // Labels on routes with a leg outside Symbiosis
48
+ exports.SYMBIOSIS_PARTNER_SWAP_LABEL = 'partner-swap';
49
+ exports.SYMBIOSIS_SEMI_CENTRALIZED_LABEL = 'semi-centralized';
50
+ // /v2/quote answers 'Slippage is too low' under 10 and 'too high' over 1000
51
+ exports.SYMBIOSIS_MIN_SLIPPAGE_BPS = 10;
52
+ exports.SYMBIOSIS_MAX_SLIPPAGE_BPS = 1000;
53
+ // Our registered partner address and the fixed fee rate Symbiosis has configured for it
54
+ exports.SYMBIOSIS_PARTNER_ADDRESS = '0xF5AA59151bE6515C4Ca68A0282CF68B3eA4846fC';
55
+ exports.SYMBIOSIS_PARTNER_FEE_BPS = '60';
56
+ exports.SYMBIOSIS_PARTNER_FEE_DESCRIPTION = 'Partner fee';
57
+ // Sent as X-Partner-Id so Symbiosis attributes our swaps to this client id in its explorer and metrics
58
+ exports.SYMBIOSIS_PARTNER_ID = 'shapeshift';
59
+ exports.DEFAULT_SYMBIOSIS_EVM_USER_ADDRESS = '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045';
60
+ exports.DEFAULT_SYMBIOSIS_TRON_USER_ADDRESS = 'TLa2f6VPqDgRE67v1736s7bJ8Ray5wYjU7';
61
+ // metaRoute energy over 31 mainnet calls on 2026-10-05: up to 467,826 bridging the sell token, up to 578,456 with a source swap first
62
+ exports.SYMBIOSIS_TRON_BRIDGE_ENERGY = '470000';
63
+ exports.SYMBIOSIS_TRON_SOURCE_SWAP_ENERGY = '580000';
64
+ exports.SYMBIOSIS_EXPLORER_URL = 'https://explorer.symbiosis.finance';
@@ -0,0 +1,26 @@
1
+ import type { Result } from '@sniptt/monads';
2
+ import type { StepDataArgs, SwapErrorRight, TxBuildData } from '../../../types';
3
+ import type { SymbiosisSwapTx } from './types';
4
+ type BaseArgs = {
5
+ swapTx: SymbiosisSwapTx;
6
+ sellAmountCryptoBaseUnit: string;
7
+ spenderAddress: string;
8
+ tronFallbackEnergy: string;
9
+ };
10
+ export type GetSymbiosisStepDataArgs = StepDataArgs<BaseArgs, {
11
+ from: string;
12
+ }>;
13
+ type SymbiosisRateStepData = {
14
+ networkFeeCryptoBaseUnit: string | undefined;
15
+ };
16
+ type SymbiosisQuoteStepData = {
17
+ transactionData: TxBuildData;
18
+ networkFeeCryptoBaseUnit: string;
19
+ };
20
+ export declare function getSymbiosisStepData(args: Extract<GetSymbiosisStepDataArgs, {
21
+ type: 'rate';
22
+ }>): Promise<Result<SymbiosisRateStepData, SwapErrorRight>>;
23
+ export declare function getSymbiosisStepData(args: Extract<GetSymbiosisStepDataArgs, {
24
+ type: 'quote';
25
+ }>): Promise<Result<SymbiosisQuoteStepData, SwapErrorRight>>;
26
+ export {};
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getSymbiosisStepData = void 0;
4
+ const caip_1 = require("@shapeshiftoss/caip");
5
+ const chain_adapters_1 = require("@shapeshiftoss/chain-adapters");
6
+ const utils_1 = require("@shapeshiftoss/utils");
7
+ const monads_1 = require("@sniptt/monads");
8
+ const utils_2 = require("../../../utils");
9
+ const evm_1 = require("../../../utils/evm");
10
+ const tron_1 = require("../../../utils/tron");
11
+ const constants_1 = require("./constants");
12
+ const helpers_1 = require("./helpers");
13
+ async function getSymbiosisStepData(args) {
14
+ const { swapTx, sellAsset, sellAmountCryptoBaseUnit, spenderAddress, tronFallbackEnergy, from, type, input, deps, } = args;
15
+ // Symbiosis adds its own fee to the native value on other route kinds - a step must send exactly the sell amount
16
+ const expectedValue = (0, utils_1.isToken)(sellAsset.assetId) ? '0' : sellAmountCryptoBaseUnit;
17
+ if (!(0, utils_1.bnOrZero)(swapTx.tx.value).eq(expectedValue)) {
18
+ return (0, monads_1.Err)((0, utils_2.makeTradeStepBuildFailedErr)('getSymbiosisStepData'));
19
+ }
20
+ if (swapTx.tx.chainId !== constants_1.chainIdToSymbiosisChainId[sellAsset.chainId]) {
21
+ return (0, monads_1.Err)((0, utils_2.makeTradeStepBuildFailedErr)('getSymbiosisStepData'));
22
+ }
23
+ switch (swapTx.type) {
24
+ case 'evm': {
25
+ const { tx } = swapTx;
26
+ const adapter = deps.assertGetEvmChainAdapter(sellAsset.chainId);
27
+ const supportsEIP1559 = 'supportsEIP1559' in input ? input.supportsEIP1559 : false;
28
+ const transactionData = {
29
+ type: 'evm',
30
+ chainId: Number((0, caip_1.fromChainId)(sellAsset.chainId).chainReference),
31
+ to: tx.to,
32
+ data: tx.data,
33
+ value: tx.value ?? '0',
34
+ };
35
+ const stateOverride = { sellAsset, sellAmountCryptoBaseUnit, spenderAddress };
36
+ if (type === 'rate') {
37
+ const networkFeeCryptoBaseUnit = await (0, evm_1.getEvmNetworkFeeCryptoBaseUnit)({
38
+ adapter,
39
+ transactionData,
40
+ from,
41
+ supportsEIP1559,
42
+ stateOverride,
43
+ }).catch(() => undefined);
44
+ const stepData = { networkFeeCryptoBaseUnit };
45
+ return (0, monads_1.Ok)(stepData);
46
+ }
47
+ try {
48
+ const networkFeeCryptoBaseUnit = await (0, evm_1.getEvmNetworkFeeCryptoBaseUnit)({
49
+ adapter,
50
+ transactionData,
51
+ from,
52
+ supportsEIP1559,
53
+ stateOverride,
54
+ });
55
+ const stepData = { transactionData, networkFeeCryptoBaseUnit };
56
+ return (0, monads_1.Ok)(stepData);
57
+ }
58
+ catch (error) {
59
+ return (0, monads_1.Err)((0, utils_2.makeNetworkFeeEstimationFailedErr)('getSymbiosisStepData', error));
60
+ }
61
+ }
62
+ case 'tron': {
63
+ const { tx } = swapTx;
64
+ if (!tx.functionSelector)
65
+ return (0, monads_1.Err)((0, utils_2.makeTradeStepBuildFailedErr)('getSymbiosisStepData'));
66
+ const adapter = deps.assertGetTronChainAdapter(sellAsset.chainId);
67
+ const call = {
68
+ to: tx.to,
69
+ data: (0, helpers_1.buildSymbiosisTronCallData)({ functionSelector: tx.functionSelector, data: tx.data }),
70
+ value: tx.value ?? '0',
71
+ };
72
+ if (type === 'rate') {
73
+ const networkFeeCryptoBaseUnit = await (0, tron_1.getTronContractCallFallbackFeeCryptoBaseUnit)({
74
+ adapter,
75
+ energy: tronFallbackEnergy,
76
+ bandwidthBytes: chain_adapters_1.tron.getTronContractCallBandwidthBytes(call.data),
77
+ contractAddress: call.to,
78
+ fullEnergyOnShareLookupFailure: true,
79
+ }).catch(() => undefined);
80
+ const stepData = { networkFeeCryptoBaseUnit };
81
+ return (0, monads_1.Ok)(stepData);
82
+ }
83
+ try {
84
+ const stepData = {
85
+ transactionData: { type: 'tron', ...call },
86
+ networkFeeCryptoBaseUnit: await (0, tron_1.getTronContractCallNetworkFeeCryptoBaseUnit)({
87
+ adapter,
88
+ transactionData: call,
89
+ from,
90
+ sellAsset,
91
+ sellAmountCryptoBaseUnit,
92
+ spenderAddress,
93
+ fallbackEnergy: tronFallbackEnergy,
94
+ }),
95
+ };
96
+ return (0, monads_1.Ok)(stepData);
97
+ }
98
+ catch (error) {
99
+ return (0, monads_1.Err)((0, utils_2.makeNetworkFeeEstimationFailedErr)('getSymbiosisStepData', error));
100
+ }
101
+ }
102
+ default:
103
+ return (0, monads_1.Err)((0, utils_2.makeTradeStepBuildFailedErr)('getSymbiosisStepData'));
104
+ }
105
+ }
106
+ exports.getSymbiosisStepData = getSymbiosisStepData;
@@ -0,0 +1,161 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const caip_1 = require("@shapeshiftoss/caip");
4
+ const vitest_1 = require("vitest");
5
+ const types_1 = require("../../../types");
6
+ const evm_1 = require("../../../utils/evm");
7
+ const assets_1 = require("../../../utils/test-data/assets");
8
+ const tron_1 = require("../../../utils/tron");
9
+ const getSymbiosisStepData_1 = require("./getSymbiosisStepData");
10
+ vitest_1.vi.mock('../../../utils/evm', () => ({
11
+ getEvmNetworkFeeCryptoBaseUnit: vitest_1.vi.fn(),
12
+ }));
13
+ vitest_1.vi.mock('../../../utils/tron', () => ({
14
+ getTronContractCallFallbackFeeCryptoBaseUnit: vitest_1.vi.fn(),
15
+ getTronContractCallNetworkFeeCryptoBaseUnit: vitest_1.vi.fn(),
16
+ }));
17
+ const TRX = {
18
+ ...assets_1.ETH,
19
+ assetId: caip_1.tronAssetId,
20
+ chainId: caip_1.tronChainId,
21
+ symbol: 'TRX',
22
+ precision: 6,
23
+ };
24
+ const ROUTER = '0x3743c756b64ECd0770f1d4f47696A73d2A46dcbe';
25
+ const TRON_ROUTER = 'TPuaJ6gnYfE9gLUDFrbWbPx3tMnjG8max1';
26
+ const FROM = '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045';
27
+ const TRON_FROM = 'TLa2f6VPqDgRE67v1736s7bJ8Ray5wYjU7';
28
+ const deps = {
29
+ assertGetEvmChainAdapter: vitest_1.vi.fn(() => ({})),
30
+ assertGetTronChainAdapter: vitest_1.vi.fn(() => ({})),
31
+ };
32
+ const quoteInput = { supportsEIP1559: true };
33
+ const evmSwapTx = {
34
+ type: 'evm',
35
+ tx: { chainId: 42161, to: ROUTER, data: '0xa11b1198', value: '0' },
36
+ };
37
+ const tronSwapTx = {
38
+ type: 'tron',
39
+ tx: {
40
+ chainId: 728126428,
41
+ from: TRON_FROM,
42
+ to: TRON_ROUTER,
43
+ data: '0x0020',
44
+ value: '500000000',
45
+ feeLimit: 200000000,
46
+ functionSelector: 'metaRoute((bytes,bytes,address[],address,address,uint256,bool,address,bytes))',
47
+ },
48
+ };
49
+ const evmArgs = {
50
+ swapTx: evmSwapTx,
51
+ sellAsset: assets_1.USDC_ARBITRUM,
52
+ sellAmountCryptoBaseUnit: '100000000',
53
+ spenderAddress: ROUTER,
54
+ tronFallbackEnergy: '470000',
55
+ from: FROM,
56
+ deps,
57
+ };
58
+ const tronArgs = {
59
+ swapTx: tronSwapTx,
60
+ sellAsset: TRX,
61
+ sellAmountCryptoBaseUnit: '500000000',
62
+ spenderAddress: '',
63
+ tronFallbackEnergy: '580000',
64
+ from: TRON_FROM,
65
+ deps,
66
+ };
67
+ (0, vitest_1.describe)('getSymbiosisStepData', () => {
68
+ (0, vitest_1.beforeEach)(() => {
69
+ vitest_1.vi.clearAllMocks();
70
+ });
71
+ (0, vitest_1.describe)('evm', () => {
72
+ (0, vitest_1.it)('fails to build when a token sell carries native value', async () => {
73
+ const swapTx = {
74
+ type: 'evm',
75
+ tx: { ...evmSwapTx.tx, value: '300000000000000' },
76
+ };
77
+ const result = await (0, getSymbiosisStepData_1.getSymbiosisStepData)({
78
+ ...evmArgs,
79
+ swapTx,
80
+ type: 'quote',
81
+ input: quoteInput,
82
+ });
83
+ (0, vitest_1.expect)(result.unwrapErr().code).toBe(types_1.TradeQuoteError.InvalidResponse);
84
+ (0, vitest_1.expect)(evm_1.getEvmNetworkFeeCryptoBaseUnit).not.toHaveBeenCalled();
85
+ });
86
+ (0, vitest_1.it)('fails to build when a native sell sends more than the sell amount', async () => {
87
+ const swapTx = {
88
+ type: 'evm',
89
+ tx: { ...evmSwapTx.tx, value: '50300000000000000' },
90
+ };
91
+ const result = await (0, getSymbiosisStepData_1.getSymbiosisStepData)({
92
+ ...evmArgs,
93
+ swapTx,
94
+ sellAsset: assets_1.ETH_ARBITRUM,
95
+ sellAmountCryptoBaseUnit: '50000000000000000',
96
+ type: 'quote',
97
+ input: quoteInput,
98
+ });
99
+ (0, vitest_1.expect)(result.unwrapErr().code).toBe(types_1.TradeQuoteError.InvalidResponse);
100
+ (0, vitest_1.expect)(evm_1.getEvmNetworkFeeCryptoBaseUnit).not.toHaveBeenCalled();
101
+ });
102
+ (0, vitest_1.it)('fails to build when the payload is for another chain', async () => {
103
+ const swapTx = { type: 'evm', tx: { ...evmSwapTx.tx, chainId: 1 } };
104
+ const result = await (0, getSymbiosisStepData_1.getSymbiosisStepData)({
105
+ ...evmArgs,
106
+ swapTx,
107
+ type: 'quote',
108
+ input: quoteInput,
109
+ });
110
+ (0, vitest_1.expect)(result.unwrapErr().code).toBe(types_1.TradeQuoteError.InvalidResponse);
111
+ (0, vitest_1.expect)(evm_1.getEvmNetworkFeeCryptoBaseUnit).not.toHaveBeenCalled();
112
+ });
113
+ (0, vitest_1.it)('builds a native sell whose value is exactly the sell amount', async () => {
114
+ vitest_1.vi.mocked(evm_1.getEvmNetworkFeeCryptoBaseUnit).mockResolvedValue('1234');
115
+ const swapTx = {
116
+ type: 'evm',
117
+ tx: { ...evmSwapTx.tx, value: '50000000000000000' },
118
+ };
119
+ const result = await (0, getSymbiosisStepData_1.getSymbiosisStepData)({
120
+ ...evmArgs,
121
+ swapTx,
122
+ sellAsset: assets_1.ETH_ARBITRUM,
123
+ sellAmountCryptoBaseUnit: '50000000000000000',
124
+ type: 'quote',
125
+ input: quoteInput,
126
+ });
127
+ (0, vitest_1.expect)(result.isOk()).toBe(true);
128
+ });
129
+ });
130
+ (0, vitest_1.describe)('tron', () => {
131
+ const expectedCall = { to: TRON_ROUTER, data: '0xa11b11980020', value: '500000000' };
132
+ (0, vitest_1.it)('assembles the contract call and prices it for a quote', async () => {
133
+ vitest_1.vi.mocked(tron_1.getTronContractCallNetworkFeeCryptoBaseUnit).mockResolvedValue('45000000');
134
+ const result = await (0, getSymbiosisStepData_1.getSymbiosisStepData)({ ...tronArgs, type: 'quote', input: quoteInput });
135
+ (0, vitest_1.expect)(result.unwrap()).toEqual({
136
+ transactionData: { type: 'tron', ...expectedCall },
137
+ networkFeeCryptoBaseUnit: '45000000',
138
+ });
139
+ (0, vitest_1.expect)(tron_1.getTronContractCallNetworkFeeCryptoBaseUnit).toHaveBeenCalledWith(vitest_1.expect.objectContaining({
140
+ transactionData: expectedCall,
141
+ from: TRON_FROM,
142
+ spenderAddress: '',
143
+ fallbackEnergy: '580000',
144
+ }));
145
+ });
146
+ (0, vitest_1.it)('fails to build when the response has no function selector', async () => {
147
+ const swapTx = {
148
+ type: 'tron',
149
+ tx: { ...tronSwapTx.tx, functionSelector: undefined },
150
+ };
151
+ const result = await (0, getSymbiosisStepData_1.getSymbiosisStepData)({
152
+ ...tronArgs,
153
+ swapTx,
154
+ type: 'quote',
155
+ input: quoteInput,
156
+ });
157
+ (0, vitest_1.expect)(result.unwrapErr().code).toBe(types_1.TradeQuoteError.InvalidResponse);
158
+ (0, vitest_1.expect)(tron_1.getTronContractCallNetworkFeeCryptoBaseUnit).not.toHaveBeenCalled();
159
+ });
160
+ });
161
+ });
@@ -0,0 +1,17 @@
1
+ import type { Result } from '@sniptt/monads';
2
+ import type { QuoteFeeData, SwapErrorRight, SwapperDeps, TradeCommon, TradeStepCommon } from '../../../types';
3
+ import type { GetSymbiosisStepDataArgs } from './getSymbiosisStepData';
4
+ import type { SymbiosisTradeQuoteInput, SymbiosisTradeRateInput } from './types';
5
+ type SymbiosisTradeContext = {
6
+ tradeCommon: TradeCommon;
7
+ stepCommon: Omit<TradeStepCommon, 'feeData'>;
8
+ protocolFees: QuoteFeeData['protocolFees'];
9
+ stepDataArgs: Omit<GetSymbiosisStepDataArgs, 'type' | 'input'>;
10
+ };
11
+ export declare const getSymbiosisTradeContext: ({ input, deps, from, to, }: {
12
+ input: SymbiosisTradeQuoteInput | SymbiosisTradeRateInput;
13
+ deps: SwapperDeps;
14
+ from: string;
15
+ to: string;
16
+ }) => Promise<Result<SymbiosisTradeContext, SwapErrorRight>>;
17
+ export {};
@@ -0,0 +1,146 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getSymbiosisTradeContext = void 0;
7
+ const utils_1 = require("@shapeshiftoss/utils");
8
+ const monads_1 = require("@sniptt/monads");
9
+ const axios_1 = __importDefault(require("axios"));
10
+ const uuid_1 = require("uuid");
11
+ const constants_1 = require("../../../constants");
12
+ const types_1 = require("../../../types");
13
+ const utils_2 = require("../../../utils");
14
+ const affiliateFee_1 = require("../../../utils/affiliateFee");
15
+ const constants_2 = require("./constants");
16
+ const helpers_1 = require("./helpers");
17
+ const symbiosisService_1 = require("./symbiosisService");
18
+ const getSymbiosisTradeContext = async ({ input, deps, from, to, }) => {
19
+ const { sellAsset, buyAsset, sellAmountIncludingProtocolFeesCryptoBaseUnit, affiliateBps } = input;
20
+ const assertion = (0, helpers_1.assertValidTrade)({ sellAsset, buyAsset });
21
+ if (assertion.isErr())
22
+ return (0, monads_1.Err)(assertion.unwrapErr());
23
+ const { sellSymbiosisChainId, buySymbiosisChainId } = assertion.unwrap();
24
+ const slippageBps = (0, helpers_1.getSymbiosisSlippageBps)(input.slippageTolerancePercentageDecimal ??
25
+ (0, constants_1.getDefaultSlippageDecimalPercentageForSwapper)(types_1.SwapperName.Symbiosis));
26
+ const maybePartnerAddress = (0, helpers_1.getSymbiosisPartnerAddress)(affiliateBps);
27
+ if (maybePartnerAddress.isErr())
28
+ return (0, monads_1.Err)(maybePartnerAddress.unwrapErr());
29
+ const partnerAddress = maybePartnerAddress.unwrap();
30
+ const request = {
31
+ tokenAmountIn: {
32
+ chainId: sellSymbiosisChainId,
33
+ address: (0, helpers_1.getSymbiosisTokenAddress)(sellAsset),
34
+ decimals: sellAsset.precision,
35
+ amount: sellAmountIncludingProtocolFeesCryptoBaseUnit,
36
+ },
37
+ tokenOut: {
38
+ chainId: buySymbiosisChainId,
39
+ address: (0, helpers_1.getSymbiosisTokenAddress)(buyAsset),
40
+ decimals: buyAsset.precision,
41
+ },
42
+ from,
43
+ to,
44
+ slippage: slippageBps,
45
+ disabledProviders: constants_2.SYMBIOSIS_DISABLED_PROVIDERS,
46
+ partnerAddress,
47
+ };
48
+ const maybeQuote = await symbiosisService_1.symbiosisService.post(`${deps.config.VITE_SYMBIOSIS_API_URL}/v2/quote`, request);
49
+ if (maybeQuote.isErr()) {
50
+ const { cause } = maybeQuote.unwrapErr();
51
+ if (!axios_1.default.isAxiosError(cause)) {
52
+ return (0, monads_1.Err)((0, utils_2.makeSwapErrorRight)({
53
+ message: 'Unknown error',
54
+ code: types_1.TradeQuoteError.UnknownError,
55
+ cause,
56
+ }));
57
+ }
58
+ if (cause.response?.status === 429) {
59
+ return (0, monads_1.Err)((0, utils_2.makeSwapErrorRight)({
60
+ message: 'Symbiosis rate limit exceeded',
61
+ code: types_1.TradeQuoteError.RateLimitExceeded,
62
+ }));
63
+ }
64
+ const message = cause.response?.data?.message;
65
+ return (0, monads_1.Err)((0, utils_2.makeSwapErrorRight)({
66
+ message: message ?? 'Symbiosis quote request failed',
67
+ code: (0, helpers_1.symbiosisErrorToTradeQuoteError)(message),
68
+ }));
69
+ }
70
+ const { data: quote } = maybeQuote.unwrap();
71
+ if (!(0, helpers_1.isSymbiosisRouteSupported)({ quote, sellAsset })) {
72
+ return (0, monads_1.Err)((0, utils_2.makeSwapErrorRight)({
73
+ message: 'No Symbiosis route through its own liquidity',
74
+ code: types_1.TradeQuoteError.NoRouteFound,
75
+ }));
76
+ }
77
+ // The quote must carry the fee we report, otherwise Symbiosis is not collecting it on this route
78
+ if (partnerAddress &&
79
+ !quote.fees.some(fee => fee.description === constants_2.SYMBIOSIS_PARTNER_FEE_DESCRIPTION)) {
80
+ return (0, monads_1.Err)((0, utils_2.makeSwapErrorRight)({
81
+ message: 'Symbiosis quote is missing the partner fee',
82
+ code: types_1.TradeQuoteError.InvalidResponse,
83
+ }));
84
+ }
85
+ const buyAmountAfterFeesCryptoBaseUnit = quote.tokenAmountOut.amount;
86
+ const protocolFees = (0, helpers_1.getSymbiosisProtocolFees)(quote.fees);
87
+ const buyAmountBeforeFeesCryptoBaseUnit = (0, utils_1.bn)(buyAmountAfterFeesCryptoBaseUnit)
88
+ .plus(protocolFees[buyAsset.assetId]?.amountCryptoBaseUnit ?? 0)
89
+ .toFixed(0);
90
+ const rate = (0, utils_2.getInputOutputRate)({
91
+ sellAmountCryptoBaseUnit: sellAmountIncludingProtocolFeesCryptoBaseUnit,
92
+ buyAmountCryptoBaseUnit: buyAmountAfterFeesCryptoBaseUnit,
93
+ sellAsset,
94
+ buyAsset,
95
+ });
96
+ const allowanceContract = (0, utils_1.isToken)(sellAsset.assetId) ? quote.approveTo : '';
97
+ if (allowanceContract === undefined) {
98
+ return (0, monads_1.Err)((0, utils_2.makeSwapErrorRight)({
99
+ message: 'Symbiosis returned no spender for a token sell',
100
+ code: types_1.TradeQuoteError.QueryFailed,
101
+ }));
102
+ }
103
+ return (0, monads_1.Ok)({
104
+ tradeCommon: {
105
+ id: (0, uuid_1.v4)(),
106
+ rate,
107
+ swapperName: types_1.SwapperName.Symbiosis,
108
+ affiliateBps: partnerAddress ? constants_2.SYMBIOSIS_PARTNER_FEE_BPS : '0',
109
+ slippageTolerancePercentageDecimal: (0, utils_1.bn)(slippageBps).div(10000).toString(),
110
+ },
111
+ stepCommon: {
112
+ allowanceContract,
113
+ rate,
114
+ buyAmountBeforeFeesCryptoBaseUnit,
115
+ buyAmountAfterFeesCryptoBaseUnit,
116
+ sellAmountIncludingProtocolFeesCryptoBaseUnit,
117
+ buyAsset,
118
+ sellAsset,
119
+ source: types_1.SwapperName.Symbiosis,
120
+ estimatedExecutionTimeMs: quote.estimatedTime * 1000,
121
+ // The fee accrues in sTokens on the Symbiosis chain - the buy asset figure is a display estimate
122
+ affiliateFee: partnerAddress
123
+ ? (0, affiliateFee_1.buildAffiliateFee)({
124
+ strategy: 'buy_asset',
125
+ affiliateBps: constants_2.SYMBIOSIS_PARTNER_FEE_BPS,
126
+ sellAsset,
127
+ buyAsset,
128
+ sellAmountCryptoBaseUnit: sellAmountIncludingProtocolFeesCryptoBaseUnit,
129
+ buyAmountCryptoBaseUnit: buyAmountAfterFeesCryptoBaseUnit,
130
+ isEstimate: true,
131
+ })
132
+ : undefined,
133
+ },
134
+ protocolFees,
135
+ stepDataArgs: {
136
+ swapTx: quote,
137
+ sellAsset,
138
+ sellAmountCryptoBaseUnit: sellAmountIncludingProtocolFeesCryptoBaseUnit,
139
+ spenderAddress: allowanceContract,
140
+ tronFallbackEnergy: (0, helpers_1.getSymbiosisTronFallbackEnergy)(quote.labels),
141
+ from,
142
+ deps,
143
+ },
144
+ });
145
+ };
146
+ exports.getSymbiosisTradeContext = getSymbiosisTradeContext;
@@ -0,0 +1,38 @@
1
+ import type { AssetId, ChainId } from '@shapeshiftoss/caip';
2
+ import type { Asset } from '@shapeshiftoss/types';
3
+ import type { Result } from '@sniptt/monads';
4
+ import type { QuoteFeeData, SwapErrorRight, TradeStatus } from '../../../types';
5
+ import { TradeQuoteError } from '../../../types';
6
+ import type { SymbiosisFee, SymbiosisQuoteResponse, SymbiosisToken, SymbiosisTxResponse } from './types';
7
+ export declare const assertValidTrade: ({ sellAsset, buyAsset, }: {
8
+ sellAsset: Asset;
9
+ buyAsset: Asset;
10
+ }) => Result<{
11
+ sellSymbiosisChainId: number;
12
+ buySymbiosisChainId: number;
13
+ }, SwapErrorRight>;
14
+ export declare const getSymbiosisTokenAddress: (asset: Asset) => string;
15
+ export declare const getSymbiosisSlippageBps: (slippageTolerancePercentageDecimal: string) => number;
16
+ export declare const getDefaultUserAddress: (chainId: ChainId) => string;
17
+ export declare const getSymbiosisPartnerAddress: (affiliateBps: string) => Result<string | undefined, SwapErrorRight>;
18
+ export declare const buildSymbiosisTronCallData: ({ functionSelector, data, }: {
19
+ functionSelector: string;
20
+ data: string;
21
+ }) => string;
22
+ export declare const getSymbiosisTronFallbackEnergy: (labels: string[]) => string;
23
+ export declare const isSymbiosisRouteSupported: ({ quote, sellAsset, }: {
24
+ quote: SymbiosisQuoteResponse;
25
+ sellAsset: Asset;
26
+ }) => boolean;
27
+ export declare const getSymbiosisFeeAssetId: ({ chainId: symbiosisChainId, address, }: Pick<SymbiosisToken, 'chainId' | 'address'>) => AssetId | undefined;
28
+ export declare const getSymbiosisProtocolFees: (fees: SymbiosisFee[]) => NonNullable<QuoteFeeData['protocolFees']>;
29
+ export declare const symbiosisErrorToTradeQuoteError: (message: string | undefined) => TradeQuoteError;
30
+ export declare const isTronSourceTxFailed: (tx: {
31
+ ret?: {
32
+ contractRet?: string;
33
+ }[];
34
+ }) => boolean;
35
+ export declare const getSymbiosisTradeStatus: ({ response, buySymbiosisChainId, }: {
36
+ response: SymbiosisTxResponse;
37
+ buySymbiosisChainId: number | undefined;
38
+ }) => Pick<TradeStatus, 'status' | 'buyTxHash' | 'message'>;