@paraswap/dex-lib 5.1.31 → 5.1.32

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 (298) hide show
  1. package/build/abi/pancakeswap-infinity/cl-pool-manager.json +80 -0
  2. package/build/dex/bebop/bebop.d.ts +1 -1
  3. package/build/dex/bebop/bebop.js +8 -8
  4. package/build/dex/bebop/bebop.js.map +1 -1
  5. package/build/dex/curve-v1/config.js +6 -0
  6. package/build/dex/curve-v1/config.js.map +1 -1
  7. package/build/dex/curve-v1/curve-v1.js +5 -0
  8. package/build/dex/curve-v1/curve-v1.js.map +1 -1
  9. package/build/dex/curve-v1/types.d.ts +1 -0
  10. package/build/dex/curve-v1/types.js.map +1 -1
  11. package/build/dex/fluid-dex/scripts/measure-calc-time.js +178 -0
  12. package/build/dex/fluid-dex/scripts/measure-calc-time.js.map +1 -0
  13. package/build/dex/hashflow/hashflow.d.ts +2 -2
  14. package/build/dex/hashflow/hashflow.js +18 -22
  15. package/build/dex/hashflow/hashflow.js.map +1 -1
  16. package/build/dex/uniswap-v4/api-go/compare-pricing.d.ts +1 -0
  17. package/build/dex/uniswap-v4/api-go/compare-pricing.js +187 -0
  18. package/build/dex/uniswap-v4/api-go/compare-pricing.js.map +1 -0
  19. package/build/dex/uniswap-v4/api-go/compare-states.d.ts +1 -0
  20. package/build/dex/uniswap-v4/api-go/compare-states.js +149 -0
  21. package/build/dex/uniswap-v4/api-go/compare-states.js.map +1 -0
  22. package/build/dex/uniswap-v4/api-go/fetch-pool-key.d.ts +0 -0
  23. package/build/dex/uniswap-v4/api-go/fetch-pool-key.js +140 -0
  24. package/build/dex/uniswap-v4/api-go/fetch-pool-key.js.map +1 -0
  25. package/build/executor/__test-utils__/snapshot-test-helpers.d.ts +10 -0
  26. package/build/executor/__test-utils__/snapshot-test-helpers.js +72 -0
  27. package/build/executor/__test-utils__/snapshot-test-helpers.js.map +1 -0
  28. package/build/executor/address-utils.d.ts +2 -0
  29. package/build/executor/address-utils.js +7 -0
  30. package/build/executor/address-utils.js.map +1 -0
  31. package/build/executor/approval.d.ts +9 -0
  32. package/build/executor/approval.js +29 -0
  33. package/build/executor/approval.js.map +1 -0
  34. package/build/executor/encoding-context.d.ts +4 -0
  35. package/build/executor/encoding-context.js +54 -0
  36. package/build/executor/encoding-context.js.map +1 -0
  37. package/build/executor/encoding-types.d.ts +75 -0
  38. package/build/{dex/quick-perps/types.js → executor/encoding-types.js} +1 -1
  39. package/build/executor/encoding-types.js.map +1 -0
  40. package/build/executor/factory.d.ts +4 -0
  41. package/build/executor/factory.js +23 -0
  42. package/build/executor/factory.js.map +1 -0
  43. package/build/executor/route-plan.d.ts +8 -0
  44. package/build/executor/route-plan.js +109 -0
  45. package/build/executor/route-plan.js.map +1 -0
  46. package/build/generic-swap-transaction-builder/dex-encoder/direct-methods.d.ts +6 -0
  47. package/build/generic-swap-transaction-builder/dex-encoder/direct-methods.js +39 -0
  48. package/build/generic-swap-transaction-builder/dex-encoder/direct-methods.js.map +1 -0
  49. package/build/generic-swap-transaction-builder/dex-encoder/index.d.ts +4 -0
  50. package/build/generic-swap-transaction-builder/dex-encoder/index.js +21 -0
  51. package/build/generic-swap-transaction-builder/dex-encoder/index.js.map +1 -0
  52. package/build/generic-swap-transaction-builder/dex-encoder/ports.d.ts +26 -0
  53. package/build/{dex/maker-psm/types.js → generic-swap-transaction-builder/dex-encoder/ports.js} +1 -1
  54. package/build/generic-swap-transaction-builder/dex-encoder/ports.js.map +1 -0
  55. package/build/generic-swap-transaction-builder/dex-encoder/ts-adapter.d.ts +22 -0
  56. package/build/generic-swap-transaction-builder/dex-encoder/ts-adapter.js +299 -0
  57. package/build/generic-swap-transaction-builder/dex-encoder/ts-adapter.js.map +1 -0
  58. package/build/generic-swap-transaction-builder/dex-encoder/types.d.ts +207 -0
  59. package/build/generic-swap-transaction-builder/dex-encoder/types.js +194 -0
  60. package/build/generic-swap-transaction-builder/dex-encoder/types.js.map +1 -0
  61. package/build/generic-swap-transaction-builder/orchestration.d.ts +65 -0
  62. package/build/generic-swap-transaction-builder/orchestration.js +198 -0
  63. package/build/generic-swap-transaction-builder/orchestration.js.map +1 -0
  64. package/build/generic-swap-transaction-builder/resolved/build-transaction.d.ts +13 -0
  65. package/build/generic-swap-transaction-builder/resolved/build-transaction.js +343 -0
  66. package/build/generic-swap-transaction-builder/resolved/build-transaction.js.map +1 -0
  67. package/build/generic-swap-transaction-builder/resolved/index.d.ts +4 -0
  68. package/build/generic-swap-transaction-builder/resolved/index.js +21 -0
  69. package/build/generic-swap-transaction-builder/resolved/index.js.map +1 -0
  70. package/build/generic-swap-transaction-builder/resolved/route-plan.d.ts +2 -0
  71. package/build/generic-swap-transaction-builder/resolved/route-plan.js +11 -0
  72. package/build/generic-swap-transaction-builder/resolved/route-plan.js.map +1 -0
  73. package/build/generic-swap-transaction-builder/resolved/types.d.ts +67 -0
  74. package/build/generic-swap-transaction-builder/resolved/types.js.map +1 -0
  75. package/build/generic-swap-transaction-builder/resolved/validation.d.ts +10 -0
  76. package/build/generic-swap-transaction-builder/resolved/validation.js +69 -0
  77. package/build/generic-swap-transaction-builder/resolved/validation.js.map +1 -0
  78. package/package.json +1 -1
  79. package/build/abi/BProtocol.json +0 -1155
  80. package/build/abi/Jarvis.json +0 -1172
  81. package/build/abi/MStableAsset.json +0 -1545
  82. package/build/abi/OneInchLp.json +0 -1304
  83. package/build/abi/Onebit.json +0 -736
  84. package/build/abi/Shell.json +0 -1294
  85. package/build/abi/TraderJoeV2Router.json +0 -50
  86. package/build/abi/idle-dao/idle-cdo-factory.json +0 -38
  87. package/build/abi/idle-dao/idle-cdo.json +0 -1245
  88. package/build/abi/infusion/InfusionFactory.json +0 -147
  89. package/build/abi/infusion/InfusionPair.json +0 -658
  90. package/build/abi/infusion/InfusionRouter.json +0 -442
  91. package/build/abi/maker-psm/pot.json +0 -322
  92. package/build/abi/maker-psm/psm.json +0 -243
  93. package/build/abi/maker-psm/vat.json +0 -363
  94. package/build/abi/nomiswap-v2/nomiswap-v2-pool.json +0 -773
  95. package/build/abi/quick-perps/fast-price-events.json +0 -70
  96. package/build/abi/quick-perps/fast-price-feed.json +0 -741
  97. package/build/abi/quick-perps/reader.json +0 -313
  98. package/build/abi/quick-perps/vault-price-feed.json +0 -323
  99. package/build/abi/quick-perps/vault.json +0 -1953
  100. package/build/abi/uniswap-v2/excalibur-pool.json +0 -881
  101. package/build/abi/uniswap-v2/mdex-factory.json +0 -759
  102. package/build/abi/wUSDM.json +0 -757
  103. package/build/abi/zrx.v2.json +0 -1967
  104. package/build/abi/zrx.v3.json +0 -3454
  105. package/build/abi/zrx.v4.json +0 -2193
  106. package/build/dex/OneInchLp.d.ts +0 -24
  107. package/build/dex/OneInchLp.js +0 -43
  108. package/build/dex/OneInchLp.js.map +0 -1
  109. package/build/dex/bProtocol/bProtocol.d.ts +0 -15
  110. package/build/dex/bProtocol/bProtocol.js +0 -56
  111. package/build/dex/bProtocol/bProtocol.js.map +0 -1
  112. package/build/dex/bProtocol/types.d.ts +0 -11
  113. package/build/dex/bProtocol/types.js +0 -8
  114. package/build/dex/bProtocol/types.js.map +0 -1
  115. package/build/dex/ekubo/pools/base-pool.d.ts +0 -47
  116. package/build/dex/ekubo/pools/base-pool.js +0 -184
  117. package/build/dex/ekubo/pools/base-pool.js.map +0 -1
  118. package/build/dex/ekubo/pools/iface.d.ts +0 -46
  119. package/build/dex/ekubo/pools/iface.js +0 -75
  120. package/build/dex/ekubo/pools/iface.js.map +0 -1
  121. package/build/dex/ekubo/pools/math/price.d.ts +0 -7
  122. package/build/dex/ekubo/pools/math/price.js +0 -112
  123. package/build/dex/ekubo/pools/math/price.js.map +0 -1
  124. package/build/dex/ekubo/pools/oracle-pool.d.ts +0 -10
  125. package/build/dex/ekubo/pools/oracle-pool.js +0 -19
  126. package/build/dex/ekubo/pools/oracle-pool.js.map +0 -1
  127. package/build/dex/ekubo/pools/pool-utils.d.ts +0 -44
  128. package/build/dex/ekubo/pools/pool-utils.js +0 -240
  129. package/build/dex/ekubo/pools/pool-utils.js.map +0 -1
  130. package/build/dex/idle-dao/config.d.ts +0 -5
  131. package/build/dex/idle-dao/config.js +0 -24
  132. package/build/dex/idle-dao/config.js.map +0 -1
  133. package/build/dex/idle-dao/idle-dao.d.ts +0 -42
  134. package/build/dex/idle-dao/idle-dao.js +0 -279
  135. package/build/dex/idle-dao/idle-dao.js.map +0 -1
  136. package/build/dex/idle-dao/token_list.d.ts +0 -4
  137. package/build/dex/idle-dao/token_list.js +0 -289
  138. package/build/dex/idle-dao/token_list.js.map +0 -1
  139. package/build/dex/idle-dao/tokens.d.ts +0 -9
  140. package/build/dex/idle-dao/tokens.js +0 -68
  141. package/build/dex/idle-dao/tokens.js.map +0 -1
  142. package/build/dex/idle-dao/types.d.ts +0 -35
  143. package/build/dex/idle-dao/types.js +0 -11
  144. package/build/dex/idle-dao/types.js.map +0 -1
  145. package/build/dex/idle-dao/utils.d.ts +0 -8
  146. package/build/dex/idle-dao/utils.js +0 -149
  147. package/build/dex/idle-dao/utils.js.map +0 -1
  148. package/build/dex/infusion/config.d.ts +0 -3
  149. package/build/dex/infusion/config.js +0 -20
  150. package/build/dex/infusion/config.js.map +0 -1
  151. package/build/dex/infusion/infusion-stable-pool.d.ts +0 -4
  152. package/build/dex/infusion/infusion-stable-pool.js +0 -74
  153. package/build/dex/infusion/infusion-stable-pool.js.map +0 -1
  154. package/build/dex/infusion/infusion.d.ts +0 -51
  155. package/build/dex/infusion/infusion.js +0 -500
  156. package/build/dex/infusion/infusion.js.map +0 -1
  157. package/build/dex/infusion/types.d.ts +0 -45
  158. package/build/dex/infusion/types.js.map +0 -1
  159. package/build/dex/infusion/utils/isStablePair.d.ts +0 -2
  160. package/build/dex/infusion/utils/isStablePair.js +0 -18
  161. package/build/dex/infusion/utils/isStablePair.js.map +0 -1
  162. package/build/dex/jarvis.d.ts +0 -56
  163. package/build/dex/jarvis.js +0 -163
  164. package/build/dex/jarvis.js.map +0 -1
  165. package/build/dex/mStable.d.ts +0 -44
  166. package/build/dex/mStable.js +0 -75
  167. package/build/dex/mStable.js.map +0 -1
  168. package/build/dex/maker-psm/config.d.ts +0 -11
  169. package/build/dex/maker-psm/config.js +0 -53
  170. package/build/dex/maker-psm/config.js.map +0 -1
  171. package/build/dex/maker-psm/maker-psm.d.ts +0 -103
  172. package/build/dex/maker-psm/maker-psm.js +0 -493
  173. package/build/dex/maker-psm/maker-psm.js.map +0 -1
  174. package/build/dex/maker-psm/types.d.ts +0 -39
  175. package/build/dex/maker-psm/types.js.map +0 -1
  176. package/build/dex/onebit/onebit.d.ts +0 -16
  177. package/build/dex/onebit/onebit.js +0 -61
  178. package/build/dex/onebit/onebit.js.map +0 -1
  179. package/build/dex/onebit/types.d.ts +0 -14
  180. package/build/dex/onebit/types.js +0 -8
  181. package/build/dex/onebit/types.js.map +0 -1
  182. package/build/dex/quick-perps/config.d.ts +0 -11
  183. package/build/dex/quick-perps/config.js +0 -27
  184. package/build/dex/quick-perps/config.js.map +0 -1
  185. package/build/dex/quick-perps/fast-price-feed.d.ts +0 -26
  186. package/build/dex/quick-perps/fast-price-feed.js +0 -184
  187. package/build/dex/quick-perps/fast-price-feed.js.map +0 -1
  188. package/build/dex/quick-perps/pool.d.ts +0 -21
  189. package/build/dex/quick-perps/pool.js +0 -229
  190. package/build/dex/quick-perps/pool.js.map +0 -1
  191. package/build/dex/quick-perps/quick-perps.d.ts +0 -53
  192. package/build/dex/quick-perps/quick-perps.js +0 -247
  193. package/build/dex/quick-perps/quick-perps.js.map +0 -1
  194. package/build/dex/quick-perps/types.d.ts +0 -98
  195. package/build/dex/quick-perps/types.js.map +0 -1
  196. package/build/dex/quick-perps/usdq.d.ts +0 -15
  197. package/build/dex/quick-perps/usdq.js +0 -62
  198. package/build/dex/quick-perps/usdq.js.map +0 -1
  199. package/build/dex/quick-perps/vault-price-feed.d.ts +0 -43
  200. package/build/dex/quick-perps/vault-price-feed.js +0 -203
  201. package/build/dex/quick-perps/vault-price-feed.js.map +0 -1
  202. package/build/dex/quick-perps/vault-utils.d.ts +0 -8
  203. package/build/dex/quick-perps/vault-utils.js +0 -42
  204. package/build/dex/quick-perps/vault-utils.js.map +0 -1
  205. package/build/dex/quick-perps/vault.d.ts +0 -46
  206. package/build/dex/quick-perps/vault.js +0 -182
  207. package/build/dex/quick-perps/vault.js.map +0 -1
  208. package/build/dex/se-vlr/config.d.ts +0 -3
  209. package/build/dex/se-vlr/config.js +0 -24
  210. package/build/dex/se-vlr/config.js.map +0 -1
  211. package/build/dex/se-vlr/se-vlr-pool.d.ts +0 -39
  212. package/build/dex/se-vlr/se-vlr-pool.js +0 -70
  213. package/build/dex/se-vlr/se-vlr-pool.js.map +0 -1
  214. package/build/dex/se-vlr/se-vlr.d.ts +0 -35
  215. package/build/dex/se-vlr/se-vlr.js +0 -131
  216. package/build/dex/se-vlr/se-vlr.js.map +0 -1
  217. package/build/dex/se-vlr/types.d.ts +0 -6
  218. package/build/dex/se-vlr/types.js +0 -3
  219. package/build/dex/se-vlr/types.js.map +0 -1
  220. package/build/dex/shell.d.ts +0 -25
  221. package/build/dex/shell.js +0 -41
  222. package/build/dex/shell.js.map +0 -1
  223. package/build/dex/solidly/forks-override/aerodrome.d.ts +0 -14
  224. package/build/dex/solidly/forks-override/aerodrome.js +0 -46
  225. package/build/dex/solidly/forks-override/aerodrome.js.map +0 -1
  226. package/build/dex/solidly/forks-override/chronos.d.ts +0 -23
  227. package/build/dex/solidly/forks-override/chronos.js +0 -141
  228. package/build/dex/solidly/forks-override/chronos.js.map +0 -1
  229. package/build/dex/solidly/forks-override/usdfi.d.ts +0 -8
  230. package/build/dex/solidly/forks-override/usdfi.js +0 -15
  231. package/build/dex/solidly/forks-override/usdfi.js.map +0 -1
  232. package/build/dex/solidly/forks-override/velocimeter.d.ts +0 -23
  233. package/build/dex/solidly/forks-override/velocimeter.js +0 -77
  234. package/build/dex/solidly/forks-override/velocimeter.js.map +0 -1
  235. package/build/dex/tessera/types.d.ts +0 -3
  236. package/build/dex/tessera/types.js +0 -3
  237. package/build/dex/tessera/types.js.map +0 -1
  238. package/build/dex/trader-joe-v2.d.ts +0 -40
  239. package/build/dex/trader-joe-v2.js +0 -74
  240. package/build/dex/trader-joe-v2.js.map +0 -1
  241. package/build/dex/uniswap-v2/dfyn.d.ts +0 -19
  242. package/build/dex/uniswap-v2/dfyn.js +0 -61
  243. package/build/dex/uniswap-v2/dfyn.js.map +0 -1
  244. package/build/dex/uniswap-v2/excalibur.d.ts +0 -24
  245. package/build/dex/uniswap-v2/excalibur.js +0 -47
  246. package/build/dex/uniswap-v2/excalibur.js.map +0 -1
  247. package/build/dex/uniswap-v2/mdex.d.ts +0 -24
  248. package/build/dex/uniswap-v2/mdex.js +0 -50
  249. package/build/dex/uniswap-v2/mdex.js.map +0 -1
  250. package/build/dex/uniswap-v2/nomiswap-v2.d.ts +0 -24
  251. package/build/dex/uniswap-v2/nomiswap-v2.js +0 -57
  252. package/build/dex/uniswap-v2/nomiswap-v2.js.map +0 -1
  253. package/build/dex/uniswap-v3/scripts/bench-all-dexes.js +0 -160
  254. package/build/dex/uniswap-v3/scripts/bench-all-dexes.js.map +0 -1
  255. package/build/dex/uniswap-v3/uniswap-v3-new.d.ts +0 -94
  256. package/build/dex/uniswap-v3/uniswap-v3-new.js +0 -923
  257. package/build/dex/uniswap-v3/uniswap-v3-new.js.map +0 -1
  258. package/build/dex/uniswap-v4/contract-math/Position.d.ts +0 -3
  259. package/build/dex/uniswap-v4/contract-math/Position.js +0 -10
  260. package/build/dex/uniswap-v4/contract-math/Position.js.map +0 -1
  261. package/build/dex/usual-bond/config.d.ts +0 -3
  262. package/build/dex/usual-bond/config.js +0 -13
  263. package/build/dex/usual-bond/config.js.map +0 -1
  264. package/build/dex/usual-bond/types.d.ts +0 -7
  265. package/build/dex/usual-bond/types.js +0 -3
  266. package/build/dex/usual-bond/types.js.map +0 -1
  267. package/build/dex/usual-bond/usual-bond.d.ts +0 -35
  268. package/build/dex/usual-bond/usual-bond.js +0 -176
  269. package/build/dex/usual-bond/usual-bond.js.map +0 -1
  270. package/build/dex/wusdm/config.d.ts +0 -3
  271. package/build/dex/wusdm/config.js +0 -43
  272. package/build/dex/wusdm/config.js.map +0 -1
  273. package/build/dex/wusdm/constants.d.ts +0 -2
  274. package/build/dex/wusdm/constants.js +0 -6
  275. package/build/dex/wusdm/constants.js.map +0 -1
  276. package/build/dex/wusdm/types.d.ts +0 -18
  277. package/build/dex/wusdm/types.js +0 -11
  278. package/build/dex/wusdm/types.js.map +0 -1
  279. package/build/dex/wusdm/wusdm-pool.d.ts +0 -21
  280. package/build/dex/wusdm/wusdm-pool.js +0 -74
  281. package/build/dex/wusdm/wusdm-pool.js.map +0 -1
  282. package/build/dex/wusdm/wusdm.d.ts +0 -46
  283. package/build/dex/wusdm/wusdm.js +0 -243
  284. package/build/dex/wusdm/wusdm.js.map +0 -1
  285. package/build/dex/zerox/config.d.ts +0 -2
  286. package/build/dex/zerox/config.js +0 -33
  287. package/build/dex/zerox/config.js.map +0 -1
  288. package/build/dex/zerox/index.d.ts +0 -22
  289. package/build/dex/zerox/index.js +0 -225
  290. package/build/dex/zerox/index.js.map +0 -1
  291. package/build/dex/zerox/order.d.ts +0 -88
  292. package/build/dex/zerox/order.js +0 -53
  293. package/build/dex/zerox/order.js.map +0 -1
  294. package/build/dex/zerox/types.d.ts +0 -73
  295. package/build/dex/zerox/types.js +0 -21
  296. package/build/dex/zerox/types.js.map +0 -1
  297. /package/build/dex/{uniswap-v3/scripts/bench-all-dexes.d.ts → fluid-dex/scripts/measure-calc-time.d.ts} +0 -0
  298. /package/build/{dex/infusion → generic-swap-transaction-builder/resolved}/types.js +0 -0
@@ -0,0 +1,207 @@
1
+ import type { SwapSide } from '@paraswap/core';
2
+ import type { Address } from '../../types';
3
+ import { SpecialDex } from '../../executor/types';
4
+ import type { DirectContractMethodV6 } from './direct-methods';
5
+ export type DecimalString = string;
6
+ export type HexString = `0x${string}`;
7
+ export type DexEncoderJsonValue = null | boolean | number | string | DexEncoderJsonValue[] | {
8
+ [key: string]: DexEncoderJsonValue;
9
+ };
10
+ export type DexEncoderSwapExchangeData = DexEncoderJsonValue;
11
+ export type NeedWrapNativeAuditDexKey = 'CurveV1Factory' | 'CurveV1StableNg';
12
+ export declare const AUDITED_FUNCTION_NEED_WRAP_NATIVE_DEXES: readonly ["CurveV1Factory", "CurveV1StableNg"];
13
+ export type AddressNormalizationPolicy = 'lowercase';
14
+ export type AmountNormalizationPolicy = 'decimal-string';
15
+ export type BytesNormalizationPolicy = '0x-prefixed-hex';
16
+ export type UnknownFieldPolicy = 'reject';
17
+ export type SwapExchangeDataPolicy = 'dex-owned-pass-through';
18
+ export type OptionalFieldPolicy = 'omit-or-null-normalized-to-undefined';
19
+ export type DexEncoderDtoNormalizationPolicy = {
20
+ addressFields: AddressNormalizationPolicy;
21
+ amountFields: AmountNormalizationPolicy;
22
+ calldataFields: BytesNormalizationPolicy;
23
+ swapExchangeData: SwapExchangeDataPolicy;
24
+ unknownFields: UnknownFieldPolicy;
25
+ optionalFields: OptionalFieldPolicy;
26
+ };
27
+ export declare const DEX_ENCODER_DTO_NORMALIZATION_POLICY: DexEncoderDtoNormalizationPolicy;
28
+ export type DexEncoderDtoFieldContract = {
29
+ addressFields: readonly string[];
30
+ amountFields: readonly string[];
31
+ booleanFields: readonly string[];
32
+ calldataFields: readonly string[];
33
+ nullableInputFields: readonly string[];
34
+ numberFields: readonly string[];
35
+ passThroughFields: readonly string[];
36
+ strictOutputFields: readonly string[];
37
+ };
38
+ export declare const KNOWN_SPECIAL_DEX_FLAGS: readonly [SpecialDex.DEFAULT, SpecialDex.SWAP_ON_SWAAP_V2_SINGLE, SpecialDex.SWAP_ON_BALANCER_V1, SpecialDex.SWAP_ON_MAKER_PSM, SpecialDex.SEND_NATIVE, SpecialDex.SWAP_ON_BALANCER_V2, SpecialDex.SWAP_ON_UNISWAP_V2_FORK, SpecialDex.SWAP_ON_DYSTOPIA_UNISWAP_V2_FORK, SpecialDex.SWAP_ON_DYSTOPIA_UNISWAP_V2_FORK_WITH_FEE, SpecialDex.SWAP_ON_AUGUSTUS_RFQ, SpecialDex.EXECUTE_VERTICAL_BRANCHING, SpecialDex.BUY_ON_SOLIDLY_V3, SpecialDex.SWAP_ON_DEXALOT, SpecialDex.SWAP_ON_HASHFLOW];
39
+ export declare const SPECIAL_DEX_FLAG_RESERVED_RANGE: {
40
+ readonly min: 0;
41
+ readonly max: 255;
42
+ };
43
+ export type NeedWrapNativeRouteContext = {
44
+ network: number;
45
+ side: SwapSide;
46
+ routeIndex: number;
47
+ routePercent: number;
48
+ blockNumber: number;
49
+ srcToken: Address;
50
+ destToken: Address;
51
+ srcAmount: DecimalString;
52
+ destAmount: DecimalString;
53
+ };
54
+ export type NeedWrapNativeSwapContext = {
55
+ swapIndex: number;
56
+ srcToken: Address;
57
+ destToken: Address;
58
+ srcAmount: DecimalString;
59
+ destAmount: DecimalString;
60
+ };
61
+ export type NeedWrapNativeSwapExchangeContext = {
62
+ swapExchangeIndex: number;
63
+ exchange: string;
64
+ srcAmount: DecimalString;
65
+ destAmount: DecimalString;
66
+ percent: number;
67
+ data: DexEncoderSwapExchangeData;
68
+ };
69
+ export type NeedWrapNativeInput = {
70
+ route: NeedWrapNativeRouteContext;
71
+ swap: NeedWrapNativeSwapContext;
72
+ swapExchange: NeedWrapNativeSwapExchangeContext;
73
+ };
74
+ export declare const NEED_WRAP_NATIVE_INPUT_FIELD_CONTRACT: {
75
+ readonly addressFields: readonly ["route.srcToken", "route.destToken", "swap.srcToken", "swap.destToken"];
76
+ readonly amountFields: readonly ["route.srcAmount", "route.destAmount", "swap.srcAmount", "swap.destAmount", "swapExchange.srcAmount", "swapExchange.destAmount"];
77
+ readonly booleanFields: readonly [];
78
+ readonly calldataFields: readonly [];
79
+ readonly nullableInputFields: readonly ["swapExchange.data"];
80
+ readonly numberFields: readonly ["route.network", "route.routeIndex", "route.routePercent", "route.blockNumber", "swap.swapIndex", "swapExchange.swapExchangeIndex", "swapExchange.percent"];
81
+ readonly passThroughFields: readonly ["swapExchange.data"];
82
+ readonly strictOutputFields: readonly [];
83
+ };
84
+ export type DexParamInput = NeedWrapNativeInput & {
85
+ dexKey: string;
86
+ srcToken: Address;
87
+ destToken: Address;
88
+ srcAmount: DecimalString;
89
+ destAmount: DecimalString;
90
+ recipient: Address;
91
+ executorAddress: Address;
92
+ side: SwapSide;
93
+ data: DexEncoderSwapExchangeData;
94
+ };
95
+ export declare const DEX_PARAM_INPUT_FIELD_CONTRACT: {
96
+ readonly addressFields: readonly ["route.srcToken", "route.destToken", "swap.srcToken", "swap.destToken", "srcToken", "destToken", "recipient", "executorAddress"];
97
+ readonly amountFields: readonly ["route.srcAmount", "route.destAmount", "swap.srcAmount", "swap.destAmount", "swapExchange.srcAmount", "swapExchange.destAmount", "srcAmount", "destAmount"];
98
+ readonly booleanFields: readonly [];
99
+ readonly calldataFields: readonly [];
100
+ readonly nullableInputFields: readonly ["swapExchange.data", "data"];
101
+ readonly numberFields: readonly ["route.network", "route.routeIndex", "route.routePercent", "route.blockNumber", "swap.swapIndex", "swapExchange.swapExchangeIndex", "swapExchange.percent"];
102
+ readonly passThroughFields: readonly ["swapExchange.data", "data"];
103
+ readonly strictOutputFields: readonly [];
104
+ };
105
+ export type DexExchangeParam = {
106
+ needWrapNative: boolean;
107
+ needUnwrapNative?: boolean;
108
+ skipApproval?: boolean;
109
+ wethAddress?: Address;
110
+ exchangeData: HexString;
111
+ targetExchange: Address;
112
+ dexFuncHasRecipient: boolean;
113
+ specialDexFlag?: SpecialDex;
114
+ transferSrcTokenBeforeSwap?: Address;
115
+ spender?: Address;
116
+ sendEthButSupportsInsertFromAmount?: boolean;
117
+ specialDexSupportsInsertFromAmount?: boolean;
118
+ swappedAmountNotPresentInExchangeData?: boolean;
119
+ returnAmountPos?: number;
120
+ insertFromAmountPos?: number;
121
+ amountsPacked128?: boolean;
122
+ permit2Approval?: boolean;
123
+ };
124
+ export declare const DEX_EXCHANGE_PARAM_FIELD_CONTRACT: {
125
+ readonly addressFields: readonly ["wethAddress", "targetExchange", "transferSrcTokenBeforeSwap", "spender"];
126
+ readonly amountFields: readonly [];
127
+ readonly booleanFields: readonly ["needWrapNative", "needUnwrapNative", "skipApproval", "dexFuncHasRecipient", "sendEthButSupportsInsertFromAmount", "specialDexSupportsInsertFromAmount", "swappedAmountNotPresentInExchangeData", "amountsPacked128", "permit2Approval"];
128
+ readonly calldataFields: readonly ["exchangeData"];
129
+ readonly nullableInputFields: readonly ["needUnwrapNative", "skipApproval", "wethAddress", "specialDexFlag", "transferSrcTokenBeforeSwap", "spender", "sendEthButSupportsInsertFromAmount", "specialDexSupportsInsertFromAmount", "swappedAmountNotPresentInExchangeData", "returnAmountPos", "insertFromAmountPos", "amountsPacked128", "permit2Approval"];
130
+ readonly numberFields: readonly ["specialDexFlag", "returnAmountPos", "insertFromAmountPos"];
131
+ readonly passThroughFields: readonly [];
132
+ readonly strictOutputFields: readonly ["needWrapNative", "needUnwrapNative", "skipApproval", "wethAddress", "exchangeData", "targetExchange", "dexFuncHasRecipient", "specialDexFlag", "transferSrcTokenBeforeSwap", "spender", "sendEthButSupportsInsertFromAmount", "specialDexSupportsInsertFromAmount", "swappedAmountNotPresentInExchangeData", "returnAmountPos", "insertFromAmountPos", "amountsPacked128", "permit2Approval"];
133
+ };
134
+ export type DirectParamInput = {
135
+ dexKey: string;
136
+ network: number;
137
+ contractMethod: DirectContractMethodV6;
138
+ srcToken: Address;
139
+ destToken: Address;
140
+ srcAmount: DecimalString;
141
+ destAmount: DecimalString;
142
+ quotedAmount: DecimalString;
143
+ data: DexEncoderSwapExchangeData;
144
+ side: SwapSide;
145
+ permit: HexString;
146
+ uuid: string;
147
+ partnerAndFee: DecimalString;
148
+ beneficiary: Address;
149
+ blockNumber: number;
150
+ };
151
+ export declare const DIRECT_PARAM_INPUT_FIELD_CONTRACT: {
152
+ readonly addressFields: readonly ["srcToken", "destToken", "beneficiary"];
153
+ readonly amountFields: readonly ["srcAmount", "destAmount", "quotedAmount", "partnerAndFee"];
154
+ readonly booleanFields: readonly [];
155
+ readonly calldataFields: readonly ["permit"];
156
+ readonly nullableInputFields: readonly ["data"];
157
+ readonly numberFields: readonly ["network", "blockNumber"];
158
+ readonly passThroughFields: readonly ["data"];
159
+ readonly strictOutputFields: readonly [];
160
+ };
161
+ export type DirectParamResult = {
162
+ params: DexEncoderJsonValue[];
163
+ };
164
+ export declare const DIRECT_PARAM_RESULT_FIELD_CONTRACT: {
165
+ readonly addressFields: readonly [];
166
+ readonly amountFields: readonly [];
167
+ readonly booleanFields: readonly [];
168
+ readonly calldataFields: readonly [];
169
+ readonly nullableInputFields: readonly [];
170
+ readonly numberFields: readonly [];
171
+ readonly passThroughFields: readonly ["params"];
172
+ readonly strictOutputFields: readonly ["params"];
173
+ };
174
+ export type WethDepositWithdrawInput = {
175
+ srcAmountWeth: DecimalString;
176
+ destAmountWeth: DecimalString;
177
+ side: SwapSide;
178
+ };
179
+ export type WethCallData = {
180
+ callee: Address;
181
+ calldata: HexString;
182
+ value: DecimalString;
183
+ };
184
+ export type WethDepositWithdrawResult = {
185
+ deposit?: WethCallData;
186
+ withdraw?: WethCallData;
187
+ };
188
+ export declare const WETH_DEPOSIT_WITHDRAW_INPUT_FIELD_CONTRACT: {
189
+ readonly addressFields: readonly [];
190
+ readonly amountFields: readonly ["srcAmountWeth", "destAmountWeth"];
191
+ readonly booleanFields: readonly [];
192
+ readonly calldataFields: readonly [];
193
+ readonly nullableInputFields: readonly [];
194
+ readonly numberFields: readonly [];
195
+ readonly passThroughFields: readonly [];
196
+ readonly strictOutputFields: readonly [];
197
+ };
198
+ export declare const WETH_DEPOSIT_WITHDRAW_RESULT_FIELD_CONTRACT: {
199
+ readonly addressFields: readonly ["deposit.callee", "withdraw.callee"];
200
+ readonly amountFields: readonly ["deposit.value", "withdraw.value"];
201
+ readonly booleanFields: readonly [];
202
+ readonly calldataFields: readonly ["deposit.calldata", "withdraw.calldata"];
203
+ readonly nullableInputFields: readonly ["deposit", "withdraw"];
204
+ readonly numberFields: readonly [];
205
+ readonly passThroughFields: readonly [];
206
+ readonly strictOutputFields: readonly ["deposit", "withdraw"];
207
+ };
@@ -0,0 +1,194 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WETH_DEPOSIT_WITHDRAW_RESULT_FIELD_CONTRACT = exports.WETH_DEPOSIT_WITHDRAW_INPUT_FIELD_CONTRACT = exports.DIRECT_PARAM_RESULT_FIELD_CONTRACT = exports.DIRECT_PARAM_INPUT_FIELD_CONTRACT = exports.DEX_EXCHANGE_PARAM_FIELD_CONTRACT = exports.DEX_PARAM_INPUT_FIELD_CONTRACT = exports.NEED_WRAP_NATIVE_INPUT_FIELD_CONTRACT = exports.SPECIAL_DEX_FLAG_RESERVED_RANGE = exports.KNOWN_SPECIAL_DEX_FLAGS = exports.DEX_ENCODER_DTO_NORMALIZATION_POLICY = exports.AUDITED_FUNCTION_NEED_WRAP_NATIVE_DEXES = void 0;
4
+ const types_1 = require("../../executor/types");
5
+ // Phase 0 audit: concrete V6 DEX keys under src/dex/** whose needWrapNative
6
+ // member is function-shaped instead of a static boolean.
7
+ exports.AUDITED_FUNCTION_NEED_WRAP_NATIVE_DEXES = [
8
+ 'CurveV1Factory',
9
+ 'CurveV1StableNg',
10
+ ];
11
+ exports.DEX_ENCODER_DTO_NORMALIZATION_POLICY = {
12
+ addressFields: 'lowercase',
13
+ amountFields: 'decimal-string',
14
+ calldataFields: '0x-prefixed-hex',
15
+ swapExchangeData: 'dex-owned-pass-through',
16
+ unknownFields: 'reject',
17
+ optionalFields: 'omit-or-null-normalized-to-undefined',
18
+ };
19
+ // Keep this list in lockstep with SpecialDex until Phase 5 adds an enum/list
20
+ // parity test alongside the needWrapNative audit scanner.
21
+ exports.KNOWN_SPECIAL_DEX_FLAGS = [
22
+ types_1.SpecialDex.DEFAULT,
23
+ types_1.SpecialDex.SWAP_ON_SWAAP_V2_SINGLE,
24
+ types_1.SpecialDex.SWAP_ON_BALANCER_V1,
25
+ types_1.SpecialDex.SWAP_ON_MAKER_PSM,
26
+ types_1.SpecialDex.SEND_NATIVE,
27
+ types_1.SpecialDex.SWAP_ON_BALANCER_V2,
28
+ types_1.SpecialDex.SWAP_ON_UNISWAP_V2_FORK,
29
+ types_1.SpecialDex.SWAP_ON_DYSTOPIA_UNISWAP_V2_FORK,
30
+ types_1.SpecialDex.SWAP_ON_DYSTOPIA_UNISWAP_V2_FORK_WITH_FEE,
31
+ types_1.SpecialDex.SWAP_ON_AUGUSTUS_RFQ,
32
+ types_1.SpecialDex.EXECUTE_VERTICAL_BRANCHING,
33
+ types_1.SpecialDex.BUY_ON_SOLIDLY_V3,
34
+ types_1.SpecialDex.SWAP_ON_DEXALOT,
35
+ types_1.SpecialDex.SWAP_ON_HASHFLOW,
36
+ ];
37
+ exports.SPECIAL_DEX_FLAG_RESERVED_RANGE = {
38
+ min: 0,
39
+ max: 255,
40
+ };
41
+ exports.NEED_WRAP_NATIVE_INPUT_FIELD_CONTRACT = {
42
+ addressFields: [
43
+ 'route.srcToken',
44
+ 'route.destToken',
45
+ 'swap.srcToken',
46
+ 'swap.destToken',
47
+ ],
48
+ amountFields: [
49
+ 'route.srcAmount',
50
+ 'route.destAmount',
51
+ 'swap.srcAmount',
52
+ 'swap.destAmount',
53
+ 'swapExchange.srcAmount',
54
+ 'swapExchange.destAmount',
55
+ ],
56
+ booleanFields: [],
57
+ calldataFields: [],
58
+ nullableInputFields: ['swapExchange.data'],
59
+ numberFields: [
60
+ 'route.network',
61
+ 'route.routeIndex',
62
+ 'route.routePercent',
63
+ 'route.blockNumber',
64
+ 'swap.swapIndex',
65
+ 'swapExchange.swapExchangeIndex',
66
+ 'swapExchange.percent',
67
+ ],
68
+ passThroughFields: ['swapExchange.data'],
69
+ strictOutputFields: [],
70
+ };
71
+ exports.DEX_PARAM_INPUT_FIELD_CONTRACT = {
72
+ addressFields: [
73
+ ...exports.NEED_WRAP_NATIVE_INPUT_FIELD_CONTRACT.addressFields,
74
+ 'srcToken',
75
+ 'destToken',
76
+ 'recipient',
77
+ 'executorAddress',
78
+ ],
79
+ amountFields: [
80
+ ...exports.NEED_WRAP_NATIVE_INPUT_FIELD_CONTRACT.amountFields,
81
+ 'srcAmount',
82
+ 'destAmount',
83
+ ],
84
+ booleanFields: exports.NEED_WRAP_NATIVE_INPUT_FIELD_CONTRACT.booleanFields,
85
+ calldataFields: [],
86
+ nullableInputFields: [
87
+ ...exports.NEED_WRAP_NATIVE_INPUT_FIELD_CONTRACT.nullableInputFields,
88
+ 'data',
89
+ ],
90
+ numberFields: exports.NEED_WRAP_NATIVE_INPUT_FIELD_CONTRACT.numberFields,
91
+ passThroughFields: [
92
+ ...exports.NEED_WRAP_NATIVE_INPUT_FIELD_CONTRACT.passThroughFields,
93
+ 'data',
94
+ ],
95
+ strictOutputFields: [],
96
+ };
97
+ exports.DEX_EXCHANGE_PARAM_FIELD_CONTRACT = {
98
+ addressFields: [
99
+ 'wethAddress',
100
+ 'targetExchange',
101
+ 'transferSrcTokenBeforeSwap',
102
+ 'spender',
103
+ ],
104
+ amountFields: [],
105
+ booleanFields: [
106
+ 'needWrapNative',
107
+ 'needUnwrapNative',
108
+ 'skipApproval',
109
+ 'dexFuncHasRecipient',
110
+ 'sendEthButSupportsInsertFromAmount',
111
+ 'specialDexSupportsInsertFromAmount',
112
+ 'swappedAmountNotPresentInExchangeData',
113
+ 'amountsPacked128',
114
+ 'permit2Approval',
115
+ ],
116
+ calldataFields: ['exchangeData'],
117
+ nullableInputFields: [
118
+ 'needUnwrapNative',
119
+ 'skipApproval',
120
+ 'wethAddress',
121
+ 'specialDexFlag',
122
+ 'transferSrcTokenBeforeSwap',
123
+ 'spender',
124
+ 'sendEthButSupportsInsertFromAmount',
125
+ 'specialDexSupportsInsertFromAmount',
126
+ 'swappedAmountNotPresentInExchangeData',
127
+ 'returnAmountPos',
128
+ 'insertFromAmountPos',
129
+ 'amountsPacked128',
130
+ 'permit2Approval',
131
+ ],
132
+ numberFields: ['specialDexFlag', 'returnAmountPos', 'insertFromAmountPos'],
133
+ passThroughFields: [],
134
+ strictOutputFields: [
135
+ 'needWrapNative',
136
+ 'needUnwrapNative',
137
+ 'skipApproval',
138
+ 'wethAddress',
139
+ 'exchangeData',
140
+ 'targetExchange',
141
+ 'dexFuncHasRecipient',
142
+ 'specialDexFlag',
143
+ 'transferSrcTokenBeforeSwap',
144
+ 'spender',
145
+ 'sendEthButSupportsInsertFromAmount',
146
+ 'specialDexSupportsInsertFromAmount',
147
+ 'swappedAmountNotPresentInExchangeData',
148
+ 'returnAmountPos',
149
+ 'insertFromAmountPos',
150
+ 'amountsPacked128',
151
+ 'permit2Approval',
152
+ ],
153
+ };
154
+ exports.DIRECT_PARAM_INPUT_FIELD_CONTRACT = {
155
+ addressFields: ['srcToken', 'destToken', 'beneficiary'],
156
+ amountFields: ['srcAmount', 'destAmount', 'quotedAmount', 'partnerAndFee'],
157
+ booleanFields: [],
158
+ calldataFields: ['permit'],
159
+ nullableInputFields: ['data'],
160
+ numberFields: ['network', 'blockNumber'],
161
+ passThroughFields: ['data'],
162
+ strictOutputFields: [],
163
+ };
164
+ exports.DIRECT_PARAM_RESULT_FIELD_CONTRACT = {
165
+ addressFields: [],
166
+ amountFields: [],
167
+ booleanFields: [],
168
+ calldataFields: [],
169
+ nullableInputFields: [],
170
+ numberFields: [],
171
+ passThroughFields: ['params'],
172
+ strictOutputFields: ['params'],
173
+ };
174
+ exports.WETH_DEPOSIT_WITHDRAW_INPUT_FIELD_CONTRACT = {
175
+ addressFields: [],
176
+ amountFields: ['srcAmountWeth', 'destAmountWeth'],
177
+ booleanFields: [],
178
+ calldataFields: [],
179
+ nullableInputFields: [],
180
+ numberFields: [],
181
+ passThroughFields: [],
182
+ strictOutputFields: [],
183
+ };
184
+ exports.WETH_DEPOSIT_WITHDRAW_RESULT_FIELD_CONTRACT = {
185
+ addressFields: ['deposit.callee', 'withdraw.callee'],
186
+ amountFields: ['deposit.value', 'withdraw.value'],
187
+ booleanFields: [],
188
+ calldataFields: ['deposit.calldata', 'withdraw.calldata'],
189
+ nullableInputFields: ['deposit', 'withdraw'],
190
+ numberFields: [],
191
+ passThroughFields: [],
192
+ strictOutputFields: ['deposit', 'withdraw'],
193
+ };
194
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/generic-swap-transaction-builder/dex-encoder/types.ts"],"names":[],"mappings":";;;AAEA,gDAAkD;AAkBlD,4EAA4E;AAC5E,yDAAyD;AAC5C,QAAA,uCAAuC,GAAG;IACrD,gBAAgB;IAChB,iBAAiB;CACsC,CAAC;AAkB7C,QAAA,oCAAoC,GAC/C;IACE,aAAa,EAAE,WAAW;IAC1B,YAAY,EAAE,gBAAgB;IAC9B,cAAc,EAAE,iBAAiB;IACjC,gBAAgB,EAAE,wBAAwB;IAC1C,aAAa,EAAE,QAAQ;IACvB,cAAc,EAAE,sCAAsC;CACvD,CAAC;AAaJ,6EAA6E;AAC7E,0DAA0D;AAC7C,QAAA,uBAAuB,GAAG;IACrC,kBAAU,CAAC,OAAO;IAClB,kBAAU,CAAC,uBAAuB;IAClC,kBAAU,CAAC,mBAAmB;IAC9B,kBAAU,CAAC,iBAAiB;IAC5B,kBAAU,CAAC,WAAW;IACtB,kBAAU,CAAC,mBAAmB;IAC9B,kBAAU,CAAC,uBAAuB;IAClC,kBAAU,CAAC,gCAAgC;IAC3C,kBAAU,CAAC,yCAAyC;IACpD,kBAAU,CAAC,oBAAoB;IAC/B,kBAAU,CAAC,0BAA0B;IACrC,kBAAU,CAAC,iBAAiB;IAC5B,kBAAU,CAAC,eAAe;IAC1B,kBAAU,CAAC,gBAAgB;CACa,CAAC;AAE9B,QAAA,+BAA+B,GAAG;IAC7C,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,GAAG;CACA,CAAC;AAqCE,QAAA,qCAAqC,GAAG;IACnD,aAAa,EAAE;QACb,gBAAgB;QAChB,iBAAiB;QACjB,eAAe;QACf,gBAAgB;KACjB;IACD,YAAY,EAAE;QACZ,iBAAiB;QACjB,kBAAkB;QAClB,gBAAgB;QAChB,iBAAiB;QACjB,wBAAwB;QACxB,yBAAyB;KAC1B;IACD,aAAa,EAAE,EAAE;IACjB,cAAc,EAAE,EAAE;IAClB,mBAAmB,EAAE,CAAC,mBAAmB,CAAC;IAC1C,YAAY,EAAE;QACZ,eAAe;QACf,kBAAkB;QAClB,oBAAoB;QACpB,mBAAmB;QACnB,gBAAgB;QAChB,gCAAgC;QAChC,sBAAsB;KACvB;IACD,iBAAiB,EAAE,CAAC,mBAAmB,CAAC;IACxC,kBAAkB,EAAE,EAAE;CACuB,CAAC;AAiBnC,QAAA,8BAA8B,GAAG;IAC5C,aAAa,EAAE;QACb,GAAG,6CAAqC,CAAC,aAAa;QACtD,UAAU;QACV,WAAW;QACX,WAAW;QACX,iBAAiB;KAClB;IACD,YAAY,EAAE;QACZ,GAAG,6CAAqC,CAAC,YAAY;QACrD,WAAW;QACX,YAAY;KACb;IACD,aAAa,EAAE,6CAAqC,CAAC,aAAa;IAClE,cAAc,EAAE,EAAE;IAClB,mBAAmB,EAAE;QACnB,GAAG,6CAAqC,CAAC,mBAAmB;QAC5D,MAAM;KACP;IACD,YAAY,EAAE,6CAAqC,CAAC,YAAY;IAChE,iBAAiB,EAAE;QACjB,GAAG,6CAAqC,CAAC,iBAAiB;QAC1D,MAAM;KACP;IACD,kBAAkB,EAAE,EAAE;CACuB,CAAC;AAsBnC,QAAA,iCAAiC,GAAG;IAC/C,aAAa,EAAE;QACb,aAAa;QACb,gBAAgB;QAChB,4BAA4B;QAC5B,SAAS;KACV;IACD,YAAY,EAAE,EAAE;IAChB,aAAa,EAAE;QACb,gBAAgB;QAChB,kBAAkB;QAClB,cAAc;QACd,qBAAqB;QACrB,oCAAoC;QACpC,oCAAoC;QACpC,uCAAuC;QACvC,kBAAkB;QAClB,iBAAiB;KAClB;IACD,cAAc,EAAE,CAAC,cAAc,CAAC;IAChC,mBAAmB,EAAE;QACnB,kBAAkB;QAClB,cAAc;QACd,aAAa;QACb,gBAAgB;QAChB,4BAA4B;QAC5B,SAAS;QACT,oCAAoC;QACpC,oCAAoC;QACpC,uCAAuC;QACvC,iBAAiB;QACjB,qBAAqB;QACrB,kBAAkB;QAClB,iBAAiB;KAClB;IACD,YAAY,EAAE,CAAC,gBAAgB,EAAE,iBAAiB,EAAE,qBAAqB,CAAC;IAC1E,iBAAiB,EAAE,EAAE;IACrB,kBAAkB,EAAE;QAClB,gBAAgB;QAChB,kBAAkB;QAClB,cAAc;QACd,aAAa;QACb,cAAc;QACd,gBAAgB;QAChB,qBAAqB;QACrB,gBAAgB;QAChB,4BAA4B;QAC5B,SAAS;QACT,oCAAoC;QACpC,oCAAoC;QACpC,uCAAuC;QACvC,iBAAiB;QACjB,qBAAqB;QACrB,kBAAkB;QAClB,iBAAiB;KAClB;CAC4C,CAAC;AAoBnC,QAAA,iCAAiC,GAAG;IAC/C,aAAa,EAAE,CAAC,UAAU,EAAE,WAAW,EAAE,aAAa,CAAC;IACvD,YAAY,EAAE,CAAC,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,eAAe,CAAC;IAC1E,aAAa,EAAE,EAAE;IACjB,cAAc,EAAE,CAAC,QAAQ,CAAC;IAC1B,mBAAmB,EAAE,CAAC,MAAM,CAAC;IAC7B,YAAY,EAAE,CAAC,SAAS,EAAE,aAAa,CAAC;IACxC,iBAAiB,EAAE,CAAC,MAAM,CAAC;IAC3B,kBAAkB,EAAE,EAAE;CACuB,CAAC;AAMnC,QAAA,kCAAkC,GAAG;IAChD,aAAa,EAAE,EAAE;IACjB,YAAY,EAAE,EAAE;IAChB,aAAa,EAAE,EAAE;IACjB,cAAc,EAAE,EAAE;IAClB,mBAAmB,EAAE,EAAE;IACvB,YAAY,EAAE,EAAE;IAChB,iBAAiB,EAAE,CAAC,QAAQ,CAAC;IAC7B,kBAAkB,EAAE,CAAC,QAAQ,CAAC;CACe,CAAC;AAqBnC,QAAA,0CAA0C,GAAG;IACxD,aAAa,EAAE,EAAE;IACjB,YAAY,EAAE,CAAC,eAAe,EAAE,gBAAgB,CAAC;IACjD,aAAa,EAAE,EAAE;IACjB,cAAc,EAAE,EAAE;IAClB,mBAAmB,EAAE,EAAE;IACvB,YAAY,EAAE,EAAE;IAChB,iBAAiB,EAAE,EAAE;IACrB,kBAAkB,EAAE,EAAE;CACuB,CAAC;AAEnC,QAAA,2CAA2C,GAAG;IACzD,aAAa,EAAE,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;IACpD,YAAY,EAAE,CAAC,eAAe,EAAE,gBAAgB,CAAC;IACjD,aAAa,EAAE,EAAE;IACjB,cAAc,EAAE,CAAC,kBAAkB,EAAE,mBAAmB,CAAC;IACzD,mBAAmB,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;IAC5C,YAAY,EAAE,EAAE;IAChB,iBAAiB,EAAE,EAAE;IACrB,kBAAkB,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;CACE,CAAC"}
@@ -0,0 +1,65 @@
1
+ import { SwapSide } from '@paraswap/core';
2
+ import type { DepositWithdrawReturn } from '../dex/weth/types';
3
+ import type { ExecutorEncodingContext } from '../executor/encoding-types';
4
+ import type { Address, OptimalRate, OptimalSwap, OptimalSwapExchange } from '../types';
5
+ import type { ResolvedLeg, RoutePlan } from './resolved/types';
6
+ export type GenericDexCallParams = {
7
+ srcToken: Address;
8
+ destToken: Address;
9
+ recipient: Address;
10
+ srcAmount: string;
11
+ destAmount: string;
12
+ wethDeposit: bigint;
13
+ wethWithdraw: bigint;
14
+ };
15
+ export type WethCallDataProvider = (srcAmountWeth: string, destAmountWeth: string, side: SwapSide) => DepositWithdrawReturn | undefined | Promise<DepositWithdrawReturn | undefined>;
16
+ export type ResolvedLegWithWeth = {
17
+ resolvedLeg: ResolvedLeg;
18
+ wethDeposit: bigint;
19
+ wethWithdraw: bigint;
20
+ };
21
+ export type DexExchangeApprovalRequest = {
22
+ params: [token: Address, target: Address, permit2: boolean];
23
+ routePositionKey: string;
24
+ };
25
+ export declare function resolveQuotedAmount(priceRoute: Pick<OptimalRate, 'side' | 'srcAmount' | 'destAmount'>, quotedAmount?: string): string;
26
+ export declare function resolveBeneficiary(userAddress: Address, beneficiary?: Address): Address;
27
+ export declare function resolvePermit(permit?: string): string;
28
+ export declare function buildGenericDexCallParams({ priceRoute, routeIndex, swap, swapIndex, swapExchange, minMaxAmount, dexNeedWrapNative, executionContractAddress, wrappedNativeTokenAddress, augustusV6Address, }: {
29
+ priceRoute: OptimalRate;
30
+ routeIndex: number;
31
+ swap: OptimalSwap;
32
+ swapIndex: number;
33
+ swapExchange: OptimalSwapExchange<unknown>;
34
+ minMaxAmount: string;
35
+ dexNeedWrapNative: boolean;
36
+ executionContractAddress: Address;
37
+ wrappedNativeTokenAddress: Address;
38
+ augustusV6Address: Address;
39
+ }): GenericDexCallParams;
40
+ export declare function buildResolvedWethPlan({ resolvedLegsWithWeth, side, routePlan, getWethCallData, wrappedNativeTokenAddress, }: {
41
+ resolvedLegsWithWeth: ResolvedLegWithWeth[];
42
+ side: SwapSide;
43
+ routePlan: RoutePlan;
44
+ getWethCallData: WethCallDataProvider;
45
+ wrappedNativeTokenAddress: Address;
46
+ }): Promise<{
47
+ resolvedLegs: ResolvedLeg[];
48
+ wethPlan?: DepositWithdrawReturn;
49
+ }>;
50
+ export declare function hasAnyRouteWithEthAndDifferentNeedWrapNative({ routePlan, resolvedLegs, wrappedNativeTokenAddress, }: {
51
+ routePlan: RoutePlan;
52
+ resolvedLegs: ResolvedLeg[];
53
+ wrappedNativeTokenAddress: Address;
54
+ }): boolean;
55
+ export declare function buildDexExchangeApprovalRequests({ executorEncodingContext, priceRoute, routePlan, resolvedLegs, }: {
56
+ executorEncodingContext: ExecutorEncodingContext;
57
+ priceRoute: OptimalRate;
58
+ routePlan: RoutePlan;
59
+ resolvedLegs: ResolvedLeg[];
60
+ }): DexExchangeApprovalRequest[];
61
+ export declare function applyDexExchangeApprovalDecisions({ resolvedLegs, approvalRequests, approvalDecisions, }: {
62
+ resolvedLegs: ResolvedLeg[];
63
+ approvalRequests: DexExchangeApprovalRequest[];
64
+ approvalDecisions: boolean[];
65
+ }): ResolvedLeg[];
@@ -0,0 +1,198 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveQuotedAmount = resolveQuotedAmount;
4
+ exports.resolveBeneficiary = resolveBeneficiary;
5
+ exports.resolvePermit = resolvePermit;
6
+ exports.buildGenericDexCallParams = buildGenericDexCallParams;
7
+ exports.buildResolvedWethPlan = buildResolvedWethPlan;
8
+ exports.hasAnyRouteWithEthAndDifferentNeedWrapNative = hasAnyRouteWithEthAndDifferentNeedWrapNative;
9
+ exports.buildDexExchangeApprovalRequests = buildDexExchangeApprovalRequests;
10
+ exports.applyDexExchangeApprovalDecisions = applyDexExchangeApprovalDecisions;
11
+ const core_1 = require("@paraswap/core");
12
+ const constants_1 = require("../constants");
13
+ const approval_1 = require("../executor/approval");
14
+ const utils_1 = require("../utils");
15
+ const route_plan_1 = require("./resolved/route-plan");
16
+ function resolveQuotedAmount(priceRoute, quotedAmount) {
17
+ if (quotedAmount)
18
+ return quotedAmount;
19
+ return priceRoute.side === core_1.SwapSide.SELL
20
+ ? priceRoute.destAmount
21
+ : priceRoute.srcAmount;
22
+ }
23
+ function resolveBeneficiary(userAddress, beneficiary = constants_1.NULL_ADDRESS) {
24
+ return beneficiary !== constants_1.NULL_ADDRESS &&
25
+ beneficiary.toLowerCase() !== userAddress.toLowerCase()
26
+ ? beneficiary
27
+ : constants_1.NULL_ADDRESS;
28
+ }
29
+ function resolvePermit(permit) {
30
+ return permit || '0x';
31
+ }
32
+ function buildGenericDexCallParams({ priceRoute, routeIndex, swap, swapIndex, swapExchange, minMaxAmount, dexNeedWrapNative, executionContractAddress, wrappedNativeTokenAddress, augustusV6Address, }) {
33
+ const side = priceRoute.side;
34
+ const isMegaSwap = priceRoute.bestRoute.length > 1;
35
+ const isMultiSwap = !isMegaSwap && priceRoute.bestRoute[0].swaps.length > 1;
36
+ const isLastSwap = swapIndex === priceRoute.bestRoute[routeIndex].swaps.length - 1;
37
+ let srcToken = swap.srcToken;
38
+ let destToken = swap.destToken;
39
+ let wethDeposit = 0n;
40
+ let wethWithdraw = 0n;
41
+ // For buys, apply slippage to the first swap srcAmount in the same
42
+ // proportion as the complete swap.
43
+ const srcAmount = swapIndex > 0 || side === core_1.SwapSide.SELL
44
+ ? swapExchange.srcAmount
45
+ : ((BigInt(swapExchange.srcAmount) * BigInt(minMaxAmount)) /
46
+ BigInt(priceRoute.srcAmount)).toString();
47
+ const destAmount = side === core_1.SwapSide.SELL ? '1' : swapExchange.destAmount;
48
+ if ((0, utils_1.isETHAddress)(swap.srcToken) && dexNeedWrapNative) {
49
+ srcToken = wrappedNativeTokenAddress;
50
+ wethDeposit = BigInt(srcAmount);
51
+ }
52
+ const forceUnwrap = (0, utils_1.isETHAddress)(swap.destToken) &&
53
+ (isMultiSwap || isMegaSwap) &&
54
+ !dexNeedWrapNative &&
55
+ !isLastSwap;
56
+ if (((0, utils_1.isETHAddress)(swap.destToken) && dexNeedWrapNative) || forceUnwrap) {
57
+ destToken =
58
+ forceUnwrap && !dexNeedWrapNative ? destToken : wrappedNativeTokenAddress;
59
+ wethWithdraw = BigInt(swapExchange.destAmount);
60
+ }
61
+ const needToWithdrawAfterSwap = destToken === wrappedNativeTokenAddress && wethWithdraw > 0n;
62
+ return {
63
+ srcToken,
64
+ destToken,
65
+ recipient: needToWithdrawAfterSwap || !isLastSwap || priceRoute.side === core_1.SwapSide.BUY
66
+ ? executionContractAddress
67
+ : augustusV6Address,
68
+ srcAmount,
69
+ destAmount,
70
+ wethDeposit,
71
+ wethWithdraw,
72
+ };
73
+ }
74
+ async function buildResolvedWethPlan({ resolvedLegsWithWeth, side, routePlan, getWethCallData, wrappedNativeTokenAddress, }) {
75
+ const { resolvedLegs, srcAmountWethToDeposit, destAmountWethToWithdraw } = resolvedLegsWithWeth.reduce((acc, resolvedLegWithWeth) => {
76
+ acc.srcAmountWethToDeposit += BigInt(resolvedLegWithWeth.wethDeposit);
77
+ acc.destAmountWethToWithdraw += BigInt(resolvedLegWithWeth.wethWithdraw);
78
+ acc.resolvedLegs.push(resolvedLegWithWeth.resolvedLeg);
79
+ return acc;
80
+ }, {
81
+ resolvedLegs: [],
82
+ srcAmountWethToDeposit: 0n,
83
+ destAmountWethToWithdraw: 0n,
84
+ });
85
+ if (srcAmountWethToDeposit === 0n && destAmountWethToWithdraw === 0n) {
86
+ return { resolvedLegs };
87
+ }
88
+ if (srcAmountWethToDeposit === destAmountWethToWithdraw &&
89
+ !hasAnyRouteWithEthAndDifferentNeedWrapNative({
90
+ routePlan,
91
+ resolvedLegs,
92
+ wrappedNativeTokenAddress,
93
+ })) {
94
+ return { resolvedLegs };
95
+ }
96
+ return {
97
+ resolvedLegs,
98
+ wethPlan: await getWethCallData(srcAmountWethToDeposit.toString(), destAmountWethToWithdraw.toString(), side),
99
+ };
100
+ }
101
+ function hasAnyRouteWithEthAndDifferentNeedWrapNative({ routePlan, resolvedLegs, wrappedNativeTokenAddress, }) {
102
+ const eth = constants_1.ETHER_ADDRESS.toLowerCase();
103
+ const weth = wrappedNativeTokenAddress.toLowerCase();
104
+ const resolvedLegByKey = buildResolvedLegMap(resolvedLegs);
105
+ return !routePlan.routes.every((route, routeIndex) => {
106
+ const swapExchangeParams = [];
107
+ route.swaps.forEach((swap, swapIndex) => {
108
+ swap.swapExchanges.forEach((_swapExchange, swapExchangeIndex) => {
109
+ const key = (0, route_plan_1.routePositionKey)({
110
+ routeIndex,
111
+ swapIndex,
112
+ swapExchangeIndex,
113
+ });
114
+ const curResolvedLeg = resolvedLegByKey.get(key);
115
+ if (!curResolvedLeg) {
116
+ throw new Error(`missing resolved leg for route position ${key}`);
117
+ }
118
+ if (swap.destToken.toLowerCase() === weth ||
119
+ swap.destToken.toLowerCase() === eth ||
120
+ swap.srcToken.toLowerCase() === weth ||
121
+ swap.srcToken.toLowerCase() === eth) {
122
+ swapExchangeParams.push(curResolvedLeg.exchangeParam);
123
+ }
124
+ });
125
+ });
126
+ return (swapExchangeParams.every(p => p.needWrapNative === true) ||
127
+ swapExchangeParams.every(p => p.needWrapNative === false));
128
+ });
129
+ }
130
+ function buildDexExchangeApprovalRequests({ executorEncodingContext, priceRoute, routePlan, resolvedLegs, }) {
131
+ const resolvedLegByKey = buildResolvedLegMap(resolvedLegs);
132
+ const approvalRequests = [];
133
+ (0, route_plan_1.walkRoutePlan)(routePlan).forEach(routePosition => {
134
+ const key = (0, route_plan_1.routePositionKey)(routePosition);
135
+ const curResolvedLeg = resolvedLegByKey.get(key);
136
+ if (!curResolvedLeg) {
137
+ throw new Error(`missing resolved leg for route position ${key}`);
138
+ }
139
+ const swap = priceRoute.bestRoute[routePosition.routeIndex].swaps[routePosition.swapIndex];
140
+ const curExchangeParam = curResolvedLeg.exchangeParam;
141
+ const approveParams = (0, approval_1.getApprovalTokenAndTarget)(swap, curExchangeParam, executorEncodingContext);
142
+ if (approveParams) {
143
+ approvalRequests.push({
144
+ params: [
145
+ approveParams.token,
146
+ approveParams.target,
147
+ !!curExchangeParam.permit2Approval,
148
+ ],
149
+ routePositionKey: key,
150
+ });
151
+ }
152
+ });
153
+ return approvalRequests;
154
+ }
155
+ function applyDexExchangeApprovalDecisions({ resolvedLegs, approvalRequests, approvalDecisions, }) {
156
+ if (approvalDecisions.length !== approvalRequests.length) {
157
+ throw new Error('approval decision length must match approval request count');
158
+ }
159
+ const resolvedLegByKey = buildResolvedLegMap(resolvedLegs);
160
+ approvalDecisions.forEach((alreadyApproved, index) => {
161
+ if (alreadyApproved)
162
+ return;
163
+ const [token, target] = approvalRequests[index].params;
164
+ const key = approvalRequests[index].routePositionKey;
165
+ const curResolvedLeg = resolvedLegByKey.get(key);
166
+ if (!curResolvedLeg) {
167
+ throw new Error(`missing resolved leg for route position ${key}`);
168
+ }
169
+ resolvedLegByKey.set(key, {
170
+ ...curResolvedLeg,
171
+ exchangeParam: {
172
+ ...curResolvedLeg.exchangeParam,
173
+ approveData: {
174
+ token: normalizeAddress(token),
175
+ target: normalizeAddress(target),
176
+ },
177
+ },
178
+ });
179
+ });
180
+ return resolvedLegs.map(resolvedLeg => {
181
+ const key = (0, route_plan_1.routePositionKey)(resolvedLeg);
182
+ const curResolvedLeg = resolvedLegByKey.get(key);
183
+ if (!curResolvedLeg) {
184
+ throw new Error(`missing resolved leg for route position ${key}`);
185
+ }
186
+ return curResolvedLeg;
187
+ });
188
+ }
189
+ function buildResolvedLegMap(resolvedLegs) {
190
+ return new Map(resolvedLegs.map(resolvedLeg => [
191
+ (0, route_plan_1.routePositionKey)(resolvedLeg),
192
+ resolvedLeg,
193
+ ]));
194
+ }
195
+ function normalizeAddress(address) {
196
+ return address.toLowerCase();
197
+ }
198
+ //# sourceMappingURL=orchestration.js.map