@shapeshiftoss/swapper 20.3.0 → 20.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (327) hide show
  1. package/dist/cjs/.tsbuildinfo +1 -1
  2. package/dist/cjs/constants.js +21 -0
  3. package/dist/cjs/index.d.ts +3 -0
  4. package/dist/cjs/index.js +3 -0
  5. package/dist/cjs/swappers/AcrossSwapper/utils/getAcrossStepData.js +7 -15
  6. package/dist/cjs/swappers/ArbitrumBridgeSwapper/getTradeQuote/getTradeQuote.js +0 -2
  7. package/dist/cjs/swappers/AvnuSwapper/endpoints.js +17 -12
  8. package/dist/cjs/swappers/AvnuSwapper/swapperApi/getTradeQuote.js +1 -2
  9. package/dist/cjs/swappers/BebopSwapper/utils/fetchFromBebop.d.ts +2 -1
  10. package/dist/cjs/swappers/BebopSwapper/utils/fetchFromBebop.js +21 -15
  11. package/dist/cjs/swappers/BebopSwapper/utils/getBebopSolanaTradeContext.js +1 -0
  12. package/dist/cjs/swappers/BebopSwapper/utils/getBebopStepData.js +17 -22
  13. package/dist/cjs/swappers/BobGatewaySwapper/swapperApi/getTradeQuote.js +0 -2
  14. package/dist/cjs/swappers/ButterSwap/swapperApi/getTradeQuote.js +0 -2
  15. package/dist/cjs/swappers/ButterSwap/swapperApi/getTradeQuote.test.js +1 -0
  16. package/dist/cjs/swappers/ButterSwap/swapperApi/getTradeRate.test.js +1 -0
  17. package/dist/cjs/swappers/ButterSwap/utils/getButterSwapStepData.js +3 -4
  18. package/dist/cjs/swappers/ButterSwap/utils/getButterSwapStepData.test.js +2 -2
  19. package/dist/cjs/swappers/CetusSwapper/endpoints.js +2 -3
  20. package/dist/cjs/swappers/CetusSwapper/swapperApi/getCetusStepData.js +13 -8
  21. package/dist/cjs/swappers/CetusSwapper/swapperApi/getCetusTradeContext.js +1 -2
  22. package/dist/cjs/swappers/CetusSwapper/swapperApi/getTradeQuote.js +0 -2
  23. package/dist/cjs/swappers/CetusSwapper/utils/constants.d.ts +0 -1
  24. package/dist/cjs/swappers/CetusSwapper/utils/constants.js +1 -2
  25. package/dist/cjs/swappers/CetusSwapper/utils/helpers.d.ts +3 -3
  26. package/dist/cjs/swappers/CetusSwapper/utils/helpers.js +6 -17
  27. package/dist/cjs/swappers/ChainflipSwapper/swapperApi/getTradeQuote.js +1 -2
  28. package/dist/cjs/swappers/ChainflipSwapper/types.d.ts +1 -0
  29. package/dist/cjs/swappers/DebridgeSwapper/getTradeQuote/getTradeQuote.js +0 -2
  30. package/dist/cjs/swappers/DebridgeSwapper/utils/getDebridgeStepData.d.ts +0 -1
  31. package/dist/cjs/swappers/DebridgeSwapper/utils/getDebridgeStepData.js +9 -16
  32. package/dist/cjs/swappers/DebridgeSwapper/utils/getDebridgeTradeContext.js +0 -3
  33. package/dist/cjs/swappers/FyndSwapper/FyndSwapper.d.ts +2 -0
  34. package/dist/cjs/swappers/FyndSwapper/FyndSwapper.js +5 -0
  35. package/dist/cjs/swappers/FyndSwapper/endpoints.d.ts +2 -0
  36. package/dist/cjs/swappers/FyndSwapper/endpoints.js +14 -0
  37. package/dist/cjs/swappers/FyndSwapper/getTradeQuote/getTradeQuote.d.ts +4 -0
  38. package/dist/cjs/swappers/FyndSwapper/getTradeQuote/getTradeQuote.js +43 -0
  39. package/dist/cjs/swappers/FyndSwapper/getTradeRate/getTradeRate.d.ts +4 -0
  40. package/dist/cjs/swappers/FyndSwapper/getTradeRate/getTradeRate.js +34 -0
  41. package/dist/cjs/swappers/FyndSwapper/index.d.ts +2 -0
  42. package/dist/cjs/swappers/FyndSwapper/index.js +7 -0
  43. package/dist/cjs/swappers/FyndSwapper/types.d.ts +41 -0
  44. package/dist/cjs/swappers/FyndSwapper/types.js +2 -0
  45. package/dist/cjs/swappers/FyndSwapper/utils/constants.d.ts +33 -0
  46. package/dist/cjs/swappers/FyndSwapper/utils/constants.js +38 -0
  47. package/dist/cjs/swappers/FyndSwapper/utils/fetchFromFynd.d.ts +13 -0
  48. package/dist/cjs/swappers/FyndSwapper/utils/fetchFromFynd.js +42 -0
  49. package/dist/cjs/swappers/FyndSwapper/utils/fyndService.d.ts +5 -0
  50. package/dist/cjs/swappers/FyndSwapper/utils/fyndService.js +9 -0
  51. package/dist/cjs/swappers/FyndSwapper/utils/getFyndStepData.d.ts +25 -0
  52. package/dist/cjs/swappers/FyndSwapper/utils/getFyndStepData.js +46 -0
  53. package/dist/cjs/swappers/FyndSwapper/utils/getFyndTradeContext.d.ts +18 -0
  54. package/dist/cjs/swappers/FyndSwapper/utils/getFyndTradeContext.js +94 -0
  55. package/dist/cjs/swappers/FyndSwapper/utils/helpers.d.ts +24 -0
  56. package/dist/cjs/swappers/FyndSwapper/utils/helpers.js +174 -0
  57. package/dist/cjs/swappers/FyndSwapper/utils/helpers.test.d.ts +1 -0
  58. package/dist/cjs/swappers/FyndSwapper/utils/helpers.test.js +101 -0
  59. package/dist/cjs/swappers/KyberSwapper/KyberSwapper.d.ts +2 -0
  60. package/dist/cjs/swappers/KyberSwapper/KyberSwapper.js +5 -0
  61. package/dist/cjs/swappers/KyberSwapper/endpoints.d.ts +2 -0
  62. package/dist/cjs/swappers/KyberSwapper/endpoints.js +14 -0
  63. package/dist/cjs/swappers/KyberSwapper/index.d.ts +2 -0
  64. package/dist/cjs/swappers/KyberSwapper/index.js +7 -0
  65. package/dist/cjs/swappers/KyberSwapper/swapperApi/getKyberTradeQuote.d.ts +4 -0
  66. package/dist/cjs/swappers/KyberSwapper/swapperApi/getKyberTradeQuote.js +64 -0
  67. package/dist/cjs/swappers/KyberSwapper/swapperApi/getKyberTradeRate.d.ts +4 -0
  68. package/dist/cjs/swappers/KyberSwapper/swapperApi/getKyberTradeRate.js +31 -0
  69. package/dist/cjs/swappers/KyberSwapper/types.d.ts +62 -0
  70. package/dist/cjs/swappers/KyberSwapper/types.js +2 -0
  71. package/dist/cjs/swappers/KyberSwapper/utils/constants.d.ts +21 -0
  72. package/dist/cjs/swappers/KyberSwapper/utils/constants.js +24 -0
  73. package/dist/cjs/swappers/KyberSwapper/utils/fetchFromKyber.d.ts +23 -0
  74. package/dist/cjs/swappers/KyberSwapper/utils/fetchFromKyber.js +38 -0
  75. package/dist/cjs/swappers/KyberSwapper/utils/getKyberStepData.d.ts +27 -0
  76. package/dist/cjs/swappers/KyberSwapper/utils/getKyberStepData.js +47 -0
  77. package/dist/cjs/swappers/KyberSwapper/utils/getKyberStepData.test.d.ts +1 -0
  78. package/dist/cjs/swappers/KyberSwapper/utils/getKyberStepData.test.js +92 -0
  79. package/dist/cjs/swappers/KyberSwapper/utils/getKyberTradeContext.d.ts +20 -0
  80. package/dist/cjs/swappers/KyberSwapper/utils/getKyberTradeContext.js +63 -0
  81. package/dist/cjs/swappers/KyberSwapper/utils/helpers.d.ts +27 -0
  82. package/dist/cjs/swappers/KyberSwapper/utils/helpers.js +172 -0
  83. package/dist/cjs/swappers/KyberSwapper/utils/helpers.test.d.ts +1 -0
  84. package/dist/cjs/swappers/KyberSwapper/utils/helpers.test.js +110 -0
  85. package/dist/cjs/swappers/KyberSwapper/utils/kyberService.d.ts +5 -0
  86. package/dist/cjs/swappers/KyberSwapper/utils/kyberService.js +9 -0
  87. package/dist/cjs/swappers/MayachainSwapper/generated/generatedTradableAssetMap.json +0 -1
  88. package/dist/cjs/swappers/NearIntentsSwapper/NearIntentsSwapper.js +1 -0
  89. package/dist/cjs/swappers/NearIntentsSwapper/endpoints.js +13 -14
  90. package/dist/cjs/swappers/NearIntentsSwapper/swapperApi/getTradeRate.js +1 -1
  91. package/dist/cjs/swappers/NearIntentsSwapper/types.d.ts +4 -4
  92. package/dist/cjs/swappers/NearIntentsSwapper/types.js +2 -0
  93. package/dist/cjs/swappers/NearIntentsSwapper/utils/getNearIntentsStepData.js +28 -0
  94. package/dist/cjs/swappers/NearIntentsSwapper/utils/helpers.js +2 -2
  95. package/dist/cjs/swappers/PortalsSwapper/endpoints.js +4 -1
  96. package/dist/cjs/swappers/PortalsSwapper/getPortalsTradeQuote/getPortalsTradeQuote.js +1 -1
  97. package/dist/cjs/swappers/PortalsSwapper/utils/getPortalsStepData.js +36 -55
  98. package/dist/cjs/swappers/PortalsSwapper/utils/getPortalsStepData.test.js +2 -2
  99. package/dist/cjs/swappers/RelaySwapper/getTradeQuote/getTradeQuote.js +2 -3
  100. package/dist/cjs/swappers/RelaySwapper/utils/getRelayStepData.js +7 -15
  101. package/dist/cjs/swappers/RelaySwapper/utils/getRelayTradeContext.d.ts +1 -0
  102. package/dist/cjs/swappers/RelaySwapper/utils/getRelayTradeContext.js +4 -0
  103. package/dist/cjs/swappers/RelaySwapper/utils/relayStatus.js +3 -3
  104. package/dist/cjs/swappers/RelaySwapper/utils/types.d.ts +9 -4
  105. package/dist/cjs/swappers/SymbiosisSwapper/SymbiosisSwapper.d.ts +2 -0
  106. package/dist/cjs/swappers/SymbiosisSwapper/SymbiosisSwapper.js +8 -0
  107. package/dist/cjs/swappers/SymbiosisSwapper/endpoints.d.ts +2 -0
  108. package/dist/cjs/swappers/SymbiosisSwapper/endpoints.js +66 -0
  109. package/dist/cjs/swappers/SymbiosisSwapper/getTradeQuote/getTradeQuote.d.ts +4 -0
  110. package/dist/cjs/swappers/SymbiosisSwapper/getTradeQuote/getTradeQuote.js +42 -0
  111. package/dist/cjs/swappers/SymbiosisSwapper/getTradeRate/getTradeRate.d.ts +4 -0
  112. package/dist/cjs/swappers/SymbiosisSwapper/getTradeRate/getTradeRate.js +34 -0
  113. package/dist/cjs/swappers/SymbiosisSwapper/index.d.ts +2 -0
  114. package/dist/cjs/swappers/SymbiosisSwapper/index.js +7 -0
  115. package/dist/cjs/swappers/SymbiosisSwapper/utils/constants.d.ts +19 -0
  116. package/dist/cjs/swappers/SymbiosisSwapper/utils/constants.js +64 -0
  117. package/dist/cjs/swappers/SymbiosisSwapper/utils/getSymbiosisStepData.d.ts +26 -0
  118. package/dist/cjs/swappers/SymbiosisSwapper/utils/getSymbiosisStepData.js +106 -0
  119. package/dist/cjs/swappers/SymbiosisSwapper/utils/getSymbiosisStepData.test.d.ts +1 -0
  120. package/dist/cjs/swappers/SymbiosisSwapper/utils/getSymbiosisStepData.test.js +161 -0
  121. package/dist/cjs/swappers/SymbiosisSwapper/utils/getSymbiosisTradeContext.d.ts +17 -0
  122. package/dist/cjs/swappers/SymbiosisSwapper/utils/getSymbiosisTradeContext.js +146 -0
  123. package/dist/cjs/swappers/SymbiosisSwapper/utils/helpers.d.ts +38 -0
  124. package/dist/cjs/swappers/SymbiosisSwapper/utils/helpers.js +172 -0
  125. package/dist/cjs/swappers/SymbiosisSwapper/utils/helpers.test.d.ts +1 -0
  126. package/dist/cjs/swappers/SymbiosisSwapper/utils/helpers.test.js +151 -0
  127. package/dist/cjs/swappers/SymbiosisSwapper/utils/symbiosisService.d.ts +5 -0
  128. package/dist/cjs/swappers/SymbiosisSwapper/utils/symbiosisService.js +18 -0
  129. package/dist/cjs/swappers/SymbiosisSwapper/utils/types.d.ts +83 -0
  130. package/dist/cjs/swappers/SymbiosisSwapper/utils/types.js +11 -0
  131. package/dist/cjs/swappers/ThorchainSwapper/generated/generatedThorLongtailTokens.json +1 -0
  132. package/dist/cjs/swappers/ThorchainSwapper/generated/generatedTradableAssetMap.json +1 -0
  133. package/dist/cjs/swappers/ThorchainSwapper/getTradeQuote/getTradeQuote.test.js +2 -2
  134. package/dist/cjs/swappers/ThorchainSwapper/utils/getLongtailQuote.js +1 -1
  135. package/dist/cjs/swappers/ZrxSwapper/getZrxTradeQuote/getZrxTradeQuote.js +27 -2
  136. package/dist/cjs/swappers/ZrxSwapper/getZrxTradeQuote/getZrxTradeQuote.test.d.ts +1 -0
  137. package/dist/cjs/swappers/ZrxSwapper/getZrxTradeQuote/getZrxTradeQuote.test.js +110 -0
  138. package/dist/cjs/swappers/ZrxSwapper/types.d.ts +2 -1
  139. package/dist/cjs/swappers/ZrxSwapper/utils/getZrxNativeCheckDeadline.d.ts +1 -0
  140. package/dist/cjs/swappers/ZrxSwapper/utils/getZrxNativeCheckDeadline.js +26 -0
  141. package/dist/cjs/swappers/ZrxSwapper/utils/getZrxStepData.d.ts +3 -1
  142. package/dist/cjs/swappers/ZrxSwapper/utils/getZrxStepData.js +29 -10
  143. package/dist/cjs/types.d.ts +41 -12
  144. package/dist/cjs/types.js +3 -0
  145. package/dist/cjs/utils/aptos/constants.d.ts +2 -0
  146. package/dist/cjs/utils/aptos/constants.js +7 -0
  147. package/dist/cjs/utils/aptos/getAptosTransactionFees.d.ts +2 -0
  148. package/dist/cjs/utils/aptos/getAptosTransactionFees.js +13 -0
  149. package/dist/cjs/utils/aptos/getUnsignedAptosTransaction.d.ts +2 -0
  150. package/dist/cjs/utils/aptos/getUnsignedAptosTransaction.js +16 -0
  151. package/dist/cjs/utils/aptos/index.d.ts +3 -0
  152. package/dist/cjs/utils/aptos/index.js +19 -0
  153. package/dist/cjs/utils/evm/getEvmNetworkFeeCryptoBaseUnit.d.ts +19 -6
  154. package/dist/cjs/utils/evm/getEvmNetworkFeeCryptoBaseUnit.js +45 -35
  155. package/dist/cjs/utils/evm/getEvmNetworkFeeCryptoBaseUnit.test.d.ts +1 -0
  156. package/dist/cjs/utils/evm/getEvmNetworkFeeCryptoBaseUnit.test.js +103 -0
  157. package/dist/cjs/utils/evm/stateOverride.d.ts +3 -0
  158. package/dist/cjs/utils/evm/stateOverride.js +10 -4
  159. package/dist/cjs/utils/helpers.d.ts +1 -2
  160. package/dist/cjs/utils/helpers.js +9 -32
  161. package/dist/cjs/utils/helpers.test.js +7 -2
  162. package/dist/cjs/utils/index.d.ts +3 -2
  163. package/dist/cjs/utils/index.js +11 -27
  164. package/dist/esm/.tsbuildinfo +1 -1
  165. package/dist/esm/constants.js +21 -0
  166. package/dist/esm/index.d.ts +3 -0
  167. package/dist/esm/index.js +3 -0
  168. package/dist/esm/swappers/AcrossSwapper/utils/getAcrossStepData.js +8 -16
  169. package/dist/esm/swappers/ArbitrumBridgeSwapper/getTradeQuote/getTradeQuote.js +0 -2
  170. package/dist/esm/swappers/AvnuSwapper/endpoints.js +18 -13
  171. package/dist/esm/swappers/AvnuSwapper/swapperApi/getTradeQuote.js +1 -2
  172. package/dist/esm/swappers/BebopSwapper/utils/fetchFromBebop.d.ts +2 -1
  173. package/dist/esm/swappers/BebopSwapper/utils/fetchFromBebop.js +21 -15
  174. package/dist/esm/swappers/BebopSwapper/utils/getBebopSolanaTradeContext.js +1 -0
  175. package/dist/esm/swappers/BebopSwapper/utils/getBebopStepData.js +18 -23
  176. package/dist/esm/swappers/BobGatewaySwapper/swapperApi/getTradeQuote.js +0 -2
  177. package/dist/esm/swappers/ButterSwap/swapperApi/getTradeQuote.js +0 -2
  178. package/dist/esm/swappers/ButterSwap/swapperApi/getTradeQuote.test.js +1 -0
  179. package/dist/esm/swappers/ButterSwap/swapperApi/getTradeRate.test.js +1 -0
  180. package/dist/esm/swappers/ButterSwap/utils/getButterSwapStepData.js +4 -5
  181. package/dist/esm/swappers/ButterSwap/utils/getButterSwapStepData.test.js +2 -2
  182. package/dist/esm/swappers/CetusSwapper/endpoints.js +3 -4
  183. package/dist/esm/swappers/CetusSwapper/swapperApi/getCetusStepData.js +13 -8
  184. package/dist/esm/swappers/CetusSwapper/swapperApi/getCetusTradeContext.js +2 -3
  185. package/dist/esm/swappers/CetusSwapper/swapperApi/getTradeQuote.js +0 -2
  186. package/dist/esm/swappers/CetusSwapper/utils/constants.d.ts +0 -1
  187. package/dist/esm/swappers/CetusSwapper/utils/constants.js +0 -1
  188. package/dist/esm/swappers/CetusSwapper/utils/helpers.d.ts +3 -3
  189. package/dist/esm/swappers/CetusSwapper/utils/helpers.js +4 -15
  190. package/dist/esm/swappers/ChainflipSwapper/swapperApi/getTradeQuote.js +1 -2
  191. package/dist/esm/swappers/ChainflipSwapper/types.d.ts +1 -0
  192. package/dist/esm/swappers/DebridgeSwapper/getTradeQuote/getTradeQuote.js +0 -2
  193. package/dist/esm/swappers/DebridgeSwapper/utils/getDebridgeStepData.d.ts +0 -1
  194. package/dist/esm/swappers/DebridgeSwapper/utils/getDebridgeStepData.js +9 -16
  195. package/dist/esm/swappers/DebridgeSwapper/utils/getDebridgeTradeContext.js +0 -3
  196. package/dist/esm/swappers/FyndSwapper/FyndSwapper.d.ts +2 -0
  197. package/dist/esm/swappers/FyndSwapper/FyndSwapper.js +2 -0
  198. package/dist/esm/swappers/FyndSwapper/endpoints.d.ts +2 -0
  199. package/dist/esm/swappers/FyndSwapper/endpoints.js +11 -0
  200. package/dist/esm/swappers/FyndSwapper/getTradeQuote/getTradeQuote.d.ts +4 -0
  201. package/dist/esm/swappers/FyndSwapper/getTradeQuote/getTradeQuote.js +39 -0
  202. package/dist/esm/swappers/FyndSwapper/getTradeRate/getTradeRate.d.ts +4 -0
  203. package/dist/esm/swappers/FyndSwapper/getTradeRate/getTradeRate.js +30 -0
  204. package/dist/esm/swappers/FyndSwapper/index.d.ts +2 -0
  205. package/dist/esm/swappers/FyndSwapper/index.js +2 -0
  206. package/dist/esm/swappers/FyndSwapper/types.d.ts +41 -0
  207. package/dist/esm/swappers/FyndSwapper/types.js +1 -0
  208. package/dist/esm/swappers/FyndSwapper/utils/constants.d.ts +33 -0
  209. package/dist/esm/swappers/FyndSwapper/utils/constants.js +35 -0
  210. package/dist/esm/swappers/FyndSwapper/utils/fetchFromFynd.d.ts +13 -0
  211. package/dist/esm/swappers/FyndSwapper/utils/fetchFromFynd.js +38 -0
  212. package/dist/esm/swappers/FyndSwapper/utils/fyndService.d.ts +5 -0
  213. package/dist/esm/swappers/FyndSwapper/utils/fyndService.js +3 -0
  214. package/dist/esm/swappers/FyndSwapper/utils/getFyndStepData.d.ts +25 -0
  215. package/dist/esm/swappers/FyndSwapper/utils/getFyndStepData.js +42 -0
  216. package/dist/esm/swappers/FyndSwapper/utils/getFyndTradeContext.d.ts +18 -0
  217. package/dist/esm/swappers/FyndSwapper/utils/getFyndTradeContext.js +90 -0
  218. package/dist/esm/swappers/FyndSwapper/utils/helpers.d.ts +24 -0
  219. package/dist/esm/swappers/FyndSwapper/utils/helpers.js +162 -0
  220. package/dist/esm/swappers/FyndSwapper/utils/helpers.test.d.ts +1 -0
  221. package/dist/esm/swappers/FyndSwapper/utils/helpers.test.js +99 -0
  222. package/dist/esm/swappers/KyberSwapper/KyberSwapper.d.ts +2 -0
  223. package/dist/esm/swappers/KyberSwapper/KyberSwapper.js +2 -0
  224. package/dist/esm/swappers/KyberSwapper/endpoints.d.ts +2 -0
  225. package/dist/esm/swappers/KyberSwapper/endpoints.js +11 -0
  226. package/dist/esm/swappers/KyberSwapper/index.d.ts +2 -0
  227. package/dist/esm/swappers/KyberSwapper/index.js +2 -0
  228. package/dist/esm/swappers/KyberSwapper/swapperApi/getKyberTradeQuote.d.ts +4 -0
  229. package/dist/esm/swappers/KyberSwapper/swapperApi/getKyberTradeQuote.js +60 -0
  230. package/dist/esm/swappers/KyberSwapper/swapperApi/getKyberTradeRate.d.ts +4 -0
  231. package/dist/esm/swappers/KyberSwapper/swapperApi/getKyberTradeRate.js +27 -0
  232. package/dist/esm/swappers/KyberSwapper/types.d.ts +62 -0
  233. package/dist/esm/swappers/KyberSwapper/types.js +1 -0
  234. package/dist/esm/swappers/KyberSwapper/utils/constants.d.ts +21 -0
  235. package/dist/esm/swappers/KyberSwapper/utils/constants.js +21 -0
  236. package/dist/esm/swappers/KyberSwapper/utils/fetchFromKyber.d.ts +23 -0
  237. package/dist/esm/swappers/KyberSwapper/utils/fetchFromKyber.js +33 -0
  238. package/dist/esm/swappers/KyberSwapper/utils/getKyberStepData.d.ts +27 -0
  239. package/dist/esm/swappers/KyberSwapper/utils/getKyberStepData.js +43 -0
  240. package/dist/esm/swappers/KyberSwapper/utils/getKyberStepData.test.d.ts +1 -0
  241. package/dist/esm/swappers/KyberSwapper/utils/getKyberStepData.test.js +90 -0
  242. package/dist/esm/swappers/KyberSwapper/utils/getKyberTradeContext.d.ts +20 -0
  243. package/dist/esm/swappers/KyberSwapper/utils/getKyberTradeContext.js +59 -0
  244. package/dist/esm/swappers/KyberSwapper/utils/helpers.d.ts +27 -0
  245. package/dist/esm/swappers/KyberSwapper/utils/helpers.js +158 -0
  246. package/dist/esm/swappers/KyberSwapper/utils/helpers.test.d.ts +1 -0
  247. package/dist/esm/swappers/KyberSwapper/utils/helpers.test.js +108 -0
  248. package/dist/esm/swappers/KyberSwapper/utils/kyberService.d.ts +5 -0
  249. package/dist/esm/swappers/KyberSwapper/utils/kyberService.js +3 -0
  250. package/dist/esm/swappers/MayachainSwapper/generated/generatedTradableAssetMap.json +0 -1
  251. package/dist/esm/swappers/NearIntentsSwapper/NearIntentsSwapper.js +2 -1
  252. package/dist/esm/swappers/NearIntentsSwapper/endpoints.js +13 -14
  253. package/dist/esm/swappers/NearIntentsSwapper/swapperApi/getTradeRate.js +1 -1
  254. package/dist/esm/swappers/NearIntentsSwapper/types.d.ts +4 -4
  255. package/dist/esm/swappers/NearIntentsSwapper/types.js +2 -0
  256. package/dist/esm/swappers/NearIntentsSwapper/utils/getNearIntentsStepData.js +29 -1
  257. package/dist/esm/swappers/NearIntentsSwapper/utils/helpers.js +2 -2
  258. package/dist/esm/swappers/PortalsSwapper/endpoints.js +4 -1
  259. package/dist/esm/swappers/PortalsSwapper/getPortalsTradeQuote/getPortalsTradeQuote.js +2 -2
  260. package/dist/esm/swappers/PortalsSwapper/utils/getPortalsStepData.js +34 -53
  261. package/dist/esm/swappers/PortalsSwapper/utils/getPortalsStepData.test.js +2 -2
  262. package/dist/esm/swappers/RelaySwapper/getTradeQuote/getTradeQuote.js +2 -3
  263. package/dist/esm/swappers/RelaySwapper/utils/getRelayStepData.js +9 -17
  264. package/dist/esm/swappers/RelaySwapper/utils/getRelayTradeContext.d.ts +1 -0
  265. package/dist/esm/swappers/RelaySwapper/utils/getRelayTradeContext.js +5 -1
  266. package/dist/esm/swappers/RelaySwapper/utils/relayStatus.js +3 -3
  267. package/dist/esm/swappers/RelaySwapper/utils/types.d.ts +9 -4
  268. package/dist/esm/swappers/SymbiosisSwapper/SymbiosisSwapper.d.ts +2 -0
  269. package/dist/esm/swappers/SymbiosisSwapper/SymbiosisSwapper.js +5 -0
  270. package/dist/esm/swappers/SymbiosisSwapper/endpoints.d.ts +2 -0
  271. package/dist/esm/swappers/SymbiosisSwapper/endpoints.js +63 -0
  272. package/dist/esm/swappers/SymbiosisSwapper/getTradeQuote/getTradeQuote.d.ts +4 -0
  273. package/dist/esm/swappers/SymbiosisSwapper/getTradeQuote/getTradeQuote.js +38 -0
  274. package/dist/esm/swappers/SymbiosisSwapper/getTradeRate/getTradeRate.d.ts +4 -0
  275. package/dist/esm/swappers/SymbiosisSwapper/getTradeRate/getTradeRate.js +30 -0
  276. package/dist/esm/swappers/SymbiosisSwapper/index.d.ts +2 -0
  277. package/dist/esm/swappers/SymbiosisSwapper/index.js +2 -0
  278. package/dist/esm/swappers/SymbiosisSwapper/utils/constants.d.ts +19 -0
  279. package/dist/esm/swappers/SymbiosisSwapper/utils/constants.js +61 -0
  280. package/dist/esm/swappers/SymbiosisSwapper/utils/getSymbiosisStepData.d.ts +26 -0
  281. package/dist/esm/swappers/SymbiosisSwapper/utils/getSymbiosisStepData.js +102 -0
  282. package/dist/esm/swappers/SymbiosisSwapper/utils/getSymbiosisStepData.test.d.ts +1 -0
  283. package/dist/esm/swappers/SymbiosisSwapper/utils/getSymbiosisStepData.test.js +159 -0
  284. package/dist/esm/swappers/SymbiosisSwapper/utils/getSymbiosisTradeContext.d.ts +17 -0
  285. package/dist/esm/swappers/SymbiosisSwapper/utils/getSymbiosisTradeContext.js +139 -0
  286. package/dist/esm/swappers/SymbiosisSwapper/utils/helpers.d.ts +38 -0
  287. package/dist/esm/swappers/SymbiosisSwapper/utils/helpers.js +156 -0
  288. package/dist/esm/swappers/SymbiosisSwapper/utils/helpers.test.d.ts +1 -0
  289. package/dist/esm/swappers/SymbiosisSwapper/utils/helpers.test.js +149 -0
  290. package/dist/esm/swappers/SymbiosisSwapper/utils/symbiosisService.d.ts +5 -0
  291. package/dist/esm/swappers/SymbiosisSwapper/utils/symbiosisService.js +12 -0
  292. package/dist/esm/swappers/SymbiosisSwapper/utils/types.d.ts +83 -0
  293. package/dist/esm/swappers/SymbiosisSwapper/utils/types.js +8 -0
  294. package/dist/esm/swappers/ThorchainSwapper/generated/generatedThorLongtailTokens.json +1 -0
  295. package/dist/esm/swappers/ThorchainSwapper/generated/generatedTradableAssetMap.json +1 -0
  296. package/dist/esm/swappers/ThorchainSwapper/getTradeQuote/getTradeQuote.test.js +2 -2
  297. package/dist/esm/swappers/ThorchainSwapper/utils/getLongtailQuote.js +1 -1
  298. package/dist/esm/swappers/ZrxSwapper/getZrxTradeQuote/getZrxTradeQuote.js +28 -3
  299. package/dist/esm/swappers/ZrxSwapper/getZrxTradeQuote/getZrxTradeQuote.test.d.ts +1 -0
  300. package/dist/esm/swappers/ZrxSwapper/getZrxTradeQuote/getZrxTradeQuote.test.js +108 -0
  301. package/dist/esm/swappers/ZrxSwapper/types.d.ts +2 -1
  302. package/dist/esm/swappers/ZrxSwapper/utils/getZrxNativeCheckDeadline.d.ts +1 -0
  303. package/dist/esm/swappers/ZrxSwapper/utils/getZrxNativeCheckDeadline.js +22 -0
  304. package/dist/esm/swappers/ZrxSwapper/utils/getZrxStepData.d.ts +3 -1
  305. package/dist/esm/swappers/ZrxSwapper/utils/getZrxStepData.js +31 -12
  306. package/dist/esm/types.d.ts +41 -12
  307. package/dist/esm/types.js +3 -0
  308. package/dist/esm/utils/aptos/constants.d.ts +2 -0
  309. package/dist/esm/utils/aptos/constants.js +4 -0
  310. package/dist/esm/utils/aptos/getAptosTransactionFees.d.ts +2 -0
  311. package/dist/esm/utils/aptos/getAptosTransactionFees.js +9 -0
  312. package/dist/esm/utils/aptos/getUnsignedAptosTransaction.d.ts +2 -0
  313. package/dist/esm/utils/aptos/getUnsignedAptosTransaction.js +12 -0
  314. package/dist/esm/utils/aptos/index.d.ts +3 -0
  315. package/dist/esm/utils/aptos/index.js +3 -0
  316. package/dist/esm/utils/evm/getEvmNetworkFeeCryptoBaseUnit.d.ts +19 -6
  317. package/dist/esm/utils/evm/getEvmNetworkFeeCryptoBaseUnit.js +42 -35
  318. package/dist/esm/utils/evm/getEvmNetworkFeeCryptoBaseUnit.test.d.ts +1 -0
  319. package/dist/esm/utils/evm/getEvmNetworkFeeCryptoBaseUnit.test.js +101 -0
  320. package/dist/esm/utils/evm/stateOverride.d.ts +3 -0
  321. package/dist/esm/utils/evm/stateOverride.js +8 -3
  322. package/dist/esm/utils/helpers.d.ts +1 -2
  323. package/dist/esm/utils/helpers.js +10 -33
  324. package/dist/esm/utils/helpers.test.js +7 -2
  325. package/dist/esm/utils/index.d.ts +3 -2
  326. package/dist/esm/utils/index.js +9 -26
  327. package/package.json +10 -11
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const types_1 = require("@shapeshiftoss/types");
4
+ const monads_1 = require("@sniptt/monads");
5
+ const vitest_1 = require("vitest");
6
+ const types_2 = require("../../../types");
7
+ const assets_1 = require("../../../utils/test-data/assets");
8
+ const fetchFromZrx_1 = require("../utils/fetchFromZrx");
9
+ const getZrxTradeQuote_1 = require("./getZrxTradeQuote");
10
+ vitest_1.vi.mock('../utils/fetchFromZrx', () => ({ fetchZrxQuote: vitest_1.vi.fn() }));
11
+ vitest_1.vi.mock('../utils/getZrxStepData', () => ({
12
+ getZrxStepData: vitest_1.vi.fn(({ permit2Eip712 }) => Promise.resolve((0, monads_1.Ok)({
13
+ transactionData: {
14
+ type: 'evm',
15
+ chainId: 1,
16
+ to: '0x1111111111111111111111111111111111111111',
17
+ data: '0x1234',
18
+ value: '0',
19
+ ...(permit2Eip712 && {
20
+ signatureRequired: { type: 'permit2', eip712: permit2Eip712 },
21
+ }),
22
+ },
23
+ networkFeeCryptoBaseUnit: '100000',
24
+ }))),
25
+ }));
26
+ const input = {
27
+ sellAsset: assets_1.WETH,
28
+ buyAsset: assets_1.USDC_MAINNET,
29
+ sellAmountIncludingProtocolFeesCryptoBaseUnit: '1000000000000000000',
30
+ sendAddress: '0x1111111111111111111111111111111111111111',
31
+ receiveAddress: '0x1111111111111111111111111111111111111111',
32
+ accountNumber: 0,
33
+ affiliateBps: '0',
34
+ allowMultiHop: false,
35
+ quoteOrRate: 'quote',
36
+ chainId: types_1.KnownChainIds.EthereumMainnet,
37
+ supportsEIP1559: true,
38
+ };
39
+ const deps = {
40
+ assetsById: {},
41
+ config: { VITE_ZRX_BASE_URL: 'https://example.com' },
42
+ };
43
+ const typedData = (deadline) => ({
44
+ domain: { name: 'Permit2', chainId: 1 },
45
+ types: { PermitTransferFrom: [{ name: 'deadline', type: 'uint256' }] },
46
+ primaryType: 'PermitTransferFrom',
47
+ message: { deadline },
48
+ });
49
+ // Live Settler calldata for an ETH -> USDC sell, NATIVE_CHECK deadline 1791997786
50
+ const nativeSellCalldata = '0x1fff991f000000000000000000000000ea8eb5ba11a3ea66f417ae29abf70c6fb4ba9626000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000000e750ef800000000000000000000000000000000000000000000000000000000000000a0939d83c32b72441d72643cf60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000003600000000000000000000000000000000000000000000000000000000000000044bd01c226000000000000000000000000000000000000000000000000000000006acfb75a000000000000000000000000000000000000000000000000016345785d8a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010438c9c147000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee00000000000000000000000000000000000000000000000000000000000f4240000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000024d0e30db00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e48d68a156000000000000000000000000666fedd4cdd4e890a5ad20e7b60975409435a64a00000000000000000000000000000000000000000000000000000000000f4240000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040c02aaa39b223fe8d0a0e5c4f27ead9083c756cc201000064fffd8963efd1fc6a506488495d951d5263988d25a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008434ee90ca000000000000000000000000f5c4f3dc02c3fb9279495a8fef7b0741da956157000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000000e9a9ab900000000000000000000000000000000000000000000000000000000000f424000000000000000000000000000000000000000000000000000000000';
51
+ const quoteResponse = (eip712, data = '0x1234') => ({
52
+ blockNumber: '1',
53
+ buyAmount: '1000000',
54
+ buyToken: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',
55
+ sellAmount: input.sellAmountIncludingProtocolFeesCryptoBaseUnit,
56
+ sellToken: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
57
+ fees: { integratorFee: null, zeroExFee: null, gasFee: null },
58
+ issues: { allowance: null, balance: null, simulationIncomplete: false, invalidSourcesPassed: [] },
59
+ liquidityAvailable: true,
60
+ minBuyAmount: '990000',
61
+ route: { fills: [], tokens: [] },
62
+ tokenMetadata: {
63
+ buyToken: { buyTaxBps: null, sellTaxBps: null },
64
+ sellToken: { buyTaxBps: null, sellTaxBps: null },
65
+ },
66
+ totalNetworkFee: null,
67
+ zid: 'test',
68
+ permit2: eip712 ? { type: 'Permit2', hash: '0x1234', eip712 } : null,
69
+ transaction: {
70
+ to: '0x1111111111111111111111111111111111111111',
71
+ data,
72
+ gas: '100000',
73
+ gasPrice: '1000000000',
74
+ value: '0',
75
+ },
76
+ });
77
+ (0, vitest_1.describe)('getZrxTradeQuote Permit2 deadline', () => {
78
+ (0, vitest_1.beforeEach)(() => {
79
+ vitest_1.vi.mocked(fetchFromZrx_1.fetchZrxQuote).mockResolvedValue((0, monads_1.Ok)(quoteResponse(typedData('1791934983'))));
80
+ });
81
+ vitest_1.it.each(['1791934983', 1791934983])('uses the provider deadline in milliseconds (%s)', async (deadline) => {
82
+ const eip712 = typedData(deadline);
83
+ vitest_1.vi.mocked(fetchFromZrx_1.fetchZrxQuote).mockResolvedValue((0, monads_1.Ok)(quoteResponse(eip712)));
84
+ const result = await (0, getZrxTradeQuote_1.getZrxTradeQuote)(input, deps);
85
+ (0, vitest_1.expect)(result.isOk()).toBe(true);
86
+ const [quote] = result.unwrap();
87
+ (0, vitest_1.expect)(quote.deadline).toBe(1791934983000);
88
+ (0, vitest_1.expect)(quote.steps[0].transactionData).toMatchObject({
89
+ signatureRequired: { eip712 },
90
+ });
91
+ });
92
+ vitest_1.it.each([undefined, null, true, '', 'invalid', '-1', '1.5', '9007199254740991'])('rejects an invalid Permit2 deadline (%s)', async (deadline) => {
93
+ vitest_1.vi.mocked(fetchFromZrx_1.fetchZrxQuote).mockResolvedValue((0, monads_1.Ok)(quoteResponse(typedData(deadline))));
94
+ const result = await (0, getZrxTradeQuote_1.getZrxTradeQuote)(input, deps);
95
+ (0, vitest_1.expect)(result.isErr()).toBe(true);
96
+ (0, vitest_1.expect)(result.unwrapErr().code).toBe(types_2.TradeQuoteError.InvalidResponse);
97
+ });
98
+ (0, vitest_1.it)('reads the NATIVE_CHECK deadline from native-token sell calldata', async () => {
99
+ vitest_1.vi.mocked(fetchFromZrx_1.fetchZrxQuote).mockResolvedValue((0, monads_1.Ok)(quoteResponse(null, nativeSellCalldata)));
100
+ const result = await (0, getZrxTradeQuote_1.getZrxTradeQuote)({ ...input, sellAsset: assets_1.ETH }, deps);
101
+ (0, vitest_1.expect)(result.isOk()).toBe(true);
102
+ (0, vitest_1.expect)(result.unwrap()[0].deadline).toBe(1791997786000);
103
+ });
104
+ (0, vitest_1.it)('leaves native-token quotes without a NATIVE_CHECK action free of a fabricated deadline', async () => {
105
+ vitest_1.vi.mocked(fetchFromZrx_1.fetchZrxQuote).mockResolvedValue((0, monads_1.Ok)(quoteResponse(null)));
106
+ const result = await (0, getZrxTradeQuote_1.getZrxTradeQuote)({ ...input, sellAsset: assets_1.ETH }, deps);
107
+ (0, vitest_1.expect)(result.isOk()).toBe(true);
108
+ (0, vitest_1.expect)(result.unwrap()[0].deadline).toBeUndefined();
109
+ });
110
+ });
@@ -1,5 +1,6 @@
1
1
  import { KnownChainIds } from '@shapeshiftoss/types';
2
- import type { Address, TypedData } from 'viem';
2
+ import type { TypedData } from 'eip-712';
3
+ import type { Address } from 'viem';
3
4
  import type { GetEvmTradeQuoteInput, GetEvmTradeRateInput } from '../../types';
4
5
  export type ZrxTradeQuoteInput = GetEvmTradeQuoteInput;
5
6
  export type ZrxTradeRateInput = GetEvmTradeRateInput;
@@ -0,0 +1 @@
1
+ export declare const getZrxNativeCheckDeadline: (data: string) => number | undefined;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getZrxNativeCheckDeadline = void 0;
4
+ const viem_1 = require("viem");
5
+ const settlerAbi = (0, viem_1.parseAbi)([
6
+ 'function execute((address recipient, address buyToken, uint256 minAmountOut) slippage, bytes[] actions, bytes32 zid)',
7
+ 'function NATIVE_CHECK(uint256 deadline, uint256 msgValue)',
8
+ ]);
9
+ const NATIVE_CHECK_SELECTOR = (0, viem_1.toFunctionSelector)('function NATIVE_CHECK(uint256,uint256)');
10
+ // Native sells carry no Permit2, but Settler reverts with SignatureExpired past any NATIVE_CHECK deadline
11
+ const getZrxNativeCheckDeadline = (data) => {
12
+ try {
13
+ const { functionName, args } = (0, viem_1.decodeFunctionData)({ abi: settlerAbi, data: data });
14
+ if (functionName !== 'execute')
15
+ return undefined;
16
+ const deadlines = args[1]
17
+ .filter(action => action.startsWith(NATIVE_CHECK_SELECTOR))
18
+ .map(action => (0, viem_1.decodeFunctionData)({ abi: settlerAbi, data: action }))
19
+ .flatMap(decoded => decoded.functionName === 'NATIVE_CHECK' ? [Number(decoded.args[0])] : []);
20
+ return deadlines.length ? Math.min(...deadlines) : undefined;
21
+ }
22
+ catch {
23
+ return undefined;
24
+ }
25
+ };
26
+ exports.getZrxNativeCheckDeadline = getZrxNativeCheckDeadline;
@@ -5,10 +5,12 @@ export type GetZrxStepDataArgs = StepDataArgs<unknown, {
5
5
  totalNetworkFee: string | null;
6
6
  }, {
7
7
  transaction: ZrxQuoteResponse['transaction'];
8
+ totalNetworkFee: string | null;
9
+ sellAmountCryptoBaseUnit: string;
8
10
  permit2Eip712: NonNullable<ZrxQuoteResponse['permit2']>['eip712'] | undefined;
9
11
  }>;
10
12
  type ZrxRateStepData = {
11
- networkFeeCryptoBaseUnit: string;
13
+ networkFeeCryptoBaseUnit: string | undefined;
12
14
  };
13
15
  type ZrxQuoteStepData = {
14
16
  transactionData: TxBuildData;
@@ -7,21 +7,22 @@ const monads_1 = require("@sniptt/monads");
7
7
  const utils_2 = require("../../../utils");
8
8
  const evm_1 = require("../../../utils/evm");
9
9
  async function getZrxStepData(args) {
10
+ // 0x's total includes the L1 data fee on OP-stack chains, which pricing their gas limit would drop
10
11
  if (args.type === 'rate') {
11
12
  const stepData = {
12
- networkFeeCryptoBaseUnit: (0, utils_1.bnOrZero)(args.totalNetworkFee).toFixed(),
13
+ networkFeeCryptoBaseUnit: args.totalNetworkFee ?? undefined,
13
14
  };
14
15
  return (0, monads_1.Ok)(stepData);
15
16
  }
16
- const { sellAsset, transaction, permit2Eip712, from, input, deps } = args;
17
+ const { sellAsset, sellAmountCryptoBaseUnit, transaction, totalNetworkFee, permit2Eip712, from, input, deps, } = args;
18
+ const adapter = deps.assertGetEvmChainAdapter(sellAsset.chainId);
19
+ const supportsEIP1559 = 'supportsEIP1559' in input ? input.supportsEIP1559 : false;
17
20
  const transactionData = {
18
21
  type: 'evm',
19
22
  chainId: Number((0, caip_1.fromChainId)(sellAsset.chainId).chainReference),
20
23
  to: transaction.to,
21
24
  data: transaction.data,
22
25
  value: transaction.value,
23
- // 0x simulate with a valid permit2 signature, which can't be reproduced before signing, so trust their gas limit
24
- gasLimit: transaction.gas || undefined,
25
26
  ...(permit2Eip712 && {
26
27
  signatureRequired: {
27
28
  type: 'permit2',
@@ -30,12 +31,30 @@ async function getZrxStepData(args) {
30
31
  }),
31
32
  };
32
33
  try {
33
- const networkFeeCryptoBaseUnit = await (0, evm_1.getEvmNetworkFeeCryptoBaseUnit)({
34
- adapter: deps.assertGetEvmChainAdapter(sellAsset.chainId),
35
- transactionData,
36
- from,
37
- supportsEIP1559: 'supportsEIP1559' in input ? input.supportsEIP1559 : false,
38
- });
34
+ const networkFeeCryptoBaseUnit = await (async () => {
35
+ // Permit2 calldata needs the signature, so it can't be simulated before signing
36
+ if (permit2Eip712) {
37
+ if (!(0, evm_1.isPositiveGasLimit)(transaction.gas))
38
+ throw new Error('missing 0x gas limit');
39
+ transactionData.gasLimit = (0, evm_1.bufferGasLimit)(transaction.gas);
40
+ // 0x's total is their gas cost plus the L1 data fee on OP-stack chains
41
+ const l1FeeCryptoBaseUnit = utils_1.BigNumber.max((0, utils_1.bnOrZero)(totalNetworkFee).minus((0, utils_1.bnOrZero)(transaction.gas).times(transaction.gasPrice)), 0);
42
+ const networkFeeCryptoBaseUnit = await (0, evm_1.getEvmNetworkFeeCryptoBaseUnit)({
43
+ adapter,
44
+ supportsEIP1559,
45
+ gasLimit: transactionData.gasLimit,
46
+ });
47
+ return (0, utils_1.bnOrZero)(networkFeeCryptoBaseUnit).plus(l1FeeCryptoBaseUnit).toFixed(0);
48
+ }
49
+ return (0, evm_1.getEvmNetworkFeeCryptoBaseUnit)({
50
+ adapter,
51
+ transactionData,
52
+ from,
53
+ supportsEIP1559,
54
+ stateOverride: { sellAsset, sellAmountCryptoBaseUnit },
55
+ providerGasLimit: transaction.gas,
56
+ });
57
+ })();
39
58
  const stepData = { transactionData, networkFeeCryptoBaseUnit };
40
59
  return (0, monads_1.Ok)(stepData);
41
60
  }
@@ -1,7 +1,7 @@
1
1
  import type { AccountId, AssetId, ChainId } from '@shapeshiftoss/caip';
2
- import type { ChainAdapter, CosmosSdkChainAdapter, EvmChainAdapter, near, SignTx, solana, starknet, sui, ton, tron, UtxoChainAdapter } from '@shapeshiftoss/chain-adapters';
3
- import type { HDWallet, SolanaSignTx, StarknetSignTx, SuiSignTx } from '@shapeshiftoss/hdwallet-core';
4
- import type { Asset, AssetsByIdPartial, CosmosSdkChainId, EvmChainId, KnownChainIds, NearChainId, OrderCreation, PartialRecord, SolanaChainId, StarknetChainId, SuiChainId, TonChainId, TronChainId, UtxoAccountType, UtxoChainId } from '@shapeshiftoss/types';
2
+ import type { aptos, ChainAdapter, CosmosSdkChainAdapter, EvmChainAdapter, near, SignTx, solana, starknet, sui, ton, tron, UtxoChainAdapter } from '@shapeshiftoss/chain-adapters';
3
+ import type { AptosSignTx, HDWallet, SolanaSignTx, StarknetSignTx, SuiSignTx } from '@shapeshiftoss/hdwallet-core';
4
+ import type { AptosChainId, Asset, AssetsByIdPartial, CosmosSdkChainId, EvmChainId, KnownChainIds, NearChainId, OrderCreation, PartialRecord, SolanaChainId, StarknetChainId, SuiChainId, TonChainId, TronChainId, UtxoAccountType, UtxoChainId } from '@shapeshiftoss/types';
5
5
  import type { TxStatus } from '@shapeshiftoss/unchained-client';
6
6
  import type { Result } from '@sniptt/monads';
7
7
  import type { TransactionInstruction } from '@solana/web3.js';
@@ -43,6 +43,8 @@ export type SwapperConfig = {
43
43
  VITE_COWSWAP_BASE_URL: string;
44
44
  VITE_PORTALS_BASE_URL: string;
45
45
  VITE_ZRX_BASE_URL: string;
46
+ VITE_FYND_BASE_URL: string;
47
+ VITE_KYBER_BASE_URL: string;
46
48
  VITE_CHAINFLIP_API_KEY: string;
47
49
  VITE_CHAINFLIP_API_URL: string;
48
50
  VITE_FEATURE_CHAINFLIP_SWAP_DCA: boolean;
@@ -56,6 +58,7 @@ export type SwapperConfig = {
56
58
  VITE_ACROSS_API_KEY: string;
57
59
  VITE_DEBRIDGE_API_URL: string;
58
60
  VITE_BOB_GATEWAY_API_KEY: string;
61
+ VITE_SYMBIOSIS_API_URL: string;
59
62
  };
60
63
  export declare enum SwapperName {
61
64
  Thorchain = "THORChain",
@@ -76,7 +79,10 @@ export declare enum SwapperName {
76
79
  Stonfi = "STON.fi",
77
80
  Across = "Across",
78
81
  Debridge = "deBridge",
79
- BobGateway = "BOB Gateway"
82
+ BobGateway = "BOB Gateway",
83
+ Symbiosis = "Symbiosis",
84
+ Fynd = "Fynd",
85
+ KyberSwap = "KyberSwap"
80
86
  }
81
87
  export type SwapSource = SwapperName | `${SwapperName} • ${string}`;
82
88
  export type SwapErrorRight = {
@@ -178,6 +184,12 @@ export type GetTonTradeQuoteInput = CommonTradeQuoteInput & {
178
184
  export type GetTonTradeRateInput = CommonTradeRateInput & {
179
185
  chainId: TonChainId;
180
186
  };
187
+ export type GetAptosTradeQuoteInput = CommonTradeQuoteInput & {
188
+ chainId: AptosChainId;
189
+ };
190
+ export type GetAptosTradeRateInput = CommonTradeRateInput & {
191
+ chainId: AptosChainId;
192
+ };
181
193
  export type GetSolanaTradeQuoteInput = CommonTradeQuoteInput & {
182
194
  chainId: SolanaChainId;
183
195
  };
@@ -209,8 +221,8 @@ export type GetUtxoTradeRateInput = CommonTradeRateInput & {
209
221
  xpub: string | undefined;
210
222
  };
211
223
  export type GetUtxoTradeQuoteInput = GetUtxoTradeQuoteWithWallet;
212
- export type GetTradeQuoteInput = GetUtxoTradeQuoteInput | GetEvmTradeQuoteInput | GetCosmosSdkTradeQuoteInput | GetTronTradeQuoteInput | GetNearTradeQuoteInput | GetTonTradeQuoteInput | GetSolanaTradeQuoteInput | GetStarknetTradeQuoteInput | GetSuiTradeQuoteInput;
213
- export type GetTradeRateInput = GetEvmTradeRateInput | GetCosmosSdkTradeRateInput | GetUtxoTradeRateInput | GetTronTradeRateInput | GetNearTradeRateInput | GetTonTradeRateInput | GetSolanaTradeRateInput | GetStarknetTradeRateInput | GetSuiTradeRateInput;
224
+ export type GetTradeQuoteInput = GetUtxoTradeQuoteInput | GetEvmTradeQuoteInput | GetCosmosSdkTradeQuoteInput | GetTronTradeQuoteInput | GetNearTradeQuoteInput | GetTonTradeQuoteInput | GetSolanaTradeQuoteInput | GetStarknetTradeQuoteInput | GetSuiTradeQuoteInput | GetAptosTradeQuoteInput;
225
+ export type GetTradeRateInput = GetEvmTradeRateInput | GetCosmosSdkTradeRateInput | GetUtxoTradeRateInput | GetTronTradeRateInput | GetNearTradeRateInput | GetTonTradeRateInput | GetSolanaTradeRateInput | GetStarknetTradeRateInput | GetSuiTradeRateInput | GetAptosTradeRateInput;
214
226
  export type WithExactBuyAmount<T extends {
215
227
  sellAmountIncludingProtocolFeesCryptoBaseUnit: string;
216
228
  }> = T extends unknown ? Omit<T, 'sellAmountIncludingProtocolFeesCryptoBaseUnit'> & {
@@ -265,12 +277,15 @@ export type StarknetSwapperDeps = {
265
277
  export type TonSwapperDeps = {
266
278
  assertGetTonChainAdapter: (chainId: ChainId) => ton.ChainAdapter;
267
279
  };
280
+ export type AptosSwapperDeps = {
281
+ assertGetAptosChainAdapter: (chainId: ChainId) => aptos.ChainAdapter;
282
+ };
268
283
  export type SwapperDeps = {
269
284
  assetsById: AssetsByIdPartial;
270
285
  config: SwapperConfig;
271
286
  mixPanel: Mixpanel | undefined;
272
287
  assertGetChainAdapter: (chainId: ChainId) => ChainAdapter<KnownChainIds>;
273
- } & EvmSwapperDeps & UtxoSwapperDeps & CosmosSdkSwapperDeps & SolanaSwapperDeps & TronSwapperDeps & SuiSwapperDeps & NearSwapperDeps & StarknetSwapperDeps & TonSwapperDeps;
288
+ } & EvmSwapperDeps & UtxoSwapperDeps & CosmosSdkSwapperDeps & SolanaSwapperDeps & TronSwapperDeps & SuiSwapperDeps & NearSwapperDeps & StarknetSwapperDeps & TonSwapperDeps & AptosSwapperDeps;
274
289
  export type AffiliateFee = {
275
290
  assetId: AssetId;
276
291
  amountCryptoBaseUnit: string;
@@ -324,6 +339,11 @@ export type TxBuildData = {
324
339
  value: string;
325
340
  data?: string;
326
341
  memo?: string;
342
+ } | {
343
+ type: 'aptos';
344
+ payload: string;
345
+ gasUnitPrice: string;
346
+ maxGasAmount: string;
327
347
  } | {
328
348
  type: 'cowswap';
329
349
  chainId: ChainId;
@@ -343,9 +363,6 @@ export type TradeStepCommon = {
343
363
  estimatedExecutionTimeMs: number | undefined;
344
364
  swapperMetadata?: SwapperMetadata;
345
365
  stonfiTransactionData?: StonfiTransactionData;
346
- chainflipSpecific?: {
347
- depositAddress?: string;
348
- };
349
366
  affiliateFee?: AffiliateFee;
350
367
  };
351
368
  export type TradeQuoteStep = TradeStepCommon & {
@@ -452,7 +469,7 @@ export type TradeQuote = TradeQuoteBase & {
452
469
  } & {
453
470
  quoteOrRate: 'quote';
454
471
  receiveAddress: string;
455
- deadline: number;
472
+ deadline?: number;
456
473
  };
457
474
  export type MultiHopTradeQuote = TradeQuote & {
458
475
  steps: MultiHopTradeQuoteSteps;
@@ -514,6 +531,9 @@ export type StarknetTransactionExecutionProps = {
514
531
  export type TonTransactionExecutionProps = {
515
532
  signAndBroadcastTransaction: (txToSign: ton.TonSignTx) => Promise<string>;
516
533
  };
534
+ export type AptosTransactionExecutionProps = {
535
+ signAndBroadcastTransaction: (txToSign: AptosSignTx) => Promise<string>;
536
+ };
517
537
  type EvmAccountMetadata = {
518
538
  from: string;
519
539
  };
@@ -531,6 +551,7 @@ type NearAccountMetadata = {
531
551
  };
532
552
  type StarknetAccountMetadata = {
533
553
  from: string;
554
+ callsOnly?: boolean;
534
555
  };
535
556
  type UtxoAccountMetadata = {
536
557
  senderAddress: string;
@@ -560,6 +581,10 @@ type TonAccountMetadata = {
560
581
  from: string;
561
582
  };
562
583
  export type GetUnsignedTonTransactionArgs = CommonGetUnsignedTransactionArgs & TonAccountMetadata & TonSwapperDeps;
584
+ type AptosAccountMetadata = {
585
+ from: string;
586
+ };
587
+ export type GetUnsignedAptosTransactionArgs = CommonGetUnsignedTransactionArgs & AptosAccountMetadata & AptosSwapperDeps;
563
588
  export type GetUnsignedEvmMessageArgs = CommonGetUnsignedTransactionArgs & EvmAccountMetadata & Omit<EvmSwapperDeps, 'fetchIsSmartContractAddressQuery'>;
564
589
  export type GetUnsignedSolanaMessageArgs = CommonGetUnsignedTransactionArgs;
565
590
  export type GetUnsignedUtxoTransactionArgs = CommonGetUnsignedTransactionArgs & UtxoAccountMetadata & UtxoSwapperDeps;
@@ -571,7 +596,7 @@ export type CheckTradeStatusInput = {
571
596
  stepIndex: SupportedTradeQuoteStepIndex;
572
597
  config: SwapperConfig;
573
598
  swap: Swap | undefined;
574
- } & EvmSwapperDeps & UtxoSwapperDeps & CosmosSdkSwapperDeps & SolanaSwapperDeps & TronSwapperDeps & SuiSwapperDeps & NearSwapperDeps & StarknetSwapperDeps & TonSwapperDeps;
599
+ } & EvmSwapperDeps & UtxoSwapperDeps & CosmosSdkSwapperDeps & SolanaSwapperDeps & TronSwapperDeps & SuiSwapperDeps & NearSwapperDeps & StarknetSwapperDeps & TonSwapperDeps & AptosSwapperDeps;
575
600
  export type TradeStatus = {
576
601
  status: TxStatus;
577
602
  buyTxHash: string | undefined;
@@ -597,6 +622,7 @@ export type Swapper = {
597
622
  executeNearTransaction?: (txToSign: near.NearSignTx, callbacks: NearTransactionExecutionProps) => Promise<string>;
598
623
  executeStarknetTransaction?: (txToSign: StarknetSignTx, callbacks: StarknetTransactionExecutionProps) => Promise<string>;
599
624
  executeTonTransaction?: (txToSign: ton.TonSignTx, callbacks: TonTransactionExecutionProps) => Promise<string>;
625
+ executeAptosTransaction?: (txToSign: AptosSignTx, callbacks: AptosTransactionExecutionProps) => Promise<string>;
600
626
  };
601
627
  export type SwapperApi = {
602
628
  checkTradeStatus: (input: CheckTradeStatusInput) => Promise<TradeStatus>;
@@ -615,6 +641,7 @@ export type SwapperApi = {
615
641
  getUnsignedNearTransaction?: (input: GetUnsignedNearTransactionArgs) => Promise<near.NearSignTx>;
616
642
  getUnsignedStarknetTransaction?: (input: GetUnsignedStarknetTransactionArgs) => Promise<StarknetSignTx>;
617
643
  getUnsignedTonTransaction?: (input: GetUnsignedTonTransactionArgs) => Promise<ton.TonSignTx>;
644
+ getUnsignedAptosTransaction?: (input: GetUnsignedAptosTransactionArgs) => Promise<AptosSignTx>;
618
645
  getEvmTransactionFees?: (input: GetUnsignedEvmTransactionArgs) => Promise<string>;
619
646
  getSolanaTransactionFees?: (input: GetUnsignedSolanaTransactionArgs) => Promise<string>;
620
647
  getSuiTransactionFees?: (input: GetUnsignedSuiTransactionArgs) => Promise<string>;
@@ -624,6 +651,7 @@ export type SwapperApi = {
624
651
  getNearTransactionFees?: (input: GetUnsignedNearTransactionArgs) => Promise<string>;
625
652
  getStarknetTransactionFees?: (input: GetUnsignedStarknetTransactionArgs) => Promise<string>;
626
653
  getTonTransactionFees?: (input: GetUnsignedTonTransactionArgs) => Promise<string>;
654
+ getAptosTransactionFees?: (input: GetUnsignedAptosTransactionArgs) => Promise<string>;
627
655
  };
628
656
  export type QuoteResult = Result<TradeQuote[], SwapErrorRight> & {
629
657
  swapperName: SwapperName;
@@ -652,6 +680,7 @@ export type SuiTransactionExecutionInput = CommonTradeExecutionInput & SuiTransa
652
680
  export type NearTransactionExecutionInput = CommonTradeExecutionInput & NearTransactionExecutionProps & NearAccountMetadata;
653
681
  export type StarknetTransactionExecutionInput = CommonTradeExecutionInput & StarknetTransactionExecutionProps & StarknetAccountMetadata;
654
682
  export type TonTransactionExecutionInput = CommonTradeExecutionInput & TonTransactionExecutionProps & TonAccountMetadata;
683
+ export type AptosTransactionExecutionInput = CommonTradeExecutionInput & AptosTransactionExecutionProps & AptosAccountMetadata;
655
684
  export declare enum TradeExecutionEvent {
656
685
  SellTxHash = "sellTxHash",
657
686
  Status = "status",
package/dist/cjs/types.js CHANGED
@@ -22,6 +22,9 @@ var SwapperName;
22
22
  SwapperName["Across"] = "Across";
23
23
  SwapperName["Debridge"] = "deBridge";
24
24
  SwapperName["BobGateway"] = "BOB Gateway";
25
+ SwapperName["Symbiosis"] = "Symbiosis";
26
+ SwapperName["Fynd"] = "Fynd";
27
+ SwapperName["KyberSwap"] = "KyberSwap";
25
28
  })(SwapperName || (exports.SwapperName = SwapperName = {}));
26
29
  var TradeQuoteError;
27
30
  (function (TradeQuoteError) {
@@ -0,0 +1,2 @@
1
+ export declare const APTOS_PLACEHOLDER_ADDRESS = "0x1";
2
+ export declare const APTOS_RATE_SIMULATION_VALUE = "1";
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.APTOS_RATE_SIMULATION_VALUE = exports.APTOS_PLACEHOLDER_ADDRESS = void 0;
4
+ // The aptos framework account usable as a sender stand-in for walletless rates
5
+ exports.APTOS_PLACEHOLDER_ADDRESS = '0x1';
6
+ // Rates only price the transfer, so the sender doesn't need to hold the sell amount
7
+ exports.APTOS_RATE_SIMULATION_VALUE = '1';
@@ -0,0 +1,2 @@
1
+ import type { GetUnsignedAptosTransactionArgs } from '../../types';
2
+ export declare const getAptosTransactionFees: ({ tradeQuote, stepIndex, }: Pick<GetUnsignedAptosTransactionArgs, 'tradeQuote' | 'stepIndex'>) => Promise<string>;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getAptosTransactionFees = void 0;
4
+ const utils_1 = require("../../utils");
5
+ const getAptosTransactionFees = ({ tradeQuote, stepIndex, }) => {
6
+ if (!(0, utils_1.isExecutableTradeQuote)(tradeQuote))
7
+ throw new Error('Unable to execute a trade rate quote');
8
+ const step = (0, utils_1.getExecutableTradeStep)(tradeQuote, stepIndex);
9
+ if (!step.feeData.networkFeeCryptoBaseUnit)
10
+ throw new Error('Missing network fee in quote');
11
+ return Promise.resolve(step.feeData.networkFeeCryptoBaseUnit);
12
+ };
13
+ exports.getAptosTransactionFees = getAptosTransactionFees;
@@ -0,0 +1,2 @@
1
+ import type { GetUnsignedAptosTransactionArgs } from '../../types';
2
+ export declare const getUnsignedAptosTransaction: ({ stepIndex, tradeQuote, from, assertGetAptosChainAdapter, }: GetUnsignedAptosTransactionArgs) => Promise<import("@shapeshiftoss/hdwallet-core").AptosSignTx>;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getUnsignedAptosTransaction = void 0;
4
+ const utils_1 = require("../../utils");
5
+ const getUnsignedAptosTransaction = ({ stepIndex, tradeQuote, from, assertGetAptosChainAdapter, }) => {
6
+ if (!(0, utils_1.isExecutableTradeQuote)(tradeQuote))
7
+ throw new Error('Unable to execute a trade rate');
8
+ const step = (0, utils_1.getExecutableTradeStep)(tradeQuote, stepIndex);
9
+ const { accountNumber, sellAsset, transactionData } = step;
10
+ if (transactionData?.type !== 'aptos')
11
+ throw new Error('Missing aptos transactionData');
12
+ const adapter = assertGetAptosChainAdapter(sellAsset.chainId);
13
+ const { payload, gasUnitPrice, maxGasAmount } = transactionData;
14
+ return adapter.buildCustomApiTx({ from, accountNumber, payload, gasUnitPrice, maxGasAmount });
15
+ };
16
+ exports.getUnsignedAptosTransaction = getUnsignedAptosTransaction;
@@ -0,0 +1,3 @@
1
+ export * from './constants';
2
+ export * from './getAptosTransactionFees';
3
+ export * from './getUnsignedAptosTransaction';
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./constants"), exports);
18
+ __exportStar(require("./getAptosTransactionFees"), exports);
19
+ __exportStar(require("./getUnsignedAptosTransaction"), exports);
@@ -1,22 +1,35 @@
1
1
  import type { EvmChainAdapter } from '@shapeshiftoss/chain-adapters';
2
2
  import type { Asset } from '@shapeshiftoss/types';
3
3
  import type { TxBuildData } from '../../types';
4
- type GetEvmNetworkFeeCryptoBaseUnitArgs = {
4
+ export declare const EVM_GAS_LIMIT_BUFFER = 1.2;
5
+ export declare const bufferGasLimit: (gasLimit: string) => string;
6
+ export declare const isPositiveGasLimit: (gasLimit: string | null | undefined) => gasLimit is string;
7
+ type EvmFeeArgs = {
5
8
  adapter: EvmChainAdapter;
6
9
  supportsEIP1559: boolean;
7
- } & ({
8
- gasLimit: string;
9
- } | {
10
+ };
11
+ type EvmSimulationArgs = {
10
12
  transactionData: Extract<TxBuildData, {
11
13
  type: 'evm';
12
14
  }>;
13
15
  from: string;
14
- gasLimitBuffer?: number;
15
16
  stateOverride?: {
16
17
  sellAsset: Asset;
17
18
  sellAmountCryptoBaseUnit: string;
18
19
  spenderAddress?: string;
19
20
  };
20
- });
21
+ };
22
+ type FixedGasLimitArgs = {
23
+ gasLimit: string;
24
+ };
25
+ type SimulatedGasLimitArgs = EvmSimulationArgs & {
26
+ providerGasLimit?: string | null;
27
+ };
28
+ type GetEvmNetworkFeeCryptoBaseUnitArgs = EvmFeeArgs & (FixedGasLimitArgs | SimulatedGasLimitArgs);
21
29
  export declare const getEvmNetworkFeeCryptoBaseUnit: (args: GetEvmNetworkFeeCryptoBaseUnitArgs) => Promise<string>;
30
+ type GetEvmRateNetworkFeeCryptoBaseUnitArgs = EvmFeeArgs & {
31
+ providerGasLimit: string | null | undefined;
32
+ simulation?: EvmSimulationArgs;
33
+ };
34
+ export declare const getEvmRateNetworkFeeCryptoBaseUnit: ({ providerGasLimit, simulation, ...feeArgs }: GetEvmRateNetworkFeeCryptoBaseUnitArgs) => Promise<string>;
22
35
  export {};
@@ -1,52 +1,62 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getEvmNetworkFeeCryptoBaseUnit = void 0;
3
+ exports.getEvmRateNetworkFeeCryptoBaseUnit = exports.getEvmNetworkFeeCryptoBaseUnit = exports.isPositiveGasLimit = exports.bufferGasLimit = exports.EVM_GAS_LIMIT_BUFFER = void 0;
4
4
  const chain_adapters_1 = require("@shapeshiftoss/chain-adapters");
5
5
  const utils_1 = require("@shapeshiftoss/utils");
6
6
  const stateOverride_1 = require("./stateOverride");
7
+ exports.EVM_GAS_LIMIT_BUFFER = 1.2;
8
+ const bufferGasLimit = (gasLimit) => (0, utils_1.bnOrZero)(gasLimit).times(exports.EVM_GAS_LIMIT_BUFFER).toFixed(0);
9
+ exports.bufferGasLimit = bufferGasLimit;
10
+ const isPositiveGasLimit = (gasLimit) => (0, utils_1.bnOrZero)(gasLimit).gt(0);
11
+ exports.isPositiveGasLimit = isPositiveGasLimit;
12
+ const priceGasLimit = async ({ adapter, supportsEIP1559 }, gasLimit) => {
13
+ const { average: gasPrices } = await adapter.getGasFeeData();
14
+ return chain_adapters_1.evm.calcNetworkFeeCryptoBaseUnit({ ...gasPrices, supportsEIP1559, gasLimit });
15
+ };
16
+ // Prices the buffered limit, since the signer must hold enough to cover the full limit
7
17
  const getEvmNetworkFeeCryptoBaseUnit = async (args) => {
8
18
  const { adapter, supportsEIP1559 } = args;
9
- // Price a provider gas limit with fresh gas prices - no on chain estimation
10
- const priceProviderGasLimit = async (gasLimit) => {
11
- const { average: gasPrices } = await adapter.getGasFeeData();
12
- return chain_adapters_1.evm.calcNetworkFeeCryptoBaseUnit({ ...gasPrices, supportsEIP1559, gasLimit });
13
- };
14
- // Rate network fee: the caller passed a provider gas limit directly
15
19
  if (!('transactionData' in args))
16
- return priceProviderGasLimit(args.gasLimit);
17
- const { transactionData, from, gasLimitBuffer = 1.2 } = args;
18
- // Executable quote: the provider supplied a gas limit on the tx data, price it as-is
19
- const providerGasLimit = transactionData.gasLimit;
20
- if (providerGasLimit && (0, utils_1.bnOrZero)(providerGasLimit).gt(0)) {
21
- return priceProviderGasLimit(providerGasLimit);
22
- }
20
+ return priceGasLimit(args, args.gasLimit);
21
+ const { transactionData, from, providerGasLimit } = args;
23
22
  const { to, data, value } = transactionData;
24
23
  if (args.stateOverride) {
25
24
  const { sellAsset, sellAmountCryptoBaseUnit, spenderAddress } = args.stateOverride;
26
- // Best effort - a timeout, undiscoverable slot, or an rpc without stateOverride support falls
27
- // through to plain estimation, which succeeds whenever the seller's state was sufficient anyway
28
- const overriddenGasLimit = await (0, stateOverride_1.withTimeout)((async () => {
29
- const overrideArgs = {
30
- sellAsset,
31
- sellAmountCryptoBaseUnit,
32
- from,
33
- spenderAddress,
34
- value,
35
- };
36
- const stateOverride = await (0, stateOverride_1.getMinimalStateOverride)(overrideArgs);
37
- if (!stateOverride)
25
+ const overrideArgs = { sellAsset, sellAmountCryptoBaseUnit, from, spenderAddress, value };
26
+ // null when the override can't be built (an undiscoverable storage slot or a failed read),
27
+ // undefined when nothing needs overriding or the simulation timed out
28
+ const overriddenGasLimit = await (0, stateOverride_1.withTimeout)((0, stateOverride_1.getMinimalStateOverride)(overrideArgs).then(stateOverride => stateOverride &&
29
+ (0, stateOverride_1.estimateGasWithStateOverride)({ ...overrideArgs, to, data, stateOverride }), () => null)).catch(error => {
30
+ // The missing state makes a plain estimate revert too, so only a timeout falls through to it
31
+ if (error instanceof stateOverride_1.EstimationTimeoutError)
38
32
  return undefined;
39
- return (0, stateOverride_1.estimateGasWithStateOverride)({ ...overrideArgs, to, data, stateOverride });
40
- })()).catch(() => undefined);
33
+ throw error;
34
+ });
35
+ if (overriddenGasLimit === null && (0, exports.isPositiveGasLimit)(providerGasLimit)) {
36
+ transactionData.gasLimit = (0, exports.bufferGasLimit)(providerGasLimit);
37
+ return priceGasLimit(args, transactionData.gasLimit);
38
+ }
41
39
  if (overriddenGasLimit) {
42
- transactionData.gasLimit = (0, utils_1.bnOrZero)(overriddenGasLimit).times(gasLimitBuffer).toFixed(0);
43
- return priceProviderGasLimit(overriddenGasLimit);
40
+ transactionData.gasLimit = (0, exports.bufferGasLimit)(overriddenGasLimit);
41
+ return priceGasLimit(args, transactionData.gasLimit);
44
42
  }
45
43
  }
46
- // Estimate on chain, then set the buffered limit on the tx data in place so the executable tx
47
- // always carries a gas limit
48
- const estimatedFees = await chain_adapters_1.evm.getFees({ adapter, data, to, value, from, supportsEIP1559 });
49
- transactionData.gasLimit = (0, utils_1.bnOrZero)(estimatedFees.gasLimit).times(gasLimitBuffer).toFixed(0);
50
- return estimatedFees.networkFeeCryptoBaseUnit;
44
+ const { average: { chainSpecific: feeData }, } = await adapter.getFeeData({ to, value, chainSpecific: { from, data } });
45
+ transactionData.gasLimit = (0, exports.bufferGasLimit)(feeData.gasLimit);
46
+ return chain_adapters_1.evm.calcNetworkFeeCryptoBaseUnit({
47
+ ...feeData,
48
+ supportsEIP1559,
49
+ gasLimit: transactionData.gasLimit,
50
+ });
51
51
  };
52
52
  exports.getEvmNetworkFeeCryptoBaseUnit = getEvmNetworkFeeCryptoBaseUnit;
53
+ // Rates price a provider's limit as given (it carries its own margin) and simulate without one
54
+ const getEvmRateNetworkFeeCryptoBaseUnit = ({ providerGasLimit, simulation, ...feeArgs }) => {
55
+ if ((0, exports.isPositiveGasLimit)(providerGasLimit)) {
56
+ return priceGasLimit(feeArgs, providerGasLimit);
57
+ }
58
+ if (simulation)
59
+ return (0, exports.getEvmNetworkFeeCryptoBaseUnit)({ ...feeArgs, ...simulation });
60
+ return Promise.reject(new Error('no gas limit to price'));
61
+ };
62
+ exports.getEvmRateNetworkFeeCryptoBaseUnit = getEvmRateNetworkFeeCryptoBaseUnit;