@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
@@ -12,12 +12,15 @@ const CetusSwapper_1 = require("./swappers/CetusSwapper");
12
12
  const ChainflipSwapper_1 = require("./swappers/ChainflipSwapper");
13
13
  const CowSwapper_1 = require("./swappers/CowSwapper");
14
14
  const DebridgeSwapper_1 = require("./swappers/DebridgeSwapper");
15
+ const FyndSwapper_1 = require("./swappers/FyndSwapper");
16
+ const KyberSwapper_1 = require("./swappers/KyberSwapper");
15
17
  const MayachainSwapper_1 = require("./swappers/MayachainSwapper");
16
18
  const NearIntentsSwapper_1 = require("./swappers/NearIntentsSwapper");
17
19
  const PortalsSwapper_1 = require("./swappers/PortalsSwapper");
18
20
  const RelaySwapper_1 = require("./swappers/RelaySwapper");
19
21
  const StonfiSwapper_1 = require("./swappers/StonfiSwapper");
20
22
  const SunioSwapper_1 = require("./swappers/SunioSwapper");
23
+ const SymbiosisSwapper_1 = require("./swappers/SymbiosisSwapper");
21
24
  const ThorchainSwapper_1 = require("./swappers/ThorchainSwapper");
22
25
  const ZrxSwapper_1 = require("./swappers/ZrxSwapper");
23
26
  const types_1 = require("./types");
@@ -102,6 +105,18 @@ exports.swappers = {
102
105
  ...BobGatewaySwapper_1.bobGatewaySwapper,
103
106
  ...BobGatewaySwapper_1.bobGatewayApi,
104
107
  },
108
+ [types_1.SwapperName.Symbiosis]: {
109
+ ...SymbiosisSwapper_1.symbiosisSwapper,
110
+ ...SymbiosisSwapper_1.symbiosisApi,
111
+ },
112
+ [types_1.SwapperName.Fynd]: {
113
+ ...FyndSwapper_1.fyndSwapper,
114
+ ...FyndSwapper_1.fyndApi,
115
+ },
116
+ [types_1.SwapperName.KyberSwap]: {
117
+ ...KyberSwapper_1.kyberSwapper,
118
+ ...KyberSwapper_1.kyberApi,
119
+ },
105
120
  [types_1.SwapperName.Test]: undefined,
106
121
  };
107
122
  const DEFAULT_SLIPPAGE_DECIMAL_PERCENTAGE = '0.002';
@@ -121,12 +136,16 @@ const DEFAULT_STONFI_SLIPPAGE_DECIMAL_PERCENTAGE = '0.01';
121
136
  // deBridge API off-chain simulation overestimates output on some chains (e.g. SEI ~2.4%), so auto slippage (1%) is insufficient
122
137
  const DEFAULT_DEBRIDGE_SLIPPAGE_DECIMAL_PERCENTAGE = '0.03';
123
138
  const DEFAULT_BOB_GATEWAY_SLIPPAGE_DECIMAL_PERCENTAGE = '0.03';
139
+ // Symbiosis splits the tolerance across up to three legs, and a destination leg over its share pays out the transit token instead of reverting
140
+ const DEFAULT_SYMBIOSIS_SLIPPAGE_DECIMAL_PERCENTAGE = '0.01';
124
141
  const getDefaultSlippageDecimalPercentageForSwapper = (swapperName) => {
125
142
  if (swapperName === undefined)
126
143
  return DEFAULT_SLIPPAGE_DECIMAL_PERCENTAGE;
127
144
  switch (swapperName) {
128
145
  case types_1.SwapperName.Zrx:
129
146
  case types_1.SwapperName.Bebop:
147
+ case types_1.SwapperName.Fynd:
148
+ case types_1.SwapperName.KyberSwap:
130
149
  case types_1.SwapperName.Test:
131
150
  return DEFAULT_SLIPPAGE_DECIMAL_PERCENTAGE;
132
151
  case types_1.SwapperName.CowSwap:
@@ -161,6 +180,8 @@ const getDefaultSlippageDecimalPercentageForSwapper = (swapperName) => {
161
180
  return DEFAULT_STONFI_SLIPPAGE_DECIMAL_PERCENTAGE;
162
181
  case types_1.SwapperName.BobGateway:
163
182
  return DEFAULT_BOB_GATEWAY_SLIPPAGE_DECIMAL_PERCENTAGE;
183
+ case types_1.SwapperName.Symbiosis:
184
+ return DEFAULT_SYMBIOSIS_SLIPPAGE_DECIMAL_PERCENTAGE;
164
185
  default:
165
186
  return (0, utils_1.assertUnreachable)(swapperName);
166
187
  }
@@ -15,11 +15,14 @@ export * from './swappers/ChainflipSwapper';
15
15
  export * from './swappers/SunioSwapper';
16
16
  export * from './swappers/CowSwapper';
17
17
  export * from './swappers/DebridgeSwapper';
18
+ export * from './swappers/FyndSwapper';
19
+ export * from './swappers/KyberSwapper';
18
20
  export * from './swappers/PortalsSwapper';
19
21
  export * from './swappers/ThorchainSwapper';
20
22
  export * from './swappers/MayachainSwapper';
21
23
  export * from './swappers/ButterSwap';
22
24
  export * from './swappers/RelaySwapper';
25
+ export * from './swappers/SymbiosisSwapper';
23
26
  export * from './utils/helpers';
24
27
  export * from './utils/thorchain';
25
28
  export * from './types';
package/dist/cjs/index.js CHANGED
@@ -44,11 +44,14 @@ __exportStar(require("./swappers/ChainflipSwapper"), exports);
44
44
  __exportStar(require("./swappers/SunioSwapper"), exports);
45
45
  __exportStar(require("./swappers/CowSwapper"), exports);
46
46
  __exportStar(require("./swappers/DebridgeSwapper"), exports);
47
+ __exportStar(require("./swappers/FyndSwapper"), exports);
48
+ __exportStar(require("./swappers/KyberSwapper"), exports);
47
49
  __exportStar(require("./swappers/PortalsSwapper"), exports);
48
50
  __exportStar(require("./swappers/ThorchainSwapper"), exports);
49
51
  __exportStar(require("./swappers/MayachainSwapper"), exports);
50
52
  __exportStar(require("./swappers/ButterSwap"), exports);
51
53
  __exportStar(require("./swappers/RelaySwapper"), exports);
54
+ __exportStar(require("./swappers/SymbiosisSwapper"), exports);
52
55
  __exportStar(require("./utils/helpers"), exports);
53
56
  __exportStar(require("./utils/thorchain"), exports);
54
57
  __exportStar(require("./types"), exports);
@@ -21,7 +21,6 @@ async function getAcrossStepData(args) {
21
21
  to: swapTx.to,
22
22
  data: swapTx.data,
23
23
  value: swapTx.value ?? '0',
24
- gasLimit: swapTx.gas,
25
24
  };
26
25
  const stateOverride = {
27
26
  sellAsset,
@@ -29,20 +28,12 @@ async function getAcrossStepData(args) {
29
28
  spenderAddress,
30
29
  };
31
30
  if (type === 'rate') {
32
- const networkFeeCryptoBaseUnit = await (async () => {
33
- try {
34
- return await (0, evm_1.getEvmNetworkFeeCryptoBaseUnit)({
35
- adapter,
36
- transactionData,
37
- from,
38
- supportsEIP1559,
39
- stateOverride,
40
- });
41
- }
42
- catch {
43
- return fallbackNetworkFeeCryptoBaseUnit;
44
- }
45
- })();
31
+ const networkFeeCryptoBaseUnit = await (0, evm_1.getEvmRateNetworkFeeCryptoBaseUnit)({
32
+ adapter,
33
+ supportsEIP1559,
34
+ providerGasLimit: swapTx.gas,
35
+ simulation: { transactionData, from, stateOverride },
36
+ }).catch(() => fallbackNetworkFeeCryptoBaseUnit);
46
37
  const stepData = { networkFeeCryptoBaseUnit };
47
38
  return (0, monads_1.Ok)(stepData);
48
39
  }
@@ -53,6 +44,7 @@ async function getAcrossStepData(args) {
53
44
  from,
54
45
  supportsEIP1559,
55
46
  stateOverride,
47
+ providerGasLimit: swapTx.gas,
56
48
  });
57
49
  const stepData = { transactionData, networkFeeCryptoBaseUnit };
58
50
  return (0, monads_1.Ok)(stepData);
@@ -4,7 +4,6 @@ exports.getTradeQuote = exports.getTradeQuoteWithWallet = void 0;
4
4
  const hdwallet_core_1 = require("@shapeshiftoss/hdwallet-core");
5
5
  const monads_1 = require("@sniptt/monads");
6
6
  const utils_1 = require("../../../utils");
7
- const helpers_1 = require("../../../utils/helpers");
8
7
  const getArbitrumBridgeStepData_1 = require("../utils/getArbitrumBridgeStepData");
9
8
  const getArbitrumBridgeTradeContext_1 = require("../utils/getArbitrumBridgeTradeContext");
10
9
  const getTradeQuoteWithWallet = async (inputWithWallet, deps) => {
@@ -37,7 +36,6 @@ const getTradeQuote = async (input, deps) => {
37
36
  const tradeQuote = {
38
37
  ...tradeCommon,
39
38
  quoteOrRate: 'quote',
40
- deadline: Date.now() + helpers_1.FALLBACK_QUOTE_DEADLINE_MS,
41
39
  receiveAddress,
42
40
  steps: [
43
41
  {
@@ -11,7 +11,7 @@ const helpers_1 = require("./utils/helpers");
11
11
  exports.avnuApi = {
12
12
  getTradeQuote: (input, deps) => (0, getTradeQuote_1.getTradeQuote)(input, deps),
13
13
  getTradeRate: (input, deps) => (0, getTradeRate_1.getTradeRate)(input, deps),
14
- getUnsignedStarknetTransaction: async ({ stepIndex, tradeQuote, from, slippageTolerancePercentageDecimal, assertGetStarknetChainAdapter, }) => {
14
+ getUnsignedStarknetTransaction: async ({ stepIndex, tradeQuote, from, callsOnly, slippageTolerancePercentageDecimal, assertGetStarknetChainAdapter, }) => {
15
15
  if (!(0, utils_1.isExecutableTradeQuote)(tradeQuote))
16
16
  throw new Error('Unable to execute a trade rate quote');
17
17
  const step = (0, utils_1.getExecutableTradeStep)(tradeQuote, stepIndex);
@@ -37,19 +37,23 @@ exports.avnuApi = {
37
37
  if (!avnuCalls || avnuCalls.length === 0) {
38
38
  throw new Error('No swap calls returned from AVNU - quote may have expired');
39
39
  }
40
- // Build the full invoke transaction calldata from AVNU calls
41
- // Format: [call_array_length, contract1, selector1, calldata_len1, ...calldata1, ...]
42
- const fullCalldata = [avnuCalls.length.toString()];
43
- for (const call of avnuCalls) {
40
+ const calls = avnuCalls.map(call => {
44
41
  const rawCalldata = call.calldata ?? [];
45
- const calldataArray = Array.isArray(rawCalldata) ? rawCalldata : starknet_1.CallData.compile(rawCalldata);
46
- const selector = starknet_1.hash.getSelectorFromName(call.entrypoint);
47
- // Normalize contract address from AVNU to ensure consistent format
48
- const normalizedContractAddress = (0, starknet_1.validateAndParseAddress)(call.contractAddress);
49
- fullCalldata.push(normalizedContractAddress, selector, calldataArray.length.toString(), ...calldataArray.map(cd => String(cd)));
42
+ const calldata = Array.isArray(rawCalldata) ? rawCalldata : starknet_1.CallData.compile(rawCalldata);
43
+ return {
44
+ contractAddress: (0, starknet_1.validateAndParseAddress)(call.contractAddress),
45
+ entrypoint: call.entrypoint,
46
+ calldata: calldata.map(String),
47
+ };
48
+ });
49
+ if (callsOnly) {
50
+ return {
51
+ addressNList: (0, chain_adapters_1.toAddressNList)(adapter.getBip44Params({ accountNumber })),
52
+ txHash: '',
53
+ calls,
54
+ };
50
55
  }
51
- // Format calldata for RPC (convert all values to proper hex format)
52
- const formattedCalldata = fullCalldata.map(helpers_1.toHexString);
56
+ const formattedCalldata = starknet_1.transaction.getExecuteCalldata(calls, '1').map(helpers_1.toHexString);
53
57
  // Get nonce using adapter method (checks deployment status and returns appropriate nonce)
54
58
  const chainIdHex = await adapter.getStarknetProvider().getChainId();
55
59
  const nonce = await adapter.getNonce(normalizedFrom);
@@ -147,6 +151,7 @@ exports.avnuApi = {
147
151
  return {
148
152
  addressNList: (0, chain_adapters_1.toAddressNList)(adapter.getBip44Params({ accountNumber })),
149
153
  txHash,
154
+ calls,
150
155
  _txDetails: {
151
156
  fromAddress: normalizedFrom,
152
157
  calldata: formattedCalldata,
@@ -5,7 +5,6 @@ const monads_1 = require("@sniptt/monads");
5
5
  const starknet_1 = require("starknet");
6
6
  const types_1 = require("../../../types");
7
7
  const utils_1 = require("../../../utils");
8
- const helpers_1 = require("../../../utils/helpers");
9
8
  const getAvnuTradeContext_1 = require("../utils/getAvnuTradeContext");
10
9
  const getTradeQuote = async (input, deps) => {
11
10
  const { sellAsset, accountNumber } = input;
@@ -36,7 +35,7 @@ const getTradeQuote = async (input, deps) => {
36
35
  ...tradeCommon,
37
36
  receiveAddress: normalizedReceiveAddress,
38
37
  quoteOrRate: 'quote',
39
- deadline: deadline ?? Date.now() + helpers_1.FALLBACK_QUOTE_DEADLINE_MS,
38
+ deadline,
40
39
  steps: [
41
40
  {
42
41
  ...stepCommon,
@@ -13,12 +13,13 @@ export declare const fetchBebopQuote: ({ buyAsset, sellAsset, sellAmountIncludin
13
13
  affiliateBps?: string | undefined;
14
14
  apiKey: string;
15
15
  }) => Promise<Result<BebopQuoteResponse, SwapErrorRight>>;
16
- export declare const fetchBebopSolanaQuote: ({ buyAsset, sellAsset, sellAmountIncludingProtocolFeesCryptoBaseUnit, takerAddress, receiverAddress, slippageTolerancePercentageDecimal, apiKey, }: {
16
+ export declare const fetchBebopSolanaQuote: ({ buyAsset, sellAsset, sellAmountIncludingProtocolFeesCryptoBaseUnit, takerAddress, receiverAddress, slippageTolerancePercentageDecimal, affiliateBps, apiKey, }: {
17
17
  buyAsset: Asset;
18
18
  sellAsset: Asset;
19
19
  sellAmountIncludingProtocolFeesCryptoBaseUnit: string;
20
20
  takerAddress: string;
21
21
  receiverAddress: string;
22
22
  slippageTolerancePercentageDecimal: string;
23
+ affiliateBps?: string | undefined;
23
24
  apiKey: string;
24
25
  }) => Promise<Result<BebopSolanaQuoteResponse, SwapErrorRight>>;
@@ -11,6 +11,9 @@ const helpers_1 = require("../../../utils/helpers");
11
11
  const types_2 = require("../types");
12
12
  const bebopService_1 = require("./bebopService");
13
13
  const helpers_2 = require("./helpers");
14
+ // PMM charges the fee set against our api key, which nets exactly this bps
15
+ const BEBOP_PMM_AFFILIATE_BPS = '60';
16
+ const isPmmEligible = (affiliateBps) => (0, utils_1.bnOrZero)(affiliateBps).eq(BEBOP_PMM_AFFILIATE_BPS);
14
17
  const fetchBebopQuote = async ({ buyAsset, sellAsset, sellAmountIncludingProtocolFeesCryptoBaseUnit, takerAddress, receiverAddress, slippageTolerancePercentageDecimal, affiliateBps, apiKey, }) => {
15
18
  try {
16
19
  const sellToken = (0, helpers_2.assetIdToBebopToken)(sellAsset.assetId);
@@ -30,26 +33,24 @@ const fetchBebopQuote = async ({ buyAsset, sellAsset, sellAmountIncludingProtoco
30
33
  approval_type: 'Standard',
31
34
  skip_validation: 'true',
32
35
  gasless: 'false',
33
- // PMM fees are configured against our api key on Bebop's side, not sent per quote
34
36
  source: 'shapeshift',
35
37
  };
36
38
  const jamParams = new URLSearchParams(baseParams);
37
- const pmmParams = new URLSearchParams(baseParams);
38
- // JAM settles the fee on-chain, so it still takes our bps and a recipient per quote
39
- if (affiliateBps && affiliateBps !== '0') {
40
- jamParams.set('fee', affiliateBps);
41
- jamParams.set('fee_recipient', (0, viem_1.getAddress)((0, helpers_1.getTreasuryAddressFromChainId)(buyAsset.chainId)));
42
- }
39
+ // Without an explicit fee JAM charges our api key's flat fee, so 1 bps is the lowest it can go
40
+ jamParams.set('fee', affiliateBps && (0, utils_1.bnOrZero)(affiliateBps).gt(0) ? affiliateBps : '1');
41
+ jamParams.set('fee_recipient', (0, viem_1.getAddress)((0, helpers_1.getTreasuryAddressFromChainId)(buyAsset.chainId)));
43
42
  const service = (0, bebopService_1.bebopServiceFactory)({ apiKey });
44
- const [maybeJam, maybePmm] = await Promise.all([
43
+ const requests = [
45
44
  service.get(`https://api.bebop.xyz/jam/${chainName}/v2/quote`, {
46
45
  params: jamParams,
47
46
  }),
48
- service.get(`https://api.bebop.xyz/pmm/${chainName}/v3/quote`, {
49
- params: pmmParams,
50
- }),
51
- ]);
52
- const maybeResponses = [maybeJam, maybePmm];
47
+ ];
48
+ if (isPmmEligible(affiliateBps)) {
49
+ requests.push(service.get(`https://api.bebop.xyz/pmm/${chainName}/v3/quote`, {
50
+ params: new URLSearchParams(baseParams),
51
+ }));
52
+ }
53
+ const maybeResponses = await Promise.all(requests);
53
54
  if (maybeResponses.every(maybeResponse => maybeResponse.isErr())) {
54
55
  return (0, monads_1.Err)((0, utils_2.makeSwapErrorRight)({
55
56
  message: 'Failed to fetch quote from Bebop',
@@ -80,8 +81,14 @@ const fetchBebopQuote = async ({ buyAsset, sellAsset, sellAmountIncludingProtoco
80
81
  }
81
82
  };
82
83
  exports.fetchBebopQuote = fetchBebopQuote;
83
- const fetchBebopSolanaQuote = async ({ buyAsset, sellAsset, sellAmountIncludingProtocolFeesCryptoBaseUnit, takerAddress, receiverAddress, slippageTolerancePercentageDecimal, apiKey, }) => {
84
+ const fetchBebopSolanaQuote = async ({ buyAsset, sellAsset, sellAmountIncludingProtocolFeesCryptoBaseUnit, takerAddress, receiverAddress, slippageTolerancePercentageDecimal, affiliateBps, apiKey, }) => {
84
85
  try {
86
+ if (!isPmmEligible(affiliateBps)) {
87
+ return (0, monads_1.Err)((0, utils_2.makeSwapErrorRight)({
88
+ message: 'Bebop Solana is PMM only and cannot take the requested bps',
89
+ code: types_1.TradeQuoteError.NoRouteFound,
90
+ }));
91
+ }
85
92
  // Bebop's Solana routes don't wrap native SOL on the input side, so selling native SOL
86
93
  // always fails on-chain. Reject up front instead of returning an unexecutable quote.
87
94
  if (sellAsset.assetId === caip_1.solAssetId) {
@@ -104,7 +111,6 @@ const fetchBebopSolanaQuote = async ({ buyAsset, sellAsset, sellAmountIncludingP
104
111
  approval_type: 'Standard',
105
112
  skip_validation: 'false',
106
113
  gasless: 'true',
107
- // Solana is PMM only, so its fees are configured against our api key on Bebop's side
108
114
  source: 'shapeshift',
109
115
  });
110
116
  const maybeResponse = await (0, bebopService_1.bebopServiceFactory)({ apiKey }).get('https://api.bebop.xyz/pmm/solana/v3/quote', { params });
@@ -22,6 +22,7 @@ const getBebopSolanaTradeContext = async ({ input, deps, takerAddress, receiverA
22
22
  takerAddress,
23
23
  receiverAddress,
24
24
  slippageTolerancePercentageDecimal,
25
+ affiliateBps,
25
26
  apiKey: deps.config.VITE_BEBOP_API_KEY,
26
27
  });
27
28
  if (maybeBebopQuoteResponse.isErr())
@@ -11,41 +11,36 @@ async function getBebopStepData(args) {
11
11
  const { tx, spenderAddress, sellAsset, sellAmountCryptoBaseUnit, type, input, from, deps } = args;
12
12
  const adapter = deps.assertGetEvmChainAdapter(sellAsset.chainId);
13
13
  const supportsEIP1559 = 'supportsEIP1559' in input ? input.supportsEIP1559 : false;
14
- if (type === 'rate') {
15
- const networkFeeCryptoBaseUnit = await (async () => {
16
- try {
17
- return await (0, evm_1.getEvmNetworkFeeCryptoBaseUnit)({
18
- adapter,
19
- supportsEIP1559,
20
- gasLimit: (0, utils_1.bnOrZero)(tx.gas).toString(),
21
- });
22
- }
23
- catch {
24
- return (0, utils_1.bnOrZero)(tx.gas).times((0, utils_1.bnOrZero)(tx.gasPrice)).toFixed(0);
25
- }
26
- })();
27
- const stepData = { networkFeeCryptoBaseUnit };
28
- return (0, monads_1.Ok)(stepData);
29
- }
30
14
  const transactionData = {
31
15
  type: 'evm',
32
16
  chainId: Number((0, caip_1.fromChainId)(sellAsset.chainId).chainReference),
33
17
  to: tx.to,
34
18
  data: tx.data,
35
19
  value: (0, viem_1.fromHex)(tx.value, 'bigint').toString(),
36
- gasLimit: tx.gas?.toString(),
37
20
  };
21
+ const stateOverride = {
22
+ sellAsset,
23
+ sellAmountCryptoBaseUnit,
24
+ spenderAddress,
25
+ };
26
+ if (type === 'rate') {
27
+ const networkFeeCryptoBaseUnit = await (0, evm_1.getEvmRateNetworkFeeCryptoBaseUnit)({
28
+ adapter,
29
+ supportsEIP1559,
30
+ providerGasLimit: tx.gas?.toString(),
31
+ simulation: { transactionData, from, stateOverride },
32
+ }).catch(() => (0, utils_1.bnOrZero)(tx.gas).times((0, utils_1.bnOrZero)(tx.gasPrice)).toFixed(0));
33
+ const stepData = { networkFeeCryptoBaseUnit };
34
+ return (0, monads_1.Ok)(stepData);
35
+ }
38
36
  try {
39
37
  const networkFeeCryptoBaseUnit = await (0, evm_1.getEvmNetworkFeeCryptoBaseUnit)({
40
38
  adapter,
41
39
  transactionData,
42
40
  from,
43
41
  supportsEIP1559,
44
- stateOverride: {
45
- sellAsset,
46
- sellAmountCryptoBaseUnit,
47
- spenderAddress,
48
- },
42
+ stateOverride,
43
+ providerGasLimit: tx.gas?.toString(),
49
44
  });
50
45
  const stepData = { transactionData, networkFeeCryptoBaseUnit };
51
46
  return (0, monads_1.Ok)(stepData);
@@ -4,7 +4,6 @@ exports.getBobGatewayTradeQuote = void 0;
4
4
  const caip_1 = require("@shapeshiftoss/caip");
5
5
  const monads_1 = require("@sniptt/monads");
6
6
  const utils_1 = require("../../../utils");
7
- const helpers_1 = require("../../../utils/helpers");
8
7
  const getBobGatewayStepData_1 = require("../utils/getBobGatewayStepData");
9
8
  const getBobGatewayTradeContext_1 = require("../utils/getBobGatewayTradeContext");
10
9
  const getBobGatewayTradeQuote = async (input, deps) => {
@@ -38,7 +37,6 @@ const getBobGatewayTradeQuote = async (input, deps) => {
38
37
  const tradeQuote = {
39
38
  ...tradeCommon,
40
39
  quoteOrRate: 'quote',
41
- deadline: Date.now() + helpers_1.FALLBACK_QUOTE_DEADLINE_MS,
42
40
  receiveAddress,
43
41
  steps: [
44
42
  {
@@ -7,7 +7,6 @@ const monads_1 = require("@sniptt/monads");
7
7
  const constants_1 = require("../../../constants");
8
8
  const types_1 = require("../../../types");
9
9
  const utils_2 = require("../../../utils");
10
- const helpers_1 = require("../../../utils/helpers");
11
10
  const getButterSwapStepData_1 = require("../utils/getButterSwapStepData");
12
11
  const getButterSwapTradeContext_1 = require("../utils/getButterSwapTradeContext");
13
12
  const xhr_1 = require("../xhr");
@@ -63,7 +62,6 @@ const getTradeQuote = async (input, deps) => {
63
62
  const tradeQuote = {
64
63
  ...tradeCommon,
65
64
  quoteOrRate: 'quote',
66
- deadline: Date.now() + helpers_1.FALLBACK_QUOTE_DEADLINE_MS,
67
65
  receiveAddress,
68
66
  steps: [
69
67
  {
@@ -56,6 +56,7 @@ const mockEvmChainAdapter = {
56
56
  assertGetNearChainAdapter: () => vitest_1.vi.fn(),
57
57
  assertGetStarknetChainAdapter: () => vitest_1.vi.fn(),
58
58
  assertGetTonChainAdapter: () => vitest_1.vi.fn(),
59
+ assertGetAptosChainAdapter: () => vitest_1.vi.fn(),
59
60
  config: {
60
61
  VITE_BUTTERSWAP_CLIENT_ID: 'test',
61
62
  },
@@ -36,6 +36,7 @@ const mockEvmChainAdapter = {
36
36
  assertGetNearChainAdapter: () => vitest_1.vi.fn(),
37
37
  assertGetStarknetChainAdapter: () => vitest_1.vi.fn(),
38
38
  assertGetTonChainAdapter: () => vitest_1.vi.fn(),
39
+ assertGetAptosChainAdapter: () => vitest_1.vi.fn(),
39
40
  config: {
40
41
  VITE_BUTTERSWAP_CLIENT_ID: 'test',
41
42
  },
@@ -28,10 +28,10 @@ async function getButterSwapStepData(args) {
28
28
  if (args.type === 'rate') {
29
29
  const networkFeeCryptoBaseUnit = await (async () => {
30
30
  try {
31
- return await (0, evm_1.getEvmNetworkFeeCryptoBaseUnit)({
31
+ return await (0, evm_1.getEvmRateNetworkFeeCryptoBaseUnit)({
32
32
  adapter,
33
33
  supportsEIP1559,
34
- gasLimit: (0, utils_1.bnOrZero)(route.gasEstimatedTarget).toFixed(),
34
+ providerGasLimit: (0, utils_1.bnOrZero)(route.gasEstimatedTarget).toFixed(),
35
35
  });
36
36
  }
37
37
  catch {
@@ -55,13 +55,12 @@ async function getButterSwapStepData(args) {
55
55
  supportsEIP1559,
56
56
  transactionData,
57
57
  from,
58
- // Butter's gasEstimatedTarget lands short on chain (observed 24% under actual, causing
59
- // in-flight OOG/SWAP_FAIL reverts) - estimate ourselves instead
60
58
  stateOverride: {
61
59
  sellAsset,
62
60
  sellAmountCryptoBaseUnit,
63
61
  spenderAddress,
64
62
  },
63
+ providerGasLimit: (0, utils_1.bnOrZero)(route.gasEstimatedTarget).toFixed(),
65
64
  });
66
65
  const stepData = { transactionData, networkFeeCryptoBaseUnit };
67
66
  return (0, monads_1.Ok)(stepData);
@@ -96,7 +96,7 @@ const evmQuoteInput = { supportsEIP1559: false };
96
96
  });
97
97
  // gasEstimatedTarget 1159118 is ignored - the tx carries the buffered on chain estimate
98
98
  (0, vitest_1.expect)(actual.unwrap()).toEqual({
99
- networkFeeCryptoBaseUnit: '500000000000000',
99
+ networkFeeCryptoBaseUnit: '600000000000000',
100
100
  transactionData: {
101
101
  type: 'evm',
102
102
  chainId: 1,
@@ -123,7 +123,7 @@ const evmQuoteInput = { supportsEIP1559: false };
123
123
  const { transactionData, networkFeeCryptoBaseUnit } = actual.unwrap();
124
124
  // The buffered limit is set on the tx data in place, so the executable tx always carries one
125
125
  (0, vitest_1.expect)(transactionData).toMatchObject({ gasLimit: '600000' });
126
- (0, vitest_1.expect)(networkFeeCryptoBaseUnit).toBe('500000000000000');
126
+ (0, vitest_1.expect)(networkFeeCryptoBaseUnit).toBe('600000000000000');
127
127
  });
128
128
  (0, vitest_1.it)('errors rather than falling back to the provider fee when quote estimation fails', async () => {
129
129
  const actual = await (0, getButterSwapStepData_1.getButterSwapStepData)({
@@ -11,7 +11,6 @@ const types_1 = require("../../types");
11
11
  const utils_2 = require("../../utils");
12
12
  const getTradeQuote_1 = require("./swapperApi/getTradeQuote");
13
13
  const getTradeRate_1 = require("./swapperApi/getTradeRate");
14
- const constants_2 = require("./utils/constants");
15
14
  const helpers_1 = require("./utils/helpers");
16
15
  exports.cetusApi = {
17
16
  getTradeQuote: (input, deps) => (0, getTradeQuote_1.getTradeQuote)(input, deps),
@@ -23,12 +22,12 @@ exports.cetusApi = {
23
22
  const { accountNumber, sellAsset, buyAsset, sellAmountIncludingProtocolFeesCryptoBaseUnit } = step;
24
23
  const adapter = assertGetSuiChainAdapter(sellAsset.chainId);
25
24
  const rpcUrl = config.VITE_SUI_NODE_URL;
26
- const client = (0, helpers_1.getAggregatorClient)(rpcUrl);
25
+ const client = (0, helpers_1.getAggregatorClient)(rpcUrl, from);
27
26
  const suiClient = (0, helpers_1.getSuiClient)(rpcUrl);
28
27
  const sellCoinType = (0, helpers_1.getCoinType)(sellAsset);
29
28
  const buyCoinType = (0, helpers_1.getCoinType)(buyAsset);
30
29
  // Exclude Pyth-dependent providers to avoid oracle failures
31
- const providersWithoutPyth = (0, aggregator_sdk_1.getProvidersExcluding)(constants_2.PYTH_DEPENDENT_PROVIDERS);
30
+ const providersWithoutPyth = (0, aggregator_sdk_1.getProvidersExcluding)(aggregator_sdk_1.PYTH_ORACLE_BASED_DEXES);
32
31
  const routerData = await (0, helpers_1.findBestRoute)(client, sellCoinType, buyCoinType, sellAmountIncludingProtocolFeesCryptoBaseUnit, providersWithoutPyth);
33
32
  if (!routerData) {
34
33
  throw new Error(`No route found for ${sellAsset.symbol}/${buyAsset.symbol}`);
@@ -8,9 +8,11 @@ const constants_1 = require("../../../constants");
8
8
  const types_1 = require("../../../types");
9
9
  const utils_2 = require("../../../utils");
10
10
  const helpers_1 = require("../utils/helpers");
11
+ // The 0x0 dummy sender only holds dust SUI, so server-side gas selection exceeds the payment object limit
12
+ const UNFUNDED_SENDER_ERRORS = ['Insufficient balance of', 'maximum number of gas payment objects'];
11
13
  async function getCetusStepData(args) {
12
14
  const { routerData, rpcUrl, slippageTolerancePercentageDecimal, from } = args;
13
- const client = (0, helpers_1.getAggregatorClient)(rpcUrl);
15
+ const client = (0, helpers_1.getAggregatorClient)(rpcUrl, from);
14
16
  const suiClient = (0, helpers_1.getSuiClient)(rpcUrl);
15
17
  const slippage = (0, utils_1.bnOrZero)(slippageTolerancePercentageDecimal ??
16
18
  (0, constants_1.getDefaultSlippageDecimalPercentageForSwapper)(types_1.SwapperName.Cetus)).toNumber();
@@ -20,12 +22,14 @@ async function getCetusStepData(args) {
20
22
  txb.setSender(from);
21
23
  await client.fastRouterSwap({ router: routerData, slippage, txb, refreshAllCoins: true });
22
24
  const transactionBytes = await txb.build({ client: suiClient });
23
- const dryRunResult = await suiClient.dryRunTransactionBlock({
24
- transactionBlock: transactionBytes,
25
+ const dryRunResult = await suiClient.simulateTransaction({
26
+ transaction: transactionBytes,
27
+ include: { effects: true },
25
28
  });
26
- const computationCost = BigInt(dryRunResult.effects.gasUsed.computationCost);
27
- const storageCost = BigInt(dryRunResult.effects.gasUsed.storageCost);
28
- const storageRebate = BigInt(dryRunResult.effects.gasUsed.storageRebate);
29
+ const { gasUsed } = (dryRunResult.Transaction ?? dryRunResult.FailedTransaction).effects;
30
+ const computationCost = BigInt(gasUsed.computationCost);
31
+ const storageCost = BigInt(gasUsed.storageCost);
32
+ const storageRebate = BigInt(gasUsed.storageRebate);
29
33
  const netStorageCost = storageCost > storageRebate ? storageCost - storageRebate : 0n;
30
34
  return (computationCost + netStorageCost).toString();
31
35
  };
@@ -36,8 +40,9 @@ async function getCetusStepData(args) {
36
40
  return (0, monads_1.Ok)(stepData);
37
41
  }
38
42
  catch (error) {
39
- // Walletless rates have no coins to dry-run against - degrade to an unknown fee, but a real route/build error still fails
40
- if (error instanceof Error && error.message.includes('Not enough coins of type')) {
43
+ // Walletless rates have no usable coins to dry-run against - degrade to an unknown fee, but a real route/build error still fails
44
+ const errorMessage = error instanceof Error ? error.message : '';
45
+ if (UNFUNDED_SENDER_ERRORS.some(message => errorMessage.includes(message))) {
41
46
  const stepData = { networkFeeCryptoBaseUnit: undefined };
42
47
  return (0, monads_1.Ok)(stepData);
43
48
  }
@@ -7,7 +7,6 @@ const uuid_1 = require("uuid");
7
7
  const types_1 = require("../../../types");
8
8
  const utils_1 = require("../../../utils");
9
9
  const affiliateFee_1 = require("../../../utils/affiliateFee");
10
- const constants_1 = require("../utils/constants");
11
10
  const helpers_1 = require("../utils/helpers");
12
11
  const getCetusTradeContext = async (input, deps) => {
13
12
  const { sellAsset, buyAsset, sellAmountIncludingProtocolFeesCryptoBaseUnit, affiliateBps } = input;
@@ -20,7 +19,7 @@ const getCetusTradeContext = async (input, deps) => {
20
19
  const sellCoinType = (0, helpers_1.getCoinType)(sellAsset);
21
20
  const buyCoinType = (0, helpers_1.getCoinType)(buyAsset);
22
21
  // Exclude Pyth-dependent providers to avoid oracle failures
23
- const providersWithoutPyth = (0, aggregator_sdk_1.getProvidersExcluding)(constants_1.PYTH_DEPENDENT_PROVIDERS);
22
+ const providersWithoutPyth = (0, aggregator_sdk_1.getProvidersExcluding)(aggregator_sdk_1.PYTH_ORACLE_BASED_DEXES);
24
23
  const routerData = await (0, helpers_1.findBestRoute)(client, sellCoinType, buyCoinType, sellAmountIncludingProtocolFeesCryptoBaseUnit, providersWithoutPyth);
25
24
  if (!routerData) {
26
25
  return (0, monads_1.Err)((0, utils_1.makeSwapErrorRight)({
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getTradeQuote = void 0;
4
4
  const monads_1 = require("@sniptt/monads");
5
5
  const utils_1 = require("../../../utils");
6
- const helpers_1 = require("../../../utils/helpers");
7
6
  const getCetusStepData_1 = require("./getCetusStepData");
8
7
  const getCetusTradeContext_1 = require("./getCetusTradeContext");
9
8
  const getTradeQuote = async (input, deps) => {
@@ -28,7 +27,6 @@ const getTradeQuote = async (input, deps) => {
28
27
  const tradeQuote = {
29
28
  ...tradeCommon,
30
29
  quoteOrRate: 'quote',
31
- deadline: Date.now() + helpers_1.FALLBACK_QUOTE_DEADLINE_MS,
32
30
  receiveAddress,
33
31
  steps: [
34
32
  {
@@ -1,5 +1,4 @@
1
1
  import type { ChainId } from '@shapeshiftoss/caip';
2
2
  export declare const SUPPORTED_CETUS_CHAIN_IDS: readonly ChainId[];
3
3
  export declare const isSupportedChainId: (chainId: ChainId) => chainId is ChainId;
4
- export declare const PYTH_DEPENDENT_PROVIDERS: string[];
5
4
  export declare const CETUS_FEE_ESTIMATE_DUMMY_ADDRESS = "0x0000000000000000000000000000000000000000000000000000000000000000";
@@ -1,12 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CETUS_FEE_ESTIMATE_DUMMY_ADDRESS = exports.PYTH_DEPENDENT_PROVIDERS = exports.isSupportedChainId = exports.SUPPORTED_CETUS_CHAIN_IDS = void 0;
3
+ exports.CETUS_FEE_ESTIMATE_DUMMY_ADDRESS = exports.isSupportedChainId = exports.SUPPORTED_CETUS_CHAIN_IDS = void 0;
4
4
  const caip_1 = require("@shapeshiftoss/caip");
5
5
  exports.SUPPORTED_CETUS_CHAIN_IDS = [caip_1.suiChainId];
6
6
  const isSupportedChainId = (chainId) => {
7
7
  return exports.SUPPORTED_CETUS_CHAIN_IDS.includes(chainId);
8
8
  };
9
9
  exports.isSupportedChainId = isSupportedChainId;
10
- exports.PYTH_DEPENDENT_PROVIDERS = ['HAEDALPMM', 'HAEDALHMMV2', 'METASTABLE'];
11
10
  // Placeholder sender for walletless rate fee estimation - dry-run needs a sender, real coins aren't required
12
11
  exports.CETUS_FEE_ESTIMATE_DUMMY_ADDRESS = '0x0000000000000000000000000000000000000000000000000000000000000000';
@@ -1,11 +1,11 @@
1
1
  import type { RouterDataV3 } from '@cetusprotocol/aggregator-sdk';
2
2
  import { AggregatorClient } from '@cetusprotocol/aggregator-sdk';
3
- import { SuiClient } from '@mysten/sui/client';
3
+ import { SuiGrpcClient } from '@mysten/sui/grpc';
4
4
  import type { Asset } from '@shapeshiftoss/types';
5
5
  import type { Result } from '@sniptt/monads';
6
6
  import type { SwapErrorRight } from '../../../types';
7
- export declare const getAggregatorClient: (rpcUrl: string) => AggregatorClient;
8
- export declare const getSuiClient: (rpcUrl: string) => SuiClient;
7
+ export declare const getSuiClient: (rpcUrl: string) => SuiGrpcClient;
8
+ export declare const getAggregatorClient: (rpcUrl: string, signer?: string) => AggregatorClient;
9
9
  export declare const assertValidTrade: ({ sellAsset, buyAsset, }: {
10
10
  sellAsset: Asset;
11
11
  buyAsset: Asset;