@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 @@
1
+ export declare const getZrxNativeCheckDeadline: (data: string) => number | undefined;
@@ -0,0 +1,22 @@
1
+ import { decodeFunctionData, parseAbi, toFunctionSelector } from 'viem';
2
+ const settlerAbi = parseAbi([
3
+ 'function execute((address recipient, address buyToken, uint256 minAmountOut) slippage, bytes[] actions, bytes32 zid)',
4
+ 'function NATIVE_CHECK(uint256 deadline, uint256 msgValue)',
5
+ ]);
6
+ const NATIVE_CHECK_SELECTOR = toFunctionSelector('function NATIVE_CHECK(uint256,uint256)');
7
+ // Native sells carry no Permit2, but Settler reverts with SignatureExpired past any NATIVE_CHECK deadline
8
+ export const getZrxNativeCheckDeadline = (data) => {
9
+ try {
10
+ const { functionName, args } = decodeFunctionData({ abi: settlerAbi, data: data });
11
+ if (functionName !== 'execute')
12
+ return undefined;
13
+ const deadlines = args[1]
14
+ .filter(action => action.startsWith(NATIVE_CHECK_SELECTOR))
15
+ .map(action => decodeFunctionData({ abi: settlerAbi, data: action }))
16
+ .flatMap(decoded => decoded.functionName === 'NATIVE_CHECK' ? [Number(decoded.args[0])] : []);
17
+ return deadlines.length ? Math.min(...deadlines) : undefined;
18
+ }
19
+ catch {
20
+ return undefined;
21
+ }
22
+ };
@@ -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;
@@ -1,24 +1,25 @@
1
1
  import { fromChainId } from '@shapeshiftoss/caip';
2
- import { bnOrZero } from '@shapeshiftoss/utils';
2
+ import { BigNumber, bnOrZero } from '@shapeshiftoss/utils';
3
3
  import { Err, Ok } from '@sniptt/monads';
4
4
  import { makeNetworkFeeEstimationFailedErr } from '../../../utils/index.js';
5
- import { getEvmNetworkFeeCryptoBaseUnit } from '../../../utils/evm/index.js';
5
+ import { bufferGasLimit, getEvmNetworkFeeCryptoBaseUnit, isPositiveGasLimit, } from '../../../utils/evm/index.js';
6
6
  export async function getZrxStepData(args) {
7
+ // 0x's total includes the L1 data fee on OP-stack chains, which pricing their gas limit would drop
7
8
  if (args.type === 'rate') {
8
9
  const stepData = {
9
- networkFeeCryptoBaseUnit: bnOrZero(args.totalNetworkFee).toFixed(),
10
+ networkFeeCryptoBaseUnit: args.totalNetworkFee ?? undefined,
10
11
  };
11
12
  return Ok(stepData);
12
13
  }
13
- const { sellAsset, transaction, permit2Eip712, from, input, deps } = args;
14
+ const { sellAsset, sellAmountCryptoBaseUnit, transaction, totalNetworkFee, permit2Eip712, from, input, deps, } = args;
15
+ const adapter = deps.assertGetEvmChainAdapter(sellAsset.chainId);
16
+ const supportsEIP1559 = 'supportsEIP1559' in input ? input.supportsEIP1559 : false;
14
17
  const transactionData = {
15
18
  type: 'evm',
16
19
  chainId: Number(fromChainId(sellAsset.chainId).chainReference),
17
20
  to: transaction.to,
18
21
  data: transaction.data,
19
22
  value: transaction.value,
20
- // 0x simulate with a valid permit2 signature, which can't be reproduced before signing, so trust their gas limit
21
- gasLimit: transaction.gas || undefined,
22
23
  ...(permit2Eip712 && {
23
24
  signatureRequired: {
24
25
  type: 'permit2',
@@ -27,12 +28,30 @@ export async function getZrxStepData(args) {
27
28
  }),
28
29
  };
29
30
  try {
30
- const networkFeeCryptoBaseUnit = await getEvmNetworkFeeCryptoBaseUnit({
31
- adapter: deps.assertGetEvmChainAdapter(sellAsset.chainId),
32
- transactionData,
33
- from,
34
- supportsEIP1559: 'supportsEIP1559' in input ? input.supportsEIP1559 : false,
35
- });
31
+ const networkFeeCryptoBaseUnit = await (async () => {
32
+ // Permit2 calldata needs the signature, so it can't be simulated before signing
33
+ if (permit2Eip712) {
34
+ if (!isPositiveGasLimit(transaction.gas))
35
+ throw new Error('missing 0x gas limit');
36
+ transactionData.gasLimit = bufferGasLimit(transaction.gas);
37
+ // 0x's total is their gas cost plus the L1 data fee on OP-stack chains
38
+ const l1FeeCryptoBaseUnit = BigNumber.max(bnOrZero(totalNetworkFee).minus(bnOrZero(transaction.gas).times(transaction.gasPrice)), 0);
39
+ const networkFeeCryptoBaseUnit = await getEvmNetworkFeeCryptoBaseUnit({
40
+ adapter,
41
+ supportsEIP1559,
42
+ gasLimit: transactionData.gasLimit,
43
+ });
44
+ return bnOrZero(networkFeeCryptoBaseUnit).plus(l1FeeCryptoBaseUnit).toFixed(0);
45
+ }
46
+ return getEvmNetworkFeeCryptoBaseUnit({
47
+ adapter,
48
+ transactionData,
49
+ from,
50
+ supportsEIP1559,
51
+ stateOverride: { sellAsset, sellAmountCryptoBaseUnit },
52
+ providerGasLimit: transaction.gas,
53
+ });
54
+ })();
36
55
  const stepData = { transactionData, networkFeeCryptoBaseUnit };
37
56
  return Ok(stepData);
38
57
  }
@@ -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/esm/types.js CHANGED
@@ -19,6 +19,9 @@ export var SwapperName;
19
19
  SwapperName["Across"] = "Across";
20
20
  SwapperName["Debridge"] = "deBridge";
21
21
  SwapperName["BobGateway"] = "BOB Gateway";
22
+ SwapperName["Symbiosis"] = "Symbiosis";
23
+ SwapperName["Fynd"] = "Fynd";
24
+ SwapperName["KyberSwap"] = "KyberSwap";
22
25
  })(SwapperName || (SwapperName = {}));
23
26
  export var TradeQuoteError;
24
27
  (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,4 @@
1
+ // The aptos framework account usable as a sender stand-in for walletless rates
2
+ export const APTOS_PLACEHOLDER_ADDRESS = '0x1';
3
+ // Rates only price the transfer, so the sender doesn't need to hold the sell amount
4
+ export const APTOS_RATE_SIMULATION_VALUE = '1';
@@ -0,0 +1,2 @@
1
+ import type { GetUnsignedAptosTransactionArgs } from '../../types.js';
2
+ export declare const getAptosTransactionFees: ({ tradeQuote, stepIndex, }: Pick<GetUnsignedAptosTransactionArgs, 'tradeQuote' | 'stepIndex'>) => Promise<string>;
@@ -0,0 +1,9 @@
1
+ import { getExecutableTradeStep, isExecutableTradeQuote } from '../../utils/index.js';
2
+ export const getAptosTransactionFees = ({ tradeQuote, stepIndex, }) => {
3
+ if (!isExecutableTradeQuote(tradeQuote))
4
+ throw new Error('Unable to execute a trade rate quote');
5
+ const step = getExecutableTradeStep(tradeQuote, stepIndex);
6
+ if (!step.feeData.networkFeeCryptoBaseUnit)
7
+ throw new Error('Missing network fee in quote');
8
+ return Promise.resolve(step.feeData.networkFeeCryptoBaseUnit);
9
+ };
@@ -0,0 +1,2 @@
1
+ import type { GetUnsignedAptosTransactionArgs } from '../../types.js';
2
+ export declare const getUnsignedAptosTransaction: ({ stepIndex, tradeQuote, from, assertGetAptosChainAdapter, }: GetUnsignedAptosTransactionArgs) => Promise<import("@shapeshiftoss/hdwallet-core").AptosSignTx>;
@@ -0,0 +1,12 @@
1
+ import { getExecutableTradeStep, isExecutableTradeQuote } from '../../utils/index.js';
2
+ export const getUnsignedAptosTransaction = ({ stepIndex, tradeQuote, from, assertGetAptosChainAdapter, }) => {
3
+ if (!isExecutableTradeQuote(tradeQuote))
4
+ throw new Error('Unable to execute a trade rate');
5
+ const step = getExecutableTradeStep(tradeQuote, stepIndex);
6
+ const { accountNumber, sellAsset, transactionData } = step;
7
+ if (transactionData?.type !== 'aptos')
8
+ throw new Error('Missing aptos transactionData');
9
+ const adapter = assertGetAptosChainAdapter(sellAsset.chainId);
10
+ const { payload, gasUnitPrice, maxGasAmount } = transactionData;
11
+ return adapter.buildCustomApiTx({ from, accountNumber, payload, gasUnitPrice, maxGasAmount });
12
+ };
@@ -0,0 +1,3 @@
1
+ export * from './constants.js';
2
+ export * from './getAptosTransactionFees.js';
3
+ export * from './getUnsignedAptosTransaction.js';
@@ -0,0 +1,3 @@
1
+ export * from './constants.js';
2
+ export * from './getAptosTransactionFees.js';
3
+ export * from './getUnsignedAptosTransaction.js';
@@ -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.js';
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,48 +1,55 @@
1
1
  import { evm } from '@shapeshiftoss/chain-adapters';
2
2
  import { bnOrZero } from '@shapeshiftoss/utils';
3
- import { estimateGasWithStateOverride, getMinimalStateOverride, withTimeout } from './stateOverride.js';
3
+ import { estimateGasWithStateOverride, EstimationTimeoutError, getMinimalStateOverride, withTimeout, } from './stateOverride.js';
4
+ export const EVM_GAS_LIMIT_BUFFER = 1.2;
5
+ export const bufferGasLimit = (gasLimit) => bnOrZero(gasLimit).times(EVM_GAS_LIMIT_BUFFER).toFixed(0);
6
+ export const isPositiveGasLimit = (gasLimit) => bnOrZero(gasLimit).gt(0);
7
+ const priceGasLimit = async ({ adapter, supportsEIP1559 }, gasLimit) => {
8
+ const { average: gasPrices } = await adapter.getGasFeeData();
9
+ return evm.calcNetworkFeeCryptoBaseUnit({ ...gasPrices, supportsEIP1559, gasLimit });
10
+ };
11
+ // Prices the buffered limit, since the signer must hold enough to cover the full limit
4
12
  export const getEvmNetworkFeeCryptoBaseUnit = async (args) => {
5
13
  const { adapter, supportsEIP1559 } = args;
6
- // Price a provider gas limit with fresh gas prices - no on chain estimation
7
- const priceProviderGasLimit = async (gasLimit) => {
8
- const { average: gasPrices } = await adapter.getGasFeeData();
9
- return evm.calcNetworkFeeCryptoBaseUnit({ ...gasPrices, supportsEIP1559, gasLimit });
10
- };
11
- // Rate network fee: the caller passed a provider gas limit directly
12
14
  if (!('transactionData' in args))
13
- return priceProviderGasLimit(args.gasLimit);
14
- const { transactionData, from, gasLimitBuffer = 1.2 } = args;
15
- // Executable quote: the provider supplied a gas limit on the tx data, price it as-is
16
- const providerGasLimit = transactionData.gasLimit;
17
- if (providerGasLimit && bnOrZero(providerGasLimit).gt(0)) {
18
- return priceProviderGasLimit(providerGasLimit);
19
- }
15
+ return priceGasLimit(args, args.gasLimit);
16
+ const { transactionData, from, providerGasLimit } = args;
20
17
  const { to, data, value } = transactionData;
21
18
  if (args.stateOverride) {
22
19
  const { sellAsset, sellAmountCryptoBaseUnit, spenderAddress } = args.stateOverride;
23
- // Best effort - a timeout, undiscoverable slot, or an rpc without stateOverride support falls
24
- // through to plain estimation, which succeeds whenever the seller's state was sufficient anyway
25
- const overriddenGasLimit = await withTimeout((async () => {
26
- const overrideArgs = {
27
- sellAsset,
28
- sellAmountCryptoBaseUnit,
29
- from,
30
- spenderAddress,
31
- value,
32
- };
33
- const stateOverride = await getMinimalStateOverride(overrideArgs);
34
- if (!stateOverride)
20
+ const overrideArgs = { sellAsset, sellAmountCryptoBaseUnit, from, spenderAddress, value };
21
+ // null when the override can't be built (an undiscoverable storage slot or a failed read),
22
+ // undefined when nothing needs overriding or the simulation timed out
23
+ const overriddenGasLimit = await withTimeout(getMinimalStateOverride(overrideArgs).then(stateOverride => stateOverride &&
24
+ estimateGasWithStateOverride({ ...overrideArgs, to, data, stateOverride }), () => null)).catch(error => {
25
+ // The missing state makes a plain estimate revert too, so only a timeout falls through to it
26
+ if (error instanceof EstimationTimeoutError)
35
27
  return undefined;
36
- return estimateGasWithStateOverride({ ...overrideArgs, to, data, stateOverride });
37
- })()).catch(() => undefined);
28
+ throw error;
29
+ });
30
+ if (overriddenGasLimit === null && isPositiveGasLimit(providerGasLimit)) {
31
+ transactionData.gasLimit = bufferGasLimit(providerGasLimit);
32
+ return priceGasLimit(args, transactionData.gasLimit);
33
+ }
38
34
  if (overriddenGasLimit) {
39
- transactionData.gasLimit = bnOrZero(overriddenGasLimit).times(gasLimitBuffer).toFixed(0);
40
- return priceProviderGasLimit(overriddenGasLimit);
35
+ transactionData.gasLimit = bufferGasLimit(overriddenGasLimit);
36
+ return priceGasLimit(args, transactionData.gasLimit);
41
37
  }
42
38
  }
43
- // Estimate on chain, then set the buffered limit on the tx data in place so the executable tx
44
- // always carries a gas limit
45
- const estimatedFees = await evm.getFees({ adapter, data, to, value, from, supportsEIP1559 });
46
- transactionData.gasLimit = bnOrZero(estimatedFees.gasLimit).times(gasLimitBuffer).toFixed(0);
47
- return estimatedFees.networkFeeCryptoBaseUnit;
39
+ const { average: { chainSpecific: feeData }, } = await adapter.getFeeData({ to, value, chainSpecific: { from, data } });
40
+ transactionData.gasLimit = bufferGasLimit(feeData.gasLimit);
41
+ return evm.calcNetworkFeeCryptoBaseUnit({
42
+ ...feeData,
43
+ supportsEIP1559,
44
+ gasLimit: transactionData.gasLimit,
45
+ });
46
+ };
47
+ // Rates price a provider's limit as given (it carries its own margin) and simulate without one
48
+ export const getEvmRateNetworkFeeCryptoBaseUnit = ({ providerGasLimit, simulation, ...feeArgs }) => {
49
+ if (isPositiveGasLimit(providerGasLimit)) {
50
+ return priceGasLimit(feeArgs, providerGasLimit);
51
+ }
52
+ if (simulation)
53
+ return getEvmNetworkFeeCryptoBaseUnit({ ...feeArgs, ...simulation });
54
+ return Promise.reject(new Error('no gas limit to price'));
48
55
  };
@@ -0,0 +1,101 @@
1
+ import { beforeEach, describe, expect, it, vi } from 'vitest';
2
+ import { getEvmNetworkFeeCryptoBaseUnit, getEvmRateNetworkFeeCryptoBaseUnit, } from './getEvmNetworkFeeCryptoBaseUnit.js';
3
+ import { estimateGasWithStateOverride, EstimationTimeoutError, getMinimalStateOverride, } from './stateOverride.js';
4
+ vi.mock('./stateOverride', async (importActual) => ({
5
+ ...(await importActual()),
6
+ getMinimalStateOverride: vi.fn(),
7
+ estimateGasWithStateOverride: vi.fn(),
8
+ }));
9
+ const gasFees = { gasPrice: '10' };
10
+ const makeTransactionData = () => ({ type: 'evm', to: '0x1', data: '0x', value: '0' });
11
+ const makeArgs = (adapter) => ({
12
+ adapter: adapter,
13
+ supportsEIP1559: false,
14
+ transactionData: makeTransactionData(),
15
+ from: '0x0000000000000000000000000000000000000001',
16
+ stateOverride: { sellAsset: {}, sellAmountCryptoBaseUnit: '1' },
17
+ });
18
+ describe('getEvmNetworkFeeCryptoBaseUnit state override', () => {
19
+ beforeEach(() => {
20
+ vi.mocked(getMinimalStateOverride).mockReset();
21
+ vi.mocked(estimateGasWithStateOverride).mockReset();
22
+ });
23
+ it('buffers the override gas limit onto the tx and prices the buffered limit', async () => {
24
+ vi.mocked(getMinimalStateOverride).mockResolvedValue([]);
25
+ vi.mocked(estimateGasWithStateOverride).mockResolvedValue('200');
26
+ const args = makeArgs({ getGasFeeData: vi.fn().mockResolvedValue({ average: gasFees }) });
27
+ await expect(getEvmNetworkFeeCryptoBaseUnit(args)).resolves.toBe('2400');
28
+ expect(args.transactionData.gasLimit).toBe('240');
29
+ });
30
+ it('falls back to plain estimation when the override simulation times out', async () => {
31
+ vi.mocked(getMinimalStateOverride).mockResolvedValue([]);
32
+ vi.mocked(estimateGasWithStateOverride).mockRejectedValue(new EstimationTimeoutError());
33
+ const getFeeData = vi.fn().mockResolvedValue({
34
+ average: { chainSpecific: { gasLimit: '100', ...gasFees } },
35
+ });
36
+ const args = makeArgs({
37
+ getGasFeeData: vi.fn().mockResolvedValue({ average: gasFees }),
38
+ getFeeData,
39
+ });
40
+ await expect(getEvmNetworkFeeCryptoBaseUnit(args)).resolves.toBe('1200');
41
+ expect(args.transactionData.gasLimit).toBe('120');
42
+ });
43
+ it('estimates over a provider gas limit already set on the tx', async () => {
44
+ vi.mocked(getMinimalStateOverride).mockResolvedValue([]);
45
+ vi.mocked(estimateGasWithStateOverride).mockResolvedValue('200');
46
+ const args = makeArgs({ getGasFeeData: vi.fn().mockResolvedValue({ average: gasFees }) });
47
+ args.transactionData.gasLimit = '150';
48
+ await expect(getEvmNetworkFeeCryptoBaseUnit(args)).resolves.toBe('2400');
49
+ expect(args.transactionData.gasLimit).toBe('240');
50
+ });
51
+ it('signs the buffered provider limit when the needed override cannot be built', async () => {
52
+ vi.mocked(getMinimalStateOverride).mockRejectedValue(new Error('Unable to locate allowance slot'));
53
+ const args = {
54
+ ...makeArgs({ getGasFeeData: vi.fn().mockResolvedValue({ average: gasFees }) }),
55
+ providerGasLimit: '300',
56
+ };
57
+ await expect(getEvmNetworkFeeCryptoBaseUnit(args)).resolves.toBe('3600');
58
+ expect(args.transactionData.gasLimit).toBe('360');
59
+ expect(estimateGasWithStateOverride).not.toHaveBeenCalled();
60
+ });
61
+ it('fails rather than trusting the provider limit when the overridden simulation reverts', async () => {
62
+ vi.mocked(getMinimalStateOverride).mockResolvedValue([]);
63
+ vi.mocked(estimateGasWithStateOverride).mockRejectedValue(new Error('execution reverted'));
64
+ const getFeeData = vi.fn();
65
+ const args = {
66
+ ...makeArgs({ getGasFeeData: vi.fn().mockResolvedValue({ average: gasFees }), getFeeData }),
67
+ providerGasLimit: '300',
68
+ };
69
+ await expect(getEvmNetworkFeeCryptoBaseUnit(args)).rejects.toThrow('execution reverted');
70
+ expect(getFeeData).not.toHaveBeenCalled();
71
+ });
72
+ });
73
+ describe('getEvmRateNetworkFeeCryptoBaseUnit', () => {
74
+ beforeEach(() => {
75
+ vi.mocked(getMinimalStateOverride).mockReset();
76
+ vi.mocked(estimateGasWithStateOverride).mockReset();
77
+ });
78
+ it('prices the provider limit as given without simulating', async () => {
79
+ const { transactionData, from, stateOverride, ...feeArgs } = makeArgs({
80
+ getGasFeeData: vi.fn().mockResolvedValue({ average: gasFees }),
81
+ });
82
+ await expect(getEvmRateNetworkFeeCryptoBaseUnit({
83
+ ...feeArgs,
84
+ providerGasLimit: '300',
85
+ simulation: { transactionData, from, stateOverride },
86
+ })).resolves.toBe('3000');
87
+ expect(getMinimalStateOverride).not.toHaveBeenCalled();
88
+ });
89
+ it('simulates when the provider has no gas limit', async () => {
90
+ vi.mocked(getMinimalStateOverride).mockResolvedValue([]);
91
+ vi.mocked(estimateGasWithStateOverride).mockResolvedValue('200');
92
+ const { transactionData, from, stateOverride, ...feeArgs } = makeArgs({
93
+ getGasFeeData: vi.fn().mockResolvedValue({ average: gasFees }),
94
+ });
95
+ await expect(getEvmRateNetworkFeeCryptoBaseUnit({
96
+ ...feeArgs,
97
+ providerGasLimit: undefined,
98
+ simulation: { transactionData, from, stateOverride },
99
+ })).resolves.toBe('2400');
100
+ });
101
+ });
@@ -1,5 +1,8 @@
1
1
  import type { Asset } from '@shapeshiftoss/types';
2
2
  import type { StateOverride } from 'viem';
3
+ export declare class EstimationTimeoutError extends Error {
4
+ constructor();
5
+ }
3
6
  export declare const withTimeout: <T>(promise: Promise<T>) => Promise<T>;
4
7
  export type GetMinimalStateOverrideArgs = {
5
8
  sellAsset: Asset;
@@ -26,13 +26,18 @@ const discoveredSlots = new Map();
26
26
  const rawDiscoveredSlots = new Map();
27
27
  const failedSlotDiscoveries = new Map();
28
28
  const FAILED_DISCOVERY_TTL_MS = 60_000;
29
+ export class EstimationTimeoutError extends Error {
30
+ constructor() {
31
+ super('State override estimation timed out');
32
+ }
33
+ }
29
34
  export const withTimeout = async (promise) => {
30
35
  let timer;
31
36
  try {
32
37
  return await Promise.race([
33
38
  promise,
34
39
  new Promise((_, reject) => {
35
- timer = setTimeout(() => reject(new Error('State override estimation timed out')), ESTIMATION_TIMEOUT_MS);
40
+ timer = setTimeout(() => reject(new EstimationTimeoutError()), ESTIMATION_TIMEOUT_MS);
36
41
  }),
37
42
  ]);
38
43
  }
@@ -288,7 +293,7 @@ export const getMinimalStateOverride = async ({ sellAsset, sellAmountCryptoBaseU
288
293
  // only the missing state. Estimation runs on our own RPCs - the node applies the same engine over
289
294
  // the patched pre-state, so the only systematic delta is the unrealized allowance-decrement refund
290
295
  // (a few k gas high, conservative).
291
- export const estimateGasWithStateOverride = ({ to, data, stateOverride: prebuiltStateOverride, ...overrideArgs }) => withTimeout((async () => {
296
+ export const estimateGasWithStateOverride = async ({ to, data, stateOverride: prebuiltStateOverride, ...overrideArgs }) => {
292
297
  const client = assertGetViemClient(overrideArgs.sellAsset.chainId);
293
298
  const stateOverride = prebuiltStateOverride ?? (await getMinimalStateOverride(overrideArgs));
294
299
  const gasLimit = await client.estimateGas({
@@ -299,4 +304,4 @@ export const estimateGasWithStateOverride = ({ to, data, stateOverride: prebuilt
299
304
  ...(stateOverride ? { stateOverride } : {}),
300
305
  });
301
306
  return gasLimit.toString();
302
- })());
307
+ };