@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
@@ -1,5 +1,6 @@
1
1
  import { contractAddressOrUndefined } from '@shapeshiftoss/utils';
2
2
  import { createDefaultStatusResponse, getExecutableTradeStep, getSwapMetadata, isExecutableTradeQuote, } from '../../utils/index.js';
3
+ import { getAptosTransactionFees, getUnsignedAptosTransaction } from '../../utils/aptos/index.js';
3
4
  import { getEvmTransactionFees, getUnsignedEvmTransaction } from '../../utils/evm/index.js';
4
5
  import { getSolanaTransactionFees, getUnsignedSolanaTransaction } from '../../utils/solana/index.js';
5
6
  import { getTronTransactionFees, getUnsignedTronTransaction } from '../../utils/tron/index.js';
@@ -84,7 +85,7 @@ export const nearIntentsApi = {
84
85
  }
85
86
  return Promise.resolve(step.feeData.networkFeeCryptoBaseUnit);
86
87
  },
87
- getUnsignedStarknetTransaction: async ({ stepIndex, tradeQuote, from, assertGetStarknetChainAdapter, }) => {
88
+ getUnsignedStarknetTransaction: async ({ stepIndex, tradeQuote, from, callsOnly, assertGetStarknetChainAdapter, }) => {
88
89
  if (!isExecutableTradeQuote(tradeQuote))
89
90
  throw new Error('Unable to execute a trade rate quote');
90
91
  const step = getExecutableTradeStep(tradeQuote, stepIndex);
@@ -94,24 +95,20 @@ export const nearIntentsApi = {
94
95
  const to = depositAddress;
95
96
  const value = step.sellAmountIncludingProtocolFeesCryptoBaseUnit;
96
97
  const tokenContractAddress = contractAddressOrUndefined(sellAsset.assetId);
97
- const { fast } = await adapter.getFeeData({
98
- to,
99
- value,
100
- chainSpecific: {
101
- from,
102
- tokenContractAddress,
103
- },
104
- sendMax: false,
105
- });
98
+ const maxFee = callsOnly
99
+ ? undefined
100
+ : (await adapter.getFeeData({
101
+ to,
102
+ value,
103
+ chainSpecific: { from, tokenContractAddress },
104
+ sendMax: false,
105
+ })).fast.chainSpecific.maxFee;
106
106
  return adapter.buildSendApiTransaction({
107
107
  from,
108
108
  to,
109
109
  value,
110
110
  accountNumber,
111
- chainSpecific: {
112
- tokenContractAddress,
113
- maxFee: fast.chainSpecific.maxFee,
114
- },
111
+ chainSpecific: { tokenContractAddress, maxFee, callsOnly },
115
112
  });
116
113
  },
117
114
  getStarknetTransactionFees: ({ tradeQuote, stepIndex }) => {
@@ -153,6 +150,8 @@ export const nearIntentsApi = {
153
150
  }
154
151
  return Promise.resolve(step.feeData.networkFeeCryptoBaseUnit);
155
152
  },
153
+ getUnsignedAptosTransaction,
154
+ getAptosTransactionFees,
156
155
  checkTradeStatus: async ({ config, swap }) => {
157
156
  if (!swap)
158
157
  throw new Error('Missing swap');
@@ -54,7 +54,7 @@ const getRate = async (input, deps) => {
54
54
  {
55
55
  ...stepCommon,
56
56
  accountNumber,
57
- feeData: { protocolFees, networkFeeCryptoBaseUnit: networkFeeCryptoBaseUnit ?? '0' },
57
+ feeData: { protocolFees, networkFeeCryptoBaseUnit },
58
58
  },
59
59
  ],
60
60
  };
@@ -1,7 +1,7 @@
1
1
  import { KnownChainIds } from '@shapeshiftoss/types';
2
- import type { GetEvmTradeQuoteInput, GetEvmTradeRateInput, GetNearTradeQuoteInput, GetNearTradeRateInput, GetSolanaTradeQuoteInput, GetSolanaTradeRateInput, GetStarknetTradeQuoteInput, GetStarknetTradeRateInput, GetSuiTradeQuoteInput, GetSuiTradeRateInput, GetTonTradeQuoteInput, GetTonTradeRateInput, GetTronTradeQuoteInput, GetTronTradeRateInput, GetUtxoTradeQuoteInput, GetUtxoTradeRateInput, WithExactBuyAmount } from '../../types.js';
3
- export type NearIntentsTradeQuoteInput = GetEvmTradeQuoteInput | GetUtxoTradeQuoteInput | GetSolanaTradeQuoteInput | GetTronTradeQuoteInput | GetSuiTradeQuoteInput | GetStarknetTradeQuoteInput | GetNearTradeQuoteInput | GetTonTradeQuoteInput;
4
- export type NearIntentsTradeRateInput = GetEvmTradeRateInput | GetUtxoTradeRateInput | GetSolanaTradeRateInput | GetTronTradeRateInput | GetSuiTradeRateInput | GetStarknetTradeRateInput | GetNearTradeRateInput | GetTonTradeRateInput;
2
+ import type { GetAptosTradeQuoteInput, GetAptosTradeRateInput, GetEvmTradeQuoteInput, GetEvmTradeRateInput, GetNearTradeQuoteInput, GetNearTradeRateInput, GetSolanaTradeQuoteInput, GetSolanaTradeRateInput, GetStarknetTradeQuoteInput, GetStarknetTradeRateInput, GetSuiTradeQuoteInput, GetSuiTradeRateInput, GetTonTradeQuoteInput, GetTonTradeRateInput, GetTronTradeQuoteInput, GetTronTradeRateInput, GetUtxoTradeQuoteInput, GetUtxoTradeRateInput, WithExactBuyAmount } from '../../types.js';
3
+ export type NearIntentsTradeQuoteInput = GetEvmTradeQuoteInput | GetUtxoTradeQuoteInput | GetSolanaTradeQuoteInput | GetTronTradeQuoteInput | GetSuiTradeQuoteInput | GetStarknetTradeQuoteInput | GetNearTradeQuoteInput | GetTonTradeQuoteInput | GetAptosTradeQuoteInput;
4
+ export type NearIntentsTradeRateInput = GetEvmTradeRateInput | GetUtxoTradeRateInput | GetSolanaTradeRateInput | GetTronTradeRateInput | GetSuiTradeRateInput | GetStarknetTradeRateInput | GetNearTradeRateInput | GetTonTradeRateInput | GetAptosTradeRateInput;
5
5
  export type NearIntentsExactOutputTradeQuoteInput = WithExactBuyAmount<NearIntentsTradeQuoteInput>;
6
6
  export type NearIntentsExactOutputTradeRateInput = WithExactBuyAmount<NearIntentsTradeRateInput>;
7
7
  export type NearIntentsMetadata = {
@@ -11,6 +11,6 @@ export type NearIntentsMetadata = {
11
11
  };
12
12
  export { QuoteRequest } from '@defuse-protocol/one-click-sdk-typescript';
13
13
  export type { GetExecutionStatusResponse, QuoteResponse, TokenResponse, } from '@defuse-protocol/one-click-sdk-typescript';
14
- 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];
14
+ 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, KnownChainIds.AptosMainnet];
15
15
  export type NearIntentsSupportedChainId = (typeof nearIntentsSupportedChainIds)[number];
16
16
  export declare const chainIdToNearIntentsChain: Record<NearIntentsSupportedChainId, string>;
@@ -21,6 +21,7 @@ export const nearIntentsSupportedChainIds = [
21
21
  KnownChainIds.NearMainnet,
22
22
  KnownChainIds.PlasmaMainnet,
23
23
  KnownChainIds.TonMainnet,
24
+ KnownChainIds.AptosMainnet,
24
25
  ];
25
26
  export const chainIdToNearIntentsChain = {
26
27
  [KnownChainIds.EthereumMainnet]: 'eth',
@@ -43,4 +44,5 @@ export const chainIdToNearIntentsChain = {
43
44
  [KnownChainIds.MonadMainnet]: 'monad',
44
45
  [KnownChainIds.NearMainnet]: 'near',
45
46
  [KnownChainIds.TonMainnet]: 'ton',
47
+ [KnownChainIds.AptosMainnet]: 'aptos',
46
48
  };
@@ -1,9 +1,10 @@
1
1
  import { CHAIN_NAMESPACE, fromAssetId, fromChainId } from '@shapeshiftoss/caip';
2
- import { evm } from '@shapeshiftoss/chain-adapters';
2
+ import { aptos, evm } from '@shapeshiftoss/chain-adapters';
3
3
  import { bn, contractAddressOrUndefined } from '@shapeshiftoss/utils';
4
4
  import { Err, Ok } from '@sniptt/monads';
5
5
  import { TradeQuoteError } from '../../../types.js';
6
6
  import { makeNetworkFeeEstimationFailedErr, makeSwapErrorRight } from '../../../utils/index.js';
7
+ import { APTOS_PLACEHOLDER_ADDRESS, APTOS_RATE_SIMULATION_VALUE } from '../../../utils/aptos/index.js';
7
8
  import { EVM_PLACEHOLDER_ADDRESS, getEvmNetworkFeeCryptoBaseUnit } from '../../../utils/evm/index.js';
8
9
  import { isNativeEvmAsset } from '../../../utils/helpers.js';
9
10
  import { ATA_RENT_LAMPORTS, getSolanaNetworkFeeCryptoBaseUnit, SOLANA_PLACEHOLDER_ADDRESS, withComputeUnitLimit, } from '../../../utils/solana/index.js';
@@ -218,6 +219,33 @@ export async function getNearIntentsStepData(args) {
218
219
  const stepData = { networkFeeCryptoBaseUnit: fast.txFee };
219
220
  return Ok(stepData);
220
221
  }
222
+ case CHAIN_NAMESPACE.Aptos: {
223
+ const adapter = deps.assertGetAptosChainAdapter(sellAsset.chainId);
224
+ if (type === 'rate') {
225
+ const { fast } = await adapter.getFeeData({
226
+ to: depositAddress,
227
+ value: APTOS_RATE_SIMULATION_VALUE,
228
+ chainSpecific: { from: from ?? APTOS_PLACEHOLDER_ADDRESS, contractAddress },
229
+ });
230
+ const stepData = { networkFeeCryptoBaseUnit: fast.txFee };
231
+ return Ok(stepData);
232
+ }
233
+ const { fast } = await adapter.getFeeData({
234
+ to: depositAddress,
235
+ value: sellAmountCryptoBaseUnit,
236
+ chainSpecific: { from, contractAddress },
237
+ });
238
+ const stepData = {
239
+ transactionData: {
240
+ type: 'aptos',
241
+ payload: aptos.getSerializedTransferPayload(depositAddress, sellAmountCryptoBaseUnit, contractAddress),
242
+ gasUnitPrice: fast.chainSpecific.gasUnitPrice,
243
+ maxGasAmount: fast.chainSpecific.maxGasAmount,
244
+ },
245
+ networkFeeCryptoBaseUnit: fast.txFee,
246
+ };
247
+ return Ok(stepData);
248
+ }
221
249
  default:
222
250
  return Err(makeSwapErrorRight({
223
251
  message: `[getNearIntentsStepData] unsupported chain namespace: ${chainNamespace}`,
@@ -36,7 +36,7 @@ export const getNearIntentsAsset = ({ nearNetwork, contractAddress, }) => {
36
36
  return `nep141:${nearNetwork}-${contractAddress.toLowerCase()}.omft.near`;
37
37
  };
38
38
  const NEP245_CHAINS = ['bsc', 'pol', 'avax', 'op', 'tron', 'monad', 'plasma'];
39
- const TOKEN_LOOKUP_CHAINS = ['sui', 'starknet', 'ton'];
39
+ const TOKEN_LOOKUP_CHAINS = ['sui', 'starknet', 'ton', 'aptos'];
40
40
  const NEAR_CHAIN = 'near';
41
41
  const BTC_CHAIN = 'btc';
42
42
  const WNEAR_CONTRACT_ADDRESS = 'wrap.near';
@@ -68,7 +68,7 @@ export const assetToNearIntentsAsset = async (asset) => {
68
68
  });
69
69
  return match?.assetId ?? null;
70
70
  }
71
- // NEP-245 chains (BSC, Polygon, Avalanche, Optimism, TRON, Monad), Token lookup chains (Sui, Starknet), and Solana require token lookup
71
+ // NEP-245 chains (BSC, Polygon, Avalanche, Optimism, TRON, Monad), Token lookup chains (Sui, Starknet, TON, Aptos), and Solana require token lookup
72
72
  // Asset IDs use hashed format that can't be generated from contract addresses
73
73
  const requiresLookup = isNep245Chain(nearNetwork) || isTokenLookupChain(nearNetwork) || asset.chainId === solanaChainId;
74
74
  if (requiresLookup) {
@@ -59,7 +59,7 @@ export const portalsApi = {
59
59
  const txStatus = relayTxStatus === TxStatus.Unknown ? TxStatus.Pending : relayTxStatus;
60
60
  return {
61
61
  status: txStatus,
62
- buyTxHash: relayRequest.data?.outTxs?.[0]?.hash,
62
+ buyTxHash: relayRequest.data?.outTxs?.[0]?.txHash,
63
63
  message: txStatus === TxStatus.Failed
64
64
  ? getRelayRequestFailureMessage(relayRequest)
65
65
  : txStatus === TxStatus.Confirmed
@@ -68,6 +68,9 @@ export const portalsApi = {
68
68
  };
69
69
  }
70
70
  }
71
+ else {
72
+ console.error('Failed to fetch relay request:', relayResult.unwrapErr());
73
+ }
71
74
  const axelarscanResult = await fetchAxelarscanBridgeStatus(txHash);
72
75
  if (axelarscanResult.isOk()) {
73
76
  const bridgeStatus = axelarscanResult.unwrap();
@@ -2,7 +2,7 @@ import { BigNumber, bn } from '@shapeshiftoss/utils';
2
2
  import { Err, Ok } from '@sniptt/monads';
3
3
  import { TradeQuoteError } from '../../../types.js';
4
4
  import { assertQuoteAddresses, makeSwapErrorRight, makeTradeStepBuildFailedErr, } from '../../../utils/index.js';
5
- import { FALLBACK_QUOTE_DEADLINE_MS, getTreasuryAddressFromChainId, normalizeEpochToMs, } from '../../../utils/helpers.js';
5
+ import { getTreasuryAddressFromChainId, normalizeEpochToMs } from '../../../utils/helpers.js';
6
6
  import { fetchPortalsTradeOrder, PortalsError } from '../utils/fetchPortalsTradeOrder.js';
7
7
  import { getPortalsStepData } from '../utils/getPortalsStepData.js';
8
8
  import { getPortalsTradeContext } from '../utils/getPortalsTradeContext.js';
@@ -138,7 +138,7 @@ export const getPortalsTradeQuote = async (input, deps) => {
138
138
  const tradeQuote = {
139
139
  ...tradeCommon,
140
140
  quoteOrRate: 'quote',
141
- deadline: expiryMs ?? Date.now() + FALLBACK_QUOTE_DEADLINE_MS,
141
+ deadline: expiryMs,
142
142
  receiveAddress,
143
143
  steps: [
144
144
  {
@@ -1,53 +1,47 @@
1
1
  import { fromChainId } from '@shapeshiftoss/caip';
2
- import { bnOrZero } from '@shapeshiftoss/utils';
3
2
  import { Err, Ok } from '@sniptt/monads';
4
3
  import { makeNetworkFeeEstimationFailedErr } from '../../../utils/index.js';
5
- import { estimateGasWithStateOverride, getEvmNetworkFeeCryptoBaseUnit } from '../../../utils/evm/index.js';
4
+ import { getEvmNetworkFeeCryptoBaseUnit, getEvmRateNetworkFeeCryptoBaseUnit, } from '../../../utils/evm/index.js';
6
5
  import { fetchPortalsTradeEstimate } from './fetchPortalsTradeOrder.js';
7
6
  export async function getPortalsStepData(args) {
8
7
  const { tx, sellAsset, sellAmountCryptoBaseUnit, spenderAddress, input, deps } = args;
9
8
  const adapter = deps.assertGetEvmChainAdapter(sellAsset.chainId);
10
9
  const supportsEIP1559 = 'supportsEIP1559' in input ? input.supportsEIP1559 : false;
10
+ const transactionData = {
11
+ type: 'evm',
12
+ chainId: Number(fromChainId(sellAsset.chainId).chainReference),
13
+ to: tx.to,
14
+ data: tx.data,
15
+ value: tx.value,
16
+ };
17
+ const stateOverride = {
18
+ sellAsset,
19
+ sellAmountCryptoBaseUnit,
20
+ spenderAddress,
21
+ };
11
22
  if (args.type === 'rate') {
23
+ const getEstimateEndpointGasLimit = async () => {
24
+ const quoteEstimateResponse = await fetchPortalsTradeEstimate({
25
+ inputToken: args.inputToken,
26
+ outputToken: args.outputToken,
27
+ inputAmount: args.inputAmount,
28
+ slippageTolerancePercentage: args.slippageTolerancePercentage,
29
+ swapperConfig: deps.config,
30
+ });
31
+ return quoteEstimateResponse.context.gasLimit.toString();
32
+ };
12
33
  try {
13
- // No placeholder estimation for provider built routes - overridden estimation (approval
14
- // state need not exist yet) with the Portals order and estimate endpoint as fallbacks
15
- const gasLimit = await (async () => {
16
- try {
17
- const gasLimit = await estimateGasWithStateOverride({
18
- sellAsset,
19
- sellAmountCryptoBaseUnit,
20
- from: tx.from,
21
- spenderAddress,
22
- to: tx.to,
23
- data: tx.data,
24
- value: tx.value,
25
- });
26
- return gasLimit;
27
- }
28
- catch {
29
- // Portals only carry a tx gas limit on the bridge routes their estimate endpoint zeroes
30
- const { gasLimit: txGasLimit } = tx;
31
- if (txGasLimit && bnOrZero(txGasLimit).gt(0))
32
- return txGasLimit;
33
- const quoteEstimateResponse = await fetchPortalsTradeEstimate({
34
- inputToken: args.inputToken,
35
- outputToken: args.outputToken,
36
- inputAmount: args.inputAmount,
37
- slippageTolerancePercentage: args.slippageTolerancePercentage,
38
- swapperConfig: deps.config,
39
- });
40
- const estimatedGasLimit = quoteEstimateResponse.context.gasLimit.toString();
41
- if (bnOrZero(estimatedGasLimit).lte(0))
42
- throw new Error('no Portals gas limit');
43
- return estimatedGasLimit;
44
- }
45
- })();
46
- const networkFeeCryptoBaseUnit = await getEvmNetworkFeeCryptoBaseUnit({
34
+ // Portals only set a tx gas limit on bridge routes, where their estimate endpoint is zero
35
+ const networkFeeCryptoBaseUnit = await getEvmRateNetworkFeeCryptoBaseUnit({
47
36
  adapter,
48
37
  supportsEIP1559,
49
- gasLimit,
50
- });
38
+ providerGasLimit: tx.gasLimit,
39
+ simulation: { transactionData, from: tx.from, stateOverride },
40
+ }).catch(async () => getEvmRateNetworkFeeCryptoBaseUnit({
41
+ adapter,
42
+ supportsEIP1559,
43
+ providerGasLimit: await getEstimateEndpointGasLimit(),
44
+ }));
51
45
  const stepData = { networkFeeCryptoBaseUnit };
52
46
  return Ok(stepData);
53
47
  }
@@ -55,27 +49,14 @@ export async function getPortalsStepData(args) {
55
49
  return Err(makeNetworkFeeEstimationFailedErr('getPortalsStepData', error));
56
50
  }
57
51
  }
58
- const transactionData = {
59
- type: 'evm',
60
- chainId: Number(fromChainId(sellAsset.chainId).chainReference),
61
- to: tx.to,
62
- data: tx.data,
63
- value: tx.value,
64
- // Portals simulate and pad their gas limit when the order was validated, so no additional
65
- // buffer - an unvalidated order carries no gas limit and estimates below instead
66
- gasLimit: tx.gasLimit,
67
- };
68
52
  try {
69
53
  const networkFeeCryptoBaseUnit = await getEvmNetworkFeeCryptoBaseUnit({
70
54
  adapter,
71
55
  transactionData,
72
56
  from: args.from,
73
57
  supportsEIP1559,
74
- stateOverride: {
75
- sellAsset,
76
- sellAmountCryptoBaseUnit,
77
- spenderAddress,
78
- },
58
+ stateOverride,
59
+ providerGasLimit: tx.gasLimit,
79
60
  });
80
61
  const stepData = { transactionData, networkFeeCryptoBaseUnit };
81
62
  return Ok(stepData);
@@ -45,11 +45,11 @@ const estimateEndpointGasLimit = (gasLimit) => vi.mocked(fetchPortalsTradeEstima
45
45
  });
46
46
  describe('getPortalsStepData rate gas limit', () => {
47
47
  beforeEach(() => vi.clearAllMocks());
48
- it('falls back to the order gas limit on bridge routes the estimate endpoint zeroes', async () => {
49
- vi.mocked(estimateGasWithStateOverride).mockRejectedValue(new Error('execution reverted'));
48
+ it('prices the order gas limit on bridge routes without simulating', async () => {
50
49
  estimateEndpointGasLimit(0);
51
50
  const actual = await rate(tx('76384'));
52
51
  expect(actual.unwrap()).toEqual({ networkFeeCryptoBaseUnit: '76384000000000' });
52
+ expect(estimateGasWithStateOverride).not.toHaveBeenCalled();
53
53
  expect(fetchPortalsTradeEstimate).not.toHaveBeenCalled();
54
54
  });
55
55
  it('falls back to the estimate endpoint when the order carries no gas limit', async () => {
@@ -1,6 +1,5 @@
1
1
  import { Err, Ok } from '@sniptt/monads';
2
2
  import { assertQuoteAddresses } from '../../../utils/index.js';
3
- import { FALLBACK_QUOTE_DEADLINE_MS } from '../../../utils/helpers.js';
4
3
  import { getRelayStepData } from '../utils/getRelayStepData.js';
5
4
  import { getRelayTradeContext } from '../utils/getRelayTradeContext.js';
6
5
  const getQuote = async (input, deps, relayChainMap) => {
@@ -12,7 +11,7 @@ const getQuote = async (input, deps, relayChainMap) => {
12
11
  const maybeContext = await getRelayTradeContext({ input, deps, relayChainMap });
13
12
  if (maybeContext.isErr())
14
13
  return Err(maybeContext.unwrapErr());
15
- const { tradeCommon, stepCommon, protocolFees, relayStepInputs, stepDataArgs, relayId } = maybeContext.unwrap();
14
+ const { tradeCommon, stepCommon, protocolFees, relayStepInputs, stepDataArgs, relayId, deadline, } = maybeContext.unwrap();
16
15
  const stepResults = await Promise.all(relayStepInputs.map(async ({ data, allowanceContract }) => {
17
16
  const maybeStepData = await getRelayStepData({
18
17
  ...stepDataArgs,
@@ -42,7 +41,7 @@ const getQuote = async (input, deps, relayChainMap) => {
42
41
  const tradeQuote = {
43
42
  ...tradeCommon,
44
43
  quoteOrRate: 'quote',
45
- deadline: Date.now() + FALLBACK_QUOTE_DEADLINE_MS,
44
+ deadline,
46
45
  receiveAddress,
47
46
  steps,
48
47
  };
@@ -1,9 +1,9 @@
1
1
  import { fromChainId } from '@shapeshiftoss/caip';
2
2
  import { tron } from '@shapeshiftoss/chain-adapters';
3
- import { bnOrZero, contractAddressOrUndefined, isToken } from '@shapeshiftoss/utils';
3
+ import { contractAddressOrUndefined, isToken } from '@shapeshiftoss/utils';
4
4
  import { Err, Ok } from '@sniptt/monads';
5
5
  import { makeNetworkFeeEstimationFailedErr, makeTradeStepBuildFailedErr } from '../../../utils/index.js';
6
- import { getEvmNetworkFeeCryptoBaseUnit } from '../../../utils/evm/index.js';
6
+ import { getEvmNetworkFeeCryptoBaseUnit, getEvmRateNetworkFeeCryptoBaseUnit, } from '../../../utils/evm/index.js';
7
7
  import { getSolanaNetworkFeeCryptoBaseUnit, omitComputeBudgetInstructions, withComputeUnitLimit, } from '../../../utils/solana/index.js';
8
8
  import { getTronContractCallFallbackFeeCryptoBaseUnit, getTronContractCallNetworkFeeCryptoBaseUnit, } from '../../../utils/tron/index.js';
9
9
  import { getUtxoNetworkFeeCryptoBaseUnit } from '../../../utils/utxo/index.js';
@@ -34,7 +34,6 @@ export async function getRelayStepData({ data, sellAsset, sellAmountCryptoBaseUn
34
34
  to,
35
35
  value,
36
36
  data: callData,
37
- gasLimit: bnOrZero(relayGasLimit).gt(0) ? relayGasLimit : undefined,
38
37
  };
39
38
  const adapter = deps.assertGetEvmChainAdapter(sellAsset.chainId);
40
39
  const stateOverride = {
@@ -43,20 +42,12 @@ export async function getRelayStepData({ data, sellAsset, sellAmountCryptoBaseUn
43
42
  spenderAddress,
44
43
  };
45
44
  if (type === 'rate') {
46
- const networkFeeCryptoBaseUnit = await (async () => {
47
- try {
48
- return await getEvmNetworkFeeCryptoBaseUnit({
49
- adapter,
50
- transactionData,
51
- from,
52
- supportsEIP1559,
53
- stateOverride,
54
- });
55
- }
56
- catch {
57
- return fallbackNetworkFeeCryptoBaseUnit;
58
- }
59
- })();
45
+ const networkFeeCryptoBaseUnit = await getEvmRateNetworkFeeCryptoBaseUnit({
46
+ adapter,
47
+ supportsEIP1559,
48
+ providerGasLimit: relayGasLimit,
49
+ simulation: { transactionData, from, stateOverride },
50
+ }).catch(() => fallbackNetworkFeeCryptoBaseUnit);
60
51
  const stepData = { networkFeeCryptoBaseUnit };
61
52
  return Ok(stepData);
62
53
  }
@@ -68,6 +59,7 @@ export async function getRelayStepData({ data, sellAsset, sellAmountCryptoBaseUn
68
59
  from,
69
60
  supportsEIP1559,
70
61
  stateOverride,
62
+ providerGasLimit: relayGasLimit,
71
63
  });
72
64
  const stepData = { transactionData, networkFeeCryptoBaseUnit };
73
65
  return Ok(stepData);
@@ -13,6 +13,7 @@ type RelayTradeContext = {
13
13
  }[];
14
14
  stepDataArgs: Omit<GetRelayStepDataArgs, 'type' | 'input' | 'data' | 'spenderAddress'>;
15
15
  relayId: string;
16
+ deadline: number | undefined;
16
17
  };
17
18
  export declare const getRelayTradeContext: ({ input, deps, relayChainMap, }: {
18
19
  input: RelayTradeQuoteInput | RelayTradeRateInput | RelayExactOutputTradeQuoteInput | RelayExactOutputTradeRateInput;
@@ -7,7 +7,7 @@ import { zeroAddress } from 'viem';
7
7
  import { MixPanelEvent, SwapperName, TradeQuoteError } from '../../../types.js';
8
8
  import { getInputOutputRate, makeSwapErrorRight } from '../../../utils/index.js';
9
9
  import { buildAffiliateFee } from '../../../utils/affiliateFee.js';
10
- import { getTradeAmount, isNativeEvmAsset } from '../../../utils/helpers.js';
10
+ import { getTradeAmount, isNativeEvmAsset, normalizeEpochToMs } from '../../../utils/helpers.js';
11
11
  import { MAXIMUM_SUPPORTED_RELAY_STEPS, relayErrorCodeToTradeQuoteError } from '../constant.js';
12
12
  import { getRelayAssetAddress } from '../utils/getRelayAssetAddress.js';
13
13
  import { relayTokenToAsset } from '../utils/relayTokenToAsset.js';
@@ -258,6 +258,9 @@ export const getRelayTradeContext = async ({ input, deps, relayChainMap, }) => {
258
258
  .plus(appFeesBaseUnit)
259
259
  .toFixed();
260
260
  const relayId = quote.steps[0].requestId;
261
+ // Only cross-chain (protocol v2) orders carry an expiry; past it the solver submits a no-fill refund
262
+ const orderDeadline = quote.protocol?.v2?.orderData?.output?.deadline;
263
+ const deadline = orderDeadline === undefined ? undefined : normalizeEpochToMs(orderDeadline);
261
264
  const relayStepInputs = swapSteps.map(step => {
262
265
  const data = step.items?.[0]?.data;
263
266
  return { data, allowanceContract: getRelayAllowanceContract(data) };
@@ -301,6 +304,7 @@ export const getRelayTradeContext = async ({ input, deps, relayChainMap, }) => {
301
304
  ...appFeesAsProtocolFee,
302
305
  },
303
306
  relayStepInputs,
307
+ deadline,
304
308
  stepDataArgs: {
305
309
  sellAsset,
306
310
  sellAmountCryptoBaseUnit,
@@ -20,13 +20,13 @@ export const relayStatusToTxStatus = (status) => {
20
20
  };
21
21
  // Relay index requests by origin tx hash, resolving a swap we hold no relayId for
22
22
  export const fetchRelayRequestByTxHash = async (txHash, config) => {
23
- const maybeResponse = await relayService.get(`${config.VITE_RELAY_API_URL}/requests/v2?hash=${txHash}`, getRelayRequestConfig(config));
23
+ const maybeResponse = await relayService.get(`${config.VITE_RELAY_API_URL}/requests/v3?depositTxHash=${txHash}`, getRelayRequestConfig(config));
24
24
  // Match the origin tx ourselves rather than trusting the listing to have filtered on it
25
- return maybeResponse.map(({ data }) => data.requests?.find(({ data: request }) => request?.inTxs?.some(({ hash }) => hash?.toLowerCase() === txHash.toLowerCase())));
25
+ return maybeResponse.map(({ data }) => data.requests?.find(({ data: request }) => request?.inTxs?.some(({ txHash: hash }) => hash?.toLowerCase() === txHash.toLowerCase())));
26
26
  };
27
27
  export const getRelayRequestFailureMessage = (request) => {
28
28
  const { failReason, refundFailReason } = request.data ?? {};
29
- // Relay report 'N/A' rather than omitting the reason when there isn't one
29
+ // Relay can report 'N/A' rather than null when there isn't one
30
30
  const reason = [failReason, refundFailReason].find(value => value && value !== 'N/A');
31
31
  return reason ?? 'Bridge failed';
32
32
  };
@@ -9,12 +9,12 @@ export type RelayMetadata = {
9
9
  data?: string;
10
10
  };
11
11
  export type RelayRequestTransaction = {
12
- hash?: string;
12
+ txHash?: string;
13
13
  chainId?: number;
14
14
  };
15
15
  export type RelayRequestData = {
16
- failReason?: string;
17
- refundFailReason?: string;
16
+ failReason?: string | null;
17
+ refundFailReason?: string | null;
18
18
  inTxs?: RelayRequestTransaction[];
19
19
  outTxs?: RelayRequestTransaction[];
20
20
  };
@@ -121,9 +121,14 @@ export type RelayQuoteStep = {
121
121
  requestId: string;
122
122
  items?: RelayQuoteItem[];
123
123
  };
124
+ export type RelayOrderData = {
125
+ output?: {
126
+ deadline?: number;
127
+ };
128
+ };
124
129
  export type RelayProtocolV2 = {
125
130
  orderId: string | undefined;
126
- orderData?: unknown;
131
+ orderData?: RelayOrderData;
127
132
  paymentDetails?: {
128
133
  chainId: string;
129
134
  depository: string;
@@ -0,0 +1,2 @@
1
+ import type { Swapper } from '../../types.js';
2
+ export declare const symbiosisSwapper: Swapper;
@@ -0,0 +1,5 @@
1
+ import { executeEvmTransaction, executeTronTransaction } from '../../utils/index.js';
2
+ export const symbiosisSwapper = {
3
+ executeEvmTransaction,
4
+ executeTronTransaction,
5
+ };
@@ -0,0 +1,2 @@
1
+ import type { SwapperApi } from '../../types.js';
2
+ export declare const symbiosisApi: SwapperApi;
@@ -0,0 +1,63 @@
1
+ import { tronChainId } from '@shapeshiftoss/caip';
2
+ import { isEvmChainId } from '@shapeshiftoss/chain-adapters';
3
+ import { TxStatus } from '@shapeshiftoss/unchained-client';
4
+ import { checkEvmSwapStatus } from '../../utils/index.js';
5
+ import { getEvmTransactionFees, getUnsignedEvmTransaction } from '../../utils/evm/index.js';
6
+ import { getTronTransactionFees, getUnsignedTronTransaction } from '../../utils/tron/index.js';
7
+ import { getTradeQuote } from './getTradeQuote/getTradeQuote.js';
8
+ import { getTradeRate } from './getTradeRate/getTradeRate.js';
9
+ import { chainIdToSymbiosisChainId, SYMBIOSIS_EXPLORER_URL } from './utils/constants.js';
10
+ import { getSymbiosisTradeStatus, isTronSourceTxFailed } from './utils/helpers.js';
11
+ import { symbiosisService } from './utils/symbiosisService.js';
12
+ export const symbiosisApi = {
13
+ getTradeQuote: (input, deps) => getTradeQuote(input, deps),
14
+ getTradeRate: (input, deps) => getTradeRate(input, deps),
15
+ getEvmTransactionFees,
16
+ getUnsignedEvmTransaction,
17
+ getTronTransactionFees,
18
+ getUnsignedTronTransaction,
19
+ checkTradeStatus: async ({ txHash, chainId, address, config, swap, fetchIsSmartContractAddressQuery, assertGetEvmChainAdapter, assertGetTronChainAdapter, }) => {
20
+ if (!swap)
21
+ throw new Error('Missing swap');
22
+ const evmSourceTxStatus = isEvmChainId(chainId)
23
+ ? await checkEvmSwapStatus({
24
+ txHash,
25
+ chainId,
26
+ address,
27
+ assertGetEvmChainAdapter,
28
+ fetchIsSmartContractAddressQuery,
29
+ })
30
+ : undefined;
31
+ if (evmSourceTxStatus && evmSourceTxStatus.status !== TxStatus.Confirmed) {
32
+ return evmSourceTxStatus;
33
+ }
34
+ const sourceTxHash = evmSourceTxStatus?.buyTxHash ?? txHash;
35
+ if (chainId === tronChainId) {
36
+ const sourceTx = await assertGetTronChainAdapter(chainId)
37
+ .httpProvider.getTransaction({ txid: sourceTxHash })
38
+ .catch(() => null);
39
+ if (!sourceTx?.confirmations) {
40
+ return { buyTxHash: undefined, status: TxStatus.Pending, message: undefined };
41
+ }
42
+ if (isTronSourceTxFailed(sourceTx)) {
43
+ return { buyTxHash: undefined, status: TxStatus.Failed, message: undefined };
44
+ }
45
+ }
46
+ const sellSymbiosisChainId = chainIdToSymbiosisChainId[chainId];
47
+ const buySymbiosisChainId = chainIdToSymbiosisChainId[swap.buyAsset.chainId];
48
+ const maybeStatusResponse = await symbiosisService.get(`${config.VITE_SYMBIOSIS_API_URL}/v2/tx/${sellSymbiosisChainId}/${sourceTxHash}`);
49
+ if (maybeStatusResponse.isErr()) {
50
+ return {
51
+ buyTxHash: undefined,
52
+ status: TxStatus.Unknown,
53
+ message: undefined,
54
+ };
55
+ }
56
+ const { data: response } = maybeStatusResponse.unwrap();
57
+ return {
58
+ ...getSymbiosisTradeStatus({ response, buySymbiosisChainId }),
59
+ swapperTxId: sourceTxHash,
60
+ swapperTxLink: `${SYMBIOSIS_EXPLORER_URL}/transactions/${sellSymbiosisChainId}/${sourceTxHash}`,
61
+ };
62
+ },
63
+ };
@@ -0,0 +1,4 @@
1
+ import type { Result } from '@sniptt/monads';
2
+ import type { SwapErrorRight, SwapperDeps, TradeQuote } from '../../../types.js';
3
+ import type { SymbiosisTradeQuoteInput } from '../utils/types.js';
4
+ export declare const getTradeQuote: (input: SymbiosisTradeQuoteInput, deps: SwapperDeps) => Promise<Result<TradeQuote[], SwapErrorRight>>;
@@ -0,0 +1,38 @@
1
+ import { Err, Ok } from '@sniptt/monads';
2
+ import { assertQuoteAddresses } from '../../../utils/index.js';
3
+ import { getSymbiosisStepData } from '../utils/getSymbiosisStepData.js';
4
+ import { getSymbiosisTradeContext } from '../utils/getSymbiosisTradeContext.js';
5
+ export const getTradeQuote = async (input, deps) => {
6
+ const { accountNumber } = input;
7
+ const maybeAddresses = assertQuoteAddresses(input);
8
+ if (maybeAddresses.isErr())
9
+ return Err(maybeAddresses.unwrapErr());
10
+ const { sendAddress, receiveAddress } = maybeAddresses.unwrap();
11
+ const maybeContext = await getSymbiosisTradeContext({
12
+ input,
13
+ deps,
14
+ from: sendAddress,
15
+ to: receiveAddress,
16
+ });
17
+ if (maybeContext.isErr())
18
+ return Err(maybeContext.unwrapErr());
19
+ const { tradeCommon, stepCommon, protocolFees, stepDataArgs } = maybeContext.unwrap();
20
+ const maybeStepData = await getSymbiosisStepData({ ...stepDataArgs, type: 'quote', input });
21
+ if (maybeStepData.isErr())
22
+ return Err(maybeStepData.unwrapErr());
23
+ const { transactionData, networkFeeCryptoBaseUnit } = maybeStepData.unwrap();
24
+ const tradeQuote = {
25
+ ...tradeCommon,
26
+ quoteOrRate: 'quote',
27
+ receiveAddress,
28
+ steps: [
29
+ {
30
+ ...stepCommon,
31
+ accountNumber,
32
+ transactionData,
33
+ feeData: { networkFeeCryptoBaseUnit, protocolFees },
34
+ },
35
+ ],
36
+ };
37
+ return Ok([tradeQuote]);
38
+ };
@@ -0,0 +1,4 @@
1
+ import type { Result } from '@sniptt/monads';
2
+ import type { SwapErrorRight, SwapperDeps, TradeRate } from '../../../types.js';
3
+ import type { SymbiosisTradeRateInput } from '../utils/types.js';
4
+ export declare const getTradeRate: (input: SymbiosisTradeRateInput, deps: SwapperDeps) => Promise<Result<TradeRate[], SwapErrorRight>>;